You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

158 lines
4.0 KiB

3 years ago
/// <reference types='node' />
import { FastifyPluginCallback } from "fastify";
declare module "fastify" {
interface FastifyInstance {
/**
* Unsigns the specified cookie using the secret provided.
* @param value Cookie value
*/
unsignCookie(value: string): fastifyCookie.UnsignResult;
/**
* Manual cookie parsing method
* @docs https://github.com/fastify/fastify-cookie#manual-cookie-parsing
* @param cookieHeader Raw cookie header value
*/
parseCookie(cookieHeader: string): {
[key: string]: string;
};
/**
* Manual cookie signing method
* @docs https://github.com/fastify/fastify-cookie#manual-cookie-parsing
* @param value cookie value
*/
signCookie(value: string): string;
}
interface FastifyRequest {
/**
* Request cookies
*/
cookies: { [cookieName: string]: string | undefined };
/**
* Unsigns the specified cookie using the secret provided.
* @param value Cookie value
*/
unsignCookie(value: string): fastifyCookie.UnsignResult;
}
export type setCookieWrapper = (
name: string,
value: string,
options?: fastifyCookie.CookieSerializeOptions
) => FastifyReply;
interface FastifyReply {
/**
* Set response cookie
* @name setCookie
* @param name Cookie name
* @param value Cookie value
* @param options Serialize options
*/
setCookie(
name: string,
value: string,
options?: fastifyCookie.CookieSerializeOptions
): this;
/**
* @alias setCookie
*/
cookie(
name: string,
value: string,
options?: fastifyCookie.CookieSerializeOptions
): this;
/**
* clear response cookie
* @param name Cookie name
* @param options Serialize options
*/
clearCookie(
name: string,
options?: fastifyCookie.CookieSerializeOptions
): this;
/**
* Unsigns the specified cookie using the secret provided.
* @param value Cookie value
*/
unsignCookie(value: string): fastifyCookie.UnsignResult;
}
}
type FastifyCookiePlugin = FastifyPluginCallback<
NonNullable<fastifyCookie.FastifyCookieOptions>
>;
declare namespace fastifyCookie {
interface SignerBase {
sign: (value: string) => string;
unsign: (input: string) => UnsignResult;
}
export class Signer implements SignerBase {
constructor (secrets: string | Array<string>, algorithm?: string)
sign: (value: string) => string;
unsign: (input: string) => UnsignResult;
}
export interface CookieSerializeOptions {
domain?: string;
encode?(val: string): string;
expires?: Date;
httpOnly?: boolean;
maxAge?: number;
path?: string;
priority?: "low" | "medium" | "high";
sameSite?: boolean | "lax" | "strict" | "none";
secure?: boolean;
signed?: boolean;
}
export interface FastifyCookieOptions {
secret?: string | string[] | Signer;
parseOptions?: fastifyCookie.CookieSerializeOptions;
}
export type Sign = (value: string, secret: string, algorithm?: string) => string;
export type Unsign = (input: string, secret: string, algorithm?: string) => UnsignResult;
export type SignerFactory = (secrets: string | Array<string>, algorithm?: string) => SignerBase;
export interface UnsignResult {
valid: boolean;
renew: boolean;
value: string | null;
}
export const signerFactory: SignerFactory;
export const sign: Sign;
export const unsign: Unsign;
export interface FastifyCookie extends FastifyCookiePlugin {
signerFactory: SignerFactory;
Signer: Signer;
sign: Sign;
unsign: Unsign;
}
export const fastifyCookie: FastifyCookie;
export interface FastifyCookieOptions {
secret?: string | string[] | SignerBase;
algorithm?: string;
parseOptions?: CookieSerializeOptions;
}
export { fastifyCookie as default };
}
declare function fastifyCookie(
...params: Parameters<FastifyCookiePlugin>
): ReturnType<FastifyCookiePlugin>;
export = fastifyCookie;