import * as jwt from 'jsonwebtoken';
async function verifyMembershipToken(params: {
    token?: string;
    secret: string;
}): Promise<any> {
    let result: any;
    const { secret, token } = params;

    if (typeof token === 'string' && token.length > 0) {
        try {
            result = await new Promise<any>((resolve, reject) => {
                jwt.verify(
                    token,
                    secret,
                    {
                        // issuer: credentials.jwt.issuer,
                        // ...(Array.isArray(params.audience)) ? { audience: params.audience } : undefined
                    },
                    (err, decoded: any) => {
                        if (err instanceof Error) {
                            reject(err);
                        } else {
                            resolve(decoded);
                        }
                    });
            });
        } catch (error) {
            throw error;
        }
    } else {
        throw new Error('Membership token');
    }

    return result;
}

verifyMembershipToken({
    token: 'xxx',
    secret: 'xxx'
})
    // tslint:disable-next-line:no-console
    .then(console.log)
    // tslint:disable-next-line:no-console
    .catch(console.error);
