better-auth 0.8.4-beta.6 → 0.8.4-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/drizzle.d.cts +1 -1
- package/dist/adapters/drizzle.d.ts +1 -1
- package/dist/adapters/kysely.d.cts +1 -1
- package/dist/adapters/kysely.d.ts +1 -1
- package/dist/adapters/memory.d.cts +1 -1
- package/dist/adapters/memory.d.ts +1 -1
- package/dist/adapters/mongodb.d.cts +1 -1
- package/dist/adapters/mongodb.d.ts +1 -1
- package/dist/adapters/prisma.d.cts +1 -1
- package/dist/adapters/prisma.d.ts +1 -1
- package/dist/api.d.cts +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/client/plugins.d.cts +3 -3
- package/dist/client/plugins.d.ts +3 -3
- package/dist/client.d.cts +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/cookies.d.cts +1 -1
- package/dist/cookies.d.ts +1 -1
- package/dist/db.cjs +1 -1
- package/dist/db.d.cts +2 -2
- package/dist/db.d.ts +2 -2
- package/dist/db.js +1 -1
- package/dist/{index-BVsVqobF.d.cts → index-BD6Gi4uB.d.cts} +7 -7
- package/dist/{index-DY7Ai3Jp.d.ts → index-KAWRcjOC.d.ts} +7 -7
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/next-js.d.cts +1 -1
- package/dist/next-js.d.ts +1 -1
- package/dist/node.d.cts +1 -1
- package/dist/node.d.ts +1 -1
- package/dist/oauth2.d.cts +2 -2
- package/dist/oauth2.d.ts +2 -2
- package/dist/plugins.d.cts +9 -9
- package/dist/plugins.d.ts +9 -9
- package/dist/react.d.cts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/solid-start.d.cts +1 -1
- package/dist/solid-start.d.ts +1 -1
- package/dist/solid.d.cts +1 -1
- package/dist/solid.d.ts +1 -1
- package/dist/{state-ifN7k51A.d.cts → state-B06Cucct.d.cts} +1 -1
- package/dist/{state-CIrmeq4O.d.ts → state-DyQuVVEF.d.ts} +1 -1
- package/dist/svelte-kit.d.cts +1 -1
- package/dist/svelte-kit.d.ts +1 -1
- package/dist/svelte.d.cts +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/types.d.cts +2 -2
- package/dist/types.d.ts +2 -2
- package/dist/vue.d.cts +1 -1
- package/dist/vue.d.ts +1 -1
- package/package.json +1 -1
- package/dist/{auth-CkfEl1lS.d.cts → auth-RxDdMH7n.d.cts} +84 -84
- package/dist/{auth-B3fUmyZo.d.ts → auth-aIfiqYkD.d.ts} +84 -84
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Kysely } from 'kysely';
|
|
2
|
-
import { B as BetterAuthOptions, K as KyselyDatabaseType, W as Where } from '../auth-
|
|
2
|
+
import { B as BetterAuthOptions, K as KyselyDatabaseType, W as Where } from '../auth-RxDdMH7n.cjs';
|
|
3
3
|
import 'zod';
|
|
4
4
|
import 'better-call';
|
|
5
5
|
import '../helper-DPDj8Nix.cjs';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Kysely } from 'kysely';
|
|
2
|
-
import { B as BetterAuthOptions, K as KyselyDatabaseType, W as Where } from '../auth-
|
|
2
|
+
import { B as BetterAuthOptions, K as KyselyDatabaseType, W as Where } from '../auth-aIfiqYkD.js';
|
|
3
3
|
import 'zod';
|
|
4
4
|
import 'better-call';
|
|
5
5
|
import '../helper-DPDj8Nix.js';
|
package/dist/api.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { z as AuthEndpoint, C as AuthMiddleware, a4 as callbackOAuth, an as changeEmail, ak as changePassword, y as createAuthEndpoint, x as createAuthMiddleware, ag as createEmailVerificationToken, am as deleteUser, ao as error, ad as forgetPassword, ae as forgetPasswordCallback, a0 as getEndpoints, a5 as getSession, a6 as getSessionFromCtx, as as linkSocialAccount, a8 as listSessions, ar as listUserAccounts, ap as ok, w as optionsMiddleware, at as originCheckMiddleware, af as resetPassword, ab as revokeOtherSessions, a9 as revokeSession, aa as revokeSessions, a1 as router, ah as sendVerificationEmail, a7 as sessionMiddleware, al as setPassword, a3 as signInEmail, a2 as signInSocial, ac as signOut, aq as signUpEmail, aj as updateUser, ai as verifyEmail } from './auth-
|
|
1
|
+
export { z as AuthEndpoint, C as AuthMiddleware, a4 as callbackOAuth, an as changeEmail, ak as changePassword, y as createAuthEndpoint, x as createAuthMiddleware, ag as createEmailVerificationToken, am as deleteUser, ao as error, ad as forgetPassword, ae as forgetPasswordCallback, a0 as getEndpoints, a5 as getSession, a6 as getSessionFromCtx, as as linkSocialAccount, a8 as listSessions, ar as listUserAccounts, ap as ok, w as optionsMiddleware, at as originCheckMiddleware, af as resetPassword, ab as revokeOtherSessions, a9 as revokeSession, aa as revokeSessions, a1 as router, ah as sendVerificationEmail, a7 as sessionMiddleware, al as setPassword, a3 as signInEmail, a2 as signInSocial, ac as signOut, aq as signUpEmail, aj as updateUser, ai as verifyEmail } from './auth-RxDdMH7n.cjs';
|
|
2
2
|
import './helper-DPDj8Nix.cjs';
|
|
3
3
|
export { APIError } from 'better-call';
|
|
4
4
|
import 'zod';
|
package/dist/api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { z as AuthEndpoint, C as AuthMiddleware, a4 as callbackOAuth, an as changeEmail, ak as changePassword, y as createAuthEndpoint, x as createAuthMiddleware, ag as createEmailVerificationToken, am as deleteUser, ao as error, ad as forgetPassword, ae as forgetPasswordCallback, a0 as getEndpoints, a5 as getSession, a6 as getSessionFromCtx, as as linkSocialAccount, a8 as listSessions, ar as listUserAccounts, ap as ok, w as optionsMiddleware, at as originCheckMiddleware, af as resetPassword, ab as revokeOtherSessions, a9 as revokeSession, aa as revokeSessions, a1 as router, ah as sendVerificationEmail, a7 as sessionMiddleware, al as setPassword, a3 as signInEmail, a2 as signInSocial, ac as signOut, aq as signUpEmail, aj as updateUser, ai as verifyEmail } from './auth-
|
|
1
|
+
export { z as AuthEndpoint, C as AuthMiddleware, a4 as callbackOAuth, an as changeEmail, ak as changePassword, y as createAuthEndpoint, x as createAuthMiddleware, ag as createEmailVerificationToken, am as deleteUser, ao as error, ad as forgetPassword, ae as forgetPasswordCallback, a0 as getEndpoints, a5 as getSession, a6 as getSessionFromCtx, as as linkSocialAccount, a8 as listSessions, ar as listUserAccounts, ap as ok, w as optionsMiddleware, at as originCheckMiddleware, af as resetPassword, ab as revokeOtherSessions, a9 as revokeSession, aa as revokeSessions, a1 as router, ah as sendVerificationEmail, a7 as sessionMiddleware, al as setPassword, a3 as signInEmail, a2 as signInSocial, ac as signOut, aq as signUpEmail, aj as updateUser, ai as verifyEmail } from './auth-aIfiqYkD.js';
|
|
2
2
|
import './helper-DPDj8Nix.js';
|
|
3
3
|
export { APIError } from 'better-call';
|
|
4
4
|
import 'zod';
|
|
@@ -2,10 +2,10 @@ import * as nanostores from 'nanostores';
|
|
|
2
2
|
import { A as AccessControl, S as StatementsPrimitive, R as Role } from '../statement-DFWdVU7s.cjs';
|
|
3
3
|
import * as _better_fetch_fetch from '@better-fetch/fetch';
|
|
4
4
|
import { BetterFetchOption } from '@better-fetch/fetch';
|
|
5
|
-
import { o as organization, q as Organization, M as Member, I as Invitation, u as username, m as magicLink, d as phoneNumber, f as anonymous, i as admin, j as genericOAuth, k as jwt, l as multiSession, n as emailOTP } from '../index-
|
|
6
|
-
export { g as getPasskeyActions, c as passkeyClient, a as twoFactorClient } from '../index-
|
|
5
|
+
import { o as organization, q as Organization, M as Member, I as Invitation, u as username, m as magicLink, d as phoneNumber, f as anonymous, i as admin, j as genericOAuth, k as jwt, l as multiSession, n as emailOTP } from '../index-BD6Gi4uB.cjs';
|
|
6
|
+
export { g as getPasskeyActions, c as passkeyClient, a as twoFactorClient } from '../index-BD6Gi4uB.cjs';
|
|
7
7
|
import { P as Prettify } from '../helper-DPDj8Nix.cjs';
|
|
8
|
-
import { F as FieldAttribute, B as BetterAuthOptions, j as BetterAuthPlugin } from '../auth-
|
|
8
|
+
import { F as FieldAttribute, B as BetterAuthOptions, j as BetterAuthPlugin } from '../auth-RxDdMH7n.cjs';
|
|
9
9
|
import { Store } from '../types.cjs';
|
|
10
10
|
import 'better-call';
|
|
11
11
|
import 'zod';
|
package/dist/client/plugins.d.ts
CHANGED
|
@@ -2,10 +2,10 @@ import * as nanostores from 'nanostores';
|
|
|
2
2
|
import { A as AccessControl, S as StatementsPrimitive, R as Role } from '../statement-CTl9eDv7.js';
|
|
3
3
|
import * as _better_fetch_fetch from '@better-fetch/fetch';
|
|
4
4
|
import { BetterFetchOption } from '@better-fetch/fetch';
|
|
5
|
-
import { o as organization, q as Organization, M as Member, I as Invitation, u as username, m as magicLink, d as phoneNumber, f as anonymous, i as admin, j as genericOAuth, k as jwt, l as multiSession, n as emailOTP } from '../index-
|
|
6
|
-
export { g as getPasskeyActions, c as passkeyClient, a as twoFactorClient } from '../index-
|
|
5
|
+
import { o as organization, q as Organization, M as Member, I as Invitation, u as username, m as magicLink, d as phoneNumber, f as anonymous, i as admin, j as genericOAuth, k as jwt, l as multiSession, n as emailOTP } from '../index-KAWRcjOC.js';
|
|
6
|
+
export { g as getPasskeyActions, c as passkeyClient, a as twoFactorClient } from '../index-KAWRcjOC.js';
|
|
7
7
|
import { P as Prettify } from '../helper-DPDj8Nix.js';
|
|
8
|
-
import { F as FieldAttribute, B as BetterAuthOptions, j as BetterAuthPlugin } from '../auth-
|
|
8
|
+
import { F as FieldAttribute, B as BetterAuthOptions, j as BetterAuthPlugin } from '../auth-aIfiqYkD.js';
|
|
9
9
|
import { Store } from '../types.js';
|
|
10
10
|
import 'better-call';
|
|
11
11
|
import 'zod';
|
package/dist/client.d.cts
CHANGED
|
@@ -6,7 +6,7 @@ import { BetterFetchError, BetterFetch, BetterFetchOption } from '@better-fetch/
|
|
|
6
6
|
import { ClientOptions, InferClientAPI, InferActions, InferSessionFromClient, InferUserFromClient, BetterAuthClientPlugin, IsSignal } from './types.cjs';
|
|
7
7
|
export { AtomListener, InferAdditionalFromClient, InferPluginsFromClient, Store } from './types.cjs';
|
|
8
8
|
import { U as UnionToIntersection } from './helper-DPDj8Nix.cjs';
|
|
9
|
-
import './auth-
|
|
9
|
+
import './auth-RxDdMH7n.cjs';
|
|
10
10
|
import 'kysely';
|
|
11
11
|
import 'better-call';
|
|
12
12
|
import './index-cqC7BcV_.cjs';
|
package/dist/client.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { BetterFetchError, BetterFetch, BetterFetchOption } from '@better-fetch/
|
|
|
6
6
|
import { ClientOptions, InferClientAPI, InferActions, InferSessionFromClient, InferUserFromClient, BetterAuthClientPlugin, IsSignal } from './types.js';
|
|
7
7
|
export { AtomListener, InferAdditionalFromClient, InferPluginsFromClient, Store } from './types.js';
|
|
8
8
|
import { U as UnionToIntersection } from './helper-DPDj8Nix.js';
|
|
9
|
-
import './auth-
|
|
9
|
+
import './auth-aIfiqYkD.js';
|
|
10
10
|
import 'kysely';
|
|
11
11
|
import 'better-call';
|
|
12
12
|
import './index-DN9ozDRm.js';
|
package/dist/cookies.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'better-call';
|
|
2
|
-
export { p as BetterAuthCookies, E as EligibleCookies, n as createCookieGetter, q as deleteSessionCookie, o as getCookies, r as parseCookies, t as parseSetCookieHeader, s as setSessionCookie } from './auth-
|
|
2
|
+
export { p as BetterAuthCookies, E as EligibleCookies, n as createCookieGetter, q as deleteSessionCookie, o as getCookies, r as parseCookies, t as parseSetCookieHeader, s as setSessionCookie } from './auth-RxDdMH7n.cjs';
|
|
3
3
|
import 'kysely';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import './helper-DPDj8Nix.cjs';
|
package/dist/cookies.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'better-call';
|
|
2
|
-
export { p as BetterAuthCookies, E as EligibleCookies, n as createCookieGetter, q as deleteSessionCookie, o as getCookies, r as parseCookies, t as parseSetCookieHeader, s as setSessionCookie } from './auth-
|
|
2
|
+
export { p as BetterAuthCookies, E as EligibleCookies, n as createCookieGetter, q as deleteSessionCookie, o as getCookies, r as parseCookies, t as parseSetCookieHeader, s as setSessionCookie } from './auth-aIfiqYkD.js';
|
|
3
3
|
import 'kysely';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import './helper-DPDj8Nix.js';
|
package/dist/db.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var B=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var Q=(e,r)=>{for(var d in r)B(e,d,{get:r[d],enumerable:!0})},X=(e,r,d,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let p of Z(r))!G.call(e,p)&&p!==d&&B(e,p,{get:()=>r[p],enumerable:!(u=z(r,p))||u.enumerable});return e};var Y=e=>X(B({},"__esModule",{value:!0}),e);var he={};Q(he,{convertFromDB:()=>le,convertToDB:()=>de,createFieldAttribute:()=>se,createInternalAdapter:()=>ne,getAdapter:()=>oe,getAuthTables:()=>I,getMigrations:()=>ge,getSchema:()=>j,getWithHooks:()=>U,matchType:()=>J,toZodSchema:()=>ie});module.exports=Y(he);var V=(e,r="ms")=>new Date(Date.now()+(r==="sec"?e*1e3:e));var b=require("zod"),xe=b.z.object({id:b.z.string(),providerId:b.z.string(),accountId:b.z.string(),userId:b.z.string(),accessToken:b.z.string().nullish(),refreshToken:b.z.string().nullish(),idToken:b.z.string().nullish(),expiresAt:b.z.date().nullish(),password:b.z.string().nullish()}),we=b.z.object({id:b.z.string(),email:b.z.string().transform(e=>e.toLowerCase()),emailVerified:b.z.boolean().default(!1),name:b.z.string(),image:b.z.string().nullish(),createdAt:b.z.date().default(new Date),updatedAt:b.z.date().default(new Date)}),Te=b.z.object({id:b.z.string(),userId:b.z.string(),expiresAt:b.z.date(),ipAddress:b.z.string().nullish(),userAgent:b.z.string().nullish()}),Fe=b.z.object({id:b.z.string(),value:b.z.string(),expiresAt:b.z.date(),identifier:b.z.string()});function P(e,r){let d=r.fields,u={};for(let p in e){let m=d[p];if(!m){u[p]=e[p];continue}m.returned!==!1&&(u[p]=e[p])}return u}function C(e,r){let d={...r==="user"?e.user?.additionalFields:{},...r==="session"?e.session?.additionalFields:{}};for(let u of e.plugins||[])u.schema&&u.schema[r]&&(d={...d,...u.schema[r].fields});return d}function M(e,r){let d=C(e,"user");return P(r,{fields:d})}function N(e,r){let d=C(e,"session");return P(r,{fields:d})}var E=require("nanoid"),w=e=>(0,E.nanoid)(e);function U(e,r){let d=r.hooks;async function u(m,g,n){let t=m;for(let a of d||[]){let o=a[g]?.create?.before;if(o){let i=await o(m);if(i===!1)return null;typeof i=="object"&&"data"in i&&(t=i.data)}}let s=n?await n.fn(t):null,f=!n||n.executeMainFn?await e.create({model:g,data:t}):s;for(let a of d||[]){let o=a[g]?.create?.after;o&&await o(f)}return f}async function p(m,g,n,t){let s=m;for(let o of d||[]){let i=o[n]?.update?.before;if(i){let l=await i(m);if(l===!1)return null;s=typeof l=="object"?l.data:l}}let f=t?await t.fn(s):null,a=!t||t.executeMainFn?await e.update({model:n,update:s,where:g}):f;for(let o of d||[]){let i=o[n]?.update?.after;i&&await i(a)}return a}return{createWithHooks:u,updateWithHooks:p}}var D=Object.create(null),O=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?D:globalThis),ee=new Proxy(D,{get(e,r){return O()[r]??D[r]},has(e,r){let d=O();return r in d||r in D},set(e,r,d){let u=O(!0);return u[r]=d,!0},deleteProperty(e,r){if(!r)return!1;let d=O(!0);return delete d[r],!0},ownKeys(){let e=O(!0);return Object.keys(e)}});function te(e){return e?e!=="false":!1}var re=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var L=re==="test"||te(ee.TEST);function $(e,r){if(r.advanced?.ipAddress?.disableIpTracking)return null;let d="127.0.0.1";if(L)return d;let p=r.advanced?.ipAddress?.ipAddressHeaders||["x-client-ip","x-forwarded-for","cf-connecting-ip","fastly-client-ip","x-real-ip","x-cluster-client-ip","x-forwarded","forwarded-for","forwarded"],m=e instanceof Request?e.headers:e;for(let g of p){let n=m.get(g);if(typeof n=="string"){let t=n.split(",")[0].trim();if(t)return t}}return null}function K(e){try{return JSON.parse(e)}catch{return null}}var ne=(e,r)=>{let d=r.options,u=d.secondaryStorage,p=d.session?.expiresIn||60*60*24*7,{createWithHooks:m,updateWithHooks:g}=U(e,r);return{createOAuthUser:async(n,t)=>{try{let s=await m({id:w(),createdAt:new Date,updatedAt:new Date,...n},"user"),f=await m({id:w(),...t,userId:s.id||n.id},"account");return{user:s,account:f}}catch(s){return console.log(s),null}},createUser:async n=>await m({id:w(),createdAt:new Date,updatedAt:new Date,emailVerified:!1,...n},"user"),createAccount:async n=>await m({id:w(),createdAt:new Date,updatedAt:new Date,...n},"account"),listSessions:async n=>{if(u){let s=await u.get(`active-sessions-${n}`);if(!s)return[];let f=K(s)||[],a=Date.now(),o=f.filter(l=>l.expiresAt>a),i=[];for(let l of o){let y=await u.get(l.id);if(y){let c=JSON.parse(y),h=N(r.options,{...c.session,expiresAt:new Date(c.session.expiresAt)});i.push(h)}}return i}return await e.findMany({model:"session",where:[{field:"userId",value:n}]})},listUsers:async(n,t,s,f)=>await e.findMany({model:"user",limit:n,offset:t,sortBy:s,where:f}),deleteUser:async n=>{await e.deleteMany({model:"session",where:[{field:"userId",value:n}]}),await e.deleteMany({model:"account",where:[{field:"userId",value:n}]}),await e.delete({model:"user",where:[{field:"id",value:n}]})},createSession:async(n,t,s,f)=>{let a=t instanceof Request?t.headers:t,o={id:w(32),userId:n,expiresAt:s?V(60*60*24,"sec"):V(p,"sec"),ipAddress:t&&$(t,r.options)||"",userAgent:a?.get("user-agent")||"",...f};return await m(o,"session",u?{fn:async l=>{let y=await e.findOne({model:"user",where:[{field:"id",value:n}]});u.set(l.id,JSON.stringify({session:l,user:y}),p);let c=await u.get(`active-sessions-${n}`),h=[],A=Date.now();return c&&(h=K(c)||[],h=h.filter(v=>v.expiresAt>A)),h.push({id:l.id,expiresAt:A+p*1e3}),await u.set(`active-sessions-${n}`,JSON.stringify(h),p),l},executeMainFn:d.session?.storeSessionInDatabase}:void 0)},findSession:async n=>{if(u){let a=await u.get(n);if(a){let o=JSON.parse(a),i=N(r.options,{...o.session,expiresAt:new Date(o.session.expiresAt)}),l=M(r.options,{...o.user,createdAt:new Date(o.user.createdAt),updatedAt:new Date(o.user.updatedAt)});return{session:i,user:l}}}let t=await e.findOne({model:"session",where:[{value:n,field:"id"}]});if(!t)return null;let s=await e.findOne({model:"user",where:[{value:t.userId,field:"id"}]});if(!s)return null;let f=M(r.options,s);return{session:N(r.options,t),user:f}},findSessions:async n=>{if(u){let a=[];for(let o of n){let i=await u.get(o);if(i){let l=JSON.parse(i),y={session:{...l.session,expiresAt:new Date(l.session.expiresAt)},user:{...l.user,createdAt:new Date(l.user.createdAt),updatedAt:new Date(l.user.updatedAt)}};a.push(y)}}return a}let t=await e.findMany({model:"session",where:[{field:"id",value:n,operator:"in"}]}),s=t.map(a=>a.userId);if(!s.length)return[];let f=await e.findMany({model:"user",where:[{field:"id",value:s,operator:"in"}]});return t.map(a=>{let o=f.find(i=>i.id===a.userId);return o?{session:a,user:o}:null})},updateSession:async(n,t)=>await g(t,[{field:"id",value:n}],"session",u?{async fn(f){let a=await u.get(n),o=null;if(a){let i=JSON.parse(a);o={...i.session,...f},await u.set(n,JSON.stringify({session:o,user:i.user}),i.session.expiresAt?Math.floor((i.session.expiresAt.getTime()-Date.now())/1e3):p)}else return null},executeMainFn:d.session?.storeSessionInDatabase}:void 0),deleteSession:async n=>{if(u){await u.delete(n),d.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"id",value:n}]});return}await e.delete({model:"session",where:[{field:"id",value:n}]})},deleteSessions:async n=>{if(u){let t=await e.findMany({model:"session",where:[{field:"userId",value:n}]});for(let s of t)await u.delete(s.id);d.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"userId",value:n}]});return}await e.deleteMany({model:"session",where:[{field:"userId",value:n}]})},findUserByEmail:async(n,t)=>{let s=await e.findOne({model:"user",where:[{value:n.toLowerCase(),field:"email"}]});if(!s)return null;if(t?.includeAccounts){let f=await e.findMany({model:"account",where:[{value:s.id,field:"userId"}]});return{user:s,accounts:f}}return{user:s,accounts:[]}},findUserById:async n=>await e.findOne({model:"user",where:[{field:"id",value:n}]}),linkAccount:async n=>await m({id:w(),...n},"account"),updateUser:async(n,t)=>await g(t,[{field:"id",value:n}],"user"),updateUserByEmail:async(n,t)=>await g(t,[{field:"email",value:n}],"user"),updatePassword:async(n,t)=>await g({password:t},[{field:"userId",value:n},{field:"providerId",value:"credential"}],"account"),findAccounts:async n=>await e.findMany({model:"account",where:[{field:"userId",value:n}]}),findAccount:async n=>await e.findOne({model:"account",where:[{field:"accountId",value:n}]}),updateAccount:async(n,t)=>await g(t,[{field:"id",value:n}],"account"),createVerificationValue:async n=>await m({id:w(),...n},"verification"),findVerificationValue:async n=>{let t=await e.findMany({model:"verification",where:[{field:"identifier",value:n}],sortBy:{direction:"desc",field:"createdAt"},limit:100}),s=t.pop();return t.length>0&&await e.deleteMany({model:"verification",where:[{operator:"in",field:"id",value:t.map(f=>f.id)}]}),s},deleteVerificationValue:async n=>{await e.delete({model:"verification",where:[{field:"id",value:n}]})},updateVerificationValue:async(n,t)=>await g(t,[{field:"id",value:n}],"verification")}};var se=(e,r)=>({type:e,...r});var I=e=>{let r=e.plugins?.reduce((t,s)=>{let f=s.schema;if(!f)return t;for(let[a,o]of Object.entries(f))t[a]={fields:{...t[a]?.fields,...o.fields},tableName:o.tableName||a};return t},{}),d=e.rateLimit?.storage==="database",u={rateLimit:{tableName:e.rateLimit?.tableName||"rateLimit",fields:{key:{type:"string",fieldName:e.rateLimit?.fields?.key||"key"},count:{type:"number",fieldName:e.rateLimit?.fields?.count||"count"},lastRequest:{type:"number",fieldName:e.rateLimit?.fields?.lastRequest||"lastRequest"}}}},{user:p,session:m,account:g,...n}=r||{};return{user:{tableName:e.user?.modelName||"user",fields:{name:{type:"string",required:!0,fieldName:e.user?.fields?.name||"name"},email:{type:"string",unique:!0,required:!0,fieldName:e.user?.fields?.email||"email"},emailVerified:{type:"boolean",defaultValue:()=>!1,required:!0,fieldName:e.user?.fields?.emailVerified||"emailVerified"},image:{type:"string",required:!1,fieldName:e.user?.fields?.image||"image"},createdAt:{type:"date",defaultValue:()=>new Date,required:!0,fieldName:e.user?.fields?.createdAt||"createdAt"},updatedAt:{type:"date",defaultValue:()=>new Date,required:!0,fieldName:e.user?.fields?.updatedAt||"updatedAt"},...p?.fields,...e.user?.additionalFields},order:1},session:{tableName:e.session?.modelName||"session",fields:{expiresAt:{type:"date",required:!0,fieldName:e.session?.fields?.expiresAt||"expiresAt"},ipAddress:{type:"string",required:!1,fieldName:e.session?.fields?.ipAddress||"ipAddress"},userAgent:{type:"string",required:!1,fieldName:e.session?.fields?.userAgent||"userAgent"},userId:{type:"string",fieldName:e.session?.fields?.userId||"userId",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0},...m?.fields,...e.session?.additionalFields},order:2},account:{tableName:e.account?.modelName||"account",fields:{accountId:{type:"string",required:!0,fieldName:e.account?.fields?.accountId||"accountId"},providerId:{type:"string",required:!0,fieldName:e.account?.fields?.providerId||"providerId"},userId:{type:"string",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0,fieldName:e.account?.fields?.userId||"userId"},accessToken:{type:"string",required:!1,fieldName:e.account?.fields?.accessToken||"accessToken"},refreshToken:{type:"string",required:!1,fieldName:e.account?.fields?.refreshToken||"refreshToken"},idToken:{type:"string",required:!1,fieldName:e.account?.fields?.idToken||"idToken"},expiresAt:{type:"date",required:!1,fieldName:e.account?.fields?.expiresAt||"expiresAt"},password:{type:"string",required:!1,fieldName:e.account?.fields?.password||"password"},...g?.fields},order:3},verification:{tableName:e.verification?.modelName||"verification",fields:{identifier:{type:"string",required:!0,fieldName:e.verification?.fields?.identifier||"identifier"},value:{type:"string",required:!0,fieldName:e.verification?.fields?.value||"value"},expiresAt:{type:"date",required:!0,fieldName:e.verification?.fields?.expiresAt||"expiresAt"}},order:4},...n,...d?u:{}}};var F=require("zod");function ie(e){return F.z.object({...Object.keys(e).reduce((d,u)=>{let p=e[u];if(!p)return d;if(p.type==="string[]"||p.type==="number[]")return{...d,[u]:F.z.array(p.type==="string[]"?F.z.string():F.z.number())};let m=F.z[p.type]();return p?.required===!1&&(m=m.optional()),p?.returned===!1?d:{...d,[u]:m}},{})})}var k=class extends Error{constructor(r,d){super(r),this.name="BetterAuthError",this.message=r,this.cause=d,this.stack=""}};var S=require("kysely"),x=require("kysely");function _(e){if("dialect"in e)return _(e.dialect);if("createDriver"in e){if(e instanceof x.SqliteDialect)return"sqlite";if(e instanceof x.MysqlDialect)return"mysql";if(e instanceof x.PostgresDialect)return"postgres";if(e instanceof S.MssqlDialect)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var q=async e=>{let r=e.database;if("db"in r)return{kysely:r.db,databaseType:r.type};if("dialect"in r)return{kysely:new S.Kysely({dialect:r.dialect}),databaseType:r.type};let d,u=_(r);return"createDriver"in r&&(d=r),"aggregate"in r&&(d=new x.SqliteDialect({database:r})),"getConnection"in r&&(d=new x.MysqlDialect(r)),"connect"in r&&(d=new x.PostgresDialect({pool:r})),{kysely:d?new S.Kysely({dialect:d}):null,databaseType:u}};var ae=(e,r,d)=>{let u=I(r);function p(t,s){if(s==="id")return s;let f=u[t].fields[s];return f||console.log("Field not found",t,s),f.fieldName||s}function m(t,s,f){let{type:a="sqlite"}=d||{},o=u[s].fields[f];return o.type==="boolean"&&a==="sqlite"?t?1:0:o.type==="date"&&t?t.toISOString():t}function g(t,s,f){let{type:a="sqlite"}=d||{},o=u[s].fields[f];return o.type==="boolean"&&a==="sqlite"&&t!==null?t===1:o.type==="date"&&t?new Date(t):t}let n=d?.generateId!==!1;return{transformInput(t,s){let f=t.id&&n?{id:d?.generateId?d.generateId():t.id}:{};for(let a in t){let o=u[s].fields[a];o&&(f[o.fieldName||a]=m(t[a],s,a))}return f},transformOutput(t,s,f=[]){if(!t)return null;let a=t.id?f.length===0||f.includes("id")?{id:t.id}:{}:{},o=u[s].fields;for(let i in o){if(f.length&&!f.includes(i))continue;let l=o[i];l&&(a[i]=g(t[l.fieldName||i],s,i))}return a},convertWhereClause(t,s){if(!s)return{and:null,or:null};let f={and:[],or:[]};return s.forEach(a=>{let{field:o,value:i,operator:l="=",connector:y="AND"}=a,c=p(t,o),h=A=>l.toLowerCase()==="in"?A(c,"in",Array.isArray(i)?i:[i]):l==="contains"?A(c,"like",`%${i}%`):l==="starts_with"?A(c,"like",`${i}%`):l==="ends_with"?A(c,"like",`%${i}`):l==="eq"?A(c,"=",i):l==="ne"?A(c,"<>",i):l==="gt"?A(c,">",i):l==="gte"?A(c,">=",i):l==="lt"?A(c,"<",i):l==="lte"?A(c,"<=",i):A(c,l,i);y==="OR"?f.or.push(h):f.and.push(h)}),{and:f.and.length?f.and:null,or:f.or.length?f.or:null}},async withReturning(t,s,f){let a;if(d?.type!=="mysql")a=await s.returningAll().executeTakeFirst();else{await s.execute();let o="id",i=t[o];a=await e.selectFrom(this.getModelName(f)).selectAll().where(o,"=",i).executeTakeFirst()}return a},getModelName(t){return u[t].tableName}}},W=(e,r)=>d=>{let{transformInput:u,withReturning:p,transformOutput:m,convertWhereClause:g,getModelName:n}=ae(e,d,r);return{id:"kysely",async create(t){let{model:s,data:f,select:a}=t,o=u(f,s),i=e.insertInto(n(s)).values(o);return m(await p(o,i,s),s,a)},async findOne(t){let{model:s,where:f,select:a}=t,{and:o,or:i}=g(s,f),l=e.selectFrom(n(s)).selectAll();o&&(l=l.where(c=>c.and(o.map(h=>h(c))))),i&&(l=l.where(c=>c.or(i.map(h=>h(c)))));let y=await l.executeTakeFirst();return y?m(y,s,a):null},async findMany(t){let{model:s,where:f,limit:a,offset:o,sortBy:i}=t,{and:l,or:y}=g(s,f),c=e.selectFrom(n(s)).selectAll();l&&(c=c.where(A=>A.and(l.map(v=>v(A))))),y&&(c=c.where(A=>A.or(y.map(v=>v(A))))),c=c.limit(a||100),o&&(c=c.offset(o)),i&&(c=c.orderBy(i.field,i.direction));let h=await c.selectAll().execute();return h?h.map(A=>m(A,s)):[]},async update(t){let{model:s,where:f,update:a}=t,{and:o,or:i}=g(s,f),l=u(a,s),y=e.updateTable(n(s)).set(l);return o&&(y=y.where(c=>c.and(o.map(h=>h(c))))),i&&(y=y.where(c=>c.or(i.map(h=>h(c))))),m(await p(l,y,s),s)},async updateMany(t){let{model:s,where:f,update:a}=t,{and:o,or:i}=g(s,f),l=u(a,s),y=e.updateTable(n(s)).set(l);return o&&(y=y.where(h=>h.and(o.map(A=>A(h))))),i&&(y=y.where(h=>h.or(i.map(A=>A(h))))),(await y.execute()).length},async delete(t){let{model:s,where:f}=t,{and:a,or:o}=g(s,f),i=e.deleteFrom(n(s));a&&(i=i.where(l=>l.and(a.map(y=>y(l))))),o&&(i=i.where(l=>l.or(o.map(y=>y(l))))),await i.execute()},async deleteMany(t){let{model:s,where:f}=t,{and:a,or:o}=g(s,f),i=e.deleteFrom(n(s));return a&&(i=i.where(l=>l.and(a.map(y=>y(l))))),o&&(i=i.where(l=>l.or(o.map(y=>y(l))))),(await i.execute()).length},options:r}};async function oe(e){if(!e.database)throw new k("Database configuration is required");if(typeof e.database=="function")return e.database(e);let{kysely:r,databaseType:d}=await q(e);if(!r)throw new k("Failed to initialize database adapter");return W(r,{generateId:"generateId"in e.database?e.database.generateId:void 0,type:d||"sqlite"})(e)}function de(e,r){let d=r.id?{id:r.id}:{};for(let u in e){let p=e[u],m=r[u];m!==void 0&&(d[p.fieldName||u]=m)}return d}function le(e,r){if(!r)return null;let d={id:r.id};for(let[u,p]of Object.entries(e))d[u]=r[p.fieldName||u];return d}var H=require("consola"),T=(0,H.createConsola)({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),ue=e=>({log:(...r)=>{!e?.disabled&&T.log("",...r)},error:(...r)=>{!e?.disabled&&T.error("",...r)},warn:(...r)=>{!e?.disabled&&T.warn("",...r)},info:(...r)=>{!e?.disabled&&T.info("",...r)},debug:(...r)=>{!e?.disabled&&T.debug("",...r)},box:(...r)=>{!e?.disabled&&T.box("",...r)},success:(...r)=>{!e?.disabled&&T.success("",...r)},break:(...r)=>{!e?.disabled&&console.log(`
|
|
1
|
+
"use strict";var B=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var Q=(e,r)=>{for(var d in r)B(e,d,{get:r[d],enumerable:!0})},X=(e,r,d,u)=>{if(r&&typeof r=="object"||typeof r=="function")for(let p of Z(r))!G.call(e,p)&&p!==d&&B(e,p,{get:()=>r[p],enumerable:!(u=z(r,p))||u.enumerable});return e};var Y=e=>X(B({},"__esModule",{value:!0}),e);var he={};Q(he,{convertFromDB:()=>le,convertToDB:()=>de,createFieldAttribute:()=>se,createInternalAdapter:()=>ne,getAdapter:()=>oe,getAuthTables:()=>I,getMigrations:()=>ge,getSchema:()=>j,getWithHooks:()=>U,matchType:()=>J,toZodSchema:()=>ie});module.exports=Y(he);var V=(e,r="ms")=>new Date(Date.now()+(r==="sec"?e*1e3:e));var b=require("zod"),xe=b.z.object({id:b.z.string(),providerId:b.z.string(),accountId:b.z.string(),userId:b.z.string(),accessToken:b.z.string().nullish(),refreshToken:b.z.string().nullish(),idToken:b.z.string().nullish(),expiresAt:b.z.date().nullish(),password:b.z.string().nullish()}),we=b.z.object({id:b.z.string(),email:b.z.string().transform(e=>e.toLowerCase()),emailVerified:b.z.boolean().default(!1),name:b.z.string(),image:b.z.string().nullish(),createdAt:b.z.date().default(new Date),updatedAt:b.z.date().default(new Date)}),Te=b.z.object({id:b.z.string(),userId:b.z.string(),expiresAt:b.z.date(),ipAddress:b.z.string().nullish(),userAgent:b.z.string().nullish()}),Fe=b.z.object({id:b.z.string(),value:b.z.string(),expiresAt:b.z.date(),identifier:b.z.string()});function P(e,r){let d=r.fields,u={};for(let p in e){let m=d[p];if(!m){u[p]=e[p];continue}m.returned!==!1&&(u[p]=e[p])}return u}function C(e,r){let d={...r==="user"?e.user?.additionalFields:{},...r==="session"?e.session?.additionalFields:{}};for(let u of e.plugins||[])u.schema&&u.schema[r]&&(d={...d,...u.schema[r].fields});return d}function M(e,r){let d=C(e,"user");return P(r,{fields:d})}function N(e,r){let d=C(e,"session");return P(r,{fields:d})}var E=require("nanoid"),w=e=>(0,E.nanoid)(e);function U(e,r){let d=r.hooks;async function u(m,g,n){let t=m;for(let a of d||[]){let o=a[g]?.create?.before;if(o){let i=await o(m);if(i===!1)return null;typeof i=="object"&&"data"in i&&(t=i.data)}}let s=n?await n.fn(t):null,f=!n||n.executeMainFn?await e.create({model:g,data:t}):s;for(let a of d||[]){let o=a[g]?.create?.after;o&&await o(f)}return f}async function p(m,g,n,t){let s=m;for(let o of d||[]){let i=o[n]?.update?.before;if(i){let l=await i(m);if(l===!1)return null;s=typeof l=="object"?l.data:l}}let f=t?await t.fn(s):null,a=!t||t.executeMainFn?await e.update({model:n,update:s,where:g}):f;for(let o of d||[]){let i=o[n]?.update?.after;i&&await i(a)}return a}return{createWithHooks:u,updateWithHooks:p}}var D=Object.create(null),O=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?D:globalThis),ee=new Proxy(D,{get(e,r){return O()[r]??D[r]},has(e,r){let d=O();return r in d||r in D},set(e,r,d){let u=O(!0);return u[r]=d,!0},deleteProperty(e,r){if(!r)return!1;let d=O(!0);return delete d[r],!0},ownKeys(){let e=O(!0);return Object.keys(e)}});function te(e){return e?e!=="false":!1}var re=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var L=re==="test"||te(ee.TEST);function $(e,r){if(r.advanced?.ipAddress?.disableIpTracking)return null;let d="127.0.0.1";if(L)return d;let p=r.advanced?.ipAddress?.ipAddressHeaders||["x-client-ip","x-forwarded-for","cf-connecting-ip","fastly-client-ip","x-real-ip","x-cluster-client-ip","x-forwarded","forwarded-for","forwarded"],m=e instanceof Request?e.headers:e;for(let g of p){let n=m.get(g);if(typeof n=="string"){let t=n.split(",")[0].trim();if(t)return t}}return null}function K(e){try{return JSON.parse(e)}catch{return null}}var ne=(e,r)=>{let d=r.options,u=d.secondaryStorage,p=d.session?.expiresIn||60*60*24*7,{createWithHooks:m,updateWithHooks:g}=U(e,r);return{createOAuthUser:async(n,t)=>{try{let s=await m({id:w(),createdAt:new Date,updatedAt:new Date,...n},"user"),f=await m({id:w(),...t,userId:s.id||n.id},"account");return{user:s,account:f}}catch(s){return console.log(s),null}},createUser:async n=>await m({id:w(),createdAt:new Date,updatedAt:new Date,emailVerified:!1,...n},"user"),createAccount:async n=>await m({id:w(),createdAt:new Date,updatedAt:new Date,...n},"account"),listSessions:async n=>{if(u){let s=await u.get(`active-sessions-${n}`);if(!s)return[];let f=K(s)||[],a=Date.now(),o=f.filter(l=>l.expiresAt>a),i=[];for(let l of o){let y=await u.get(l.id);if(y){let c=JSON.parse(y),h=N(r.options,{...c.session,expiresAt:new Date(c.session.expiresAt)});i.push(h)}}return i}return await e.findMany({model:"session",where:[{field:"userId",value:n}]})},listUsers:async(n,t,s,f)=>await e.findMany({model:"user",limit:n,offset:t,sortBy:s,where:f}),deleteUser:async n=>{await e.deleteMany({model:"session",where:[{field:"userId",value:n}]}),await e.deleteMany({model:"account",where:[{field:"userId",value:n}]}),await e.delete({model:"user",where:[{field:"id",value:n}]})},createSession:async(n,t,s,f)=>{let a=t instanceof Request?t.headers:t,o={id:w(32),userId:n,expiresAt:s?V(60*60*24,"sec"):V(p,"sec"),ipAddress:t&&$(t,r.options)||"",userAgent:a?.get("user-agent")||"",...f};return await m(o,"session",u?{fn:async l=>{let y=await e.findOne({model:"user",where:[{field:"id",value:n}]});u.set(l.id,JSON.stringify({session:l,user:y}),p);let c=await u.get(`active-sessions-${n}`),h=[],A=Date.now();return c&&(h=K(c)||[],h=h.filter(v=>v.expiresAt>A)),h.push({id:l.id,expiresAt:A+p*1e3}),await u.set(`active-sessions-${n}`,JSON.stringify(h),p),l},executeMainFn:d.session?.storeSessionInDatabase}:void 0)},findSession:async n=>{if(u){let a=await u.get(n);if(a){let o=JSON.parse(a),i=N(r.options,{...o.session,expiresAt:new Date(o.session.expiresAt)}),l=M(r.options,{...o.user,createdAt:new Date(o.user.createdAt),updatedAt:new Date(o.user.updatedAt)});return{session:i,user:l}}}let t=await e.findOne({model:"session",where:[{value:n,field:"id"}]});if(!t)return null;let s=await e.findOne({model:"user",where:[{value:t.userId,field:"id"}]});if(!s)return null;let f=M(r.options,s);return{session:N(r.options,t),user:f}},findSessions:async n=>{if(u){let a=[];for(let o of n){let i=await u.get(o);if(i){let l=JSON.parse(i),y={session:{...l.session,expiresAt:new Date(l.session.expiresAt)},user:{...l.user,createdAt:new Date(l.user.createdAt),updatedAt:new Date(l.user.updatedAt)}};a.push(y)}}return a}let t=await e.findMany({model:"session",where:[{field:"id",value:n,operator:"in"}]}),s=t.map(a=>a.userId);if(!s.length)return[];let f=await e.findMany({model:"user",where:[{field:"id",value:s,operator:"in"}]});return t.map(a=>{let o=f.find(i=>i.id===a.userId);return o?{session:a,user:o}:null})},updateSession:async(n,t)=>await g(t,[{field:"id",value:n}],"session",u?{async fn(f){let a=await u.get(n),o=null;if(a){let i=JSON.parse(a);o={...i.session,...f},await u.set(n,JSON.stringify({session:o,user:i.user}),i.session.expiresAt?Math.floor((i.session.expiresAt.getTime()-Date.now())/1e3):p)}else return null},executeMainFn:d.session?.storeSessionInDatabase}:void 0),deleteSession:async n=>{if(u){await u.delete(n),d.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"id",value:n}]});return}await e.delete({model:"session",where:[{field:"id",value:n}]})},deleteSessions:async n=>{if(u){let t=await e.findMany({model:"session",where:[{field:"userId",value:n}]});for(let s of t)await u.delete(s.id);d.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"userId",value:n}]});return}await e.deleteMany({model:"session",where:[{field:"userId",value:n}]})},findUserByEmail:async(n,t)=>{let s=await e.findOne({model:"user",where:[{value:n.toLowerCase(),field:"email"}]});if(!s)return null;if(t?.includeAccounts){let f=await e.findMany({model:"account",where:[{value:s.id,field:"userId"}]});return{user:s,accounts:f}}return{user:s,accounts:[]}},findUserById:async n=>await e.findOne({model:"user",where:[{field:"id",value:n}]}),linkAccount:async n=>await m({id:w(),...n},"account"),updateUser:async(n,t)=>await g(t,[{field:"id",value:n}],"user"),updateUserByEmail:async(n,t)=>await g(t,[{field:"email",value:n}],"user"),updatePassword:async(n,t)=>await g({password:t},[{field:"userId",value:n},{field:"providerId",value:"credential"}],"account"),findAccounts:async n=>await e.findMany({model:"account",where:[{field:"userId",value:n}]}),findAccount:async n=>await e.findOne({model:"account",where:[{field:"accountId",value:n}]}),updateAccount:async(n,t)=>await g(t,[{field:"id",value:n}],"account"),createVerificationValue:async n=>await m({id:w(),...n},"verification"),findVerificationValue:async n=>{let t=await e.findMany({model:"verification",where:[{field:"identifier",value:n}],limit:100}),s=t.pop();return t.length>0&&await e.deleteMany({model:"verification",where:[{operator:"in",field:"id",value:t.map(f=>f.id)}]}),s},deleteVerificationValue:async n=>{await e.delete({model:"verification",where:[{field:"id",value:n}]})},updateVerificationValue:async(n,t)=>await g(t,[{field:"id",value:n}],"verification")}};var se=(e,r)=>({type:e,...r});var I=e=>{let r=e.plugins?.reduce((t,s)=>{let f=s.schema;if(!f)return t;for(let[a,o]of Object.entries(f))t[a]={fields:{...t[a]?.fields,...o.fields},tableName:o.tableName||a};return t},{}),d=e.rateLimit?.storage==="database",u={rateLimit:{tableName:e.rateLimit?.tableName||"rateLimit",fields:{key:{type:"string",fieldName:e.rateLimit?.fields?.key||"key"},count:{type:"number",fieldName:e.rateLimit?.fields?.count||"count"},lastRequest:{type:"number",fieldName:e.rateLimit?.fields?.lastRequest||"lastRequest"}}}},{user:p,session:m,account:g,...n}=r||{};return{user:{tableName:e.user?.modelName||"user",fields:{name:{type:"string",required:!0,fieldName:e.user?.fields?.name||"name"},email:{type:"string",unique:!0,required:!0,fieldName:e.user?.fields?.email||"email"},emailVerified:{type:"boolean",defaultValue:()=>!1,required:!0,fieldName:e.user?.fields?.emailVerified||"emailVerified"},image:{type:"string",required:!1,fieldName:e.user?.fields?.image||"image"},createdAt:{type:"date",defaultValue:()=>new Date,required:!0,fieldName:e.user?.fields?.createdAt||"createdAt"},updatedAt:{type:"date",defaultValue:()=>new Date,required:!0,fieldName:e.user?.fields?.updatedAt||"updatedAt"},...p?.fields,...e.user?.additionalFields},order:1},session:{tableName:e.session?.modelName||"session",fields:{expiresAt:{type:"date",required:!0,fieldName:e.session?.fields?.expiresAt||"expiresAt"},ipAddress:{type:"string",required:!1,fieldName:e.session?.fields?.ipAddress||"ipAddress"},userAgent:{type:"string",required:!1,fieldName:e.session?.fields?.userAgent||"userAgent"},userId:{type:"string",fieldName:e.session?.fields?.userId||"userId",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0},...m?.fields,...e.session?.additionalFields},order:2},account:{tableName:e.account?.modelName||"account",fields:{accountId:{type:"string",required:!0,fieldName:e.account?.fields?.accountId||"accountId"},providerId:{type:"string",required:!0,fieldName:e.account?.fields?.providerId||"providerId"},userId:{type:"string",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0,fieldName:e.account?.fields?.userId||"userId"},accessToken:{type:"string",required:!1,fieldName:e.account?.fields?.accessToken||"accessToken"},refreshToken:{type:"string",required:!1,fieldName:e.account?.fields?.refreshToken||"refreshToken"},idToken:{type:"string",required:!1,fieldName:e.account?.fields?.idToken||"idToken"},expiresAt:{type:"date",required:!1,fieldName:e.account?.fields?.expiresAt||"expiresAt"},password:{type:"string",required:!1,fieldName:e.account?.fields?.password||"password"},...g?.fields},order:3},verification:{tableName:e.verification?.modelName||"verification",fields:{identifier:{type:"string",required:!0,fieldName:e.verification?.fields?.identifier||"identifier"},value:{type:"string",required:!0,fieldName:e.verification?.fields?.value||"value"},expiresAt:{type:"date",required:!0,fieldName:e.verification?.fields?.expiresAt||"expiresAt"}},order:4},...n,...d?u:{}}};var F=require("zod");function ie(e){return F.z.object({...Object.keys(e).reduce((d,u)=>{let p=e[u];if(!p)return d;if(p.type==="string[]"||p.type==="number[]")return{...d,[u]:F.z.array(p.type==="string[]"?F.z.string():F.z.number())};let m=F.z[p.type]();return p?.required===!1&&(m=m.optional()),p?.returned===!1?d:{...d,[u]:m}},{})})}var k=class extends Error{constructor(r,d){super(r),this.name="BetterAuthError",this.message=r,this.cause=d,this.stack=""}};var S=require("kysely"),x=require("kysely");function _(e){if("dialect"in e)return _(e.dialect);if("createDriver"in e){if(e instanceof x.SqliteDialect)return"sqlite";if(e instanceof x.MysqlDialect)return"mysql";if(e instanceof x.PostgresDialect)return"postgres";if(e instanceof S.MssqlDialect)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var q=async e=>{let r=e.database;if("db"in r)return{kysely:r.db,databaseType:r.type};if("dialect"in r)return{kysely:new S.Kysely({dialect:r.dialect}),databaseType:r.type};let d,u=_(r);return"createDriver"in r&&(d=r),"aggregate"in r&&(d=new x.SqliteDialect({database:r})),"getConnection"in r&&(d=new x.MysqlDialect(r)),"connect"in r&&(d=new x.PostgresDialect({pool:r})),{kysely:d?new S.Kysely({dialect:d}):null,databaseType:u}};var ae=(e,r,d)=>{let u=I(r);function p(t,s){if(s==="id")return s;let f=u[t].fields[s];return f||console.log("Field not found",t,s),f.fieldName||s}function m(t,s,f){let{type:a="sqlite"}=d||{},o=u[s].fields[f];return o.type==="boolean"&&a==="sqlite"?t?1:0:o.type==="date"&&t?t.toISOString():t}function g(t,s,f){let{type:a="sqlite"}=d||{},o=u[s].fields[f];return o.type==="boolean"&&a==="sqlite"&&t!==null?t===1:o.type==="date"&&t?new Date(t):t}let n=d?.generateId!==!1;return{transformInput(t,s){let f=t.id&&n?{id:d?.generateId?d.generateId():t.id}:{};for(let a in t){let o=u[s].fields[a];o&&(f[o.fieldName||a]=m(t[a],s,a))}return f},transformOutput(t,s,f=[]){if(!t)return null;let a=t.id?f.length===0||f.includes("id")?{id:t.id}:{}:{},o=u[s].fields;for(let i in o){if(f.length&&!f.includes(i))continue;let l=o[i];l&&(a[i]=g(t[l.fieldName||i],s,i))}return a},convertWhereClause(t,s){if(!s)return{and:null,or:null};let f={and:[],or:[]};return s.forEach(a=>{let{field:o,value:i,operator:l="=",connector:y="AND"}=a,c=p(t,o),h=A=>l.toLowerCase()==="in"?A(c,"in",Array.isArray(i)?i:[i]):l==="contains"?A(c,"like",`%${i}%`):l==="starts_with"?A(c,"like",`${i}%`):l==="ends_with"?A(c,"like",`%${i}`):l==="eq"?A(c,"=",i):l==="ne"?A(c,"<>",i):l==="gt"?A(c,">",i):l==="gte"?A(c,">=",i):l==="lt"?A(c,"<",i):l==="lte"?A(c,"<=",i):A(c,l,i);y==="OR"?f.or.push(h):f.and.push(h)}),{and:f.and.length?f.and:null,or:f.or.length?f.or:null}},async withReturning(t,s,f){let a;if(d?.type!=="mysql")a=await s.returningAll().executeTakeFirst();else{await s.execute();let o="id",i=t[o];a=await e.selectFrom(this.getModelName(f)).selectAll().where(o,"=",i).executeTakeFirst()}return a},getModelName(t){return u[t].tableName}}},W=(e,r)=>d=>{let{transformInput:u,withReturning:p,transformOutput:m,convertWhereClause:g,getModelName:n}=ae(e,d,r);return{id:"kysely",async create(t){let{model:s,data:f,select:a}=t,o=u(f,s),i=e.insertInto(n(s)).values(o);return m(await p(o,i,s),s,a)},async findOne(t){let{model:s,where:f,select:a}=t,{and:o,or:i}=g(s,f),l=e.selectFrom(n(s)).selectAll();o&&(l=l.where(c=>c.and(o.map(h=>h(c))))),i&&(l=l.where(c=>c.or(i.map(h=>h(c)))));let y=await l.executeTakeFirst();return y?m(y,s,a):null},async findMany(t){let{model:s,where:f,limit:a,offset:o,sortBy:i}=t,{and:l,or:y}=g(s,f),c=e.selectFrom(n(s)).selectAll();l&&(c=c.where(A=>A.and(l.map(v=>v(A))))),y&&(c=c.where(A=>A.or(y.map(v=>v(A))))),c=c.limit(a||100),o&&(c=c.offset(o)),i&&(c=c.orderBy(i.field,i.direction));let h=await c.selectAll().execute();return h?h.map(A=>m(A,s)):[]},async update(t){let{model:s,where:f,update:a}=t,{and:o,or:i}=g(s,f),l=u(a,s),y=e.updateTable(n(s)).set(l);return o&&(y=y.where(c=>c.and(o.map(h=>h(c))))),i&&(y=y.where(c=>c.or(i.map(h=>h(c))))),m(await p(l,y,s),s)},async updateMany(t){let{model:s,where:f,update:a}=t,{and:o,or:i}=g(s,f),l=u(a,s),y=e.updateTable(n(s)).set(l);return o&&(y=y.where(h=>h.and(o.map(A=>A(h))))),i&&(y=y.where(h=>h.or(i.map(A=>A(h))))),(await y.execute()).length},async delete(t){let{model:s,where:f}=t,{and:a,or:o}=g(s,f),i=e.deleteFrom(n(s));a&&(i=i.where(l=>l.and(a.map(y=>y(l))))),o&&(i=i.where(l=>l.or(o.map(y=>y(l))))),await i.execute()},async deleteMany(t){let{model:s,where:f}=t,{and:a,or:o}=g(s,f),i=e.deleteFrom(n(s));return a&&(i=i.where(l=>l.and(a.map(y=>y(l))))),o&&(i=i.where(l=>l.or(o.map(y=>y(l))))),(await i.execute()).length},options:r}};async function oe(e){if(!e.database)throw new k("Database configuration is required");if(typeof e.database=="function")return e.database(e);let{kysely:r,databaseType:d}=await q(e);if(!r)throw new k("Failed to initialize database adapter");return W(r,{generateId:"generateId"in e.database?e.database.generateId:void 0,type:d||"sqlite"})(e)}function de(e,r){let d=r.id?{id:r.id}:{};for(let u in e){let p=e[u],m=r[u];m!==void 0&&(d[p.fieldName||u]=m)}return d}function le(e,r){if(!r)return null;let d={id:r.id};for(let[u,p]of Object.entries(e))d[u]=r[p.fieldName||u];return d}var H=require("consola"),T=(0,H.createConsola)({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),ue=e=>({log:(...r)=>{!e?.disabled&&T.log("",...r)},error:(...r)=>{!e?.disabled&&T.error("",...r)},warn:(...r)=>{!e?.disabled&&T.warn("",...r)},info:(...r)=>{!e?.disabled&&T.info("",...r)},debug:(...r)=>{!e?.disabled&&T.debug("",...r)},box:(...r)=>{!e?.disabled&&T.box("",...r)},success:(...r)=>{!e?.disabled&&T.success("",...r)},break:(...r)=>{!e?.disabled&&console.log(`
|
|
2
2
|
`)}}),R=ue();function j(e){let r=I(e),d={};for(let u in r){let p=r[u],m=p.fields,g={};if(Object.entries(m).forEach(([n,t])=>{g[t.fieldName||n]=t}),d[p.tableName]){d[p.tableName].fields={...d[p.tableName].fields,...g};continue}d[p.tableName]={fields:g,order:p.order||1/0}}return d}var ce={string:["character varying","text"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamp","date"]},fe={string:["varchar","text"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["datetime","date"]},pe={string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"]},ye={string:["nvarchar","varchar"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","boolean"],date:["datetime","date"]},me={postgres:ce,mysql:fe,sqlite:pe,mssql:ye};function J(e,r,d){return r==="string[]"||r==="number[]"?e.toLowerCase().includes("json"):me[d][r].map(g=>g.toLowerCase()).includes(e.toLowerCase())}async function ge(e){let r=j(e),{kysely:d,databaseType:u}=await q(e);u||(R.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),u="sqlite"),d||(R.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1));let p=await d.introspection.getTables(),m=[],g=[];for(let[a,o]of Object.entries(r)){let i=p.find(y=>y.name===a);if(!i){let y=m.findIndex(A=>A.table===a),c={table:a,fields:o.fields,order:o.order||1/0},h=m.findIndex(A=>(A.order||1/0)>c.order);h===-1?y===-1?m.push(c):m[y].fields={...m[y].fields,...o.fields}:m.splice(h,0,c);continue}let l={};for(let[y,c]of Object.entries(o.fields)){let h=i.columns.find(A=>A.name===y);if(!h){l[y]=c;continue}J(h.dataType,c.type,u)||R.warn(`Field ${y} in table ${a} has a different type in the database. Expected ${c.type} but got ${h.dataType}.`)}Object.keys(l).length>0&&g.push({table:a,fields:l,order:o.order||1/0})}let n=[];function t(a){let o={string:"text",boolean:"boolean",number:"integer",date:"date"};return u==="mysql"&&a==="string"?"varchar(255)":u==="sqlite"&&(a==="string[]"||a==="number[]")?"text":a==="string[]"||a==="number[]"?"jsonb":o[a]}if(g.length)for(let a of g)for(let[o,i]of Object.entries(a.fields)){let l=t(i.type),y=d.schema.alterTable(a.table).addColumn(o,l,c=>(c=i.required!==!1?c.notNull():c,i.references&&(c=c.references(`${i.references.model}.${i.references.field}`)),c));n.push(y)}if(m.length)for(let a of m){let o=d.schema.createTable(a.table).addColumn("id",t("string"),i=>i.primaryKey().notNull());for(let[i,l]of Object.entries(a.fields)){let y=t(l.type);o=o.addColumn(i,y,c=>(c=l.required!==!1?c.notNull():c,l.references&&(c=c.references(`${l.references.model}.${l.references.field}`)),l.unique&&(c=c.unique()),c))}n.push(o)}async function s(){for(let a of n)await a.execute()}async function f(){return n.map(o=>o.compile().sql).join(`;
|
|
3
3
|
|
|
4
4
|
`)}return{toBeCreated:m,toBeAdded:g,runMigrations:s,compileMigrations:f}}0&&(module.exports={convertFromDB,convertToDB,createFieldAttribute,createInternalAdapter,getAdapter,getAuthTables,getMigrations,getSchema,getWithHooks,matchType,toZodSchema});
|
package/dist/db.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { k as Adapter, B as BetterAuthOptions, W as Where, F as FieldAttribute, D as FieldType, K as KyselyDatabaseType } from './auth-
|
|
2
|
-
export { _ as BetterAuthDbSchema, M as FieldAttributeConfig, Z as InferFieldsFromOptions, Y as InferFieldsFromPlugins, T as InferFieldsInput, V as InferFieldsInputClient, Q as InferFieldsOutput, O as InferValueType, L as InternalAdapter, X as PluginFieldAttribute, N as createFieldAttribute, J as createInternalAdapter, $ as getAuthTables } from './auth-
|
|
1
|
+
import { k as Adapter, B as BetterAuthOptions, W as Where, F as FieldAttribute, D as FieldType, K as KyselyDatabaseType } from './auth-RxDdMH7n.cjs';
|
|
2
|
+
export { _ as BetterAuthDbSchema, M as FieldAttributeConfig, Z as InferFieldsFromOptions, Y as InferFieldsFromPlugins, T as InferFieldsInput, V as InferFieldsInputClient, Q as InferFieldsOutput, O as InferValueType, L as InternalAdapter, X as PluginFieldAttribute, N as createFieldAttribute, J as createInternalAdapter, $ as getAuthTables } from './auth-RxDdMH7n.cjs';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import 'kysely';
|
|
5
5
|
import 'better-call';
|
package/dist/db.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { k as Adapter, B as BetterAuthOptions, W as Where, F as FieldAttribute, D as FieldType, K as KyselyDatabaseType } from './auth-
|
|
2
|
-
export { _ as BetterAuthDbSchema, M as FieldAttributeConfig, Z as InferFieldsFromOptions, Y as InferFieldsFromPlugins, T as InferFieldsInput, V as InferFieldsInputClient, Q as InferFieldsOutput, O as InferValueType, L as InternalAdapter, X as PluginFieldAttribute, N as createFieldAttribute, J as createInternalAdapter, $ as getAuthTables } from './auth-
|
|
1
|
+
import { k as Adapter, B as BetterAuthOptions, W as Where, F as FieldAttribute, D as FieldType, K as KyselyDatabaseType } from './auth-aIfiqYkD.js';
|
|
2
|
+
export { _ as BetterAuthDbSchema, M as FieldAttributeConfig, Z as InferFieldsFromOptions, Y as InferFieldsFromPlugins, T as InferFieldsInput, V as InferFieldsInputClient, Q as InferFieldsOutput, O as InferValueType, L as InternalAdapter, X as PluginFieldAttribute, N as createFieldAttribute, J as createInternalAdapter, $ as getAuthTables } from './auth-aIfiqYkD.js';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import 'kysely';
|
|
5
5
|
import 'better-call';
|
package/dist/db.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var q=(e,r="ms")=>new Date(Date.now()+(r==="sec"?e*1e3:e));import{z as b}from"zod";var de=b.object({id:b.string(),providerId:b.string(),accountId:b.string(),userId:b.string(),accessToken:b.string().nullish(),refreshToken:b.string().nullish(),idToken:b.string().nullish(),expiresAt:b.date().nullish(),password:b.string().nullish()}),le=b.object({id:b.string(),email:b.string().transform(e=>e.toLowerCase()),emailVerified:b.boolean().default(!1),name:b.string(),image:b.string().nullish(),createdAt:b.date().default(new Date),updatedAt:b.date().default(new Date)}),ue=b.object({id:b.string(),userId:b.string(),expiresAt:b.date(),ipAddress:b.string().nullish(),userAgent:b.string().nullish()}),ce=b.object({id:b.string(),value:b.string(),expiresAt:b.date(),identifier:b.string()});function V(e,r){let d=r.fields,u={};for(let m in e){let y=d[m];if(!y){u[m]=e[m];continue}y.returned!==!1&&(u[m]=e[m])}return u}function M(e,r){let d={...r==="user"?e.user?.additionalFields:{},...r==="session"?e.session?.additionalFields:{}};for(let u of e.plugins||[])u.schema&&u.schema[r]&&(d={...d,...u.schema[r].fields});return d}function R(e,r){let d=M(e,"user");return V(r,{fields:d})}function I(e,r){let d=M(e,"session");return V(r,{fields:d})}import{nanoid as H}from"nanoid";var x=e=>H(e);function U(e,r){let d=r.hooks;async function u(y,g,n){let t=y;for(let a of d||[]){let o=a[g]?.create?.before;if(o){let i=await o(y);if(i===!1)return null;typeof i=="object"&&"data"in i&&(t=i.data)}}let s=n?await n.fn(t):null,f=!n||n.executeMainFn?await e.create({model:g,data:t}):s;for(let a of d||[]){let o=a[g]?.create?.after;o&&await o(f)}return f}async function m(y,g,n,t){let s=y;for(let o of d||[]){let i=o[n]?.update?.before;if(i){let l=await i(y);if(l===!1)return null;s=typeof l=="object"?l.data:l}}let f=t?await t.fn(s):null,a=!t||t.executeMainFn?await e.update({model:n,update:s,where:g}):f;for(let o of d||[]){let i=o[n]?.update?.after;i&&await i(a)}return a}return{createWithHooks:u,updateWithHooks:m}}var k=Object.create(null),F=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?k:globalThis),J=new Proxy(k,{get(e,r){return F()[r]??k[r]},has(e,r){let d=F();return r in d||r in k},set(e,r,d){let u=F(!0);return u[r]=d,!0},deleteProperty(e,r){if(!r)return!1;let d=F(!0);return delete d[r],!0},ownKeys(){let e=F(!0);return Object.keys(e)}});function z(e){return e?e!=="false":!1}var Z=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var K=Z==="test"||z(J.TEST);function j(e,r){if(r.advanced?.ipAddress?.disableIpTracking)return null;let d="127.0.0.1";if(K)return d;let m=r.advanced?.ipAddress?.ipAddressHeaders||["x-client-ip","x-forwarded-for","cf-connecting-ip","fastly-client-ip","x-real-ip","x-cluster-client-ip","x-forwarded","forwarded-for","forwarded"],y=e instanceof Request?e.headers:e;for(let g of m){let n=y.get(g);if(typeof n=="string"){let t=n.split(",")[0].trim();if(t)return t}}return null}function B(e){try{return JSON.parse(e)}catch{return null}}var Ie=(e,r)=>{let d=r.options,u=d.secondaryStorage,m=d.session?.expiresIn||60*60*24*7,{createWithHooks:y,updateWithHooks:g}=U(e,r);return{createOAuthUser:async(n,t)=>{try{let s=await y({id:x(),createdAt:new Date,updatedAt:new Date,...n},"user"),f=await y({id:x(),...t,userId:s.id||n.id},"account");return{user:s,account:f}}catch(s){return console.log(s),null}},createUser:async n=>await y({id:x(),createdAt:new Date,updatedAt:new Date,emailVerified:!1,...n},"user"),createAccount:async n=>await y({id:x(),createdAt:new Date,updatedAt:new Date,...n},"account"),listSessions:async n=>{if(u){let s=await u.get(`active-sessions-${n}`);if(!s)return[];let f=B(s)||[],a=Date.now(),o=f.filter(l=>l.expiresAt>a),i=[];for(let l of o){let p=await u.get(l.id);if(p){let c=JSON.parse(p),h=I(r.options,{...c.session,expiresAt:new Date(c.session.expiresAt)});i.push(h)}}return i}return await e.findMany({model:"session",where:[{field:"userId",value:n}]})},listUsers:async(n,t,s,f)=>await e.findMany({model:"user",limit:n,offset:t,sortBy:s,where:f}),deleteUser:async n=>{await e.deleteMany({model:"session",where:[{field:"userId",value:n}]}),await e.deleteMany({model:"account",where:[{field:"userId",value:n}]}),await e.delete({model:"user",where:[{field:"id",value:n}]})},createSession:async(n,t,s,f)=>{let a=t instanceof Request?t.headers:t,o={id:x(32),userId:n,expiresAt:s?q(60*60*24,"sec"):q(m,"sec"),ipAddress:t&&j(t,r.options)||"",userAgent:a?.get("user-agent")||"",...f};return await y(o,"session",u?{fn:async l=>{let p=await e.findOne({model:"user",where:[{field:"id",value:n}]});u.set(l.id,JSON.stringify({session:l,user:p}),m);let c=await u.get(`active-sessions-${n}`),h=[],A=Date.now();return c&&(h=B(c)||[],h=h.filter(T=>T.expiresAt>A)),h.push({id:l.id,expiresAt:A+m*1e3}),await u.set(`active-sessions-${n}`,JSON.stringify(h),m),l},executeMainFn:d.session?.storeSessionInDatabase}:void 0)},findSession:async n=>{if(u){let a=await u.get(n);if(a){let o=JSON.parse(a),i=I(r.options,{...o.session,expiresAt:new Date(o.session.expiresAt)}),l=R(r.options,{...o.user,createdAt:new Date(o.user.createdAt),updatedAt:new Date(o.user.updatedAt)});return{session:i,user:l}}}let t=await e.findOne({model:"session",where:[{value:n,field:"id"}]});if(!t)return null;let s=await e.findOne({model:"user",where:[{value:t.userId,field:"id"}]});if(!s)return null;let f=R(r.options,s);return{session:I(r.options,t),user:f}},findSessions:async n=>{if(u){let a=[];for(let o of n){let i=await u.get(o);if(i){let l=JSON.parse(i),p={session:{...l.session,expiresAt:new Date(l.session.expiresAt)},user:{...l.user,createdAt:new Date(l.user.createdAt),updatedAt:new Date(l.user.updatedAt)}};a.push(p)}}return a}let t=await e.findMany({model:"session",where:[{field:"id",value:n,operator:"in"}]}),s=t.map(a=>a.userId);if(!s.length)return[];let f=await e.findMany({model:"user",where:[{field:"id",value:s,operator:"in"}]});return t.map(a=>{let o=f.find(i=>i.id===a.userId);return o?{session:a,user:o}:null})},updateSession:async(n,t)=>await g(t,[{field:"id",value:n}],"session",u?{async fn(f){let a=await u.get(n),o=null;if(a){let i=JSON.parse(a);o={...i.session,...f},await u.set(n,JSON.stringify({session:o,user:i.user}),i.session.expiresAt?Math.floor((i.session.expiresAt.getTime()-Date.now())/1e3):m)}else return null},executeMainFn:d.session?.storeSessionInDatabase}:void 0),deleteSession:async n=>{if(u){await u.delete(n),d.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"id",value:n}]});return}await e.delete({model:"session",where:[{field:"id",value:n}]})},deleteSessions:async n=>{if(u){let t=await e.findMany({model:"session",where:[{field:"userId",value:n}]});for(let s of t)await u.delete(s.id);d.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"userId",value:n}]});return}await e.deleteMany({model:"session",where:[{field:"userId",value:n}]})},findUserByEmail:async(n,t)=>{let s=await e.findOne({model:"user",where:[{value:n.toLowerCase(),field:"email"}]});if(!s)return null;if(t?.includeAccounts){let f=await e.findMany({model:"account",where:[{value:s.id,field:"userId"}]});return{user:s,accounts:f}}return{user:s,accounts:[]}},findUserById:async n=>await e.findOne({model:"user",where:[{field:"id",value:n}]}),linkAccount:async n=>await y({id:x(),...n},"account"),updateUser:async(n,t)=>await g(t,[{field:"id",value:n}],"user"),updateUserByEmail:async(n,t)=>await g(t,[{field:"email",value:n}],"user"),updatePassword:async(n,t)=>await g({password:t},[{field:"userId",value:n},{field:"providerId",value:"credential"}],"account"),findAccounts:async n=>await e.findMany({model:"account",where:[{field:"userId",value:n}]}),findAccount:async n=>await e.findOne({model:"account",where:[{field:"accountId",value:n}]}),updateAccount:async(n,t)=>await g(t,[{field:"id",value:n}],"account"),createVerificationValue:async n=>await y({id:x(),...n},"verification"),findVerificationValue:async n=>{let t=await e.findMany({model:"verification",where:[{field:"identifier",value:n}],sortBy:{direction:"desc",field:"createdAt"},limit:100}),s=t.pop();return t.length>0&&await e.deleteMany({model:"verification",where:[{operator:"in",field:"id",value:t.map(f=>f.id)}]}),s},deleteVerificationValue:async n=>{await e.delete({model:"verification",where:[{field:"id",value:n}]})},updateVerificationValue:async(n,t)=>await g(t,[{field:"id",value:n}],"verification")}};var Se=(e,r)=>({type:e,...r});var S=e=>{let r=e.plugins?.reduce((t,s)=>{let f=s.schema;if(!f)return t;for(let[a,o]of Object.entries(f))t[a]={fields:{...t[a]?.fields,...o.fields},tableName:o.tableName||a};return t},{}),d=e.rateLimit?.storage==="database",u={rateLimit:{tableName:e.rateLimit?.tableName||"rateLimit",fields:{key:{type:"string",fieldName:e.rateLimit?.fields?.key||"key"},count:{type:"number",fieldName:e.rateLimit?.fields?.count||"count"},lastRequest:{type:"number",fieldName:e.rateLimit?.fields?.lastRequest||"lastRequest"}}}},{user:m,session:y,account:g,...n}=r||{};return{user:{tableName:e.user?.modelName||"user",fields:{name:{type:"string",required:!0,fieldName:e.user?.fields?.name||"name"},email:{type:"string",unique:!0,required:!0,fieldName:e.user?.fields?.email||"email"},emailVerified:{type:"boolean",defaultValue:()=>!1,required:!0,fieldName:e.user?.fields?.emailVerified||"emailVerified"},image:{type:"string",required:!1,fieldName:e.user?.fields?.image||"image"},createdAt:{type:"date",defaultValue:()=>new Date,required:!0,fieldName:e.user?.fields?.createdAt||"createdAt"},updatedAt:{type:"date",defaultValue:()=>new Date,required:!0,fieldName:e.user?.fields?.updatedAt||"updatedAt"},...m?.fields,...e.user?.additionalFields},order:1},session:{tableName:e.session?.modelName||"session",fields:{expiresAt:{type:"date",required:!0,fieldName:e.session?.fields?.expiresAt||"expiresAt"},ipAddress:{type:"string",required:!1,fieldName:e.session?.fields?.ipAddress||"ipAddress"},userAgent:{type:"string",required:!1,fieldName:e.session?.fields?.userAgent||"userAgent"},userId:{type:"string",fieldName:e.session?.fields?.userId||"userId",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0},...y?.fields,...e.session?.additionalFields},order:2},account:{tableName:e.account?.modelName||"account",fields:{accountId:{type:"string",required:!0,fieldName:e.account?.fields?.accountId||"accountId"},providerId:{type:"string",required:!0,fieldName:e.account?.fields?.providerId||"providerId"},userId:{type:"string",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0,fieldName:e.account?.fields?.userId||"userId"},accessToken:{type:"string",required:!1,fieldName:e.account?.fields?.accessToken||"accessToken"},refreshToken:{type:"string",required:!1,fieldName:e.account?.fields?.refreshToken||"refreshToken"},idToken:{type:"string",required:!1,fieldName:e.account?.fields?.idToken||"idToken"},expiresAt:{type:"date",required:!1,fieldName:e.account?.fields?.expiresAt||"expiresAt"},password:{type:"string",required:!1,fieldName:e.account?.fields?.password||"password"},...g?.fields},order:3},verification:{tableName:e.verification?.modelName||"verification",fields:{identifier:{type:"string",required:!0,fieldName:e.verification?.fields?.identifier||"identifier"},value:{type:"string",required:!0,fieldName:e.verification?.fields?.value||"value"},expiresAt:{type:"date",required:!0,fieldName:e.verification?.fields?.expiresAt||"expiresAt"}},order:4},...n,...d?u:{}}};import{z as v}from"zod";function Re(e){return v.object({...Object.keys(e).reduce((d,u)=>{let m=e[u];if(!m)return d;if(m.type==="string[]"||m.type==="number[]")return{...d,[u]:v.array(m.type==="string[]"?v.string():v.number())};let y=v[m.type]();return m?.required===!1&&(y=y.optional()),m?.returned===!1?d:{...d,[u]:y}},{})})}var O=class extends Error{constructor(r,d){super(r),this.name="BetterAuthError",this.message=r,this.cause=d,this.stack=""}};import{Kysely as P,MssqlDialect as G}from"kysely";import{MysqlDialect as C,PostgresDialect as E,SqliteDialect as L}from"kysely";function $(e){if("dialect"in e)return $(e.dialect);if("createDriver"in e){if(e instanceof L)return"sqlite";if(e instanceof C)return"mysql";if(e instanceof E)return"postgres";if(e instanceof G)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var N=async e=>{let r=e.database;if("db"in r)return{kysely:r.db,databaseType:r.type};if("dialect"in r)return{kysely:new P({dialect:r.dialect}),databaseType:r.type};let d,u=$(r);return"createDriver"in r&&(d=r),"aggregate"in r&&(d=new L({database:r})),"getConnection"in r&&(d=new C(r)),"connect"in r&&(d=new E({pool:r})),{kysely:d?new P({dialect:d}):null,databaseType:u}};var Q=(e,r,d)=>{let u=S(r);function m(t,s){if(s==="id")return s;let f=u[t].fields[s];return f||console.log("Field not found",t,s),f.fieldName||s}function y(t,s,f){let{type:a="sqlite"}=d||{},o=u[s].fields[f];return o.type==="boolean"&&a==="sqlite"?t?1:0:o.type==="date"&&t?t.toISOString():t}function g(t,s,f){let{type:a="sqlite"}=d||{},o=u[s].fields[f];return o.type==="boolean"&&a==="sqlite"&&t!==null?t===1:o.type==="date"&&t?new Date(t):t}let n=d?.generateId!==!1;return{transformInput(t,s){let f=t.id&&n?{id:d?.generateId?d.generateId():t.id}:{};for(let a in t){let o=u[s].fields[a];o&&(f[o.fieldName||a]=y(t[a],s,a))}return f},transformOutput(t,s,f=[]){if(!t)return null;let a=t.id?f.length===0||f.includes("id")?{id:t.id}:{}:{},o=u[s].fields;for(let i in o){if(f.length&&!f.includes(i))continue;let l=o[i];l&&(a[i]=g(t[l.fieldName||i],s,i))}return a},convertWhereClause(t,s){if(!s)return{and:null,or:null};let f={and:[],or:[]};return s.forEach(a=>{let{field:o,value:i,operator:l="=",connector:p="AND"}=a,c=m(t,o),h=A=>l.toLowerCase()==="in"?A(c,"in",Array.isArray(i)?i:[i]):l==="contains"?A(c,"like",`%${i}%`):l==="starts_with"?A(c,"like",`${i}%`):l==="ends_with"?A(c,"like",`%${i}`):l==="eq"?A(c,"=",i):l==="ne"?A(c,"<>",i):l==="gt"?A(c,">",i):l==="gte"?A(c,">=",i):l==="lt"?A(c,"<",i):l==="lte"?A(c,"<=",i):A(c,l,i);p==="OR"?f.or.push(h):f.and.push(h)}),{and:f.and.length?f.and:null,or:f.or.length?f.or:null}},async withReturning(t,s,f){let a;if(d?.type!=="mysql")a=await s.returningAll().executeTakeFirst();else{await s.execute();let o="id",i=t[o];a=await e.selectFrom(this.getModelName(f)).selectAll().where(o,"=",i).executeTakeFirst()}return a},getModelName(t){return u[t].tableName}}},_=(e,r)=>d=>{let{transformInput:u,withReturning:m,transformOutput:y,convertWhereClause:g,getModelName:n}=Q(e,d,r);return{id:"kysely",async create(t){let{model:s,data:f,select:a}=t,o=u(f,s),i=e.insertInto(n(s)).values(o);return y(await m(o,i,s),s,a)},async findOne(t){let{model:s,where:f,select:a}=t,{and:o,or:i}=g(s,f),l=e.selectFrom(n(s)).selectAll();o&&(l=l.where(c=>c.and(o.map(h=>h(c))))),i&&(l=l.where(c=>c.or(i.map(h=>h(c)))));let p=await l.executeTakeFirst();return p?y(p,s,a):null},async findMany(t){let{model:s,where:f,limit:a,offset:o,sortBy:i}=t,{and:l,or:p}=g(s,f),c=e.selectFrom(n(s)).selectAll();l&&(c=c.where(A=>A.and(l.map(T=>T(A))))),p&&(c=c.where(A=>A.or(p.map(T=>T(A))))),c=c.limit(a||100),o&&(c=c.offset(o)),i&&(c=c.orderBy(i.field,i.direction));let h=await c.selectAll().execute();return h?h.map(A=>y(A,s)):[]},async update(t){let{model:s,where:f,update:a}=t,{and:o,or:i}=g(s,f),l=u(a,s),p=e.updateTable(n(s)).set(l);return o&&(p=p.where(c=>c.and(o.map(h=>h(c))))),i&&(p=p.where(c=>c.or(i.map(h=>h(c))))),y(await m(l,p,s),s)},async updateMany(t){let{model:s,where:f,update:a}=t,{and:o,or:i}=g(s,f),l=u(a,s),p=e.updateTable(n(s)).set(l);return o&&(p=p.where(h=>h.and(o.map(A=>A(h))))),i&&(p=p.where(h=>h.or(i.map(A=>A(h))))),(await p.execute()).length},async delete(t){let{model:s,where:f}=t,{and:a,or:o}=g(s,f),i=e.deleteFrom(n(s));a&&(i=i.where(l=>l.and(a.map(p=>p(l))))),o&&(i=i.where(l=>l.or(o.map(p=>p(l))))),await i.execute()},async deleteMany(t){let{model:s,where:f}=t,{and:a,or:o}=g(s,f),i=e.deleteFrom(n(s));return a&&(i=i.where(l=>l.and(a.map(p=>p(l))))),o&&(i=i.where(l=>l.or(o.map(p=>p(l))))),(await i.execute()).length},options:r}};async function Ze(e){if(!e.database)throw new O("Database configuration is required");if(typeof e.database=="function")return e.database(e);let{kysely:r,databaseType:d}=await N(e);if(!r)throw new O("Failed to initialize database adapter");return _(r,{generateId:"generateId"in e.database?e.database.generateId:void 0,type:d||"sqlite"})(e)}function Ge(e,r){let d=r.id?{id:r.id}:{};for(let u in e){let m=e[u],y=r[u];y!==void 0&&(d[m.fieldName||u]=y)}return d}function Qe(e,r){if(!r)return null;let d={id:r.id};for(let[u,m]of Object.entries(e))d[u]=r[m.fieldName||u];return d}import{createConsola as X}from"consola";var w=X({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),Y=e=>({log:(...r)=>{!e?.disabled&&w.log("",...r)},error:(...r)=>{!e?.disabled&&w.error("",...r)},warn:(...r)=>{!e?.disabled&&w.warn("",...r)},info:(...r)=>{!e?.disabled&&w.info("",...r)},debug:(...r)=>{!e?.disabled&&w.debug("",...r)},box:(...r)=>{!e?.disabled&&w.box("",...r)},success:(...r)=>{!e?.disabled&&w.success("",...r)},break:(...r)=>{!e?.disabled&&console.log(`
|
|
1
|
+
var q=(e,r="ms")=>new Date(Date.now()+(r==="sec"?e*1e3:e));import{z as b}from"zod";var de=b.object({id:b.string(),providerId:b.string(),accountId:b.string(),userId:b.string(),accessToken:b.string().nullish(),refreshToken:b.string().nullish(),idToken:b.string().nullish(),expiresAt:b.date().nullish(),password:b.string().nullish()}),le=b.object({id:b.string(),email:b.string().transform(e=>e.toLowerCase()),emailVerified:b.boolean().default(!1),name:b.string(),image:b.string().nullish(),createdAt:b.date().default(new Date),updatedAt:b.date().default(new Date)}),ue=b.object({id:b.string(),userId:b.string(),expiresAt:b.date(),ipAddress:b.string().nullish(),userAgent:b.string().nullish()}),ce=b.object({id:b.string(),value:b.string(),expiresAt:b.date(),identifier:b.string()});function V(e,r){let d=r.fields,u={};for(let m in e){let y=d[m];if(!y){u[m]=e[m];continue}y.returned!==!1&&(u[m]=e[m])}return u}function M(e,r){let d={...r==="user"?e.user?.additionalFields:{},...r==="session"?e.session?.additionalFields:{}};for(let u of e.plugins||[])u.schema&&u.schema[r]&&(d={...d,...u.schema[r].fields});return d}function R(e,r){let d=M(e,"user");return V(r,{fields:d})}function I(e,r){let d=M(e,"session");return V(r,{fields:d})}import{nanoid as H}from"nanoid";var x=e=>H(e);function U(e,r){let d=r.hooks;async function u(y,g,n){let t=y;for(let a of d||[]){let o=a[g]?.create?.before;if(o){let i=await o(y);if(i===!1)return null;typeof i=="object"&&"data"in i&&(t=i.data)}}let s=n?await n.fn(t):null,f=!n||n.executeMainFn?await e.create({model:g,data:t}):s;for(let a of d||[]){let o=a[g]?.create?.after;o&&await o(f)}return f}async function m(y,g,n,t){let s=y;for(let o of d||[]){let i=o[n]?.update?.before;if(i){let l=await i(y);if(l===!1)return null;s=typeof l=="object"?l.data:l}}let f=t?await t.fn(s):null,a=!t||t.executeMainFn?await e.update({model:n,update:s,where:g}):f;for(let o of d||[]){let i=o[n]?.update?.after;i&&await i(a)}return a}return{createWithHooks:u,updateWithHooks:m}}var k=Object.create(null),F=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?k:globalThis),J=new Proxy(k,{get(e,r){return F()[r]??k[r]},has(e,r){let d=F();return r in d||r in k},set(e,r,d){let u=F(!0);return u[r]=d,!0},deleteProperty(e,r){if(!r)return!1;let d=F(!0);return delete d[r],!0},ownKeys(){let e=F(!0);return Object.keys(e)}});function z(e){return e?e!=="false":!1}var Z=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var K=Z==="test"||z(J.TEST);function j(e,r){if(r.advanced?.ipAddress?.disableIpTracking)return null;let d="127.0.0.1";if(K)return d;let m=r.advanced?.ipAddress?.ipAddressHeaders||["x-client-ip","x-forwarded-for","cf-connecting-ip","fastly-client-ip","x-real-ip","x-cluster-client-ip","x-forwarded","forwarded-for","forwarded"],y=e instanceof Request?e.headers:e;for(let g of m){let n=y.get(g);if(typeof n=="string"){let t=n.split(",")[0].trim();if(t)return t}}return null}function B(e){try{return JSON.parse(e)}catch{return null}}var Ie=(e,r)=>{let d=r.options,u=d.secondaryStorage,m=d.session?.expiresIn||60*60*24*7,{createWithHooks:y,updateWithHooks:g}=U(e,r);return{createOAuthUser:async(n,t)=>{try{let s=await y({id:x(),createdAt:new Date,updatedAt:new Date,...n},"user"),f=await y({id:x(),...t,userId:s.id||n.id},"account");return{user:s,account:f}}catch(s){return console.log(s),null}},createUser:async n=>await y({id:x(),createdAt:new Date,updatedAt:new Date,emailVerified:!1,...n},"user"),createAccount:async n=>await y({id:x(),createdAt:new Date,updatedAt:new Date,...n},"account"),listSessions:async n=>{if(u){let s=await u.get(`active-sessions-${n}`);if(!s)return[];let f=B(s)||[],a=Date.now(),o=f.filter(l=>l.expiresAt>a),i=[];for(let l of o){let p=await u.get(l.id);if(p){let c=JSON.parse(p),h=I(r.options,{...c.session,expiresAt:new Date(c.session.expiresAt)});i.push(h)}}return i}return await e.findMany({model:"session",where:[{field:"userId",value:n}]})},listUsers:async(n,t,s,f)=>await e.findMany({model:"user",limit:n,offset:t,sortBy:s,where:f}),deleteUser:async n=>{await e.deleteMany({model:"session",where:[{field:"userId",value:n}]}),await e.deleteMany({model:"account",where:[{field:"userId",value:n}]}),await e.delete({model:"user",where:[{field:"id",value:n}]})},createSession:async(n,t,s,f)=>{let a=t instanceof Request?t.headers:t,o={id:x(32),userId:n,expiresAt:s?q(60*60*24,"sec"):q(m,"sec"),ipAddress:t&&j(t,r.options)||"",userAgent:a?.get("user-agent")||"",...f};return await y(o,"session",u?{fn:async l=>{let p=await e.findOne({model:"user",where:[{field:"id",value:n}]});u.set(l.id,JSON.stringify({session:l,user:p}),m);let c=await u.get(`active-sessions-${n}`),h=[],A=Date.now();return c&&(h=B(c)||[],h=h.filter(T=>T.expiresAt>A)),h.push({id:l.id,expiresAt:A+m*1e3}),await u.set(`active-sessions-${n}`,JSON.stringify(h),m),l},executeMainFn:d.session?.storeSessionInDatabase}:void 0)},findSession:async n=>{if(u){let a=await u.get(n);if(a){let o=JSON.parse(a),i=I(r.options,{...o.session,expiresAt:new Date(o.session.expiresAt)}),l=R(r.options,{...o.user,createdAt:new Date(o.user.createdAt),updatedAt:new Date(o.user.updatedAt)});return{session:i,user:l}}}let t=await e.findOne({model:"session",where:[{value:n,field:"id"}]});if(!t)return null;let s=await e.findOne({model:"user",where:[{value:t.userId,field:"id"}]});if(!s)return null;let f=R(r.options,s);return{session:I(r.options,t),user:f}},findSessions:async n=>{if(u){let a=[];for(let o of n){let i=await u.get(o);if(i){let l=JSON.parse(i),p={session:{...l.session,expiresAt:new Date(l.session.expiresAt)},user:{...l.user,createdAt:new Date(l.user.createdAt),updatedAt:new Date(l.user.updatedAt)}};a.push(p)}}return a}let t=await e.findMany({model:"session",where:[{field:"id",value:n,operator:"in"}]}),s=t.map(a=>a.userId);if(!s.length)return[];let f=await e.findMany({model:"user",where:[{field:"id",value:s,operator:"in"}]});return t.map(a=>{let o=f.find(i=>i.id===a.userId);return o?{session:a,user:o}:null})},updateSession:async(n,t)=>await g(t,[{field:"id",value:n}],"session",u?{async fn(f){let a=await u.get(n),o=null;if(a){let i=JSON.parse(a);o={...i.session,...f},await u.set(n,JSON.stringify({session:o,user:i.user}),i.session.expiresAt?Math.floor((i.session.expiresAt.getTime()-Date.now())/1e3):m)}else return null},executeMainFn:d.session?.storeSessionInDatabase}:void 0),deleteSession:async n=>{if(u){await u.delete(n),d.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"id",value:n}]});return}await e.delete({model:"session",where:[{field:"id",value:n}]})},deleteSessions:async n=>{if(u){let t=await e.findMany({model:"session",where:[{field:"userId",value:n}]});for(let s of t)await u.delete(s.id);d.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"userId",value:n}]});return}await e.deleteMany({model:"session",where:[{field:"userId",value:n}]})},findUserByEmail:async(n,t)=>{let s=await e.findOne({model:"user",where:[{value:n.toLowerCase(),field:"email"}]});if(!s)return null;if(t?.includeAccounts){let f=await e.findMany({model:"account",where:[{value:s.id,field:"userId"}]});return{user:s,accounts:f}}return{user:s,accounts:[]}},findUserById:async n=>await e.findOne({model:"user",where:[{field:"id",value:n}]}),linkAccount:async n=>await y({id:x(),...n},"account"),updateUser:async(n,t)=>await g(t,[{field:"id",value:n}],"user"),updateUserByEmail:async(n,t)=>await g(t,[{field:"email",value:n}],"user"),updatePassword:async(n,t)=>await g({password:t},[{field:"userId",value:n},{field:"providerId",value:"credential"}],"account"),findAccounts:async n=>await e.findMany({model:"account",where:[{field:"userId",value:n}]}),findAccount:async n=>await e.findOne({model:"account",where:[{field:"accountId",value:n}]}),updateAccount:async(n,t)=>await g(t,[{field:"id",value:n}],"account"),createVerificationValue:async n=>await y({id:x(),...n},"verification"),findVerificationValue:async n=>{let t=await e.findMany({model:"verification",where:[{field:"identifier",value:n}],limit:100}),s=t.pop();return t.length>0&&await e.deleteMany({model:"verification",where:[{operator:"in",field:"id",value:t.map(f=>f.id)}]}),s},deleteVerificationValue:async n=>{await e.delete({model:"verification",where:[{field:"id",value:n}]})},updateVerificationValue:async(n,t)=>await g(t,[{field:"id",value:n}],"verification")}};var Se=(e,r)=>({type:e,...r});var S=e=>{let r=e.plugins?.reduce((t,s)=>{let f=s.schema;if(!f)return t;for(let[a,o]of Object.entries(f))t[a]={fields:{...t[a]?.fields,...o.fields},tableName:o.tableName||a};return t},{}),d=e.rateLimit?.storage==="database",u={rateLimit:{tableName:e.rateLimit?.tableName||"rateLimit",fields:{key:{type:"string",fieldName:e.rateLimit?.fields?.key||"key"},count:{type:"number",fieldName:e.rateLimit?.fields?.count||"count"},lastRequest:{type:"number",fieldName:e.rateLimit?.fields?.lastRequest||"lastRequest"}}}},{user:m,session:y,account:g,...n}=r||{};return{user:{tableName:e.user?.modelName||"user",fields:{name:{type:"string",required:!0,fieldName:e.user?.fields?.name||"name"},email:{type:"string",unique:!0,required:!0,fieldName:e.user?.fields?.email||"email"},emailVerified:{type:"boolean",defaultValue:()=>!1,required:!0,fieldName:e.user?.fields?.emailVerified||"emailVerified"},image:{type:"string",required:!1,fieldName:e.user?.fields?.image||"image"},createdAt:{type:"date",defaultValue:()=>new Date,required:!0,fieldName:e.user?.fields?.createdAt||"createdAt"},updatedAt:{type:"date",defaultValue:()=>new Date,required:!0,fieldName:e.user?.fields?.updatedAt||"updatedAt"},...m?.fields,...e.user?.additionalFields},order:1},session:{tableName:e.session?.modelName||"session",fields:{expiresAt:{type:"date",required:!0,fieldName:e.session?.fields?.expiresAt||"expiresAt"},ipAddress:{type:"string",required:!1,fieldName:e.session?.fields?.ipAddress||"ipAddress"},userAgent:{type:"string",required:!1,fieldName:e.session?.fields?.userAgent||"userAgent"},userId:{type:"string",fieldName:e.session?.fields?.userId||"userId",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0},...y?.fields,...e.session?.additionalFields},order:2},account:{tableName:e.account?.modelName||"account",fields:{accountId:{type:"string",required:!0,fieldName:e.account?.fields?.accountId||"accountId"},providerId:{type:"string",required:!0,fieldName:e.account?.fields?.providerId||"providerId"},userId:{type:"string",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0,fieldName:e.account?.fields?.userId||"userId"},accessToken:{type:"string",required:!1,fieldName:e.account?.fields?.accessToken||"accessToken"},refreshToken:{type:"string",required:!1,fieldName:e.account?.fields?.refreshToken||"refreshToken"},idToken:{type:"string",required:!1,fieldName:e.account?.fields?.idToken||"idToken"},expiresAt:{type:"date",required:!1,fieldName:e.account?.fields?.expiresAt||"expiresAt"},password:{type:"string",required:!1,fieldName:e.account?.fields?.password||"password"},...g?.fields},order:3},verification:{tableName:e.verification?.modelName||"verification",fields:{identifier:{type:"string",required:!0,fieldName:e.verification?.fields?.identifier||"identifier"},value:{type:"string",required:!0,fieldName:e.verification?.fields?.value||"value"},expiresAt:{type:"date",required:!0,fieldName:e.verification?.fields?.expiresAt||"expiresAt"}},order:4},...n,...d?u:{}}};import{z as v}from"zod";function Re(e){return v.object({...Object.keys(e).reduce((d,u)=>{let m=e[u];if(!m)return d;if(m.type==="string[]"||m.type==="number[]")return{...d,[u]:v.array(m.type==="string[]"?v.string():v.number())};let y=v[m.type]();return m?.required===!1&&(y=y.optional()),m?.returned===!1?d:{...d,[u]:y}},{})})}var O=class extends Error{constructor(r,d){super(r),this.name="BetterAuthError",this.message=r,this.cause=d,this.stack=""}};import{Kysely as P,MssqlDialect as G}from"kysely";import{MysqlDialect as C,PostgresDialect as E,SqliteDialect as L}from"kysely";function $(e){if("dialect"in e)return $(e.dialect);if("createDriver"in e){if(e instanceof L)return"sqlite";if(e instanceof C)return"mysql";if(e instanceof E)return"postgres";if(e instanceof G)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var N=async e=>{let r=e.database;if("db"in r)return{kysely:r.db,databaseType:r.type};if("dialect"in r)return{kysely:new P({dialect:r.dialect}),databaseType:r.type};let d,u=$(r);return"createDriver"in r&&(d=r),"aggregate"in r&&(d=new L({database:r})),"getConnection"in r&&(d=new C(r)),"connect"in r&&(d=new E({pool:r})),{kysely:d?new P({dialect:d}):null,databaseType:u}};var Q=(e,r,d)=>{let u=S(r);function m(t,s){if(s==="id")return s;let f=u[t].fields[s];return f||console.log("Field not found",t,s),f.fieldName||s}function y(t,s,f){let{type:a="sqlite"}=d||{},o=u[s].fields[f];return o.type==="boolean"&&a==="sqlite"?t?1:0:o.type==="date"&&t?t.toISOString():t}function g(t,s,f){let{type:a="sqlite"}=d||{},o=u[s].fields[f];return o.type==="boolean"&&a==="sqlite"&&t!==null?t===1:o.type==="date"&&t?new Date(t):t}let n=d?.generateId!==!1;return{transformInput(t,s){let f=t.id&&n?{id:d?.generateId?d.generateId():t.id}:{};for(let a in t){let o=u[s].fields[a];o&&(f[o.fieldName||a]=y(t[a],s,a))}return f},transformOutput(t,s,f=[]){if(!t)return null;let a=t.id?f.length===0||f.includes("id")?{id:t.id}:{}:{},o=u[s].fields;for(let i in o){if(f.length&&!f.includes(i))continue;let l=o[i];l&&(a[i]=g(t[l.fieldName||i],s,i))}return a},convertWhereClause(t,s){if(!s)return{and:null,or:null};let f={and:[],or:[]};return s.forEach(a=>{let{field:o,value:i,operator:l="=",connector:p="AND"}=a,c=m(t,o),h=A=>l.toLowerCase()==="in"?A(c,"in",Array.isArray(i)?i:[i]):l==="contains"?A(c,"like",`%${i}%`):l==="starts_with"?A(c,"like",`${i}%`):l==="ends_with"?A(c,"like",`%${i}`):l==="eq"?A(c,"=",i):l==="ne"?A(c,"<>",i):l==="gt"?A(c,">",i):l==="gte"?A(c,">=",i):l==="lt"?A(c,"<",i):l==="lte"?A(c,"<=",i):A(c,l,i);p==="OR"?f.or.push(h):f.and.push(h)}),{and:f.and.length?f.and:null,or:f.or.length?f.or:null}},async withReturning(t,s,f){let a;if(d?.type!=="mysql")a=await s.returningAll().executeTakeFirst();else{await s.execute();let o="id",i=t[o];a=await e.selectFrom(this.getModelName(f)).selectAll().where(o,"=",i).executeTakeFirst()}return a},getModelName(t){return u[t].tableName}}},_=(e,r)=>d=>{let{transformInput:u,withReturning:m,transformOutput:y,convertWhereClause:g,getModelName:n}=Q(e,d,r);return{id:"kysely",async create(t){let{model:s,data:f,select:a}=t,o=u(f,s),i=e.insertInto(n(s)).values(o);return y(await m(o,i,s),s,a)},async findOne(t){let{model:s,where:f,select:a}=t,{and:o,or:i}=g(s,f),l=e.selectFrom(n(s)).selectAll();o&&(l=l.where(c=>c.and(o.map(h=>h(c))))),i&&(l=l.where(c=>c.or(i.map(h=>h(c)))));let p=await l.executeTakeFirst();return p?y(p,s,a):null},async findMany(t){let{model:s,where:f,limit:a,offset:o,sortBy:i}=t,{and:l,or:p}=g(s,f),c=e.selectFrom(n(s)).selectAll();l&&(c=c.where(A=>A.and(l.map(T=>T(A))))),p&&(c=c.where(A=>A.or(p.map(T=>T(A))))),c=c.limit(a||100),o&&(c=c.offset(o)),i&&(c=c.orderBy(i.field,i.direction));let h=await c.selectAll().execute();return h?h.map(A=>y(A,s)):[]},async update(t){let{model:s,where:f,update:a}=t,{and:o,or:i}=g(s,f),l=u(a,s),p=e.updateTable(n(s)).set(l);return o&&(p=p.where(c=>c.and(o.map(h=>h(c))))),i&&(p=p.where(c=>c.or(i.map(h=>h(c))))),y(await m(l,p,s),s)},async updateMany(t){let{model:s,where:f,update:a}=t,{and:o,or:i}=g(s,f),l=u(a,s),p=e.updateTable(n(s)).set(l);return o&&(p=p.where(h=>h.and(o.map(A=>A(h))))),i&&(p=p.where(h=>h.or(i.map(A=>A(h))))),(await p.execute()).length},async delete(t){let{model:s,where:f}=t,{and:a,or:o}=g(s,f),i=e.deleteFrom(n(s));a&&(i=i.where(l=>l.and(a.map(p=>p(l))))),o&&(i=i.where(l=>l.or(o.map(p=>p(l))))),await i.execute()},async deleteMany(t){let{model:s,where:f}=t,{and:a,or:o}=g(s,f),i=e.deleteFrom(n(s));return a&&(i=i.where(l=>l.and(a.map(p=>p(l))))),o&&(i=i.where(l=>l.or(o.map(p=>p(l))))),(await i.execute()).length},options:r}};async function Ze(e){if(!e.database)throw new O("Database configuration is required");if(typeof e.database=="function")return e.database(e);let{kysely:r,databaseType:d}=await N(e);if(!r)throw new O("Failed to initialize database adapter");return _(r,{generateId:"generateId"in e.database?e.database.generateId:void 0,type:d||"sqlite"})(e)}function Ge(e,r){let d=r.id?{id:r.id}:{};for(let u in e){let m=e[u],y=r[u];y!==void 0&&(d[m.fieldName||u]=y)}return d}function Qe(e,r){if(!r)return null;let d={id:r.id};for(let[u,m]of Object.entries(e))d[u]=r[m.fieldName||u];return d}import{createConsola as X}from"consola";var w=X({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),Y=e=>({log:(...r)=>{!e?.disabled&&w.log("",...r)},error:(...r)=>{!e?.disabled&&w.error("",...r)},warn:(...r)=>{!e?.disabled&&w.warn("",...r)},info:(...r)=>{!e?.disabled&&w.info("",...r)},debug:(...r)=>{!e?.disabled&&w.debug("",...r)},box:(...r)=>{!e?.disabled&&w.box("",...r)},success:(...r)=>{!e?.disabled&&w.success("",...r)},break:(...r)=>{!e?.disabled&&console.log(`
|
|
2
2
|
`)}}),D=Y();function W(e){let r=S(e),d={};for(let u in r){let m=r[u],y=m.fields,g={};if(Object.entries(y).forEach(([n,t])=>{g[t.fieldName||n]=t}),d[m.tableName]){d[m.tableName].fields={...d[m.tableName].fields,...g};continue}d[m.tableName]={fields:g,order:m.order||1/0}}return d}var ee={string:["character varying","text"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamp","date"]},te={string:["varchar","text"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["datetime","date"]},re={string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"]},ne={string:["nvarchar","varchar"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","boolean"],date:["datetime","date"]},se={postgres:ee,mysql:te,sqlite:re,mssql:ne};function ie(e,r,d){return r==="string[]"||r==="number[]"?e.toLowerCase().includes("json"):se[d][r].map(g=>g.toLowerCase()).includes(e.toLowerCase())}async function at(e){let r=W(e),{kysely:d,databaseType:u}=await N(e);u||(D.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),u="sqlite"),d||(D.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1));let m=await d.introspection.getTables(),y=[],g=[];for(let[a,o]of Object.entries(r)){let i=m.find(p=>p.name===a);if(!i){let p=y.findIndex(A=>A.table===a),c={table:a,fields:o.fields,order:o.order||1/0},h=y.findIndex(A=>(A.order||1/0)>c.order);h===-1?p===-1?y.push(c):y[p].fields={...y[p].fields,...o.fields}:y.splice(h,0,c);continue}let l={};for(let[p,c]of Object.entries(o.fields)){let h=i.columns.find(A=>A.name===p);if(!h){l[p]=c;continue}ie(h.dataType,c.type,u)||D.warn(`Field ${p} in table ${a} has a different type in the database. Expected ${c.type} but got ${h.dataType}.`)}Object.keys(l).length>0&&g.push({table:a,fields:l,order:o.order||1/0})}let n=[];function t(a){let o={string:"text",boolean:"boolean",number:"integer",date:"date"};return u==="mysql"&&a==="string"?"varchar(255)":u==="sqlite"&&(a==="string[]"||a==="number[]")?"text":a==="string[]"||a==="number[]"?"jsonb":o[a]}if(g.length)for(let a of g)for(let[o,i]of Object.entries(a.fields)){let l=t(i.type),p=d.schema.alterTable(a.table).addColumn(o,l,c=>(c=i.required!==!1?c.notNull():c,i.references&&(c=c.references(`${i.references.model}.${i.references.field}`)),c));n.push(p)}if(y.length)for(let a of y){let o=d.schema.createTable(a.table).addColumn("id",t("string"),i=>i.primaryKey().notNull());for(let[i,l]of Object.entries(a.fields)){let p=t(l.type);o=o.addColumn(i,p,c=>(c=l.required!==!1?c.notNull():c,l.references&&(c=c.references(`${l.references.model}.${l.references.field}`)),l.unique&&(c=c.unique()),c))}n.push(o)}async function s(){for(let a of n)await a.execute()}async function f(){return n.map(o=>o.compile().sql).join(`;
|
|
3
3
|
|
|
4
4
|
`)}return{toBeCreated:y,toBeAdded:g,runMigrations:s,compileMigrations:f}}export{Qe as convertFromDB,Ge as convertToDB,Se as createFieldAttribute,Ie as createInternalAdapter,Ze as getAdapter,S as getAuthTables,at as getMigrations,W as getSchema,U as getWithHooks,ie as matchType,Re as toZodSchema};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { U as User, S as Session, H as HookEndpointContext, h as AuthContext, P as PluginSchema } from './auth-
|
|
1
|
+
import { U as User, S as Session, H as HookEndpointContext, h as AuthContext, P as PluginSchema } from './auth-RxDdMH7n.cjs';
|
|
2
2
|
import * as better_call from 'better-call';
|
|
3
3
|
import { z, ZodObject, ZodOptional, ZodArray, ZodLiteral } from 'zod';
|
|
4
4
|
import { P as Prettify } from './helper-DPDj8Nix.cjs';
|
|
@@ -5427,15 +5427,15 @@ declare const admin: (options?: AdminOptions) => {
|
|
|
5427
5427
|
*/
|
|
5428
5428
|
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
5429
5429
|
}, "strip", z.ZodTypeAny, {
|
|
5430
|
+
password: string;
|
|
5430
5431
|
email: string;
|
|
5431
5432
|
name: string;
|
|
5432
|
-
password: string;
|
|
5433
5433
|
role: string;
|
|
5434
5434
|
data?: Record<string, any> | undefined;
|
|
5435
5435
|
}, {
|
|
5436
|
+
password: string;
|
|
5436
5437
|
email: string;
|
|
5437
5438
|
name: string;
|
|
5438
|
-
password: string;
|
|
5439
5439
|
role: string;
|
|
5440
5440
|
data?: Record<string, any> | undefined;
|
|
5441
5441
|
}>;
|
|
@@ -5469,15 +5469,15 @@ declare const admin: (options?: AdminOptions) => {
|
|
|
5469
5469
|
*/
|
|
5470
5470
|
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
5471
5471
|
}, "strip", z.ZodTypeAny, {
|
|
5472
|
+
password: string;
|
|
5472
5473
|
email: string;
|
|
5473
5474
|
name: string;
|
|
5474
|
-
password: string;
|
|
5475
5475
|
role: string;
|
|
5476
5476
|
data?: Record<string, any> | undefined;
|
|
5477
5477
|
}, {
|
|
5478
|
+
password: string;
|
|
5478
5479
|
email: string;
|
|
5479
5480
|
name: string;
|
|
5480
|
-
password: string;
|
|
5481
5481
|
role: string;
|
|
5482
5482
|
data?: Record<string, any> | undefined;
|
|
5483
5483
|
}>;
|
|
@@ -6732,13 +6732,13 @@ declare const emailOTP: (options: EmailOTPOptions) => {
|
|
|
6732
6732
|
};
|
|
6733
6733
|
accounts: {
|
|
6734
6734
|
id: string;
|
|
6735
|
-
userId: string;
|
|
6736
6735
|
providerId: string;
|
|
6737
6736
|
accountId: string;
|
|
6738
|
-
|
|
6737
|
+
userId: string;
|
|
6739
6738
|
accessToken?: string | null | undefined;
|
|
6740
6739
|
refreshToken?: string | null | undefined;
|
|
6741
6740
|
idToken?: string | null | undefined;
|
|
6741
|
+
expiresAt?: Date | null | undefined;
|
|
6742
6742
|
password?: string | null | undefined;
|
|
6743
6743
|
}[];
|
|
6744
6744
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { U as User, S as Session, H as HookEndpointContext, h as AuthContext, P as PluginSchema } from './auth-
|
|
1
|
+
import { U as User, S as Session, H as HookEndpointContext, h as AuthContext, P as PluginSchema } from './auth-aIfiqYkD.js';
|
|
2
2
|
import * as better_call from 'better-call';
|
|
3
3
|
import { z, ZodObject, ZodOptional, ZodArray, ZodLiteral } from 'zod';
|
|
4
4
|
import { P as Prettify } from './helper-DPDj8Nix.js';
|
|
@@ -5427,15 +5427,15 @@ declare const admin: (options?: AdminOptions) => {
|
|
|
5427
5427
|
*/
|
|
5428
5428
|
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
5429
5429
|
}, "strip", z.ZodTypeAny, {
|
|
5430
|
+
password: string;
|
|
5430
5431
|
email: string;
|
|
5431
5432
|
name: string;
|
|
5432
|
-
password: string;
|
|
5433
5433
|
role: string;
|
|
5434
5434
|
data?: Record<string, any> | undefined;
|
|
5435
5435
|
}, {
|
|
5436
|
+
password: string;
|
|
5436
5437
|
email: string;
|
|
5437
5438
|
name: string;
|
|
5438
|
-
password: string;
|
|
5439
5439
|
role: string;
|
|
5440
5440
|
data?: Record<string, any> | undefined;
|
|
5441
5441
|
}>;
|
|
@@ -5469,15 +5469,15 @@ declare const admin: (options?: AdminOptions) => {
|
|
|
5469
5469
|
*/
|
|
5470
5470
|
data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
5471
5471
|
}, "strip", z.ZodTypeAny, {
|
|
5472
|
+
password: string;
|
|
5472
5473
|
email: string;
|
|
5473
5474
|
name: string;
|
|
5474
|
-
password: string;
|
|
5475
5475
|
role: string;
|
|
5476
5476
|
data?: Record<string, any> | undefined;
|
|
5477
5477
|
}, {
|
|
5478
|
+
password: string;
|
|
5478
5479
|
email: string;
|
|
5479
5480
|
name: string;
|
|
5480
|
-
password: string;
|
|
5481
5481
|
role: string;
|
|
5482
5482
|
data?: Record<string, any> | undefined;
|
|
5483
5483
|
}>;
|
|
@@ -6732,13 +6732,13 @@ declare const emailOTP: (options: EmailOTPOptions) => {
|
|
|
6732
6732
|
};
|
|
6733
6733
|
accounts: {
|
|
6734
6734
|
id: string;
|
|
6735
|
-
userId: string;
|
|
6736
6735
|
providerId: string;
|
|
6737
6736
|
accountId: string;
|
|
6738
|
-
|
|
6737
|
+
userId: string;
|
|
6739
6738
|
accessToken?: string | null | undefined;
|
|
6740
6739
|
refreshToken?: string | null | undefined;
|
|
6741
6740
|
idToken?: string | null | undefined;
|
|
6741
|
+
expiresAt?: Date | null | undefined;
|
|
6742
6742
|
password?: string | null | undefined;
|
|
6743
6743
|
}[];
|
|
6744
6744
|
};
|