UNPKG

autumn-js

Version:
94 lines (92 loc) 2.64 kB
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 };