From 8436248134891bd5e3db80ec68529036174b7641 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Sun, 16 Nov 2025 01:49:42 +0000 Subject: [PATCH] Build script to bundle API functions with esbuild cgen-529e81f9741d4c52b961b1d043cd2707 --- build-api.js | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 build-api.js diff --git a/build-api.js b/build-api.js new file mode 100644 index 00000000..7137b812 --- /dev/null +++ b/build-api.js @@ -0,0 +1,47 @@ +#!/usr/bin/env node +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; +import { execSync } from "child_process"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +// First, copy API files to root +console.log("Copying API files..."); +const srcApi = path.resolve(__dirname, "api"); +const destApi = path.resolve(__dirname, "..", "api"); + +function copyDir(src, dest) { + if (fs.existsSync(dest)) { + fs.rmSync(dest, { recursive: true, force: true }); + } + fs.mkdirSync(dest, { recursive: true }); + + const entries = fs.readdirSync(src, { withFileTypes: true }); + for (const entry of entries) { + const srcPath = path.join(src, entry.name); + const destPath = path.join(dest, entry.name); + + if (entry.isDirectory()) { + copyDir(srcPath, destPath); + } else { + fs.copyFileSync(srcPath, destPath); + } + } +} + +copyDir(srcApi, destApi); +console.log(`✓ API files copied to ${destApi}`); + +// Now bundle each API route with esbuild +console.log("Bundling API routes with esbuild..."); +try { + execSync(`npx esbuild ${destApi}/**/*.ts --platform=node --target=es2020 --format=esm --outdir=${destApi} --allow-overwrite --external:@vercel/node --external:@supabase/supabase-js`, { + cwd: __dirname, + stdio: "inherit", + }); + console.log("✓ API routes bundled successfully"); +} catch (error) { + console.error("Error bundling API routes:", error.message); + process.exit(1); +}