@o/cli 0.0.0-bootstrap.0 → 0.16.14

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.
package/dist/run.js ADDED
@@ -0,0 +1,253 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { cpus } from 'node:os';
3
+ import { getIsExiting, notifyProcessHandlers, } from './process-state.js';
4
+ export { getIsExiting };
5
+ const colors = [
6
+ '\x1b[36m', // cyan
7
+ '\x1b[35m', // magenta
8
+ '\x1b[32m', // green
9
+ '\x1b[33m', // yellow
10
+ '\x1b[34m', // blue
11
+ '\x1b[31m', // red
12
+ ];
13
+ const reset = '\x1b[0m';
14
+ let colorIndex = 0;
15
+ function getNextColor() {
16
+ const color = colors[colorIndex % colors.length];
17
+ colorIndex++;
18
+ return color;
19
+ }
20
+ const running = {};
21
+ export async function runInline(name, cb) {
22
+ const promise = cb();
23
+ running[name] = promise;
24
+ return promise;
25
+ }
26
+ export async function run(command, options) {
27
+ const { env, cwd, silent, captureOutput, prefix, detached, timeout, timing, interactive, } = options || {};
28
+ if (timing) {
29
+ const name = typeof timing === 'string' ? timing : command;
30
+ const startTime = Date.now();
31
+ try {
32
+ const promise = runInternal();
33
+ running[name] = promise;
34
+ const result = await promise;
35
+ const duration = Date.now() - startTime;
36
+ console.info(`\x1b[32m✓\x1b[0m \x1b[35m${name}\x1b[0m completed in \x1b[33m${formatDuration(duration)}\x1b[0m`);
37
+ return result;
38
+ }
39
+ catch (error) {
40
+ const duration = Date.now() - startTime;
41
+ console.error(`✗ ${name} failed after ${formatDuration(duration)}`);
42
+ throw error;
43
+ }
44
+ finally {
45
+ running[name] = null;
46
+ }
47
+ }
48
+ return runInternal();
49
+ async function runInternal() {
50
+ // respect O_CLI_SILENT for quiet mode in watch scenarios
51
+ const effectiveSilent = silent || process.env.O_CLI_SILENT === '1';
52
+ if (!effectiveSilent) {
53
+ console.info(`$ ${command}${cwd ? ` (in ${cwd})` : ``}`);
54
+ }
55
+ let timeoutId;
56
+ let didTimeOut = false;
57
+ try {
58
+ const shell = spawn('bash', ['-c', command], {
59
+ env: { ...process.env, ...env },
60
+ cwd,
61
+ stdio: interactive ? 'inherit' : ['ignore', 'pipe', 'pipe'],
62
+ detached: detached ?? false,
63
+ });
64
+ if (detached) {
65
+ shell.unref();
66
+ }
67
+ notifyProcessHandlers(shell);
68
+ if (timeout) {
69
+ timeoutId = setTimeout(() => {
70
+ didTimeOut = true;
71
+ console.error(`Command timed out after ${timeout}ms: ${command}`);
72
+ shell.kill();
73
+ }, timeout);
74
+ }
75
+ const color = prefix ? getNextColor() : '';
76
+ const coloredPrefix = prefix ? `${color}[${prefix}]${reset}` : '';
77
+ const writeOutput = (text, isStderr) => {
78
+ if (!effectiveSilent) {
79
+ const output = prefix ? `${coloredPrefix} ${text}` : text;
80
+ if (!prefix || !captureOutput) {
81
+ const stream = isStderr ? process.stderr : process.stdout;
82
+ stream.write(output);
83
+ }
84
+ }
85
+ };
86
+ const processStream = (stream, isStderr) => {
87
+ return new Promise((resolve) => {
88
+ if (effectiveSilent && !captureOutput) {
89
+ resolve('');
90
+ return;
91
+ }
92
+ if (!stream) {
93
+ resolve('');
94
+ return;
95
+ }
96
+ let buffer = '';
97
+ let captured = '';
98
+ stream.on('data', (chunk) => {
99
+ const text = buffer + chunk.toString();
100
+ const lines = text.split('\n');
101
+ // keep last partial line in buffer
102
+ buffer = lines.pop() || '';
103
+ // process complete lines
104
+ for (const line of lines) {
105
+ // always capture for potential error messages or captureOutput
106
+ captured += line + '\n';
107
+ // output if not silent and appropriate
108
+ if (!captureOutput || prefix) {
109
+ writeOutput(line + '\n', isStderr);
110
+ }
111
+ }
112
+ });
113
+ stream.on('end', () => {
114
+ // output any remaining buffer
115
+ if (buffer) {
116
+ captured += buffer;
117
+ if (!captureOutput || prefix) {
118
+ writeOutput(buffer + '\n', isStderr);
119
+ }
120
+ }
121
+ resolve(captured);
122
+ });
123
+ stream.on('error', (err) => {
124
+ console.error(`Error reading stream!`, err);
125
+ resolve(captured);
126
+ });
127
+ });
128
+ };
129
+ // process both streams and wait for exit
130
+ const [stdout, stderr, exitCode] = await Promise.all([
131
+ processStream(shell.stdout, false),
132
+ processStream(shell.stderr, true),
133
+ new Promise((resolve) => {
134
+ shell.on('close', (code) => resolve(code));
135
+ }),
136
+ ]);
137
+ if (timeoutId) {
138
+ clearTimeout(timeoutId);
139
+ }
140
+ if (detached) {
141
+ return { stdout: '', stderr: '' };
142
+ }
143
+ // a command we killed for exceeding its timeout failed, whatever exit code
144
+ // the kill happened to leave behind. shell.kill() signals the `bash -c`
145
+ // wrapper, and whether that surfaces as 143, as null, or as 0 depends on
146
+ // whether bash exec'd into the command or stayed its parent, so gating on
147
+ // the code alone reports a killed command as a completed one. that is not
148
+ // hypothetical: a production `wrangler deploy` was killed at its 10-minute
149
+ // timeout and this returned success, so the release printed a green check
150
+ // for a worker it never activated.
151
+ if (exitCode !== 0 || didTimeOut) {
152
+ const errorMsg = didTimeOut
153
+ ? `Command timed out after ${timeout}ms: ${command}`
154
+ : `Command failed with exit code ${exitCode}: ${command}`;
155
+ if (!silent && !getIsExiting()) {
156
+ console.error(`run() error: ${errorMsg}: ${stderr || ''}`);
157
+ }
158
+ const error = new Error(errorMsg, { cause: { exitCode, stdout, stderr } });
159
+ Error.captureStackTrace(error, runInternal);
160
+ throw error;
161
+ }
162
+ return { stdout, stderr, exitCode };
163
+ }
164
+ catch (error) {
165
+ clearTimeout(timeoutId);
166
+ if (!silent && !getIsExiting()) {
167
+ // only show the error message, not the full object if it's our error
168
+ if (error instanceof Error && error.cause?.exitCode !== undefined) {
169
+ // this is our controlled error, already logged above
170
+ }
171
+ else {
172
+ console.error(`Error running command: ${command}`, error);
173
+ }
174
+ }
175
+ else if (!silent && getIsExiting()) {
176
+ // simple message when being killed due to another error
177
+ const shortCmd = command.split(' ')[0];
178
+ console.error(`${shortCmd} exiting due to earlier error`);
179
+ }
180
+ throw error;
181
+ }
182
+ }
183
+ }
184
+ export async function waitForRun(name) {
185
+ if (running[name] === undefined) {
186
+ throw new Error(`Can't wait before task runs: ${name}`);
187
+ }
188
+ await running[name];
189
+ }
190
+ export function formatDuration(ms) {
191
+ const seconds = Math.floor(ms / 1000);
192
+ const minutes = Math.floor(seconds / 60);
193
+ const remainingSeconds = seconds % 60;
194
+ if (minutes > 0) {
195
+ return `${minutes}m ${remainingSeconds}s`;
196
+ }
197
+ return `${seconds}s`;
198
+ }
199
+ export async function printTiming(name, fn) {
200
+ const startTime = Date.now();
201
+ try {
202
+ const result = await fn();
203
+ const duration = Date.now() - startTime;
204
+ console.info(`\x1b[32m✓\x1b[0m \x1b[35m${name}\x1b[0m completed in \x1b[33m${formatDuration(duration)}\x1b[0m`);
205
+ return result;
206
+ }
207
+ catch (error) {
208
+ const duration = Date.now() - startTime;
209
+ console.error(`✗ ${name} failed after ${formatDuration(duration)}`);
210
+ throw error;
211
+ }
212
+ }
213
+ export async function runParallel(tasks, options) {
214
+ const activeTasks = tasks.filter((task) => !task.condition || task.condition());
215
+ if (activeTasks.length === 0) {
216
+ return;
217
+ }
218
+ const maxParallelism = options?.maxParallelism ?? cpus().length;
219
+ console.info(`\nStarting parallel tasks: ${activeTasks.map((t) => t.name).join(', ')}`);
220
+ console.info(`Max parallelism: ${maxParallelism}`);
221
+ const taskStartTime = Date.now();
222
+ try {
223
+ const results = [];
224
+ const executing = new Set();
225
+ for (const task of activeTasks) {
226
+ const startTime = Date.now();
227
+ const taskPromise = task.fn().then(() => {
228
+ const duration = Date.now() - startTime;
229
+ console.info(`\x1b[32m✓\x1b[0m task: \x1b[35m${task.name}\x1b[0m completed in \x1b[33m${formatDuration(duration)}\x1b[0m`);
230
+ executing.delete(taskPromise);
231
+ }, (error) => {
232
+ const duration = Date.now() - startTime;
233
+ console.error(`✗ task: ${task.name} failed after ${formatDuration(duration)}`);
234
+ executing.delete(taskPromise);
235
+ throw error;
236
+ });
237
+ results.push(taskPromise);
238
+ executing.add(taskPromise);
239
+ if (executing.size >= maxParallelism) {
240
+ await Promise.race(executing);
241
+ }
242
+ }
243
+ await Promise.all(results);
244
+ const totalDuration = Date.now() - taskStartTime;
245
+ console.info(`\nAll parallel tasks completed successfully in ${formatDuration(totalDuration)}`);
246
+ }
247
+ catch (error) {
248
+ const totalDuration = Date.now() - taskStartTime;
249
+ console.error(`\nCI fail after ${formatDuration(totalDuration)} failed`);
250
+ throw error;
251
+ }
252
+ }
253
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,EACL,YAAY,EACZ,qBAAqB,GAGtB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAAE,YAAY,EAAE,CAAA;AAEvB,MAAM,MAAM,GAAG;IACb,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,QAAQ;IACpB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,MAAM;CACnB,CAAA;AACD,MAAM,KAAK,GAAG,SAAS,CAAA;AACvB,IAAI,UAAU,GAAG,CAAC,CAAA;AAElB,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAE,CAAA;IACjD,UAAU,EAAE,CAAA;IACZ,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,OAAO,GAAwD,EAAE,CAAA;AAEvE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,EAAuB;IACnE,MAAM,OAAO,GAAG,EAAE,EAAE,CAAA;IACpB,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;IACvB,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,OAAe,EACf,OAUC;IAED,MAAM,EACJ,GAAG,EACH,GAAG,EACH,MAAM,EACN,aAAa,EACb,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,WAAW,GACZ,GAAG,OAAO,IAAI,EAAE,CAAA;IAEjB,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,EAAE,CAAA;YAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAA;YACvB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAA;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;YACvC,OAAO,CAAC,IAAI,CACV,4BAA4B,IAAI,gCAAgC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAClG,CAAA;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;YACvC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,iBAAiB,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACnE,MAAM,KAAK,CAAA;QACb,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,WAAW,EAAE,CAAA;IAEpB,KAAK,UAAU,WAAW;QACxB,yDAAyD;QACzD,MAAM,eAAe,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAA;QAClE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC1D,CAAC;QAED,IAAI,SAAoD,CAAA;QACxD,IAAI,UAAU,GAAG,KAAK,CAAA;QAEtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;gBAC3C,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE;gBAC/B,GAAG;gBACH,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBAC3D,QAAQ,EAAE,QAAQ,IAAI,KAAK;aAC5B,CAAC,CAAA;YAEF,IAAI,QAAQ,EAAE,CAAC;gBACb,KAAK,CAAC,KAAK,EAAE,CAAA;YACf,CAAC;YAED,qBAAqB,CAAC,KAAK,CAAC,CAAA;YAE5B,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC1B,UAAU,GAAG,IAAI,CAAA;oBACjB,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,OAAO,OAAO,EAAE,CAAC,CAAA;oBACjE,KAAK,CAAC,IAAI,EAAE,CAAA;gBACd,CAAC,EAAE,OAAO,CAAC,CAAA;YACb,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAC1C,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAEjE,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,QAAiB,EAAE,EAAE;gBACtD,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,aAAa,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;oBACzD,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;wBAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA;wBACzD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;oBACtB,CAAC;gBACH,CAAC;YACH,CAAC,CAAA;YAED,MAAM,aAAa,GAAG,CACpB,MAAoC,EACpC,QAAiB,EACA,EAAE;gBACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC7B,IAAI,eAAe,IAAI,CAAC,aAAa,EAAE,CAAC;wBACtC,OAAO,CAAC,EAAE,CAAC,CAAA;wBACX,OAAM;oBACR,CAAC;oBAED,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,OAAO,CAAC,EAAE,CAAC,CAAA;wBACX,OAAM;oBACR,CAAC;oBAED,IAAI,MAAM,GAAG,EAAE,CAAA;oBACf,IAAI,QAAQ,GAAG,EAAE,CAAA;oBAEjB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;wBAClC,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;wBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;wBAE9B,mCAAmC;wBACnC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAA;wBAE1B,yBAAyB;wBACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;4BACzB,+DAA+D;4BAC/D,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAA;4BAEvB,uCAAuC;4BACvC,IAAI,CAAC,aAAa,IAAI,MAAM,EAAE,CAAC;gCAC7B,WAAW,CAAC,IAAI,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAA;4BACpC,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC,CAAA;oBAEF,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;wBACpB,8BAA8B;wBAC9B,IAAI,MAAM,EAAE,CAAC;4BACX,QAAQ,IAAI,MAAM,CAAA;4BAClB,IAAI,CAAC,aAAa,IAAI,MAAM,EAAE,CAAC;gCAC7B,WAAW,CAAC,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAA;4BACtC,CAAC;wBACH,CAAC;wBACD,OAAO,CAAC,QAAQ,CAAC,CAAA;oBACnB,CAAC,CAAC,CAAA;oBAEF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;wBACzB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;wBAC3C,OAAO,CAAC,QAAQ,CAAC,CAAA;oBACnB,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;YACJ,CAAC,CAAA;YAED,yCAAyC;YACzC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACnD,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;gBAClC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;gBACjC,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;oBACrC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC5C,CAAC,CAAC;aACH,CAAC,CAAA;YAEF,IAAI,SAAS,EAAE,CAAC;gBACd,YAAY,CAAC,SAAS,CAAC,CAAA;YACzB,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;YACnC,CAAC;YAED,2EAA2E;YAC3E,wEAAwE;YACxE,yEAAyE;YACzE,0EAA0E;YAC1E,0EAA0E;YAC1E,2EAA2E;YAC3E,0EAA0E;YAC1E,mCAAmC;YACnC,IAAI,QAAQ,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,UAAU;oBACzB,CAAC,CAAC,2BAA2B,OAAO,OAAO,OAAO,EAAE;oBACpD,CAAC,CAAC,iCAAiC,QAAQ,KAAK,OAAO,EAAE,CAAA;gBAE3D,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;oBAC/B,OAAO,CAAC,KAAK,CAAC,gBAAgB,QAAQ,KAAK,MAAM,IAAI,EAAE,EAAE,CAAC,CAAA;gBAC5D,CAAC;gBAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;gBAC1E,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;gBAC3C,MAAM,KAAK,CAAA;YACb,CAAC;YAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,SAAS,CAAC,CAAA;YACvB,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC/B,qEAAqE;gBACrE,IAAI,KAAK,YAAY,KAAK,IAAK,KAAa,CAAC,KAAK,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3E,qDAAqD;gBACvD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,EAAE,EAAE,KAAK,CAAC,CAAA;gBAC3D,CAAC;YACH,CAAC;iBAAM,IAAI,CAAC,MAAM,IAAI,YAAY,EAAE,EAAE,CAAC;gBACrC,wDAAwD;gBACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;gBACtC,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,+BAA+B,CAAC,CAAA;YAC3D,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACxC,MAAM,gBAAgB,GAAG,OAAO,GAAG,EAAE,CAAA;IAErC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,GAAG,OAAO,KAAK,gBAAgB,GAAG,CAAA;IAC3C,CAAC;IACD,OAAO,GAAG,OAAO,GAAG,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAI,IAAY,EAAE,EAAoB;IACrE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACvC,OAAO,CAAC,IAAI,CACV,4BAA4B,IAAI,gCAAgC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAClG,CAAA;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QACvC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,iBAAiB,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QACnE,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAkF,EAClF,OAAqC;IAErC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IAE/E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAM;IACR,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,IAAI,EAAE,CAAC,MAAM,CAAA;IAC/D,OAAO,CAAC,IAAI,CAAC,8BAA8B,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvF,OAAO,CAAC,IAAI,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAA;IAElD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAEhC,IAAI,CAAC;QACH,MAAM,OAAO,GAAoB,EAAE,CAAA;QACnC,MAAM,SAAS,GAAuB,IAAI,GAAG,EAAE,CAAA;QAE/C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAChC,GAAG,EAAE;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;gBACvC,OAAO,CAAC,IAAI,CACV,kCAAkC,IAAI,CAAC,IAAI,gCAAgC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAC7G,CAAA;gBACD,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC/B,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;gBACvC,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,iBAAiB,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;gBAC9E,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;gBAC7B,MAAM,KAAK,CAAA;YACb,CAAC,CACF,CAAA;YAED,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YACzB,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAE1B,IAAI,SAAS,CAAC,IAAI,IAAI,cAAc,EAAE,CAAC;gBACrC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QAE1B,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;QAChD,OAAO,CAAC,IAAI,CACV,kDAAkD,cAAc,CAAC,aAAa,CAAC,EAAE,CAClF,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAA;QAChD,OAAO,CAAC,KAAK,CAAC,mBAAmB,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QACxE,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@o/cli",
3
- "version": "0.0.0-bootstrap.0",
4
- "description": "Typed command and subprocess helpers for Orez consumers. (package-name bootstrap only)",
3
+ "version": "0.16.14",
4
+ "description": "Typed command and subprocess helpers for Orez consumers.",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -10,6 +10,44 @@
10
10
  },
11
11
  "type": "module",
12
12
  "sideEffects": false,
13
+ "main": "dist/index.js",
14
+ "module": "dist/index.js",
15
+ "types": "./dist/index.d.ts",
16
+ "bin": {
17
+ "o": "./dist/cli.js"
18
+ },
19
+ "exports": {
20
+ "./package.json": "./package.json",
21
+ ".": {
22
+ "types": "./dist/index.d.ts",
23
+ "import": "./dist/index.js",
24
+ "default": "./dist/index.js"
25
+ }
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "LICENSE",
30
+ "README.md"
31
+ ],
32
+ "scripts": {
33
+ "build": "rm -rf dist && tsc -p tsconfig.build.json && cp src/run-pty.mjs dist/run-pty.mjs && chmod +x dist/cli.js dist/run-pty.mjs",
34
+ "format": "oxfmt",
35
+ "format:check": "oxfmt --check",
36
+ "lint": "oxlint src",
37
+ "test": "bun test src",
38
+ "typecheck": "tsc --noEmit -p tsconfig.json"
39
+ },
40
+ "dependencies": {
41
+ "@clack/prompts": "^0.8.2",
42
+ "@lydell/node-pty": "^1.2.0-beta.3",
43
+ "picocolors": "^1.1.1"
44
+ },
45
+ "devDependencies": {
46
+ "@types/bun": "1.3.14",
47
+ "oxfmt": "0.28.0",
48
+ "oxlint": "1.43.0",
49
+ "typescript": "5.9.3"
50
+ },
13
51
  "publishConfig": {
14
52
  "access": "public"
15
53
  }