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