import { Effect } from "effect" const inputDecoder = new TextDecoder("utf-8", { fatal: true }) export function handlePtyInput( handler: { onMessage: (message: string | ArrayBuffer) => void }, message: string | Uint8Array, ) { if (typeof message === "string") { handler.onMessage(message) return Effect.void } return Effect.try({ try: () => inputDecoder.decode(message), catch: () => new Error("invalid PTY websocket input"), }).pipe( Effect.catch(() => Effect.succeed(undefined)), Effect.flatMap((decoded) => { if (decoded === undefined) return Effect.void handler.onMessage(decoded) return Effect.void }), ) }