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>