autumn-js
Version:
Autumn JS Library
70 lines (68 loc) • 1.96 kB
JavaScript
import {
secretKeyCheck
} from "./chunk-UNZHJTEY.mjs";
import {
createRouterWithOptions
} from "./chunk-OFKRGNWA.mjs";
import "./chunk-HGB236VV.mjs";
import "./chunk-ZGI3AYWD.mjs";
import "./chunk-S46FBNO3.mjs";
import "./chunk-NCJ2TKEX.mjs";
import "./chunk-TUGNGQW2.mjs";
import "./chunk-UJBSJTAV.mjs";
import {
Autumn
} from "./chunk-UJN5NVTZ.mjs";
import "./chunk-SGEUXFOF.mjs";
import {
autumnApiUrl
} from "./chunk-KSG3E4Q2.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
};