/** * @module Resilience */ import { type MiddlewareFn } from "../../../middleware/contracts/_module.js"; import { type Invocable, type AsyncLazyable, type ErrorPolicySettings } from "../../../utilities/_module.js"; /** * IMPORT_PATH: `"@daiso-tech/core/resilience"` * @group Middlewares */ export type OnFallbackData = Array, TFallbackValue = unknown> = { error: unknown; fallbackValue: TFallbackValue; args: TParameters; }; /** * IMPORT_PATH: `"@daiso-tech/core/resilience"` * @group Middlewares */ export type OnFallback = Array, TFallbackValue = unknown> = Invocable<[data: OnFallbackData]>; /** * Lifecycle callbacks for the `fallback` middleware. * Called when the fallback value is about to be returned instead of the original result. * * IMPORT_PATH: `"@daiso-tech/core/resilience"` * @group Middlewares */ export type FallbackCallbacks = Array, TReturn = unknown> = { /** * Callback {@link Invocable | `Invocable`} that will be called before fallback value is returned. */ onFallback?: OnFallback; }; /** * Configuration for the `fallback` resilience middleware. * Returns a default value when the wrapped function throws or returns a value matching the error policy. * Supports error-policy filtering to only catch specific errors. * * IMPORT_PATH: `"@daiso-tech/core/resilience"` * @group Middlewares */ export type FallbackSettings = Array, TReturn = unknown> = FallbackCallbacks & ErrorPolicySettings & { fallbackValue: AsyncLazyable; }; /** * IMPORT_PATH: `"@daiso-tech/core/resilience"` * @group Middlewares */ export declare function fallback, TReturn>(settings: NoInfer>): MiddlewareFn>;