main
1"use strict";
2const {
3 __pow,
4 __export,
5 __reExport,
6 __toESM,
7 __toCommonJS,
8 __async,
9 __forAwait
10} = require('./esblib.cjs');
11
12
13// src/index.ts
14var index_exports = {};
15__export(index_exports, {
16 MAML: () => import_vendor2.MAML,
17 VERSION: () => VERSION,
18 YAML: () => import_vendor2.YAML,
19 argv: () => argv,
20 dotenv: () => import_vendor2.dotenv,
21 echo: () => echo,
22 expBackoff: () => expBackoff,
23 fetch: () => fetch,
24 fs: () => import_vendor2.fs,
25 glob: () => import_vendor2.glob,
26 globby: () => import_vendor2.glob,
27 minimist: () => import_vendor2.minimist,
28 nothrow: () => nothrow,
29 parseArgv: () => parseArgv,
30 question: () => question,
31 quiet: () => quiet,
32 retry: () => retry,
33 sleep: () => sleep,
34 spinner: () => spinner,
35 stdin: () => stdin,
36 tempdir: () => tempdir,
37 tempfile: () => tempfile,
38 tmpdir: () => tempdir,
39 tmpfile: () => tempfile,
40 updateArgv: () => updateArgv,
41 version: () => version,
42 versions: () => versions
43});
44module.exports = __toCommonJS(index_exports);
45var import_core2 = require("./core.cjs");
46
47// src/goods.ts
48var import_node_buffer = require("buffer");
49var import_node_process = __toESM(require("process"), 1);
50var import_node_readline = require("readline");
51var import_node_stream = require("stream");
52var import_core = require("./core.cjs");
53var import_util = require("./util.cjs");
54var import_vendor = require("./vendor.cjs");
55
56// src/versions.ts
57var versions = {
58 zx: "8.9.0",
59 chalk: "5.6.2",
60 depseek: "0.4.3",
61 dotenv: "0.2.3",
62 fetch: "1.6.7",
63 fs: "11.3.2",
64 glob: "16.0.0",
65 minimist: "1.2.8",
66 ps: "1.0.0",
67 which: "6.0.0",
68 yaml: "2.8.1"
69};
70
71// src/goods.ts
72function tempdir(prefix = `zx-${(0, import_util.randomId)()}`, mode) {
73 const dirpath = import_core.path.join(import_core.os.tmpdir(), prefix);
74 import_vendor.fs.mkdirSync(dirpath, { recursive: true, mode });
75 return dirpath;
76}
77function tempfile(name, data, mode) {
78 const filepath = name ? import_core.path.join(tempdir(), name) : import_core.path.join(import_core.os.tmpdir(), `zx-${(0, import_util.randomId)()}`);
79 if (data === void 0) import_vendor.fs.closeSync(import_vendor.fs.openSync(filepath, "w", mode));
80 else import_vendor.fs.writeFileSync(filepath, data, { mode });
81 return filepath;
82}
83var parseArgv = (args = import_node_process.default.argv.slice(2), opts = {}, defs = {}) => Object.entries((0, import_vendor.minimist)(args, opts)).reduce(
84 (m, [k, v]) => {
85 const kTrans = opts.camelCase ? import_util.toCamelCase : import_util.identity;
86 const vTrans = opts.parseBoolean ? import_util.parseBool : import_util.identity;
87 const [_k, _v] = k === "--" || k === "_" ? [k, v] : [kTrans(k), vTrans(v)];
88 m[_k] = _v;
89 return m;
90 },
91 defs
92);
93function updateArgv(args, opts) {
94 for (const k in argv) delete argv[k];
95 parseArgv(args, opts, argv);
96}
97var argv = parseArgv();
98function sleep(duration) {
99 return new Promise((resolve) => {
100 setTimeout(resolve, (0, import_util.parseDuration)(duration));
101 });
102}
103var responseToReadable = (response, rs) => {
104 var _a;
105 const reader = (_a = response.body) == null ? void 0 : _a.getReader();
106 if (!reader) {
107 rs.push(null);
108 return rs;
109 }
110 rs._read = () => __async(null, null, function* () {
111 const result = yield reader.read();
112 rs.push(result.done ? null : import_node_buffer.Buffer.from(result.value));
113 });
114 return rs;
115};
116function fetch(url, init) {
117 import_core.$.log({ kind: "fetch", url, init, verbose: !import_core.$.quiet && import_core.$.verbose });
118 const p = (0, import_vendor.nodeFetch)(url, init);
119 return Object.assign(p, {
120 pipe(dest, ...args) {
121 const rs = new import_node_stream.Readable();
122 const _dest = (0, import_util.isStringLiteral)(dest, ...args) ? (0, import_core.$)({
123 halt: true,
124 signal: init == null ? void 0 : init.signal
125 })(dest, ...args) : dest;
126 p.then(
127 (r) => {
128 var _a;
129 return responseToReadable(r, rs).pipe((_a = _dest.run) == null ? void 0 : _a.call(_dest));
130 },
131 (err) => {
132 var _a;
133 return (_a = _dest.abort) == null ? void 0 : _a.call(_dest, err);
134 }
135 );
136 return _dest;
137 }
138 });
139}
140function echo(pieces, ...args) {
141 const msg = (0, import_util.isStringLiteral)(pieces, ...args) ? args.map((a, i) => pieces[i] + stringify(a)).join("") + (0, import_util.getLast)(pieces) : [pieces, ...args].map(stringify).join(" ");
142 console.log(msg);
143}
144function stringify(arg) {
145 return arg instanceof import_core.ProcessOutput ? arg.toString().trimEnd() : `${arg}`;
146}
147function question(_0) {
148 return __async(this, arguments, function* (query, {
149 choices,
150 input = import_node_process.default.stdin,
151 output = import_node_process.default.stdout
152 } = {}) {
153 const completer = Array.isArray(choices) ? (line) => {
154 const hits = choices.filter((c) => c.startsWith(line));
155 return [hits.length ? hits : choices, line];
156 } : void 0;
157 const rl = (0, import_node_readline.createInterface)({
158 input,
159 output,
160 terminal: true,
161 completer
162 });
163 return new Promise(
164 (resolve) => rl.question(query != null ? query : "", (answer) => {
165 rl.close();
166 resolve(answer);
167 })
168 );
169 });
170}
171function stdin() {
172 return __async(this, arguments, function* (stream = import_node_process.default.stdin) {
173 let buf = "";
174 try {
175 for (var iter = __forAwait(stream.setEncoding("utf8")), more, temp, error; more = !(temp = yield iter.next()).done; more = false) {
176 const chunk = temp.value;
177 buf += chunk;
178 }
179 } catch (temp) {
180 error = [temp];
181 } finally {
182 try {
183 more && (temp = iter.return) && (yield temp.call(iter));
184 } finally {
185 if (error)
186 throw error[0];
187 }
188 }
189 return buf;
190 });
191}
192function retry(count, d, cb) {
193 return __async(this, null, function* () {
194 if (typeof d === "function") return retry(count, 0, d);
195 if (!cb) throw new import_core.Fail("Callback is required for retry");
196 const total = count;
197 const gen = typeof d === "object" ? d : (function* (d2) {
198 while (true) yield d2;
199 })((0, import_util.parseDuration)(d));
200 let attempt = 0;
201 let lastErr;
202 while (count-- > 0) {
203 attempt++;
204 try {
205 return yield cb();
206 } catch (err) {
207 lastErr = err;
208 const delay = gen.next().value;
209 import_core.$.log({
210 kind: "retry",
211 total,
212 attempt,
213 delay,
214 exception: err,
215 verbose: !import_core.$.quiet && import_core.$.verbose,
216 error: `FAIL Attempt: ${attempt}/${total}, next: ${delay}`
217 // legacy
218 });
219 if (delay > 0) yield sleep(delay);
220 }
221 }
222 throw lastErr;
223 });
224}
225function* expBackoff(max = "60s", delay = "100ms") {
226 const maxMs = (0, import_util.parseDuration)(max);
227 const randMs = (0, import_util.parseDuration)(delay);
228 let n = 0;
229 while (true) {
230 yield Math.min(randMs * __pow(2, n++), maxMs);
231 }
232}
233function spinner(title, callback) {
234 return __async(this, null, function* () {
235 if (typeof title === "function") return spinner("", title);
236 if (import_core.$.quiet || import_node_process.default.env.CI) return callback();
237 let i = 0;
238 const stream = import_core.$.log.output || import_node_process.default.stderr;
239 const spin = () => stream.write(` ${"\u280B\u2819\u2839\u2838\u283C\u2834\u2826\u2827\u2807\u280F"[i++ % 10]} ${title}\r`);
240 return (0, import_core.within)(() => __async(null, null, function* () {
241 import_core.$.verbose = false;
242 const id = setInterval(spin, 100);
243 try {
244 return yield callback();
245 } finally {
246 clearInterval(id);
247 stream.write(" ".repeat((import_node_process.default.stdout.columns || 1) - 1) + "\r");
248 }
249 }));
250 });
251}
252
253// src/index.ts
254__reExport(index_exports, require("./core.cjs"), module.exports);
255var import_vendor2 = require("./vendor.cjs");
256import_core2.bus.lock();
257var VERSION = versions.zx || "0.0.0";
258var version = VERSION;
259function nothrow(promise) {
260 return promise.nothrow();
261}
262function quiet(promise) {
263 return promise.quiet();
264}
265/* c8 ignore next 100 */
266// Annotate the CommonJS export names for ESM import in node:
2670 && (module.exports = {
268 MAML,
269 VERSION,
270 YAML,
271 argv,
272 dotenv,
273 echo,
274 expBackoff,
275 fetch,
276 fs,
277 glob,
278 globby,
279 minimist,
280 nothrow,
281 parseArgv,
282 question,
283 quiet,
284 retry,
285 sleep,
286 spinner,
287 stdin,
288 tempdir,
289 tempfile,
290 tmpdir,
291 tmpfile,
292 updateArgv,
293 version,
294 versions,
295 ...require("./core.cjs")
296});