import { ITerminalIO, ITerminalSize } from '../common/types.ts'; /** * Wrap the runtime-specific hook into stdin */ export async function* inputLoop() { for await (const chunk of Deno.stdin.readable) { yield chunk; } } export async function write(s: string): Promise { const buffer = new TextEncoder().encode(s); const stdout = Deno.stdout.writable.getWriter(); await stdout.write(buffer); stdout.releaseLock(); } export function getSize(): ITerminalSize { const size: { rows: number; columns: number } = Deno.consoleSize(); return { rows: size.rows, cols: size.columns, }; } const DenoTerminalIO: ITerminalIO = { inputLoop, getSize, write, }; export default DenoTerminalIO;