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.
		
		
		
		
		
			
		
			
				
					177 lines
				
				6.4 KiB
			
		
		
			
		
	
	
					177 lines
				
				6.4 KiB
			| 
											3 years ago
										 | import { | ||
|  |   DecoderOptions, | ||
|  |   JwtHeader, | ||
|  |   KeyFetcher, | ||
|  |   SignerCallback, | ||
|  |   SignerOptions, | ||
|  |   VerifierCallback, | ||
|  |   VerifierOptions | ||
|  | } from 'fast-jwt' | ||
|  | import { | ||
|  |   FastifyPluginCallback, | ||
|  |   FastifyRequest | ||
|  | } from 'fastify' | ||
|  | 
 | ||
|  | declare module 'fastify' { | ||
|  |   interface FastifyInstance { | ||
|  |     jwt: fastifyJwt.JWT | ||
|  |   } | ||
|  | 
 | ||
|  |   interface FastifyReply { | ||
|  |     jwtSign(payload: fastifyJwt.SignPayloadType, options?: fastifyJwt.FastifyJwtSignOptions): Promise<string> | ||
|  |     jwtSign(payload: fastifyJwt.SignPayloadType, callback: SignerCallback): void | ||
|  |     jwtSign(payload: fastifyJwt.SignPayloadType, options: fastifyJwt.FastifyJwtSignOptions, callback: SignerCallback): void | ||
|  |     jwtSign(payload: fastifyJwt.SignPayloadType, options?: Partial<fastifyJwt.SignOptions>): Promise<string> | ||
|  |     jwtSign(payload: fastifyJwt.SignPayloadType, options: Partial<fastifyJwt.SignOptions>, callback: SignerCallback): void | ||
|  |   } | ||
|  | 
 | ||
|  |   interface FastifyRequest { | ||
|  |     jwtVerify<Decoded extends fastifyJwt.VerifyPayloadType>(options?: fastifyJwt.FastifyJwtVerifyOptions): Promise<Decoded> | ||
|  |     jwtVerify<Decoded extends fastifyJwt.VerifyPayloadType>(callback: VerifierCallback): void | ||
|  |     jwtVerify<Decoded extends fastifyJwt.VerifyPayloadType>(options: fastifyJwt.FastifyJwtVerifyOptions, callback: VerifierCallback): void | ||
|  |     jwtVerify<Decoded extends fastifyJwt.VerifyPayloadType>(options?: Partial<fastifyJwt.VerifyOptions>): Promise<Decoded> | ||
|  |     jwtVerify<Decoded extends fastifyJwt.VerifyPayloadType>(options: Partial<fastifyJwt.VerifyOptions>, callback: VerifierCallback): void | ||
|  |     jwtDecode<Decoded extends fastifyJwt.DecodePayloadType>(options?: fastifyJwt.FastifyJwtDecodeOptions): Promise<Decoded> | ||
|  |     jwtDecode<Decoded extends fastifyJwt.DecodePayloadType>(callback: fastifyJwt.DecodeCallback<Decoded>): void | ||
|  |     jwtDecode<Decoded extends fastifyJwt.DecodePayloadType>(options: fastifyJwt.FastifyJwtDecodeOptions, callback: fastifyJwt.DecodeCallback<Decoded>): void | ||
|  |     user: fastifyJwt.UserType | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | type FastifyJwt = FastifyPluginCallback<fastifyJwt.FastifyJWTOptions> | ||
|  | 
 | ||
|  | declare namespace fastifyJwt { | ||
|  | 
 | ||
|  |   /** | ||
|  |    * for declaration merging | ||
|  |    * @example | ||
|  |    * ```
 | ||
|  |    * declare module '@fastify/jwt' { | ||
|  |    *   interface FastifyJWT { | ||
|  |    *     payload: { name: string; email: string } | ||
|  |    *   } | ||
|  |    * } | ||
|  |    * ```
 | ||
|  |    * @example | ||
|  |    * ```
 | ||
|  |    * // With `formatUser`.
 | ||
|  |    * declare module '@fastify/jwt' { | ||
|  |    *   interface FastifyJWT { | ||
|  |    *     payload: { Name: string; e_mail: string } | ||
|  |    *     user: { name: string; email: string } | ||
|  |    *   } | ||
|  |    * } | ||
|  |    * ```
 | ||
|  |    */ | ||
|  |   export interface FastifyJWT { | ||
|  |     // payload: ...
 | ||
|  |     // user: ...
 | ||
|  |   } | ||
|  | 
 | ||
|  |   export type SignPayloadType = FastifyJWT extends { payload: infer T } | ||
|  |     ? T extends string | object | Buffer | ||
|  |     ? T | ||
|  |     : string | object | Buffer | ||
|  |     : string | object | Buffer | ||
|  | 
 | ||
|  |   export type UserType = FastifyJWT extends { user: infer T } | ||
|  |     ? T | ||
|  |     : SignPayloadType | ||
|  | 
 | ||
|  |   export type TokenOrHeader = JwtHeader | { header: JwtHeader; payload: any } | ||
|  | 
 | ||
|  |   export type Secret = string | Buffer | KeyFetcher | { key: Secret; passphrase: string } | ||
|  |     | ((request: FastifyRequest, tokenOrHeader: TokenOrHeader, cb: (e: Error | null, secret: string | Buffer | undefined) => void) => void) | ||
|  |     | ((request: FastifyRequest, tokenOrHeader: TokenOrHeader) => Promise<string | Buffer>) | ||
|  | 
 | ||
|  |   export type VerifyPayloadType = object | string | ||
|  |   export type DecodePayloadType = object | string | ||
|  | 
 | ||
|  |   export interface DecodeCallback<Decoded extends DecodePayloadType> { | ||
|  |     (err: Error, decoded: Decoded): void | ||
|  |   } | ||
|  | 
 | ||
|  |   export interface SignOptions extends Omit<SignerOptions, "expiresIn" | "notBefore"> { | ||
|  |     expiresIn: number | string; | ||
|  |     notBefore: number | string; | ||
|  |   } | ||
|  | 
 | ||
|  |   export interface VerifyOptions extends Omit<VerifierOptions, "maxAge"> { | ||
|  |     maxAge: number | string; | ||
|  |     onlyCookie: boolean; | ||
|  |   } | ||
|  | 
 | ||
|  |   export interface FastifyJWTOptions { | ||
|  |     secret: Secret | { public: Secret; private: Secret } | ||
|  |     decode?: Partial<DecoderOptions> | ||
|  |     sign?: Partial<SignOptions> | ||
|  |     verify?: Partial<VerifyOptions> & { extractToken?: (request: FastifyRequest) => string | void } | ||
|  |     cookie?: { | ||
|  |       cookieName: string, | ||
|  |       signed: boolean | ||
|  |     } | ||
|  |     messages?: { | ||
|  |       badRequestErrorMessage?: string | ||
|  |       badCookieRequestErrorMessage?: string | ||
|  |       noAuthorizationInHeaderMessage?: string | ||
|  |       noAuthorizationInCookieMessage?: string | ||
|  |       authorizationTokenExpiredMessage?: string | ||
|  |       authorizationTokenInvalid?: ((err: Error) => string) | string | ||
|  |       authorizationTokenUntrusted?: string | ||
|  |     } | ||
|  |     trusted?: (request: FastifyRequest, decodedToken: { [k: string]: any }) => boolean | Promise<boolean> | SignPayloadType | Promise<SignPayloadType> | ||
|  |     formatUser?: (payload: SignPayloadType) => UserType, | ||
|  |     jwtDecode?: boolean | string | ||
|  |     namespace?: string | ||
|  |     jwtVerify?: string | ||
|  |     jwtSign?: string | ||
|  |     decoratorName?: string | ||
|  |   } | ||
|  | 
 | ||
|  |   export interface JWT { | ||
|  |     options: { | ||
|  |       decode: Partial<DecoderOptions> | ||
|  |       sign: Partial<SignOptions> | ||
|  |       verify: Partial<VerifyOptions> | ||
|  |     } | ||
|  |     cookie?: { | ||
|  |       cookieName: string, | ||
|  |       signed: boolean | ||
|  |     } | ||
|  | 
 | ||
|  |     sign(payload: SignPayloadType, options?: Partial<SignOptions>): string | ||
|  |     sign(payload: SignPayloadType, callback: SignerCallback): void | ||
|  |     sign(payload: SignPayloadType, options: Partial<SignOptions>, callback: SignerCallback): void | ||
|  | 
 | ||
|  |     verify<Decoded extends VerifyPayloadType>(token: string, options?: Partial<VerifyOptions>): Decoded | ||
|  |     verify<Decoded extends VerifyPayloadType>(token: string, callback: VerifierCallback): void | ||
|  |     verify<Decoded extends VerifyPayloadType>(token: string, options: Partial<VerifyOptions>, callback: VerifierCallback): void | ||
|  | 
 | ||
|  |     decode<Decoded extends DecodePayloadType>(token: string, options?: Partial<DecoderOptions>): null | Decoded | ||
|  | 
 | ||
|  |     lookupToken(request: FastifyRequest, options?: FastifyJWTOptions['verify']): string | ||
|  |   } | ||
|  | 
 | ||
|  |   export type { JwtHeader } | ||
|  | 
 | ||
|  |   export interface FastifyJwtSignOptions { | ||
|  |     sign?: Partial<SignOptions> | ||
|  |   } | ||
|  | 
 | ||
|  |   export interface FastifyJwtVerifyOptions { | ||
|  |     decode: Partial<DecoderOptions> | ||
|  |     verify: Partial<VerifyOptions> | ||
|  |   } | ||
|  | 
 | ||
|  |   export interface FastifyJwtDecodeOptions { | ||
|  |     decode: Partial<DecoderOptions> | ||
|  |     verify: Partial<VerifyOptions> | ||
|  |   } | ||
|  | 
 | ||
|  |   export const fastifyJwt: FastifyJwt | ||
|  |   export { fastifyJwt as default } | ||
|  | } | ||
|  | 
 | ||
|  | declare function fastifyJwt(...params: Parameters<FastifyJwt>): ReturnType<FastifyJwt> | ||
|  | export = fastifyJwt |