UNPKG

@elgato-stream-deck/webhid

Version:

An npm module for interfacing with the Elgato Stream Deck in the browser

59 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WebHIDDevice = void 0; const eventemitter3_1 = require("eventemitter3"); const p_queue_1 = require("p-queue"); /** * The wrapped browser HIDDevice. * This translates it into the common format expected by @elgato-stream-deck/core */ class WebHIDDevice extends eventemitter3_1.EventEmitter { device; reportQueue = new p_queue_1.default({ concurrency: 1 }); constructor(device) { super(); this.device = device; // this.device.on('data', data => this.emit('data', data)) // this.device.on('error', error => this.emit('error', error)) this.device.addEventListener('inputreport', (event) => { // Button press if (event.reportId === 0x01) { const data = new Uint8Array(event.data.buffer, event.data.byteOffset, event.data.byteLength); this.emit('input', data); } }); } async close() { return this.device.close(); } async forget() { return this.device.forget(); } async sendFeatureReport(data) { return this.device.sendFeatureReport(data[0], data.subarray(1)); } async getFeatureReport(reportId, _reportLength) { const view = await this.device.receiveFeatureReport(reportId); return new Uint8Array(view.buffer, view.byteOffset, view.byteLength); } async sendReports(buffers) { return this.reportQueue.add(async () => { for (const data of buffers) { await this.device.sendReport(data[0], data.subarray(1)); } }); } async getDeviceInfo() { return { path: undefined, productId: this.device.productId, vendorId: this.device.vendorId, }; } async getChildDeviceInfo() { // Not supported return null; } } exports.WebHIDDevice = WebHIDDevice; //# sourceMappingURL=hid-device.js.map