import { type Cookie, type Handler, type RequestEvent, type TRet } from "./deps"; declare global { namespace NHTTP { interface RequestEvent { /** * generate token CSRF. */ csrfToken: () => string; /** * verify token CSRF. */ csrfVerify: (value?: string) => boolean; } } } export type CSRFOptions = { /** * cookie. default to `false`. */ cookie?: boolean | Cookie; /** * secret. default to random per-request. */ secret?: string | (() => string); /** * Salt length. default `8` */ salt?: number; /** * Custom get value */ getValue?: (rev: RequestEvent) => string | undefined | null; /** * Custom Error. */ onError?: (error: Error, rev: RequestEvent) => TRet; /** * ignore methods. default to `["GET", "HEAD", "OPTIONS", "TRACE"]`. */ ignoreMethods?: string[]; /** * auto verify csrf. default to `true`. */ autoVerify?: boolean; /** * algorithm when creating CSRF. default to `SHA1`. */ algo?: "MD5" | "SHA" | "SHA1" | "SHA256" | "SHA512"; /** * config origin. default to `true`. */ origin?: string | string[] | boolean; }; /** * Cross-Site Request Forgery (CSRF) protected middleware. * @example * const MyForm: FC<{ csrf: string }> = (props) => { * return ( *
* ) * } * * const csrfProtect = csrf(); * * app.get("/", csrfProtect, (rev) => { * return