@fortify-ts/fallback
v0.2.0
Published
Fallback pattern for graceful degradation in @fortify-ts
Downloads
692
Maintainers
Readme
@fortify-ts/fallback
Fallback pattern for the Fortify-TS resilience library.
Installation
npm install @fortify-ts/fallback
# or
pnpm add @fortify-ts/fallbackFeatures
- Default Values: Return fallback on failure
- Alternative Operations: Execute backup operation on failure
- Custom Predicates:
shouldFallbackcallback - Notifications:
onFallbackandonSuccesscallbacks
Usage
Basic Usage
import { Fallback } from '@fortify-ts/fallback';
const fallback = new Fallback<User>({
fallback: () => ({ id: 0, name: 'Guest' }),
});
// Returns Guest user if operation fails
const user = await fallback.execute(async (signal) => {
return fetchUser(userId, { signal });
});With Error Context
const fallback = new Fallback<Response>({
fallback: (error) => {
console.log(`Falling back due to: ${error.message}`);
return cachedResponse;
},
});Custom Fallback Condition
const fallback = new Fallback<Response>({
fallback: () => defaultResponse,
// Only fallback on network errors
shouldFallback: (error) => {
return error instanceof NetworkError;
},
});Configuration Options
const fallback = new Fallback<Data>({
// Fallback function (required)
fallback: (error) => defaultData,
// Custom fallback condition
shouldFallback: (error) => error instanceof NetworkError,
// Notification on fallback
onFallback: (error) => {
metrics.increment('fallback.activated');
},
// Notification on success
onSuccess: (result) => {
metrics.increment('primary.success');
},
// Optional logger
logger: myLogger,
});Async Fallback
const fallback = new Fallback<Data>({
fallback: async (error) => {
// Fallback to cache
return await cache.get('backup-data');
},
});Configuration Reference
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| fallback | function | required | Fallback function |
| shouldFallback | function | - | Custom condition |
| onFallback | function | - | Fallback callback |
| onSuccess | function | - | Success callback |
| logger | FortifyLogger | - | Optional logger |
License
MIT
