UNPKG

rxpoweredup

Version:

A Typescript RxJS-based library for controlling LEGO Powered UP hubs & peripherals.

24 lines (23 loc) 850 B
export class LinuxChromeChannel { characteristic; packetBuilder; messageMiddleware; queue = Promise.resolve(); constructor(characteristic, packetBuilder, messageMiddleware) { this.characteristic = characteristic; this.packetBuilder = packetBuilder; this.messageMiddleware = messageMiddleware; } sendMessage(message, beforeSend) { const p = this.queue.then(() => { const resultingMessage = this.messageMiddleware.reduce((acc, middleware) => middleware.handle(acc), message); const packet = this.packetBuilder.buildPacket(resultingMessage); if (beforeSend) { beforeSend(); } return this.characteristic.writeValueWithResponse(packet); }); this.queue = p.catch(() => void 0); return p; } }