Skip to content

Interface: Transport ​

A bidirectional byte channel to a printer.

Implemented by @thermal-label/transport for each transport type (USB, TCP, WebUSB, Web Bluetooth). Drivers program against this interface and never touch platform APIs directly.

Properties ​

PropertyModifierTypeDescription
connectedreadonlybooleanWhether the transport is currently connected.

Methods ​

close() ​

ts
close(): Promise<void>;

Close the connection.

Always safe to call multiple times. Always await the result.

Returns ​

Promise<void>


read() ​

ts
read(length: number, timeout?: number): Promise<Uint8Array>;

Read bytes from the printer.

Buffers until length bytes are available or the timeout fires.

BLE implementations: there is no "read N bytes" primitive in BLE. Implementations must buffer incoming GATT notifications internally and satisfy read() calls from that buffer. Document this in your transport class — every BLE implementation must handle buffering consistently so drivers get the same pull-based API on every transport.

Parameters ​

ParameterType
lengthnumber
timeout?number

Returns ​

Promise<Uint8Array>

Throws ​

TransportTimeoutError on timeout.

Throws ​

TransportClosedError if the transport is closed mid-read.


write() ​

ts
write(data: Uint8Array): Promise<void>;

Send bytes to the printer.

Parameters ​

ParameterType
dataUint8Array

Returns ​

Promise<void>