| /** | |
| * @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); | |
| }); | |
| } | |