@lokalise/fastify-extras
Version:
Opinionated set of fastify plugins, commonly used in Lokalise
41 lines • 1.47 kB
JavaScript
import { AuthFailedError } from '@lokalise/node-core';
import { EmptyTokenError } from '../errors/publicErrors.js';
export function generateJwtToken(jwt, payload, ttlInSeconds) {
return new Promise((resolve, reject) => {
jwt.sign(payload, { expiresIn: ttlInSeconds }, (err, encoded) => {
/* v8 ignore next 3 */
if (err) {
return reject(err);
}
/* v8 ignore next 3 */
if (!encoded) {
throw new EmptyTokenError();
}
resolve(encoded);
});
});
}
const hasCode = (error) => typeof error === 'object' && error !== null && 'code' in error;
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
export function decodeJwtToken(jwt, encodedToken) {
return new Promise((resolve, reject) => {
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
jwt.verify(encodedToken, (err, decoded) => {
/* v8 ignore next 3 */
if (err) {
return reject(err);
}
/* v8 ignore next 3 */
if (!decoded) {
throw new EmptyTokenError();
}
resolve(decoded);
});
}).catch((err) => {
if (hasCode(err) && err.code === 'FAST_JWT_INVALID_SIGNATURE') {
throw new AuthFailedError({ message: 'Auth error' });
}
throw err;
});
}
//# sourceMappingURL=tokenUtils.js.map