diff --git a/app/build.ts b/app/build.ts index 6e00e61..ab66688 100644 --- a/app/build.ts +++ b/app/build.ts @@ -173,3 +173,9 @@ await tsup.build({ await tsup.build({ ...baseConfig("bun") }); + +await tsup.build({ + ...baseConfig("node"), + platform: "node", + format: ["esm", "cjs"] +}); diff --git a/app/src/adapter/nextjs/nextjs.adapter.ts b/app/src/adapter/nextjs/nextjs.adapter.ts index b8565d9..a888210 100644 --- a/app/src/adapter/nextjs/nextjs.adapter.ts +++ b/app/src/adapter/nextjs/nextjs.adapter.ts @@ -1,6 +1,5 @@ import type { IncomingMessage, ServerResponse } from "node:http"; import { Api, App, type CreateAppConfig } from "bknd"; -import { isDebug } from "bknd/core"; import { nodeRequestToRequest } from "../index"; type GetServerSidePropsContext = { @@ -46,7 +45,7 @@ function getCleanRequest(req: Request) { let app: App; export function serve(config: CreateAppConfig) { return async (req: Request) => { - if (!app || isDebug()) { + if (!app) { app = App.create(config); await app.build(); } diff --git a/app/src/adapter/node/index.ts b/app/src/adapter/node/index.ts index ef19c09..5360ddb 100644 --- a/app/src/adapter/node/index.ts +++ b/app/src/adapter/node/index.ts @@ -1,10 +1,8 @@ -import { readFile } from "node:fs/promises"; import path from "node:path"; import { serve as honoServe } from "@hono/node-server"; import { serveStatic } from "@hono/node-server/serve-static"; import { App, type CreateAppConfig } from "bknd"; import { LibsqlConnection } from "bknd/data"; -import type { Manifest } from "vite"; async function getConnection(conn?: CreateAppConfig["connection"]) { if (conn) { @@ -26,7 +24,6 @@ async function getConnection(conn?: CreateAppConfig["connection"]) { export type NodeAdapterOptions = { relativeDistPath?: string; - viteManifest?: Manifest; port?: number; hostname?: string; listener?: Parameters[1]; @@ -51,22 +48,16 @@ export function serve(_config: Partial = {}, options: NodeAdapt connection }); - const viteManifest = - options.viteManifest ?? - JSON.parse(await readFile(path.resolve(root, ".vite/manifest.json"), "utf-8")); - app.emgr.on( "app-built", async () => { app.modules.server.get( - "/assets/*", + "/*", serveStatic({ root }) ); - app.registerAdminController({ - viteManifest - }); + app.registerAdminController(); }, "sync" ); diff --git a/docs/integration/nextjs.mdx b/docs/integration/nextjs.mdx index 408fb8e..898568b 100644 --- a/docs/integration/nextjs.mdx +++ b/docs/integration/nextjs.mdx @@ -12,10 +12,10 @@ Install bknd as a dependency: ``` tsx // pages/api/[...route].ts import { serve } from "bknd/adapter/nextjs"; -import type { PageConfig } from "next"; -export const config: PageConfig = { - runtime: "edge" +export const config = { + runtime: "experimental-edge", + unstable_allowDynamic: ["**/*.js"] }; export default serve({ diff --git a/examples/nextjs/src/pages/api/[...route].ts b/examples/nextjs/src/pages/api/[...route].ts index 17179a5..5455c9e 100644 --- a/examples/nextjs/src/pages/api/[...route].ts +++ b/examples/nextjs/src/pages/api/[...route].ts @@ -1,8 +1,12 @@ import { serve } from "bknd/adapter/nextjs"; -import type { PageConfig } from "next"; -export const config: PageConfig = { - runtime: "edge" +export const config = { + runtime: "experimental-edge", + // add a matcher for bknd dist to allow dynamic otherwise build may fail. + // inside this repo it's '../../app/dist/index.js', outside probably inside node_modules + // see https://github.com/vercel/next.js/issues/51401 + // and https://github.com/vercel/next.js/pull/69402 + unstable_allowDynamic: ["**/*.js"] }; export default serve({