@sailboat-computer/validation
Version:
Validation framework for sailboat computer v3
100 lines • 3.7 kB
JavaScript
;
/**
* Interface-specific validation contexts
*
* This file defines validation contexts specialized for different hardware interfaces.
* These contexts extend the base ValidationContext with interface-specific properties.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.createGPIOContext = exports.createMQTTContext = exports.createI2CContext = exports.createSignalKContext = void 0;
/**
* Create a Signal K validation context
*
* @param baseContext Base validation context
* @param signalKData Signal K specific data
* @returns Signal K validation context
*/
function createSignalKContext(baseContext, signalKData) {
// Create a properly typed context with all optional properties explicitly defined
const context = {
...baseContext,
signalKPath: signalKData.path || undefined,
signalKSource: signalKData.source || undefined,
signalKDelta: signalKData.delta || undefined,
signalKSelf: signalKData.self || undefined,
signalKUpdate: signalKData.update || undefined,
signalKSourceMetadata: signalKData.sourceMetadata || undefined,
signalKTimestamp: signalKData.timestamp || undefined
};
return context;
}
exports.createSignalKContext = createSignalKContext;
/**
* Create an I2C validation context
*
* @param baseContext Base validation context
* @param i2cData I2C specific data
* @returns I2C validation context
*/
function createI2CContext(baseContext, i2cData) {
// Create a properly typed context with all optional properties explicitly defined
const context = {
...baseContext,
deviceAddress: i2cData.deviceAddress,
deviceType: i2cData.deviceType,
busNumber: i2cData.busNumber,
registerMap: i2cData.registerMap || undefined,
calibrationData: i2cData.calibrationData || undefined,
deviceConfig: i2cData.deviceConfig || undefined,
rawRegisters: i2cData.rawRegisters || undefined
};
return context;
}
exports.createI2CContext = createI2CContext;
/**
* Create an MQTT validation context
*
* @param baseContext Base validation context
* @param mqttData MQTT specific data
* @returns MQTT validation context
*/
function createMQTTContext(baseContext, mqttData) {
// Create a properly typed context with all optional properties explicitly defined
const context = {
...baseContext,
topic: mqttData.topic,
topicParts: mqttData.topic.split('/'),
deviceId: mqttData.deviceId,
deviceType: mqttData.deviceType,
messageType: mqttData.messageType,
qos: mqttData.qos,
retained: mqttData.retained || undefined,
brokerId: mqttData.brokerId || undefined
};
return context;
}
exports.createMQTTContext = createMQTTContext;
/**
* Create a GPIO validation context
*
* @param baseContext Base validation context
* @param gpioData GPIO specific data
* @returns GPIO validation context
*/
function createGPIOContext(baseContext, gpioData) {
// Create a properly typed context with all optional properties explicitly defined
const context = {
...baseContext,
pinNumber: gpioData.pinNumber,
pinDirection: gpioData.pinDirection,
pinMode: gpioData.pinMode,
previousState: gpioData.previousState || undefined,
stateChangeTime: gpioData.stateChangeTime || undefined,
debounceConfig: gpioData.debounceConfig || undefined,
pullConfig: gpioData.pullConfig || undefined,
edgeConfig: gpioData.edgeConfig || undefined
};
return context;
}
exports.createGPIOContext = createGPIOContext;
//# sourceMappingURL=interface-contexts.js.map