autumn-js
Version:
Autumn JS Library
94 lines (92 loc) • 2.64 kB
JavaScript
import {
secretKeyCheck
} from "./chunk-UNZHJTEY.mjs";
import {
createRouterWithOptions
} from "./chunk-4MEEJLXG.mjs";
import "./chunk-PO4EL4BW.mjs";
import "./chunk-MHIUO3ST.mjs";
import "./chunk-USQ76FYI.mjs";
import "./chunk-LOSIWWM2.mjs";
import "./chunk-35N7BIAE.mjs";
import {
Autumn
} from "./chunk-QOJMX7ML.mjs";
import "./chunk-2TEL6LR5.mjs";
import {
autumnApiUrl
} from "./chunk-KSG3E4Q2.mjs";
// src/libraries/backend/next.ts
import { findRoute } from "rou3";
import { NextResponse } from "next/server";
function autumnHandler(options) {
const router = createRouterWithOptions();
async function handler(request, response) {
let { found, error: resError } = secretKeyCheck(options.secretKey);
const isPagesRouter = response && "query" in request && "cookies" in request;
if (!found) {
if (isPagesRouter) {
return response.status(resError.statusCode).json(resError);
} else {
return NextResponse.json(resError, { status: resError.statusCode });
}
}
const autumn = new Autumn({
secretKey: options.secretKey || void 0,
url: options.url || autumnApiUrl
});
if (!found) {
if (isPagesRouter) {
return response.status(500).json(resError);
} else {
return NextResponse.json(resError, { status: 500 });
}
}
const method = request.method;
let url;
if (!request.url.includes("http")) {
url = new URL(request.url, "http://localhost:3000");
} else {
url = new URL(request.url);
}
const searchParams = Object.fromEntries(url.searchParams);
const pathname = url.pathname;
const match = findRoute(router, method, pathname);
if (!match) {
if (isPagesRouter) {
return response.status(404).json({ error: "Not found" });
} else {
return NextResponse.json({ error: "Not found" }, { status: 404 });
}
}
const { data, params: pathParams } = match;
const { handler: handler2 } = data;
let body = null;
if (method === "POST" || method === "PUT" || method === "PATCH") {
try {
body = await request.json();
} catch (error) {
}
}
const result = await handler2({
autumn,
body,
path: url.pathname,
getCustomer: async () => await options.identify(request),
pathParams,
searchParams
});
if (isPagesRouter) {
return response.status(result.statusCode).json(result.body);
} else {
return NextResponse.json(result.body, { status: result.statusCode });
}
}
return {
GET: handler,
POST: handler
};
}
export {
autumnHandler
};