import { ITerminalIO, ITerminalSize } from '../common/types.ts'; const DenoTerminalIO: ITerminalIO = { /** * Wrap the runtime-specific hook into stdin */ inputLoop: async function* inputLoop(): AsyncGenerator< Uint8Array, void, unknown > { for await (const chunk of Deno.stdin.readable) { yield chunk; } }, getSize: function getSize(): ITerminalSize { const size: { rows: number; columns: number } = Deno.consoleSize(); return { rows: size.rows, cols: size.columns, }; }, write: 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 default DenoTerminalIO;