@universal-middleware/hono
Version:
Hono adapter for universal middlewares
36 lines (32 loc) • 2.02 kB
TypeScript
import { Get, UniversalHandler, UniversalFn, contextSymbol, UniversalMiddleware, RuntimeAdapter, UniversalRouter, UniversalRouterInterface, EnhancedMiddleware } from '@universal-middleware/core';
import { Handler, Env, MiddlewareHandler, Context, Hono } from 'hono';
interface UniversalEnv {
Bindings: Env["Bindings"] & {
[contextSymbol]?: Universal.Context;
eventContext: any;
};
Variables: Env["Variables"] & {
[contextSymbol]?: Universal.Context;
};
}
type HonoHandler<In extends Universal.Context> = UniversalFn<UniversalHandler<In>, Handler<UniversalEnv>>;
type HonoMiddleware<In extends Universal.Context, Out extends Universal.Context> = UniversalFn<UniversalMiddleware<In, Out>, MiddlewareHandler<UniversalEnv>>;
/**
* Creates a request handler to be passed to app.all() or any other route function
*/
declare function createHandler<T extends unknown[], InContext extends Universal.Context>(handlerFactory: Get<T, UniversalHandler<InContext>>): Get<T, HonoHandler<InContext>>;
/**
* Creates a middleware to be passed to app.use() or any route function
*/
declare function createMiddleware<T extends unknown[], InContext extends Universal.Context, OutContext extends Universal.Context>(middlewareFactory: Get<T, UniversalMiddleware<InContext, OutContext>>): Get<T, HonoMiddleware<InContext, OutContext>>;
declare function getContext<Context extends Universal.Context = Universal.Context>(honoContext: Context<UniversalEnv>): Context;
declare function getRuntime(honoContext: Context): RuntimeAdapter;
type App = Hono<any, any, any>;
declare class UniversalHonoRouter extends UniversalRouter implements UniversalRouterInterface {
#private;
constructor(app: App);
use(middleware: EnhancedMiddleware): this;
applyCatchAll(): this;
}
declare function apply(app: App, middlewares: EnhancedMiddleware[]): void;
export { type App, type HonoHandler, type HonoMiddleware, UniversalHonoRouter, apply, createHandler, createMiddleware, getContext, getRuntime };