From 9e0382389ebf396c688a59c6021ea0b568a21838 Mon Sep 17 00:00:00 2001 From: Cameron Pak Date: Mon, 6 Apr 2026 07:34:25 -0500 Subject: [PATCH] Refactor web adapter to universal adapter Rename the web adapter to universal adapter to better reflect its framework-agnostic nature. This change involves updating package.json, file paths, and documentation. --- app/build.ts | 2 +- app/package.json | 10 +++++----- app/src/adapter/universal/index.ts | 1 + .../universal.adapter.spec.ts} | 6 +++--- .../universal.adapter.ts} | 0 app/src/adapter/web/index.ts | 1 - .../integration/(frameworks)/meta.json | 11 +--------- .../(frameworks)/{web.mdx => universal.mdx} | 20 +++++++++---------- .../integration/introduction.mdx | 8 ++++---- docs/content/docs/(documentation)/start.mdx | 8 ++++---- examples/qwik/bknd.config.ts | 2 +- examples/qwik/src/lib/bknd.ts | 2 +- 12 files changed, 31 insertions(+), 40 deletions(-) create mode 100644 app/src/adapter/universal/index.ts rename app/src/adapter/{web/web.adapter.spec.ts => universal/universal.adapter.spec.ts} (95%) rename app/src/adapter/{web/web.adapter.ts => universal/universal.adapter.ts} (100%) delete mode 100644 app/src/adapter/web/index.ts rename docs/content/docs/(documentation)/integration/(frameworks)/{web.mdx => universal.mdx} (92%) diff --git a/app/build.ts b/app/build.ts index c5f3c182..c6bbd72a 100644 --- a/app/build.ts +++ b/app/build.ts @@ -331,7 +331,7 @@ async function buildAdapters() { }), tsup.build({ - ...baseConfig("web"), + ...baseConfig("universal"), platform: "neutral", }), diff --git a/app/package.json b/app/package.json index a79edb0e..bb2bd042 100644 --- a/app/package.json +++ b/app/package.json @@ -233,10 +233,10 @@ "import": "./dist/adapter/nextjs/index.js", "require": "./dist/adapter/nextjs/index.js" }, - "./adapter/web": { - "types": "./dist/types/adapter/web/index.d.ts", - "import": "./dist/adapter/web/index.js", - "require": "./dist/adapter/web/index.js" + "./adapter/universal": { + "types": "./dist/types/adapter/universal/index.d.ts", + "import": "./dist/adapter/universal/index.js", + "require": "./dist/adapter/universal/index.js" }, "./adapter/nuxt": { "types": "./dist/types/adapter/nuxt/index.d.ts", @@ -297,7 +297,7 @@ "adapter/cloudflare": ["./dist/types/adapter/cloudflare/index.d.ts"], "adapter/vite": ["./dist/types/adapter/vite/index.d.ts"], "adapter/nextjs": ["./dist/types/adapter/nextjs/index.d.ts"], - "adapter/web": ["./dist/types/adapter/web/index.d.ts"], + "adapter/universal": ["./dist/types/adapter/universal/index.d.ts"], "adapter/nuxt": ["./dist/types/adapter/nuxt/index.d.ts"], "adapter/react-router": ["./dist/types/adapter/react-router/index.d.ts"], "adapter/bun": ["./dist/types/adapter/bun/index.d.ts"], diff --git a/app/src/adapter/universal/index.ts b/app/src/adapter/universal/index.ts new file mode 100644 index 00000000..ad0a33e8 --- /dev/null +++ b/app/src/adapter/universal/index.ts @@ -0,0 +1 @@ +export * from "./universal.adapter"; diff --git a/app/src/adapter/web/web.adapter.spec.ts b/app/src/adapter/universal/universal.adapter.spec.ts similarity index 95% rename from app/src/adapter/web/web.adapter.spec.ts rename to app/src/adapter/universal/universal.adapter.spec.ts index d29012fd..3b83fb0d 100644 --- a/app/src/adapter/web/web.adapter.spec.ts +++ b/app/src/adapter/universal/universal.adapter.spec.ts @@ -1,5 +1,5 @@ import { afterAll, beforeAll, describe, test, expect } from "bun:test"; -import { createBknd } from "./web.adapter"; +import { createBknd } from "./universal.adapter"; import { disableConsoleLog, enableConsoleLog } from "core/utils"; import { adapterTestSuite } from "adapter/adapter-test-suite"; import { bunTestRunner } from "adapter/bun/test"; @@ -7,7 +7,7 @@ import { bunTestRunner } from "adapter/bun/test"; beforeAll(disableConsoleLog); afterAll(enableConsoleLog); -describe("web adapter via createBknd", () => { +describe("universal adapter via createBknd", () => { adapterTestSuite(bunTestRunner, { makeApp: (options, args) => createBknd({ mode: "api", options }, args).getApp(), makeHandler: (options, args) => createBknd({ mode: "api", options: options ?? {} }, args).serve(), @@ -44,7 +44,7 @@ describe("web adapter via createBknd", () => { // ------------------------ MODE STANDALONE ------------------------ -describe("web adapter via createBknd in standalone mode", () => { +describe("universal adapter via createBknd in standalone mode", () => { adapterTestSuite(bunTestRunner, { makeApp: (options, args) => createBknd({ mode: "standalone", options }, args).getApp(), makeHandler: (options, args) => createBknd({ mode: "standalone", options: options ?? {} }, args).serve(), diff --git a/app/src/adapter/web/web.adapter.ts b/app/src/adapter/universal/universal.adapter.ts similarity index 100% rename from app/src/adapter/web/web.adapter.ts rename to app/src/adapter/universal/universal.adapter.ts diff --git a/app/src/adapter/web/index.ts b/app/src/adapter/web/index.ts deleted file mode 100644 index c536188d..00000000 --- a/app/src/adapter/web/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./web.adapter"; diff --git a/docs/content/docs/(documentation)/integration/(frameworks)/meta.json b/docs/content/docs/(documentation)/integration/(frameworks)/meta.json index fc6ca7fc..9284f30a 100644 --- a/docs/content/docs/(documentation)/integration/(frameworks)/meta.json +++ b/docs/content/docs/(documentation)/integration/(frameworks)/meta.json @@ -1,12 +1,3 @@ { - "pages": [ - "nextjs", - "react-router", - "astro", - "sveltekit", - "tanstack-start", - "web", - "vite", - "nuxt" - ] + "pages": ["nextjs", "react-router", "astro", "sveltekit", "tanstack-start", "universal", "vite", "nuxt"] } diff --git a/docs/content/docs/(documentation)/integration/(frameworks)/web.mdx b/docs/content/docs/(documentation)/integration/(frameworks)/universal.mdx similarity index 92% rename from docs/content/docs/(documentation)/integration/(frameworks)/web.mdx rename to docs/content/docs/(documentation)/integration/(frameworks)/universal.mdx index 8045125c..2fb62890 100644 --- a/docs/content/docs/(documentation)/integration/(frameworks)/web.mdx +++ b/docs/content/docs/(documentation)/integration/(frameworks)/universal.mdx @@ -1,14 +1,14 @@ --- -title: "Web Adapter" +title: "Universal Adapter" description: "Bring bknd to any web framework or runtime" tags: ["documentation"] --- -## What is the Web Adapter? +## What is the Universal Adapter? -The web adapter (`bknd/adapter/web`) is a framework/runtime agnostic adapter which can integrate `bknd` into **any** web framework or runtime — even ones without a dedicated adapter. +The universal adapter (`bknd/adapter/universal`) is a framework/runtime agnostic adapter which can integrate `bknd` into **any** web framework or runtime — even ones without a dedicated adapter. -**Use the web adapter when:** +**Use the universal adapter when:** - Your framework doesn't have a dedicated bknd adapter - You want full control over your server setup - You're building a custom server or edge function @@ -44,7 +44,7 @@ bun add bknd Start by creating a config file: ```typescript title="bknd.config.ts" -import type { Config } from "bknd/adapter/web"; +import type { Config } from "bknd/adapter/universal"; export default { connection: { @@ -60,7 +60,7 @@ Use `Config<"api">` when you are using a React-based framework otherwise use `Co ### Helper Singleton ```typescript title="lib/bknd.ts" -import { createBknd } from "bknd/adapter/web"; +import { createBknd } from "bknd/adapter/universal"; import config from "../bknd.config"; export const bknd = createBknd({ mode: "standalone", options: config }, process.env); @@ -112,7 +112,7 @@ No server-side admin configuration needed. The admin UI runs entirely in the bro For non-React frameworks or standalone servers, enable the admin controller: ```typescript title="src/bknd.ts" -import { createBknd } from "bknd/adapter/web"; +import { createBknd } from "bknd/adapter/universal"; import config from "../bknd.config"; export const bknd = createBknd({ mode: "standalone", options: config }, env); @@ -128,7 +128,7 @@ You'll also need to serve the admin's static assets (JS, CSS). Choose one of thr Use Hono's platform-specific `serveStatic` in `bknd.config.ts` to serve assets from `node_modules/bknd/dist/static/`: ```typescript title="bknd.config.ts" -import type { Config } from "bknd/adapter/web"; +import type { Config } from "bknd/adapter/universal"; import { serveStatic } from "hono/bun"; // or "@hono/node-server/serve-static" export default { @@ -173,7 +173,7 @@ Per-framework output paths: For environments without filesystem access: ```typescript title="bknd.config.ts" -import type { Config } from "bknd/adapter/web"; +import type { Config } from "bknd/adapter/universal"; import { serveStaticViaImport } from "bknd/adapter"; export default { @@ -274,4 +274,4 @@ export type Config = Extract< Parameters[0], { mode: T } >['options']; -``` \ No newline at end of file +``` diff --git a/docs/content/docs/(documentation)/integration/introduction.mdx b/docs/content/docs/(documentation)/integration/introduction.mdx index db42cd17..0838a4d2 100644 --- a/docs/content/docs/(documentation)/integration/introduction.mdx +++ b/docs/content/docs/(documentation)/integration/introduction.mdx @@ -45,10 +45,10 @@ bknd seamlessly integrates with popular frameworks, allowing you to use what you href="/integration/nuxt" /> -} - title="Web Adapter" - href="/integration/web" +} + title="Universal Web Adapter" + href="/integration/universal" /> diff --git a/docs/content/docs/(documentation)/start.mdx b/docs/content/docs/(documentation)/start.mdx index 495df0c8..66878173 100644 --- a/docs/content/docs/(documentation)/start.mdx +++ b/docs/content/docs/(documentation)/start.mdx @@ -168,10 +168,10 @@ Pick your framework or runtime to get started. href="/integration/aws" /> -} - title="Web Adapter" - href="/integration/web" +} + title="Universal Web Adapter" + href="/integration/universal" />