packages/cli/src/utils/readStdin.ts (28 lines of code) (raw):

/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ export async function readStdin(): Promise<string> { return new Promise((resolve, reject) => { let data = ''; process.stdin.setEncoding('utf8'); const onReadable = () => { let chunk; while ((chunk = process.stdin.read()) !== null) { data += chunk; } }; const onEnd = () => { cleanup(); resolve(data); }; const onError = (err: Error) => { cleanup(); reject(err); }; const cleanup = () => { process.stdin.removeListener('readable', onReadable); process.stdin.removeListener('end', onEnd); process.stdin.removeListener('error', onError); }; process.stdin.on('readable', onReadable); process.stdin.on('end', onEnd); process.stdin.on('error', onError); }); }