turborepo-remote-cache
Version:
Turborepo remote cache server
21 lines • 2.3 kB
JavaScript
import { badRequest, unauthorized } from '@hapi/boom';
import fp from 'fastify-plugin';
export default fp(async (fastify) => {
const allowedTokens = fastify.config.TURBO_TOKEN;
if (!(Array.isArray(allowedTokens) && allowedTokens.length)) {
throw new Error(`'allowedTokens' options must be a string[], ${typeof allowedTokens} provided instead`);
}
const tokens = new Set(allowedTokens);
fastify.addHook('onRequest', async function (request) {
let authHeader = request.headers.authorization;
authHeader = Array.isArray(authHeader) ? authHeader.join() : authHeader;
if (!authHeader) {
throw badRequest('Missing Authorization header');
}
const [, token] = authHeader.split('Bearer ');
if (!tokens.has(token)) {
throw unauthorized('Invalid authorization token');
}
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BsdWdpbnMvcmVtb3RlLWNhY2hlL2F1dGgvc3RhdGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXJELE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRS9CLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUF3QixFQUFFLEVBQUU7SUFDbkQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUE7SUFDaEQsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxNQUFNLElBQUksS0FBSyxDQUNiLCtDQUErQyxPQUFPLGFBQWEsbUJBQW1CLENBQ3ZGLENBQUE7SUFDSCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUE7SUFFckMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLE9BQU87UUFDbEQsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUE7UUFDOUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFBO1FBRXZFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixNQUFNLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO1FBQ2xELENBQUM7UUFDRCxNQUFNLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxZQUFZLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtRQUNuRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSJ9