| 17 | } |
| 18 | |
| 19 | function captureOutput(): { |
| 20 | stdout: string[]; |
| 21 | stderr: string[]; |
| 22 | writable: { |
| 23 | stdout: { write(chunk: string): boolean }; |
| 24 | stderr: { write(chunk: string): boolean }; |
| 25 | }; |
| 26 | } { |
| 27 | const stdout: string[] = []; |
| 28 | const stderr: string[] = []; |
| 29 | return { |
| 30 | stdout, |
| 31 | stderr, |
| 32 | writable: { |
| 33 | stdout: { write: (chunk: string) => { stdout.push(chunk); return true; } }, |
| 34 | stderr: { write: (chunk: string) => { stderr.push(chunk); return true; } }, |
| 35 | }, |
| 36 | }; |
| 37 | } |
| 38 | |
| 39 | function createDeps(overrides: { |
| 40 | readonly latest?: string | null; |