Types & Interfaces
All types are exported from the main webserial-core entry point.
SerialDeviceOptions<T>
Passed to super() in your AbstractSerialDevice subclass.
ts
interface SerialDeviceOptions<T> {
/** Serial baud rate (e.g. 9600, 115200). */
baudRate: number;
/** Data bits per byte. Default: 8 */
dataBits?: 7 | 8;
/** Stop bits. Default: 1 */
stopBits?: 1 | 2;
/** Parity mode. Default: "none" */
parity?: "none" | "even" | "odd";
/** Hardware flow control. Default: "none" */
flowControl?: "none" | "hardware";
/** Internal read buffer size in bytes. Default: 255 */
bufferSize?: number;
/** Parser that transforms raw bytes into values of type T. */
parser: SerialParser<T>;
/** Timeout (ms) before a queued command is considered failed. Default: 0 (disabled) */
commandTimeout?: number;
/** Automatically reconnect on unexpected disconnect. Default: false */
autoReconnect?: boolean;
/** Delay (ms) between auto-reconnect attempts. Default: 1000 */
autoReconnectInterval?: number;
/** Timeout (ms) allowed for handshake() to complete. Default: 5000 */
handshakeTimeout?: number;
/** USB vendor/product ID filters shown in the port picker. Default: [] */
filters?: SerialPortFilter[];
/**
* Custom serial provider for THIS instance only (e.g. `WebUsbProvider`,
* `createBluetoothProvider()`, `createWebSocketProvider(...)`).
* Takes precedence over the global provider set via
* `AbstractSerialDevice.setProvider()`.
*/
provider?: SerialProvider;
/**
* Polyfill options forwarded to `provider` when requesting or listing
* ports for THIS instance. Only used when `provider` is set.
*/
polyfillOptions?: SerialPolyfillOptions;
}SerialProvider
ts
interface SerialProvider {
/**
* Opens the browser port picker (or equivalent) and returns the selected
* SerialPort-compatible object.
*/
requestPort(options?: { filters?: SerialPortFilter[] }): Promise<SerialPort>;
/** Returns all previously authorized (already-paired) ports. */
getPorts(): Promise<SerialPort[]>;
}SerialParser<T>
ts
interface SerialParser<T> {
transform(chunk: Uint8Array, push: (value: T) => void): void;
flush?(push: (value: T) => void): void;
}SerialEventMap<T>
ts
interface SerialEventMap<T> {
"serial:connecting": () => void;
"serial:connected": () => void;
"serial:disconnected": () => void;
"serial:data": (value: T) => void;
"serial:sent": (data: Uint8Array) => void;
"serial:error": (error: Error) => void;
"serial:need-permission": () => void;
"serial:timeout": (command: Uint8Array) => void;
"serial:queue-empty": () => void;
"serial:reconnecting": () => void;
}SerialPortFilter
ts
interface SerialPortFilter {
usbVendorId?: number;
usbProductId?: number;
}SerialPolyfillOptions
Options for WebUsbProvider. Controls which USB interface classes are used for control and bulk transfer.
ts
interface SerialPolyfillOptions {
/** USB interface class used for control messages. Default: 10 (CDC) */
usbControlInterfaceClass?: number;
/** USB interface class used for bulk data transfer. Default: 10 (CDC) */
usbTransferInterfaceClass?: number;
}CommandQueueOptions
Options accepted by the CommandQueue constructor.
ts
interface CommandQueueOptions {
/** Timeout (ms) per command. 0 = no timeout. Default: 0 */
timeout?: number;
}Error classes
| Class | When thrown |
|---|---|
SerialPortConflictError | Two devices attempt to open the same port |
SerialPermissionError | User denies port access |
SerialTimeoutError | commandTimeout exceeded for a queued command |
SerialReadError | Error reading from the port's ReadableStream |
SerialWriteError | Error writing to the port's WritableStream |
All extend the built-in Error class and include name and message.