Skip to content

@jsvision/core / flush

Function: flush() ​

flush(state, options?): DecodeResult

Defined in: input/decoder.ts:126

Resolve a held, ambiguous trailing ESC as a standalone Escape keypress.

A lone ESC at the end of a chunk could be the Escape key or the first byte of a longer sequence, so decode holds it rather than guess. The host calls flush() when its inter-byte timer (ESC_TIMEOUT_MS) fires with no more bytes: a leading lone ESC in the carry then becomes a key: 'escape' event, and any bytes after it decode normally. With no held ESC, this simply re-scans the carry and typically returns nothing.

Parameters ​

state ​

DecoderState

The current decoder state (its carry may hold the lone ESC).

options? ​

DecodeOptions

Optional decode options.

Returns ​

DecodeResult

The decode result, including the emitted Escape key when applicable.

Example ​

ts
import { createDecoderState, decode, flush } from '@jsvision/core';

// A bare ESC arrives with nothing after it.
let r = decode(Uint8Array.from([0x1b]), createDecoderState());
// r.events is empty — the ESC is held in r.state.carry.

// Later, the host's timer fires with no further bytes:
r = flush(r.state);
console.log(r.events[0]); // { type: 'key', key: 'escape', ctrl: false, ... }