@sailboat-computer/resilience
Version:
Enhanced resilience patterns for sailboat computer v3 with marine-specific adaptations
126 lines (108 loc) • 2.88 kB
text/typescript
/**
* Types for the resilience framework
*/
// Export marine constants
export * from './marine-constants';
// Import types from sailboat-types
import { common } from '@sailboat-computer/sailboat-types';
// Re-export types
export type HealthStatusType = common.HealthStatus;
export type OperationalContextType = common.OperationalContext;
export type MarineFailureTypeType = common.MarineFailureType;
export type CircuitBreakerStateType = common.CircuitBreakerState;
export type MarineSystemTypeType = common.MarineSystemType;
/**
* Circuit breaker configuration
*/
export interface CircuitBreakerConfig {
// Basic configuration
failureThreshold: number;
successThreshold: number;
timeout: number;
// Marine-specific configuration
operationalContext: OperationalContextType;
failureTypes: MarineFailureTypeType[];
environmentalAdjustments: {
roughSeas: boolean;
lowPower: boolean;
limitedConnectivity: boolean;
};
// Advanced configuration
volumeThreshold: number;
errorPercentageThreshold: number;
slowCallDurationThreshold: number;
slowCallRateThreshold: number;
}
/**
* Retry configuration
*/
export interface RetryConfig {
// Basic configuration
maxAttempts: number;
initialDelayMs: number;
maxDelayMs: number;
// Backoff strategy
backoffStrategy: 'linear' | 'exponential' | 'fibonacci' | 'random';
backoffFactor: number;
// Marine-specific configuration
operationalContext: OperationalContextType;
failureTypes: MarineFailureTypeType[];
environmentalAdjustments: {
roughSeas: boolean;
lowPower: boolean;
limitedConnectivity: boolean;
};
}
/**
* Timeout configuration
*/
export interface TimeoutConfig {
// Basic configuration
timeoutMs: number;
// Marine-specific configuration
operationalContext: OperationalContextType;
environmentalAdjustments: {
roughSeas: boolean;
lowPower: boolean;
limitedConnectivity: boolean;
};
// Advanced configuration
cancelOnTimeout: boolean;
timeoutStrategy: 'fixed' | 'adaptive';
}
/**
* Bulkhead configuration
*/
export interface BulkheadConfig {
// Basic configuration
maxConcurrent: number;
maxQueueSize: number;
// Marine-specific configuration
operationalContext: OperationalContextType;
environmentalAdjustments: {
roughSeas: boolean;
lowPower: boolean;
limitedConnectivity: boolean;
};
// Advanced configuration
fairQueue: boolean;
queueTimeout: number;
}
/**
* Degradation configuration
*/
export interface DegradationConfig {
// Basic configuration
degradationLevels: {
level: number;
threshold: number;
features: string[];
}[];
// Marine-specific configuration
operationalContext: OperationalContextType;
environmentalAdjustments: {
roughSeas: boolean;
lowPower: boolean;
limitedConnectivity: boolean;
};
}