UNPKG

turborepo-remote-cache

Version:
72 lines 6.13 kB
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 if (err.statusCode != null && err.statusCode < 500) { reply.log.warn(err); reply.code(err.statusCode).send({ message: err.message }); } else { request.log.error(err); reply.code(500).send({ message: err.message }); } }); return app; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUM3QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sT0FJTixNQUFNLFNBQVMsQ0FBQTtBQUNoQixPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUE7QUFDN0IsT0FBTyxFQUFVLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFBO0FBQ3hDLE9BQU8sV0FBVyxNQUFNLGlDQUFpQyxDQUFBO0FBRXpELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBRXZDLE1BQU0sVUFBVSxTQUFTLENBQ3ZCLFVBQXdFLEVBQUU7SUFFMUUsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQTtJQUM3QyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFBO0lBQzNDLE1BQU0sT0FBTyxHQUNYLGFBQWE7UUFDYixZQUFZO1FBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7UUFDNUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUU3QixNQUFNLGNBQWMsR0FBeUI7UUFDM0MsR0FBRyxPQUFPO1FBQ1YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0MsR0FBRyxDQUFDLE9BQU87WUFDVCxDQUFDLENBQUM7Z0JBQ0Us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