UNPKG

2.65 kBTypeScriptView Raw
1// Type definitions for express-jwt 6.0
2// Project: https://www.npmjs.org/package/express-jwt
3// Definitions by: Wonshik Kim <https://github.com/wokim>
4// Sl1MBoy <https://github.com/Sl1MBoy>
5// Milan Mimra <https://github.com/milan-mimra>
6// Piotr Błażejewicz <https://github.com/peterblazejewicz>
7// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
8
9import express = require('express');
10import unless = require('express-unless');
11
12export = jwt;
13
14declare function jwt(options: jwt.Options): jwt.RequestHandler;
15declare namespace jwt {
16 type secretType = string | Buffer;
17 type LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>);
18
19 type ErrorCode = LiteralUnion<
20 'revoked_token' | 'invalid_token' | 'credentials_bad_scheme' | 'credentials_bad_format' | 'credentials_required'
21 >;
22
23 interface SecretCallbackLong {
24 (req: express.Request, header: any, payload: any, done: (err: any, secret?: secretType) => void): void;
25 }
26 interface SecretCallback {
27 (req: express.Request, payload: any, done: (err: any, secret?: secretType) => void): void;
28 }
29 interface IsRevokedCallback {
30 (req: express.Request, payload: any, done: (err: any, revoked?: boolean) => void): void;
31 }
32 interface GetTokenCallback {
33 (req: express.Request): any;
34 }
35 interface Options {
36 /**
37 * The algorithms parameter is required to prevent potential downgrade attacks when providing third party libraries as secrets.
38 * {@link https://github.com/auth0/express-jwt/blob/5fb8c88067b9448d746d04ab60ad3b1996c7e310/README.md#required-parameters}
39 */
40 algorithms: string[];
41 secret: secretType | SecretCallback | SecretCallbackLong;
42 userProperty?: string | undefined;
43 credentialsRequired?: boolean | undefined;
44 isRevoked?: IsRevokedCallback | undefined;
45 requestProperty?: string | undefined;
46 getToken?: GetTokenCallback | undefined;
47 [property: string]: any;
48 }
49 interface RequestHandler extends express.RequestHandler {
50 unless: typeof unless;
51 }
52
53 class UnauthorizedError extends Error {
54 status: number;
55 message: string;
56 name: 'UnauthorizedError';
57 code: ErrorCode;
58 inner: { message: string };
59
60 constructor(code: ErrorCode, error: { message: string });
61 }
62}
63
64declare global {
65 namespace Express {
66 // tslint:disable-next-line:no-empty-interface
67 interface User {}
68
69 interface Request {
70 user?: User | undefined;
71 }
72 }
73}