UNPKG

permix

Version:

Permix is a lightweight, framework-agnostic, type-safe permissions management library for JavaScript applications on the client and server sides.

29 lines (26 loc) 1.32 kB
import { Request, Response, Handler } from 'express'; import { P as PermixDefinition, C as CheckContext, e as PermixRules, h as CheckFunctionParams, a as Permix } from '../shared/permix.CuefdCK4.js'; import { M as MaybePromise } from '../shared/permix.BDsgFWDK.js'; interface MiddlewareContext { req: Request; res: Response; } interface PermixOptions<T extends PermixDefinition> { /** * Custom error handler */ onForbidden?: (params: CheckContext<T> & MiddlewareContext) => MaybePromise<void>; } /** * Create a middleware function that checks permissions for Express routes. * * @link https://permix.letstri.dev/docs/integrations/express */ declare function createPermix<Definition extends PermixDefinition>({ onForbidden, }?: PermixOptions<Definition>): { setupMiddleware: (callback: (context: MiddlewareContext) => MaybePromise<PermixRules<Definition>>) => Handler; checkMiddleware: <K extends keyof Definition>(...params: CheckFunctionParams<Definition, K>) => Handler; template: <T = void>(rules: PermixRules<Definition> | ((param: T) => PermixRules<Definition>)) => (param: T) => PermixRules<Definition>; get: (req: Request, res: Response) => Pick<Permix<Definition>, "check" | "dehydrate">; }; export { createPermix }; export type { MiddlewareContext, PermixOptions };