/** * Error reporting hook utilities for @beignet/core/server */ import type { HttpContractConfig } from "../../contracts/index.js"; import type { ErrorReporterPort, ErrorReportOptions } from "../../error-reporting/index.js"; import type { HttpRequestLike, ServerCaughtErrorHook, ServerHook } from "../types.js"; type MaybePromise = T | Promise; /** * Minimal context shape used by `createErrorReportingHooks(...)`. */ export type ErrorReportingContext = { ports?: { errorReporter?: ErrorReporterPort; }; requestId?: string; traceId?: string; spanId?: string; parentSpanId?: string; traceparent?: string; actor?: { type?: string; id?: string; }; tenant?: { id?: string; }; }; /** * Arguments passed to error reporting hook callbacks. */ export type ErrorReportingHookArgs = Parameters>[0]; /** * Error reporter resolver accepted by `createErrorReportingHooks(...)`. */ export type ErrorReporterResolver = (args: ErrorReportingHookArgs) => MaybePromise; /** * Options accepted by `createErrorReportingHooks(...)`. */ export interface ErrorReportingHooksOptions { /** * Reporter to use instead of `ctx.ports.errorReporter`. */ reporter?: ErrorReporterPort | ErrorReporterResolver; /** * Decide whether a caught error should be captured. The default reports * unexpected failures and skips expected catalog/auth/validation outcomes. */ shouldReport?: (args: ErrorReportingHookArgs) => MaybePromise; /** * Additional capture options. These are merged over Beignet's request, * actor, tenant, contract, and trace metadata. */ reportOptions?: ErrorReportOptions | ((args: ErrorReportingHookArgs) => MaybePromise); /** * Maximum time allowed for reporting preparation, capture, and failure * observation. Each phase is bounded independently. Set to `false` only for * intentionally unbounded reporters. * * @default 1000 */ timeoutMs?: number | false; /** * Observer for reporter failures. Reporter failures are otherwise ignored so * error reporting cannot change the HTTP response. */ onReporterError?: (args: { error: unknown; reportingError: unknown; ctx?: Ctx; req: HttpRequestLike; contract: HttpContractConfig; }) => MaybePromise; } /** * Create server hooks that capture unexpected HTTP request failures through * `ctx.ports.errorReporter`. * * The hook observes `onCaughtError`, never maps responses, and ignores capture * failures by default so reporting cannot affect request handling. */ export declare function createErrorReportingHooks(config?: ErrorReportingHooksOptions): ServerHook; /** * Default filter for HTTP error reporting. */ export declare function shouldReportServerError(error: unknown): boolean; export {}; //# sourceMappingURL=error-reporting.d.ts.map