import IDTokenVerifier from 'idtoken-verifier'; interface AsyncTokenVerifierOptions { domain: string; client_id: string; } interface VerifyOptions { id_token: string; nonce: string; } export default class AsyncTokenVerifier { verifier: any; constructor(private options: AsyncTokenVerifierOptions) { this.verifier = new IDTokenVerifier({ issuer: `https://${this.options.domain}/`, audience: this.options.client_id }); } public async verify(options: VerifyOptions) { return new Promise((res, rej) => { this.verifier.verify( options.id_token, options.nonce, (error, payload) => { if (error) { return rej(error); } res(payload); } ); }); } }