Deno.setRaw(0, true);
Deno.setRaw(0, true); // Can be called multiple times

Deno.stdout.writeSync(new TextEncoder().encode("S"));

const buf = new Uint8Array(3);
for (let i = 0; i < 3; i++) {
  const nread = await Deno.stdin.read(buf);
  if (nread === null) {
    break;
  } else {
    const data = new TextDecoder().decode(buf.subarray(0, nread));
    Deno.stdout.writeSync(new TextEncoder().encode(data.toUpperCase()));
  }
}

Deno.setRaw(0, false); // restores old mode.
Deno.setRaw(0, false); // Can be safely called multiple times
