@fal-ai/serverless-proxy
Version:
Deprecation note: this library has been deprecated in favor of @fal-ai/server-proxy
68 lines • 2.59 kB
JavaScript
;
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