@vltpkg/cli-js 1.0.2 → 1.0.4

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-DB347PPG.js → access-RYNHM3DJ.js} +9 -7
  2. package/{bugs-QBKI62J6.js → bugs-ZHOC4U52.js} +19 -18
  3. package/{build-EFJ3FFGU.js → build-HTM6Z7OQ.js} +12 -10
  4. package/{cache-BQJCMDJN.js → cache-74GIE5TO.js} +23 -21
  5. package/cache-unzip-src-unzip.js +23 -1
  6. package/{chunk-3HUTU5SO.js → chunk-2CLRMD5A.js} +2483 -1847
  7. package/{chunk-RXNA2XCX.js → chunk-4KCU2KZL.js} +8 -1
  8. package/{chunk-5PFGKHIS.js → chunk-A2EWSQPE.js} +10 -10
  9. package/{chunk-TM4LHSZV.js → chunk-AIQ7Z62O.js} +3 -3
  10. package/chunk-AK3RSABL.js +903 -0
  11. package/{chunk-YRMICBI4.js → chunk-AMDP7LYB.js} +5 -5
  12. package/chunk-BJBFEQRR.js +667 -0
  13. package/{chunk-ULCDRVY2.js → chunk-E737X73P.js} +38 -24
  14. package/{chunk-5OGQND6H.js → chunk-GXWZ5T4W.js} +3 -1
  15. package/{chunk-CNSTFT7U.js → chunk-HAYXR3MW.js} +1 -1
  16. package/{chunk-Q46JRSZU.js → chunk-IITIX4ID.js} +22 -3
  17. package/{chunk-L34LR5DV.js → chunk-JOEHZSS7.js} +4 -4
  18. package/chunk-LPIBYUMT.js +854 -0
  19. package/{chunk-YDUHQU7N.js → chunk-MZIM7X37.js} +3 -3
  20. package/{chunk-FM5DQZVN.js → chunk-OCJDISSI.js} +2 -2
  21. package/{chunk-47IR6Z6C.js → chunk-OR5LSCSK.js} +160 -105
  22. package/{chunk-F2GLBPGQ.js → chunk-PDLEQEZ3.js} +132 -81
  23. package/{chunk-42UTZKAU.js → chunk-R55OHZ2R.js} +8 -8
  24. package/{chunk-DEMBZY23.js → chunk-RB6SUM6U.js} +11 -11
  25. package/chunk-SKQHW56B.js +75 -0
  26. package/{chunk-ONVLPT73.js → chunk-T4GYDWUJ.js} +1 -1
  27. package/{chunk-BSB4XGBB.js → chunk-VB3IWNHX.js} +1 -1
  28. package/chunk-VE6CCH33.js +3000 -0
  29. package/{chunk-3MBSXZ62.js → chunk-WNDUKE42.js} +24 -17
  30. package/{chunk-NS4VFXHX.js → chunk-XU5SMHXP.js} +1 -1
  31. package/{chunk-CTDFRLS4.js → chunk-YRKCPGWZ.js} +5 -5
  32. package/{chunk-FWKQ7YDF.js → chunk-ZWKI5OSF.js} +118 -117
  33. package/{ci-A22A6TCQ.js → ci-XT7IAX2Y.js} +17 -16
  34. package/cli-package.json +1 -1
  35. package/{config-VOLRKFYD.js → config-B2LF4SJ7.js} +16 -19
  36. package/{config-JL4TW2AV.js → config-SRLA2XPZ.js} +10 -13
  37. package/{create-SL7HEXCS.js → create-VKNML6FC.js} +23 -23
  38. package/{deprecate-ZK525LQW.js → deprecate-IM4HEDIP.js} +17 -15
  39. package/{devtools-HGLF4KAO.js → devtools-66MVSNF5.js} +30 -30
  40. package/{dist-tag-FY3FB5VH.js → dist-tag-EKVJAQ66.js} +11 -9
  41. package/{docs-6BPWZJFW.js → docs-4DHMAMOU.js} +19 -18
  42. package/{exec-JZ5J7DI7.js → exec-7C74Z3WB.js} +23 -23
  43. package/{exec-cache-VGSXKZVF.js → exec-cache-QTUCQWSA.js} +22 -22
  44. package/{exec-local-GPZUSOSM.js → exec-local-ZCNI2JHK.js} +20 -18
  45. package/{help-XI7TNIRU.js → help-IKRPBT2R.js} +3 -3
  46. package/{init-6KWM7CDI.js → init-PCQ4YK7R.js} +12 -10
  47. package/{install-4VLOKCWH.js → install-OAQ4K3XX.js} +18 -17
  48. package/{list-3VLGWGKU.js → list-WYBKBCZU.js} +20 -18
  49. package/{login-3DGPSWCG.js → login-TTRCQ43Z.js} +9 -7
  50. package/{logout-DBFMZC6J.js → logout-3J77F4OO.js} +9 -7
  51. package/{pack-LHNYEZ5W.js → pack-ZLFGYGVZ.js} +16 -14
  52. package/package.json +1 -1
  53. package/{ping-VLLX5LIH.js → ping-IRLV5C4D.js} +9 -7
  54. package/{pkg-FYPUMX7U.js → pkg-EKOQ4XKM.js} +13 -11
  55. package/{profile-FOQ74TB7.js → profile-7UBKGJBP.js} +9 -7
  56. package/{publish-DFURU7DW.js → publish-2ODYT4R2.js} +21 -19
  57. package/{query-NC3EABMW.js → query-ADSAKEK4.js} +20 -18
  58. package/{registry-5DUFCPD6.js → registry-CZPFR3OF.js} +3 -3
  59. package/registry-client-package.json +1 -1
  60. package/registry-client-src-revalidate.js +1263 -610
  61. package/{repo-IZXACKQ2.js → repo-3THXRT64.js} +19 -18
  62. package/{chunk-UVZJFBYE.js → reporter-6BFJCFVZ.js} +87 -87
  63. package/{run-RDFVO7FY.js → run-2QLSVP6M.js} +20 -18
  64. package/{run-exec-OGMXEVN5.js → run-exec-VYD2Q4BD.js} +20 -18
  65. package/security-archive-src-update-expired.js +11 -2
  66. package/{setup-KTJQPDJB.js → setup-TDX5NXUN.js} +15 -13
  67. package/{src-BJU7XZNK.js → src-AVMBIRBC.js} +22 -23
  68. package/{reporter-UU654STB.js → src-SWL4UPPI.js} +42 -7
  69. package/src-X66SVM5T.js +933 -0
  70. package/{token-SKICECA4.js → token-3RDRZ4AO.js} +9 -7
  71. package/{uninstall-MTZJ33TO.js → uninstall-CNAFZTLA.js} +18 -17
  72. package/{unpublish-3QBJZFHQ.js → unpublish-7YHQQYZG.js} +12 -10
  73. package/{update-TH477PKA.js → update-3W27EZWN.js} +17 -16
  74. package/{version-YIBQZLQS.js → version-K37LT6GZ.js} +13 -11
  75. package/{view-FG74OAOV.js → view-ZVAYKUL2.js} +18 -20
  76. package/vlr.js +1 -1
  77. package/vlrx.js +1 -1
  78. package/vlt.js +1 -1
  79. package/vlx.js +1 -1
  80. package/vlxl.js +1 -1
  81. package/{whoami-LHJ4PRJQ.js → whoami-IOUW56D6.js} +9 -7
  82. package/chunk-7NHXV6AH.js +0 -4488
  83. package/chunk-WAFERMRI.js +0 -1663
  84. package/chunk-ZLZ4XF46.js +0 -75
  85. package/{chunk-Y7CQIZ7Y.js → chunk-FEIPJIEN.js} +3 -3
@@ -0,0 +1,933 @@
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.22/node_modules/tar/dist/esm/header.js
37
+ import { posix as pathModule } from "node:path";
38
+
39
+ // ../../node_modules/.vlt/~npm~tar@7.5.22/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.22/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.22/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.22/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 MAX_DECOMPRESSION_RATIO = 1e3;
545
+ var defaultMaxUnpackedBytes = 2 * 1024 * 1024 * 1024;
546
+ var parseMaxUnpackedBytes = (raw) => {
547
+ const n = Number(raw);
548
+ return Number.isFinite(n) && n >= 1 ? Math.floor(n) : defaultMaxUnpackedBytes;
549
+ };
550
+ var maxUnpackedBytes = parseMaxUnpackedBytes(
551
+ process.env.VLT_TAR_MAX_UNPACKED_BYTES
552
+ );
553
+ var unzip = async (input) => {
554
+ const max = Math.min(
555
+ maxUnpackedBytes,
556
+ input.length * MAX_DECOMPRESSION_RATIO
557
+ );
558
+ return new Promise(
559
+ (res, rej) => unzipCB(input, { maxOutputLength: max }, (er, result) => {
560
+ if (!er) return res(result);
561
+ return rej(
562
+ er.code === "ERR_BUFFER_TOO_LARGE" ? error("tarball exceeds maximum unpacked size", {
563
+ found: input.length,
564
+ max,
565
+ cause: er
566
+ }) : er
567
+ );
568
+ })
569
+ );
570
+ };
571
+ var exists = async (path) => {
572
+ try {
573
+ await lstat(path);
574
+ return true;
575
+ } catch {
576
+ return false;
577
+ }
578
+ };
579
+ var id = 1;
580
+ var tmp = randomBytes(6).toString("hex") + ".";
581
+ var tmpSuffix = () => tmp + String(id++);
582
+ var foldKeys = process.platform === "darwin" || process.platform === "win32";
583
+ var entryKey = (p) => foldKeys ? p.toLowerCase() : p;
584
+ var parseWriteLanes = (raw) => {
585
+ const n = Number(raw);
586
+ return Number.isFinite(n) && n >= 1 ? Math.floor(n) : 64;
587
+ };
588
+ var writeLaneLimit = parseWriteLanes(
589
+ process.env.VLT_TAR_WRITE_LANES
590
+ );
591
+ var writeLanesUsed = 0;
592
+ var writeLaneWaiters = [];
593
+ var writeLaneHead = 0;
594
+ var acquireWriteLane = async () => {
595
+ if (writeLanesUsed < writeLaneLimit) {
596
+ writeLanesUsed++;
597
+ return;
598
+ }
599
+ await new Promise((res) => writeLaneWaiters.push(res));
600
+ };
601
+ var releaseWriteLane = () => {
602
+ const next = writeLaneWaiters[writeLaneHead];
603
+ if (next) {
604
+ writeLaneWaiters[writeLaneHead] = void 0;
605
+ writeLaneHead++;
606
+ if (writeLaneHead === writeLaneWaiters.length) {
607
+ writeLaneWaiters.length = 0;
608
+ writeLaneHead = 0;
609
+ }
610
+ next();
611
+ } else {
612
+ writeLanesUsed--;
613
+ }
614
+ };
615
+ var withWriteLane = async (fn) => {
616
+ await acquireWriteLane();
617
+ try {
618
+ return await fn();
619
+ } finally {
620
+ releaseWriteLane();
621
+ }
622
+ };
623
+ var rethrowFirst = (results) => {
624
+ for (const result of results) {
625
+ if (result.status === "rejected") throw result.reason;
626
+ }
627
+ };
628
+ var isClearlySafeRelPath = (sub) => {
629
+ const len = sub.length;
630
+ if (len === 0) return true;
631
+ if (sub.charCodeAt(0) === 47) return false;
632
+ if (len >= 2 && sub.charCodeAt(1) === 58) {
633
+ const c = sub.charCodeAt(0);
634
+ if (c >= 65 && c <= 90 || c >= 97 && c <= 122) {
635
+ return false;
636
+ }
637
+ }
638
+ let i = 0;
639
+ while (i < len) {
640
+ let j = i;
641
+ while (j < len && sub.charCodeAt(j) !== 47) j++;
642
+ const slen = j - i;
643
+ if (slen === 1 && sub.charCodeAt(i) === 46) return false;
644
+ if (slen === 2 && sub.charCodeAt(i) === 46 && sub.charCodeAt(i + 1) === 46) {
645
+ return false;
646
+ }
647
+ i = j + 1;
648
+ }
649
+ return true;
650
+ };
651
+ var checkFs = (h, tarDir, target) => {
652
+ if (!h.path) return false;
653
+ if (!tarDir) return false;
654
+ h.path = h.path.replace(/[\\/]+/g, "/");
655
+ if (!h.path.startsWith(tarDir)) return false;
656
+ const sub = h.path.slice(tarDir.length);
657
+ if (isClearlySafeRelPath(sub)) return true;
658
+ const rel = relative(target, resolve(target, sub));
659
+ if (rel === ".." || rel.startsWith(`..${sep}`) || isAbsolute(rel)) {
660
+ return false;
661
+ }
662
+ return true;
663
+ };
664
+ var write = async (path, body, executable = false) => {
665
+ await writeFile(path, body, {
666
+ mode: executable ? 511 : 438
667
+ });
668
+ };
669
+ var unpack = async (tarData, target) => {
670
+ const isGzip = tarData[0] === 31 && tarData[1] === 139;
671
+ await unpackUnzipped(
672
+ isGzip ? await unzip(tarData) : tarData,
673
+ target
674
+ );
675
+ };
676
+ var unpackUnzipped = async (buffer, target) => {
677
+ const isGzip = buffer[0] === 31 && buffer[1] === 139;
678
+ if (isGzip) {
679
+ throw error("still gzipped after unzipping", {
680
+ found: isGzip,
681
+ wanted: false
682
+ });
683
+ }
684
+ if (buffer.length % 512 !== 0) {
685
+ throw error("Invalid tarball: length not divisible by 512", {
686
+ found: buffer.length
687
+ });
688
+ }
689
+ if (buffer.length < 1024) {
690
+ throw error(
691
+ "Invalid tarball: not terminated by 1024 null bytes",
692
+ { found: buffer.length }
693
+ );
694
+ }
695
+ for (let i = buffer.length - 1024; i < buffer.length; i++) {
696
+ if (buffer[i] !== 0) {
697
+ throw error(
698
+ "Invalid tarball: not terminated by 1024 null bytes",
699
+ { found: buffer.subarray(i, i + 10) }
700
+ );
701
+ }
702
+ }
703
+ const tmp2 = dirname(target) + sep + "." + basename2(target) + "." + tmpSuffix();
704
+ const og = tmp2 + ".ORIGINAL";
705
+ let succeeded = false;
706
+ try {
707
+ const entries = /* @__PURE__ */ new Map();
708
+ let tarDir = void 0;
709
+ let offset = 0;
710
+ let h;
711
+ let ex = void 0;
712
+ let gex = void 0;
713
+ while (offset < buffer.length && !(h = new Header(buffer, offset, ex, gex)).nullBlock) {
714
+ offset += 512;
715
+ ex = void 0;
716
+ gex = void 0;
717
+ const size = h.size ?? 0;
718
+ const body = buffer.subarray(offset, offset + size);
719
+ if (!h.cksumValid) continue;
720
+ offset += 512 * Math.ceil(size / 512);
721
+ switch (h.type) {
722
+ case "File":
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 === true) {
730
+ throw error("file/directory collision in tarball", {
731
+ path: dest
732
+ });
733
+ }
734
+ entries.set(key, {
735
+ path: dest,
736
+ body,
737
+ executable: 1 === ((h.mode ?? 1638) & 1),
738
+ dir: false
739
+ });
740
+ }
741
+ break;
742
+ case "Directory":
743
+ if (!tarDir) tarDir = findTarDir(h.path, tarDir);
744
+ if (!tarDir) continue;
745
+ if (!checkFs(h, tarDir, tmp2)) continue;
746
+ {
747
+ const dest = resolve(tmp2, h.path.substring(tarDir.length));
748
+ const key = entryKey(dest);
749
+ if (entries.get(key)?.dir === false) {
750
+ throw error("file/directory collision in tarball", {
751
+ path: dest
752
+ });
753
+ }
754
+ entries.set(key, {
755
+ path: dest,
756
+ dir: true
757
+ });
758
+ }
759
+ break;
760
+ case "GlobalExtendedHeader":
761
+ gex = Pax.parse(body.toString(), gex, true);
762
+ break;
763
+ case "ExtendedHeader":
764
+ case "OldExtendedHeader":
765
+ ex = Pax.parse(body.toString(), ex, false);
766
+ break;
767
+ case "NextFileHasLongPath":
768
+ case "OldGnuLongPath":
769
+ ex ??= /* @__PURE__ */ Object.create(null);
770
+ ex.path = body.toString().replace(/\0.*/, "");
771
+ break;
772
+ }
773
+ }
774
+ const dirs = /* @__PURE__ */ new Set();
775
+ const files = [];
776
+ for (const e of entries.values()) {
777
+ if (e.dir) dirs.add(e.path);
778
+ else {
779
+ dirs.add(dirname(e.path));
780
+ files.push(e);
781
+ }
782
+ }
783
+ rethrowFirst(
784
+ await Promise.allSettled(
785
+ [...dirs].map(
786
+ (d) => mkdir(d, { recursive: true, mode: 511 })
787
+ )
788
+ )
789
+ );
790
+ rethrowFirst(
791
+ await Promise.allSettled(
792
+ files.map(
793
+ (f) => withWriteLane(() => write(f.path, f.body, f.executable))
794
+ )
795
+ )
796
+ );
797
+ const targetExists = await exists(target);
798
+ if (targetExists) await rename(target, og);
799
+ await rename(tmp2, target);
800
+ if (targetExists) await rimraf(og);
801
+ succeeded = true;
802
+ } finally {
803
+ if (!succeeded) {
804
+ if (await exists(og)) {
805
+ await rimraf(target);
806
+ await rename(og, target);
807
+ }
808
+ await rimraf(tmp2);
809
+ }
810
+ }
811
+ };
812
+
813
+ // ../../src/tar/src/pool.ts
814
+ import os from "node:os";
815
+
816
+ // ../../src/tar/src/unpack-request.ts
817
+ var ID = 1;
818
+ var UnpackRequest = class {
819
+ id = ID++;
820
+ tarData;
821
+ target;
822
+ resolve;
823
+ reject;
824
+ promise = new Promise((res, rej) => {
825
+ this.resolve = res;
826
+ this.reject = rej;
827
+ });
828
+ constructor(tarData, target) {
829
+ this.tarData = tarData;
830
+ this.target = target;
831
+ }
832
+ };
833
+
834
+ // ../../src/tar/src/worker.ts
835
+ var isObj = (o) => !!o && typeof o === "object";
836
+ var isResponseOK = (o) => isObj(o) && typeof o.id === "number" && o.ok === true;
837
+ var Worker = class {
838
+ onMessage;
839
+ constructor(onMessage) {
840
+ this.onMessage = onMessage;
841
+ }
842
+ async process(req) {
843
+ const { target, tarData, id: id2 } = req;
844
+ try {
845
+ await unpack(tarData, target);
846
+ const m = { id: id2, ok: true };
847
+ this.onMessage(m);
848
+ } catch (error2) {
849
+ const m = { id: id2, error: error2 };
850
+ this.onMessage(m);
851
+ }
852
+ }
853
+ };
854
+
855
+ // ../../src/tar/src/pool.ts
856
+ var Pool = class {
857
+ /**
858
+ * Number of workers to emplly. Defaults to 1 less than the number of
859
+ * CPUs, or 1.
860
+ */
861
+ /* c8 ignore next */
862
+ jobs = 8 * (Math.max(os.availableParallelism(), 2) - 1);
863
+ /**
864
+ * Set of currently active worker threads
865
+ */
866
+ workers = /* @__PURE__ */ new Set();
867
+ /**
868
+ * Queue of requests awaiting an available worker
869
+ */
870
+ queue = [];
871
+ /**
872
+ * Requests that have been assigned to a worker, but have not yet
873
+ * been confirmed completed.
874
+ */
875
+ pending = /* @__PURE__ */ new Map();
876
+ // handle a message from the worker
877
+ #onMessage(w, m) {
878
+ const { id: id2 } = m;
879
+ const ur = this.pending.get(id2);
880
+ if (!ur) return;
881
+ if (isResponseOK(m)) {
882
+ ur.resolve();
883
+ } else {
884
+ ur.reject(
885
+ error(
886
+ asError(m.error, "failed without error message").message,
887
+ {
888
+ found: m,
889
+ cause: m.error
890
+ }
891
+ )
892
+ );
893
+ }
894
+ const next = this.queue.shift();
895
+ if (!next) {
896
+ this.workers.delete(w);
897
+ } else {
898
+ void w.process(next);
899
+ }
900
+ }
901
+ // create a new worker
902
+ #createWorker(req) {
903
+ const w = new Worker(
904
+ (m) => this.#onMessage(w, m)
905
+ );
906
+ this.workers.add(w);
907
+ void w.process(req);
908
+ }
909
+ /**
910
+ * Provide the tardata to be unpacked, and the location where it's to be
911
+ * placed. Will create a new worker up to the `jobs` value, and then start
912
+ * pushing in the queue for workers to pick up as they become available.
913
+ *
914
+ * Returned promise resolves when the provided tarball has been extracted.
915
+ */
916
+ async unpack(tarData, target) {
917
+ const ur = new UnpackRequest(tarData, target);
918
+ this.pending.set(ur.id, ur);
919
+ if (this.workers.size < this.jobs) {
920
+ this.#createWorker(ur);
921
+ } else {
922
+ this.queue.push(ur);
923
+ }
924
+ return ur.promise;
925
+ }
926
+ };
927
+ export {
928
+ Pool,
929
+ UnpackRequest,
930
+ Worker,
931
+ isResponseOK,
932
+ unpack
933
+ };