workery
Version:
Modern web framework for building APIs on Cloudflare Workers.
94 lines (93 loc) • 4.07 kB
TypeScript
import type { ResponseConfig, RouteConfig } from "@asteasolutions/zod-to-openapi";
import { SecurityRequirementObject } from "openapi3-ts/oas31";
import type { HTTPMethod, ResponseClass, RouteHandler, RouteParameters, UnboundRoute } from "./types";
import { Middleware } from "./middleware";
export declare function fixPathSlashes(path: string): string;
export declare function generateRouteSummary(method: HTTPMethod, path: string): string;
export declare class Route<R, Ps extends RouteParameters, E = unknown> {
method: HTTPMethod;
path: string;
name?: string;
tags: string[];
summary: string;
description: string;
deprecated: boolean;
responses: Record<number, ResponseConfig>;
security?: SecurityRequirementObject[];
statusCode: number;
includeInSchema: boolean;
responseClass: ResponseClass;
middleware: Middleware<E>[];
parameters: Ps;
handle: RouteHandler<R, Ps, E>;
constructor(init: {
method: HTTPMethod;
path: string;
name?: string;
tags?: string[];
summary?: string;
description?: string;
deprecated?: boolean;
responses?: Record<number, ResponseConfig>;
security?: SecurityRequirementObject[];
includeInSchema?: boolean;
statusCode?: number;
responseClass?: ResponseClass;
middleware?: Middleware<E>[];
parameters: Ps;
handle: RouteHandler<R, Ps, E>;
});
openapi(): RouteConfig;
}
export declare class RouteNode<E = unknown> {
private inner;
name: string;
routes: Record<string, Route<any, any, E>>;
middleware: Middleware<E>[];
paramNames: string[];
constructor(name: string);
touch(node: string): RouteNode<E>;
match(node: string): RouteNode<E> | undefined;
}
export declare function searchParamsToQueries(searchParams: URLSearchParams): Record<string, string[]>;
export declare class RouteMatcher<E = unknown> {
routes: Route<any, any, E>[];
tree: RouteNode<E>;
constructor();
[Symbol.iterator](): IterableIterator<Route<any, any, E>>;
get length(): number;
get(path: string): RouteNode<E>;
set(path: string | null, values: {
middleware?: Middleware<E>[];
}): RouteNode<E>;
push(...routes: Route<any, any, E>[]): number;
match(method: string, path: string): [Route<any, any, E> | undefined | null, Record<string, string>, Middleware<E>[]];
}
export declare class Router<E = unknown> {
tags: string[];
deprecated: boolean;
includeInSchema: boolean;
responses: Record<number, ResponseConfig>;
security?: SecurityRequirementObject[];
defaultResponseClass: ResponseClass;
middleware: Middleware<E>[];
routeMatcher: RouteMatcher<E>;
constructor(init: {
tags?: string[];
deprecated?: boolean;
includeInSchema?: boolean;
responses?: Record<number, ResponseConfig>;
security?: SecurityRequirementObject[];
defaultResponseClass?: ResponseClass;
middleware?: Middleware<E>[];
});
get<R, Ps extends RouteParameters>(path: string, unboundRoute: UnboundRoute<R, Ps, E>): Route<R, Ps, E>;
post<R, Ps extends RouteParameters>(path: string, unboundRoute: UnboundRoute<R, Ps, E>): Route<R, Ps, E>;
put<R, Ps extends RouteParameters>(path: string, unboundRoute: UnboundRoute<R, Ps, E>): Route<R, Ps, E>;
delete<R, Ps extends RouteParameters>(path: string, unboundRoute: UnboundRoute<R, Ps, E>): Route<R, Ps, E>;
patch<R, Ps extends RouteParameters>(path: string, unboundRoute: UnboundRoute<R, Ps, E>): Route<R, Ps, E>;
head<R, Ps extends RouteParameters>(path: string, unboundRoute: UnboundRoute<R, Ps, E>): Route<R, Ps, E>;
trace<R, Ps extends RouteParameters>(path: string, unboundRoute: UnboundRoute<R, Ps, E>): Route<R, Ps, E>;
options<R, Ps extends RouteParameters>(path: string, unboundRoute: UnboundRoute<R, Ps, E>): Route<R, Ps, E>;
route<R, Ps extends RouteParameters>(method: HTTPMethod, path: string, unboundRoute: UnboundRoute<R, Ps, E>): Route<R, Ps, E>;
}