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
			
		
		
			
		
	
	
					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;
							 |