kitcn
Version:
kitcn - React Query integration and CLI tools for Convex
68 lines (67 loc) • 2.2 kB
TypeScript
import { t as GetAuth } from "../../types-BCl8gfGy.js";
import { HttpRouter } from "convex/server";
import { MiddlewareHandler } from "hono";
import { BaseURLConfig, BetterAuthOptions } from "better-auth";
//#region src/auth/middleware.d.ts
interface AuthMiddlewareOptions {
/** Base path for auth routes (default: '/api/auth') */
basePath?: string;
/** Log request/response headers for debugging */
verbose?: boolean;
}
/**
* Create auth middleware that handles auth routes and OpenID well-known redirect.
*
* @example
* ```ts
* import { Hono } from 'hono';
* import { cors } from 'hono/cors';
* import { authMiddleware } from 'kitcn/auth/http';
* import { createHttpRouter } from 'kitcn/server';
*
* const app = new Hono();
* app.use('/api/*', cors({ origin: process.env.SITE_URL, credentials: true }));
* app.use(authMiddleware(getAuth));
*
* export default createHttpRouter(app, httpRouter);
* ```
*/
declare function authMiddleware<Ctx = unknown>(getAuth: GetAuth<Ctx, {
handler: (request: Request) => Promise<Response>;
}>, opts?: AuthMiddlewareOptions): MiddlewareHandler;
//#endregion
//#region src/auth/registerRoutes.d.ts
type TrustedOriginsOption = BetterAuthOptions['trustedOrigins'];
type RouteCorsOptions = {
allowedHeaders?: string[];
allowedOrigins?: string[];
exposedHeaders?: string[];
} | boolean;
type RegisterRoutesOptions = {
basePath?: string;
cors?: RouteCorsOptions;
verbose?: boolean;
};
type AuthRouteContract = {
$context: Promise<{
options: {
trustedOrigins?: TrustedOriginsOption;
};
}>;
handler: (request: Request) => Promise<Response>;
options: {
basePath?: string;
baseURL?: BaseURLConfig;
trustedOrigins?: TrustedOriginsOption;
};
};
declare const registerRoutes: <Ctx>(http: HttpRouter, getAuth: GetAuth<Ctx, AuthRouteContract>, opts?: RegisterRoutesOptions) => void;
//#endregion
//#region src/auth-http/index.d.ts
/**
* Install Convex-safe polyfills required by Better Auth's HTTP handling.
* This runs automatically when importing `kitcn/auth/http`.
*/
declare function installAuthHttpPolyfills(): void;
//#endregion
export { authMiddleware, installAuthHttpPolyfills, registerRoutes };