turborepo-remote-cache
Version:
Turborepo remote cache server
68 lines • 5.63 kB
JavaScript
import * as fs from 'node:fs';
import { isBoom } from '@hapi/boom';
import Fastify from 'fastify';
import hyperid from 'hyperid';
import { env } from './env.js';
import { logger } from './logger.js';
import config from './plugins/config.js';
import remoteCache from './plugins/remote-cache/index.js';
const uuid = hyperid({ urlSafe: true });
export function createApp(options = {}) {
const SSL_CERT_PATH = env.get().SSL_CERT_PATH;
const SSL_KEY_PATH = env.get().SSL_KEY_PATH;
const isHttps = SSL_CERT_PATH &&
SSL_KEY_PATH &&
fs.existsSync(SSL_CERT_PATH) &&
fs.existsSync(SSL_KEY_PATH);
const fastifyOptions = {
...options,
...(env.get().HTTP2 ? { http2: true } : {}),
...(isHttps
? {
https: {
key: fs.readFileSync(SSL_KEY_PATH),
cert: fs.readFileSync(SSL_CERT_PATH),
},
}
: {}),
};
const hasConfiguredLogger = 'logger' in fastifyOptions || 'loggerInstance' in fastifyOptions;
if (!hasConfiguredLogger) {
fastifyOptions.loggerInstance = logger;
}
const app = Fastify({
genReqId: () => uuid(),
...fastifyOptions,
});
app.register(config, { overrides: options.configOverrides }).after(() => {
app.register(remoteCache, {
provider: app.config.STORAGE_PROVIDER,
});
});
app.get('/favicon.ico', {
logLevel: 'silent',
handler: (request, reply) => {
reply.code(204).send();
},
});
app.setErrorHandler((err, request, reply) => {
if (err.validation) {
reply.log.warn(err);
reply.code(400).send({ message: err.message });
}
else if (isBoom(err)) {
reply.log.warn(err);
reply
.code(err.output.statusCode)
.send(err.data != null
? { message: err.message, ...err.data }
: { message: err.output.payload.message });
}
else {
request.log.error(err);
reply.code(500).send({ message: err.message });
}
});
return app;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sT0FBa0QsTUFBTSxTQUFTLENBQUE7QUFDeEUsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFBO0FBQzdCLE9BQU8sRUFBVSxHQUFHLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwQyxPQUFPLE1BQU0sTUFBTSxxQkFBcUIsQ0FBQTtBQUN4QyxPQUFPLFdBQVcsTUFBTSxpQ0FBaUMsQ0FBQTtBQUV6RCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUV2QyxNQUFNLFVBQVUsU0FBUyxDQUN2QixVQUF3RSxFQUFFO0lBRTFFLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUE7SUFDN0MsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQTtJQUMzQyxNQUFNLE9BQU8sR0FDWCxhQUFhO1FBQ2IsWUFBWTtRQUNaLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUE7SUFFN0IsTUFBTSxjQUFjLEdBQXlCO1FBQzNDLEdBQUcsT0FBTztRQUNWLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzNDLEdBQUcsQ0FBQyxPQUFPO1lBQ1QsQ0FBQyxDQUFDO2dCQUNFLEtBQUssRUFBRTtvQkFDTCxHQUFHLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUM7b0JBQ2xDLElBQUksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztpQkFDckM7YUFDRjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDUixDQUFBO0lBRUQsTUFBTSxtQkFBbUIsR0FDdkIsUUFBUSxJQUFJLGNBQWMsSUFBSSxnQkFBZ0IsSUFBSSxjQUFjLENBQUE7SUFLbEUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekIsY0FBYyxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUE7SUFDeEMsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQztRQUNsQixRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFO1FBQ3RCLEdBQUcsY0FBYztLQUNsQixDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ3RFLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFO1lBQ3hCLFFBQVEsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQjtTQUN0QyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtJQUVGLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFO1FBQ3RCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMxQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ3hCLENBQUM7S0FDRixDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUMxQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNuQixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNuQixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUNoRCxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNuQixLQUFLO2lCQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDM0IsSUFBSSxDQUNILEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSTtnQkFDZCxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FDNUMsQ0FBQTtRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDdEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDaEQsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDIn0=