| .. | ||
| catalog.ts | ||
| contract.ts | ||
| logging.ts | ||
| next-response.ts | ||
| README.md | ||
Server Error Contract
This module is the centralized server error contract for API routes, background jobs, and server libraries.
Canonical Shapes
- App error contract:
ServerAppErrorincontract.ts - Normalization entrypoint:
normalizeServerError(error, ctx?) - API response mapping:
toApiErrorBody(...)+toHttpStatus(...) - Log helpers:
logServerError(...)andlogDegraded(...)
Classification Policy
ServerErrorClass defaults:
validation->400,retryable=falseauth->401,retryable=falsepermission->403,retryable=falseupstream->502,retryable=truestorage->503,retryable=truedb->500,retryable=truetimeout->504,retryable=trueunknown->500,retryable=false
Code Naming
App error codes use low-cardinality uppercase snake case: DOMAIN_ACTION_REASON.
Examples:
AUDIOBOOK_CHAPTER_PROCESS_FAILEDDOCUMENT_PREVIEW_GENERATE_FAILEDUSER_EXPORT_AUTH_NOT_INITIALIZEDUNKNOWN_SERVER_ERROR
Route Contract
Terminal route failures should use errorResponse(...) from next-response.ts.
Response body shape:
error- optional
errorCode - optional
retryable - optional safe
details
Logging Contract
Failure logs:
eventmsg- nested
error(fromerrorToLog(...)) - optional
error.codefor app classification
Degraded warnings:
degraded: truesteporfallbackPathevent+msg