UNPKG

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