UNPKG

autumn-js

Version:

Autumn JS Library

70 lines (68 loc) 1.96 kB
import { secretKeyCheck } from "./chunk-UNZHJTEY.mjs"; import { createRouterWithOptions } from "./chunk-2RZ2FZX2.mjs"; import "./chunk-5EKNB4IJ.mjs"; import "./chunk-3OLXYDCU.mjs"; import "./chunk-K7JGEYUX.mjs"; import "./chunk-HHMIVOXX.mjs"; import "./chunk-5H6HVCOP.mjs"; import { Autumn } from "./chunk-IOSEAUDJ.mjs"; import "./chunk-45WVZY23.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(); let { found, error: resError } = secretKeyCheck(options?.secretKey); return async function(request, reply) { try { if (!found && !options.secretKey) { return reply.code(resError.statusCode).send(resError); } 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 };