import * as fs from 'fs' import { NextConfig } from 'next' import { findPagesDir } from 'next/dist/lib/find-pages-dir.js' import * as path from 'path' import { settleSync } from '../../shared/utils/async.utils' import { LoadedUnbodyConfig } from '../types' const routeHandler = ({ config }: { config: LoadedUnbodyConfig }) => ` import { Server } from 'unbody-nextra-service/build/server' const server = new Server({ apiKey: process.env.${config.env.apiKey} || "", projectId: process.env.${config.env.projectId} || "", sourceId: process.env.${config.env.sourceId} || "", assistant: { name: "${config.assistant.name}" || "Assistant", } }) const handler = server.handler export default handler `.slice(1) export const setupApi = ({ config, nextConfig, }: { nextConfig: NextConfig config: LoadedUnbodyConfig }) => { if (!config.setupApi) return const { pagesDir } = findPagesDir(config.projectDir) const apiRoute = path.join(pagesDir!, 'api/search.ts') settleSync(() => fs.mkdirSync(path.dirname(apiRoute), { recursive: true })) fs.writeFileSync(apiRoute, routeHandler({ config })) }