autumn-js
Version:
Autumn JS Library
85 lines (83 loc) • 2.37 kB
JavaScript
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/supabase.ts
import { findRoute } from "rou3";
function autumnHandler(options) {
const secretKey = Deno.env.get("AUTUMN_SECRET_KEY");
if (!secretKey) {
throw new Error(
`AUTUMN_SECRET_KEY not found. Please add it to your secrets in supabase: https://supabase.com/dashboard/project/<PROJECT_ID>/functions/secrets`
);
}
const autumn = new Autumn({
url: autumnApiUrl,
secretKey
});
const router = createRouterWithOptions();
return async function handler(request) {
const method = request.method;
const url = new URL(request.url);
const searchParams = Object.fromEntries(url.searchParams);
let pathname = url.pathname;
if (!pathname.includes("/api/autumn")) {
return new Response(JSON.stringify({ error: "Not found" }), {
status: 404,
headers: {
...options.corsHeaders,
"Content-Type": "application/json"
}
});
}
const autumnIndex = pathname.indexOf("/api/autumn");
pathname = pathname.substring(autumnIndex);
const match = findRoute(router, method, pathname);
if (!match) {
return new Response(JSON.stringify({ error: "Not found" }), {
status: 404,
headers: {
...options.corsHeaders,
"Content-Type": "application/json"
}
});
}
const { data, params: pathParams } = match;
const { handler: routeHandler } = data;
let body = null;
if (method === "POST" || method === "PUT" || method === "PATCH") {
try {
body = await request.json();
} catch (error) {
}
}
const result = await routeHandler({
autumn,
body,
path: url.pathname,
getCustomer: async () => await options.identify(request),
pathParams,
searchParams
});
return new Response(JSON.stringify(result.body), {
status: result.statusCode,
headers: {
...options.corsHeaders,
"Content-Type": "application/json"
}
});
};
}
export {
autumnHandler
};