diff --git a/.cspell/third-party.txt b/.cspell/third-party.txt
index 50f31cd047..d2db5221ba 100644
--- a/.cspell/third-party.txt
+++ b/.cspell/third-party.txt
@@ -40,3 +40,4 @@ vite
electronjs
wagmi
tldts
+headimgurl
diff --git a/demo/nextjs/pnpm-lock.yaml b/demo/nextjs/pnpm-lock.yaml
index aa1de8304a..437d1bc370 100644
--- a/demo/nextjs/pnpm-lock.yaml
+++ b/demo/nextjs/pnpm-lock.yaml
@@ -1745,9 +1745,9 @@ packages:
resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
engines: {node: '>= 0.4'}
- camelcase@6.3.0:
- resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
- engines: {node: '>=10'}
+ camelcase@9.0.0:
+ resolution: {integrity: sha512-TO9xmyXTZ9HUHI8M1OnvExxYB0eYVS/1e5s7IDMTAoIcwUd+aNcFODs6Xk83mobk0velyHFQgA1yIrvYc6wclw==}
+ engines: {node: '>=20'}
caniuse-lite@1.0.30001775:
resolution: {integrity: sha512-s3Qv7Lht9zbVKE9XoTyRG6wVDCKdtOFIjBGg3+Yhn6JaytuNKPIjBMTMIY1AnOH3seL5mvF+x33oGAyK3hVt3A==}
@@ -2002,11 +2002,11 @@ packages:
fast-uri@3.1.0:
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
- fast-xml-builder@1.0.0:
- resolution: {integrity: sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==}
+ fast-xml-builder@1.1.0:
+ resolution: {integrity: sha512-7mtITW/we2/wTUZqMyBOR2F8xP4CRxMiSEcQxPIqdRWdO2L/HZSOlzoNyghmyDwNB8BDxePooV1ZTJpkOUhdRg==}
- fast-xml-parser@5.4.2:
- resolution: {integrity: sha512-pw/6pIl4k0CSpElPEJhDppLzaixDEuWui2CUQQBH/ECDf7+y6YwA4Gf7Tyb0Rfe4DIMuZipYj4AEL0nACKglvQ==}
+ fast-xml-parser@5.5.1:
+ resolution: {integrity: sha512-JTpMz8P5mDoNYzXTmTT/xzWjFiCWi0U+UQTJtrFH9muXsr2RqtXZPbnCW5h2mKsOd4u3XcPWCvDSrnaBPlUcMQ==}
hasBin: true
fetch-blob@3.2.0:
@@ -2377,10 +2377,6 @@ packages:
resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- node-forge@1.3.3:
- resolution: {integrity: sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==}
- engines: {node: '>= 6.13.0'}
-
node-rsa@1.1.1:
resolution: {integrity: sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==}
@@ -2402,9 +2398,6 @@ packages:
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- pako@1.0.11:
- resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
-
parseley@0.12.1:
resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==}
@@ -2412,6 +2405,10 @@ packages:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
+ path-expression-matcher@1.1.2:
+ resolution: {integrity: sha512-LXWqJmcpp2BKOEmgt4CyuESFmBfPuhJlAHKJsFzuJU6CxErWk75BrO+Ni77M9OxHN6dCYKM4vj+21Z6cOL96YQ==}
+ engines: {node: '>=14.0.0'}
+
path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
@@ -2596,8 +2593,8 @@ packages:
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
- samlify@2.10.2:
- resolution: {integrity: sha512-y5s1cHwclqwP8h7K2Wj9SfP1q+1S9+jrs5OAegYTLAiuFi7nDvuKqbiXLmUTvYPMpzHcX94wTY2+D604jgTKvA==}
+ samlify@2.11.0:
+ resolution: {integrity: sha512-1C9ukjlf0rRsuyqdzztqikdItqa33j9NCCDZgeBiWk0etU6vxNB+SWJKW4Flk07ZlhXeev/twALEKrPhIAyfDg==}
scheduler@0.27.0:
resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
@@ -2771,10 +2768,6 @@ packages:
resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==}
hasBin: true
- uuid@8.3.2:
- resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
- hasBin: true
-
vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
@@ -2830,6 +2823,10 @@ packages:
resolution: {integrity: sha512-NNXnzrkDrAzalLhIUc01jO2mOzXGXh1JwPgkihcLLzw98c0WgYDmmjSh1Kl3wzaxSVWMuA+fe0WTWOBDWCBmNA==}
engines: {node: '>=0.6.0'}
+ xpath@0.0.34:
+ resolution: {integrity: sha512-FxF6+rkr1rNSQrhUNYrAFJpRXNzlDoMxeXN5qI84939ylEv3qqPFKa85Oxr6tDaJKqwW6KKyo2v26TSv3k6LeA==}
+ engines: {node: '>=0.6.0'}
+
yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
@@ -2897,9 +2894,9 @@ snapshots:
'@better-fetch/fetch': 1.1.21
better-auth: link:../../packages/better-auth
better-call: 2.0.0-beta.4(zod@4.3.6)
- fast-xml-parser: 5.4.2
+ fast-xml-parser: 5.5.1
jose: 6.1.3
- samlify: 2.10.2
+ samlify: 2.11.0
zod: 4.3.6
'@better-auth/utils@0.3.1': {}
@@ -4262,7 +4259,7 @@ snapshots:
call-bind-apply-helpers: 1.0.2
get-intrinsic: 1.3.0
- camelcase@6.3.0: {}
+ camelcase@9.0.0: {}
caniuse-lite@1.0.30001775: {}
@@ -4494,11 +4491,14 @@ snapshots:
fast-uri@3.1.0: {}
- fast-xml-builder@1.0.0: {}
-
- fast-xml-parser@5.4.2:
+ fast-xml-builder@1.1.0:
dependencies:
- fast-xml-builder: 1.0.0
+ path-expression-matcher: 1.1.2
+
+ fast-xml-parser@5.5.1:
+ dependencies:
+ fast-xml-builder: 1.1.0
+ path-expression-matcher: 1.1.2
strnum: 2.2.0
fetch-blob@3.2.0:
@@ -4818,8 +4818,6 @@ snapshots:
fetch-blob: 3.2.0
formdata-polyfill: 4.0.10
- node-forge@1.3.3: {}
-
node-rsa@1.1.1:
dependencies:
asn1: 0.2.6
@@ -4840,8 +4838,6 @@ snapshots:
dependencies:
wrappy: 1.0.2
- pako@1.0.11: {}
-
parseley@0.12.1:
dependencies:
leac: 0.6.0
@@ -4849,6 +4845,8 @@ snapshots:
parseurl@1.3.3: {}
+ path-expression-matcher@1.1.2: {}
+
path-key@3.1.1: {}
path-to-regexp@8.3.0: {}
@@ -5033,19 +5031,16 @@ snapshots:
safer-buffer@2.1.2: {}
- samlify@2.10.2:
+ samlify@2.11.0:
dependencies:
'@authenio/xml-encryption': 2.0.2
'@xmldom/xmldom': 0.8.11
- camelcase: 6.3.0
- node-forge: 1.3.3
+ camelcase: 9.0.0
node-rsa: 1.1.1
- pako: 1.0.11
- uuid: 8.3.2
xml: 1.0.1
xml-crypto: 6.1.2
xml-escape: 1.1.0
- xpath: 0.0.32
+ xpath: 0.0.34
scheduler@0.27.0: {}
@@ -5236,8 +5231,6 @@ snapshots:
uuid@10.0.0: {}
- uuid@8.3.2: {}
-
vary@1.1.2: {}
vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
@@ -5290,6 +5283,8 @@ snapshots:
xpath@0.0.33: {}
+ xpath@0.0.34: {}
+
yallist@4.0.0: {}
zod-to-json-schema@3.25.1(zod@4.3.6):
diff --git a/docs/content/docs/authentication/wechat.mdx b/docs/content/docs/authentication/wechat.mdx
new file mode 100644
index 0000000000..8c607979db
--- /dev/null
+++ b/docs/content/docs/authentication/wechat.mdx
@@ -0,0 +1,77 @@
+---
+title: WeChat
+description: WeChat provider setup and usage.
+---
+
+
+
+ ### Get your WeChat Credentials
+ To use WeChat sign in, you need to register a website application on the [WeChat Open Platform](https://open.weixin.qq.com/), set the `Authorization Callback Domain` to the better auth domain and get your App ID and App Secret.
+
+
+
+ ### Configure the provider
+ To configure the provider, you need to import the provider and pass it to the `socialProviders` option of the auth instance.
+
+ ```ts title="auth.ts"
+ import { betterAuth } from "better-auth"
+
+ export const auth = betterAuth({
+ socialProviders: {
+ wechat: { // [!code highlight]
+ clientId: process.env.WECHAT_CLIENT_ID, // [!code highlight]
+ clientSecret: process.env.WECHAT_CLIENT_SECRET, // [!code highlight]
+ }, // [!code highlight]
+ },
+ })
+ ```
+
+ #### Optional Configuration
+
+ You can customize the WeChat provider with additional options:
+
+ ```ts title="auth.ts"
+ export const auth = betterAuth({
+ socialProviders: {
+ wechat: {
+ clientId: process.env.WECHAT_CLIENT_ID,
+ clientSecret: process.env.WECHAT_CLIENT_SECRET,
+ // Optional: Set UI language for the WeChat login page
+ lang: "cn", // or "en" for English
+ // Optional: Use custom scopes
+ scope: [], // "snsapi_login" for web QR code login.
+ },
+ },
+ })
+ ```
+
+
+
+ ### Sign In with WeChat
+ To sign in with WeChat, you can use the `signIn.social` function provided by the client. The `signIn` function takes an object with the following properties:
+ - `provider`: The provider to use. It should be set to `wechat`.
+
+ ```ts title="auth-client.ts"
+ import { createAuthClient } from "better-auth/client"
+ const authClient = createAuthClient()
+
+ const signIn = async () => {
+ const data = await authClient.signIn.social({
+ provider: "wechat"
+ })
+ }
+ ```
+
+
+
+
+## Usage
+
+### Platform Support
+
+WeChat provider currently supports the Website Application platform type, which enables WeChat QR code login for web applications.
+
+### Development Notes
+
+- The redirect URL domain must match the domain configured in the WeChat Open Platform
+
diff --git a/docs/content/docs/concepts/api.mdx b/docs/content/docs/concepts/api.mdx
index e83d55c0ad..5aa35d50e8 100644
--- a/docs/content/docs/concepts/api.mdx
+++ b/docs/content/docs/concepts/api.mdx
@@ -81,7 +81,7 @@ const { headers, response } = await auth.api.signUpEmail({
The `headers` will be a `Headers` object, which you can use to get the cookies or the headers.
```ts
-const cookies = headers.get("set-cookie");
+const cookies = headers.getSetCookie();
const headers = headers.get("x-custom-header");
```
diff --git a/docs/content/docs/integrations/solid-start.mdx b/docs/content/docs/integrations/solid-start.mdx
index d833a33ceb..45963639d8 100644
--- a/docs/content/docs/integrations/solid-start.mdx
+++ b/docs/content/docs/integrations/solid-start.mdx
@@ -7,9 +7,9 @@ Before you start, make sure you have a Better Auth instance configured. If you h
### Mount the handler
-We need to mount the handler to SolidStart server. Put the following code in your `*auth.ts` file inside `/routes/api/auth` folder.
+We need to mount the handler to SolidStart server. Put the following code in your `[...auth].ts` file inside `/routes/api/auth` folder.
-```ts title="*auth.ts"
+```ts title="[...auth].ts"
import { auth } from "~/lib/auth";
import { toSolidStartHandler } from "better-auth/solid-start";
diff --git a/docs/content/docs/plugins/api-key/advanced.mdx b/docs/content/docs/plugins/api-key/advanced.mdx
index 53c93cc712..86c85664d8 100644
--- a/docs/content/docs/plugins/api-key/advanced.mdx
+++ b/docs/content/docs/plugins/api-key/advanced.mdx
@@ -67,7 +67,7 @@ Or optionally, you can pass a `customAPIKeyGetter` function to the plugin option
```ts title="auth.ts"
import { betterAuth } from "better-auth"
-import { apiKey } from "better-auth/plugins"
+import { apiKey } from "@better-auth/api-key"
export const auth = betterAuth({
plugins: [
diff --git a/docs/content/docs/plugins/api-key/reference.mdx b/docs/content/docs/plugins/api-key/reference.mdx
index c92012fa18..af25739fc7 100644
--- a/docs/content/docs/plugins/api-key/reference.mdx
+++ b/docs/content/docs/plugins/api-key/reference.mdx
@@ -171,7 +171,7 @@ Default is `false`.
```ts title="auth.ts"
import { betterAuth } from "better-auth";
-import { apiKey } from "better-auth/plugins"
+import { apiKey } from "@better-auth/api-key"
export const auth = betterAuth({
secondaryStorage: {
@@ -202,7 +202,7 @@ Useful when you want to use a different storage backend specifically for API key
```ts title="auth.ts"
import { betterAuth } from "better-auth";
-import { apiKey } from "better-auth/plugins"
+import { apiKey } from "@better-auth/api-key"
export const auth = betterAuth({
plugins: [
@@ -307,7 +307,7 @@ You can configure default permissions that will be applied to all newly created
```ts title="auth.ts"
import { betterAuth } from "better-auth"
-import { apiKey } from "better-auth/plugins"
+import { apiKey } from "@better-auth/api-key"
export const auth = betterAuth({
plugins: [
@@ -327,7 +327,7 @@ You can also provide a function that returns permissions dynamically:
```ts title="auth.ts"
import { betterAuth } from "better-auth"
-import { apiKey } from "better-auth/plugins"
+import { apiKey } from "@better-auth/api-key"
export const auth = betterAuth({
plugins: [
diff --git a/docs/content/docs/plugins/stripe.mdx b/docs/content/docs/plugins/stripe.mdx
index fcc5091213..706d5a617e 100644
--- a/docs/content/docs/plugins/stripe.mdx
+++ b/docs/content/docs/plugins/stripe.mdx
@@ -913,6 +913,7 @@ stripe({
| `limits` | `object` | Limits for plan (e.g. `{ projects: 10, storage: 5 }`). |
| `group` | `string` | Defines the subscription lane for the plan. Plugin-managed flows allow one active or trialing subscription per `referenceId + group`. Omitted plans use `"default"`. |
| `seatPriceId` | `string` | Per-seat billing price ID. Requires the `organization` plugin. |
+| `prorationBehavior` | `string` | Proration behavior on subscription updates: `"create_prorations"` (default), `"always_invoice"`, or `"none"`. |
| `lineItems` | `LineItem[]` | Additional line items to include in the checkout session. |
| `freeTrial` | `object` | Trial configuration. See [below](#free-trial-configuration). |
diff --git a/e2e/smoke/test/fixtures/cloudflare/package.json b/e2e/smoke/test/fixtures/cloudflare/package.json
index 97a8c6d0bf..ae1b986f6f 100644
--- a/e2e/smoke/test/fixtures/cloudflare/package.json
+++ b/e2e/smoke/test/fixtures/cloudflare/package.json
@@ -5,7 +5,7 @@
"@better-auth/sso": "workspace:*",
"better-auth": "workspace:*",
"drizzle-orm": "^0.45.1",
- "hono": "^4.12.4"
+ "hono": "^4.12.7"
},
"devDependencies": {
"@cloudflare/vitest-pool-workers": "^0.12.18",
diff --git a/e2e/smoke/test/fixtures/ipv6/package.json b/e2e/smoke/test/fixtures/ipv6/package.json
index ae97dd8e64..76e80341ee 100644
--- a/e2e/smoke/test/fixtures/ipv6/package.json
+++ b/e2e/smoke/test/fixtures/ipv6/package.json
@@ -5,6 +5,6 @@
"dependencies": {
"@hono/node-server": "^1.19.10",
"better-auth": "workspace:*",
- "hono": "^4.12.4"
+ "hono": "^4.12.7"
}
}
diff --git a/knip.jsonc b/knip.jsonc
index 755085773b..cbc7fc9ad2 100644
--- a/knip.jsonc
+++ b/knip.jsonc
@@ -117,6 +117,18 @@
],
"project": ["src/**/*.ts", "test/**/*.ts"]
},
+ "packages/kysely-adapter": {
+ "ignoreDependencies": [
+ // optional peer dependency
+ "kysely"
+ ]
+ },
+ "packages/mongo-adapter": {
+ "ignoreDependencies": [
+ // optional peer dependency
+ "mongodb"
+ ]
+ },
"packages/stripe": {
"ignoreDependencies": [
// implicit dependencies
diff --git a/landing/components/sidebar-content.tsx b/landing/components/sidebar-content.tsx
index dd47217a72..4a9a80b1ca 100644
--- a/landing/components/sidebar-content.tsx
+++ b/landing/components/sidebar-content.tsx
@@ -1136,6 +1136,24 @@ C0.7,239.6,62.1,0.5,62.2,0.4c0,0,54,13.8,119.9,30.8S302.1,62,302.2,62c0.2,0,0.2,
),
},
+ {
+ title: "WeChat",
+ href: "/docs/authentication/wechat",
+ isNew: true,
+ icon: () => (
+
+ ),
+ },
{
title: "Zoom",
href: "/docs/authentication/zoom",
diff --git a/packages/better-auth/src/api/routes/password.test.ts b/packages/better-auth/src/api/routes/password.test.ts
index ebb5c30056..ed3b110dce 100644
--- a/packages/better-auth/src/api/routes/password.test.ts
+++ b/packages/better-auth/src/api/routes/password.test.ts
@@ -37,6 +37,26 @@ describe("forget password", async () => {
expect(token.length).toBeGreaterThan(10);
});
+ it("should reject untrusted redirectTo", async () => {
+ const { client, testUser } = await getTestInstance({
+ emailAndPassword: {
+ enabled: true,
+ async sendResetPassword() {},
+ },
+ trustedOrigins: ["http://localhost:3000"],
+ advanced: {
+ disableOriginCheck: false,
+ },
+ });
+ const res = await client.requestPasswordReset({
+ email: testUser.email,
+ redirectTo: "http://malicious.com",
+ });
+
+ expect(res.error?.status).toBe(403);
+ expect(res.error?.message).toBe("Invalid redirectURL");
+ });
+
it("should fail on invalid password", async () => {
const res = await client.resetPassword(
{
diff --git a/packages/better-auth/src/api/routes/password.ts b/packages/better-auth/src/api/routes/password.ts
index d6e247a7df..5a2b15a342 100644
--- a/packages/better-auth/src/api/routes/password.ts
+++ b/packages/better-auth/src/api/routes/password.ts
@@ -84,6 +84,7 @@ export const requestPasswordReset = createAuthEndpoint(
},
},
},
+ use: [originCheck((ctx) => ctx.body.redirectTo)],
},
async (ctx) => {
if (!ctx.context.options.emailAndPassword?.sendResetPassword) {
diff --git a/packages/better-auth/src/client/path-to-object.ts b/packages/better-auth/src/client/path-to-object.ts
index c606357542..b4ee39d9f5 100644
--- a/packages/better-auth/src/client/path-to-object.ts
+++ b/packages/better-auth/src/client/path-to-object.ts
@@ -41,6 +41,28 @@ type ReplaceAuthUserAndSession<
InferSessionFromClient
>;
+type MergeCustomSessionField<
+ R extends object,
+ Field extends "user" | "session",
+ InferType,
+> = Field extends keyof R
+ ? {
+ [K in Field]: KeepNullishFromOriginal<
+ R[K],
+ NonNullable & InferType
+ >;
+ }
+ : {};
+
+type MergeCustomSessionWithInferred<
+ R,
+ ClientOpts extends BetterAuthClientOptions,
+> = R extends object
+ ? Omit &
+ MergeCustomSessionField> &
+ MergeCustomSessionField>
+ : never;
+
type RefineAuthResponse<
Data,
ClientOpts extends BetterAuthClientOptions,
@@ -194,7 +216,10 @@ export type InferRoute =
Meta extends {
CUSTOM_SESSION: boolean;
}
- ? NonNullable>
+ ? MergeCustomSessionWithInferred<
+ NonNullable>,
+ COpts
+ >
: T["path"] extends "/get-session"
? {
user: InferUserFromClient;
diff --git a/packages/better-auth/src/plugins/custom-session/custom-session.test.ts b/packages/better-auth/src/plugins/custom-session/custom-session.test.ts
index dd8fc6fcf8..d6a87efb5b 100644
--- a/packages/better-auth/src/plugins/custom-session/custom-session.test.ts
+++ b/packages/better-auth/src/plugins/custom-session/custom-session.test.ts
@@ -3,6 +3,7 @@ import { createAuthClient } from "../../client";
import { parseSetCookieHeader } from "../../cookies";
import { getTestInstance } from "../../test-utils/test-instance";
import type { BetterAuthOptions } from "../../types";
+import { inferAdditionalFields } from "../additional-fields/client";
import { admin } from "../admin";
import { adminClient } from "../admin/client";
import { multiSession } from "../multi-session";
@@ -300,4 +301,81 @@ describe("Custom Session Plugin Tests", async () => {
};
}>();
});
+
+ it("should not add user/session to client getSession type when custom session omits them", async () => {
+ const { auth } = await getTestInstance({
+ plugins: [
+ customSession(async () => {
+ return {
+ custom: {
+ field: "field",
+ },
+ };
+ }),
+ ],
+ });
+
+ const client = createAuthClient({
+ plugins: [customSessionClient()],
+ });
+
+ type SessionData = typeof client.$Infer.Session;
+
+ // When custom session omits user/session, the client type must not claim they exist
+ expectTypeOf().toEqualTypeOf<{
+ custom: {
+ field: string;
+ };
+ }>();
+
+ // Verify user and session are not in the type
+ expectTypeOf().toEqualTypeOf<"custom">();
+ });
+
+ it("should infer both customSessionClient and inferAdditionalFields when combined", async () => {
+ const { auth } = await getTestInstance({
+ user: {
+ additionalFields: {
+ role: {
+ type: "string",
+ required: false,
+ },
+ },
+ },
+ plugins: [
+ customSession(async ({ user, session }) => {
+ return {
+ user: {
+ firstName: user.name.split(" ")[0],
+ lastName: user.name.split(" ")[1],
+ },
+ session,
+ customData: { message: "hello" },
+ };
+ }),
+ ],
+ });
+
+ const client = createAuthClient({
+ plugins: [
+ customSessionClient(),
+ inferAdditionalFields(),
+ ],
+ });
+
+ type SessionData = typeof client.$Infer.Session;
+ type User = SessionData["user"];
+
+ expectTypeOf().toMatchObjectType<{
+ id: string;
+ firstName: string | undefined;
+ lastName: string | undefined;
+ role?: string | undefined | null;
+ }>();
+
+ type CustomData = SessionData["customData"];
+ expectTypeOf().toMatchObjectType<{
+ message: string;
+ }>();
+ });
});
diff --git a/packages/better-auth/src/plugins/oidc-provider/authorize.ts b/packages/better-auth/src/plugins/oidc-provider/authorize.ts
index f0804f4620..b9c6c8f76d 100644
--- a/packages/better-auth/src/plugins/oidc-provider/authorize.ts
+++ b/packages/better-auth/src/plugins/oidc-provider/authorize.ts
@@ -3,6 +3,7 @@ import { APIError } from "@better-auth/core/error";
import { isBrowserFetchRequest } from "@better-auth/core/utils/fetch-metadata";
import { getSessionFromCtx } from "../../api";
import { generateRandomString } from "../../crypto";
+import { InvalidClient, InvalidRequest } from "./error";
import { getClient } from "./index";
import type { AuthorizationQuery, OIDCOptions } from "./types";
import { parsePrompt } from "./utils/prompt";
@@ -58,15 +59,38 @@ export async function authorize(
error: "invalid_request",
});
}
+ const query = ctx.query as AuthorizationQuery;
const session = await getSessionFromCtx(ctx);
if (!session) {
// Handle prompt=none per OIDC spec - must return error instead of redirecting
- const query = ctx.query as AuthorizationQuery;
const promptSet = parsePrompt(query.prompt ?? "");
- if (promptSet.has("none") && query.redirect_uri) {
+ if (promptSet.has("none")) {
+ if (!query.redirect_uri) {
+ throw new InvalidRequest(
+ "redirect_uri is required when prompt=none and must be usable to return errors without displaying UI",
+ );
+ }
+ if (!query.client_id) {
+ throw new InvalidClient("client_id is required");
+ }
+ const client = await getClient(
+ query.client_id,
+ options.trustedClients || [],
+ );
+ if (!client) {
+ throw new InvalidClient("client_id is required");
+ }
+ const validRedirectURI = client.redirectUrls.find(
+ (url) => url === query.redirect_uri,
+ );
+ if (!validRedirectURI) {
+ throw new InvalidRequest(
+ "redirect_uri is invalid or not registered for this client",
+ );
+ }
return handleRedirect(
formatErrorURL(
- query.redirect_uri,
+ validRedirectURI,
"login_required",
"Authentication required but prompt is none",
),
@@ -91,7 +115,6 @@ export async function authorize(
return handleRedirect(`${options.loginPage}?${queryFromURL}`);
}
- const query = ctx.query as AuthorizationQuery;
if (!query.client_id) {
const errorURL = getErrorURL(
ctx,
diff --git a/packages/better-auth/src/plugins/oidc-provider/error.ts b/packages/better-auth/src/plugins/oidc-provider/error.ts
index 696a803d9d..5d122e39c6 100644
--- a/packages/better-auth/src/plugins/oidc-provider/error.ts
+++ b/packages/better-auth/src/plugins/oidc-provider/error.ts
@@ -5,9 +5,20 @@ class OIDCProviderError extends APIError {}
export class InvalidRequest extends OIDCProviderError {
constructor(error_description: string, error_detail?: string) {
super("BAD_REQUEST", {
- message: "invalid_request",
+ message: error_description,
+ error: "invalid_request",
error_description,
error_detail,
});
}
}
+
+export class InvalidClient extends OIDCProviderError {
+ constructor(error_description: string) {
+ super("BAD_REQUEST", {
+ message: error_description,
+ error: "invalid_client",
+ error_description,
+ });
+ }
+}
diff --git a/packages/better-auth/src/plugins/oidc-provider/oidc.test.ts b/packages/better-auth/src/plugins/oidc-provider/oidc.test.ts
index 6ee3e60926..ffa1269339 100644
--- a/packages/better-auth/src/plugins/oidc-provider/oidc.test.ts
+++ b/packages/better-auth/src/plugins/oidc-provider/oidc.test.ts
@@ -460,24 +460,22 @@ describe("oidc", async () => {
it("should return login_required error when prompt=none and user not authenticated", async ({
expect,
}) => {
- // Create an unauthenticated client
- const unauthClient = createAuthClient({
- plugins: [oidcClient()],
- baseURL: "http://localhost:3000",
- fetchOptions: {
- customFetchImpl,
- },
+ // Create an OAuth client
+ const testClient = await serverClient.oauth2.register({
+ client_name: "test-login-required-prompt-none",
+ redirect_uris: [
+ "http://localhost:3000/api/auth/oauth2/callback/login-required",
+ ],
});
+ const clientId = testClient.data?.client_id ?? "";
+ const redirectUri = testClient.data?.redirect_uris?.[0] ?? "";
// Try to authorize with prompt=none
const authUrl = new URL(
"http://localhost:3000/api/auth/oauth2/authorize",
);
- authUrl.searchParams.set("client_id", application.clientId);
- authUrl.searchParams.set(
- "redirect_uri",
- application.redirectUrls[0] || "",
- );
+ authUrl.searchParams.set("client_id", clientId);
+ authUrl.searchParams.set("redirect_uri", redirectUri);
authUrl.searchParams.set("response_type", "code");
authUrl.searchParams.set("scope", "openid profile email");
authUrl.searchParams.set("state", "test-state");
@@ -485,13 +483,11 @@ describe("oidc", async () => {
authUrl.searchParams.set("code_challenge", "test-challenge");
authUrl.searchParams.set("code_challenge_method", "S256");
- let redirectURI = "";
- await unauthClient.$fetch(authUrl.toString(), {
+ const response = await customFetchImpl(authUrl.toString(), {
method: "GET",
- onError(context) {
- redirectURI = context.response.headers.get("Location") || "";
- },
+ redirect: "manual",
});
+ const redirectURI = response.headers.get("Location") || "";
expect(redirectURI).toContain("error=login_required");
expect(redirectURI).toContain("error_description=Authentication");
@@ -499,6 +495,57 @@ describe("oidc", async () => {
expect(redirectURI).toContain("none");
});
+ it("should not redirect to invalid redirect_uri when prompt=none", async ({
+ expect,
+ }) => {
+ const attackerRedirect = "https://malicious.com/callback";
+ const authUrl = new URL(
+ "http://localhost:3000/api/auth/oauth2/authorize",
+ );
+ authUrl.searchParams.set("client_id", application.clientId);
+ authUrl.searchParams.set("redirect_uri", attackerRedirect);
+ authUrl.searchParams.set("response_type", "code");
+ authUrl.searchParams.set("scope", "openid");
+ authUrl.searchParams.set("state", "x");
+ authUrl.searchParams.set("prompt", "none");
+
+ const response = await customFetchImpl(authUrl.toString(), {
+ method: "GET",
+ redirect: "manual",
+ });
+
+ const location = response.headers.get("Location") || "";
+ expect(location === null || location === "").not.toContain(
+ "malicious.com",
+ );
+ expect([400, 302]).toContain(response.status);
+ });
+
+ it("should return 400 invalid_request when prompt=none without redirect_uri", async ({
+ expect,
+ }) => {
+ const authUrl = new URL(
+ "http://localhost:3000/api/auth/oauth2/authorize",
+ );
+ authUrl.searchParams.set("client_id", application.clientId);
+ authUrl.searchParams.set("response_type", "code");
+ authUrl.searchParams.set("scope", "openid");
+ authUrl.searchParams.set("state", "x");
+ authUrl.searchParams.set("prompt", "none");
+ // No redirect_uri - must not fall through to login page
+
+ const response = await customFetchImpl(authUrl.toString(), {
+ method: "GET",
+ redirect: "manual",
+ });
+
+ expect(response.status).toBe(400);
+ const location = response.headers.get("Location") || "";
+ expect(location).not.toContain("/login");
+ const body = await response.json().catch(() => ({}));
+ expect(body.error ?? body.code).toBe("invalid_request");
+ });
+
it("should return consent_required error when prompt=none and consent needed", async ({
expect,
}) => {
diff --git a/packages/core/src/social-providers/index.ts b/packages/core/src/social-providers/index.ts
index 05aa005685..5b86f22522 100644
--- a/packages/core/src/social-providers/index.ts
+++ b/packages/core/src/social-providers/index.ts
@@ -33,6 +33,7 @@ import { twitch } from "./twitch";
import { twitter } from "./twitter";
import { vercel } from "./vercel";
import { vk } from "./vk";
+import { wechat } from "./wechat";
import { zoom } from "./zoom";
export const socialProviders = {
@@ -70,6 +71,7 @@ export const socialProviders = {
polar,
railway,
vercel,
+ wechat,
};
export const socialProviderList = Object.keys(socialProviders) as [
@@ -126,6 +128,7 @@ export * from "./twitch";
export * from "./twitter";
export * from "./vercel";
export * from "./vk";
+export * from "./wechat";
export * from "./zoom";
export type SocialProviderList = typeof socialProviderList;
diff --git a/packages/core/src/social-providers/wechat.ts b/packages/core/src/social-providers/wechat.ts
new file mode 100644
index 0000000000..8e9681cb2e
--- /dev/null
+++ b/packages/core/src/social-providers/wechat.ts
@@ -0,0 +1,213 @@
+import { betterFetch } from "@better-fetch/fetch";
+import type { OAuth2Tokens, OAuthProvider, ProviderOptions } from "../oauth2";
+
+/**
+ * WeChat user profile information
+ * @see https://developers.weixin.qq.com/doc/oplatform/en/Website_App/WeChat_Login/Wechat_Login.html
+ */
+export interface WeChatProfile extends Record {
+ /**
+ * User's unique OpenID
+ */
+ openid: string;
+ /**
+ * User's nickname
+ */
+ nickname: string;
+ /**
+ * User's avatar image URL
+ */
+ headimgurl: string;
+ /**
+ * User's privileges
+ */
+ privilege: string[];
+ /**
+ * User's UnionID (unique across the developer's various applications)
+ */
+ unionid?: string;
+ /** @note Email is currently unsupported by WeChat */
+ email?: string;
+}
+
+export interface WeChatOptions extends ProviderOptions {
+ /**
+ * WeChat App ID
+ */
+ clientId: string;
+ /**
+ * WeChat App Secret
+ */
+ clientSecret: string;
+ /**
+ * Platform type for WeChat login
+ * - Currently only supports "WebsiteApp" for WeChat Website Application (网站应用)
+ * @default "WebsiteApp"
+ */
+ platformType?: "WebsiteApp";
+
+ /**
+ * UI language for the WeChat login page
+ * cn for Simplified Chinese, en for English
+ * @default "cn" if left undefined
+ */
+ lang?: "cn" | "en";
+}
+
+export const wechat = (options: WeChatOptions) => {
+ return {
+ id: "wechat",
+ name: "WeChat",
+ createAuthorizationURL({ state, scopes, redirectURI }) {
+ const _scopes = options.disableDefaultScope ? [] : ["snsapi_login"];
+ options.scope && _scopes.push(...options.scope);
+ scopes && _scopes.push(...scopes);
+
+ // WeChat uses non-standard OAuth2 parameters (appid instead of client_id)
+ // and requires a fragment (#wechat_redirect), so we construct the URL manually.
+ const url = new URL("https://open.weixin.qq.com/connect/qrconnect");
+ url.searchParams.set("scope", _scopes.join(","));
+ url.searchParams.set("response_type", "code");
+ url.searchParams.set("appid", options.clientId);
+ url.searchParams.set("redirect_uri", options.redirectURI || redirectURI);
+ url.searchParams.set("state", state);
+ url.searchParams.set("lang", options.lang || "cn");
+ url.hash = "wechat_redirect";
+
+ return url;
+ },
+
+ // WeChat uses non-standard token exchange (appid/secret instead of
+ // client_id/client_secret, GET instead of POST), so shared helpers
+ // like validateAuthorizationCode/getOAuth2Tokens cannot be used directly.
+ validateAuthorizationCode: async ({ code }) => {
+ const params = new URLSearchParams({
+ appid: options.clientId,
+ secret: options.clientSecret,
+ code: code,
+ grant_type: "authorization_code",
+ });
+
+ const { data: tokenData, error } = await betterFetch<{
+ access_token: string;
+ expires_in: number;
+ refresh_token: string;
+ openid: string;
+ scope: string;
+ unionid?: string;
+ errcode?: number;
+ errmsg?: string;
+ }>(
+ "https://api.weixin.qq.com/sns/oauth2/access_token?" +
+ params.toString(),
+ {
+ method: "GET",
+ },
+ );
+
+ if (error || !tokenData || tokenData.errcode) {
+ throw new Error(
+ `Failed to validate authorization code: ${tokenData?.errmsg || error?.message || "Unknown error"}`,
+ );
+ }
+
+ return {
+ tokenType: "Bearer" as const,
+ accessToken: tokenData.access_token,
+ refreshToken: tokenData.refresh_token,
+ accessTokenExpiresAt: new Date(
+ Date.now() + tokenData.expires_in * 1000,
+ ),
+ scopes: tokenData.scope.split(","),
+ // WeChat requires openid for the userinfo endpoint, which is
+ // returned alongside the access token.
+ openid: tokenData.openid,
+ unionid: tokenData.unionid,
+ };
+ },
+
+ refreshAccessToken: options.refreshAccessToken
+ ? options.refreshAccessToken
+ : async (refreshToken) => {
+ const params = new URLSearchParams({
+ appid: options.clientId,
+ grant_type: "refresh_token",
+ refresh_token: refreshToken,
+ });
+
+ const { data: tokenData, error } = await betterFetch<{
+ access_token: string;
+ expires_in: number;
+ refresh_token: string;
+ openid: string;
+ scope: string;
+ errcode?: number;
+ errmsg?: string;
+ }>(
+ "https://api.weixin.qq.com/sns/oauth2/refresh_token?" +
+ params.toString(),
+ {
+ method: "GET",
+ },
+ );
+
+ if (error || !tokenData || tokenData.errcode) {
+ throw new Error(
+ `Failed to refresh access token: ${tokenData?.errmsg || error?.message || "Unknown error"}`,
+ );
+ }
+
+ return {
+ tokenType: "Bearer" as const,
+ accessToken: tokenData.access_token,
+ refreshToken: tokenData.refresh_token,
+ accessTokenExpiresAt: new Date(
+ Date.now() + tokenData.expires_in * 1000,
+ ),
+ scopes: tokenData.scope.split(","),
+ };
+ },
+
+ async getUserInfo(token) {
+ if (options.getUserInfo) {
+ return options.getUserInfo(token);
+ }
+
+ const openid = (token as OAuth2Tokens & { openid?: string }).openid;
+
+ if (!openid) {
+ return null;
+ }
+
+ const params = new URLSearchParams({
+ access_token: token.accessToken || "",
+ openid: openid,
+ lang: "zh_CN",
+ });
+
+ const { data: profile, error } = await betterFetch<
+ WeChatProfile & { errcode?: number; errmsg?: string }
+ >("https://api.weixin.qq.com/sns/userinfo?" + params.toString(), {
+ method: "GET",
+ });
+
+ if (error || !profile || profile.errcode) {
+ return null;
+ }
+
+ const userMap = await options.mapProfileToUser?.(profile);
+ return {
+ user: {
+ id: profile.unionid || profile.openid || openid,
+ name: profile.nickname,
+ email: profile.email || null,
+ image: profile.headimgurl,
+ emailVerified: false,
+ ...userMap,
+ },
+ data: profile,
+ };
+ },
+ options,
+ } satisfies OAuthProvider;
+};
diff --git a/packages/kysely-adapter/package.json b/packages/kysely-adapter/package.json
index 01aa9f96cc..6483b6ccce 100644
--- a/packages/kysely-adapter/package.json
+++ b/packages/kysely-adapter/package.json
@@ -51,6 +51,11 @@
"@better-auth/utils": "^0.3.0",
"kysely": "^0.27.0 || ^0.28.0"
},
+ "peerDependenciesMeta": {
+ "kysely": {
+ "optional": true
+ }
+ },
"devDependencies": {
"@cloudflare/workers-types": "^4.20250121.0",
"@better-auth/core": "workspace:*",
diff --git a/packages/mongo-adapter/package.json b/packages/mongo-adapter/package.json
index 04e32c4602..49a843da57 100644
--- a/packages/mongo-adapter/package.json
+++ b/packages/mongo-adapter/package.json
@@ -46,6 +46,11 @@
"@better-auth/utils": "^0.3.0",
"mongodb": "^6.0.0 || ^7.0.0"
},
+ "peerDependenciesMeta": {
+ "mongodb": {
+ "optional": true
+ }
+ },
"devDependencies": {
"@better-auth/core": "workspace:*",
"@better-auth/utils": "^0.3.1",
diff --git a/packages/oauth-provider/src/authorize.test.ts b/packages/oauth-provider/src/authorize.test.ts
index 218b86ad04..d0cb415b19 100644
--- a/packages/oauth-provider/src/authorize.test.ts
+++ b/packages/oauth-provider/src/authorize.test.ts
@@ -148,6 +148,37 @@ describe("oauth authorize - unauthenticated", async () => {
`redirect_uri=${encodeURIComponent(redirectUri)}`,
);
});
+
+ it("should return login_required when prompt=none and user is not logged in", async () => {
+ if (!oauthClient?.client_id) {
+ throw Error("beforeAll not run properly");
+ }
+
+ const authUrl = new URL(`${authServerBaseUrl}/api/auth/oauth2/authorize`);
+ authUrl.searchParams.set("client_id", oauthClient.client_id);
+ authUrl.searchParams.set("redirect_uri", redirectUri);
+ authUrl.searchParams.set("response_type", "code");
+ authUrl.searchParams.set("scope", "openid");
+ authUrl.searchParams.set("state", "prompt-none-login-required");
+ authUrl.searchParams.set("prompt", "none");
+ authUrl.searchParams.set("code_challenge", generateRandomString(43));
+ authUrl.searchParams.set("code_challenge_method", "S256");
+
+ let callbackRedirectUrl = "";
+ await unauthenticatedClient.$fetch(authUrl.toString(), {
+ onError(context) {
+ callbackRedirectUrl = context.response.headers.get("Location") || "";
+ },
+ });
+
+ expect(callbackRedirectUrl).toContain(redirectUri);
+ expect(callbackRedirectUrl).toContain("error=login_required");
+ expect(callbackRedirectUrl).toContain("state=prompt-none-login-required");
+ expect(callbackRedirectUrl).toContain(
+ `iss=${encodeURIComponent(authServerBaseUrl)}`,
+ );
+ expect(callbackRedirectUrl).not.toContain("/login");
+ });
});
describe("oauth authorize - authenticated", async () => {
@@ -179,6 +210,7 @@ describe("oauth authorize - authenticated", async () => {
});
let oauthClient: OAuthClient | null;
+ let oauthClientNeedsConsent: OAuthClient | null;
const providerId = "test";
const redirectUri = `${rpBaseUrl}/api/auth/oauth2/callback/${providerId}`;
// Registers a confidential client application to work with
@@ -195,6 +227,19 @@ describe("oauth authorize - authenticated", async () => {
expect(response?.client_secret).toBeDefined();
expect(response?.redirect_uris).toEqual([redirectUri]);
oauthClient = response;
+
+ const responseNeedsConsent = await auth.api.adminCreateOAuthClient({
+ headers,
+ body: {
+ redirect_uris: [redirectUri],
+ skip_consent: false,
+ },
+ });
+ expect(responseNeedsConsent?.client_id).toBeDefined();
+ expect(responseNeedsConsent?.user_id).toBeDefined();
+ expect(responseNeedsConsent?.client_secret).toBeDefined();
+ expect(responseNeedsConsent?.redirect_uris).toEqual([redirectUri]);
+ oauthClientNeedsConsent = responseNeedsConsent;
});
it("should authorize and include iss parameter", async () => {
@@ -292,4 +337,35 @@ describe("oauth authorize - authenticated", async () => {
expect(issParam).toBe(metadataIssuer);
});
+
+ it("should return consent_required when prompt=none and consent is needed", async () => {
+ if (!oauthClientNeedsConsent?.client_id) {
+ throw Error("beforeAll not run properly");
+ }
+
+ const authUrl = new URL(`${authServerBaseUrl}/api/auth/oauth2/authorize`);
+ authUrl.searchParams.set("client_id", oauthClientNeedsConsent.client_id);
+ authUrl.searchParams.set("redirect_uri", redirectUri);
+ authUrl.searchParams.set("response_type", "code");
+ authUrl.searchParams.set("scope", "openid");
+ authUrl.searchParams.set("state", "prompt-none-consent-required");
+ authUrl.searchParams.set("prompt", "none");
+ authUrl.searchParams.set("code_challenge", generateRandomString(43));
+ authUrl.searchParams.set("code_challenge_method", "S256");
+
+ let callbackRedirectUrl = "";
+ await client.$fetch(authUrl.toString(), {
+ onError(context) {
+ callbackRedirectUrl = context.response.headers.get("Location") || "";
+ },
+ });
+
+ expect(callbackRedirectUrl).toContain(redirectUri);
+ expect(callbackRedirectUrl).toContain("error=consent_required");
+ expect(callbackRedirectUrl).toContain("state=prompt-none-consent-required");
+ expect(callbackRedirectUrl).toContain(
+ `iss=${encodeURIComponent(authServerBaseUrl)}`,
+ );
+ expect(callbackRedirectUrl).not.toContain("/consent");
+ });
});
diff --git a/packages/oauth-provider/src/authorize.ts b/packages/oauth-provider/src/authorize.ts
index 561555b721..a6e1d896ff 100644
--- a/packages/oauth-provider/src/authorize.ts
+++ b/packages/oauth-provider/src/authorize.ts
@@ -21,6 +21,16 @@ import {
storeToken,
} from "./utils";
+/**
+ * OIDC Error Codes
+ * @see https://openid.net/specs/openid-connect-core-1_0.html#AuthError
+ */
+type OIDCAuthError =
+ | "login_required"
+ | "consent_required"
+ | "interaction_required"
+ | "account_selection_required";
+
/**
* Formats an error url
*/
@@ -53,6 +63,25 @@ export const handleRedirect = (ctx: GenericEndpointContext, uri: string) => {
}
};
+function redirectWithPromptNoneError(
+ ctx: GenericEndpointContext,
+ opts: OAuthOptions,
+ query: OAuthAuthorizationQuery,
+ error: OIDCAuthError,
+ description: string,
+) {
+ return handleRedirect(
+ ctx,
+ formatErrorURL(
+ query.redirect_uri,
+ error,
+ description,
+ query.state,
+ getIssuer(ctx, opts),
+ ),
+ );
+}
+
/**
* Validates that the issuer URL
* - MUST use HTTPS scheme (HTTP allowed for localhost in dev)
@@ -160,6 +189,7 @@ export async function authorizeEndpoint(
const promptSet = ctx.query?.prompt
? parsePrompt(ctx.query?.prompt)
: undefined;
+ const promptNone = promptSet?.has("none") ?? false;
if (promptSet?.has("select_account") && !opts.selectAccount?.page) {
throw ctx.redirect(
getErrorURL(
@@ -278,6 +308,15 @@ export async function authorizeEndpoint(
// Check for session
const session = await getSessionFromCtx(ctx);
if (!session || promptSet?.has("login") || promptSet?.has("create")) {
+ if (promptNone) {
+ return redirectWithPromptNoneError(
+ ctx,
+ opts,
+ query,
+ "login_required",
+ "authentication required",
+ );
+ }
return redirectWithPromptCode(
ctx,
opts,
@@ -302,6 +341,15 @@ export async function authorizeEndpoint(
scopes: requestedScopes,
});
if (selectedAccountRedirect) {
+ if (promptNone) {
+ return redirectWithPromptNoneError(
+ ctx,
+ opts,
+ query,
+ "account_selection_required",
+ "End-User account selection is required",
+ );
+ }
return redirectWithPromptCode(ctx, opts, "select_account");
}
}
@@ -315,6 +363,15 @@ export async function authorizeEndpoint(
scopes: requestedScopes,
});
if (signupRedirect) {
+ if (promptNone) {
+ return redirectWithPromptNoneError(
+ ctx,
+ opts,
+ query,
+ "interaction_required",
+ "End-User interaction is required",
+ );
+ }
return redirectWithPromptCode(
ctx,
opts,
@@ -332,6 +389,15 @@ export async function authorizeEndpoint(
scopes: requestedScopes,
});
if (postLoginRedirect) {
+ if (promptNone) {
+ return redirectWithPromptNoneError(
+ ctx,
+ opts,
+ query,
+ "interaction_required",
+ "End-User interaction is required",
+ );
+ }
return redirectWithPromptCode(ctx, opts, "post_login");
}
}
@@ -384,6 +450,15 @@ export async function authorizeEndpoint(
!consent ||
!requestedScopes.every((val) => consent.scopes.includes(val))
) {
+ if (promptNone) {
+ return redirectWithPromptNoneError(
+ ctx,
+ opts,
+ query,
+ "consent_required",
+ "End-User consent is required",
+ );
+ }
return redirectWithPromptCode(ctx, opts, "consent");
}
diff --git a/packages/oauth-provider/src/metadata.test.ts b/packages/oauth-provider/src/metadata.test.ts
index 8c0f2533d9..69ecc28cbe 100644
--- a/packages/oauth-provider/src/metadata.test.ts
+++ b/packages/oauth-provider/src/metadata.test.ts
@@ -107,7 +107,13 @@ describe("oauth metadata", async () => {
id_token_signing_alg_values_supported: ["EdDSA"],
end_session_endpoint: `${baseURL}/oauth2/end-session`,
acr_values_supported: ["urn:mace:incommon:iap:bronze"],
- prompt_values_supported: ["login", "consent", "create", "select_account"],
+ prompt_values_supported: [
+ "login",
+ "consent",
+ "create",
+ "select_account",
+ "none",
+ ],
});
const oauthMetadata = await auth.api.getOAuthServerConfig();
expect(oauthMetadata).toMatchObject(metadata ?? {});
diff --git a/packages/oauth-provider/src/metadata.ts b/packages/oauth-provider/src/metadata.ts
index 213dec4385..37eab3dc3d 100644
--- a/packages/oauth-provider/src/metadata.ts
+++ b/packages/oauth-provider/src/metadata.ts
@@ -100,7 +100,13 @@ export function oidcServerMetadata(
: ["EdDSA"],
end_session_endpoint: `${baseURL}/oauth2/end-session`,
acr_values_supported: ["urn:mace:incommon:iap:bronze"],
- prompt_values_supported: ["login", "consent", "create", "select_account"],
+ prompt_values_supported: [
+ "login",
+ "consent",
+ "create",
+ "select_account",
+ "none",
+ ],
};
return metadata;
}
diff --git a/packages/oauth-provider/src/oauth.test.ts b/packages/oauth-provider/src/oauth.test.ts
index d3d38e44ac..28b1614fa7 100644
--- a/packages/oauth-provider/src/oauth.test.ts
+++ b/packages/oauth-provider/src/oauth.test.ts
@@ -1164,6 +1164,109 @@ describe("oauth - prompt", async () => {
enableSelectAccount = false;
});
+ it("none - should return account_selection_required when account selection is required", async () => {
+ if (!oauthClient?.client_id || !oauthClient?.client_secret) {
+ throw Error("beforeAll not run properly");
+ }
+
+ enableSelectAccount = true;
+ try {
+ const { customFetchImpl: customFetchImplRP } = await createTestInstance({
+ prompt: "none",
+ });
+ const client = createAuthClient({
+ plugins: [genericOAuthClient()],
+ baseURL: rpBaseUrl,
+ fetchOptions: {
+ customFetchImpl: customFetchImplRP,
+ },
+ });
+
+ const data = await client.signIn.oauth2(
+ {
+ providerId,
+ callbackURL: "/success",
+ },
+ {
+ headers,
+ throw: true,
+ },
+ );
+ expect(data.url).toContain(`prompt=none`);
+
+ let callbackRedirectUri = "";
+ await serverClient.$fetch(data.url, {
+ method: "GET",
+ headers,
+ onError(context) {
+ callbackRedirectUri = context.response.headers.get("Location") || "";
+ },
+ });
+
+ expect(callbackRedirectUri).toContain(redirectUri);
+ expect(callbackRedirectUri).toContain("error=account_selection_required");
+ expect(callbackRedirectUri).toContain("state=");
+ expect(callbackRedirectUri).toContain(
+ `iss=${encodeURIComponent(authServerBaseUrl)}`,
+ );
+ expect(callbackRedirectUri).not.toContain("/select-account");
+ } finally {
+ enableSelectAccount = false;
+ }
+ });
+
+ it("none - should return interaction_required when post login is required", async () => {
+ if (!oauthClient?.client_id || !oauthClient?.client_secret) {
+ throw Error("beforeAll not run properly");
+ }
+
+ enableSelectAccount = false;
+ enablePostLogin = true;
+ try {
+ const { customFetchImpl: customFetchImplRP } = await createTestInstance({
+ prompt: "none",
+ });
+ const client = createAuthClient({
+ plugins: [genericOAuthClient()],
+ baseURL: rpBaseUrl,
+ fetchOptions: {
+ customFetchImpl: customFetchImplRP,
+ },
+ });
+
+ const data = await client.signIn.oauth2(
+ {
+ providerId,
+ callbackURL: "/success",
+ },
+ {
+ headers,
+ throw: true,
+ },
+ );
+ expect(data.url).toContain(`prompt=none`);
+
+ let callbackRedirectUri = "";
+ await serverClient.$fetch(data.url, {
+ method: "GET",
+ headers,
+ onError(context) {
+ callbackRedirectUri = context.response.headers.get("Location") || "";
+ },
+ });
+
+ expect(callbackRedirectUri).toContain(redirectUri);
+ expect(callbackRedirectUri).toContain("error=interaction_required");
+ expect(callbackRedirectUri).toContain("state=");
+ expect(callbackRedirectUri).toContain(
+ `iss=${encodeURIComponent(authServerBaseUrl)}`,
+ );
+ expect(callbackRedirectUri).not.toContain("/select-organization");
+ } finally {
+ enablePostLogin = false;
+ }
+ });
+
it("login+consent - should always redirect to login and force consent (notice consent previously given)", async ({
onTestFinished,
}) => {
diff --git a/packages/passkey/src/client.ts b/packages/passkey/src/client.ts
index 10922321cf..2ea1db37ba 100644
--- a/packages/passkey/src/client.ts
+++ b/packages/passkey/src/client.ts
@@ -77,7 +77,7 @@ export const getPasskeyActions = (
data: null,
error: {
code: "AUTH_CANCELLED",
- message: "auth cancelled",
+ message: PASSKEY_ERROR_CODES.AUTH_CANCELLED,
status: 400,
statusText: "BAD_REQUEST",
},
@@ -158,7 +158,7 @@ export const getPasskeyActions = (
data: null,
error: {
code: e.code,
- message: "previously registered",
+ message: PASSKEY_ERROR_CODES.PREVIOUSLY_REGISTERED,
status: 400,
statusText: "BAD_REQUEST",
},
@@ -169,7 +169,7 @@ export const getPasskeyActions = (
data: null,
error: {
code: e.code,
- message: "registration cancelled",
+ message: PASSKEY_ERROR_CODES.REGISTRATION_CANCELLED,
status: 400,
statusText: "BAD_REQUEST",
},
@@ -189,7 +189,8 @@ export const getPasskeyActions = (
data: null,
error: {
code: "UNKNOWN_ERROR",
- message: e instanceof Error ? e.message : "unknown error",
+ message:
+ e instanceof Error ? e.message : PASSKEY_ERROR_CODES.UNKNOWN_ERROR,
status: 500,
statusText: "INTERNAL_SERVER_ERROR",
},
diff --git a/packages/passkey/src/error-codes.ts b/packages/passkey/src/error-codes.ts
index bf724ae2d2..12ba1e3887 100644
--- a/packages/passkey/src/error-codes.ts
+++ b/packages/passkey/src/error-codes.ts
@@ -9,4 +9,8 @@ export const PASSKEY_ERROR_CODES = defineErrorCodes({
AUTHENTICATION_FAILED: "Authentication failed",
UNABLE_TO_CREATE_SESSION: "Unable to create session",
FAILED_TO_UPDATE_PASSKEY: "Failed to update passkey",
+ PREVIOUSLY_REGISTERED: "Previously registered",
+ REGISTRATION_CANCELLED: "Registration cancelled",
+ AUTH_CANCELLED: "Auth cancelled",
+ UNKNOWN_ERROR: "Unknown error",
});
diff --git a/packages/passkey/src/index.ts b/packages/passkey/src/index.ts
index 1f61327d28..97d4d3605f 100644
--- a/packages/passkey/src/index.ts
+++ b/packages/passkey/src/index.ts
@@ -21,6 +21,8 @@ declare module "@better-auth/core" {
}
}
+export { PASSKEY_ERROR_CODES } from "./error-codes";
+
const MAX_AGE_IN_SECONDS = 60 * 5; // 5 minutes
export const passkey = (options?: PasskeyOptions | undefined) => {
diff --git a/packages/stripe/src/index.ts b/packages/stripe/src/index.ts
index 4b03a8f408..c3c10c7f55 100644
--- a/packages/stripe/src/index.ts
+++ b/packages/stripe/src/index.ts
@@ -239,7 +239,7 @@ export const stripe = (options: O) => {
await client.subscriptions.update(stripeSub.id, {
items,
- proration_behavior: "create_prorations",
+ proration_behavior: plan.prorationBehavior ?? "create_prorations",
});
await ctx.adapter.update({
model: "subscription",
diff --git a/packages/stripe/src/routes.ts b/packages/stripe/src/routes.ts
index 45c2098fd8..1ac6b5833e 100644
--- a/packages/stripe/src/routes.ts
+++ b/packages/stripe/src/routes.ts
@@ -1064,7 +1064,13 @@ export const upgradeSubscription = (options: StripeOptions) => {
try {
await client.subscriptions.update(activeSubscription.id, {
items: itemUpdates,
- proration_behavior: "create_prorations",
+ proration_behavior: plan.prorationBehavior ?? "create_prorations",
+ })
+ .catch(async (e) => {
+ throw ctx.error("BAD_REQUEST", {
+ message: e.message,
+ code: e.code,
+ });
});
} catch (e) {
const err = e as { message?: string; code?: string };
diff --git a/packages/stripe/src/types.ts b/packages/stripe/src/types.ts
index 5cde36fe9c..d305046d14 100644
--- a/packages/stripe/src/types.ts
+++ b/packages/stripe/src/types.ts
@@ -81,6 +81,20 @@ export type StripePlan = {
* automatically sync the seat quantity in Stripe.
*/
seatPriceId?: string | undefined;
+ /**
+ * Proration behavior when updating this plan's subscription.
+ *
+ * Controls how Stripe handles mid-cycle price changes.
+ * - `create_prorations`: Add proration line items to the next invoice (default)
+ * - `always_invoice`: Create prorations and immediately invoice
+ * - `none`: No proration; new price applies at next billing cycle
+ *
+ * @default "create_prorations"
+ * @see https://docs.stripe.com/billing/subscriptions/prorations
+ */
+ prorationBehavior?:
+ | Stripe.SubscriptionUpdateParams.ProrationBehavior
+ | undefined;
/**
* Additional line items to include in the checkout session.
*
diff --git a/packages/stripe/test/seat-based-billing.test.ts b/packages/stripe/test/seat-based-billing.test.ts
index c174d8dc87..c677f7e3eb 100644
--- a/packages/stripe/test/seat-based-billing.test.ts
+++ b/packages/stripe/test/seat-based-billing.test.ts
@@ -516,6 +516,121 @@ describe("seat-based billing", () => {
expect(updateCall[1]!.proration_behavior).toBe("create_prorations");
});
+ it("should use custom prorationBehavior from plan config", async () => {
+ const customProrationOptions: StripeOptions = {
+ ...seatPlanOptions,
+ subscription: {
+ enabled: true,
+ plans: [
+ {
+ priceId: "price_team_base",
+ name: "team",
+ seatPriceId: "price_team_seat",
+ prorationBehavior: "always_invoice",
+ },
+ {
+ priceId: "price_enterprise_base",
+ name: "enterprise",
+ seatPriceId: "price_enterprise_seat",
+ prorationBehavior: "always_invoice",
+ },
+ ],
+ authorizeReference: async () => true,
+ },
+ };
+
+ const { client, auth, sessionSetter } = await getTestInstance(
+ {
+ plugins: [organization(), stripe(customProrationOptions)],
+ },
+ {
+ disableTestUser: true,
+ clientOptions: {
+ plugins: [
+ organizationClient(),
+ stripeClient({ subscription: true }),
+ ],
+ },
+ },
+ );
+ const ctx = await auth.$context;
+
+ await client.signUp.email(
+ {
+ email: "proration-test@test.com",
+ password: "password",
+ name: "Proration User",
+ },
+ { throw: true },
+ );
+ const headers = new Headers();
+ await client.signIn.email(
+ { email: "proration-test@test.com", password: "password" },
+ { throw: true, onSuccess: sessionSetter(headers) },
+ );
+
+ const org = await client.organization.create({
+ name: "Proration Org",
+ slug: "proration-org",
+ fetchOptions: { headers },
+ });
+ const orgId = org.data?.id as string;
+
+ await ctx.adapter.update({
+ model: "organization",
+ update: { stripeCustomerId: "cus_proration" },
+ where: [{ field: "id", value: orgId }],
+ });
+ await ctx.adapter.create({
+ model: "subscription",
+ data: {
+ referenceId: orgId,
+ stripeCustomerId: "cus_proration",
+ stripeSubscriptionId: "sub_proration",
+ status: "active",
+ plan: "team",
+ seats: 2,
+ },
+ });
+
+ mockStripe.subscriptions.list.mockResolvedValue({
+ data: [
+ {
+ id: "sub_proration",
+ status: "active",
+ cancel_at_period_end: false,
+ cancel_at: null,
+ items: {
+ data: [
+ {
+ id: "si_base",
+ price: { id: "price_team_base", lookup_key: null },
+ quantity: 1,
+ },
+ {
+ id: "si_seat",
+ price: { id: "price_team_seat", lookup_key: null },
+ quantity: 2,
+ },
+ ],
+ },
+ },
+ ],
+ });
+
+ const res = await client.subscription.upgrade({
+ plan: "enterprise",
+ customerType: "organization",
+ referenceId: orgId,
+ fetchOptions: { headers },
+ });
+
+ expect(res.data?.url).toBeDefined();
+
+ const updateCall = mockStripe.subscriptions.update.mock.calls[0]!;
+ expect(updateCall[1]!.proration_behavior).toBe("always_invoice");
+ });
+
it("should skip seat item swap when seat pricing is unchanged", async () => {
const sameSeatOptions: StripeOptions = {
...seatPlanOptions,
@@ -995,6 +1110,130 @@ describe("seat-based billing", () => {
expect.objectContaining({ id: "si_seat", quantity: 1 }),
);
});
+
+ it("should use custom prorationBehavior on member removal", async () => {
+ mockStripe.subscriptions.retrieve.mockResolvedValue({
+ id: "sub_seat_remove_proration",
+ status: "active",
+ items: {
+ data: [
+ {
+ id: "si_base",
+ price: { id: "price_team_base" },
+ quantity: 1,
+ },
+ {
+ id: "si_seat",
+ price: { id: "price_team_seat" },
+ quantity: 2,
+ },
+ ],
+ },
+ });
+
+ const customProrationOptions: StripeOptions = {
+ ...seatPlanOptions,
+ subscription: {
+ enabled: true,
+ plans: [
+ {
+ priceId: "price_team_base",
+ name: "team",
+ seatPriceId: "price_team_seat",
+ prorationBehavior: "none",
+ },
+ {
+ priceId: "price_enterprise_base",
+ name: "enterprise",
+ seatPriceId: "price_enterprise_seat",
+ prorationBehavior: "none",
+ },
+ ],
+ authorizeReference: async () => true,
+ },
+ };
+
+ const { client, auth, sessionSetter } = await getTestInstance(
+ {
+ plugins: [organization(), stripe(customProrationOptions)],
+ },
+ {
+ disableTestUser: true,
+ clientOptions: {
+ plugins: [
+ organizationClient(),
+ stripeClient({ subscription: true }),
+ ],
+ },
+ },
+ );
+ const ctx = await auth.$context;
+
+ await client.signUp.email(
+ {
+ email: "proration-remove@test.com",
+ password: "password",
+ name: "Proration Remove User",
+ },
+ { throw: true },
+ );
+ const headers = new Headers();
+ await client.signIn.email(
+ { email: "proration-remove@test.com", password: "password" },
+ { throw: true, onSuccess: sessionSetter(headers) },
+ );
+
+ const org = await client.organization.create({
+ name: "Proration Remove Org",
+ slug: "proration-remove-org",
+ fetchOptions: { headers },
+ });
+ const orgId = org.data?.id as string;
+
+ await ctx.adapter.update({
+ model: "organization",
+ update: { stripeCustomerId: "cus_proration_remove" },
+ where: [{ field: "id", value: orgId }],
+ });
+ await ctx.adapter.create({
+ model: "subscription",
+ data: {
+ referenceId: orgId,
+ stripeCustomerId: "cus_proration_remove",
+ stripeSubscriptionId: "sub_seat_remove_proration",
+ status: "active",
+ plan: "team",
+ seats: 2,
+ },
+ });
+
+ const memberUser = await ctx.adapter.create({
+ model: "user",
+ data: { email: "proration-removable@test.com", name: "Removable" },
+ });
+ const member = await ctx.adapter.create({
+ model: "member",
+ data: {
+ userId: memberUser.id,
+ organizationId: orgId,
+ role: "member",
+ createdAt: new Date(),
+ },
+ });
+
+ await client.organization.removeMember({
+ memberIdOrEmail: member.id,
+ organizationId: orgId,
+ fetchOptions: { headers },
+ });
+
+ expect(mockStripe.subscriptions.update).toHaveBeenCalledWith(
+ "sub_seat_remove_proration",
+ expect.objectContaining({
+ proration_behavior: "none",
+ }),
+ );
+ });
});
describe("webhook seat handling", () => {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 02c2bb88c7..29f25d8e2e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -223,7 +223,7 @@ importers:
version: 8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@vercel/analytics':
specifier: ^1.6.1
- version: 1.6.1(@remix-run/react@2.17.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@sveltejs/kit@2.53.3(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react@19.2.4)(svelte@5.53.5)(vue-router@4.6.4(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))
+ version: 1.6.1(@remix-run/react@2.17.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@sveltejs/kit@2.53.3(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react@19.2.4)(svelte@5.53.5)(vue-router@4.6.4(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))
'@vercel/og':
specifier: ^0.8.6
version: 0.8.6
@@ -262,7 +262,7 @@ importers:
version: 16.5.2(@mdx-js/mdx@3.1.1)(@oramacloud/client@2.1.4)(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(algoliasearch@5.46.2)(lucide-react@0.563.0(react@19.2.4))(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6)
fumadocs-mdx:
specifier: 14.2.7
- version: 14.2.7(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.2(@mdx-js/mdx@3.1.1)(@oramacloud/client@2.1.4)(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(algoliasearch@5.46.2)(lucide-react@0.563.0(react@19.2.4))(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(mdast-util-directive@3.1.0)(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react@19.2.4)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ version: 14.2.7(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.2(@mdx-js/mdx@3.1.1)(@oramacloud/client@2.1.4)(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(algoliasearch@5.46.2)(lucide-react@0.563.0(react@19.2.4))(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(mdast-util-directive@3.1.0)(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react@19.2.4)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
fumadocs-typescript:
specifier: ^5.1.2
version: 5.1.4(f245ce4745497b47498caec764b8c0fe)
@@ -441,13 +441,13 @@ importers:
version: 0.30.6
drizzle-orm:
specifier: ^0.45.1
- version: 0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
+ version: 0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
mongodb:
specifier: ^7.1.0
version: 7.1.0(socks@2.8.7)
mysql2:
specifier: ^3.18.2
- version: 3.18.2(@types/node@25.3.3)
+ version: 3.18.2(@types/node@25.4.0)
pg:
specifier: ^8.19.0
version: 8.19.0
@@ -580,7 +580,7 @@ importers:
version: 0.15.4(solid-js@1.9.11)
'@solidjs/start':
specifier: ^1.3.2
- version: 1.3.2(solid-js@1.9.11)(vinxi@0.5.11(211ca8da8f7f1018663ab89a0cf5077c))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ version: 1.3.2(solid-js@1.9.11)(vinxi@0.5.11(a10131c95cf7e0ba6b16b1f12a658513))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
better-auth:
specifier: workspace:*
version: link:../../../packages/better-auth
@@ -589,7 +589,7 @@ importers:
version: 1.9.11
vinxi:
specifier: ^0.5.11
- version: 0.5.11(211ca8da8f7f1018663ab89a0cf5077c)
+ version: 0.5.11(a10131c95cf7e0ba6b16b1f12a658513)
devDependencies:
'@better-auth-test/test-utils':
specifier: workspace:*
@@ -621,7 +621,7 @@ importers:
version: link:../test-utils
vite:
specifier: ^7.3.1
- version: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ version: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
e2e/smoke:
devDependencies:
@@ -642,7 +642,7 @@ importers:
version: 5.9.3
msw:
specifier: ^2.12.10
- version: 2.12.10(@types/node@25.3.3)(typescript@5.9.3)
+ version: 2.12.10(@types/node@25.4.0)(typescript@5.9.3)
e2e/smoke/test/fixtures/cloudflare:
dependencies:
@@ -654,10 +654,10 @@ importers:
version: link:../../../../../packages/better-auth
drizzle-orm:
specifier: ^0.45.1
- version: 0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
+ version: 0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
hono:
- specifier: ^4.12.4
- version: 4.12.5
+ specifier: ^4.12.7
+ version: 4.12.7
devDependencies:
'@cloudflare/vitest-pool-workers':
specifier: ^0.12.18
@@ -686,13 +686,13 @@ importers:
dependencies:
'@hono/node-server':
specifier: ^1.19.10
- version: 1.19.11(hono@4.12.5)
+ version: 1.19.11(hono@4.12.7)
better-auth:
specifier: workspace:*
version: link:../../../../../packages/better-auth
hono:
- specifier: ^4.12.4
- version: 4.12.5
+ specifier: ^4.12.7
+ version: 4.12.7
e2e/smoke/test/fixtures/tsconfig-declaration:
dependencies:
@@ -713,7 +713,7 @@ importers:
version: link:../../../../../packages/better-auth
stripe:
specifier: ^20.4.0
- version: 20.4.0(@types/node@25.3.3)
+ version: 20.4.0(@types/node@25.4.0)
e2e/smoke/test/fixtures/tsconfig-exact-optional-property-types:
dependencies:
@@ -750,7 +750,7 @@ importers:
devDependencies:
vite:
specifier: ^7.3.1
- version: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ version: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
landing:
dependencies:
@@ -777,7 +777,7 @@ importers:
version: 5.2.2(react-hook-form@7.71.2(react@19.2.4))
'@inkeep/ai-sdk-provider':
specifier: ^0.54.0
- version: 0.54.0(1b78cb9635f1622c0428a81b09f6eeb0)
+ version: 0.54.0(0641e63febbcd12aff52f2c9ed736642)
'@radix-ui/react-checkbox':
specifier: ^1.3.3
version: 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -1049,7 +1049,7 @@ importers:
version: 0.31.9
drizzle-orm:
specifier: '>=0.41.0'
- version: 0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
+ version: 0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
jose:
specifier: ^6.1.3
version: 6.1.3
@@ -1061,7 +1061,7 @@ importers:
version: 7.1.0(socks@2.8.7)
mysql2:
specifier: ^3.0.0
- version: 3.18.2(@types/node@25.3.3)
+ version: 3.18.2(@types/node@25.4.0)
nanostores:
specifier: ^1.1.1
version: 1.1.1
@@ -1092,13 +1092,13 @@ importers:
version: 1.30.1(@opentelemetry/api@1.9.0)
'@sveltejs/kit':
specifier: ^2.53.3
- version: 2.53.3(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ version: 2.53.3(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@tanstack/react-start':
specifier: ^1.163.2
- version: 1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ version: 1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@tanstack/solid-start':
specifier: ^1.163.2
- version: 1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(solid-js@1.9.11)(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ version: 1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(solid-js@1.9.11)(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@types/better-sqlite3':
specifier: ^7.6.13
version: 7.6.13
@@ -1128,7 +1128,7 @@ importers:
version: 1.9.0
msw:
specifier: ^2.12.10
- version: 2.12.10(@types/node@25.3.3)(typescript@5.9.3)
+ version: 2.12.10(@types/node@25.4.0)(typescript@5.9.3)
next:
specifier: ^16.1.6
version: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1)
@@ -1161,7 +1161,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^4.0.18
- version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.3)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.3.3)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.4.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.4.0)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vue:
specifier: ^3.5.29
version: 3.5.29(typescript@5.9.3)
@@ -1215,7 +1215,7 @@ importers:
version: 17.3.1
drizzle-orm:
specifier: ^0.41.0
- version: 0.41.0(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
+ version: 0.41.0(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
get-tsconfig:
specifier: ^4.13.6
version: 4.13.6
@@ -1331,7 +1331,7 @@ importers:
version: 0.3.1
drizzle-orm:
specifier: ^0.45.1
- version: 0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
+ version: 0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
tsdown:
specifier: 'catalog:'
version: 0.21.1(@arethetypeswrong/core@0.18.2)(oxc-resolver@11.19.0)(publint@0.3.17)(synckit@0.11.11)(typescript@5.9.3)
@@ -1687,7 +1687,7 @@ importers:
version: 2.0.2(zod@4.3.6)
stripe:
specifier: ^20.4.0
- version: 20.4.0(@types/node@25.3.3)
+ version: 20.4.0(@types/node@25.4.0)
tsdown:
specifier: 'catalog:'
version: 0.21.1(@arethetypeswrong/core@0.18.2)(oxc-resolver@11.19.0)(publint@0.3.17)(synckit@0.11.11)(typescript@5.9.3)
@@ -1724,7 +1724,7 @@ importers:
version: 0.21.1(@arethetypeswrong/core@0.18.2)(oxc-resolver@11.19.0)(publint@0.3.17)(synckit@0.11.11)(typescript@5.9.3)
vitest:
specifier: catalog:vitest
- version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.3)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.3.3)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.4.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.4.0)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
test:
devDependencies:
@@ -1739,7 +1739,7 @@ importers:
version: link:../packages/better-auth
msw:
specifier: ^2.12.10
- version: 2.12.10(@types/node@25.3.3)(typescript@5.9.3)
+ version: 2.12.10(@types/node@25.4.0)(typescript@5.9.3)
openid-client:
specifier: ^6.8.2
version: 6.8.2
@@ -1748,7 +1748,7 @@ importers:
version: 7.22.0
vitest:
specifier: catalog:vitest
- version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.3)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.3.3)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.4.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.4.0)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
packages:
@@ -4656,8 +4656,8 @@ packages:
resolution: {integrity: sha512-qziF8R9kf7mRNgSpmUH96O0aV1ZiwK4c9ZecFQbDSQuYhgy9GY1WTjiQF0oQnohjTjWNtXhrU39LAeXWNLaBJg==}
engines: {node: ^18.14.0 || >=20}
- '@netlify/otel@5.1.1':
- resolution: {integrity: sha512-WCSlOsd0a0Vn+iPC5PYru7rq/5/QpBGnvam6C7cq9DEiTFqfwExNoxk6SWI0T6nI56gkBryaGsENLTEnUue1lg==}
+ '@netlify/otel@5.1.2':
+ resolution: {integrity: sha512-tIA8W/rC+Duz815uwoEaFTZ4oiIU478gE180hNREMWefJxBcZoS5GYky808FdGNbML2sxNX56LhkD20rSnUTbg==}
engines: {node: ^18.14.0 || >=20.6.1}
'@netlify/runtime-utils@2.2.1':
@@ -8040,8 +8040,8 @@ packages:
'@types/node@25.3.2':
resolution: {integrity: sha512-RpV6r/ij22zRRdyBPcxDeKAzH43phWVKEjL2iksqo1Vz3CuBUrgmPpPhALKiRfU7OMCmeeO9vECBMsV0hMTG8Q==}
- '@types/node@25.3.3':
- resolution: {integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==}
+ '@types/node@25.4.0':
+ resolution: {integrity: sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw==}
'@types/offscreencanvas@2019.7.3':
resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==}
@@ -11542,8 +11542,8 @@ packages:
resolution: {integrity: sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==}
engines: {node: '>=16.9.0'}
- hono@4.12.5:
- resolution: {integrity: sha512-3qq+FUBtlTHhtYxbxheZgY8NIFnkkC/MR8u5TTsr7YZ3wixryQ3cCwn3iZbg8p8B88iDBBAYSfZDS75t8MN7Vg==}
+ hono@4.12.7:
+ resolution: {integrity: sha512-jq9l1DM0zVIvsm3lv9Nw9nlJnMNPOcAtsbsgiUhWcFzPE99Gvo6yRTlszSLLYacMeQ6quHD6hMfId8crVHvexw==}
engines: {node: '>=16.9.0'}
hookable@5.5.3:
@@ -18313,7 +18313,7 @@ snapshots:
cjs-module-lexer: 1.4.3
esbuild: 0.27.3
miniflare: 4.20260305.0
- vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.3)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.3.3)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.4.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.4.0)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
wrangler: 4.69.0(@cloudflare/workers-types@4.20260226.1)
transitivePeerDependencies:
- '@cloudflare/workers-types'
@@ -19461,25 +19461,25 @@ snapshots:
'@hongzhiyuan/preact@10.28.0-fc4af453': {}
- '@hono/node-server@1.19.11(hono@4.12.5)':
+ '@hono/node-server@1.19.11(hono@4.12.7)':
dependencies:
- hono: 4.12.5
+ hono: 4.12.7
'@hono/node-server@1.19.9(hono@4.11.4)':
dependencies:
hono: 4.11.4
- '@hono/zod-openapi@1.2.2(hono@4.12.5)(zod@4.3.6)':
+ '@hono/zod-openapi@1.2.2(hono@4.12.7)(zod@4.3.6)':
dependencies:
'@asteasolutions/zod-to-openapi': 8.4.3(zod@4.3.6)
- '@hono/zod-validator': 0.7.6(hono@4.12.5)(zod@4.3.6)
- hono: 4.12.5
+ '@hono/zod-validator': 0.7.6(hono@4.12.7)(zod@4.3.6)
+ hono: 4.12.7
openapi3-ts: 4.5.0
zod: 4.3.6
- '@hono/zod-validator@0.7.6(hono@4.12.5)(zod@4.3.6)':
+ '@hono/zod-validator@0.7.6(hono@4.12.7)(zod@4.3.6)':
dependencies:
- hono: 4.12.5
+ hono: 4.12.7
zod: 4.3.6
'@hookform/resolvers@5.2.2(react-hook-form@7.71.2(react@19.2.4))':
@@ -19591,7 +19591,7 @@ snapshots:
'@img/sharp-win32-x64@0.34.5':
optional: true
- '@inkeep/agents-core@0.54.0(c35fa3d50074c0ae47b211ab383999b2)':
+ '@inkeep/agents-core@0.54.0(ac93cd682e6997680cde6e3fe049558b)':
dependencies:
'@ai-sdk/anthropic': 3.0.7(zod@4.3.6)
'@ai-sdk/azure': 3.0.38(zod@4.3.6)
@@ -19605,7 +19605,7 @@ snapshots:
'@better-auth/sso': 1.4.19(@better-auth/utils@0.3.0)(better-auth@1.4.19(37874412ccc7e51cb3cf44cf8d1a18ef))(better-call@1.1.8(zod@4.3.6))
'@composio/core': 0.2.6(ws@8.19.0)(zod@4.3.6)
'@electric-sql/pglite': 0.3.15
- '@hono/zod-openapi': 1.2.2(hono@4.12.5)(zod@4.3.6)
+ '@hono/zod-openapi': 1.2.2(hono@4.12.7)(zod@4.3.6)
'@modelcontextprotocol/sdk': 1.27.1(zod@4.3.6)
'@nangohq/node': 0.69.38
'@nangohq/types': 0.69.38
@@ -19623,7 +19623,7 @@ snapshots:
drizzle-zod: 0.8.3(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.2))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(zod@4.3.6)
exit-hook: 4.0.0
find-up: 7.0.0
- hono: 4.12.5
+ hono: 4.12.7
iwanthue: 2.0.0
jmespath: 0.16.0
jose: 6.1.3
@@ -19694,11 +19694,11 @@ snapshots:
- vue
- ws
- '@inkeep/ai-sdk-provider@0.54.0(1b78cb9635f1622c0428a81b09f6eeb0)':
+ '@inkeep/ai-sdk-provider@0.54.0(0641e63febbcd12aff52f2c9ed736642)':
dependencies:
'@ai-sdk/provider': 3.0.2
'@ai-sdk/provider-utils': 4.0.4(zod@4.3.6)
- '@inkeep/agents-core': 0.54.0(c35fa3d50074c0ae47b211ab383999b2)
+ '@inkeep/agents-core': 0.54.0(ac93cd682e6997680cde6e3fe049558b)
zod: 4.3.6
transitivePeerDependencies:
- '@aws-sdk/client-rds-data'
@@ -19761,12 +19761,12 @@ snapshots:
'@types/node': 25.3.2
optional: true
- '@inquirer/confirm@5.1.21(@types/node@25.3.3)':
+ '@inquirer/confirm@5.1.21(@types/node@25.4.0)':
dependencies:
- '@inquirer/core': 10.3.2(@types/node@25.3.3)
- '@inquirer/type': 3.0.10(@types/node@25.3.3)
+ '@inquirer/core': 10.3.2(@types/node@25.4.0)
+ '@inquirer/type': 3.0.10(@types/node@25.4.0)
optionalDependencies:
- '@types/node': 25.3.3
+ '@types/node': 25.4.0
'@inquirer/core@10.3.2(@types/node@25.3.2)':
dependencies:
@@ -19782,18 +19782,18 @@ snapshots:
'@types/node': 25.3.2
optional: true
- '@inquirer/core@10.3.2(@types/node@25.3.3)':
+ '@inquirer/core@10.3.2(@types/node@25.4.0)':
dependencies:
'@inquirer/ansi': 1.0.2
'@inquirer/figures': 1.0.15
- '@inquirer/type': 3.0.10(@types/node@25.3.3)
+ '@inquirer/type': 3.0.10(@types/node@25.4.0)
cli-width: 4.1.0
mute-stream: 2.0.0
signal-exit: 4.1.0
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.3
optionalDependencies:
- '@types/node': 25.3.3
+ '@types/node': 25.4.0
'@inquirer/figures@1.0.15': {}
@@ -19802,9 +19802,9 @@ snapshots:
'@types/node': 25.3.2
optional: true
- '@inquirer/type@3.0.10(@types/node@25.3.3)':
+ '@inquirer/type@3.0.10(@types/node@25.4.0)':
optionalDependencies:
- '@types/node': 25.3.3
+ '@types/node': 25.4.0
'@ioredis/commands@1.5.0': {}
@@ -20176,7 +20176,7 @@ snapshots:
'@modelcontextprotocol/sdk@1.27.1(zod@3.25.76)':
dependencies:
- '@hono/node-server': 1.19.11(hono@4.12.5)
+ '@hono/node-server': 1.19.11(hono@4.12.7)
ajv: 8.18.0
ajv-formats: 3.0.1(ajv@8.18.0)
content-type: 1.0.5
@@ -20186,7 +20186,7 @@ snapshots:
eventsource-parser: 3.0.6
express: 5.2.1
express-rate-limit: 8.2.1(express@5.2.1)
- hono: 4.12.5
+ hono: 4.12.7
jose: 6.1.3
json-schema-typed: 8.0.2
pkce-challenge: 5.0.1
@@ -20198,7 +20198,7 @@ snapshots:
'@modelcontextprotocol/sdk@1.27.1(zod@4.3.6)':
dependencies:
- '@hono/node-server': 1.19.11(hono@4.12.5)
+ '@hono/node-server': 1.19.11(hono@4.12.7)
ajv: 8.18.0
ajv-formats: 3.0.1(ajv@8.18.0)
content-type: 1.0.5
@@ -20208,7 +20208,7 @@ snapshots:
eventsource-parser: 3.0.6
express: 5.2.1
express-rate-limit: 8.2.1(express@5.2.1)
- hono: 4.12.5
+ hono: 4.12.7
jose: 6.1.3
json-schema-typed: 8.0.2
pkce-challenge: 5.0.1
@@ -20320,7 +20320,7 @@ snapshots:
'@netlify/blobs@10.5.0':
dependencies:
'@netlify/dev-utils': 4.3.3
- '@netlify/otel': 5.1.1
+ '@netlify/otel': 5.1.2
'@netlify/runtime-utils': 2.2.1
transitivePeerDependencies:
- supports-color
@@ -20345,7 +20345,7 @@ snapshots:
write-file-atomic: 5.0.1
optional: true
- '@netlify/otel@5.1.1':
+ '@netlify/otel@5.1.2':
dependencies:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.30.1(@opentelemetry/api@1.9.0)
@@ -23674,11 +23674,11 @@ snapshots:
dependencies:
solid-js: 1.9.11
- '@solidjs/start@1.3.2(solid-js@1.9.11)(vinxi@0.5.11(211ca8da8f7f1018663ab89a0cf5077c))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@solidjs/start@1.3.2(solid-js@1.9.11)(vinxi@0.5.11(a10131c95cf7e0ba6b16b1f12a658513))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
- '@tanstack/server-functions-plugin': 1.121.21(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
- '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(211ca8da8f7f1018663ab89a0cf5077c))
- '@vinxi/server-components': 0.5.1(vinxi@0.5.11(211ca8da8f7f1018663ab89a0cf5077c))
+ '@tanstack/server-functions-plugin': 1.121.21(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(a10131c95cf7e0ba6b16b1f12a658513))
+ '@vinxi/server-components': 0.5.1(vinxi@0.5.11(a10131c95cf7e0ba6b16b1f12a658513))
cookie-es: 2.0.0
defu: 6.1.4
error-stack-parser: 2.1.4
@@ -23690,8 +23690,8 @@ snapshots:
source-map-js: 1.2.1
terracotta: 1.1.0(solid-js@1.9.11)
tinyglobby: 0.2.15
- vinxi: 0.5.11(211ca8da8f7f1018663ab89a0cf5077c)
- vite-plugin-solid: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ vinxi: 0.5.11(a10131c95cf7e0ba6b16b1f12a658513)
+ vite-plugin-solid: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
transitivePeerDependencies:
- '@testing-library/jest-dom'
- solid-js
@@ -23732,11 +23732,11 @@ snapshots:
typescript: 5.9.3
optional: true
- '@sveltejs/kit@2.53.3(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@sveltejs/kit@2.53.3(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@standard-schema/spec': 1.1.0
'@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0)
- '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@types/cookie': 0.6.0
acorn: 8.16.0
cookie: 0.6.0
@@ -23748,7 +23748,7 @@ snapshots:
set-cookie-parser: 3.0.1
sirv: 3.0.2
svelte: 5.53.5
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
optionalDependencies:
'@opentelemetry/api': 1.9.0
typescript: 5.9.3
@@ -23761,12 +23761,12 @@ snapshots:
vite: 7.3.1(@types/node@25.3.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
optional: true
- '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
- '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
obug: 2.1.1
svelte: 5.53.5
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
'@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
@@ -23781,15 +23781,15 @@ snapshots:
- supports-color
optional: true
- '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
debug: 4.4.3
deepmerge: 4.3.1
magic-string: 0.30.21
svelte: 5.53.5
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
- vitefu: 1.1.2(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vitefu: 1.1.2(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
transitivePeerDependencies:
- supports-color
@@ -23870,7 +23870,7 @@ snapshots:
postcss: 8.5.6
tailwindcss: 4.2.1
- '@tanstack/directive-functions-plugin@1.121.21(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@tanstack/directive-functions-plugin@1.121.21(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/core': 7.29.0
@@ -23879,7 +23879,7 @@ snapshots:
'@tanstack/router-utils': 1.161.4
babel-dead-code-elimination: 1.0.12
tiny-invariant: 1.3.3
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
@@ -23939,19 +23939,19 @@ snapshots:
- webpack
optional: true
- '@tanstack/react-start@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@tanstack/react-start@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@tanstack/react-router': 1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@tanstack/react-start-client': 1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@tanstack/react-start-server': 1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@tanstack/router-utils': 1.161.4
'@tanstack/start-client-core': 1.163.2
- '@tanstack/start-plugin-core': 1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@tanstack/start-plugin-core': 1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@tanstack/start-server-core': 1.163.2
pathe: 2.0.3
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- '@rsbuild/core'
- crossws
@@ -24018,7 +24018,7 @@ snapshots:
- supports-color
optional: true
- '@tanstack/router-plugin@1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@tanstack/router-plugin@1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@babel/core': 7.29.0
'@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
@@ -24035,8 +24035,8 @@ snapshots:
zod: 3.25.76
optionalDependencies:
'@tanstack/react-router': 1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
- vite-plugin-solid: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite-plugin-solid: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
transitivePeerDependencies:
- supports-color
@@ -24054,7 +24054,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@tanstack/server-functions-plugin@1.121.21(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@tanstack/server-functions-plugin@1.121.21(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/core': 7.29.0
@@ -24063,7 +24063,7 @@ snapshots:
'@babel/template': 7.28.6
'@babel/traverse': 7.29.0
'@babel/types': 7.29.0
- '@tanstack/directive-functions-plugin': 1.121.21(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@tanstack/directive-functions-plugin': 1.121.21(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
babel-dead-code-elimination: 1.0.12
tiny-invariant: 1.3.3
transitivePeerDependencies:
@@ -24124,17 +24124,17 @@ snapshots:
- webpack
optional: true
- '@tanstack/solid-start@1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(solid-js@1.9.11)(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@tanstack/solid-start@1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(solid-js@1.9.11)(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@tanstack/solid-router': 1.163.2(solid-js@1.9.11)
'@tanstack/solid-start-client': 1.163.2(solid-js@1.9.11)
'@tanstack/solid-start-server': 1.163.2(solid-js@1.9.11)
'@tanstack/start-client-core': 1.163.2
- '@tanstack/start-plugin-core': 1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@tanstack/start-plugin-core': 1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@tanstack/start-server-core': 1.163.2
pathe: 2.0.3
solid-js: 1.9.11
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- '@rsbuild/core'
- '@tanstack/react-router'
@@ -24192,7 +24192,7 @@ snapshots:
- webpack
optional: true
- '@tanstack/start-plugin-core@1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@tanstack/start-plugin-core@1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@babel/code-frame': 7.27.1
'@babel/core': 7.29.0
@@ -24200,7 +24200,7 @@ snapshots:
'@rolldown/pluginutils': 1.0.0-beta.40
'@tanstack/router-core': 1.163.2
'@tanstack/router-generator': 1.163.2
- '@tanstack/router-plugin': 1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@tanstack/router-plugin': 1.163.2(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@tanstack/router-utils': 1.161.4
'@tanstack/start-client-core': 1.163.2
'@tanstack/start-server-core': 1.163.2
@@ -24212,8 +24212,8 @@ snapshots:
srvx: 0.11.8
tinyglobby: 0.2.15
ufo: 1.6.3
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
- vitefu: 1.1.2(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vitefu: 1.1.2(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
xmlbuilder2: 4.0.3
zod: 3.25.76
transitivePeerDependencies:
@@ -24734,7 +24734,7 @@ snapshots:
dependencies:
undici-types: 7.18.2
- '@types/node@25.3.3':
+ '@types/node@25.4.0':
dependencies:
undici-types: 7.18.2
@@ -24908,10 +24908,10 @@ snapshots:
vue: 3.5.29(typescript@5.9.3)
vue-router: 4.6.4(vue@3.5.29(typescript@5.9.3))
- '@vercel/analytics@1.6.1(@remix-run/react@2.17.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@sveltejs/kit@2.53.3(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react@19.2.4)(svelte@5.53.5)(vue-router@4.6.4(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))':
+ '@vercel/analytics@1.6.1(@remix-run/react@2.17.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@sveltejs/kit@2.53.3(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react@19.2.4)(svelte@5.53.5)(vue-router@4.6.4(vue@3.5.29(typescript@5.9.3)))(vue@3.5.29(typescript@5.9.3))':
optionalDependencies:
'@remix-run/react': 2.17.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
- '@sveltejs/kit': 2.53.3(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@sveltejs/kit': 2.53.3(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.53.5)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)))(svelte@5.53.5)(typescript@5.9.3)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
next: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1)
react: 19.2.4
svelte: 5.53.5
@@ -24973,7 +24973,7 @@ snapshots:
untun: 0.1.3
uqr: 0.1.2
- '@vinxi/plugin-directives@0.5.1(vinxi@0.5.11(211ca8da8f7f1018663ab89a0cf5077c))':
+ '@vinxi/plugin-directives@0.5.1(vinxi@0.5.11(a10131c95cf7e0ba6b16b1f12a658513))':
dependencies:
'@babel/parser': 7.29.0
acorn: 8.16.0
@@ -24984,18 +24984,18 @@ snapshots:
magicast: 0.2.11
recast: 0.23.11
tslib: 2.8.1
- vinxi: 0.5.11(211ca8da8f7f1018663ab89a0cf5077c)
+ vinxi: 0.5.11(a10131c95cf7e0ba6b16b1f12a658513)
- '@vinxi/server-components@0.5.1(vinxi@0.5.11(211ca8da8f7f1018663ab89a0cf5077c))':
+ '@vinxi/server-components@0.5.1(vinxi@0.5.11(a10131c95cf7e0ba6b16b1f12a658513))':
dependencies:
- '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(211ca8da8f7f1018663ab89a0cf5077c))
+ '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.11(a10131c95cf7e0ba6b16b1f12a658513))
acorn: 8.16.0
acorn-loose: 8.5.2
acorn-typescript: 1.4.13(acorn@8.16.0)
astring: 1.9.0
magicast: 0.2.11
recast: 0.23.11
- vinxi: 0.5.11(211ca8da8f7f1018663ab89a0cf5077c)
+ vinxi: 0.5.11(a10131c95cf7e0ba6b16b1f12a658513)
'@vitest/coverage-istanbul@4.0.18(vitest@4.0.18)':
dependencies:
@@ -25031,14 +25031,14 @@ snapshots:
msw: 2.12.10(@types/node@25.3.2)(typescript@5.9.3)
vite: 7.3.1(@types/node@25.3.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
- '@vitest/mocker@4.0.18(msw@2.12.10(@types/node@25.3.3)(typescript@5.9.3))(vite@7.3.1(@types/node@25.3.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
+ '@vitest/mocker@4.0.18(msw@2.12.10(@types/node@25.4.0)(typescript@5.9.3))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
'@vitest/spy': 4.0.18
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- msw: 2.12.10(@types/node@25.3.3)(typescript@5.9.3)
- vite: 7.3.1(@types/node@25.3.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ msw: 2.12.10(@types/node@25.4.0)(typescript@5.9.3)
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
'@vitest/pretty-format@4.0.18':
dependencies:
@@ -25066,7 +25066,7 @@ snapshots:
sirv: 3.0.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.2)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.3.2)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.4.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.4.0)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
'@vitest/utils@4.0.18':
dependencies:
@@ -26790,13 +26790,13 @@ snapshots:
dayjs@1.11.19: {}
- db0@0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.3.3)):
+ db0@0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.4.0)):
optionalDependencies:
'@electric-sql/pglite': 0.3.15
'@libsql/client': 0.17.0(encoding@0.1.13)
better-sqlite3: 12.6.2
- drizzle-orm: 0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
- mysql2: 3.18.2(@types/node@25.3.3)
+ drizzle-orm: 0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))
+ mysql2: 3.18.2(@types/node@25.4.0)
debounce-fn@6.0.0:
dependencies:
@@ -26949,7 +26949,7 @@ snapshots:
dotenv-expand@11.0.7:
dependencies:
- dotenv: 16.4.7
+ dotenv: 16.6.1
dotenv-expand@12.0.3:
dependencies:
@@ -26982,7 +26982,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- drizzle-orm@0.41.0(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)):
+ drizzle-orm@0.41.0(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)):
optionalDependencies:
'@cloudflare/workers-types': 4.20260226.1
'@electric-sql/pglite': 0.3.15
@@ -26995,7 +26995,7 @@ snapshots:
bun-types: 1.3.9
gel: 2.2.0
kysely: 0.28.11
- mysql2: 3.18.2(@types/node@25.3.3)
+ mysql2: 3.18.2(@types/node@25.4.0)
pg: 8.19.0
postgres: 3.4.8
prisma: 7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
@@ -27018,7 +27018,7 @@ snapshots:
postgres: 3.4.8
prisma: 7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
- drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)):
+ drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)):
optionalDependencies:
'@cloudflare/workers-types': 4.20260226.1
'@electric-sql/pglite': 0.3.15
@@ -27031,12 +27031,12 @@ snapshots:
bun-types: 1.3.9
gel: 2.2.0
kysely: 0.28.11
- mysql2: 3.18.2(@types/node@25.3.3)
+ mysql2: 3.18.2(@types/node@25.4.0)
pg: 8.19.0
postgres: 3.4.8
prisma: 7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.3.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
- drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)):
+ drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)):
optionalDependencies:
'@cloudflare/workers-types': 4.20260226.1
'@electric-sql/pglite': 0.3.15
@@ -27049,7 +27049,7 @@ snapshots:
bun-types: 1.3.9
gel: 2.2.0
kysely: 0.28.11
- mysql2: 3.18.2(@types/node@25.3.3)
+ mysql2: 3.18.2(@types/node@25.4.0)
pg: 8.19.0
postgres: 3.4.8
prisma: 7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
@@ -28133,7 +28133,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- fumadocs-mdx@14.2.7(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.2(@mdx-js/mdx@3.1.1)(@oramacloud/client@2.1.4)(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(algoliasearch@5.46.2)(lucide-react@0.563.0(react@19.2.4))(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(mdast-util-directive@3.1.0)(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react@19.2.4)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
+ fumadocs-mdx@14.2.7(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.2(@mdx-js/mdx@3.1.1)(@oramacloud/client@2.1.4)(@tanstack/react-router@1.163.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(algoliasearch@5.46.2)(lucide-react@0.563.0(react@19.2.4))(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(mdast-util-directive@3.1.0)(mdast-util-mdx-jsx@3.2.0)(next@16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1))(react@19.2.4)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
'@mdx-js/mdx': 3.1.1
'@standard-schema/spec': 1.1.0
@@ -28161,7 +28161,7 @@ snapshots:
mdast-util-mdx-jsx: 3.2.0
next: 16.1.6(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.97.1)
react: 19.2.4
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
transitivePeerDependencies:
- supports-color
@@ -28771,7 +28771,7 @@ snapshots:
hono@4.11.4: {}
- hono@4.12.5: {}
+ hono@4.12.7: {}
hookable@5.5.3: {}
@@ -31201,9 +31201,9 @@ snapshots:
- '@types/node'
optional: true
- msw@2.12.10(@types/node@25.3.3)(typescript@5.9.3):
+ msw@2.12.10(@types/node@25.4.0)(typescript@5.9.3):
dependencies:
- '@inquirer/confirm': 5.1.21(@types/node@25.3.3)
+ '@inquirer/confirm': 5.1.21(@types/node@25.4.0)
'@mswjs/interceptors': 0.41.3
'@open-draft/deferred-promise': 2.2.0
'@types/statuses': 2.0.6
@@ -31253,9 +31253,9 @@ snapshots:
sql-escaper: 1.3.3
optional: true
- mysql2@3.18.2(@types/node@25.3.3):
+ mysql2@3.18.2(@types/node@25.4.0):
dependencies:
- '@types/node': 25.3.3
+ '@types/node': 25.4.0
aws-ssl-profiles: 1.1.2
denque: 2.1.0
generate-function: 2.3.1
@@ -31332,7 +31332,7 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
- nitropack@2.13.1(@azure/identity@4.13.0)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@netlify/blobs@10.5.0)(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(encoding@0.1.13)(mysql2@3.18.2(@types/node@25.3.3))(rolldown@1.0.0-rc.8):
+ nitropack@2.13.1(@azure/identity@4.13.0)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@netlify/blobs@10.5.0)(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(encoding@0.1.13)(mysql2@3.18.2(@types/node@25.4.0))(rolldown@1.0.0-rc.8):
dependencies:
'@cloudflare/kv-asset-handler': 0.4.2
'@rollup/plugin-alias': 6.0.0(rollup@4.59.0)
@@ -31353,7 +31353,7 @@ snapshots:
cookie-es: 2.0.0
croner: 9.1.0
crossws: 0.3.5
- db0: 0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.3.3))
+ db0: 0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.4.0))
defu: 6.1.4
destr: 2.0.5
dot-prop: 10.1.0
@@ -31399,7 +31399,7 @@ snapshots:
unenv: 2.0.0-rc.24
unimport: 5.7.0
unplugin-utils: 0.3.1
- unstorage: 1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.5.0)(db0@0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.3.3)))(ioredis@5.9.3)
+ unstorage: 1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.5.0)(db0@0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.4.0)))(ioredis@5.9.3)
untyped: 2.0.0
unwasm: 0.5.3
youch: 4.1.0
@@ -34719,9 +34719,9 @@ snapshots:
dependencies:
js-tokens: 9.0.1
- stripe@20.4.0(@types/node@25.3.3):
+ stripe@20.4.0(@types/node@25.4.0):
optionalDependencies:
- '@types/node': 25.3.3
+ '@types/node': 25.4.0
strnum@1.1.2:
optional: true
@@ -35527,7 +35527,7 @@ snapshots:
optionalDependencies:
synckit: 0.11.11
- unstorage@1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.5.0)(db0@0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.3.3)))(ioredis@5.9.3):
+ unstorage@1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.5.0)(db0@0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.4.0)))(ioredis@5.9.3):
dependencies:
anymatch: 3.1.3
chokidar: 5.0.0
@@ -35540,7 +35540,7 @@ snapshots:
optionalDependencies:
'@azure/identity': 4.13.0
'@netlify/blobs': 10.5.0
- db0: 0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.3.3))
+ db0: 0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.4.0))
ioredis: 5.9.3
until-async@3.0.2: {}
@@ -35699,7 +35699,7 @@ snapshots:
d3-time: 3.1.0
d3-timer: 3.0.1
- vinxi@0.5.11(211ca8da8f7f1018663ab89a0cf5077c):
+ vinxi@0.5.11(a10131c95cf7e0ba6b16b1f12a658513):
dependencies:
'@babel/core': 7.29.0
'@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
@@ -35720,7 +35720,7 @@ snapshots:
hookable: 5.5.3
http-proxy: 1.18.1
micromatch: 4.0.8
- nitropack: 2.13.1(@azure/identity@4.13.0)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@netlify/blobs@10.5.0)(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(encoding@0.1.13)(mysql2@3.18.2(@types/node@25.3.3))(rolldown@1.0.0-rc.8)
+ nitropack: 2.13.1(@azure/identity@4.13.0)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@netlify/blobs@10.5.0)(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(encoding@0.1.13)(mysql2@3.18.2(@types/node@25.4.0))(rolldown@1.0.0-rc.8)
node-fetch-native: 1.6.7
path-to-regexp: 6.3.0
pathe: 1.1.2
@@ -35732,8 +35732,8 @@ snapshots:
ufo: 1.6.3
unctx: 2.5.0
unenv: 1.10.0
- unstorage: 1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.5.0)(db0@0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.3.3))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.3.3)))(ioredis@5.9.3)
- vite: 6.4.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ unstorage: 1.17.4(@azure/identity@4.13.0)(@netlify/blobs@10.5.0)(db0@0.3.4(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(better-sqlite3@12.6.2)(drizzle-orm@0.45.1(@cloudflare/workers-types@4.20260226.1)(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.0(encoding@0.1.13))(@opentelemetry/api@1.9.0)(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.6.2)(bun-types@1.3.9)(gel@2.2.0)(kysely@0.28.11)(mysql2@3.18.2(@types/node@25.4.0))(pg@8.19.0)(postgres@3.4.8)(prisma@7.4.1(@types/react@19.2.14)(better-sqlite3@12.6.2)(magicast@0.5.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)))(mysql2@3.18.2(@types/node@25.4.0)))(ioredis@5.9.3)
+ vite: 6.4.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
zod: 4.3.6
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -35794,7 +35794,7 @@ snapshots:
- supports-color
optional: true
- vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
+ vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
'@babel/core': 7.29.0
'@types/babel__core': 7.20.5
@@ -35802,12 +35802,12 @@ snapshots:
merge-anything: 5.1.7
solid-js: 1.9.11
solid-refresh: 0.6.3(solid-js@1.9.11)
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
- vitefu: 1.1.2(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vitefu: 1.1.2(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
transitivePeerDependencies:
- supports-color
- vite@6.4.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ vite@6.4.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
esbuild: 0.25.12
fdir: 6.5.0(picomatch@4.0.3)
@@ -35816,7 +35816,7 @@ snapshots:
rollup: 4.59.0
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 25.3.3
+ '@types/node': 25.4.0
fsevents: 2.3.3
jiti: 2.6.1
less: 4.5.1
@@ -35845,7 +35845,7 @@ snapshots:
tsx: 4.21.0
yaml: 2.8.2
- vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
esbuild: 0.27.3
fdir: 6.5.0(picomatch@4.0.3)
@@ -35854,7 +35854,7 @@ snapshots:
rollup: 4.59.0
tinyglobby: 0.2.15
optionalDependencies:
- '@types/node': 25.3.3
+ '@types/node': 25.4.0
fsevents: 2.3.3
jiti: 2.6.1
less: 4.5.1
@@ -35869,9 +35869,9 @@ snapshots:
vite: 7.3.1(@types/node@25.3.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
optional: true
- vitefu@1.1.2(vite@7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
+ vitefu@1.1.2(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
optionalDependencies:
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.2)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.3.2)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
@@ -35913,10 +35913,10 @@ snapshots:
- tsx
- yaml
- vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.3.3)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.3.3)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
+ vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@25.4.0)(@vitest/ui@4.0.18)(happy-dom@20.7.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@25.4.0)(typescript@5.9.3))(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
'@vitest/expect': 4.0.18
- '@vitest/mocker': 4.0.18(msw@2.12.10(@types/node@25.3.3)(typescript@5.9.3))(vite@7.3.1(@types/node@25.3.2)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
+ '@vitest/mocker': 4.0.18(msw@2.12.10(@types/node@25.4.0)(typescript@5.9.3))(vite@7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
'@vitest/pretty-format': 4.0.18
'@vitest/runner': 4.0.18
'@vitest/snapshot': 4.0.18
@@ -35933,11 +35933,11 @@ snapshots:
tinyexec: 1.0.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vite: 7.3.1(@types/node@25.3.3)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite: 7.3.1(@types/node@25.4.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass@1.97.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
- '@types/node': 25.3.3
+ '@types/node': 25.4.0
'@vitest/ui': 4.0.18(vitest@4.0.18)
happy-dom: 20.7.0
transitivePeerDependencies: