import { type IEither, type ITraceable, LogLevel, type PenguenoRequest, type ServerTrace, } from "@emprespresso/pengueno"; export enum ErrorSource { USER = LogLevel.WARN, SYSTEM = LogLevel.ERROR, } export class PenguenoError extends Error { public readonly source: ErrorSource; constructor( override readonly message: string, public readonly status: number, ) { super(message); this.source = Math.floor(status / 100) === 4 ? ErrorSource.USER : ErrorSource.SYSTEM; } } export interface RequestFilter< T, Err extends PenguenoError = PenguenoError, RIn = ITraceable, > { (req: RIn): Promise>; } export * from "./method.ts"; export * from "./json.ts";