test: init e2e/smoke (#4225)

This commit is contained in:
Alex Yang
2025-08-25 17:29:27 -07:00
committed by GitHub
parent e1552bebee
commit 8c4165e958
13 changed files with 349 additions and 109 deletions

63
.github/workflows/e2e.yml vendored Normal file
View File

@@ -0,0 +1,63 @@
name: E2E
on:
push:
branches: [ main, canary ]
pull_request:
jobs:
smoke:
name: Smoke test
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
with:
fetch-depth: 0
- name: Cache turbo build setup
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
restore-keys: |
${{ runner.os }}-turbo-
- uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 22.x
registry-url: 'https://registry.npmjs.org'
cache: pnpm
- name: Install
run: pnpm install
- name: Build
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
TURBO_REMOTE_ONLY: true
run: pnpm build
- name: Start Docker Containers
run: |
docker compose up -d
# Wait for services to be ready (optional)
sleep 10
- uses: oven-sh/setup-bun@v2
- uses: denoland/setup-deno@v2
with:
deno-version: v2.x
- name: Smoke
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ vars.TURBO_TEAM || github.repository_owner }}
TURBO_REMOTE_ONLY: true
run: pnpm e2e:smoke
- name: Stop Docker Containers
run: docker compose down

13
e2e/smoke/package.json Normal file
View File

@@ -0,0 +1,13 @@
{
"name": "smoke",
"type": "module",
"dependencies": {
"better-auth": "workspace:*"
},
"devDependencies": {
"@types/node": "^24.3.0"
},
"scripts": {
"e2e:smoke": "node --test ./test/*.spec.ts"
}
}

View File

@@ -0,0 +1,49 @@
import { describe, it } from "node:test";
import { spawn } from "node:child_process";
import { fileURLToPath } from "node:url";
import { join } from "node:path";
import assert from "node:assert";
const fixturesDir = fileURLToPath(new URL("./fixtures", import.meta.url));
describe("(bun) simple server", () => {
it("run server", async (t) => {
const cp = spawn("bun", [join(fixturesDir, "bun-simple.ts")], {
stdio: "pipe",
});
t.after(() => {
cp.kill("SIGINT");
});
cp.stdout.on("data", (data) => {
console.log(data.toString());
});
cp.stderr.on("data", (data) => {
console.error(data.toString());
});
const port = await new Promise<number>((resolve) => {
cp.stdout.once("data", (data) => {
// Bun outputs colored string, we need to remove it
const port = +data.toString().replace(/\u001b\[[0-9;]*m/g, "");
assert.ok(port > 0);
assert.ok(!isNaN(port));
assert.ok(isFinite(port));
resolve(port);
});
});
const response = await fetch(
`http://localhost:${port}/api/auth/sign-up/email`,
{
method: "POST",
body: JSON.stringify({
email: "test-2@test.com",
password: "password",
name: "test-2",
}),
headers: {
"content-type": "application/json",
},
},
);
assert.ok(response.ok);
});
});

View File

@@ -0,0 +1,48 @@
import { describe, it } from "node:test";
import { spawn } from "node:child_process";
import { fileURLToPath } from "node:url";
import { join } from "node:path";
import assert from "node:assert";
const fixturesDir = fileURLToPath(new URL("./fixtures", import.meta.url));
describe("(deno) simple server", () => {
it("run server", async (t) => {
const cp = spawn("deno", ["-A", join(fixturesDir, "deno-simple.ts")], {
stdio: "pipe",
});
t.after(() => {
cp.kill("SIGINT");
});
cp.stdout.on("data", (data) => {
console.log(data.toString());
});
cp.stderr.on("data", (data) => {
console.error(data.toString());
});
const port = await new Promise<number>((resolve) => {
cp.stdout.once("data", (data) => {
const port = +data.toString().split(":")[2].split("/")[0];
assert.ok(port > 0);
assert.ok(!isNaN(port));
assert.ok(isFinite(port));
resolve(port);
});
});
const response = await fetch(
`http://localhost:${port}/api/auth/sign-up/email`,
{
method: "POST",
body: JSON.stringify({
email: "test-2@test.com",
password: "password",
name: "test-2",
}),
headers: {
"content-type": "application/json",
},
},
);
assert.ok(response.ok);
});
});

27
e2e/smoke/test/fixtures/bun-simple.ts vendored Normal file
View File

@@ -0,0 +1,27 @@
import { betterAuth } from "better-auth";
import Database from "bun:sqlite";
import { getMigrations } from "better-auth/db";
const database = new Database(":memory:");
export const auth = betterAuth({
baseURL: "http://localhost:4000",
database,
emailAndPassword: {
enabled: true,
},
logger: {
level: "debug",
},
});
const { runMigrations } = await getMigrations(auth.options);
await runMigrations();
const server = Bun.serve({
fetch: auth.handler,
port: 0,
});
console.log(server.port);

30
e2e/smoke/test/fixtures/deno-simple.ts vendored Normal file
View File

@@ -0,0 +1,30 @@
import { betterAuth } from "better-auth";
import { DatabaseSync } from "node:sqlite";
import { getMigrations } from "better-auth/db";
const database = new DatabaseSync(":memory:");
export const auth = betterAuth({
baseURL: "http://localhost:4000",
database,
emailAndPassword: {
enabled: true,
},
logger: {
level: "debug",
},
});
const { runMigrations } = await getMigrations(auth.options);
await runMigrations();
Deno.serve(
{
port: 0,
onListen: ({ port }) => {
console.log(`Listening on http://localhost:${port}`);
},
},
auth.handler,
);

12
e2e/smoke/tsconfig.json Normal file
View File

@@ -0,0 +1,12 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
"moduleResolution": "node16"
}
}

View File

@@ -17,6 +17,7 @@
"release:canary": "turbo --filter \"./packages/*\" build && bumpp && pnpm -r publish --access public --tag canary --no-git-checks",
"bump": "bumpp",
"test": "turbo --filter \"./packages/*\" test",
"e2e:smoke": "turbo --filter \"./e2e/*\" e2e:smoke",
"typecheck": "turbo --filter \"./packages/*\" typecheck"
},
"devDependencies": {

View File

@@ -82,7 +82,7 @@ export const createKyselyAdapter = async (config: BetterAuthOptions) => {
dialect = db;
}
if ("aggregate" in db) {
if ("aggregate" in db && !("createSession" in db)) {
dialect = new SqliteDialect({
database: db,
});

View File

@@ -21,6 +21,7 @@ import type { LiteralUnion, OmitId } from "./helper";
import type { AdapterDebugLogs } from "../adapters";
//@ts-ignore - we need to import this to get the type of the database
import type { Database as BunDatabase } from "bun:sqlite";
import type { DatabaseSync } from "node:sqlite";
export type BetterAuthOptions = {
/**
@@ -84,6 +85,7 @@ export type BetterAuthOptions = {
| Dialect
| AdapterInstance
| BunDatabase
| DatabaseSync
| {
dialect: Dialect;
type: KyselyDatabaseType;

206
pnpm-lock.yaml generated
View File

@@ -228,7 +228,7 @@ importers:
version: 11.18.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
geist:
specifier: ^1.3.1
version: 1.4.2(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))
version: 1.4.2(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))
input-otp:
specifier: ^1.4.1
version: 1.4.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
@@ -246,7 +246,7 @@ importers:
version: 3.14.3
next:
specifier: ^15.5.0
version: 15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
version: 15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
next-themes:
specifier: ^0.3.0
version: 0.3.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
@@ -303,7 +303,7 @@ importers:
version: 0.9.9(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
zod:
specifier: ^4.0.0
version: 4.1.1
version: 4.0.17
devDependencies:
'@types/canvas-confetti':
specifier: ^1.9.0
@@ -427,10 +427,10 @@ importers:
version: 1.2.8(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
'@scalar/nextjs-api-reference':
specifier: ^0.5.15
version: 0.5.15(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)
version: 0.5.15(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)
'@vercel/analytics':
specifier: ^1.5.0
version: 1.5.0(@remix-run/react@2.17.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@sveltejs/kit@2.36.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)))(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(svelte@5.38.2)(vue-router@4.5.1(vue@3.5.19(typescript@5.9.2)))(vue@3.5.19(typescript@5.9.2))
version: 1.5.0(@remix-run/react@2.17.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@sveltejs/kit@2.36.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)))(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(svelte@5.38.2)(vue-router@4.5.1(vue@3.5.19(typescript@5.9.2)))(vue@3.5.19(typescript@5.9.2))
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -448,19 +448,19 @@ importers:
version: 8.6.0(react@19.1.1)
fumadocs-core:
specifier: 15.7.1
version: 15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
version: 15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
fumadocs-docgen:
specifier: 2.1.0
version: 2.1.0
fumadocs-mdx:
specifier: 11.8.0
version: 11.8.0(acorn@8.15.0)(fumadocs-core@15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1))
version: 11.8.0(acorn@8.15.0)(fumadocs-core@15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1))
fumadocs-typescript:
specifier: ^4.0.6
version: 4.0.6(@types/react@19.1.10)(typescript@5.9.2)
fumadocs-ui:
specifier: 15.7.1
version: 15.7.1(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.12)
version: 15.7.1(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.12)
gray-matter:
specifier: ^4.0.3
version: 4.0.3
@@ -484,7 +484,7 @@ importers:
version: 12.23.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
next:
specifier: 15.5.0
version: 15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
version: 15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
next-themes:
specifier: ^0.4.6
version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
@@ -529,7 +529,7 @@ importers:
version: 1.1.2(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
zod:
specifier: ^4.0.0
version: 4.1.1
version: 4.0.17
devDependencies:
'@tailwindcss/postcss':
specifier: ^4.0.9
@@ -559,6 +559,16 @@ importers:
specifier: ^5.8.2
version: 5.9.2
e2e/smoke:
dependencies:
better-auth:
specifier: workspace:*
version: link:../../packages/better-auth
devDependencies:
'@types/node':
specifier: ^24.3.0
version: 24.3.0
integration-tests/bun:
dependencies:
'@noble/ciphers':
@@ -646,7 +656,7 @@ importers:
version: 0.11.4
zod:
specifier: ^4.0.0
version: 4.1.1
version: 4.0.17
devDependencies:
'@prisma/client':
specifier: ^5.22.0
@@ -698,7 +708,7 @@ importers:
version: 3.14.3
next:
specifier: ^15.5.0
version: 15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
version: 15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
oauth2-mock-server:
specifier: ^7.2.1
version: 7.2.1
@@ -815,7 +825,7 @@ importers:
version: 0.1.2
zod:
specifier: ^4.0.0
version: 4.1.1
version: 4.0.17
devDependencies:
'@types/diff':
specifier: ^7.0.1
@@ -889,7 +899,7 @@ importers:
version: 2.10.1
zod:
specifier: ^4.0.0
version: 4.1.1
version: 4.0.17
devDependencies:
'@types/body-parser':
specifier: ^1.19.6
@@ -908,7 +918,7 @@ importers:
version: link:../better-auth
zod:
specifier: ^4.0.0
version: 4.1.1
version: 4.0.17
devDependencies:
'@types/better-sqlite3':
specifier: ^7.6.12
@@ -3707,6 +3717,11 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
'@playwright/test@1.55.0':
resolution: {integrity: sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==}
engines: {node: '>=18'}
hasBin: true
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
@@ -8470,6 +8485,11 @@ packages:
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
fsevents@2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -10957,6 +10977,16 @@ packages:
pkg-types@2.3.0:
resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
playwright-core@1.55.0:
resolution: {integrity: sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==}
engines: {node: '>=18'}
hasBin: true
playwright@1.55.0:
resolution: {integrity: sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==}
engines: {node: '>=18'}
hasBin: true
plist@3.1.0:
resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==}
engines: {node: '>=10.4.0'}
@@ -12961,46 +12991,6 @@ packages:
'@testing-library/jest-dom':
optional: true
vite@6.3.5:
resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
jiti: '>=1.21.0'
less: '*'
lightningcss: ^1.21.0
sass: '*'
sass-embedded: '*'
stylus: '*'
sugarss: '*'
terser: ^5.16.0
tsx: ^4.8.1
yaml: ^2.4.2
peerDependenciesMeta:
'@types/node':
optional: true
jiti:
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
sass-embedded:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
tsx:
optional: true
yaml:
optional: true
vite@7.1.3:
resolution: {integrity: sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -13423,8 +13413,8 @@ packages:
resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==}
engines: {node: '>= 14'}
zod@4.1.1:
resolution: {integrity: sha512-SgMZK/h8Tigt9nnKkfJMvB/mKjiJXaX26xegP4sa+0wHIFVFWVlsQGdhklDmuargBD3Hsi3rsQRIzwJIhTPJHA==}
zod@4.0.17:
resolution: {integrity: sha512-1PHjlYRevNxxdy2JZ8JcNAw7rX8V9P1AKkP+x/xZfxB0K5FYfuV+Ug6P/6NVSR2jHQ+FzDDoDHS04nYUsOIyLQ==}
zustand@3.7.2:
resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==}
@@ -14435,7 +14425,7 @@ snapshots:
semver: 7.7.2
vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.3.0)(happy-dom@18.0.1)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
wrangler: 4.32.0(@cloudflare/workers-types@4.20250822.0)
zod: 4.1.1
zod: 4.0.17
transitivePeerDependencies:
- '@cloudflare/workers-types'
- bufferutil
@@ -15991,7 +15981,7 @@ snapshots:
unixify: 1.0.0
urlpattern-polyfill: 8.0.2
yargs: 17.7.2
zod: 4.1.1
zod: 4.0.17
transitivePeerDependencies:
- encoding
- rollup
@@ -16223,6 +16213,11 @@ snapshots:
'@pkgjs/parseargs@0.11.0':
optional: true
'@playwright/test@1.55.0':
dependencies:
playwright: 1.55.0
optional: true
'@polka/url@1.0.0-next.29':
optional: true
@@ -17957,10 +17952,10 @@ snapshots:
'@rushstack/eslint-patch@1.11.0': {}
'@scalar/nextjs-api-reference@0.5.15(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)':
'@scalar/nextjs-api-reference@0.5.15(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)':
dependencies:
'@scalar/types': 0.0.39
next: 15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
next: 15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
react: 19.1.1
'@scalar/openapi-types@0.1.9': {}
@@ -17969,7 +17964,7 @@ snapshots:
dependencies:
'@scalar/openapi-types': 0.1.9
'@unhead/schema': 1.11.20
zod: 4.1.1
zod: 4.0.17
'@selderee/plugin-htmlparser2@0.11.0':
dependencies:
@@ -18272,7 +18267,7 @@ snapshots:
'@vitejs/plugin-react': 5.0.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1))
pathe: 2.0.3
vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
zod: 4.1.1
zod: 4.0.17
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -18386,7 +18381,7 @@ snapshots:
recast: 0.23.11
source-map: 0.7.6
tsx: 4.20.4
zod: 4.1.1
zod: 4.0.17
transitivePeerDependencies:
- supports-color
@@ -18405,7 +18400,7 @@ snapshots:
babel-dead-code-elimination: 1.0.10
chokidar: 3.6.0
unplugin: 2.3.8
zod: 4.1.1
zod: 4.0.17
optionalDependencies:
'@tanstack/react-router': 1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
@@ -18470,7 +18465,7 @@ snapshots:
vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
vitefu: 1.1.1(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1))
xmlbuilder2: 3.1.1
zod: 4.1.1
zod: 4.0.17
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -19046,11 +19041,11 @@ snapshots:
'@urql/core': 5.2.0(graphql@16.11.0)
wonka: 6.3.5
'@vercel/analytics@1.5.0(@remix-run/react@2.17.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@sveltejs/kit@2.36.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)))(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(svelte@5.38.2)(vue-router@4.5.1(vue@3.5.19(typescript@5.9.2)))(vue@3.5.19(typescript@5.9.2))':
'@vercel/analytics@1.5.0(@remix-run/react@2.17.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@sveltejs/kit@2.36.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)))(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(svelte@5.38.2)(vue-router@4.5.1(vue@3.5.19(typescript@5.9.2)))(vue@3.5.19(typescript@5.9.2))':
optionalDependencies:
'@remix-run/react': 2.17.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2)
'@sveltejs/kit': 2.36.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1))
next: 15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
next: 15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
react: 19.1.1
svelte: 5.38.2
vue: 3.5.19(typescript@5.9.2)
@@ -19095,13 +19090,13 @@ snapshots:
chai: 5.2.0
tinyrainbow: 2.0.0
'@vitest/mocker@3.2.4(vite@6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1))':
'@vitest/mocker@3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1))':
dependencies:
'@vitest/spy': 3.2.4
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
'@vitest/pretty-format@3.2.4':
dependencies:
@@ -21805,10 +21800,13 @@ snapshots:
fs.realpath@1.0.0: {}
fsevents@2.3.2:
optional: true
fsevents@2.3.3:
optional: true
fumadocs-core@15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
fumadocs-core@15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
dependencies:
'@formatjs/intl-localematcher': 0.6.1
'@orama/orama': 3.1.11
@@ -21829,7 +21827,7 @@ snapshots:
unist-util-visit: 5.0.0
optionalDependencies:
'@types/react': 19.1.10
next: 15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
next: 15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
react: 19.1.1
react-dom: 19.1.1(react@19.1.1)
transitivePeerDependencies:
@@ -21842,25 +21840,25 @@ snapshots:
npm-to-yarn: 3.0.1
oxc-transform: 0.75.1
unist-util-visit: 5.0.0
zod: 4.1.1
zod: 4.0.17
fumadocs-mdx@11.8.0(acorn@8.15.0)(fumadocs-core@15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)):
fumadocs-mdx@11.8.0(acorn@8.15.0)(fumadocs-core@15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)):
dependencies:
'@mdx-js/mdx': 3.1.0(acorn@8.15.0)
'@standard-schema/spec': 1.0.0
chokidar: 4.0.3
esbuild: 0.25.9
estree-util-value-to-estree: 3.4.0
fumadocs-core: 15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
fumadocs-core: 15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
js-yaml: 4.1.0
lru-cache: 11.1.0
picocolors: 1.1.1
tinyexec: 1.0.1
tinyglobby: 0.2.14
unist-util-visit: 5.0.0
zod: 4.1.1
zod: 4.0.17
optionalDependencies:
next: 15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
next: 15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
react: 19.1.1
vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
transitivePeerDependencies:
@@ -21884,7 +21882,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
fumadocs-ui@15.7.1(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.12):
fumadocs-ui@15.7.1(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(tailwindcss@4.1.12):
dependencies:
'@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
'@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
@@ -21897,7 +21895,7 @@ snapshots:
'@radix-ui/react-slot': 1.2.3(@types/react@19.1.10)(react@19.1.1)
'@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.1.7(@types/react@19.1.10))(@types/react@19.1.10)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
class-variance-authority: 0.7.1
fumadocs-core: 15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
fumadocs-core: 15.7.1(@types/react@19.1.10)(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
lodash.merge: 4.6.2
next-themes: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
postcss-selector-parser: 7.1.0
@@ -21908,7 +21906,7 @@ snapshots:
tailwind-merge: 3.3.1
optionalDependencies:
'@types/react': 19.1.10
next: 15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
next: 15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
tailwindcss: 4.1.12
transitivePeerDependencies:
- '@mixedbread/sdk'
@@ -21931,9 +21929,9 @@ snapshots:
functions-have-names@1.2.3: {}
geist@1.4.2(next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)):
geist@1.4.2(next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)):
dependencies:
next: 15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
next: 15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0)
gel@2.1.1:
dependencies:
@@ -24150,7 +24148,7 @@ snapshots:
workerd: 1.20250718.0
ws: 8.18.0
youch: 3.3.4
zod: 4.1.1
zod: 4.0.17
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -24168,7 +24166,7 @@ snapshots:
workerd: 1.20250816.0
ws: 8.18.0
youch: 4.1.0-beta.10
zod: 4.1.1
zod: 4.0.17
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -24364,7 +24362,7 @@ snapshots:
react: 19.1.1
react-dom: 19.1.1(react@19.1.1)
next@15.5.0(@babel/core@7.28.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0):
next@15.5.0(@babel/core@7.28.3)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0):
dependencies:
'@next/env': 15.5.0
'@swc/helpers': 0.5.15
@@ -24382,6 +24380,7 @@ snapshots:
'@next/swc-linux-x64-musl': 15.5.0
'@next/swc-win32-arm64-msvc': 15.5.0
'@next/swc-win32-x64-msvc': 15.5.0
'@playwright/test': 1.55.0
sass: 1.90.0
sharp: 0.34.3
transitivePeerDependencies:
@@ -25015,6 +25014,16 @@ snapshots:
exsolve: 1.0.7
pathe: 2.0.3
playwright-core@1.55.0:
optional: true
playwright@1.55.0:
dependencies:
playwright-core: 1.55.0
optionalDependencies:
fsevents: 2.3.2
optional: true
plist@3.1.0:
dependencies:
'@xmldom/xmldom': 0.8.11
@@ -27511,7 +27520,7 @@ snapshots:
debug: 4.4.1
es-module-lexer: 1.7.0
pathe: 2.0.3
vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -27540,25 +27549,6 @@ snapshots:
- supports-color
optional: true
vite@6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1):
dependencies:
esbuild: 0.25.5
fdir: 6.4.5(picomatch@4.0.2)
picomatch: 4.0.2
postcss: 8.5.6
rollup: 4.41.1
tinyglobby: 0.2.14
optionalDependencies:
'@types/node': 24.3.0
fsevents: 2.3.3
jiti: 2.5.1
less: 4.4.1
lightningcss: 1.30.1
sass: 1.90.0
terser: 5.43.1
tsx: 4.20.4
yaml: 2.8.1
vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1):
dependencies:
esbuild: 0.25.9
@@ -27586,7 +27576,7 @@ snapshots:
dependencies:
'@types/chai': 5.2.2
'@vitest/expect': 3.2.4
'@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1))
'@vitest/mocker': 3.2.4(vite@7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1))
'@vitest/pretty-format': 3.2.4
'@vitest/runner': 3.2.4
'@vitest/snapshot': 3.2.4
@@ -27604,7 +27594,7 @@ snapshots:
tinyglobby: 0.2.14
tinypool: 1.1.1
tinyrainbow: 2.0.0
vite: 6.3.5(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
vite: 7.1.3(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
vite-node: 3.2.4(@types/node@24.3.0)(jiti@2.5.1)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.43.1)(tsx@4.20.4)(yaml@2.8.1)
why-is-node-running: 2.3.0
optionalDependencies:
@@ -28009,7 +27999,7 @@ snapshots:
compress-commons: 6.0.2
readable-stream: 4.7.0
zod@4.1.1: {}
zod@4.0.17: {}
zustand@3.7.2(react@19.1.1):
optionalDependencies:

View File

@@ -3,6 +3,7 @@ packages:
- docs
- integration-tests/**
- demo/*
- e2e/*
catalogs:
react18:
'@types/react': ^19.1.0

View File

@@ -23,6 +23,10 @@
"dependsOn": ["build"],
"outputs": []
},
"e2e:smoke": {
"dependsOn": ["build"],
"outputs": []
},
"typecheck": {
"outputs": [],
"cache": true