UNPKG

@stacksjs/error-handling

Version:
67 lines (66 loc) 2.08 kB
/** * Escape HTML special characters */ export declare function escapeHtml(str: string): string; /** * Read source lines around a stack frame for the code snippet panel. */ export declare function readCodeSnippet(filePath: string, line: number, radius?: number): CodeSnippetResult | null; export declare function renderCodeSnippet(snippet: CodeSnippetResult): string; export declare function renderTraceFrame(frame: ParsedFrame, index: number, snippetLines: number): string; export declare function renderVendorGroup(frames: ParsedFrame[], snippetLines: number): string; export declare function groupTraceFrames(frames: ParsedFrame[]): Array<ParsedFrame | ParsedFrame[]>; export declare function renderExceptionTrace(frames: ParsedFrame[], snippetLines: number): string; export declare function renderContextTabs(opts: { request?: RequestContext routing?: RoutingContext user?: UserContext queries?: QueryInfo[] showEnvironment?: boolean }): string; export declare function buildErrorMarkdown(opts: { statusTitle: string errorName: string errorMessage: string status: number file?: string line?: number request?: RequestContext framework?: { name: string, version?: string } frames: ParsedFrame[] }): string; export declare function wrapErrorPage(body: string, markdown: string): string; export declare const ERROR_PAGE_SCRIPT: string; export declare interface ParsedFrame { file: string line: number column?: number function?: string absoluteFile: string isFramework: boolean } declare interface QueryInfo { query: string time?: number connection?: string } declare interface RequestContext { method: string url: string headers: Record<string, string> queryParams?: Record<string, string> body?: unknown } declare interface RoutingContext { controller?: string routeName?: string middleware?: string[] } declare interface UserContext { id?: string | number email?: string name?: string } export declare interface CodeSnippetResult { lines: Array<{ number: number, content: string, highlight: boolean }> }