UNPKG

@sailboat-computer/resilience

Version:

Enhanced resilience patterns for sailboat computer v3 with marine-specific adaptations

149 lines 5.97 kB
"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