UNPKG

@fal-ai/serverless-proxy

Version:

Deprecation note: this library has been deprecated in favor of @fal-ai/server-proxy

68 lines 2.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.route = exports.handler = exports.PROXY_ROUTE = void 0; const server_1 = require("next/server"); const index_1 = require("./index"); /** * The default Next API route for the fal.ai client proxy. */ exports.PROXY_ROUTE = index_1.DEFAULT_PROXY_ROUTE; /** * The Next API route handler for the fal.ai client proxy. * Use it with the /pages router in Next.js. * * Note: the page routers proxy doesn't support streaming responses. * * @param request the Next API request object. * @param response the Next API response object. * @returns a promise that resolves when the request is handled. */ const handler = async (request, response) => { return (0, index_1.handleRequest)({ id: "nextjs-page-router", method: request.method || "POST", getRequestBody: async () => JSON.stringify(request.body), getHeaders: () => request.headers, getHeader: (name) => request.headers[name], sendHeader: (name, value) => response.setHeader(name, value), respondWith: (status, data) => response.status(status).json(data), sendResponse: async (res) => { if (res.headers.get("content-type")?.includes("application/json")) { return response.status(res.status).json(await res.json()); } return response.status(res.status).send(await res.text()); }, }); }; exports.handler = handler; /** * The Next API route handler for the fal.ai client proxy on App Router apps. * * @param request the Next API request object. * @returns a promise that resolves when the request is handled. */ async function routeHandler(request) { // eslint-disable-next-line @typescript-eslint/no-explicit-any const responseHeaders = {}; // check if response if from a streaming request return await (0, index_1.handleRequest)({ id: "nextjs-app-router", method: request.method, getRequestBody: async () => request.text(), getHeaders: () => (0, index_1.fromHeaders)(request.headers), getHeader: (name) => request.headers.get(name), sendHeader: (name, value) => (responseHeaders[name] = value), respondWith: (status, data) => server_1.NextResponse.json(data, { status, headers: responseHeaders, }), sendResponse: index_1.responsePassthrough, }); } exports.route = { handler: routeHandler, GET: routeHandler, POST: routeHandler, PUT: routeHandler, }; //# sourceMappingURL=nextjs.js.map