UNPKG

@atem-connection/camera-control

Version:
83 lines 3.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.assertNever = exports.ChangesTracker = void 0; const atem_connection_1 = require("atem-connection"); class ChangesTracker { #changes = new Map(); getResult() { return Array.from(this.#changes.values()); } #getEntry(cameraId) { let entry = this.#changes.get(cameraId); if (!entry) { entry = { cameraId, changes: [], events: [], unhandledMessages: [], invalidMessages: [], }; this.#changes.set(cameraId, entry); } return entry; } addChange(cameraId, path) { const entry = this.#getEntry(cameraId); if (!entry.changes.includes(path)) { entry.changes.push(path); } } addEvent(cameraId, event) { const entry = this.#getEntry(cameraId); if (!entry.events.includes(event)) { entry.events.push(event); } } addUnhandledMessage(command) { const entry = this.#getEntry(command.source); entry.unhandledMessages.push({ categoryId: command.category, parameterId: command.parameter, }); } checkMessageParameters(command, expectedType, minCount) { let isValid = command.properties.type === expectedType; if (isValid) { switch (expectedType) { case atem_connection_1.Commands.CameraControlDataType.BOOL: isValid = command.properties.boolData.length >= minCount; break; case atem_connection_1.Commands.CameraControlDataType.SINT8: case atem_connection_1.Commands.CameraControlDataType.SINT16: case atem_connection_1.Commands.CameraControlDataType.SINT32: case atem_connection_1.Commands.CameraControlDataType.FLOAT: isValid = command.properties.numberData.length >= minCount; break; case atem_connection_1.Commands.CameraControlDataType.SINT64: isValid = command.properties.bigintData.length >= minCount; break; case atem_connection_1.Commands.CameraControlDataType.STRING: isValid = command.properties.stringData.length >= minCount; break; default: assertNever(expectedType); isValid = false; break; } } if (!isValid) { const entry = this.#getEntry(command.source); entry.invalidMessages.push({ categoryId: command.category, parameterId: command.parameter, }); } return isValid; } } exports.ChangesTracker = ChangesTracker; function assertNever(_val) { // Nothing to do } exports.assertNever = assertNever; //# sourceMappingURL=changesTracker.js.map