build(deps): bump better-auth from 1.4.18 to 1.6.20 (#8464)

Bumps
[better-auth](https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth)
from 1.4.18 to 1.6.20.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/better-auth/better-auth/releases">better-auth's
releases</a>.</em></p>
<blockquote>
<h2>v1.6.20</h2>
<h2><code>better-auth</code></h2>
<h3>Bug Fixes</h3>
<ul>
<li>Fixed account-linking logs to route through the configured logger
(<a
href="https://redirect.github.com/better-auth/better-auth/pull/10121">#10121</a>)</li>
<li>Fixed TypeScript inference errors by declaring inherited
<code>APIError</code> properties (<a
href="https://redirect.github.com/better-auth/better-auth/pull/8734">#8734</a>)</li>
<li>Fixed refresh cookie <code>Max-Age</code> to be capped at
<code>expiresIn</code> (<a
href="https://redirect.github.com/better-auth/better-auth/pull/9621">#9621</a>)</li>
</ul>
<p>For detailed changes, see <a
href="c342f42fff/packages/better-auth/CHANGELOG.md"><code>CHANGELOG</code></a></p>
<h2><code>@better-auth/i18n</code></h2>
<h3>Bug Fixes</h3>
<ul>
<li>Fixed English language fallback behavior and improved i18n
documentation (<a
href="https://redirect.github.com/better-auth/better-auth/pull/9872">#9872</a>)</li>
</ul>
<p>For detailed changes, see <a
href="c342f42fff/packages/i18n/CHANGELOG.md"><code>CHANGELOG</code></a></p>
<h2>Contributors</h2>
<p>Thanks to everyone who contributed to this release:</p>
<p><a
href="https://github.com/adityachaudhary99"><code>@​adityachaudhary99</code></a>,
<a href="https://github.com/dipan-ck"><code>@​dipan-ck</code></a>, <a
href="https://github.com/sleepe229"><code>@​sleepe229</code></a>, <a
href="https://github.com/WilsonnnTan"><code>@​WilsonnnTan</code></a></p>
<p><strong>Full changelog:</strong> <a
href="https://github.com/better-auth/better-auth/compare/v1.6.19...v1.6.20"><code>v1.6.19...v1.6.20</code></a></p>
<h2>v1.6.19</h2>
<h2><code>better-auth</code></h2>
<h3>Features</h3>
<ul>
<li>Added support for pre-binding device codes to a specific user in the
device authorization plugin (<a
href="https://redirect.github.com/better-auth/better-auth/pull/9995">#9995</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Fixed headerless session checks (<a
href="https://redirect.github.com/better-auth/better-auth/pull/10053">#10053</a>)</li>
<li>Fixed cookie cache fallback lookup (<a
href="https://redirect.github.com/better-auth/better-auth/pull/9348">#9348</a>)</li>
<li>Fixed <code>sendVerificationEmail</code> errors not being surfaced
to the client (<a
href="https://redirect.github.com/better-auth/better-auth/pull/8863">#8863</a>)</li>
<li>Fixed auth client return types not being emitted correctly in
TypeScript declaration builds (<a
href="https://redirect.github.com/better-auth/better-auth/pull/10071">#10071</a>)</li>
<li>Fixed session and account cache cookies being silently dropped when
near the browser's per-cookie size limit by splitting them into chunks
(<a
href="https://redirect.github.com/better-auth/better-auth/pull/10088">#10088</a>)</li>
<li>Fixed single-use verification flows (such as magic-link) hanging on
connection-limited database adapters by reusing active transactions (<a
href="https://redirect.github.com/better-auth/better-auth/pull/10070">#10070</a>)</li>
<li>Fixed the domain not being included when clearing cross-subdomain
cookies in the <code>last-login-method</code> plugin (<a
href="https://redirect.github.com/better-auth/better-auth/pull/9319">#9319</a>)</li>
<li>Fixed the <code>oauth-popup</code> plugin leaking internal OAuth
state keys into <code>additionalData</code> (<a
href="https://redirect.github.com/better-auth/better-auth/pull/10067">#10067</a>)</li>
<li>Reverted the headerless session check fix (<a
href="https://redirect.github.com/better-auth/better-auth/pull/10074">#10074</a>)</li>
</ul>
<p>For detailed changes, see <a
href="ac4d81df74/packages/better-auth/CHANGELOG.md"><code>CHANGELOG</code></a></p>
<h2><code>auth</code></h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/better-auth/better-auth/blob/main/packages/better-auth/CHANGELOG.md">better-auth's
changelog</a>.</em></p>
<blockquote>
<h2>1.6.20</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/10121">#10121</a>
<a
href="21448b1b77"><code>21448b1</code></a>
Thanks <a
href="https://github.com/adityachaudhary99"><code>@​adityachaudhary99</code></a>!
- OAuth account-linking and create-user error logs now respect a custom
<code>logger</code> configured in <code>betterAuth()</code>, instead of
always being written to the default console logger.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/9621">#9621</a>
<a
href="8ecf23817f"><code>8ecf238</code></a>
Thanks <a
href="https://github.com/dipan-ck"><code>@​dipan-ck</code></a>! -
Session refresh no longer emits a cookie Max-Age above the browser's
400-day ceiling when using a database without fractional-second
precision.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/8734">#8734</a>
<a
href="930f5341d9"><code>930f534</code></a>
Thanks <a
href="https://github.com/sleepe229"><code>@​sleepe229</code></a>! -
declare inherited APIError properties to fix TypeScript inference
errors</p>
</li>
<li>
<p>Updated dependencies []:</p>
<ul>
<li><code>@​better-auth/core</code><a
href="https://github.com/1"><code>@​1</code></a>.6.20</li>
<li><code>@​better-auth/drizzle-adapter</code><a
href="https://github.com/1"><code>@​1</code></a>.6.20</li>
<li><code>@​better-auth/kysely-adapter</code><a
href="https://github.com/1"><code>@​1</code></a>.6.20</li>
<li><code>@​better-auth/memory-adapter</code><a
href="https://github.com/1"><code>@​1</code></a>.6.20</li>
<li><code>@​better-auth/mongo-adapter</code><a
href="https://github.com/1"><code>@​1</code></a>.6.20</li>
<li><code>@​better-auth/prisma-adapter</code><a
href="https://github.com/1"><code>@​1</code></a>.6.20</li>
<li><code>@​better-auth/telemetry</code><a
href="https://github.com/1"><code>@​1</code></a>.6.20</li>
</ul>
</li>
</ul>
<h2>1.6.19</h2>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/10088">#10088</a>
<a
href="de4aa52e99"><code>de4aa52</code></a>
Thanks <a href="https://github.com/bytaesu"><code>@​bytaesu</code></a>!
- Session and account cache cookies near the browser's per-cookie size
limit (for example with a long <code>cookiePrefix</code> or many cached
fields) are now split into chunks instead of being silently dropped by
the browser. A cache too large to fit even when chunked is skipped with
a warning rather than failing the request, so reads fall back to the
database.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/9995">#9995</a>
<a
href="b4b02660c7"><code>b4b0266</code></a>
Thanks <a
href="https://github.com/ElGauchooooo"><code>@​ElGauchooooo</code></a>!
- The device authorization plugin now accepts an optional
<code>user_id</code> when issuing a device code via
<code>/device/code</code>, pre-binding the code to that user. Only the
bound user can approve or deny the code, so a publicly visible user code
can no longer be claimed by someone else.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/10086">#10086</a>
<a
href="5bd5e1cc73"><code>5bd5e1c</code></a>
Thanks <a
href="https://github.com/gustavovalverde"><code>@​gustavovalverde</code></a>!
- Refresh-token rotation and token revocation, two-factor backup-code
regeneration, device-code claiming, and organization invitation
acceptance now work on Prisma. Concurrent or repeat requests in these
flows could previously return an error on Prisma instead of the expected
result.</p>
<p>On MongoDB servers older than 5.0, these flows and other guarded
value updates (rate-limit window resets, API-key refills) no longer fail
with an empty-update error.</p>
<p><code>@better-auth/core</code>: <code>incrementOne</code> now reports
a clear error when called with no <code>increment</code> and no
<code>set</code>.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/9319">#9319</a>
<a
href="581f8271fb"><code>581f827</code></a>
Thanks <a
href="https://github.com/ping-maxwell"><code>@​ping-maxwell</code></a>!
- fix(last-login-method): include domain when clearing cross-subdomain
cookies</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/10067">#10067</a>
<a
href="840788502a"><code>8407885</code></a>
Thanks <a href="https://github.com/bytaesu"><code>@​bytaesu</code></a>!
- The <code>oauth-popup</code> plugin now ignores internal OAuth state
fields passed through its <code>additionalData</code> parameter, so
<code>additionalData</code> only ever carries your own custom
values.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/9555">#9555</a>
<a
href="c1a8a64c14"><code>c1a8a64</code></a>
Thanks <a
href="https://github.com/ChrisMGeo"><code>@​ChrisMGeo</code></a>! - Fix
invalid OpenAPI output for Better Auth callback, session, and passkey
routes so client generators can consume the schema.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/10071">#10071</a>
<a
href="635f190870"><code>635f190</code></a>
Thanks <a
href="https://github.com/gustavovalverde"><code>@​gustavovalverde</code></a>!
- Auth clients exported from wrapper packages can now be emitted in
TypeScript declaration builds without extra type annotations.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/10070">#10070</a>
<a
href="a787e0b66b"><code>a787e0b</code></a>
Thanks <a
href="https://github.com/gustavovalverde"><code>@​gustavovalverde</code></a>!
- Single-use verification flows no longer hang on database adapters that
use a one-connection pool. This fixes magic-link verification and
similar token checks in connection-limited serverless database
setups.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/9348">#9348</a>
<a
href="c2f718fcde"><code>c2f718f</code></a>
Thanks <a
href="https://github.com/ping-maxwell"><code>@​ping-maxwell</code></a>!
- fix: cookie cache fallback lookup</p>
</li>
<li>
<p><a
href="https://redirect.github.com/better-auth/better-auth/pull/8863">#8863</a>
<a
href="7d18175637"><code>7d18175</code></a>
Thanks <a
href="https://github.com/ping-maxwell"><code>@​ping-maxwell</code></a>!
- <code>sendVerificationEmail</code> was invoked via
<code>runInBackgroundOrAwait</code>, which could defer work when
<code>advanced.backgroundTasks.handler</code> is configured (so the
handler could return <strong>200</strong> before the email callback
finished) and, in the default path, <strong>caught and logged errors
without rethrowing</strong>. User callbacks that throw
<code>APIError</code> (e.g. <strong>429</strong> from a rate limiter)
were therefore not reliably reflected in the HTTP response (<a
href="https://redirect.github.com/better-auth/better-auth/issues/8757">better-auth/better-auth#8757</a>).</p>
<p>Now we await <code>sendVerificationEmailFn</code> so failures surface
to the client with the correct status. The unauthenticated
<code>/send-verification-email</code> path enforces a constant-time
floor (500 ms) so that the response duration does not reveal whether the
email belongs to a real unverified user.</p>
</li>
<li>
<p>Updated dependencies [<a
href="08959936d2"><code>0895993</code></a>,
<a
href="5bd5e1cc73"><code>5bd5e1c</code></a>,
<a
href="a787e0b66b"><code>a787e0b</code></a>]:</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c342f42fff"><code>c342f42</code></a>
chore: release v1.6.20 (<a
href="https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth/issues/10108">#10108</a>)</li>
<li><a
href="21448b1b77"><code>21448b1</code></a>
fix: route account-linking logs through the configured logger (<a
href="https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth/issues/10121">#10121</a>)</li>
<li><a
href="8ecf23817f"><code>8ecf238</code></a>
fix(session): cap refresh cookie Max-Age at expiresIn (<a
href="https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth/issues/9621">#9621</a>)</li>
<li><a
href="ac4d81df74"><code>ac4d81d</code></a>
chore: release v1.6.19 (<a
href="https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth/issues/10034">#10034</a>)</li>
<li><a
href="1e69725027"><code>1e69725</code></a>
docs: clarify stateless Cognito token refresh (<a
href="https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth/issues/10092">#10092</a>)</li>
<li><a
href="de4aa52e99"><code>de4aa52</code></a>
fix(cookies): chunk session and account cookies near the browser size
limit (...</li>
<li><a
href="5bd5e1cc73"><code>5bd5e1c</code></a>
fix: make guarded state transitions portable on Prisma (<a
href="https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth/issues/10086">#10086</a>)</li>
<li><a
href="36f345b1bc"><code>36f345b</code></a>
revert: fix: allow headerless get session checks (<a
href="https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth/issues/10053">#10053</a>)
(<a
href="https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth/issues/10074">#10074</a>)</li>
<li><a
href="635f190870"><code>635f190</code></a>
fix(client): name auth client return types (<a
href="https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth/issues/10071">#10071</a>)</li>
<li><a
href="d009daedc7"><code>d009dae</code></a>
fix: allow headerless get session checks (<a
href="https://github.com/better-auth/better-auth/tree/HEAD/packages/better-auth/issues/10053">#10053</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/better-auth/better-auth/commits/v1.6.20/packages/better-auth">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new
releaser for better-auth since your current version.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=better-auth&package-manager=npm_and_yarn&previous-version=1.4.18&new-version=1.6.20)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nicky Leach <nicky@paperclip.ing>
Co-authored-by: Paperclip <noreply@paperclip.ing>
This commit is contained in:
dependabot[bot] 2026-06-23 11:01:40 -07:00 committed by GitHub
parent 65d45688fe
commit 72d4f2ad99
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 234 additions and 110 deletions

View File

@ -30,7 +30,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^4.1.8
version: 4.1.8(@types/node@25.2.3)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@7.3.1(@types/node@25.2.3)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
version: 4.1.8(@types/node@25.2.3)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@7.3.1(@types/node@25.2.3)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
cli:
dependencies:
@ -87,7 +87,7 @@ importers:
version: 17.3.1
drizzle-orm:
specifier: 0.45.2
version: 0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.28.11)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7)
version: 0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.29.2)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7)
embedded-postgres:
specifier: ^18.1.0-beta.16
version: 18.1.0-beta.16(patch_hash=55uhvnotpqyiy37rn3pqpukhei)
@ -299,7 +299,7 @@ importers:
version: link:../shared
drizzle-orm:
specifier: ^0.45.2
version: 0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.28.11)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7)
version: 0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.29.2)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7)
embedded-postgres:
specifier: ^18.1.0-beta.16
version: 18.1.0-beta.16(patch_hash=55uhvnotpqyiy37rn3pqpukhei)
@ -321,7 +321,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^4.1.8
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
packages/mcp-server:
dependencies:
@ -343,7 +343,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^4.1.8
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
packages/plugins/create-paperclip-plugin:
dependencies:
@ -393,7 +393,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^4.1.8
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
packages/plugins/examples/plugin-file-browser-example:
dependencies:
@ -511,7 +511,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^4.1.8
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
packages/plugins/plugin-llm-wiki:
dependencies:
@ -554,7 +554,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^4.1.8
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
packages/plugins/plugin-workspace-diff:
dependencies:
@ -588,7 +588,7 @@ importers:
version: 5.9.3
vitest:
specifier: ^4.1.8
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
packages/plugins/sdk:
dependencies:
@ -698,8 +698,8 @@ importers:
specifier: ^3.0.1
version: 3.0.1(ajv@8.20.0)
better-auth:
specifier: 1.4.18
version: 1.4.18(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.28.11)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7))(pg@8.18.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)))
specifier: 1.6.20
version: 1.6.20(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.29.2)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7))(pg@8.18.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)))
chokidar:
specifier: ^4.0.3
version: 4.0.3
@ -714,7 +714,7 @@ importers:
version: 17.3.1
drizzle-orm:
specifier: ^0.45.2
version: 0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.28.11)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7)
version: 0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.29.2)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7)
embedded-postgres:
specifier: ^18.1.0-beta.16
version: 18.1.0-beta.16(patch_hash=55uhvnotpqyiy37rn3pqpukhei)
@ -726,7 +726,7 @@ importers:
version: 0.3.0
jsdom:
specifier: ^28.1.0
version: 28.1.0(@noble/hashes@2.0.1)
version: 28.1.0(@noble/hashes@2.2.0)
multer:
specifier: ^2.1.1
version: 2.1.1
@ -793,7 +793,7 @@ importers:
version: 6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)
vitest:
specifier: ^4.1.8
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
ui:
dependencies:
@ -947,7 +947,7 @@ importers:
version: 6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)
vitest:
specifier: ^4.1.8
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
version: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
packages:
@ -1355,26 +1355,84 @@ packages:
resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==}
engines: {node: '>=6.9.0'}
'@better-auth/core@1.4.18':
resolution: {integrity: sha512-q+awYgC7nkLEBdx2sW0iJjkzgSHlIxGnOpsN1r/O1+a4m7osJNHtfK2mKJSL1I+GfNyIlxJF8WvD/NLuYMpmcg==}
'@better-auth/core@1.6.20':
resolution: {integrity: sha512-y73I1xNXuNYiHBFduWGRcJ2ro2rNuVDEYkgVMJtIaRXtbosdXHs9gfyQrHecgeHMHKx1SYSBT/CExak0vVMTng==}
peerDependencies:
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.21
better-call: 1.1.8
'@better-auth/utils': 0.4.2
'@better-fetch/fetch': 1.3.1
'@cloudflare/workers-types': '>=4'
'@opentelemetry/api': ^1.9.0
better-call: 1.3.6
jose: ^6.1.0
kysely: ^0.28.5
kysely: ^0.28.5 || ^0.29.0
nanostores: ^1.0.1
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
'@opentelemetry/api':
optional: true
'@better-auth/telemetry@1.4.18':
resolution: {integrity: sha512-e5rDF8S4j3Um/0LIVATL2in9dL4lfO2fr2v1Wio4qTMRbfxqnUDTa+6SZtwdeJrbc4O+a3c+IyIpjG9Q/6GpfQ==}
'@better-auth/drizzle-adapter@1.6.20':
resolution: {integrity: sha512-hJHfCdAiZrC7EmZAt3NAiGgcNo9Y5Qz3PLL+a9rODXaAJGCMvzUJniqef9wHuJBwU0SWW+2f4wXe8xQmaC/IKQ==}
peerDependencies:
'@better-auth/core': 1.4.18
'@better-auth/core': ^1.6.20
'@better-auth/utils': 0.4.2
drizzle-orm: ^0.45.2
peerDependenciesMeta:
drizzle-orm:
optional: true
'@better-auth/utils@0.3.0':
resolution: {integrity: sha512-W+Adw6ZA6mgvnSnhOki270rwJ42t4XzSK6YWGF//BbVXL6SwCLWfyzBc1lN2m/4RM28KubdBKQ4X5VMoLRNPQw==}
'@better-auth/kysely-adapter@1.6.20':
resolution: {integrity: sha512-Uvpmgbx5y8JqXroVanNzDdKzOl3HojoTz+/X6MR6zOUr25IzlYz660mjnu0rxKiIF55kD3CroqFsDzjNUw7ERw==}
peerDependencies:
'@better-auth/core': ^1.6.20
'@better-auth/utils': 0.4.2
kysely: ^0.28.17 || ^0.29.0
peerDependenciesMeta:
kysely:
optional: true
'@better-fetch/fetch@1.1.21':
resolution: {integrity: sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A==}
'@better-auth/memory-adapter@1.6.20':
resolution: {integrity: sha512-J5Ni0LlFijbzXlwu2rFHaD8zEFocmajyzWkRnHsq8LhV/Dk4iWQwwnqzLrPoDQEj8roECAUF03hrIeMzqWRqJQ==}
peerDependencies:
'@better-auth/core': ^1.6.20
'@better-auth/utils': 0.4.2
'@better-auth/mongo-adapter@1.6.20':
resolution: {integrity: sha512-ClDBJf6h4g85WJswxwQwxLaiyRU67Gmz/uaIf19tY1gqlLJDykSGjmqRNSBMG5rWABNzcNqbO4KG31rYUldbIw==}
peerDependencies:
'@better-auth/core': ^1.6.20
'@better-auth/utils': 0.4.2
mongodb: ^6.0.0 || ^7.0.0
peerDependenciesMeta:
mongodb:
optional: true
'@better-auth/prisma-adapter@1.6.20':
resolution: {integrity: sha512-WhYdhSGuVSfu1peCSf2snmmVzfWjRaEvbSrsNCusiwGE9l94HlES4mjSPM48fed24hL7yg4j1dYK/yjEt87FpQ==}
peerDependencies:
'@better-auth/core': ^1.6.20
'@better-auth/utils': 0.4.2
'@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0
prisma: ^5.0.0 || ^6.0.0 || ^7.0.0
peerDependenciesMeta:
'@prisma/client':
optional: true
prisma:
optional: true
'@better-auth/telemetry@1.6.20':
resolution: {integrity: sha512-3BhbY3naQDERvdJvJ7fGszVY6rpsVfc6c9uyBVZlC1coVEF/rkM0rIcjtMVI1GUH7vWy1wjR6qF5vQnMun3XNQ==}
peerDependencies:
'@better-auth/core': ^1.6.20
'@better-auth/utils': 0.4.2
'@better-fetch/fetch': 1.3.1
'@better-auth/utils@0.4.2':
resolution: {integrity: sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A==}
'@better-fetch/fetch@1.3.1':
resolution: {integrity: sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g==}
'@braintree/sanitize-url@7.1.2':
resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==}
@ -2692,16 +2750,16 @@ packages:
'@emnapi/core': ^1.7.1
'@emnapi/runtime': ^1.7.1
'@noble/ciphers@2.1.1':
resolution: {integrity: sha512-bysYuiVfhxNJuldNXlFEitTVdNnYUc+XNJZd7Qm2a5j1vZHgY+fazadNFWFaMK/2vye0JVlxV3gHmC0WDfAOQw==}
'@noble/ciphers@2.2.0':
resolution: {integrity: sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA==}
engines: {node: '>= 20.19.0'}
'@noble/hashes@1.8.0':
resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==}
engines: {node: ^14.21.3 || >=16}
'@noble/hashes@2.0.1':
resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==}
'@noble/hashes@2.2.0':
resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==}
engines: {node: '>= 20.19.0'}
'@nodable/entities@2.2.0':
@ -2718,6 +2776,10 @@ packages:
'@open-draft/deferred-promise@2.2.0':
resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==}
'@opentelemetry/semantic-conventions@1.41.1':
resolution: {integrity: sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==}
engines: {node: '>=14'}
'@oxc-parser/binding-android-arm-eabi@0.127.0':
resolution: {integrity: sha512-0LC7ye4hvqbIKxAzThzvswgHLFu2AURKzYLeSVvLdu2TBOYWQDmHnTqPLeA597BcUCxiLqLsS4CJ5uoI5WYWCQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@ -4996,8 +5058,8 @@ packages:
resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==}
hasBin: true
better-auth@1.4.18:
resolution: {integrity: sha512-bnyifLWBPcYVltH3RhS7CM62MoelEqC6Q+GnZwfiDWNfepXoQZBjEvn4urcERC7NTKgKq5zNBM8rvPvRBa6xcg==}
better-auth@1.6.20:
resolution: {integrity: sha512-fSpGHGRKiGRiYVd3QTQtuVZ8oxpiSe/7ip0Rpvt/Sy8zQbEbVKUPMOhE0gLXg+FjqTUsIo7582hxUYxtEcqUpA==}
peerDependencies:
'@lynx-js/react': '*'
'@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0
@ -5006,7 +5068,7 @@ packages:
'@tanstack/solid-start': ^1.0.0
better-sqlite3: ^12.0.0
drizzle-kit: '>=0.31.4'
drizzle-orm: '>=0.41.0'
drizzle-orm: ^0.45.2
mongodb: ^6.0.0 || ^7.0.0
mysql2: ^3.0.0
next: ^14.0.0 || ^15.0.0 || ^16.0.0
@ -5058,8 +5120,8 @@ packages:
vue:
optional: true
better-call@1.1.8:
resolution: {integrity: sha512-XMQ2rs6FNXasGNfMjzbyroSwKwYbZ/T3IxruSS6U2MJRsSYh3wYtG3o6H00ZlKZ/C/UPOAD97tqgQJNsxyeTXw==}
better-call@1.3.6:
resolution: {integrity: sha512-no1jI+h6Bkxs1NVBo4rONbVIzsPjZ8IUu7IHaJBiFwVX1XEQGN8KpHots5fSWmXe9nNyLuLIcgx6WEUcE6EDaA==}
peerDependencies:
zod: ^4.0.0
peerDependenciesMeta:
@ -5547,8 +5609,8 @@ packages:
resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
engines: {node: '>=12'}
defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
defu@6.1.7:
resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==}
delaunator@5.0.1:
resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==}
@ -6256,6 +6318,9 @@ packages:
jose@6.1.3:
resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==}
jose@6.2.3:
resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==}
joycon@3.1.1:
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
engines: {node: '>=10'}
@ -6307,9 +6372,9 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
kysely@0.28.11:
resolution: {integrity: sha512-zpGIFg0HuoC893rIjYX1BETkVWdDnzTzF5e0kWXJFg5lE0k1/LfNWBejrcnOFu8Q2Rfq/hTDTU7XLUM8QOrpzg==}
engines: {node: '>=20.0.0'}
kysely@0.29.2:
resolution: {integrity: sha512-s6WVJyEZrbm6jhBpiKHsGHyePMrVQKJ85wZCFCr9W4QHv6WTjWIrdvTmO9hDEA3bNK0xkrE2DqrHsXMLWuZpQg==}
engines: {node: '>=22.0.0'}
langium@4.2.1:
resolution: {integrity: sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==}
@ -6763,8 +6828,8 @@ packages:
engines: {node: ^18 || >=20}
hasBin: true
nanostores@1.1.0:
resolution: {integrity: sha512-yJBmDJr18xy47dbNVlHcgdPrulSn1nhSE6Ns9vTG+Nx9VPT6iV1MD6aQFp/t52zpf82FhLLTXAXr30NuCnxvwA==}
nanostores@1.3.0:
resolution: {integrity: sha512-XPUa/jz+P1oJvN9VBxw4L9MtdFfaH3DAryqPssqhb2kXjmb9npz0dly6rCsgFWOPr4Yg9mTfM3MDZgZZ+7A3lA==}
engines: {node: ^20.0.0 || >=22.0.0}
napi-build-utils@2.0.0:
@ -7389,6 +7454,9 @@ packages:
set-cookie-parser@2.7.2:
resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
set-cookie-parser@3.1.0:
resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==}
setprototypeof@1.2.0:
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
@ -8731,26 +8799,58 @@ snapshots:
'@babel/helper-string-parser': 7.29.7
'@babel/helper-validator-identifier': 7.29.7
'@better-auth/core@1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@3.25.76))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0)':
'@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)':
dependencies:
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.21
'@better-auth/utils': 0.4.2
'@better-fetch/fetch': 1.3.1
'@opentelemetry/semantic-conventions': 1.41.1
'@standard-schema/spec': 1.1.0
better-call: 1.1.8(zod@4.3.6)
jose: 6.1.3
kysely: 0.28.11
nanostores: 1.1.0
better-call: 1.3.6(zod@4.4.3)
jose: 6.2.3
kysely: 0.29.2
nanostores: 1.3.0
zod: 4.4.3
'@better-auth/telemetry@1.4.18(@better-auth/core@1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@3.25.76))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0))':
'@better-auth/drizzle-adapter@1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.29.2)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7))':
dependencies:
'@better-auth/core': 1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@3.25.76))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0)
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.21
'@better-auth/core': 1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
'@better-auth/utils': 0.4.2
optionalDependencies:
drizzle-orm: 0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.29.2)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7)
'@better-auth/utils@0.3.0': {}
'@better-auth/kysely-adapter@1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(kysely@0.29.2)':
dependencies:
'@better-auth/core': 1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
'@better-auth/utils': 0.4.2
optionalDependencies:
kysely: 0.29.2
'@better-fetch/fetch@1.1.21': {}
'@better-auth/memory-adapter@1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)':
dependencies:
'@better-auth/core': 1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
'@better-auth/utils': 0.4.2
'@better-auth/mongo-adapter@1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)':
dependencies:
'@better-auth/core': 1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
'@better-auth/utils': 0.4.2
'@better-auth/prisma-adapter@1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)':
dependencies:
'@better-auth/core': 1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
'@better-auth/utils': 0.4.2
'@better-auth/telemetry@1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)':
dependencies:
'@better-auth/core': 1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
'@better-auth/utils': 0.4.2
'@better-fetch/fetch': 1.3.1
'@better-auth/utils@0.4.2':
dependencies:
'@noble/hashes': 2.2.0
'@better-fetch/fetch@1.3.1': {}
'@braintree/sanitize-url@7.1.2': {}
@ -9581,9 +9681,9 @@ snapshots:
'@esbuild/win32-x64@0.28.1':
optional: true
'@exodus/bytes@1.15.0(@noble/hashes@2.0.1)':
'@exodus/bytes@1.15.0(@noble/hashes@2.2.0)':
optionalDependencies:
'@noble/hashes': 2.0.1
'@noble/hashes': 2.2.0
'@floating-ui/core@1.7.5':
dependencies:
@ -10132,11 +10232,11 @@ snapshots:
'@tybys/wasm-util': 0.10.2
optional: true
'@noble/ciphers@2.1.1': {}
'@noble/ciphers@2.2.0': {}
'@noble/hashes@1.8.0': {}
'@noble/hashes@2.0.1': {}
'@noble/hashes@2.2.0': {}
'@nodable/entities@2.2.0': {}
@ -10154,6 +10254,8 @@ snapshots:
'@open-draft/deferred-promise@2.2.0': {}
'@opentelemetry/semantic-conventions@1.41.1': {}
'@oxc-parser/binding-android-arm-eabi@0.127.0':
optional: true
@ -12319,36 +12421,44 @@ snapshots:
baseline-browser-mapping@2.9.19: {}
better-auth@1.4.18(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.28.11)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7))(pg@8.18.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))):
better-auth@1.6.20(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.29.2)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7))(pg@8.18.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))):
dependencies:
'@better-auth/core': 1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@3.25.76))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0)
'@better-auth/telemetry': 1.4.18(@better-auth/core@1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@3.25.76))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0))
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.21
'@noble/ciphers': 2.1.1
'@noble/hashes': 2.0.1
better-call: 1.1.8(zod@4.3.6)
defu: 6.1.4
jose: 6.1.3
kysely: 0.28.11
nanostores: 1.1.0
zod: 4.3.6
'@better-auth/core': 1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)
'@better-auth/drizzle-adapter': 1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.29.2)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7))
'@better-auth/kysely-adapter': 1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(kysely@0.29.2)
'@better-auth/memory-adapter': 1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)
'@better-auth/mongo-adapter': 1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)
'@better-auth/prisma-adapter': 1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)
'@better-auth/telemetry': 1.6.20(@better-auth/core@1.6.20(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-call@1.3.6(zod@3.25.76))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)
'@better-auth/utils': 0.4.2
'@better-fetch/fetch': 1.3.1
'@noble/ciphers': 2.2.0
'@noble/hashes': 2.2.0
better-call: 1.3.6(zod@4.4.3)
defu: 6.1.7
jose: 6.2.3
kysely: 0.29.2
nanostores: 1.3.0
zod: 4.4.3
optionalDependencies:
drizzle-kit: 0.31.10
drizzle-orm: 0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.28.11)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7)
drizzle-orm: 0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.29.2)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7)
pg: 8.18.0
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
vitest: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
vitest: 4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
transitivePeerDependencies:
- '@cloudflare/workers-types'
- '@opentelemetry/api'
better-call@1.1.8(zod@4.3.6):
better-call@1.3.6(zod@4.4.3):
dependencies:
'@better-auth/utils': 0.3.0
'@better-fetch/fetch': 1.1.21
'@better-auth/utils': 0.4.2
'@better-fetch/fetch': 1.3.1
rou3: 0.7.12
set-cookie-parser: 2.7.2
set-cookie-parser: 3.1.0
optionalDependencies:
zod: 4.3.6
zod: 4.4.3
bidi-js@1.0.3:
dependencies:
@ -12842,10 +12952,10 @@ snapshots:
d3: 7.9.0
lodash-es: 4.17.23
data-urls@7.0.0(@noble/hashes@2.0.1):
data-urls@7.0.0(@noble/hashes@2.2.0):
dependencies:
whatwg-mimetype: 5.0.0
whatwg-url: 16.0.1(@noble/hashes@2.0.1)
whatwg-url: 16.0.1(@noble/hashes@2.2.0)
transitivePeerDependencies:
- '@noble/hashes'
@ -12884,7 +12994,7 @@ snapshots:
define-lazy-prop@3.0.0: {}
defu@6.1.4: {}
defu@6.1.7: {}
delaunator@5.0.1:
dependencies:
@ -12952,10 +13062,10 @@ snapshots:
esbuild: 0.25.12
tsx: 4.22.4
drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.28.11)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7):
drizzle-orm@0.45.2(@electric-sql/pglite@0.3.15)(kysely@0.29.2)(pg@8.18.0)(postgres@3.4.9)(sqlite3@5.1.7):
optionalDependencies:
'@electric-sql/pglite': 0.3.15
kysely: 0.28.11
kysely: 0.29.2
pg: 8.18.0
postgres: 3.4.9
sqlite3: 5.1.7
@ -13492,9 +13602,9 @@ snapshots:
hono@4.12.12: {}
html-encoding-sniffer@6.0.0(@noble/hashes@2.0.1):
html-encoding-sniffer@6.0.0(@noble/hashes@2.2.0):
dependencies:
'@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
'@exodus/bytes': 1.15.0(@noble/hashes@2.2.0)
transitivePeerDependencies:
- '@noble/hashes'
@ -13654,6 +13764,8 @@ snapshots:
jose@6.1.3: {}
jose@6.2.3: {}
joycon@3.1.1: {}
js-tokens@4.0.0: {}
@ -13662,16 +13774,16 @@ snapshots:
dependencies:
argparse: 2.0.1
jsdom@28.1.0(@noble/hashes@2.0.1):
jsdom@28.1.0(@noble/hashes@2.2.0):
dependencies:
'@acemir/cssom': 0.9.31
'@asamuzakjp/dom-selector': 6.8.1
'@bramus/specificity': 2.4.2
'@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
'@exodus/bytes': 1.15.0(@noble/hashes@2.2.0)
cssstyle: 6.2.0
data-urls: 7.0.0(@noble/hashes@2.0.1)
data-urls: 7.0.0(@noble/hashes@2.2.0)
decimal.js: 10.6.0
html-encoding-sniffer: 6.0.0(@noble/hashes@2.0.1)
html-encoding-sniffer: 6.0.0(@noble/hashes@2.2.0)
http-proxy-agent: 7.0.2
https-proxy-agent: 7.0.6
is-potential-custom-element-name: 1.0.1
@ -13683,7 +13795,7 @@ snapshots:
w3c-xmlserializer: 5.0.0
webidl-conversions: 8.0.1
whatwg-mimetype: 5.0.0
whatwg-url: 16.0.1(@noble/hashes@2.0.1)
whatwg-url: 16.0.1(@noble/hashes@2.2.0)
xml-name-validator: 5.0.0
transitivePeerDependencies:
- '@noble/hashes'
@ -13710,7 +13822,7 @@ snapshots:
kleur@4.1.5: {}
kysely@0.28.11: {}
kysely@0.29.2: {}
langium@4.2.1:
dependencies:
@ -14463,7 +14575,7 @@ snapshots:
nanoid@5.1.11: {}
nanostores@1.1.0: {}
nanostores@1.3.0: {}
napi-build-utils@2.0.0:
optional: true
@ -15306,6 +15418,8 @@ snapshots:
set-cookie-parser@2.7.2: {}
set-cookie-parser@3.1.0: {}
setprototypeof@1.2.0: {}
sharp@0.34.5:
@ -15931,7 +16045,7 @@ snapshots:
lightningcss: 1.32.0
tsx: 4.22.4
vitest@4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)):
vitest@4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)):
dependencies:
'@vitest/expect': 4.1.8
'@vitest/mocker': 4.1.8(vite@6.4.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
@ -15955,11 +16069,11 @@ snapshots:
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 22.19.21
jsdom: 28.1.0(@noble/hashes@2.0.1)
jsdom: 28.1.0(@noble/hashes@2.2.0)
transitivePeerDependencies:
- msw
vitest@4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)):
vitest@4.1.8(@types/node@22.19.21)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)):
dependencies:
'@vitest/expect': 4.1.8
'@vitest/mocker': 4.1.8(vite@7.3.1(@types/node@22.19.21)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
@ -15983,11 +16097,11 @@ snapshots:
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 22.19.21
jsdom: 28.1.0(@noble/hashes@2.0.1)
jsdom: 28.1.0(@noble/hashes@2.2.0)
transitivePeerDependencies:
- msw
vitest@4.1.8(@types/node@25.2.3)(jsdom@28.1.0(@noble/hashes@2.0.1))(vite@7.3.1(@types/node@25.2.3)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)):
vitest@4.1.8(@types/node@25.2.3)(jsdom@28.1.0(@noble/hashes@2.2.0))(vite@7.3.1(@types/node@25.2.3)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4)):
dependencies:
'@vitest/expect': 4.1.8
'@vitest/mocker': 4.1.8(vite@7.3.1(@types/node@25.2.3)(jiti@2.7.0)(lightningcss@1.32.0)(tsx@4.22.4))
@ -16011,7 +16125,7 @@ snapshots:
why-is-node-running: 2.3.0
optionalDependencies:
'@types/node': 25.2.3
jsdom: 28.1.0(@noble/hashes@2.0.1)
jsdom: 28.1.0(@noble/hashes@2.2.0)
transitivePeerDependencies:
- msw
@ -16046,9 +16160,9 @@ snapshots:
whatwg-mimetype@5.0.0: {}
whatwg-url@16.0.1(@noble/hashes@2.0.1):
whatwg-url@16.0.1(@noble/hashes@2.2.0):
dependencies:
'@exodus/bytes': 1.15.0(@noble/hashes@2.0.1)
'@exodus/bytes': 1.15.0(@noble/hashes@2.2.0)
tr46: 6.0.0
webidl-conversions: 8.0.1
transitivePeerDependencies:

View File

@ -61,7 +61,7 @@
"@paperclipai/skills-catalog": "workspace:*",
"ajv": "^8.20.0",
"ajv-formats": "^3.0.1",
"better-auth": "1.4.18",
"better-auth": "1.6.20",
"chokidar": "^4.0.3",
"detect-port": "^2.1.0",
"dompurify": "^3.4.8",

View File

@ -1,6 +1,6 @@
import type { Request, RequestHandler } from "express";
import type { IncomingHttpHeaders } from "node:http";
import { betterAuth } from "better-auth";
import { betterAuth, type Auth } from "better-auth";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { toNodeHandler } from "better-auth/node";
import type { Db } from "@paperclipai/db";
@ -24,7 +24,17 @@ export type BetterAuthSessionResult = {
user: BetterAuthSessionUser | null;
};
type BetterAuthInstance = ReturnType<typeof betterAuth>;
type BetterAuthGetSessionApi = {
getSession?: (input: { headers: Headers }) => Promise<unknown>;
};
type BetterAuthHandlerTarget = Extract<Parameters<typeof toNodeHandler>[0], { handler: Auth["handler"] }>;
type BetterAuthSessionResolver = {
api?: BetterAuthGetSessionApi;
};
type BetterAuthInstance = BetterAuthHandlerTarget & BetterAuthSessionResolver;
const AUTH_COOKIE_PREFIX_FALLBACK = "default";
const AUTH_COOKIE_PREFIX_INVALID_SEGMENTS_RE = /[^a-zA-Z0-9_-]+/g;
@ -158,7 +168,7 @@ export function createBetterAuthInstance(db: Db, config: Config, trustedOrigins:
return betterAuth(authConfig);
}
export function createBetterAuthHandler(auth: BetterAuthInstance): RequestHandler {
export function createBetterAuthHandler(auth: BetterAuthHandlerTarget): RequestHandler {
const handler = toNodeHandler(auth);
return (req, res, next) => {
void Promise.resolve(handler(req, res)).catch(next);
@ -166,10 +176,10 @@ export function createBetterAuthHandler(auth: BetterAuthInstance): RequestHandle
}
export async function resolveBetterAuthSessionFromHeaders(
auth: BetterAuthInstance,
auth: BetterAuthSessionResolver,
headers: Headers,
): Promise<BetterAuthSessionResult | null> {
const api = (auth as unknown as { api?: { getSession?: (input: unknown) => Promise<unknown> } }).api;
const api = auth.api;
if (!api?.getSession) return null;
const sessionValue = await api.getSession({
@ -197,7 +207,7 @@ export async function resolveBetterAuthSessionFromHeaders(
}
export async function resolveBetterAuthSession(
auth: BetterAuthInstance,
auth: BetterAuthSessionResolver,
req: Request,
): Promise<BetterAuthSessionResult | null> {
return resolveBetterAuthSessionFromHeaders(auth, headersFromExpressRequest(req));