UNPKG

autumn-js

Version:

Autumn JS Library

81 lines (79 loc) 2.53 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 "./chunk-KSG3E4Q2.mjs"; import "./chunk-6DZX6EAA.mjs"; // src/libraries/backend/convex.ts import { findRoute } from "rou3"; function autumnHandler(options) { const router = createRouterWithOptions(); return options.httpAction(async (ctx, request) => { const headers = request.headers; if (headers.get("Origin") !== null && headers.get("Access-Control-Request-Method") !== null && headers.get("Access-Control-Request-Headers") !== null) { return new Response(null, { headers: new Headers({ // e.g. https://mywebsite.com, configured on your Convex dashboard "Access-Control-Allow-Origin": process.env.CLIENT_ORIGIN, "Access-Control-Allow-Methods": "POST", "Access-Control-Allow-Headers": "Content-Type, Digest", "Access-Control-Max-Age": "86400" }) }); } let { found, error: resError } = secretKeyCheck(options.secretKey); if (!found && !options.secretKey) { return Response.json(resError, { status: resError.statusCode }); } const method = request.method; const url = new URL(request.url); const searchParams = Object.fromEntries(url.searchParams); const pathname = url.pathname; const match = findRoute(router, method, pathname); if (!match) { return Response.json({ error: "Not found" }, { status: 404 }); } const { data, params: pathParams } = match; const { handler } = data; const autumn = new Autumn({ secretKey: options.secretKey || void 0, url: options.url }); let body = null; if (method === "POST" || method === "PUT" || method === "PATCH") { try { body = await request.json(); } catch (error) { } } const result = await handler({ autumn, body, path: url.pathname, getCustomer: async () => await options.identify(ctx, request), pathParams, searchParams }); return Response.json(result.body, { status: result.statusCode, headers: new Headers({ "Access-Control-Allow-Origin": process.env.CLIENT_ORIGIN, Vary: "origin" }) }); }); } export { autumnHandler };