autumn-js
Version:
Autumn JS Library
81 lines (79 loc) • 2.53 kB
JavaScript
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
};