import KoaRouter, { type RouterMiddleware } from '@koa/router'; import type { Context, Request as KoaRequest } from 'koa'; import type { Server } from 'node:http'; import { type ServerOptions, type WebSocketServer } from 'ws'; import type { ListedRoute } from './openapi.js'; import { type RouteMeta } from './route-meta.js'; import { type TokenRegistry } from "./demo-scope.js"; /** Koa 上下文;`koa-body` 解析后 `request.body` 可用。 */ export type RouterContext = Context & { request: KoaRequest & { body?: unknown; }; }; type Path = string | RegExp; type RouteHandler = (ctx: RouterContext) => void | Promise; /** * HTTP 路由:继承 `@koa/router`,附带 WebSocket 升级与 OpenAPI 路由清单。 */ export declare class Router extends KoaRouter { readonly server: Server; wsStack: WebSocketServer[]; whiteList: Path[]; private listedRoutes; private _upgradeListenerInstalled; private _authToken; private _tokenRegistry; /** WebSocket paths that skip the global auth token (they provide their own verifyClient). */ private _wsAuthExempt; constructor(server: Server, prefix?: string); /** * Set the Bearer token used to authenticate WebSocket upgrade requests. * Must be called before the first upgrade arrives (typically right after * the HTTP auth middleware is registered). */ setAuthToken(token: string): void; /** Multi-token registry (primary + scoped demo tokens). */ setTokenRegistry(registry: TokenRegistry): void; listRoutes(): ListedRoute[]; private fullPattern; private track; private addRoute; private delegateOrTrack; get(name: string, path: string | RegExp, ...middleware: RouterMiddleware[]): this; get(path: string | RegExp | string[], ...middleware: RouterMiddleware[]): this; get(path: Path, ...handlers: (RouteHandler | RouteMeta)[]): this; post(name: string, path: string | RegExp, ...middleware: RouterMiddleware[]): this; post(path: string | RegExp | string[], ...middleware: RouterMiddleware[]): this; post(path: Path, ...handlers: (RouteHandler | RouteMeta)[]): this; put(name: string, path: string | RegExp, ...middleware: RouterMiddleware[]): this; put(path: string | RegExp | string[], ...middleware: RouterMiddleware[]): this; put(path: Path, ...handlers: (RouteHandler | RouteMeta)[]): this; delete(name: string, path: string | RegExp, ...middleware: RouterMiddleware[]): this; delete(path: string | RegExp | string[], ...middleware: RouterMiddleware[]): this; delete(path: Path, ...handlers: (RouteHandler | RouteMeta)[]): this; all(name: string, path: string | RegExp, ...middleware: RouterMiddleware[]): this; all(path: string | RegExp | string[], ...middleware: RouterMiddleware[]): this; all(path: Path, ...handlers: (RouteHandler | RouteMeta)[]): this; destroyWs(wsServer: WebSocketServer): void; private _resolveUpgradeScope; /** * Verify the Bearer token on a WebSocket upgrade request. * Returns `true` if the request is authenticated (or no token is configured). */ private _verifyUpgradeToken; private _ensureUpgradeListener; ws(path: string, options?: Omit): WebSocketServer; } /** @deprecated 别名保留;新代码可直接 `router.get/post/...`。 */ export declare function registerFetchRoute(router: Router, method: string, path: string, handler: RouteHandler, meta?: RouteMeta): void; export type { RouteMeta, ListedRoute }; //# sourceMappingURL=koa-router.d.ts.map