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