alinea
Version:
[](https://npmjs.org/package/alinea) [](https://packagephobia.com/result?p=alinea)
134 lines (133 loc) • 4.73 kB
TypeScript
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 {};