UNPKG

alinea

Version:

[![npm](https://img.shields.io/npm/v/alinea.svg)](https://npmjs.org/package/alinea) [![install size](https://packagephobia.com/badge?p=alinea)](https://packagephobia.com/result?p=alinea)

134 lines (133 loc) 4.73 kB
import { Request, Response } from '@alinea/iso'; export interface HttpRouter { (input: Request): Promise<Response>; } export interface Handle<In, Out> { (input: In): Out | undefined | Promise<Out | undefined>; } type Next<In, Out> = Handle<In, Out> | Route<In, Out>; export declare class Route<In, Out> { handle: Handle<In, Out>; constructor(handle: Handle<In, Out>); map<T>(next: Handle<Out, T>): Route<In, T>; map<T>(next: Route<Out, T>): Route<In, T>; notFound(handler: (input: In) => Out | Promise<Out>): Route<In, Out>; recover(handler: (error: Error) => Out | Promise<Out>): Route<In, Out>; } export declare function router(...routes: Array<Next<Request, Response | undefined> | undefined>): Route<Request, Response | undefined>; export declare namespace router { function use<In, Out>(handle: Handle<In, Out>): Route<In, Out>; function matcher(getPathname?: (url: URL) => string): { get(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; post(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; put(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; delete(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; all(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; }; function base(url: string): { get(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; post(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; put(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; delete(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; all(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; }; function startAt(base: string): { get(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; post(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; put(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; delete(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; all(path: string): Route<globalThis.Request, { request: globalThis.Request; url: URL; params: Record<string, unknown>; }>; }; function parseFormData<In extends { request: Request; }>(input: In): Promise<In & { body: FormData; }>; function parseBuffer<In extends { request: Request; }>(input: In): Promise<In & { body: ArrayBuffer; }>; function parseJson<In extends { request: Request; }>(input: In): Promise<In & { body: unknown; }>; function jsonResponse<Out>(output: Out, init?: ResponseInit): globalThis.Response; function reportError(error: any): globalThis.Response; function redirect(url: string, init?: ResponseInit): globalThis.Response; type Cookie = { name: string; value: string; expires?: Date; maxAge?: number; domain?: string; path?: string; secure?: boolean; httpOnly?: boolean; sameSite?: 'strict' | 'lax' | 'none'; }; function cookie(...cookies: Array<Cookie>): string; function compress(...routes: Array<Next<Request, Response | undefined>>): Route<Request, Response | undefined>; } export {};