import type SerialPort from 'serialport' import { promisify } from 'util'; import { pick } from 'ramda' import { SerialPortAdapter } from './webserial/adapter' function sleep(t: number) { return new Promise(resolve => setTimeout(resolve, t)) } function serialportPromisify(port: SerialPort | SerialPortAdapter) { return { open: promisify(port.open).bind(port), close: promisify(port.close).bind(port), update: promisify(port.update).bind(port), set: promisify(port.set).bind(port), whenClose: () => Promise.allSettled([promisify(port.once).call(port, 'close')]), } } export { promisify, pick, sleep, serialportPromisify };