@atem-connection/camera-control
Version:
Library for ATEM Camera control using atem-connection.
83 lines • 3.04 kB
JavaScript
;
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