UNPKG

@whook/whook

Version:

Build strong and efficient REST web services.

280 lines (279 loc) 6.94 kB
import { type WhookStringifiers } from '../libs/constants.js'; import { type AppEnvVars } from 'application-services'; import { type WhookResponseBodySpec } from '../libs/body.js'; import { type JSONSchema } from 'ya-json-schema-types'; import { JsonValue } from 'type-fest'; export interface WhookErrorDescriptor { code: string; description?: string; uri?: string; help?: string; status?: number; transmittedParams?: number[]; } export type WhookErrorsDescriptors = Record<string, WhookErrorDescriptor>; export declare const DEFAULT_ERROR_URI = "https://stackoverflow.com/search?q=%5Bwhook%5D+$code"; export declare const DEFAULT_HELP_URI = "https://stackoverflow.com/questions/ask?tags=whook&title=How+to+debug+$code+whook+error+code"; export declare const DEFAULT_DEFAULT_ERROR_CODE = "E_UNEXPECTED"; export declare const DEFAULT_ERRORS_DESCRIPTORS: { E_UNEXPECTED: { code: string; description: string; status: number; help: string; }; E_TRANSACTION_TIMEOUT: { code: string; description: string; uri: string; help: string; }; E_STRINGIFYER_LACK: { code: string; description: string; uri: string; help: string; }; E_UNDECLARED_PATH_PARAMETER: { code: string; description: string; uri: string; help: string; }; E_BAD_PATH: { code: string; description: string; uri: string; help: string; }; E_NO_OPERATION_ID: { code: string; description: string; uri: string; help: string; }; E_NO_HANDLER: { code: string; description: string; uri: string; help: string; }; E_BAD_OPEN_API: { code: string; description: string; uri: string; help: string; }; E_UNDECLARED_SECURITY_SCHEME: { code: string; description: string; uri: string; help: string; }; E_BAD_BODY_SCHEMA: { code: string; description: string; uri: string; help: string; }; E_UNSUPPORTED_HTTP_SCHEME: { code: string; description: string; uri: string; help: string; }; E_UNSUPPORTED_API_KEY_SOURCE: { code: string; description: string; uri: string; help: string; }; E_BAD_PARAMETER_NAME: { code: string; description: string; uri: string; help: string; }; E_UNSUPPORTED_PARAMETER_DEFINITION: { code: string; description: string; uri: string; help: string; }; E_BAD_PARAMETER_SCHEMA: { code: string; description: string; uri: string; help: string; }; E_NO_RESPONSE_PROMISE: { code: string; description: string; uri: string; help: string; }; E_NO_RESPONSE: { code: string; description: string; uri: string; help: string; }; E_NO_RESPONSE_STATUS: { code: string; description: string; uri: string; help: string; }; E_NON_NUMERIC_STATUS: { code: string; description: string; uri: string; help: string; }; E_NOT_FOUND: { code: string; description: string; uri: string; help: string; }; E_REQUEST_CONTENT_TOO_LARGE: { code: string; description: string; uri: string; help: string; }; E_BAD_BODY: { code: string; description: string; uri: string; help: string; transmittedParams: number[]; }; E_BAD_BODY_LENGTH: { code: string; description: string; uri: string; help: string; }; E_UNSUPPORTED_CHARSET: { code: string; description: string; uri: string; help: string; }; E_BAD_CONTENT_TYPE: { code: string; description: string; uri: string; help: string; }; E_REQUEST_FAILURE: { code: string; description: string; uri: string; help: string; }; E_UNSUPPORTED_MEDIA_TYPE: { code: string; description: string; uri: string; help: string; }; E_UNACCEPTABLE_CHARSET: { code: string; description: string; uri: string; help: string; }; E_UNACCEPTABLE_MEDIA_TYPE: { code: string; description: string; uri: string; help: string; }; E_REQUIRED_REQUEST_BODY: { code: string; description: string; uri: string; help: string; }; E_BAD_REQUEST_BODY: { code: string; description: string; uri: string; help: string; transmittedParams: number[]; }; E_NO_REQUEST_BODY: { code: string; description: string; uri: string; help: string; }; E_REQUIRED_PARAMETER: { code: string; description: string; uri: string; help: string; }; E_BAD_PARAMETER: { code: string; description: string; uri: string; help: string; transmittedParams: number[]; }; E_NON_REENTRANT_NUMBER: { code: string; description: string; uri: string; help: string; transmittedParams: number[]; }; E_BAD_BOOLEAN: { code: string; description: string; uri: string; help: string; }; E_TRANSACTION_ID_NOT_UNIQUE: { code: string; description: string; uri: string; help: string; }; }; export interface WhookErrorHandlerConfig { DEBUG_NODE_ENVS: string[]; ERRORS_DESCRIPTORS: WhookErrorsDescriptors; DEFAULT_ERROR_CODE?: string; } export type WhookErrorHandlerDependencies = WhookErrorHandlerConfig & { ENV: AppEnvVars; STRINGIFIERS?: WhookStringifiers; }; export type WhookErrorHandler = (transactionId: string, responseSpec: WhookResponseBodySpec, err: Error) => Promise<WhookErrorResponse>; export interface WhookErrorResponse { status: number; headers: { 'cache-control': 'private'; 'content-type': string; [name: string]: string | string[]; }; body: { error: string; error_description?: string; error_uri?: string; error_help_uri?: string; error_params?: JsonValue[]; error_debug_data: { guruMeditation: string; code?: string; stack?: string; params?: JsonValue[]; }; }; } export declare const whookErrorSchema: JSONSchema; declare const _default: import("knifecycle").ServiceInitializer<WhookErrorHandlerDependencies, WhookErrorHandler>; export default _default;