@sailboat-computer/resilience
Version:
Enhanced resilience patterns for sailboat computer v3 with marine-specific adaptations
149 lines • 5.97 kB
JavaScript
"use strict";
/**
* Main exports for the resilience framework
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MarineCircuitBreakers = exports.createMarineCircuitBreaker = void 0;
// Export all types
__exportStar(require("./types"), exports);
// Export circuit breaker components
__exportStar(require("./circuit-breaker/MarineCircuitBreaker"), exports);
// Export bulkhead components
__exportStar(require("./bulkhead/ResourcePool"), exports);
__exportStar(require("./bulkhead/BulkheadManager"), exports);
// Export timeout components
__exportStar(require("./timeout/TimeoutManager"), exports);
// Export retry components
__exportStar(require("./retry/RetryManager"), exports);
// Export degradation components
__exportStar(require("./degradation/DegradationManager"), exports);
// Constants are already exported via './types'
// TODO: Export additional components when implemented
/**
* Factory function to create a marine circuit breaker with default configuration
*/
const MarineCircuitBreaker_1 = require("./circuit-breaker/MarineCircuitBreaker");
const marine_constants_1 = require("./types/marine-constants");
function createMarineCircuitBreaker(name, config) {
return new MarineCircuitBreaker_1.MarineCircuitBreaker(name, config);
}
exports.createMarineCircuitBreaker = createMarineCircuitBreaker;
/**
* Pre-configured circuit breakers for common marine scenarios
*/
exports.MarineCircuitBreakers = {
/**
* Circuit breaker for sensor operations
*/
sensor: (name) => createMarineCircuitBreaker(`sensor-${name}`, {
failureThreshold: 3,
successThreshold: 2,
timeout: 30000, // 30 seconds
operationalContext: marine_constants_1.OperationalContext.SAILING,
failureTypes: [marine_constants_1.MarineFailureType.SENSOR_FAILURE, marine_constants_1.MarineFailureType.TIMEOUT],
environmentalAdjustments: {
roughSeas: true,
lowPower: false,
limitedConnectivity: false
},
volumeThreshold: 5,
errorPercentageThreshold: 60,
slowCallDurationThreshold: 3000, // 3 seconds
slowCallRateThreshold: 40
}),
/**
* Circuit breaker for network operations
*/
network: (name) => createMarineCircuitBreaker(`network-${name}`, {
failureThreshold: 5,
successThreshold: 3,
timeout: 120000, // 2 minutes
operationalContext: marine_constants_1.OperationalContext.SAILING,
failureTypes: [marine_constants_1.MarineFailureType.CONNECTIVITY_LOSS, marine_constants_1.MarineFailureType.TIMEOUT],
environmentalAdjustments: {
roughSeas: false,
lowPower: true,
limitedConnectivity: true
},
volumeThreshold: 10,
errorPercentageThreshold: 70,
slowCallDurationThreshold: 10000, // 10 seconds
slowCallRateThreshold: 60
}),
/**
* Circuit breaker for critical safety operations
*/
safety: (name) => createMarineCircuitBreaker(`safety-${name}`, {
failureThreshold: 2,
successThreshold: 1,
timeout: 15000, // 15 seconds
operationalContext: marine_constants_1.OperationalContext.EMERGENCY,
failureTypes: [
marine_constants_1.MarineFailureType.SENSOR_FAILURE,
marine_constants_1.MarineFailureType.POWER_FLUCTUATION,
marine_constants_1.MarineFailureType.TIMEOUT
],
environmentalAdjustments: {
roughSeas: true,
lowPower: true,
limitedConnectivity: true
},
volumeThreshold: 3,
errorPercentageThreshold: 30,
slowCallDurationThreshold: 2000, // 2 seconds
slowCallRateThreshold: 25
}),
/**
* Circuit breaker for power-sensitive operations
*/
power: (name) => createMarineCircuitBreaker(`power-${name}`, {
failureThreshold: 4,
successThreshold: 2,
timeout: 60000, // 1 minute
operationalContext: marine_constants_1.OperationalContext.SAILING,
failureTypes: [marine_constants_1.MarineFailureType.POWER_FLUCTUATION, marine_constants_1.MarineFailureType.RESOURCE_EXHAUSTION],
environmentalAdjustments: {
roughSeas: false,
lowPower: true,
limitedConnectivity: false
},
volumeThreshold: 8,
errorPercentageThreshold: 50,
slowCallDurationThreshold: 5000, // 5 seconds
slowCallRateThreshold: 45
}),
/**
* Circuit breaker for maintenance operations
*/
maintenance: (name) => createMarineCircuitBreaker(`maintenance-${name}`, {
failureThreshold: 10,
successThreshold: 5,
timeout: 300000, // 5 minutes
operationalContext: marine_constants_1.OperationalContext.MAINTENANCE,
failureTypes: [marine_constants_1.MarineFailureType.TIMEOUT, marine_constants_1.MarineFailureType.RESOURCE_EXHAUSTION],
environmentalAdjustments: {
roughSeas: false,
lowPower: false,
limitedConnectivity: false
},
volumeThreshold: 20,
errorPercentageThreshold: 80,
slowCallDurationThreshold: 30000, // 30 seconds
slowCallRateThreshold: 70
})
};
//# sourceMappingURL=index.js.map