UNPKG

autumn-js

Version:

Autumn JS Library

61 lines (59 loc) 1.66 kB
import { createRouterWithOptions } from "./chunk-FRL4IWBU.mjs"; import "./chunk-QXJ7YDTB.mjs"; import "./chunk-NDN25XDG.mjs"; import "./chunk-NDS3EHT3.mjs"; import "./chunk-C2YFOJYP.mjs"; import { Autumn } from "./chunk-W63TY2DI.mjs"; import { autumnApiUrl } from "./chunk-KSG3E4Q2.mjs"; import "./chunk-6DZX6EAA.mjs"; // src/libraries/backend/fastify.ts import { findRoute } from "rou3"; function autumnHandler(options) { const autumn = new Autumn({ url: autumnApiUrl, version: options.version }); const router = createRouterWithOptions(); return async function(request, reply) { try { const url = new URL(request.url, `http://${request.headers.host}`); const path = url.pathname; const searchParams = Object.fromEntries( new URLSearchParams(request.query) ); const match = findRoute(router, request.method, path); if (!match) { return reply.code(404).send({ error: "Not found" }); } const { data, params: pathParams } = match; const { handler } = data; let body = null; if (["POST", "PUT", "PATCH"].includes(request.method)) { body = request.body; } const result = await handler({ autumn, body, path, pathParams, searchParams, getCustomer: async () => { return await options.identify(request); } }); return reply.code(result.statusCode).send(result.body); } catch (error) { console.error("Error handling Autumn request:", error); return reply.code(500).send({ error: "Internal server error" }); } }; } export { autumnHandler };