/** * This module allows to authenticate socket.io connections with JWTs. * This is especially if you do not want to use cookies in a single page application. */ /// declare module 'socketio-jwt' { /** * Defines possible errors for the secret-callback. */ interface ISocketIOError { readonly code: string; readonly message: string; } /** * Callback gets called, if secret is given dynamically. */ interface ISocketCallback { (err: ISocketIOError, success: string): void; } interface ISocketIOMiddleware { (socket: SocketIO.Socket, fn: (err?: any) => void): void; } interface IOptions { additional_auth?: (decoded: object, onSuccess: () => void, onError: (err: (string | ISocketIOError), code: string) => void) => void; callback?: (false | number); secret: (string | ((request: any, decodedToken: object, callback: ISocketCallback) => void)); encodedPropertyName?: string; decodedPropertyName?: string; auth_header_required?: boolean; handshake?: boolean; required?: boolean; timeout?: number; cookie?: string; } function authorize(options: IOptions/*, onConnection: Function*/): ISocketIOMiddleware; interface UnauthorizedError extends Error { readonly message: string; readonly inner: object; readonly data: { message: string, code: string, type: 'UnauthorizedError' } } var UnauthorizedError: { prototype: UnauthorizedError; new (code: string, error: { message: string }): UnauthorizedError; } /** * This is an augmented version of the SocketIO.Server. * It knows the 'authenticated' event and should be extended in future. * @see SocketIO.Server */ export interface JWTServer extends SocketIO.Server { /** * The event gets fired when a new connection is authenticated via JWT. * @param event The event being fired: 'authenticated' * @param listener A listener that should take one parameter of type Socket * @return The default '/' Namespace */ on(event: ('authenticated' | string), listener: (socket: SocketIO.Socket) => void): SocketIO.Namespace; } }