@sailboat-computer/validation
Version:
Validation framework for sailboat computer v3
110 lines • 3.16 kB
TypeScript
/**
* Extended Signal K validation rules
*
* This file defines enhanced validation rules for Signal K data,
* focusing on common marine sensors and providing more comprehensive validation.
*/
import { BaseValidationRule } from './base-rule';
import { ValidationResult, ValidationContext, RawSensorData } from '../types';
/**
* Signal K value range validation rule
*
* Validates that a Signal K value is within the expected range
* based on path metadata and zones.
*/
export declare class SignalKValueRangeRule extends BaseValidationRule {
constructor();
validate(data: RawSensorData, context: ValidationContext): ValidationResult;
isApplicable(data: RawSensorData): boolean;
/**
* Check if value is of the expected type
*/
private isValueTypeValid;
/**
* Find the zone that a value falls into
*/
private findZone;
/**
* Map zone state to validation severity
*/
private mapZoneStateToSeverity;
/**
* Calculate confidence factors for the validation result
*/
private calculateConfidenceFactors;
/**
* Get reliability score for a Signal K source
*/
private getSourceReliability;
/**
* Calculate value stability based on history
*/
private calculateValueStability;
/**
* Calculate update frequency score
*/
private calculateUpdateFrequency;
/**
* Get expected update interval for a path in milliseconds
*/
private getExpectedUpdateInterval;
/**
* Calculate cross validation score
*/
private calculateCrossValidation;
/**
* Calculate context appropriateness score
*/
private calculateContextAppropriateness;
}
/**
* Signal K rate of change validation rule
*
* Validates that the rate of change of a Signal K value is within
* expected limits based on the data type.
*/
export declare class SignalKRateOfChangeRule extends BaseValidationRule {
constructor();
validate(data: RawSensorData, context: ValidationContext): ValidationResult;
isApplicable(data: RawSensorData): boolean;
/**
* Get maximum rate of change for a path
*/
private getMaxRateOfChange;
}
/**
* Signal K cross-validation rule
*
* Validates Signal K data by comparing it with related data
* from other sources or paths.
*/
export declare class SignalKCrossValidationRule extends BaseValidationRule {
constructor();
validate(data: RawSensorData, context: ValidationContext): ValidationResult;
isApplicable(data: RawSensorData): boolean;
/**
* Get related paths for a Signal K path
*/
private getRelatedPaths;
/**
* Cross-validate Speed Over Ground
*/
private crossValidateSOG;
/**
* Cross-validate Course Over Ground
*/
private crossValidateCOG;
/**
* Cross-validate Depth
*/
private crossValidateDepth;
/**
* Cross-validate Wind data
*/
private crossValidateWind;
}
/**
* Create all Signal K validation rules
*/
export declare function createExtendedSignalKValidationRules(): BaseValidationRule[];
//# sourceMappingURL=extended-signal-k-rules.d.ts.map