@grace-js/grace
Version:
An opinionated API framework
40 lines • 1.76 kB
TypeScript
import { APIError } from "./errors/error.js";
import { AnyResponseSchema, PossibleResponses } from "./routes/response.js";
import { AnyRoute } from "./routes/route.js";
import { Router } from "./routers/router.js";
import { GracePlugin } from "./plugins/plugin.js";
import { Adapter } from "./runtime/adapter.js";
export type BeforeRequest = (request: Request) => Promise<{
headers?: Record<string, string>;
} | PossibleResponses<AnyResponseSchema> | void>;
export type AfterRequest = (request: Request, response: PossibleResponses<AnyResponseSchema>) => Promise<void>;
export type ErrorRequest = (request: Request, error: APIError) => Promise<PossibleResponses<AnyResponseSchema> | void>;
export declare class Grace {
routes: AnyRoute[];
before: BeforeRequest[];
after: AfterRequest[];
error: ErrorRequest[];
private readonly router;
readonly adapter: Adapter;
readonly verbose: boolean;
constructor(router: Router, adapter: Adapter, verbose?: boolean);
registerPlugin(plugin: GracePlugin): Grace;
registerBefore(before: BeforeRequest): Grace;
registerAfter(after: AfterRequest): Grace;
registerError(error: ErrorRequest): Grace;
registerRoute(route: AnyRoute): Grace;
registerRoutes(path: string): Grace;
exportOpenAPI(path: string): Grace;
fetch(request: Request): Promise<Response>;
listen(port: number): void;
close(): void;
handleInternally(request: Request): Promise<PossibleResponses<AnyResponseSchema>>;
private handleError;
registerRoutesAsync(path: string): Promise<void>;
}
export declare function createGrace({ router, adapter, verbose }?: {
router?: Router;
adapter?: Adapter;
verbose?: boolean;
}): Grace;
//# sourceMappingURL=grace.d.ts.map