@serialpilot/driver-kit
v0.1.0
Published
Tiny shared building blocks for serialpilot device drivers — Device base, MockTransport, event taxonomy, logger.
Downloads
40
Maintainers
Readme
@serialpilot/driver-kit
Tiny shared building blocks for SerialPilot device drivers.
⚠️ This package is intentionally small. It is not an SDK or framework. It exists so the three flagship drivers (GRBL, GPS, ESP-flasher) don't duplicate basic plumbing.
What's exported
Device— abstractEventEmittersubclass with anopen → opening → open → closing → closedstate machine.MockTransport— in-memoryTransportimplementation used by every driver's tests.Transport— the duplex interface drivers expect from a port.DeviceState,BaseEventName,BaseEventPayloads,DriverError,makeDriverError— shared event taxonomy types and error helper.createLogger(namespace)— debug-namespaced logger factory (serialpilot:driver:<name>).LineBuffer— CRLF/LF line splitter with stateful chunk buffering. Used by every text-based driver.RequestQueue<TResp>— generic FIFO request/response queue with per-item timeouts,cancelAll, write-failure handling, and configurablemaxInFlight. The driver supplies response recognition viaresolveCurrent()/rejectCurrent().- Optional
Transport.setSignals({dtr, rts})for modem control.MockTransportrecords all calls tosignalsLog.
Install
npm install @serialpilot/driver-kitExample
import { Device, MockTransport, createLogger } from '@serialpilot/driver-kit'
const log = createLogger('mydriver')
const transport = new MockTransport()
class MyDriver extends Device {
async open() {
log('opening')
await super.open()
}
}License
MIT
