bknd
Version:
Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.
29 lines (28 loc) • 1.3 kB
TypeScript
import type { Permission, PermissionContext } from "../../auth/authorize/Permission";
import type { Context, Hono } from "hono";
import type { RouterRoute } from "hono/types";
import type { ServerEnv } from "../../modules/Controller";
import type { MaybePromise } from "../../core/types";
declare const permissionSymbol: unique symbol;
type PermissionMiddlewareOptions<P extends Permission<any, any, any, any>> = {
onGranted?: (c: Context<ServerEnv>) => MaybePromise<Response | void | undefined>;
onDenied?: (c: Context<ServerEnv>) => MaybePromise<Response | void | undefined>;
} & (P extends Permission<any, any, infer PC, any> ? PC extends undefined ? {
context?: never;
} : {
context: (c: Context<ServerEnv>) => MaybePromise<PermissionContext<P>>;
} : {
context?: never;
});
export declare function permission<P extends Permission<any, any, any, any>>(permission: P, options: PermissionMiddlewareOptions<P>): import("hono").MiddlewareHandler<ServerEnv, string, {}, Response> & {
[permissionSymbol]: {
permission: P;
options: PermissionMiddlewareOptions<P>;
};
};
export declare function getPermissionRoutes(hono: Hono<any>): {
route: RouterRoute;
permission: Permission;
options: PermissionMiddlewareOptions<Permission>;
}[];
export {};