better-auth 0.8.7-beta.3 → 0.8.7-beta.5
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/kysely.cjs +1 -1
- package/dist/adapters/kysely.js +1 -1
- package/dist/adapters/memory.cjs +1 -1
- package/dist/adapters/memory.js +1 -1
- package/dist/adapters/prisma.cjs +1 -1
- package/dist/adapters/prisma.js +1 -1
- package/dist/client/plugins.d.cts +2 -2
- package/dist/client/plugins.d.ts +2 -2
- package/dist/db.cjs +1 -1
- package/dist/db.js +1 -1
- package/dist/{index-CTux48iX.d.ts → index-DtM1rOVY.d.ts} +10 -6
- package/dist/{index-Cef7etY4.d.cts → index-YXx6CnTz.d.cts} +10 -6
- package/dist/plugins.cjs +4 -4
- package/dist/plugins.d.cts +1 -1
- package/dist/plugins.d.ts +1 -1
- package/dist/plugins.js +4 -4
- package/package.json +1 -1
package/dist/adapters/kysely.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var k=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var M=(e,i)=>{for(var u in i)k(e,u,{get:i[u],enumerable:!0})},U=(e,i,u,m)=>{if(i&&typeof i=="object"||typeof i=="function")for(let y of L(i))!P.call(e,y)&&y!==u&&k(e,y,{get:()=>i[y],enumerable:!(m=V(i,y))||m.enumerable});return e};var j=e=>U(k({},"__esModule",{value:!0}),e);var Z={};M(Z,{createKyselyAdapter:()=>I,kyselyAdapter:()=>D});module.exports=j(Z);var
|
|
1
|
+
"use strict";var k=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var M=(e,i)=>{for(var u in i)k(e,u,{get:i[u],enumerable:!0})},U=(e,i,u,m)=>{if(i&&typeof i=="object"||typeof i=="function")for(let y of L(i))!P.call(e,y)&&y!==u&&k(e,y,{get:()=>i[y],enumerable:!(m=V(i,y))||m.enumerable});return e};var j=e=>U(k({},"__esModule",{value:!0}),e);var Z={};M(Z,{createKyselyAdapter:()=>I,kyselyAdapter:()=>D});module.exports=j(Z);var T=require("kysely"),x=require("kysely");function S(e){if("dialect"in e)return S(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 T.MssqlDialect)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var I=async e=>{let i=e.database;if("db"in i)return{kysely:i.db,databaseType:i.type};if("dialect"in i)return{kysely:new T.Kysely({dialect:i.dialect}),databaseType:i.type};let u,m=S(i);return"createDriver"in i&&(u=i),"aggregate"in i&&(u=new x.SqliteDialect({database:i})),"getConnection"in i&&(u=new x.MysqlDialect(i)),"connect"in i&&(u=new x.PostgresDialect({pool:i})),{kysely:u?new T.Kysely({dialect:u}):null,databaseType:m}};var c=require("zod"),Y=c.z.object({id:c.z.string(),providerId:c.z.string(),accountId:c.z.string(),userId:c.z.string(),accessToken:c.z.string().nullish(),refreshToken:c.z.string().nullish(),idToken:c.z.string().nullish(),expiresAt:c.z.date().nullish(),password:c.z.string().nullish()}),ee=c.z.object({id:c.z.string(),email:c.z.string().transform(e=>e.toLowerCase()),emailVerified:c.z.boolean().default(!1),name:c.z.string(),image:c.z.string().nullish(),createdAt:c.z.date().default(new Date),updatedAt:c.z.date().default(new Date)}),te=c.z.object({id:c.z.string(),userId:c.z.string(),expiresAt:c.z.date(),ipAddress:c.z.string().nullish(),userAgent:c.z.string().nullish()}),re=c.z.object({id:c.z.string(),value:c.z.string(),createdAt:c.z.date(),expiresAt:c.z.date(),identifier:c.z.string()});var K=require("nanoid");var F=Object.create(null),v=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?F:globalThis),E=new Proxy(F,{get(e,i){return v()[i]??F[i]},has(e,i){let u=v();return i in u||i in F},set(e,i,u){let m=v(!0);return m[i]=u,!0},deleteProperty(e,i){if(!i)return!1;let u=v(!0);return delete u[i],!0},ownKeys(){let e=v(!0);return Object.keys(e)}});function C(e){return e?e!=="false":!1}var H=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var W=H==="test"||C(E.TEST);var N=e=>{let i=e.plugins?.reduce((w,n)=>{let t=n.schema;if(!t)return w;for(let[s,d]of Object.entries(t))w[s]={fields:{...w[s]?.fields,...d.fields},modelName:d.modelName||s};return w},{}),u=e.rateLimit?.storage==="database",m={rateLimit:{modelName:e.rateLimit?.modelName||"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:y,session:A,account:h,...b}=i||{};return{user:{modelName: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"},...y?.fields,...e.user?.additionalFields},order:1},session:{modelName: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},...A?.fields,...e.session?.additionalFields},order:2},account:{modelName: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"},...h?.fields},order:3},verification:{modelName: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"},createdAt:{type:"date",required:!1,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"}},order:4},...b,...u?m:{}}};var $=require("zod");var R=require("consola"),q=["info","success","warn","error","debug"];function _(e,i){return q.indexOf(i)<=q.indexOf(e)}var J=(0,R.createConsola)({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),B=e=>{let i=e?.disabled!==!0,u=e?.level??"error",m=(y,A,h=[])=>{if(!(!i||!_(u,y))){if(!e||typeof e.log!="function"){J[y]("",A,...h);return}e.log(y==="success"?"info":y,A,h)}};return Object.fromEntries(q.map(y=>[y,(...[A,...h])=>m(y,A,h)]))},Le=B();var z=(e,i,u)=>{let m=N(i);function y(n,t){if(t==="id")return t;let s=m[n].fields[t];return s||console.log("Field not found",n,t),s.fieldName||t}function A(n,t,s){let{type:d="sqlite"}=u||{},o=m[t].fields[s];return o.type==="boolean"&&d==="sqlite"?n?1:0:o.type==="date"&&n&&n instanceof Date&&d==="sqlite"?n.toISOString():n}function h(n,t,s){let{type:d="sqlite"}=u||{},o=m[t].fields[s];return o.type==="boolean"&&d==="sqlite"&&n!==null?n===1:o.type==="date"&&n?new Date(n):n}function b(n){return m[n].modelName}let w=u?.generateId!==!1;return{transformInput(n,t){let s=n.id&&w?{id:u?.generateId?u.generateId():n.id}:{};for(let d in n){let o=m[t].fields[d];o&&(s[o.fieldName||d]=A(n[d],t,d))}return s},transformOutput(n,t,s=[]){if(!n)return null;let d=n.id?s.length===0||s.includes("id")?{id:n.id}:{}:{},o=m[t].fields;for(let r in o){if(s.length&&!s.includes(r))continue;let a=o[r];a&&(d[r]=h(n[a.fieldName||r],t,r))}return d},convertWhereClause(n,t){if(!t)return{and:null,or:null};let s={and:[],or:[]};return t.forEach(d=>{let{field:o,value:r,operator:a="=",connector:f="AND"}=d,l=y(n,o),g=p=>a.toLowerCase()==="in"?p(l,"in",Array.isArray(r)?r:[r]):a==="contains"?p(l,"like",`%${r}%`):a==="starts_with"?p(l,"like",`${r}%`):a==="ends_with"?p(l,"like",`%${r}`):a==="eq"?p(l,"=",r):a==="ne"?p(l,"<>",r):a==="gt"?p(l,">",r):a==="gte"?p(l,">=",r):a==="lt"?p(l,"<",r):a==="lte"?p(l,"<=",r):p(l,a,r);f==="OR"?s.or.push(g):s.and.push(g)}),{and:s.and.length?s.and:null,or:s.or.length?s.or:null}},async withReturning(n,t,s,d){let o;if(u?.type!=="mysql")o=await t.returningAll().executeTakeFirst();else{await t.execute();let r=n.id?"id":d[0].field?d[0].field:"id",a=n[r]||d[0].value;o=await e.selectFrom(b(s)).selectAll().where(y(s,r),"=",a).executeTakeFirst()}return o},getModelName:b,getField:y}},D=(e,i)=>u=>{let{transformInput:m,withReturning:y,transformOutput:A,convertWhereClause:h,getModelName:b,getField:w}=z(e,u,i);return{id:"kysely",async create(n){let{model:t,data:s,select:d}=n,o=m(s,t),r=e.insertInto(b(t)).values(o);return A(await y(o,r,t,[]),t,d)},async findOne(n){let{model:t,where:s,select:d}=n,{and:o,or:r}=h(t,s),a=e.selectFrom(b(t)).selectAll();o&&(a=a.where(l=>l.and(o.map(g=>g(l))))),r&&(a=a.where(l=>l.or(r.map(g=>g(l)))));let f=await a.executeTakeFirst();return f?A(f,t,d):null},async findMany(n){let{model:t,where:s,limit:d,offset:o,sortBy:r}=n,{and:a,or:f}=h(t,s),l=e.selectFrom(b(t));a&&(l=l.where(p=>p.and(a.map(O=>O(p))))),f&&(l=l.where(p=>p.or(f.map(O=>O(p))))),l=l.limit(d||100),o&&(l=l.offset(o)),r&&(l=l.orderBy(w(t,r.field),r.direction));let g=await l.selectAll().execute();return g?g.map(p=>A(p,t)):[]},async update(n){let{model:t,where:s,update:d}=n,{and:o,or:r}=h(t,s),a=m(d,t),f=e.updateTable(b(t)).set(a);return o&&(f=f.where(l=>l.and(o.map(g=>g(l))))),r&&(f=f.where(l=>l.or(r.map(g=>g(l))))),A(await y(a,f,t,s),t)},async updateMany(n){let{model:t,where:s,update:d}=n,{and:o,or:r}=h(t,s),a=m(d,t),f=e.updateTable(b(t)).set(a);return o&&(f=f.where(g=>g.and(o.map(p=>p(g))))),r&&(f=f.where(g=>g.or(r.map(p=>p(g))))),(await f.execute()).length},async delete(n){let{model:t,where:s}=n,{and:d,or:o}=h(t,s),r=e.deleteFrom(b(t));d&&(r=r.where(a=>a.and(d.map(f=>f(a))))),o&&(r=r.where(a=>a.or(o.map(f=>f(a))))),await r.execute()},async deleteMany(n){let{model:t,where:s}=n,{and:d,or:o}=h(t,s),r=e.deleteFrom(b(t));return d&&(r=r.where(a=>a.and(d.map(f=>f(a))))),o&&(r=r.where(a=>a.or(o.map(f=>f(a))))),(await r.execute()).length},options:i}};0&&(module.exports={createKyselyAdapter,kyselyAdapter});
|
package/dist/adapters/kysely.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Kysely as k,MssqlDialect as B}from"kysely";import{MysqlDialect as I,PostgresDialect as N,SqliteDialect as q}from"kysely";function S(e){if("dialect"in e)return S(e.dialect);if("createDriver"in e){if(e instanceof q)return"sqlite";if(e instanceof I)return"mysql";if(e instanceof N)return"postgres";if(e instanceof B)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var D=async e=>{let o=e.database;if("db"in o)return{kysely:o.db,databaseType:o.type};if("dialect"in o)return{kysely:new k({dialect:o.dialect}),databaseType:o.type};let f,m=S(o);return"createDriver"in o&&(f=o),"aggregate"in o&&(f=new q({database:o})),"getConnection"in o&&(f=new I(o)),"connect"in o&&(f=new N({pool:o})),{kysely:f?new k({dialect:f}):null,databaseType:m}};import{z as u}from"zod";var z=u.object({id:u.string(),providerId:u.string(),accountId:u.string(),userId:u.string(),accessToken:u.string().nullish(),refreshToken:u.string().nullish(),idToken:u.string().nullish(),expiresAt:u.date().nullish(),password:u.string().nullish()}),Z=u.object({id:u.string(),email:u.string().transform(e=>e.toLowerCase()),emailVerified:u.boolean().default(!1),name:u.string(),image:u.string().nullish(),createdAt:u.date().default(new Date),updatedAt:u.date().default(new Date)}),G=u.object({id:u.string(),userId:u.string(),expiresAt:u.date(),ipAddress:u.string().nullish(),userAgent:u.string().nullish()}),Q=u.object({id:u.string(),value:u.string(),createdAt:u.date(),expiresAt:u.date(),identifier:u.string()});import{nanoid as ee}from"nanoid";var
|
|
1
|
+
import{Kysely as k,MssqlDialect as B}from"kysely";import{MysqlDialect as I,PostgresDialect as N,SqliteDialect as q}from"kysely";function S(e){if("dialect"in e)return S(e.dialect);if("createDriver"in e){if(e instanceof q)return"sqlite";if(e instanceof I)return"mysql";if(e instanceof N)return"postgres";if(e instanceof B)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var D=async e=>{let o=e.database;if("db"in o)return{kysely:o.db,databaseType:o.type};if("dialect"in o)return{kysely:new k({dialect:o.dialect}),databaseType:o.type};let f,m=S(o);return"createDriver"in o&&(f=o),"aggregate"in o&&(f=new q({database:o})),"getConnection"in o&&(f=new I(o)),"connect"in o&&(f=new N({pool:o})),{kysely:f?new k({dialect:f}):null,databaseType:m}};import{z as u}from"zod";var z=u.object({id:u.string(),providerId:u.string(),accountId:u.string(),userId:u.string(),accessToken:u.string().nullish(),refreshToken:u.string().nullish(),idToken:u.string().nullish(),expiresAt:u.date().nullish(),password:u.string().nullish()}),Z=u.object({id:u.string(),email:u.string().transform(e=>e.toLowerCase()),emailVerified:u.boolean().default(!1),name:u.string(),image:u.string().nullish(),createdAt:u.date().default(new Date),updatedAt:u.date().default(new Date)}),G=u.object({id:u.string(),userId:u.string(),expiresAt:u.date(),ipAddress:u.string().nullish(),userAgent:u.string().nullish()}),Q=u.object({id:u.string(),value:u.string(),createdAt:u.date(),expiresAt:u.date(),identifier:u.string()});import{nanoid as ee}from"nanoid";var T=Object.create(null),w=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?T:globalThis),V=new Proxy(T,{get(e,o){return w()[o]??T[o]},has(e,o){let f=w();return o in f||o in T},set(e,o,f){let m=w(!0);return m[o]=f,!0},deleteProperty(e,o){if(!o)return!1;let f=w(!0);return delete f[o],!0},ownKeys(){let e=w(!0);return Object.keys(e)}});function L(e){return e?e!=="false":!1}var P=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var M=P==="test"||L(V.TEST);var F=e=>{let o=e.plugins?.reduce((x,n)=>{let t=n.schema;if(!t)return x;for(let[i,d]of Object.entries(t))x[i]={fields:{...x[i]?.fields,...d.fields},modelName:d.modelName||i};return x},{}),f=e.rateLimit?.storage==="database",m={rateLimit:{modelName:e.rateLimit?.modelName||"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:g,session:A,account:h,...b}=o||{};return{user:{modelName: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"},...g?.fields,...e.user?.additionalFields},order:1},session:{modelName: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},...A?.fields,...e.session?.additionalFields},order:2},account:{modelName: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"},...h?.fields},order:3},verification:{modelName: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"},createdAt:{type:"date",required:!1,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"}},order:4},...b,...f?m:{}}};import{z as Fe}from"zod";import{createConsola as j}from"consola";var O=["info","success","warn","error","debug"];function K(e,o){return O.indexOf(o)<=O.indexOf(e)}var E=j({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),R=e=>{let o=e?.disabled!==!0,f=e?.level??"error",m=(g,A,h=[])=>{if(!(!o||!K(f,g))){if(!e||typeof e.log!="function"){E[g]("",A,...h);return}e.log(g==="success"?"info":g,A,h)}};return Object.fromEntries(O.map(g=>[g,(...[A,...h])=>m(g,A,h)]))},Le=R();var C=(e,o,f)=>{let m=F(o);function g(n,t){if(t==="id")return t;let i=m[n].fields[t];return i||console.log("Field not found",n,t),i.fieldName||t}function A(n,t,i){let{type:d="sqlite"}=f||{},a=m[t].fields[i];return a.type==="boolean"&&d==="sqlite"?n?1:0:a.type==="date"&&n&&n instanceof Date&&d==="sqlite"?n.toISOString():n}function h(n,t,i){let{type:d="sqlite"}=f||{},a=m[t].fields[i];return a.type==="boolean"&&d==="sqlite"&&n!==null?n===1:a.type==="date"&&n?new Date(n):n}function b(n){return m[n].modelName}let x=f?.generateId!==!1;return{transformInput(n,t){let i=n.id&&x?{id:f?.generateId?f.generateId():n.id}:{};for(let d in n){let a=m[t].fields[d];a&&(i[a.fieldName||d]=A(n[d],t,d))}return i},transformOutput(n,t,i=[]){if(!n)return null;let d=n.id?i.length===0||i.includes("id")?{id:n.id}:{}:{},a=m[t].fields;for(let r in a){if(i.length&&!i.includes(r))continue;let s=a[r];s&&(d[r]=h(n[s.fieldName||r],t,r))}return d},convertWhereClause(n,t){if(!t)return{and:null,or:null};let i={and:[],or:[]};return t.forEach(d=>{let{field:a,value:r,operator:s="=",connector:c="AND"}=d,l=g(n,a),y=p=>s.toLowerCase()==="in"?p(l,"in",Array.isArray(r)?r:[r]):s==="contains"?p(l,"like",`%${r}%`):s==="starts_with"?p(l,"like",`${r}%`):s==="ends_with"?p(l,"like",`%${r}`):s==="eq"?p(l,"=",r):s==="ne"?p(l,"<>",r):s==="gt"?p(l,">",r):s==="gte"?p(l,">=",r):s==="lt"?p(l,"<",r):s==="lte"?p(l,"<=",r):p(l,s,r);c==="OR"?i.or.push(y):i.and.push(y)}),{and:i.and.length?i.and:null,or:i.or.length?i.or:null}},async withReturning(n,t,i,d){let a;if(f?.type!=="mysql")a=await t.returningAll().executeTakeFirst();else{await t.execute();let r=n.id?"id":d[0].field?d[0].field:"id",s=n[r]||d[0].value;a=await e.selectFrom(b(i)).selectAll().where(g(i,r),"=",s).executeTakeFirst()}return a},getModelName:b,getField:g}},U=(e,o)=>f=>{let{transformInput:m,withReturning:g,transformOutput:A,convertWhereClause:h,getModelName:b,getField:x}=C(e,f,o);return{id:"kysely",async create(n){let{model:t,data:i,select:d}=n,a=m(i,t),r=e.insertInto(b(t)).values(a);return A(await g(a,r,t,[]),t,d)},async findOne(n){let{model:t,where:i,select:d}=n,{and:a,or:r}=h(t,i),s=e.selectFrom(b(t)).selectAll();a&&(s=s.where(l=>l.and(a.map(y=>y(l))))),r&&(s=s.where(l=>l.or(r.map(y=>y(l)))));let c=await s.executeTakeFirst();return c?A(c,t,d):null},async findMany(n){let{model:t,where:i,limit:d,offset:a,sortBy:r}=n,{and:s,or:c}=h(t,i),l=e.selectFrom(b(t));s&&(l=l.where(p=>p.and(s.map(v=>v(p))))),c&&(l=l.where(p=>p.or(c.map(v=>v(p))))),l=l.limit(d||100),a&&(l=l.offset(a)),r&&(l=l.orderBy(x(t,r.field),r.direction));let y=await l.selectAll().execute();return y?y.map(p=>A(p,t)):[]},async update(n){let{model:t,where:i,update:d}=n,{and:a,or:r}=h(t,i),s=m(d,t),c=e.updateTable(b(t)).set(s);return a&&(c=c.where(l=>l.and(a.map(y=>y(l))))),r&&(c=c.where(l=>l.or(r.map(y=>y(l))))),A(await g(s,c,t,i),t)},async updateMany(n){let{model:t,where:i,update:d}=n,{and:a,or:r}=h(t,i),s=m(d,t),c=e.updateTable(b(t)).set(s);return a&&(c=c.where(y=>y.and(a.map(p=>p(y))))),r&&(c=c.where(y=>y.or(r.map(p=>p(y))))),(await c.execute()).length},async delete(n){let{model:t,where:i}=n,{and:d,or:a}=h(t,i),r=e.deleteFrom(b(t));d&&(r=r.where(s=>s.and(d.map(c=>c(s))))),a&&(r=r.where(s=>s.or(a.map(c=>c(s))))),await r.execute()},async deleteMany(n){let{model:t,where:i}=n,{and:d,or:a}=h(t,i),r=e.deleteFrom(b(t));return d&&(r=r.where(s=>s.and(d.map(c=>c(s))))),a&&(r=r.where(s=>s.or(a.map(c=>c(s))))),(await r.execute()).length},options:o}};export{D as createKyselyAdapter,U as kyselyAdapter};
|
package/dist/adapters/memory.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var A=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var N=(e,n)=>{for(var l in n)A(e,l,{get:n[l],enumerable:!0})},q=(e,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of k(n))!I.call(e,r)&&r!==l&&A(e,r,{get:()=>n[r],enumerable:!(o=O(n,r))||o.enumerable});return e};var D=e=>q(A({},"__esModule",{value:!0}),e);var C={};N(C,{memoryAdapter:()=>K});module.exports=D(C);var
|
|
1
|
+
"use strict";var A=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var N=(e,n)=>{for(var l in n)A(e,l,{get:n[l],enumerable:!0})},q=(e,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of k(n))!I.call(e,r)&&r!==l&&A(e,r,{get:()=>n[r],enumerable:!(o=O(n,r))||o.enumerable});return e};var D=e=>q(A({},"__esModule",{value:!0}),e);var C={};N(C,{memoryAdapter:()=>K});module.exports=D(C);var s=require("zod"),H=s.z.object({id:s.z.string(),providerId:s.z.string(),accountId:s.z.string(),userId:s.z.string(),accessToken:s.z.string().nullish(),refreshToken:s.z.string().nullish(),idToken:s.z.string().nullish(),expiresAt:s.z.date().nullish(),password:s.z.string().nullish()}),$=s.z.object({id:s.z.string(),email:s.z.string().transform(e=>e.toLowerCase()),emailVerified:s.z.boolean().default(!1),name:s.z.string(),image:s.z.string().nullish(),createdAt:s.z.date().default(new Date),updatedAt:s.z.date().default(new Date)}),J=s.z.object({id:s.z.string(),userId:s.z.string(),expiresAt:s.z.date(),ipAddress:s.z.string().nullish(),userAgent:s.z.string().nullish()}),z=s.z.object({id:s.z.string(),value:s.z.string(),createdAt:s.z.date(),expiresAt:s.z.date(),identifier:s.z.string()});var S=require("nanoid");var g=Object.create(null),y=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?g:globalThis),R=new Proxy(g,{get(e,n){return y()[n]??g[n]},has(e,n){let l=y();return n in l||n in g},set(e,n,l){let o=y(!0);return o[n]=l,!0},deleteProperty(e,n){if(!n)return!1;let l=y(!0);return delete l[n],!0},ownKeys(){let e=y(!0);return Object.keys(e)}});function B(e){return e?e!=="false":!1}var V=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var M=V==="test"||B(R.TEST);var h=e=>{let n=e.plugins?.reduce((i,u)=>{let c=u.schema;if(!c)return i;for(let[a,p]of Object.entries(c))i[a]={fields:{...i[a]?.fields,...p.fields},modelName:p.modelName||a};return i},{}),l=e.rateLimit?.storage==="database",o={rateLimit:{modelName:e.rateLimit?.modelName||"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:r,session:f,account:t,...d}=n||{};return{user:{modelName: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"},...r?.fields,...e.user?.additionalFields},order:1},session:{modelName: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},...f?.fields,...e.session?.additionalFields},order:2},account:{modelName: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"},...t?.fields},order:3},verification:{modelName: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"},createdAt:{type:"date",required:!1,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"}},order:4},...d,...l?o:{}}};var L=require("zod");var v=require("kysely"),b=require("kysely");var T=require("consola"),x=["info","success","warn","error","debug"];function U(e,n){return x.indexOf(n)<=x.indexOf(e)}var j=(0,T.createConsola)({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),F=e=>{let n=e?.disabled!==!0,l=e?.level??"error",o=(r,f,t=[])=>{if(!(!n||!U(l,r))){if(!e||typeof e.log!="function"){j[r]("",f,...t);return}e.log(r==="success"?"info":r,f,t)}};return Object.fromEntries(x.map(r=>[r,(...[f,...t])=>o(r,f,t)]))},Me=F();var E=e=>{let n=h(e);function l(o,r){return r==="id"?r:n[o].fields[r].fieldName||r}return{transformInput(o,r){let f=o.id?{id:o.id}:{};for(let t in o){let d=n[r].fields[t];d&&(f[d.fieldName||t]=o[t])}return f},transformOutput(o,r,f=[]){if(!o)return null;let t=o.id||o._id?f.length===0||f.includes("id")?{id:o.id}:{}:{},d=n[r].fields;for(let i in d){if(f.length&&!f.includes(i))continue;let u=d[i];u&&(t[i]=o[u.fieldName||i])}return t},convertWhereClause(o,r,f){return r.filter(t=>o.every(d=>{let{field:i,value:u,operator:c}=d,a=l(f,i);if(c==="in"){if(!Array.isArray(u))throw new Error("Value must be an array");return u.includes(t[a])}else return c==="contains"?t[a].includes(u):c==="starts_with"?t[a].startsWith(u):c==="ends_with"?t[a].endsWith(u):t[a]===u}))},getField:l}},K=e=>n=>{let{transformInput:l,transformOutput:o,convertWhereClause:r,getField:f}=E(n);return{id:"memory",create:async({model:t,data:d})=>{let i=l(d,t);return e[t].push(i),o(i,t)},findOne:async({model:t,where:d,select:i})=>{let u=e[t],a=r(d,u,t)[0]||null;return o(a,t,i)},findMany:async({model:t,where:d,sortBy:i,limit:u,offset:c})=>{let a=e[t];return d&&(a=r(d,a,t)),i&&(a=a.sort((p,w)=>{let m=f(t,i.field);return i.direction==="asc"?p[m]>w[m]?1:-1:p[m]<w[m]?1:-1})),c!==void 0&&(a=a.slice(c)),u!==void 0&&(a=a.slice(0,u)),a.map(p=>o(p,t))},update:async({model:t,where:d,update:i})=>{let u=e[t],c=r(d,u,t);return c.forEach(a=>{Object.assign(a,l(i,t))}),o(c[0],t)},delete:async({model:t,where:d})=>{let i=e[t],u=r(d,i,t);e[t]=i.filter(c=>!u.includes(c))},deleteMany:async({model:t,where:d})=>{let i=e[t],u=r(d,i,t),c=0;return e[t]=i.filter(a=>u.includes(a)?(c++,!1):!u.includes(a)),c},updateMany(t){let{model:d,where:i,update:u}=t,c=e[d],a=r(i,c,d);return a.forEach(p=>{Object.assign(p,u)}),a[0]||null}}};0&&(module.exports={memoryAdapter});
|
package/dist/adapters/memory.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as n}from"zod";var R=n.object({id:n.string(),providerId:n.string(),accountId:n.string(),userId:n.string(),accessToken:n.string().nullish(),refreshToken:n.string().nullish(),idToken:n.string().nullish(),expiresAt:n.date().nullish(),password:n.string().nullish()}),B=n.object({id:n.string(),email:n.string().transform(e=>e.toLowerCase()),emailVerified:n.boolean().default(!1),name:n.string(),image:n.string().nullish(),createdAt:n.date().default(new Date),updatedAt:n.date().default(new Date)}),V=n.object({id:n.string(),userId:n.string(),expiresAt:n.date(),ipAddress:n.string().nullish(),userAgent:n.string().nullish()}),M=n.object({id:n.string(),value:n.string(),createdAt:n.date(),expiresAt:n.date(),identifier:n.string()});import{nanoid as U}from"nanoid";var g=Object.create(null),y=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?g:globalThis),w=new Proxy(g,{get(e,u){return y()[u]??g[u]},has(e,u){let f=y();return u in f||u in g},set(e,u,f){let a=y(!0);return a[u]=f,!0},deleteProperty(e,u){if(!u)return!1;let f=y(!0);return delete f[u],!0},ownKeys(){let e=y(!0);return Object.keys(e)}});function v(e){return e?e!=="false":!1}var T=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var F=T==="test"||v(w.TEST);var h=e=>{let u=e.plugins?.reduce((r,d)=>{let l=d.schema;if(!l)return r;for(let[
|
|
1
|
+
import{z as n}from"zod";var R=n.object({id:n.string(),providerId:n.string(),accountId:n.string(),userId:n.string(),accessToken:n.string().nullish(),refreshToken:n.string().nullish(),idToken:n.string().nullish(),expiresAt:n.date().nullish(),password:n.string().nullish()}),B=n.object({id:n.string(),email:n.string().transform(e=>e.toLowerCase()),emailVerified:n.boolean().default(!1),name:n.string(),image:n.string().nullish(),createdAt:n.date().default(new Date),updatedAt:n.date().default(new Date)}),V=n.object({id:n.string(),userId:n.string(),expiresAt:n.date(),ipAddress:n.string().nullish(),userAgent:n.string().nullish()}),M=n.object({id:n.string(),value:n.string(),createdAt:n.date(),expiresAt:n.date(),identifier:n.string()});import{nanoid as U}from"nanoid";var g=Object.create(null),y=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?g:globalThis),w=new Proxy(g,{get(e,u){return y()[u]??g[u]},has(e,u){let f=y();return u in f||u in g},set(e,u,f){let a=y(!0);return a[u]=f,!0},deleteProperty(e,u){if(!u)return!1;let f=y(!0);return delete f[u],!0},ownKeys(){let e=y(!0);return Object.keys(e)}});function v(e){return e?e!=="false":!1}var T=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var F=T==="test"||v(w.TEST);var h=e=>{let u=e.plugins?.reduce((r,d)=>{let l=d.schema;if(!l)return r;for(let[s,p]of Object.entries(l))r[s]={fields:{...r[s]?.fields,...p.fields},modelName:p.modelName||s};return r},{}),f=e.rateLimit?.storage==="database",a={rateLimit:{modelName:e.rateLimit?.modelName||"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:i,session:c,account:t,...o}=u||{};return{user:{modelName: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"},...i?.fields,...e.user?.additionalFields},order:1},session:{modelName: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},...c?.fields,...e.session?.additionalFields},order:2},account:{modelName: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"},...t?.fields},order:3},verification:{modelName: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"},createdAt:{type:"date",required:!1,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"}},order:4},...o,...f?a:{}}};import{z as de}from"zod";import{Kysely as fe,MssqlDialect as pe}from"kysely";import{MysqlDialect as me,PostgresDialect as ge,SqliteDialect as he}from"kysely";import{createConsola as k}from"consola";var A=["info","success","warn","error","debug"];function I(e,u){return A.indexOf(u)<=A.indexOf(e)}var N=k({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),x=e=>{let u=e?.disabled!==!0,f=e?.level??"error",a=(i,c,t=[])=>{if(!(!u||!I(f,i))){if(!e||typeof e.log!="function"){N[i]("",c,...t);return}e.log(i==="success"?"info":i,c,t)}};return Object.fromEntries(A.map(i=>[i,(...[c,...t])=>a(i,c,t)]))},Ve=x();var q=e=>{let u=h(e);function f(a,i){return i==="id"?i:u[a].fields[i].fieldName||i}return{transformInput(a,i){let c=a.id?{id:a.id}:{};for(let t in a){let o=u[i].fields[t];o&&(c[o.fieldName||t]=a[t])}return c},transformOutput(a,i,c=[]){if(!a)return null;let t=a.id||a._id?c.length===0||c.includes("id")?{id:a.id}:{}:{},o=u[i].fields;for(let r in o){if(c.length&&!c.includes(r))continue;let d=o[r];d&&(t[r]=a[d.fieldName||r])}return t},convertWhereClause(a,i,c){return i.filter(t=>a.every(o=>{let{field:r,value:d,operator:l}=o,s=f(c,r);if(l==="in"){if(!Array.isArray(d))throw new Error("Value must be an array");return d.includes(t[s])}else return l==="contains"?t[s].includes(d):l==="starts_with"?t[s].startsWith(d):l==="ends_with"?t[s].endsWith(d):t[s]===d}))},getField:f}},Ye=e=>u=>{let{transformInput:f,transformOutput:a,convertWhereClause:i,getField:c}=q(u);return{id:"memory",create:async({model:t,data:o})=>{let r=f(o,t);return e[t].push(r),a(r,t)},findOne:async({model:t,where:o,select:r})=>{let d=e[t],s=i(o,d,t)[0]||null;return a(s,t,r)},findMany:async({model:t,where:o,sortBy:r,limit:d,offset:l})=>{let s=e[t];return o&&(s=i(o,s,t)),r&&(s=s.sort((p,b)=>{let m=c(t,r.field);return r.direction==="asc"?p[m]>b[m]?1:-1:p[m]<b[m]?1:-1})),l!==void 0&&(s=s.slice(l)),d!==void 0&&(s=s.slice(0,d)),s.map(p=>a(p,t))},update:async({model:t,where:o,update:r})=>{let d=e[t],l=i(o,d,t);return l.forEach(s=>{Object.assign(s,f(r,t))}),a(l[0],t)},delete:async({model:t,where:o})=>{let r=e[t],d=i(o,r,t);e[t]=r.filter(l=>!d.includes(l))},deleteMany:async({model:t,where:o})=>{let r=e[t],d=i(o,r,t),l=0;return e[t]=r.filter(s=>d.includes(s)?(l++,!1):!d.includes(s)),l},updateMany(t){let{model:o,where:r,update:d}=t,l=e[o],s=i(r,l,o);return s.forEach(p=>{Object.assign(p,d)}),s[0]||null}}};export{Ye as memoryAdapter};
|
package/dist/adapters/prisma.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var x=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var D=(e,n)=>{for(var l in n)x(e,l,{get:n[l],enumerable:!0})},R=(e,n,l,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let c of q(n))!S.call(e,c)&&c!==l&&x(e,c,{get:()=>n[c],enumerable:!(u=N(n,c))||u.enumerable});return e};var B=e=>R(x({},"__esModule",{value:!0}),e);var _={};D(_,{prismaAdapter:()=>H});module.exports=B(_);var s=require("zod"),Z=s.z.object({id:s.z.string(),providerId:s.z.string(),accountId:s.z.string(),userId:s.z.string(),accessToken:s.z.string().nullish(),refreshToken:s.z.string().nullish(),idToken:s.z.string().nullish(),expiresAt:s.z.date().nullish(),password:s.z.string().nullish()}),G=s.z.object({id:s.z.string(),email:s.z.string().transform(e=>e.toLowerCase()),emailVerified:s.z.boolean().default(!1),name:s.z.string(),image:s.z.string().nullish(),createdAt:s.z.date().default(new Date),updatedAt:s.z.date().default(new Date)}),Q=s.z.object({id:s.z.string(),userId:s.z.string(),expiresAt:s.z.date(),ipAddress:s.z.string().nullish(),userAgent:s.z.string().nullish()}),X=s.z.object({id:s.z.string(),value:s.z.string(),createdAt:s.z.date(),expiresAt:s.z.date(),identifier:s.z.string()});var P=require("nanoid");var b=Object.create(null),A=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?b:globalThis),M=new Proxy(b,{get(e,n){return A()[n]??b[n]},has(e,n){let l=A();return n in l||n in b},set(e,n,l){let u=A(!0);return u[n]=l,!0},deleteProperty(e,n){if(!n)return!1;let l=A(!0);return delete l[n],!0},ownKeys(){let e=A(!0);return Object.keys(e)}});function V(e){return e?e!=="false":!1}var L=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var C=L==="test"||V(M.TEST);var w=e=>{let n=e.plugins?.reduce((i,f)=>{let o=f.schema;if(!o)return i;for(let[t,d]of Object.entries(o))i[t]={fields:{...i[t]?.fields,...d.fields},modelName:d.modelName||t};return i},{}),l=e.rateLimit?.storage==="database",u={rateLimit:{modelName:e.rateLimit?.modelName||"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:c,session:
|
|
1
|
+
"use strict";var x=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var S=Object.prototype.hasOwnProperty;var D=(e,n)=>{for(var l in n)x(e,l,{get:n[l],enumerable:!0})},R=(e,n,l,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let c of q(n))!S.call(e,c)&&c!==l&&x(e,c,{get:()=>n[c],enumerable:!(u=N(n,c))||u.enumerable});return e};var B=e=>R(x({},"__esModule",{value:!0}),e);var _={};D(_,{prismaAdapter:()=>H});module.exports=B(_);var s=require("zod"),Z=s.z.object({id:s.z.string(),providerId:s.z.string(),accountId:s.z.string(),userId:s.z.string(),accessToken:s.z.string().nullish(),refreshToken:s.z.string().nullish(),idToken:s.z.string().nullish(),expiresAt:s.z.date().nullish(),password:s.z.string().nullish()}),G=s.z.object({id:s.z.string(),email:s.z.string().transform(e=>e.toLowerCase()),emailVerified:s.z.boolean().default(!1),name:s.z.string(),image:s.z.string().nullish(),createdAt:s.z.date().default(new Date),updatedAt:s.z.date().default(new Date)}),Q=s.z.object({id:s.z.string(),userId:s.z.string(),expiresAt:s.z.date(),ipAddress:s.z.string().nullish(),userAgent:s.z.string().nullish()}),X=s.z.object({id:s.z.string(),value:s.z.string(),createdAt:s.z.date(),expiresAt:s.z.date(),identifier:s.z.string()});var P=require("nanoid");var b=Object.create(null),A=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?b:globalThis),M=new Proxy(b,{get(e,n){return A()[n]??b[n]},has(e,n){let l=A();return n in l||n in b},set(e,n,l){let u=A(!0);return u[n]=l,!0},deleteProperty(e,n){if(!n)return!1;let l=A(!0);return delete l[n],!0},ownKeys(){let e=A(!0);return Object.keys(e)}});function V(e){return e?e!=="false":!1}var L=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var C=L==="test"||V(M.TEST);var w=e=>{let n=e.plugins?.reduce((i,f)=>{let o=f.schema;if(!o)return i;for(let[t,d]of Object.entries(o))i[t]={fields:{...i[t]?.fields,...d.fields},modelName:d.modelName||t};return i},{}),l=e.rateLimit?.storage==="database",u={rateLimit:{modelName:e.rateLimit?.modelName||"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:c,session:m,account:p,...a}=n||{};return{user:{modelName: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"},...c?.fields,...e.user?.additionalFields},order:1},session:{modelName: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:{modelName: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"},...p?.fields},order:3},verification:{modelName: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"},createdAt:{type:"date",required:!1,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"}},order:4},...a,...l?u:{}}};var U=require("zod");var F=require("kysely"),v=require("kysely");var O=require("consola"),T=["info","success","warn","error","debug"];function K(e,n){return T.indexOf(n)<=T.indexOf(e)}var E=(0,O.createConsola)({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),I=e=>{let n=e?.disabled!==!0,l=e?.level??"error",u=(c,m,p=[])=>{if(!(!n||!K(l,c))){if(!e||typeof e.log!="function"){E[c]("",m,...p);return}e.log(c==="success"?"info":c,m,p)}};return Object.fromEntries(T.map(c=>[c,(...[m,...p])=>u(c,m,p)]))},Ue=I();var W=(e,n)=>{let l=w(n);function u(a,i){return i==="id"?i:l[a].fields[i].fieldName||i}function c(a){switch(a){case"starts_with":return"startsWith";case"ends_with":return"endsWith";default:return a}}function m(a){return l[a].modelName}let p=e?.generateId!==!1;return{transformInput(a,i){let f=a.id&&p?{id:e?.generateId?e.generateId():a.id}:{};for(let o in a){let t=l[i].fields[o];t&&(f[t.fieldName||o]=a[o])}return f},transformOutput(a,i,f=[]){if(!a)return null;let o=a.id||a._id?f.length===0||f.includes("id")?{id:a.id}:{}:{},t=l[i].fields;for(let d in t){if(f.length&&!f.includes(d))continue;let r=t[d];r&&(o[d]=a[r.fieldName||d])}return o},convertWhereClause(a,i){if(!i)return{};if(i.length===1){let r=i[0];return r?{[u(a,r.field)]:r.operator==="eq"||!r.operator?r.value:{[c(r.operator)]:r.value}}:void 0}let f=i.filter(r=>r.connector==="AND"||!r.connector),o=i.filter(r=>r.connector==="OR"),t=f.map(r=>({[u(a,r.field)]:r.operator==="eq"||!r.operator?r.value:{[c(r.operator)]:r.value}})),d=o.map(r=>({[u(a,r.field)]:{[r.operator||"eq"]:r.value}}));return{AND:t.length?t:void 0,OR:d.length?d:void 0}},convertSelect:(a,i)=>{if(!(!a||!i))return a.reduce((f,o)=>({...f,[u(i,o)]:!0}),{})},getModelName:m,getField:u}},H=(e,n)=>l=>{let u=e,{transformInput:c,transformOutput:m,convertWhereClause:p,convertSelect:a,getModelName:i,getField:f}=W(n,l);return{id:"prisma",async create(o){let{model:t,data:d,select:r}=o,y=c(d,t),g=await u[i(t)].create({data:y,select:a(r,t)});return m(g,t,r)},async findOne(o){let{model:t,where:d,select:r}=o,y=p(t,d),g=await u[i(t)].findFirst({where:y,select:a(r,t)});return m(g,t,r)},async findMany(o){let{model:t,where:d,limit:r,offset:y,sortBy:g}=o,h=p(t,d);return(await u[i(t)].findMany({where:h,take:r||100,skip:y||0,orderBy:g?.field?{[f(t,g.field)]:g.direction==="desc"?"desc":"asc"}:void 0})).map(k=>m(k,t))},async update(o){let{model:t,where:d,update:r}=o,y=p(t,d),g=c(r,t),h=await u[i(t)].update({where:y,data:g});return m(h,t)},async updateMany(o){let{model:t,where:d,update:r}=o,y=p(t,d),g=c(r,t),h=await u[i(t)].updateMany({where:y,data:g});return h?h.count:0},async delete(o){let{model:t,where:d}=o,r=p(t,d);try{await u[i(t)].delete({where:r})}catch{}},async deleteMany(o){let{model:t,where:d}=o,r=p(t,d),y=await u[i(t)].deleteMany({where:r});return y?y.count:0},options:n}};0&&(module.exports={prismaAdapter});
|
package/dist/adapters/prisma.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{z as s}from"zod";var V=s.object({id:s.string(),providerId:s.string(),accountId:s.string(),userId:s.string(),accessToken:s.string().nullish(),refreshToken:s.string().nullish(),idToken:s.string().nullish(),expiresAt:s.date().nullish(),password:s.string().nullish()}),L=s.object({id:s.string(),email:s.string().transform(e=>e.toLowerCase()),emailVerified:s.boolean().default(!1),name:s.string(),image:s.string().nullish(),createdAt:s.date().default(new Date),updatedAt:s.date().default(new Date)}),C=s.object({id:s.string(),userId:s.string(),expiresAt:s.date(),ipAddress:s.string().nullish(),userAgent:s.string().nullish()}),U=s.object({id:s.string(),value:s.string(),createdAt:s.date(),expiresAt:s.date(),identifier:s.string()});import{nanoid as E}from"nanoid";var b=Object.create(null),A=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?b:globalThis),F=new Proxy(b,{get(e,d){return A()[d]??b[d]},has(e,d){let u=A();return d in u||d in b},set(e,d,u){let l=A(!0);return l[d]=u,!0},deleteProperty(e,d){if(!d)return!1;let u=A(!0);return delete u[d],!0},ownKeys(){let e=A(!0);return Object.keys(e)}});function O(e){return e?e!=="false":!1}var I=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var k=I==="test"||O(F.TEST);var w=e=>{let d=e.plugins?.reduce((n,f)=>{let a=f.schema;if(!a)return n;for(let[t,o]of Object.entries(a))n[t]={fields:{...n[t]?.fields,...o.fields},modelName:o.modelName||t};return n},{}),u=e.rateLimit?.storage==="database",l={rateLimit:{modelName:e.rateLimit?.modelName||"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:c,session:
|
|
1
|
+
import{z as s}from"zod";var V=s.object({id:s.string(),providerId:s.string(),accountId:s.string(),userId:s.string(),accessToken:s.string().nullish(),refreshToken:s.string().nullish(),idToken:s.string().nullish(),expiresAt:s.date().nullish(),password:s.string().nullish()}),L=s.object({id:s.string(),email:s.string().transform(e=>e.toLowerCase()),emailVerified:s.boolean().default(!1),name:s.string(),image:s.string().nullish(),createdAt:s.date().default(new Date),updatedAt:s.date().default(new Date)}),C=s.object({id:s.string(),userId:s.string(),expiresAt:s.date(),ipAddress:s.string().nullish(),userAgent:s.string().nullish()}),U=s.object({id:s.string(),value:s.string(),createdAt:s.date(),expiresAt:s.date(),identifier:s.string()});import{nanoid as E}from"nanoid";var b=Object.create(null),A=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?b:globalThis),F=new Proxy(b,{get(e,d){return A()[d]??b[d]},has(e,d){let u=A();return d in u||d in b},set(e,d,u){let l=A(!0);return l[d]=u,!0},deleteProperty(e,d){if(!d)return!1;let u=A(!0);return delete u[d],!0},ownKeys(){let e=A(!0);return Object.keys(e)}});function O(e){return e?e!=="false":!1}var I=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var k=I==="test"||O(F.TEST);var w=e=>{let d=e.plugins?.reduce((n,f)=>{let a=f.schema;if(!a)return n;for(let[t,o]of Object.entries(a))n[t]={fields:{...n[t]?.fields,...o.fields},modelName:o.modelName||t};return n},{}),u=e.rateLimit?.storage==="database",l={rateLimit:{modelName:e.rateLimit?.modelName||"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:c,session:m,account:p,...i}=d||{};return{user:{modelName: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"},...c?.fields,...e.user?.additionalFields},order:1},session:{modelName: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:{modelName: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"},...p?.fields},order:3},verification:{modelName: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"},createdAt:{type:"date",required:!1,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"}},order:4},...i,...u?l:{}}};import{z as fe}from"zod";import{Kysely as ge,MssqlDialect as he}from"kysely";import{MysqlDialect as be,PostgresDialect as we,SqliteDialect as xe}from"kysely";import{createConsola as q}from"consola";var x=["info","success","warn","error","debug"];function S(e,d){return x.indexOf(d)<=x.indexOf(e)}var D=q({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),v=e=>{let d=e?.disabled!==!0,u=e?.level??"error",l=(c,m,p=[])=>{if(!(!d||!S(u,c))){if(!e||typeof e.log!="function"){D[c]("",m,...p);return}e.log(c==="success"?"info":c,m,p)}};return Object.fromEntries(x.map(c=>[c,(...[m,...p])=>l(c,m,p)]))},Ce=v();var R=(e,d)=>{let u=w(d);function l(i,n){return n==="id"?n:u[i].fields[n].fieldName||n}function c(i){switch(i){case"starts_with":return"startsWith";case"ends_with":return"endsWith";default:return i}}function m(i){return u[i].modelName}let p=e?.generateId!==!1;return{transformInput(i,n){let f=i.id&&p?{id:e?.generateId?e.generateId():i.id}:{};for(let a in i){let t=u[n].fields[a];t&&(f[t.fieldName||a]=i[a])}return f},transformOutput(i,n,f=[]){if(!i)return null;let a=i.id||i._id?f.length===0||f.includes("id")?{id:i.id}:{}:{},t=u[n].fields;for(let o in t){if(f.length&&!f.includes(o))continue;let r=t[o];r&&(a[o]=i[r.fieldName||o])}return a},convertWhereClause(i,n){if(!n)return{};if(n.length===1){let r=n[0];return r?{[l(i,r.field)]:r.operator==="eq"||!r.operator?r.value:{[c(r.operator)]:r.value}}:void 0}let f=n.filter(r=>r.connector==="AND"||!r.connector),a=n.filter(r=>r.connector==="OR"),t=f.map(r=>({[l(i,r.field)]:r.operator==="eq"||!r.operator?r.value:{[c(r.operator)]:r.value}})),o=a.map(r=>({[l(i,r.field)]:{[r.operator||"eq"]:r.value}}));return{AND:t.length?t:void 0,OR:o.length?o:void 0}},convertSelect:(i,n)=>{if(!(!i||!n))return i.reduce((f,a)=>({...f,[l(n,a)]:!0}),{})},getModelName:m,getField:l}},nt=(e,d)=>u=>{let l=e,{transformInput:c,transformOutput:m,convertWhereClause:p,convertSelect:i,getModelName:n,getField:f}=R(d,u);return{id:"prisma",async create(a){let{model:t,data:o,select:r}=a,y=c(o,t),g=await l[n(t)].create({data:y,select:i(r,t)});return m(g,t,r)},async findOne(a){let{model:t,where:o,select:r}=a,y=p(t,o),g=await l[n(t)].findFirst({where:y,select:i(r,t)});return m(g,t,r)},async findMany(a){let{model:t,where:o,limit:r,offset:y,sortBy:g}=a,h=p(t,o);return(await l[n(t)].findMany({where:h,take:r||100,skip:y||0,orderBy:g?.field?{[f(t,g.field)]:g.direction==="desc"?"desc":"asc"}:void 0})).map(T=>m(T,t))},async update(a){let{model:t,where:o,update:r}=a,y=p(t,o),g=c(r,t),h=await l[n(t)].update({where:y,data:g});return m(h,t)},async updateMany(a){let{model:t,where:o,update:r}=a,y=p(t,o),g=c(r,t),h=await l[n(t)].updateMany({where:y,data:g});return h?h.count:0},async delete(a){let{model:t,where:o}=a,r=p(t,o);try{await l[n(t)].delete({where:r})}catch{}},async deleteMany(a){let{model:t,where:o}=a,r=p(t,o),y=await l[n(t)].deleteMany({where:r});return y?y.count:0},options:d}};export{nt as prismaAdapter};
|
|
@@ -2,8 +2,8 @@ import * as nanostores from 'nanostores';
|
|
|
2
2
|
import { AccessControl, StatementsPrimitive, Role } from '../plugins/access.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-YXx6CnTz.cjs';
|
|
6
|
+
export { g as getPasskeyActions, c as passkeyClient, a as twoFactorClient } from '../index-YXx6CnTz.cjs';
|
|
7
7
|
import { P as Prettify } from '../helper-DrEEwdyQ.cjs';
|
|
8
8
|
import { O as FieldAttribute, B as BetterAuthOptions, j as BetterAuthPlugin } from '../auth-DUjJdNoZ.cjs';
|
|
9
9
|
import { Store } from '../types.cjs';
|
package/dist/client/plugins.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import * as nanostores from 'nanostores';
|
|
|
2
2
|
import { AccessControl, StatementsPrimitive, Role } from '../plugins/access.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-DtM1rOVY.js';
|
|
6
|
+
export { g as getPasskeyActions, c as passkeyClient, a as twoFactorClient } from '../index-DtM1rOVY.js';
|
|
7
7
|
import { P as Prettify } from '../helper-DrEEwdyQ.js';
|
|
8
8
|
import { O as FieldAttribute, B as BetterAuthOptions, j as BetterAuthPlugin } from '../auth-C0rgfDdu.js';
|
|
9
9
|
import { Store } from '../types.js';
|
package/dist/db.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var B=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var X=(e,n)=>{for(var d in n)B(e,d,{get:n[d],enumerable:!0})},Y=(e,n,d,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let p of G(n))!Q.call(e,p)&&p!==d&&B(e,p,{get:()=>n[p],enumerable:!(u=Z(n,p))||u.enumerable});return e};var ee=e=>Y(B({},"__esModule",{value:!0}),e);var be={};X(be,{convertFromDB:()=>ue,convertToDB:()=>le,createFieldAttribute:()=>se,createInternalAdapter:()=>ie,getAdapter:()=>de,getAuthTables:()=>k,getMigrations:()=>Ae,getSchema:()=>j,getWithHooks:()=>P,matchType:()=>z,toZodSchema:()=>ae});module.exports=ee(be);var V=(e,n="ms")=>new Date(Date.now()+(n==="sec"?e*1e3:e));var x=require("zod"),ve=x.z.object({id:x.z.string(),providerId:x.z.string(),accountId:x.z.string(),userId:x.z.string(),accessToken:x.z.string().nullish(),refreshToken:x.z.string().nullish(),idToken:x.z.string().nullish(),expiresAt:x.z.date().nullish(),password:x.z.string().nullish()}),Te=x.z.object({id:x.z.string(),email:x.z.string().transform(e=>e.toLowerCase()),emailVerified:x.z.boolean().default(!1),name:x.z.string(),image:x.z.string().nullish(),createdAt:x.z.date().default(new Date),updatedAt:x.z.date().default(new Date)}),Fe=x.z.object({id:x.z.string(),userId:x.z.string(),expiresAt:x.z.date(),ipAddress:x.z.string().nullish(),userAgent:x.z.string().nullish()}),Oe=x.z.object({id:x.z.string(),value:x.z.string(),createdAt:x.z.date(),expiresAt:x.z.date(),identifier:x.z.string()});function K(e,n){let d=n.fields,u={};for(let p in e){let g=d[p];if(!g){u[p]=e[p];continue}g.returned!==!1&&(u[p]=e[p])}return u}function E(e,n){let d={...n==="user"?e.user?.additionalFields:{},...n==="session"?e.session?.additionalFields:{}};for(let u of e.plugins||[])u.schema&&u.schema[n]&&(d={...d,...u.schema[n].fields});return d}function L(e,n){let d=E(e,"user");return K(n,{fields:d})}function q(e,n){let d=E(e,"session");return K(n,{fields:d})}var C=require("nanoid"),v=e=>(0,C.nanoid)(e);function P(e,n){let d=n.hooks;async function u(m,A,r){let t=m;for(let o of d||[]){let a=o[A]?.create?.before;if(a){let s=await a(m);if(s===!1)return null;typeof s=="object"&&"data"in s&&(t=s.data)}}let i=r?await r.fn(t):null,c=!r||r.executeMainFn?await e.create({model:A,data:t}):i;for(let o of d||[]){let a=o[A]?.create?.after;a&&await a(c)}return c}async function p(m,A,r,t){let i=m;for(let a of d||[]){let s=a[r]?.update?.before;if(s){let l=await s(m);if(l===!1)return null;i=typeof l=="object"?l.data:l}}let c=t?await t.fn(i):null,o=!t||t.executeMainFn?await e.update({model:r,update:i,where:A}):c;for(let a of d||[]){let s=a[r]?.update?.after;s&&await s(o)}return o}async function g(m,A,r,t){let i=m;for(let a of d||[]){let s=a[r]?.update?.before;if(s){let l=await s(m);if(l===!1)return null;i=typeof l=="object"?l.data:l}}let c=t?await t.fn(i):null,o=!t||t.executeMainFn?await e.updateMany({model:r,update:i,where:A}):c;for(let a of d||[]){let s=a[r]?.update?.after;s&&await s(o)}return o}return{createWithHooks:u,updateWithHooks:p,updateManyWithHooks:g}}var S=Object.create(null),O=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?S:globalThis),te=new Proxy(S,{get(e,n){return O()[n]??S[n]},has(e,n){let d=O();return n in d||n in S},set(e,n,d){let u=O(!0);return u[n]=d,!0},deleteProperty(e,n){if(!n)return!1;let d=O(!0);return delete d[n],!0},ownKeys(){let e=O(!0);return Object.keys(e)}});function re(e){return e?e!=="false":!1}var ne=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var H=ne==="test"||re(te.TEST);function W(e,n){if(n.advanced?.ipAddress?.disableIpTracking)return null;let d="127.0.0.1";if(H)return d;let p=n.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"],g=e instanceof Request?e.headers:e;for(let m of p){let A=g.get(m);if(typeof A=="string"){let r=A.split(",")[0].trim();if(r)return r}}return null}function D(e){try{return JSON.parse(e)}catch{return null}}var ie=(e,n)=>{let d=n.options,u=d.secondaryStorage,p=d.session?.expiresIn||60*60*24*7,{createWithHooks:g,updateWithHooks:m,updateManyWithHooks:A}=P(e,n);return{createOAuthUser:async(r,t)=>{try{let i=await g({id:v(),createdAt:new Date,updatedAt:new Date,...r},"user"),c=await g({id:v(),...t,userId:i.id||r.id},"account");return{user:i,account:c}}catch(i){return console.log(i),null}},createUser:async r=>await g({id:v(),createdAt:new Date,updatedAt:new Date,emailVerified:!1,...r},"user"),createAccount:async r=>await g({id:v(),createdAt:new Date,updatedAt:new Date,...r},"account"),listSessions:async r=>{if(u){let i=await u.get(`active-sessions-${r}`);if(!i)return[];let c=D(i)||[],o=Date.now(),a=c.filter(l=>l.expiresAt>o),s=[];for(let l of a){let y=await u.get(l.id);if(y){let f=JSON.parse(y),h=q(n.options,{...f.session,expiresAt:new Date(f.session.expiresAt)});s.push(h)}}return s}return await e.findMany({model:"session",where:[{field:"userId",value:r}]})},listUsers:async(r,t,i,c)=>await e.findMany({model:"user",limit:r,offset:t,sortBy:i,where:c}),deleteUser:async r=>{await e.deleteMany({model:"session",where:[{field:"userId",value:r}]}),await e.deleteMany({model:"account",where:[{field:"userId",value:r}]}),await e.delete({model:"user",where:[{field:"id",value:r}]})},createSession:async(r,t,i,c)=>{let o=t instanceof Request?t.headers:t,a={id:v(32),userId:r,expiresAt:i?V(60*60*24,"sec"):V(p,"sec"),ipAddress:t&&W(t,n.options)||"",userAgent:o?.get("user-agent")||"",...c};return await g(a,"session",u?{fn:async l=>{let y=await e.findOne({model:"user",where:[{field:"id",value:r}]});u.set(l.id,JSON.stringify({session:l,user:y}),p);let f=await u.get(`active-sessions-${r}`),h=[],b=Date.now();return f&&(h=D(f)||[],h=h.filter(F=>F.expiresAt>b)),h.push({id:l.id,expiresAt:b+p*1e3}),await u.set(`active-sessions-${r}`,JSON.stringify(h),p),l},executeMainFn:d.session?.storeSessionInDatabase}:void 0)},findSession:async r=>{if(u){let o=await u.get(r);if(o){let a=JSON.parse(o),s=q(n.options,{...a.session,expiresAt:new Date(a.session.expiresAt)}),l=L(n.options,{...a.user,createdAt:new Date(a.user.createdAt),updatedAt:new Date(a.user.updatedAt)});return{session:s,user:l}}}let t=await e.findOne({model:"session",where:[{value:r,field:"id"}]});if(!t)return null;let i=await e.findOne({model:"user",where:[{value:t.userId,field:"id"}]});if(!i)return null;let c=L(n.options,i);return{session:q(n.options,t),user:c}},findSessions:async r=>{if(u){let o=[];for(let a of r){let s=await u.get(a);if(s){let l=JSON.parse(s),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)}};o.push(y)}}return o}let t=await e.findMany({model:"session",where:[{field:"id",value:r,operator:"in"}]}),i=t.map(o=>o.userId);if(!i.length)return[];let c=await e.findMany({model:"user",where:[{field:"id",value:i,operator:"in"}]});return t.map(o=>{let a=c.find(s=>s.id===o.userId);return a?{session:o,user:a}:null})},updateSession:async(r,t)=>await m(t,[{field:"id",value:r}],"session",u?{async fn(c){let o=await u.get(r),a=null;if(o){let s=JSON.parse(o);a={...s.session,...c},await u.set(r,JSON.stringify({session:a,user:s.user}),s.session.expiresAt?Math.floor((s.session.expiresAt.getTime()-Date.now())/1e3):p)}else return null},executeMainFn:d.session?.storeSessionInDatabase}:void 0),deleteSession:async r=>{if(u){await u.delete(r),d.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"id",value:r}]});return}await e.delete({model:"session",where:[{field:"id",value:r}]})},deleteSessions:async r=>{if(u){if(typeof r=="string"){let t=await u.get(`active-sessions-${r}`),i=t?D(t):[];if(!i)return;for(let c of i)await u.delete(c.id)}else for(let t of r)await u.get(t)&&await u.delete(t);d.session?.storeSessionInDatabase&&await e.deleteMany({model:"session",where:[{field:Array.isArray(r)?"id":"userId",value:r,operator:Array.isArray(r)?"in":void 0}]});return}await e.deleteMany({model:"session",where:[{field:Array.isArray(r)?"id":"userId",value:r,operator:Array.isArray(r)?"in":void 0}]})},findUserByEmail:async(r,t)=>{let i=await e.findOne({model:"user",where:[{value:r.toLowerCase(),field:"email"}]});if(!i)return null;if(t?.includeAccounts){let c=await e.findMany({model:"account",where:[{value:i.id,field:"userId"}]});return{user:i,accounts:c}}return{user:i,accounts:[]}},findUserById:async r=>await e.findOne({model:"user",where:[{field:"id",value:r}]}),linkAccount:async r=>await g({id:v(),...r},"account"),updateUser:async(r,t)=>await m(t,[{field:"id",value:r}],"user"),updateUserByEmail:async(r,t)=>await m(t,[{field:"email",value:r}],"user"),updatePassword:async(r,t)=>{await A({password:t},[{field:"userId",value:r},{field:"providerId",value:"credential"}],"account")},findAccounts:async r=>await e.findMany({model:"account",where:[{field:"userId",value:r}]}),findAccount:async r=>await e.findOne({model:"account",where:[{field:"accountId",value:r}]}),findAccountByUserId:async r=>await e.findMany({model:"account",where:[{field:"userId",value:r}]}),updateAccount:async(r,t)=>await m(t,[{field:"id",value:r}],"account"),createVerificationValue:async r=>await g({id:v(),createdAt:new Date,...r},"verification"),findVerificationValue:async r=>(await e.findMany({model:"verification",where:[{field:"identifier",value:r}],sortBy:{field:"createdAt",direction:"desc"},limit:10}))[0],deleteVerificationValue:async r=>{await e.delete({model:"verification",where:[{field:"id",value:r}]})},deleteVerificationByIdentifier:async r=>{await e.delete({model:"verification",where:[{field:"identifier",value:r}]})},updateVerificationValue:async(r,t)=>await m(t,[{field:"id",value:r}],"verification")}};var se=(e,n)=>({type:e,...n});var k=e=>{let n=e.plugins?.reduce((r,t)=>{let i=t.schema;if(!i)return r;for(let[c,o]of Object.entries(i))r[c]={fields:{...r[c]?.fields,...o.fields},modelName:o.modelName||c};return r},{}),d=e.rateLimit?.storage==="database",u={rateLimit:{modelName:e.rateLimit?.modelName||"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:g,account:m,...A}=n||{};return{user:{modelName: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:{modelName: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},...g?.fields,...e.session?.additionalFields},order:2},account:{modelName: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"},...m?.fields},order:3},verification:{modelName: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"},createdAt:{type:"date",required:!1,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"}},order:4},...A,...d?u:{}}};var T=require("zod");function ae(e){return T.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]:T.z.array(p.type==="string[]"?T.z.string():T.z.number())};let g=T.z[p.type]();return p?.required===!1&&(g=g.optional()),p?.returned===!1?d:{...d,[u]:g}},{})})}var I=class extends Error{constructor(n,d){super(n),this.name="BetterAuthError",this.message=n,this.cause=d,this.stack=""}};var N=require("kysely"),w=require("kysely");function $(e){if("dialect"in e)return $(e.dialect);if("createDriver"in e){if(e instanceof w.SqliteDialect)return"sqlite";if(e instanceof w.MysqlDialect)return"mysql";if(e instanceof w.PostgresDialect)return"postgres";if(e instanceof N.MssqlDialect)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var R=async e=>{let n=e.database;if("db"in n)return{kysely:n.db,databaseType:n.type};if("dialect"in n)return{kysely:new N.Kysely({dialect:n.dialect}),databaseType:n.type};let d,u=$(n);return"createDriver"in n&&(d=n),"aggregate"in n&&(d=new w.SqliteDialect({database:n})),"getConnection"in n&&(d=new w.MysqlDialect(n)),"connect"in n&&(d=new w.PostgresDialect({pool:n})),{kysely:d?new N.Kysely({dialect:d}):null,databaseType:u}};var oe=(e,n,d)=>{let u=k(n);function p(t,i){if(i==="id")return i;let c=u[t].fields[i];return c||console.log("Field not found",t,i),c.fieldName||i}function g(t,i,c){let{type:o="sqlite"}=d||{},a=u[i].fields[c];return a.type==="boolean"&&o==="sqlite"?t?1:0:a.type==="date"&&t&&t instanceof Date&&o==="sqlite"?t.toISOString():t}function m(t,i,c){let{type:o="sqlite"}=d||{},a=u[i].fields[c];return a.type==="boolean"&&o==="sqlite"&&t!==null?t===1:a.type==="date"&&t?new Date(t):t}function A(t){return u[t].modelName}let r=d?.generateId!==!1;return{transformInput(t,i){let c=t.id&&r?{id:d?.generateId?d.generateId():t.id}:{};for(let o in t){let a=u[i].fields[o];a&&(c[a.fieldName||o]=g(t[o],i,o))}return c},transformOutput(t,i,c=[]){if(!t)return null;let o=t.id?c.length===0||c.includes("id")?{id:t.id}:{}:{},a=u[i].fields;for(let s in a){if(c.length&&!c.includes(s))continue;let l=a[s];l&&(o[s]=m(t[l.fieldName||s],i,s))}return o},convertWhereClause(t,i){if(!i)return{and:null,or:null};let c={and:[],or:[]};return i.forEach(o=>{let{field:a,value:s,operator:l="=",connector:y="AND"}=o,f=p(t,a),h=b=>l.toLowerCase()==="in"?b(f,"in",Array.isArray(s)?s:[s]):l==="contains"?b(f,"like",`%${s}%`):l==="starts_with"?b(f,"like",`${s}%`):l==="ends_with"?b(f,"like",`%${s}`):l==="eq"?b(f,"=",s):l==="ne"?b(f,"<>",s):l==="gt"?b(f,">",s):l==="gte"?b(f,">=",s):l==="lt"?b(f,"<",s):l==="lte"?b(f,"<=",s):b(f,l,s);y==="OR"?c.or.push(h):c.and.push(h)}),{and:c.and.length?c.and:null,or:c.or.length?c.or:null}},async withReturning(t,i,c,o){let a;if(d?.type!=="mysql")a=await i.returningAll().executeTakeFirst();else{await i.execute();let s=t.id?"id":o[0].field?o[0].field:"id",l=t[s]||o[0].value;a=await e.selectFrom(A(c)).selectAll().where(p(c,s),"=",l).executeTakeFirst()}return a},getModelName:A,getField:p}},_=(e,n)=>d=>{let{transformInput:u,withReturning:p,transformOutput:g,convertWhereClause:m,getModelName:A,getField:r}=oe(e,d,n);return{id:"kysely",async create(t){let{model:i,data:c,select:o}=t,a=u(c,i),s=e.insertInto(A(i)).values(a);return g(await p(a,s,i,[]),i,o)},async findOne(t){let{model:i,where:c,select:o}=t,{and:a,or:s}=m(i,c),l=e.selectFrom(A(i)).selectAll();a&&(l=l.where(f=>f.and(a.map(h=>h(f))))),s&&(l=l.where(f=>f.or(s.map(h=>h(f)))));let y=await l.executeTakeFirst();return y?g(y,i,o):null},async findMany(t){let{model:i,where:c,limit:o,offset:a,sortBy:s}=t,{and:l,or:y}=m(i,c),f=e.selectFrom(A(i));l&&(f=f.where(b=>b.and(l.map(F=>F(b))))),y&&(f=f.where(b=>b.or(y.map(F=>F(b))))),f=f.limit(o||100),a&&(f=f.offset(a)),s&&(f=f.orderBy(r(i,s.field),s.direction));let h=await f.selectAll().execute();return h?h.map(b=>g(b,i)):[]},async update(t){let{model:i,where:c,update:o}=t,{and:a,or:s}=m(i,c),l=u(o,i),y=e.updateTable(A(i)).set(l);return a&&(y=y.where(f=>f.and(a.map(h=>h(f))))),s&&(y=y.where(f=>f.or(s.map(h=>h(f))))),g(await p(l,y,i,c),i)},async updateMany(t){let{model:i,where:c,update:o}=t,{and:a,or:s}=m(i,c),l=u(o,i),y=e.updateTable(A(i)).set(l);return a&&(y=y.where(h=>h.and(a.map(b=>b(h))))),s&&(y=y.where(h=>h.or(s.map(b=>b(h))))),(await y.execute()).length},async delete(t){let{model:i,where:c}=t,{and:o,or:a}=m(i,c),s=e.deleteFrom(A(i));o&&(s=s.where(l=>l.and(o.map(y=>y(l))))),a&&(s=s.where(l=>l.or(a.map(y=>y(l))))),await s.execute()},async deleteMany(t){let{model:i,where:c}=t,{and:o,or:a}=m(i,c),s=e.deleteFrom(A(i));return o&&(s=s.where(l=>l.and(o.map(y=>y(l))))),a&&(s=s.where(l=>l.or(a.map(y=>y(l))))),(await s.execute()).length},options:n}};async function de(e){if(!e.database)throw new I("Database configuration is required");if(typeof e.database=="function")return e.database(e);let{kysely:n,databaseType:d}=await R(e);if(!n)throw new I("Failed to initialize database adapter");return _(n,{generateId:"generateId"in e.database?e.database.generateId:void 0,type:d||"sqlite"})(e)}function le(e,n){let d=n.id?{id:n.id}:{};for(let u in e){let p=e[u],g=n[u];g!==void 0&&(d[p.fieldName||u]=g)}return d}function ue(e,n){if(!n)return null;let d={id:n.id};for(let[u,p]of Object.entries(e))d[u]=n[p.fieldName||u];return d}var J=require("consola"),M=["info","success","warn","error","debug"];function ce(e,n){return M.indexOf(n)<=M.indexOf(e)}var fe=(0,J.createConsola)({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),U=e=>{let n=e?.disabled!==!0,d=e?.level??"error",u=(p,g,m=[])=>{if(!(!n||!ce(d,p))){if(!e||typeof e.log!="function"){fe[p]("",g,...m);return}e.log(p==="success"?"info":p,g,m)}};return Object.fromEntries(M.map(p=>[p,(...[g,...m])=>u(p,g,m)]))},nt=U();function j(e){let n=k(e),d={};for(let u in n){let p=n[u],g=p.fields,m={};if(Object.entries(g).forEach(([A,r])=>{m[r.fieldName||A]=r}),d[p.modelName]){d[p.modelName].fields={...d[p.modelName].fields,...m};continue}d[p.modelName]={fields:m,order:p.order||1/0}}return d}var pe={string:["character varying","text"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamp","date"]},ye={string:["varchar","text"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"]},me={string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"]},ge={string:["nvarchar","varchar"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","boolean"],date:["datetime","date"]},he={postgres:pe,mysql:ye,sqlite:me,mssql:ge};function z(e,n,d){return n==="string[]"||n==="number[]"?e.toLowerCase().includes("json"):he[d][n].map(m=>m.toLowerCase()).includes(e.toLowerCase())}async function Ae(e){let n=j(e),d=U(e.logger),{kysely:u,databaseType:p}=await R(e);p||(d.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),p="sqlite"),u||(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 g=await u.introspection.getTables(),m=[],A=[];for(let[o,a]of Object.entries(n)){let s=g.find(y=>y.name===o);if(!s){let y=m.findIndex(b=>b.table===o),f={table:o,fields:a.fields,order:a.order||1/0},h=m.findIndex(b=>(b.order||1/0)>f.order);h===-1?y===-1?m.push(f):m[y].fields={...m[y].fields,...a.fields}:m.splice(h,0,f);continue}let l={};for(let[y,f]of Object.entries(a.fields)){let h=s.columns.find(b=>b.name===y);if(!h){l[y]=f;continue}z(h.dataType,f.type,p)||d.warn(`Field ${y} in table ${o} has a different type in the database. Expected ${f.type} but got ${h.dataType}.`)}Object.keys(l).length>0&&A.push({table:o,fields:l,order:a.order||1/0})}let r=[];function t(o){let a=o.type,s={string:{sqlite:"text",postgres:"text",mysql:o.unique?"varchar(255)":o.references?"varchar(36)":"text",mssql:"text"},boolean:{sqlite:"integer",postgres:"boolean",mysql:"boolean",mssql:"boolean"},number:{sqlite:"integer",postgres:"integer",mysql:"integer",mssql:"integer"},date:{sqlite:"date",postgres:"timestamp",mysql:"datetime",mssql:"datetime"}};return p==="sqlite"&&(a==="string[]"||a==="number[]")?"text":a==="string[]"||a==="number[]"?"jsonb":s[a][p||"sqlite"]}if(A.length)for(let o of A)for(let[a,s]of Object.entries(o.fields)){let l=t(s),y=u.schema.alterTable(o.table).addColumn(a,l,f=>(f=s.required!==!1?f.notNull():f,s.references&&(f=f.references(`${s.references.model}.${s.references.field}`)),f));r.push(y)}if(m.length)for(let o of m){let a=u.schema.createTable(o.table).addColumn("id",p==="mysql"?"varchar(36)":"text",s=>s.primaryKey().notNull());for(let[s,l]of Object.entries(o.fields)){let y=t(l);a=a.addColumn(s,y,f=>(f=l.required!==!1?f.notNull():f,l.references&&(f=f.references(`${l.references.model}.${l.references.field}`)),l.unique&&(f=f.unique()),f))}r.push(a)}async function i(){for(let o of r)await o.execute()}async function c(){return r.map(a=>a.compile().sql).join(`;
|
|
1
|
+
"use strict";var B=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var X=(e,n)=>{for(var d in n)B(e,d,{get:n[d],enumerable:!0})},Y=(e,n,d,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let p of G(n))!Q.call(e,p)&&p!==d&&B(e,p,{get:()=>n[p],enumerable:!(u=Z(n,p))||u.enumerable});return e};var ee=e=>Y(B({},"__esModule",{value:!0}),e);var be={};X(be,{convertFromDB:()=>ue,convertToDB:()=>le,createFieldAttribute:()=>se,createInternalAdapter:()=>ie,getAdapter:()=>de,getAuthTables:()=>k,getMigrations:()=>Ae,getSchema:()=>j,getWithHooks:()=>P,matchType:()=>z,toZodSchema:()=>ae});module.exports=ee(be);var V=(e,n="ms")=>new Date(Date.now()+(n==="sec"?e*1e3:e));var x=require("zod"),Te=x.z.object({id:x.z.string(),providerId:x.z.string(),accountId:x.z.string(),userId:x.z.string(),accessToken:x.z.string().nullish(),refreshToken:x.z.string().nullish(),idToken:x.z.string().nullish(),expiresAt:x.z.date().nullish(),password:x.z.string().nullish()}),ve=x.z.object({id:x.z.string(),email:x.z.string().transform(e=>e.toLowerCase()),emailVerified:x.z.boolean().default(!1),name:x.z.string(),image:x.z.string().nullish(),createdAt:x.z.date().default(new Date),updatedAt:x.z.date().default(new Date)}),Fe=x.z.object({id:x.z.string(),userId:x.z.string(),expiresAt:x.z.date(),ipAddress:x.z.string().nullish(),userAgent:x.z.string().nullish()}),Oe=x.z.object({id:x.z.string(),value:x.z.string(),createdAt:x.z.date(),expiresAt:x.z.date(),identifier:x.z.string()});function K(e,n){let d=n.fields,u={};for(let p in e){let g=d[p];if(!g){u[p]=e[p];continue}g.returned!==!1&&(u[p]=e[p])}return u}function E(e,n){let d={...n==="user"?e.user?.additionalFields:{},...n==="session"?e.session?.additionalFields:{}};for(let u of e.plugins||[])u.schema&&u.schema[n]&&(d={...d,...u.schema[n].fields});return d}function L(e,n){let d=E(e,"user");return K(n,{fields:d})}function q(e,n){let d=E(e,"session");return K(n,{fields:d})}var C=require("nanoid"),T=e=>(0,C.nanoid)(e);function P(e,n){let d=n.hooks;async function u(m,A,r){let t=m;for(let o of d||[]){let a=o[A]?.create?.before;if(a){let s=await a(m);if(s===!1)return null;typeof s=="object"&&"data"in s&&(t=s.data)}}let i=r?await r.fn(t):null,c=!r||r.executeMainFn?await e.create({model:A,data:t}):i;for(let o of d||[]){let a=o[A]?.create?.after;a&&await a(c)}return c}async function p(m,A,r,t){let i=m;for(let a of d||[]){let s=a[r]?.update?.before;if(s){let l=await s(m);if(l===!1)return null;i=typeof l=="object"?l.data:l}}let c=t?await t.fn(i):null,o=!t||t.executeMainFn?await e.update({model:r,update:i,where:A}):c;for(let a of d||[]){let s=a[r]?.update?.after;s&&await s(o)}return o}async function g(m,A,r,t){let i=m;for(let a of d||[]){let s=a[r]?.update?.before;if(s){let l=await s(m);if(l===!1)return null;i=typeof l=="object"?l.data:l}}let c=t?await t.fn(i):null,o=!t||t.executeMainFn?await e.updateMany({model:r,update:i,where:A}):c;for(let a of d||[]){let s=a[r]?.update?.after;s&&await s(o)}return o}return{createWithHooks:u,updateWithHooks:p,updateManyWithHooks:g}}var S=Object.create(null),O=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?S:globalThis),te=new Proxy(S,{get(e,n){return O()[n]??S[n]},has(e,n){let d=O();return n in d||n in S},set(e,n,d){let u=O(!0);return u[n]=d,!0},deleteProperty(e,n){if(!n)return!1;let d=O(!0);return delete d[n],!0},ownKeys(){let e=O(!0);return Object.keys(e)}});function re(e){return e?e!=="false":!1}var ne=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var H=ne==="test"||re(te.TEST);function W(e,n){if(n.advanced?.ipAddress?.disableIpTracking)return null;let d="127.0.0.1";if(H)return d;let p=n.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"],g=e instanceof Request?e.headers:e;for(let m of p){let A=g.get(m);if(typeof A=="string"){let r=A.split(",")[0].trim();if(r)return r}}return null}function D(e){try{return JSON.parse(e)}catch{return null}}var ie=(e,n)=>{let d=n.options,u=d.secondaryStorage,p=d.session?.expiresIn||60*60*24*7,{createWithHooks:g,updateWithHooks:m,updateManyWithHooks:A}=P(e,n);return{createOAuthUser:async(r,t)=>{try{let i=await g({id:T(),createdAt:new Date,updatedAt:new Date,...r},"user"),c=await g({id:T(),...t,userId:i.id||r.id},"account");return{user:i,account:c}}catch(i){return console.log(i),null}},createUser:async r=>await g({id:T(),createdAt:new Date,updatedAt:new Date,emailVerified:!1,...r},"user"),createAccount:async r=>await g({id:T(),createdAt:new Date,updatedAt:new Date,...r},"account"),listSessions:async r=>{if(u){let i=await u.get(`active-sessions-${r}`);if(!i)return[];let c=D(i)||[],o=Date.now(),a=c.filter(l=>l.expiresAt>o),s=[];for(let l of a){let y=await u.get(l.id);if(y){let f=JSON.parse(y),h=q(n.options,{...f.session,expiresAt:new Date(f.session.expiresAt)});s.push(h)}}return s}return await e.findMany({model:"session",where:[{field:"userId",value:r}]})},listUsers:async(r,t,i,c)=>await e.findMany({model:"user",limit:r,offset:t,sortBy:i,where:c}),deleteUser:async r=>{await e.deleteMany({model:"session",where:[{field:"userId",value:r}]}),await e.deleteMany({model:"account",where:[{field:"userId",value:r}]}),await e.delete({model:"user",where:[{field:"id",value:r}]})},createSession:async(r,t,i,c)=>{let o=t instanceof Request?t.headers:t,a={id:T(32),userId:r,expiresAt:i?V(60*60*24,"sec"):V(p,"sec"),ipAddress:t&&W(t,n.options)||"",userAgent:o?.get("user-agent")||"",...c};return await g(a,"session",u?{fn:async l=>{let y=await e.findOne({model:"user",where:[{field:"id",value:r}]});u.set(l.id,JSON.stringify({session:l,user:y}),p);let f=await u.get(`active-sessions-${r}`),h=[],b=Date.now();return f&&(h=D(f)||[],h=h.filter(F=>F.expiresAt>b)),h.push({id:l.id,expiresAt:b+p*1e3}),await u.set(`active-sessions-${r}`,JSON.stringify(h),p),l},executeMainFn:d.session?.storeSessionInDatabase}:void 0)},findSession:async r=>{if(u){let o=await u.get(r);if(o){let a=JSON.parse(o),s=q(n.options,{...a.session,expiresAt:new Date(a.session.expiresAt)}),l=L(n.options,{...a.user,createdAt:new Date(a.user.createdAt),updatedAt:new Date(a.user.updatedAt)});return{session:s,user:l}}}let t=await e.findOne({model:"session",where:[{value:r,field:"id"}]});if(!t)return null;let i=await e.findOne({model:"user",where:[{value:t.userId,field:"id"}]});if(!i)return null;let c=L(n.options,i);return{session:q(n.options,t),user:c}},findSessions:async r=>{if(u){let o=[];for(let a of r){let s=await u.get(a);if(s){let l=JSON.parse(s),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)}};o.push(y)}}return o}let t=await e.findMany({model:"session",where:[{field:"id",value:r,operator:"in"}]}),i=t.map(o=>o.userId);if(!i.length)return[];let c=await e.findMany({model:"user",where:[{field:"id",value:i,operator:"in"}]});return t.map(o=>{let a=c.find(s=>s.id===o.userId);return a?{session:o,user:a}:null})},updateSession:async(r,t)=>await m(t,[{field:"id",value:r}],"session",u?{async fn(c){let o=await u.get(r),a=null;if(o){let s=JSON.parse(o);a={...s.session,...c},await u.set(r,JSON.stringify({session:a,user:s.user}),s.session.expiresAt?Math.floor((s.session.expiresAt.getTime()-Date.now())/1e3):p)}else return null},executeMainFn:d.session?.storeSessionInDatabase}:void 0),deleteSession:async r=>{if(u){await u.delete(r),d.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"id",value:r}]});return}await e.delete({model:"session",where:[{field:"id",value:r}]})},deleteSessions:async r=>{if(u){if(typeof r=="string"){let t=await u.get(`active-sessions-${r}`),i=t?D(t):[];if(!i)return;for(let c of i)await u.delete(c.id)}else for(let t of r)await u.get(t)&&await u.delete(t);d.session?.storeSessionInDatabase&&await e.deleteMany({model:"session",where:[{field:Array.isArray(r)?"id":"userId",value:r,operator:Array.isArray(r)?"in":void 0}]});return}await e.deleteMany({model:"session",where:[{field:Array.isArray(r)?"id":"userId",value:r,operator:Array.isArray(r)?"in":void 0}]})},findUserByEmail:async(r,t)=>{let i=await e.findOne({model:"user",where:[{value:r.toLowerCase(),field:"email"}]});if(!i)return null;if(t?.includeAccounts){let c=await e.findMany({model:"account",where:[{value:i.id,field:"userId"}]});return{user:i,accounts:c}}return{user:i,accounts:[]}},findUserById:async r=>await e.findOne({model:"user",where:[{field:"id",value:r}]}),linkAccount:async r=>await g({id:T(),...r},"account"),updateUser:async(r,t)=>await m(t,[{field:"id",value:r}],"user"),updateUserByEmail:async(r,t)=>await m(t,[{field:"email",value:r}],"user"),updatePassword:async(r,t)=>{await A({password:t},[{field:"userId",value:r},{field:"providerId",value:"credential"}],"account")},findAccounts:async r=>await e.findMany({model:"account",where:[{field:"userId",value:r}]}),findAccount:async r=>await e.findOne({model:"account",where:[{field:"accountId",value:r}]}),findAccountByUserId:async r=>await e.findMany({model:"account",where:[{field:"userId",value:r}]}),updateAccount:async(r,t)=>await m(t,[{field:"id",value:r}],"account"),createVerificationValue:async r=>await g({id:T(),createdAt:new Date,...r},"verification"),findVerificationValue:async r=>(await e.findMany({model:"verification",where:[{field:"identifier",value:r}],sortBy:{field:"createdAt",direction:"desc"},limit:10}))[0],deleteVerificationValue:async r=>{await e.delete({model:"verification",where:[{field:"id",value:r}]})},deleteVerificationByIdentifier:async r=>{await e.delete({model:"verification",where:[{field:"identifier",value:r}]})},updateVerificationValue:async(r,t)=>await m(t,[{field:"id",value:r}],"verification")}};var se=(e,n)=>({type:e,...n});var k=e=>{let n=e.plugins?.reduce((r,t)=>{let i=t.schema;if(!i)return r;for(let[c,o]of Object.entries(i))r[c]={fields:{...r[c]?.fields,...o.fields},modelName:o.modelName||c};return r},{}),d=e.rateLimit?.storage==="database",u={rateLimit:{modelName:e.rateLimit?.modelName||"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:g,account:m,...A}=n||{};return{user:{modelName: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:{modelName: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},...g?.fields,...e.session?.additionalFields},order:2},account:{modelName: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"},...m?.fields},order:3},verification:{modelName: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"},createdAt:{type:"date",required:!1,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"}},order:4},...A,...d?u:{}}};var v=require("zod");function ae(e){return v.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]:v.z.array(p.type==="string[]"?v.z.string():v.z.number())};let g=v.z[p.type]();return p?.required===!1&&(g=g.optional()),p?.returned===!1?d:{...d,[u]:g}},{})})}var I=class extends Error{constructor(n,d){super(n),this.name="BetterAuthError",this.message=n,this.cause=d,this.stack=""}};var N=require("kysely"),w=require("kysely");function $(e){if("dialect"in e)return $(e.dialect);if("createDriver"in e){if(e instanceof w.SqliteDialect)return"sqlite";if(e instanceof w.MysqlDialect)return"mysql";if(e instanceof w.PostgresDialect)return"postgres";if(e instanceof N.MssqlDialect)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var R=async e=>{let n=e.database;if("db"in n)return{kysely:n.db,databaseType:n.type};if("dialect"in n)return{kysely:new N.Kysely({dialect:n.dialect}),databaseType:n.type};let d,u=$(n);return"createDriver"in n&&(d=n),"aggregate"in n&&(d=new w.SqliteDialect({database:n})),"getConnection"in n&&(d=new w.MysqlDialect(n)),"connect"in n&&(d=new w.PostgresDialect({pool:n})),{kysely:d?new N.Kysely({dialect:d}):null,databaseType:u}};var oe=(e,n,d)=>{let u=k(n);function p(t,i){if(i==="id")return i;let c=u[t].fields[i];return c||console.log("Field not found",t,i),c.fieldName||i}function g(t,i,c){let{type:o="sqlite"}=d||{},a=u[i].fields[c];return a.type==="boolean"&&o==="sqlite"?t?1:0:a.type==="date"&&t&&t instanceof Date&&o==="sqlite"?t.toISOString():t}function m(t,i,c){let{type:o="sqlite"}=d||{},a=u[i].fields[c];return a.type==="boolean"&&o==="sqlite"&&t!==null?t===1:a.type==="date"&&t?new Date(t):t}function A(t){return u[t].modelName}let r=d?.generateId!==!1;return{transformInput(t,i){let c=t.id&&r?{id:d?.generateId?d.generateId():t.id}:{};for(let o in t){let a=u[i].fields[o];a&&(c[a.fieldName||o]=g(t[o],i,o))}return c},transformOutput(t,i,c=[]){if(!t)return null;let o=t.id?c.length===0||c.includes("id")?{id:t.id}:{}:{},a=u[i].fields;for(let s in a){if(c.length&&!c.includes(s))continue;let l=a[s];l&&(o[s]=m(t[l.fieldName||s],i,s))}return o},convertWhereClause(t,i){if(!i)return{and:null,or:null};let c={and:[],or:[]};return i.forEach(o=>{let{field:a,value:s,operator:l="=",connector:y="AND"}=o,f=p(t,a),h=b=>l.toLowerCase()==="in"?b(f,"in",Array.isArray(s)?s:[s]):l==="contains"?b(f,"like",`%${s}%`):l==="starts_with"?b(f,"like",`${s}%`):l==="ends_with"?b(f,"like",`%${s}`):l==="eq"?b(f,"=",s):l==="ne"?b(f,"<>",s):l==="gt"?b(f,">",s):l==="gte"?b(f,">=",s):l==="lt"?b(f,"<",s):l==="lte"?b(f,"<=",s):b(f,l,s);y==="OR"?c.or.push(h):c.and.push(h)}),{and:c.and.length?c.and:null,or:c.or.length?c.or:null}},async withReturning(t,i,c,o){let a;if(d?.type!=="mysql")a=await i.returningAll().executeTakeFirst();else{await i.execute();let s=t.id?"id":o[0].field?o[0].field:"id",l=t[s]||o[0].value;a=await e.selectFrom(A(c)).selectAll().where(p(c,s),"=",l).executeTakeFirst()}return a},getModelName:A,getField:p}},_=(e,n)=>d=>{let{transformInput:u,withReturning:p,transformOutput:g,convertWhereClause:m,getModelName:A,getField:r}=oe(e,d,n);return{id:"kysely",async create(t){let{model:i,data:c,select:o}=t,a=u(c,i),s=e.insertInto(A(i)).values(a);return g(await p(a,s,i,[]),i,o)},async findOne(t){let{model:i,where:c,select:o}=t,{and:a,or:s}=m(i,c),l=e.selectFrom(A(i)).selectAll();a&&(l=l.where(f=>f.and(a.map(h=>h(f))))),s&&(l=l.where(f=>f.or(s.map(h=>h(f)))));let y=await l.executeTakeFirst();return y?g(y,i,o):null},async findMany(t){let{model:i,where:c,limit:o,offset:a,sortBy:s}=t,{and:l,or:y}=m(i,c),f=e.selectFrom(A(i));l&&(f=f.where(b=>b.and(l.map(F=>F(b))))),y&&(f=f.where(b=>b.or(y.map(F=>F(b))))),f=f.limit(o||100),a&&(f=f.offset(a)),s&&(f=f.orderBy(r(i,s.field),s.direction));let h=await f.selectAll().execute();return h?h.map(b=>g(b,i)):[]},async update(t){let{model:i,where:c,update:o}=t,{and:a,or:s}=m(i,c),l=u(o,i),y=e.updateTable(A(i)).set(l);return a&&(y=y.where(f=>f.and(a.map(h=>h(f))))),s&&(y=y.where(f=>f.or(s.map(h=>h(f))))),g(await p(l,y,i,c),i)},async updateMany(t){let{model:i,where:c,update:o}=t,{and:a,or:s}=m(i,c),l=u(o,i),y=e.updateTable(A(i)).set(l);return a&&(y=y.where(h=>h.and(a.map(b=>b(h))))),s&&(y=y.where(h=>h.or(s.map(b=>b(h))))),(await y.execute()).length},async delete(t){let{model:i,where:c}=t,{and:o,or:a}=m(i,c),s=e.deleteFrom(A(i));o&&(s=s.where(l=>l.and(o.map(y=>y(l))))),a&&(s=s.where(l=>l.or(a.map(y=>y(l))))),await s.execute()},async deleteMany(t){let{model:i,where:c}=t,{and:o,or:a}=m(i,c),s=e.deleteFrom(A(i));return o&&(s=s.where(l=>l.and(o.map(y=>y(l))))),a&&(s=s.where(l=>l.or(a.map(y=>y(l))))),(await s.execute()).length},options:n}};async function de(e){if(!e.database)throw new I("Database configuration is required");if(typeof e.database=="function")return e.database(e);let{kysely:n,databaseType:d}=await R(e);if(!n)throw new I("Failed to initialize database adapter");return _(n,{generateId:"generateId"in e.database?e.database.generateId:void 0,type:d||"sqlite"})(e)}function le(e,n){let d=n.id?{id:n.id}:{};for(let u in e){let p=e[u],g=n[u];g!==void 0&&(d[p.fieldName||u]=g)}return d}function ue(e,n){if(!n)return null;let d={id:n.id};for(let[u,p]of Object.entries(e))d[u]=n[p.fieldName||u];return d}var J=require("consola"),M=["info","success","warn","error","debug"];function ce(e,n){return M.indexOf(n)<=M.indexOf(e)}var fe=(0,J.createConsola)({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),U=e=>{let n=e?.disabled!==!0,d=e?.level??"error",u=(p,g,m=[])=>{if(!(!n||!ce(d,p))){if(!e||typeof e.log!="function"){fe[p]("",g,...m);return}e.log(p==="success"?"info":p,g,m)}};return Object.fromEntries(M.map(p=>[p,(...[g,...m])=>u(p,g,m)]))},nt=U();function j(e){let n=k(e),d={};for(let u in n){let p=n[u],g=p.fields,m={};if(Object.entries(g).forEach(([A,r])=>{if(m[r.fieldName||A]=r,r.references){let t=n[r.references.model];t&&(m[r.fieldName||A].references={model:t.modelName,field:r.references.field})}}),d[p.modelName]){d[p.modelName].fields={...d[p.modelName].fields,...m};continue}d[p.modelName]={fields:m,order:p.order||1/0}}return d}var pe={string:["character varying","text"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamp","date"]},ye={string:["varchar","text"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"]},me={string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"]},ge={string:["nvarchar","varchar"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","boolean"],date:["datetime","date"]},he={postgres:pe,mysql:ye,sqlite:me,mssql:ge};function z(e,n,d){return n==="string[]"||n==="number[]"?e.toLowerCase().includes("json"):he[d][n].map(m=>m.toLowerCase()).includes(e.toLowerCase())}async function Ae(e){let n=j(e),d=U(e.logger),{kysely:u,databaseType:p}=await R(e);p||(d.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),p="sqlite"),u||(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 g=await u.introspection.getTables(),m=[],A=[];for(let[o,a]of Object.entries(n)){let s=g.find(y=>y.name===o);if(!s){let y=m.findIndex(b=>b.table===o),f={table:o,fields:a.fields,order:a.order||1/0},h=m.findIndex(b=>(b.order||1/0)>f.order);h===-1?y===-1?m.push(f):m[y].fields={...m[y].fields,...a.fields}:m.splice(h,0,f);continue}let l={};for(let[y,f]of Object.entries(a.fields)){let h=s.columns.find(b=>b.name===y);if(!h){l[y]=f;continue}z(h.dataType,f.type,p)||d.warn(`Field ${y} in table ${o} has a different type in the database. Expected ${f.type} but got ${h.dataType}.`)}Object.keys(l).length>0&&A.push({table:o,fields:l,order:a.order||1/0})}let r=[];function t(o){let a=o.type,s={string:{sqlite:"text",postgres:"text",mysql:o.unique?"varchar(255)":o.references?"varchar(36)":"text",mssql:"text"},boolean:{sqlite:"integer",postgres:"boolean",mysql:"boolean",mssql:"boolean"},number:{sqlite:"integer",postgres:"integer",mysql:"integer",mssql:"integer"},date:{sqlite:"date",postgres:"timestamp",mysql:"datetime",mssql:"datetime"}};return p==="sqlite"&&(a==="string[]"||a==="number[]")?"text":a==="string[]"||a==="number[]"?"jsonb":s[a][p||"sqlite"]}if(A.length)for(let o of A)for(let[a,s]of Object.entries(o.fields)){let l=t(s),y=u.schema.alterTable(o.table).addColumn(a,l,f=>(f=s.required!==!1?f.notNull():f,s.references&&(f=f.references(`${s.references.model}.${s.references.field}`)),f));r.push(y)}if(m.length)for(let o of m){let a=u.schema.createTable(o.table).addColumn("id",p==="mysql"?"varchar(36)":"text",s=>s.primaryKey().notNull());for(let[s,l]of Object.entries(o.fields)){let y=t(l);a=a.addColumn(s,y,f=>(f=l.required!==!1?f.notNull():f,l.references&&(f=f.references(`${l.references.model}.${l.references.field}`)),l.unique&&(f=f.unique()),f))}r.push(a)}async function i(){for(let o of r)await o.execute()}async function c(){return r.map(a=>a.compile().sql).join(`;
|
|
2
2
|
|
|
3
3
|
`)}return{toBeCreated:m,toBeAdded:A,runMigrations:i,compileMigrations:c}}0&&(module.exports={convertFromDB,convertToDB,createFieldAttribute,createInternalAdapter,getAdapter,getAuthTables,getMigrations,getSchema,getWithHooks,matchType,toZodSchema});
|
package/dist/db.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var D=(e,a="ms")=>new Date(Date.now()+(a==="sec"?e*1e3:e));import{z as x}from"zod";var ue=x.object({id:x.string(),providerId:x.string(),accountId:x.string(),userId:x.string(),accessToken:x.string().nullish(),refreshToken:x.string().nullish(),idToken:x.string().nullish(),expiresAt:x.date().nullish(),password:x.string().nullish()}),ce=x.object({id:x.string(),email:x.string().transform(e=>e.toLowerCase()),emailVerified:x.boolean().default(!1),name:x.string(),image:x.string().nullish(),createdAt:x.date().default(new Date),updatedAt:x.date().default(new Date)}),fe=x.object({id:x.string(),userId:x.string(),expiresAt:x.date(),ipAddress:x.string().nullish(),userAgent:x.string().nullish()}),pe=x.object({id:x.string(),value:x.string(),createdAt:x.date(),expiresAt:x.date(),identifier:x.string()});function L(e,a){let l=a.fields,u={};for(let p in e){let g=l[p];if(!g){u[p]=e[p];continue}g.returned!==!1&&(u[p]=e[p])}return u}function P(e,a){let l={...a==="user"?e.user?.additionalFields:{},...a==="session"?e.session?.additionalFields:{}};for(let u of e.plugins||[])u.schema&&u.schema[a]&&(l={...l,...u.schema[a].fields});return l}function R(e,a){let l=P(e,"user");return L(a,{fields:l})}function k(e,a){let l=P(e,"session");return L(a,{fields:l})}import{nanoid as J}from"nanoid";var w=e=>J(e);function M(e,a){let l=a.hooks;async function u(m,A,r){let t=m;for(let o of l||[]){let s=o[A]?.create?.before;if(s){let i=await s(m);if(i===!1)return null;typeof i=="object"&&"data"in i&&(t=i.data)}}let n=r?await r.fn(t):null,c=!r||r.executeMainFn?await e.create({model:A,data:t}):n;for(let o of l||[]){let s=o[A]?.create?.after;s&&await s(c)}return c}async function p(m,A,r,t){let n=m;for(let s of l||[]){let i=s[r]?.update?.before;if(i){let d=await i(m);if(d===!1)return null;n=typeof d=="object"?d.data:d}}let c=t?await t.fn(n):null,o=!t||t.executeMainFn?await e.update({model:r,update:n,where:A}):c;for(let s of l||[]){let i=s[r]?.update?.after;i&&await i(o)}return o}async function g(m,A,r,t){let n=m;for(let s of l||[]){let i=s[r]?.update?.before;if(i){let d=await i(m);if(d===!1)return null;n=typeof d=="object"?d.data:d}}let c=t?await t.fn(n):null,o=!t||t.executeMainFn?await e.updateMany({model:r,update:n,where:A}):c;for(let s of l||[]){let i=s[r]?.update?.after;i&&await i(o)}return o}return{createWithHooks:u,updateWithHooks:p,updateManyWithHooks:g}}var I=Object.create(null),T=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?I:globalThis),z=new Proxy(I,{get(e,a){return T()[a]??I[a]},has(e,a){let l=T();return a in l||a in I},set(e,a,l){let u=T(!0);return u[a]=l,!0},deleteProperty(e,a){if(!a)return!1;let l=T(!0);return delete l[a],!0},ownKeys(){let e=T(!0);return Object.keys(e)}});function Z(e){return e?e!=="false":!1}var G=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var U=G==="test"||Z(z.TEST);function j(e,a){if(a.advanced?.ipAddress?.disableIpTracking)return null;let l="127.0.0.1";if(U)return l;let p=a.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"],g=e instanceof Request?e.headers:e;for(let m of p){let A=g.get(m);if(typeof A=="string"){let r=A.split(",")[0].trim();if(r)return r}}return null}function N(e){try{return JSON.parse(e)}catch{return null}}var Ne=(e,a)=>{let l=a.options,u=l.secondaryStorage,p=l.session?.expiresIn||60*60*24*7,{createWithHooks:g,updateWithHooks:m,updateManyWithHooks:A}=M(e,a);return{createOAuthUser:async(r,t)=>{try{let n=await g({id:w(),createdAt:new Date,updatedAt:new Date,...r},"user"),c=await g({id:w(),...t,userId:n.id||r.id},"account");return{user:n,account:c}}catch(n){return console.log(n),null}},createUser:async r=>await g({id:w(),createdAt:new Date,updatedAt:new Date,emailVerified:!1,...r},"user"),createAccount:async r=>await g({id:w(),createdAt:new Date,updatedAt:new Date,...r},"account"),listSessions:async r=>{if(u){let n=await u.get(`active-sessions-${r}`);if(!n)return[];let c=N(n)||[],o=Date.now(),s=c.filter(d=>d.expiresAt>o),i=[];for(let d of s){let y=await u.get(d.id);if(y){let f=JSON.parse(y),h=k(a.options,{...f.session,expiresAt:new Date(f.session.expiresAt)});i.push(h)}}return i}return await e.findMany({model:"session",where:[{field:"userId",value:r}]})},listUsers:async(r,t,n,c)=>await e.findMany({model:"user",limit:r,offset:t,sortBy:n,where:c}),deleteUser:async r=>{await e.deleteMany({model:"session",where:[{field:"userId",value:r}]}),await e.deleteMany({model:"account",where:[{field:"userId",value:r}]}),await e.delete({model:"user",where:[{field:"id",value:r}]})},createSession:async(r,t,n,c)=>{let o=t instanceof Request?t.headers:t,s={id:w(32),userId:r,expiresAt:n?D(60*60*24,"sec"):D(p,"sec"),ipAddress:t&&j(t,a.options)||"",userAgent:o?.get("user-agent")||"",...c};return await g(s,"session",u?{fn:async d=>{let y=await e.findOne({model:"user",where:[{field:"id",value:r}]});u.set(d.id,JSON.stringify({session:d,user:y}),p);let f=await u.get(`active-sessions-${r}`),h=[],b=Date.now();return f&&(h=N(f)||[],h=h.filter(v=>v.expiresAt>b)),h.push({id:d.id,expiresAt:b+p*1e3}),await u.set(`active-sessions-${r}`,JSON.stringify(h),p),d},executeMainFn:l.session?.storeSessionInDatabase}:void 0)},findSession:async r=>{if(u){let o=await u.get(r);if(o){let s=JSON.parse(o),i=k(a.options,{...s.session,expiresAt:new Date(s.session.expiresAt)}),d=R(a.options,{...s.user,createdAt:new Date(s.user.createdAt),updatedAt:new Date(s.user.updatedAt)});return{session:i,user:d}}}let t=await e.findOne({model:"session",where:[{value:r,field:"id"}]});if(!t)return null;let n=await e.findOne({model:"user",where:[{value:t.userId,field:"id"}]});if(!n)return null;let c=R(a.options,n);return{session:k(a.options,t),user:c}},findSessions:async r=>{if(u){let o=[];for(let s of r){let i=await u.get(s);if(i){let d=JSON.parse(i),y={session:{...d.session,expiresAt:new Date(d.session.expiresAt)},user:{...d.user,createdAt:new Date(d.user.createdAt),updatedAt:new Date(d.user.updatedAt)}};o.push(y)}}return o}let t=await e.findMany({model:"session",where:[{field:"id",value:r,operator:"in"}]}),n=t.map(o=>o.userId);if(!n.length)return[];let c=await e.findMany({model:"user",where:[{field:"id",value:n,operator:"in"}]});return t.map(o=>{let s=c.find(i=>i.id===o.userId);return s?{session:o,user:s}:null})},updateSession:async(r,t)=>await m(t,[{field:"id",value:r}],"session",u?{async fn(c){let o=await u.get(r),s=null;if(o){let i=JSON.parse(o);s={...i.session,...c},await u.set(r,JSON.stringify({session:s,user:i.user}),i.session.expiresAt?Math.floor((i.session.expiresAt.getTime()-Date.now())/1e3):p)}else return null},executeMainFn:l.session?.storeSessionInDatabase}:void 0),deleteSession:async r=>{if(u){await u.delete(r),l.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"id",value:r}]});return}await e.delete({model:"session",where:[{field:"id",value:r}]})},deleteSessions:async r=>{if(u){if(typeof r=="string"){let t=await u.get(`active-sessions-${r}`),n=t?N(t):[];if(!n)return;for(let c of n)await u.delete(c.id)}else for(let t of r)await u.get(t)&&await u.delete(t);l.session?.storeSessionInDatabase&&await e.deleteMany({model:"session",where:[{field:Array.isArray(r)?"id":"userId",value:r,operator:Array.isArray(r)?"in":void 0}]});return}await e.deleteMany({model:"session",where:[{field:Array.isArray(r)?"id":"userId",value:r,operator:Array.isArray(r)?"in":void 0}]})},findUserByEmail:async(r,t)=>{let n=await e.findOne({model:"user",where:[{value:r.toLowerCase(),field:"email"}]});if(!n)return null;if(t?.includeAccounts){let c=await e.findMany({model:"account",where:[{value:n.id,field:"userId"}]});return{user:n,accounts:c}}return{user:n,accounts:[]}},findUserById:async r=>await e.findOne({model:"user",where:[{field:"id",value:r}]}),linkAccount:async r=>await g({id:w(),...r},"account"),updateUser:async(r,t)=>await m(t,[{field:"id",value:r}],"user"),updateUserByEmail:async(r,t)=>await m(t,[{field:"email",value:r}],"user"),updatePassword:async(r,t)=>{await A({password:t},[{field:"userId",value:r},{field:"providerId",value:"credential"}],"account")},findAccounts:async r=>await e.findMany({model:"account",where:[{field:"userId",value:r}]}),findAccount:async r=>await e.findOne({model:"account",where:[{field:"accountId",value:r}]}),findAccountByUserId:async r=>await e.findMany({model:"account",where:[{field:"userId",value:r}]}),updateAccount:async(r,t)=>await m(t,[{field:"id",value:r}],"account"),createVerificationValue:async r=>await g({id:w(),createdAt:new Date,...r},"verification"),findVerificationValue:async r=>(await e.findMany({model:"verification",where:[{field:"identifier",value:r}],sortBy:{field:"createdAt",direction:"desc"},limit:10}))[0],deleteVerificationValue:async r=>{await e.delete({model:"verification",where:[{field:"id",value:r}]})},deleteVerificationByIdentifier:async r=>{await e.delete({model:"verification",where:[{field:"identifier",value:r}]})},updateVerificationValue:async(r,t)=>await m(t,[{field:"id",value:r}],"verification")}};var Se=(e,a)=>({type:e,...a});var q=e=>{let a=e.plugins?.reduce((r,t)=>{let n=t.schema;if(!n)return r;for(let[c,o]of Object.entries(n))r[c]={fields:{...r[c]?.fields,...o.fields},modelName:o.modelName||c};return r},{}),l=e.rateLimit?.storage==="database",u={rateLimit:{modelName:e.rateLimit?.modelName||"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:g,account:m,...A}=a||{};return{user:{modelName: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:{modelName: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},...g?.fields,...e.session?.additionalFields},order:2},account:{modelName: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"},...m?.fields},order:3},verification:{modelName: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"},createdAt:{type:"date",required:!1,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"}},order:4},...A,...l?u:{}}};import{z as F}from"zod";function Ve(e){return F.object({...Object.keys(e).reduce((l,u)=>{let p=e[u];if(!p)return l;if(p.type==="string[]"||p.type==="number[]")return{...l,[u]:F.array(p.type==="string[]"?F.string():F.number())};let g=F[p.type]();return p?.required===!1&&(g=g.optional()),p?.returned===!1?l:{...l,[u]:g}},{})})}var O=class extends Error{constructor(a,l){super(a),this.name="BetterAuthError",this.message=a,this.cause=l,this.stack=""}};import{Kysely as K,MssqlDialect as Q}from"kysely";import{MysqlDialect as E,PostgresDialect as C,SqliteDialect as H}from"kysely";function W(e){if("dialect"in e)return W(e.dialect);if("createDriver"in e){if(e instanceof H)return"sqlite";if(e instanceof E)return"mysql";if(e instanceof C)return"postgres";if(e instanceof Q)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var S=async e=>{let a=e.database;if("db"in a)return{kysely:a.db,databaseType:a.type};if("dialect"in a)return{kysely:new K({dialect:a.dialect}),databaseType:a.type};let l,u=W(a);return"createDriver"in a&&(l=a),"aggregate"in a&&(l=new H({database:a})),"getConnection"in a&&(l=new E(a)),"connect"in a&&(l=new C({pool:a})),{kysely:l?new K({dialect:l}):null,databaseType:u}};var X=(e,a,l)=>{let u=q(a);function p(t,n){if(n==="id")return n;let c=u[t].fields[n];return c||console.log("Field not found",t,n),c.fieldName||n}function g(t,n,c){let{type:o="sqlite"}=l||{},s=u[n].fields[c];return s.type==="boolean"&&o==="sqlite"?t?1:0:s.type==="date"&&t&&t instanceof Date&&o==="sqlite"?t.toISOString():t}function m(t,n,c){let{type:o="sqlite"}=l||{},s=u[n].fields[c];return s.type==="boolean"&&o==="sqlite"&&t!==null?t===1:s.type==="date"&&t?new Date(t):t}function A(t){return u[t].modelName}let r=l?.generateId!==!1;return{transformInput(t,n){let c=t.id&&r?{id:l?.generateId?l.generateId():t.id}:{};for(let o in t){let s=u[n].fields[o];s&&(c[s.fieldName||o]=g(t[o],n,o))}return c},transformOutput(t,n,c=[]){if(!t)return null;let o=t.id?c.length===0||c.includes("id")?{id:t.id}:{}:{},s=u[n].fields;for(let i in s){if(c.length&&!c.includes(i))continue;let d=s[i];d&&(o[i]=m(t[d.fieldName||i],n,i))}return o},convertWhereClause(t,n){if(!n)return{and:null,or:null};let c={and:[],or:[]};return n.forEach(o=>{let{field:s,value:i,operator:d="=",connector:y="AND"}=o,f=p(t,s),h=b=>d.toLowerCase()==="in"?b(f,"in",Array.isArray(i)?i:[i]):d==="contains"?b(f,"like",`%${i}%`):d==="starts_with"?b(f,"like",`${i}%`):d==="ends_with"?b(f,"like",`%${i}`):d==="eq"?b(f,"=",i):d==="ne"?b(f,"<>",i):d==="gt"?b(f,">",i):d==="gte"?b(f,">=",i):d==="lt"?b(f,"<",i):d==="lte"?b(f,"<=",i):b(f,d,i);y==="OR"?c.or.push(h):c.and.push(h)}),{and:c.and.length?c.and:null,or:c.or.length?c.or:null}},async withReturning(t,n,c,o){let s;if(l?.type!=="mysql")s=await n.returningAll().executeTakeFirst();else{await n.execute();let i=t.id?"id":o[0].field?o[0].field:"id",d=t[i]||o[0].value;s=await e.selectFrom(A(c)).selectAll().where(p(c,i),"=",d).executeTakeFirst()}return s},getModelName:A,getField:p}},$=(e,a)=>l=>{let{transformInput:u,withReturning:p,transformOutput:g,convertWhereClause:m,getModelName:A,getField:r}=X(e,l,a);return{id:"kysely",async create(t){let{model:n,data:c,select:o}=t,s=u(c,n),i=e.insertInto(A(n)).values(s);return g(await p(s,i,n,[]),n,o)},async findOne(t){let{model:n,where:c,select:o}=t,{and:s,or:i}=m(n,c),d=e.selectFrom(A(n)).selectAll();s&&(d=d.where(f=>f.and(s.map(h=>h(f))))),i&&(d=d.where(f=>f.or(i.map(h=>h(f)))));let y=await d.executeTakeFirst();return y?g(y,n,o):null},async findMany(t){let{model:n,where:c,limit:o,offset:s,sortBy:i}=t,{and:d,or:y}=m(n,c),f=e.selectFrom(A(n));d&&(f=f.where(b=>b.and(d.map(v=>v(b))))),y&&(f=f.where(b=>b.or(y.map(v=>v(b))))),f=f.limit(o||100),s&&(f=f.offset(s)),i&&(f=f.orderBy(r(n,i.field),i.direction));let h=await f.selectAll().execute();return h?h.map(b=>g(b,n)):[]},async update(t){let{model:n,where:c,update:o}=t,{and:s,or:i}=m(n,c),d=u(o,n),y=e.updateTable(A(n)).set(d);return s&&(y=y.where(f=>f.and(s.map(h=>h(f))))),i&&(y=y.where(f=>f.or(i.map(h=>h(f))))),g(await p(d,y,n,c),n)},async updateMany(t){let{model:n,where:c,update:o}=t,{and:s,or:i}=m(n,c),d=u(o,n),y=e.updateTable(A(n)).set(d);return s&&(y=y.where(h=>h.and(s.map(b=>b(h))))),i&&(y=y.where(h=>h.or(i.map(b=>b(h))))),(await y.execute()).length},async delete(t){let{model:n,where:c}=t,{and:o,or:s}=m(n,c),i=e.deleteFrom(A(n));o&&(i=i.where(d=>d.and(o.map(y=>y(d))))),s&&(i=i.where(d=>d.or(s.map(y=>y(d))))),await i.execute()},async deleteMany(t){let{model:n,where:c}=t,{and:o,or:s}=m(n,c),i=e.deleteFrom(A(n));return o&&(i=i.where(d=>d.and(o.map(y=>y(d))))),s&&(i=i.where(d=>d.or(s.map(y=>y(d))))),(await i.execute()).length},options:a}};async function Qe(e){if(!e.database)throw new O("Database configuration is required");if(typeof e.database=="function")return e.database(e);let{kysely:a,databaseType:l}=await S(e);if(!a)throw new O("Failed to initialize database adapter");return $(a,{generateId:"generateId"in e.database?e.database.generateId:void 0,type:l||"sqlite"})(e)}function Xe(e,a){let l=a.id?{id:a.id}:{};for(let u in e){let p=e[u],g=a[u];g!==void 0&&(l[p.fieldName||u]=g)}return l}function Ye(e,a){if(!a)return null;let l={id:a.id};for(let[u,p]of Object.entries(e))l[u]=a[p.fieldName||u];return l}import{createConsola as Y}from"consola";var B=["info","success","warn","error","debug"];function ee(e,a){return B.indexOf(a)<=B.indexOf(e)}var te=Y({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),V=e=>{let a=e?.disabled!==!0,l=e?.level??"error",u=(p,g,m=[])=>{if(!(!a||!ee(l,p))){if(!e||typeof e.log!="function"){te[p]("",g,...m);return}e.log(p==="success"?"info":p,g,m)}};return Object.fromEntries(B.map(p=>[p,(...[g,...m])=>u(p,g,m)]))},rt=V();function _(e){let a=q(e),l={};for(let u in a){let p=a[u],g=p.fields,m={};if(Object.entries(g).forEach(([A,r])=>{m[r.fieldName||A]=r}),l[p.modelName]){l[p.modelName].fields={...l[p.modelName].fields,...m};continue}l[p.modelName]={fields:m,order:p.order||1/0}}return l}var re={string:["character varying","text"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamp","date"]},ne={string:["varchar","text"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"]},ie={string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"]},se={string:["nvarchar","varchar"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","boolean"],date:["datetime","date"]},ae={postgres:re,mysql:ne,sqlite:ie,mssql:se};function oe(e,a,l){return a==="string[]"||a==="number[]"?e.toLowerCase().includes("json"):ae[l][a].map(m=>m.toLowerCase()).includes(e.toLowerCase())}async function lt(e){let a=_(e),l=V(e.logger),{kysely:u,databaseType:p}=await S(e);p||(l.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),p="sqlite"),u||(l.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 g=await u.introspection.getTables(),m=[],A=[];for(let[o,s]of Object.entries(a)){let i=g.find(y=>y.name===o);if(!i){let y=m.findIndex(b=>b.table===o),f={table:o,fields:s.fields,order:s.order||1/0},h=m.findIndex(b=>(b.order||1/0)>f.order);h===-1?y===-1?m.push(f):m[y].fields={...m[y].fields,...s.fields}:m.splice(h,0,f);continue}let d={};for(let[y,f]of Object.entries(s.fields)){let h=i.columns.find(b=>b.name===y);if(!h){d[y]=f;continue}oe(h.dataType,f.type,p)||l.warn(`Field ${y} in table ${o} has a different type in the database. Expected ${f.type} but got ${h.dataType}.`)}Object.keys(d).length>0&&A.push({table:o,fields:d,order:s.order||1/0})}let r=[];function t(o){let s=o.type,i={string:{sqlite:"text",postgres:"text",mysql:o.unique?"varchar(255)":o.references?"varchar(36)":"text",mssql:"text"},boolean:{sqlite:"integer",postgres:"boolean",mysql:"boolean",mssql:"boolean"},number:{sqlite:"integer",postgres:"integer",mysql:"integer",mssql:"integer"},date:{sqlite:"date",postgres:"timestamp",mysql:"datetime",mssql:"datetime"}};return p==="sqlite"&&(s==="string[]"||s==="number[]")?"text":s==="string[]"||s==="number[]"?"jsonb":i[s][p||"sqlite"]}if(A.length)for(let o of A)for(let[s,i]of Object.entries(o.fields)){let d=t(i),y=u.schema.alterTable(o.table).addColumn(s,d,f=>(f=i.required!==!1?f.notNull():f,i.references&&(f=f.references(`${i.references.model}.${i.references.field}`)),f));r.push(y)}if(m.length)for(let o of m){let s=u.schema.createTable(o.table).addColumn("id",p==="mysql"?"varchar(36)":"text",i=>i.primaryKey().notNull());for(let[i,d]of Object.entries(o.fields)){let y=t(d);s=s.addColumn(i,y,f=>(f=d.required!==!1?f.notNull():f,d.references&&(f=f.references(`${d.references.model}.${d.references.field}`)),d.unique&&(f=f.unique()),f))}r.push(s)}async function n(){for(let o of r)await o.execute()}async function c(){return r.map(s=>s.compile().sql).join(`;
|
|
1
|
+
var D=(e,s="ms")=>new Date(Date.now()+(s==="sec"?e*1e3:e));import{z as x}from"zod";var ue=x.object({id:x.string(),providerId:x.string(),accountId:x.string(),userId:x.string(),accessToken:x.string().nullish(),refreshToken:x.string().nullish(),idToken:x.string().nullish(),expiresAt:x.date().nullish(),password:x.string().nullish()}),ce=x.object({id:x.string(),email:x.string().transform(e=>e.toLowerCase()),emailVerified:x.boolean().default(!1),name:x.string(),image:x.string().nullish(),createdAt:x.date().default(new Date),updatedAt:x.date().default(new Date)}),fe=x.object({id:x.string(),userId:x.string(),expiresAt:x.date(),ipAddress:x.string().nullish(),userAgent:x.string().nullish()}),pe=x.object({id:x.string(),value:x.string(),createdAt:x.date(),expiresAt:x.date(),identifier:x.string()});function L(e,s){let l=s.fields,u={};for(let p in e){let g=l[p];if(!g){u[p]=e[p];continue}g.returned!==!1&&(u[p]=e[p])}return u}function P(e,s){let l={...s==="user"?e.user?.additionalFields:{},...s==="session"?e.session?.additionalFields:{}};for(let u of e.plugins||[])u.schema&&u.schema[s]&&(l={...l,...u.schema[s].fields});return l}function R(e,s){let l=P(e,"user");return L(s,{fields:l})}function k(e,s){let l=P(e,"session");return L(s,{fields:l})}import{nanoid as J}from"nanoid";var w=e=>J(e);function M(e,s){let l=s.hooks;async function u(m,A,r){let t=m;for(let o of l||[]){let a=o[A]?.create?.before;if(a){let i=await a(m);if(i===!1)return null;typeof i=="object"&&"data"in i&&(t=i.data)}}let n=r?await r.fn(t):null,c=!r||r.executeMainFn?await e.create({model:A,data:t}):n;for(let o of l||[]){let a=o[A]?.create?.after;a&&await a(c)}return c}async function p(m,A,r,t){let n=m;for(let a of l||[]){let i=a[r]?.update?.before;if(i){let d=await i(m);if(d===!1)return null;n=typeof d=="object"?d.data:d}}let c=t?await t.fn(n):null,o=!t||t.executeMainFn?await e.update({model:r,update:n,where:A}):c;for(let a of l||[]){let i=a[r]?.update?.after;i&&await i(o)}return o}async function g(m,A,r,t){let n=m;for(let a of l||[]){let i=a[r]?.update?.before;if(i){let d=await i(m);if(d===!1)return null;n=typeof d=="object"?d.data:d}}let c=t?await t.fn(n):null,o=!t||t.executeMainFn?await e.updateMany({model:r,update:n,where:A}):c;for(let a of l||[]){let i=a[r]?.update?.after;i&&await i(o)}return o}return{createWithHooks:u,updateWithHooks:p,updateManyWithHooks:g}}var I=Object.create(null),v=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?I:globalThis),z=new Proxy(I,{get(e,s){return v()[s]??I[s]},has(e,s){let l=v();return s in l||s in I},set(e,s,l){let u=v(!0);return u[s]=l,!0},deleteProperty(e,s){if(!s)return!1;let l=v(!0);return delete l[s],!0},ownKeys(){let e=v(!0);return Object.keys(e)}});function Z(e){return e?e!=="false":!1}var G=typeof process<"u"&&process.env&&process.env.NODE_ENV||"";var U=G==="test"||Z(z.TEST);function j(e,s){if(s.advanced?.ipAddress?.disableIpTracking)return null;let l="127.0.0.1";if(U)return l;let p=s.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"],g=e instanceof Request?e.headers:e;for(let m of p){let A=g.get(m);if(typeof A=="string"){let r=A.split(",")[0].trim();if(r)return r}}return null}function N(e){try{return JSON.parse(e)}catch{return null}}var Ne=(e,s)=>{let l=s.options,u=l.secondaryStorage,p=l.session?.expiresIn||60*60*24*7,{createWithHooks:g,updateWithHooks:m,updateManyWithHooks:A}=M(e,s);return{createOAuthUser:async(r,t)=>{try{let n=await g({id:w(),createdAt:new Date,updatedAt:new Date,...r},"user"),c=await g({id:w(),...t,userId:n.id||r.id},"account");return{user:n,account:c}}catch(n){return console.log(n),null}},createUser:async r=>await g({id:w(),createdAt:new Date,updatedAt:new Date,emailVerified:!1,...r},"user"),createAccount:async r=>await g({id:w(),createdAt:new Date,updatedAt:new Date,...r},"account"),listSessions:async r=>{if(u){let n=await u.get(`active-sessions-${r}`);if(!n)return[];let c=N(n)||[],o=Date.now(),a=c.filter(d=>d.expiresAt>o),i=[];for(let d of a){let y=await u.get(d.id);if(y){let f=JSON.parse(y),h=k(s.options,{...f.session,expiresAt:new Date(f.session.expiresAt)});i.push(h)}}return i}return await e.findMany({model:"session",where:[{field:"userId",value:r}]})},listUsers:async(r,t,n,c)=>await e.findMany({model:"user",limit:r,offset:t,sortBy:n,where:c}),deleteUser:async r=>{await e.deleteMany({model:"session",where:[{field:"userId",value:r}]}),await e.deleteMany({model:"account",where:[{field:"userId",value:r}]}),await e.delete({model:"user",where:[{field:"id",value:r}]})},createSession:async(r,t,n,c)=>{let o=t instanceof Request?t.headers:t,a={id:w(32),userId:r,expiresAt:n?D(60*60*24,"sec"):D(p,"sec"),ipAddress:t&&j(t,s.options)||"",userAgent:o?.get("user-agent")||"",...c};return await g(a,"session",u?{fn:async d=>{let y=await e.findOne({model:"user",where:[{field:"id",value:r}]});u.set(d.id,JSON.stringify({session:d,user:y}),p);let f=await u.get(`active-sessions-${r}`),h=[],b=Date.now();return f&&(h=N(f)||[],h=h.filter(T=>T.expiresAt>b)),h.push({id:d.id,expiresAt:b+p*1e3}),await u.set(`active-sessions-${r}`,JSON.stringify(h),p),d},executeMainFn:l.session?.storeSessionInDatabase}:void 0)},findSession:async r=>{if(u){let o=await u.get(r);if(o){let a=JSON.parse(o),i=k(s.options,{...a.session,expiresAt:new Date(a.session.expiresAt)}),d=R(s.options,{...a.user,createdAt:new Date(a.user.createdAt),updatedAt:new Date(a.user.updatedAt)});return{session:i,user:d}}}let t=await e.findOne({model:"session",where:[{value:r,field:"id"}]});if(!t)return null;let n=await e.findOne({model:"user",where:[{value:t.userId,field:"id"}]});if(!n)return null;let c=R(s.options,n);return{session:k(s.options,t),user:c}},findSessions:async r=>{if(u){let o=[];for(let a of r){let i=await u.get(a);if(i){let d=JSON.parse(i),y={session:{...d.session,expiresAt:new Date(d.session.expiresAt)},user:{...d.user,createdAt:new Date(d.user.createdAt),updatedAt:new Date(d.user.updatedAt)}};o.push(y)}}return o}let t=await e.findMany({model:"session",where:[{field:"id",value:r,operator:"in"}]}),n=t.map(o=>o.userId);if(!n.length)return[];let c=await e.findMany({model:"user",where:[{field:"id",value:n,operator:"in"}]});return t.map(o=>{let a=c.find(i=>i.id===o.userId);return a?{session:o,user:a}:null})},updateSession:async(r,t)=>await m(t,[{field:"id",value:r}],"session",u?{async fn(c){let o=await u.get(r),a=null;if(o){let i=JSON.parse(o);a={...i.session,...c},await u.set(r,JSON.stringify({session:a,user:i.user}),i.session.expiresAt?Math.floor((i.session.expiresAt.getTime()-Date.now())/1e3):p)}else return null},executeMainFn:l.session?.storeSessionInDatabase}:void 0),deleteSession:async r=>{if(u){await u.delete(r),l.session?.storeSessionInDatabase&&await e.delete({model:"session",where:[{field:"id",value:r}]});return}await e.delete({model:"session",where:[{field:"id",value:r}]})},deleteSessions:async r=>{if(u){if(typeof r=="string"){let t=await u.get(`active-sessions-${r}`),n=t?N(t):[];if(!n)return;for(let c of n)await u.delete(c.id)}else for(let t of r)await u.get(t)&&await u.delete(t);l.session?.storeSessionInDatabase&&await e.deleteMany({model:"session",where:[{field:Array.isArray(r)?"id":"userId",value:r,operator:Array.isArray(r)?"in":void 0}]});return}await e.deleteMany({model:"session",where:[{field:Array.isArray(r)?"id":"userId",value:r,operator:Array.isArray(r)?"in":void 0}]})},findUserByEmail:async(r,t)=>{let n=await e.findOne({model:"user",where:[{value:r.toLowerCase(),field:"email"}]});if(!n)return null;if(t?.includeAccounts){let c=await e.findMany({model:"account",where:[{value:n.id,field:"userId"}]});return{user:n,accounts:c}}return{user:n,accounts:[]}},findUserById:async r=>await e.findOne({model:"user",where:[{field:"id",value:r}]}),linkAccount:async r=>await g({id:w(),...r},"account"),updateUser:async(r,t)=>await m(t,[{field:"id",value:r}],"user"),updateUserByEmail:async(r,t)=>await m(t,[{field:"email",value:r}],"user"),updatePassword:async(r,t)=>{await A({password:t},[{field:"userId",value:r},{field:"providerId",value:"credential"}],"account")},findAccounts:async r=>await e.findMany({model:"account",where:[{field:"userId",value:r}]}),findAccount:async r=>await e.findOne({model:"account",where:[{field:"accountId",value:r}]}),findAccountByUserId:async r=>await e.findMany({model:"account",where:[{field:"userId",value:r}]}),updateAccount:async(r,t)=>await m(t,[{field:"id",value:r}],"account"),createVerificationValue:async r=>await g({id:w(),createdAt:new Date,...r},"verification"),findVerificationValue:async r=>(await e.findMany({model:"verification",where:[{field:"identifier",value:r}],sortBy:{field:"createdAt",direction:"desc"},limit:10}))[0],deleteVerificationValue:async r=>{await e.delete({model:"verification",where:[{field:"id",value:r}]})},deleteVerificationByIdentifier:async r=>{await e.delete({model:"verification",where:[{field:"identifier",value:r}]})},updateVerificationValue:async(r,t)=>await m(t,[{field:"id",value:r}],"verification")}};var Se=(e,s)=>({type:e,...s});var q=e=>{let s=e.plugins?.reduce((r,t)=>{let n=t.schema;if(!n)return r;for(let[c,o]of Object.entries(n))r[c]={fields:{...r[c]?.fields,...o.fields},modelName:o.modelName||c};return r},{}),l=e.rateLimit?.storage==="database",u={rateLimit:{modelName:e.rateLimit?.modelName||"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:g,account:m,...A}=s||{};return{user:{modelName: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:{modelName: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},...g?.fields,...e.session?.additionalFields},order:2},account:{modelName: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"},...m?.fields},order:3},verification:{modelName: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"},createdAt:{type:"date",required:!1,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"}},order:4},...A,...l?u:{}}};import{z as F}from"zod";function Ve(e){return F.object({...Object.keys(e).reduce((l,u)=>{let p=e[u];if(!p)return l;if(p.type==="string[]"||p.type==="number[]")return{...l,[u]:F.array(p.type==="string[]"?F.string():F.number())};let g=F[p.type]();return p?.required===!1&&(g=g.optional()),p?.returned===!1?l:{...l,[u]:g}},{})})}var O=class extends Error{constructor(s,l){super(s),this.name="BetterAuthError",this.message=s,this.cause=l,this.stack=""}};import{Kysely as K,MssqlDialect as Q}from"kysely";import{MysqlDialect as E,PostgresDialect as C,SqliteDialect as H}from"kysely";function W(e){if("dialect"in e)return W(e.dialect);if("createDriver"in e){if(e instanceof H)return"sqlite";if(e instanceof E)return"mysql";if(e instanceof C)return"postgres";if(e instanceof Q)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var S=async e=>{let s=e.database;if("db"in s)return{kysely:s.db,databaseType:s.type};if("dialect"in s)return{kysely:new K({dialect:s.dialect}),databaseType:s.type};let l,u=W(s);return"createDriver"in s&&(l=s),"aggregate"in s&&(l=new H({database:s})),"getConnection"in s&&(l=new E(s)),"connect"in s&&(l=new C({pool:s})),{kysely:l?new K({dialect:l}):null,databaseType:u}};var X=(e,s,l)=>{let u=q(s);function p(t,n){if(n==="id")return n;let c=u[t].fields[n];return c||console.log("Field not found",t,n),c.fieldName||n}function g(t,n,c){let{type:o="sqlite"}=l||{},a=u[n].fields[c];return a.type==="boolean"&&o==="sqlite"?t?1:0:a.type==="date"&&t&&t instanceof Date&&o==="sqlite"?t.toISOString():t}function m(t,n,c){let{type:o="sqlite"}=l||{},a=u[n].fields[c];return a.type==="boolean"&&o==="sqlite"&&t!==null?t===1:a.type==="date"&&t?new Date(t):t}function A(t){return u[t].modelName}let r=l?.generateId!==!1;return{transformInput(t,n){let c=t.id&&r?{id:l?.generateId?l.generateId():t.id}:{};for(let o in t){let a=u[n].fields[o];a&&(c[a.fieldName||o]=g(t[o],n,o))}return c},transformOutput(t,n,c=[]){if(!t)return null;let o=t.id?c.length===0||c.includes("id")?{id:t.id}:{}:{},a=u[n].fields;for(let i in a){if(c.length&&!c.includes(i))continue;let d=a[i];d&&(o[i]=m(t[d.fieldName||i],n,i))}return o},convertWhereClause(t,n){if(!n)return{and:null,or:null};let c={and:[],or:[]};return n.forEach(o=>{let{field:a,value:i,operator:d="=",connector:y="AND"}=o,f=p(t,a),h=b=>d.toLowerCase()==="in"?b(f,"in",Array.isArray(i)?i:[i]):d==="contains"?b(f,"like",`%${i}%`):d==="starts_with"?b(f,"like",`${i}%`):d==="ends_with"?b(f,"like",`%${i}`):d==="eq"?b(f,"=",i):d==="ne"?b(f,"<>",i):d==="gt"?b(f,">",i):d==="gte"?b(f,">=",i):d==="lt"?b(f,"<",i):d==="lte"?b(f,"<=",i):b(f,d,i);y==="OR"?c.or.push(h):c.and.push(h)}),{and:c.and.length?c.and:null,or:c.or.length?c.or:null}},async withReturning(t,n,c,o){let a;if(l?.type!=="mysql")a=await n.returningAll().executeTakeFirst();else{await n.execute();let i=t.id?"id":o[0].field?o[0].field:"id",d=t[i]||o[0].value;a=await e.selectFrom(A(c)).selectAll().where(p(c,i),"=",d).executeTakeFirst()}return a},getModelName:A,getField:p}},$=(e,s)=>l=>{let{transformInput:u,withReturning:p,transformOutput:g,convertWhereClause:m,getModelName:A,getField:r}=X(e,l,s);return{id:"kysely",async create(t){let{model:n,data:c,select:o}=t,a=u(c,n),i=e.insertInto(A(n)).values(a);return g(await p(a,i,n,[]),n,o)},async findOne(t){let{model:n,where:c,select:o}=t,{and:a,or:i}=m(n,c),d=e.selectFrom(A(n)).selectAll();a&&(d=d.where(f=>f.and(a.map(h=>h(f))))),i&&(d=d.where(f=>f.or(i.map(h=>h(f)))));let y=await d.executeTakeFirst();return y?g(y,n,o):null},async findMany(t){let{model:n,where:c,limit:o,offset:a,sortBy:i}=t,{and:d,or:y}=m(n,c),f=e.selectFrom(A(n));d&&(f=f.where(b=>b.and(d.map(T=>T(b))))),y&&(f=f.where(b=>b.or(y.map(T=>T(b))))),f=f.limit(o||100),a&&(f=f.offset(a)),i&&(f=f.orderBy(r(n,i.field),i.direction));let h=await f.selectAll().execute();return h?h.map(b=>g(b,n)):[]},async update(t){let{model:n,where:c,update:o}=t,{and:a,or:i}=m(n,c),d=u(o,n),y=e.updateTable(A(n)).set(d);return a&&(y=y.where(f=>f.and(a.map(h=>h(f))))),i&&(y=y.where(f=>f.or(i.map(h=>h(f))))),g(await p(d,y,n,c),n)},async updateMany(t){let{model:n,where:c,update:o}=t,{and:a,or:i}=m(n,c),d=u(o,n),y=e.updateTable(A(n)).set(d);return a&&(y=y.where(h=>h.and(a.map(b=>b(h))))),i&&(y=y.where(h=>h.or(i.map(b=>b(h))))),(await y.execute()).length},async delete(t){let{model:n,where:c}=t,{and:o,or:a}=m(n,c),i=e.deleteFrom(A(n));o&&(i=i.where(d=>d.and(o.map(y=>y(d))))),a&&(i=i.where(d=>d.or(a.map(y=>y(d))))),await i.execute()},async deleteMany(t){let{model:n,where:c}=t,{and:o,or:a}=m(n,c),i=e.deleteFrom(A(n));return o&&(i=i.where(d=>d.and(o.map(y=>y(d))))),a&&(i=i.where(d=>d.or(a.map(y=>y(d))))),(await i.execute()).length},options:s}};async function Qe(e){if(!e.database)throw new O("Database configuration is required");if(typeof e.database=="function")return e.database(e);let{kysely:s,databaseType:l}=await S(e);if(!s)throw new O("Failed to initialize database adapter");return $(s,{generateId:"generateId"in e.database?e.database.generateId:void 0,type:l||"sqlite"})(e)}function Xe(e,s){let l=s.id?{id:s.id}:{};for(let u in e){let p=e[u],g=s[u];g!==void 0&&(l[p.fieldName||u]=g)}return l}function Ye(e,s){if(!s)return null;let l={id:s.id};for(let[u,p]of Object.entries(e))l[u]=s[p.fieldName||u];return l}import{createConsola as Y}from"consola";var B=["info","success","warn","error","debug"];function ee(e,s){return B.indexOf(s)<=B.indexOf(e)}var te=Y({formatOptions:{date:!1,colors:!0,compact:!0},defaults:{tag:"Better Auth"}}),V=e=>{let s=e?.disabled!==!0,l=e?.level??"error",u=(p,g,m=[])=>{if(!(!s||!ee(l,p))){if(!e||typeof e.log!="function"){te[p]("",g,...m);return}e.log(p==="success"?"info":p,g,m)}};return Object.fromEntries(B.map(p=>[p,(...[g,...m])=>u(p,g,m)]))},rt=V();function _(e){let s=q(e),l={};for(let u in s){let p=s[u],g=p.fields,m={};if(Object.entries(g).forEach(([A,r])=>{if(m[r.fieldName||A]=r,r.references){let t=s[r.references.model];t&&(m[r.fieldName||A].references={model:t.modelName,field:r.references.field})}}),l[p.modelName]){l[p.modelName].fields={...l[p.modelName].fields,...m};continue}l[p.modelName]={fields:m,order:p.order||1/0}}return l}var re={string:["character varying","text"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamp","date"]},ne={string:["varchar","text"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"]},ie={string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"]},se={string:["nvarchar","varchar"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","boolean"],date:["datetime","date"]},ae={postgres:re,mysql:ne,sqlite:ie,mssql:se};function oe(e,s,l){return s==="string[]"||s==="number[]"?e.toLowerCase().includes("json"):ae[l][s].map(m=>m.toLowerCase()).includes(e.toLowerCase())}async function lt(e){let s=_(e),l=V(e.logger),{kysely:u,databaseType:p}=await S(e);p||(l.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),p="sqlite"),u||(l.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 g=await u.introspection.getTables(),m=[],A=[];for(let[o,a]of Object.entries(s)){let i=g.find(y=>y.name===o);if(!i){let y=m.findIndex(b=>b.table===o),f={table:o,fields:a.fields,order:a.order||1/0},h=m.findIndex(b=>(b.order||1/0)>f.order);h===-1?y===-1?m.push(f):m[y].fields={...m[y].fields,...a.fields}:m.splice(h,0,f);continue}let d={};for(let[y,f]of Object.entries(a.fields)){let h=i.columns.find(b=>b.name===y);if(!h){d[y]=f;continue}oe(h.dataType,f.type,p)||l.warn(`Field ${y} in table ${o} has a different type in the database. Expected ${f.type} but got ${h.dataType}.`)}Object.keys(d).length>0&&A.push({table:o,fields:d,order:a.order||1/0})}let r=[];function t(o){let a=o.type,i={string:{sqlite:"text",postgres:"text",mysql:o.unique?"varchar(255)":o.references?"varchar(36)":"text",mssql:"text"},boolean:{sqlite:"integer",postgres:"boolean",mysql:"boolean",mssql:"boolean"},number:{sqlite:"integer",postgres:"integer",mysql:"integer",mssql:"integer"},date:{sqlite:"date",postgres:"timestamp",mysql:"datetime",mssql:"datetime"}};return p==="sqlite"&&(a==="string[]"||a==="number[]")?"text":a==="string[]"||a==="number[]"?"jsonb":i[a][p||"sqlite"]}if(A.length)for(let o of A)for(let[a,i]of Object.entries(o.fields)){let d=t(i),y=u.schema.alterTable(o.table).addColumn(a,d,f=>(f=i.required!==!1?f.notNull():f,i.references&&(f=f.references(`${i.references.model}.${i.references.field}`)),f));r.push(y)}if(m.length)for(let o of m){let a=u.schema.createTable(o.table).addColumn("id",p==="mysql"?"varchar(36)":"text",i=>i.primaryKey().notNull());for(let[i,d]of Object.entries(o.fields)){let y=t(d);a=a.addColumn(i,y,f=>(f=d.required!==!1?f.notNull():f,d.references&&(f=f.references(`${d.references.model}.${d.references.field}`)),d.unique&&(f=f.unique()),f))}r.push(a)}async function n(){for(let o of r)await o.execute()}async function c(){return r.map(a=>a.compile().sql).join(`;
|
|
2
2
|
|
|
3
3
|
`)}return{toBeCreated:m,toBeAdded:A,runMigrations:n,compileMigrations:c}}export{Ye as convertFromDB,Xe as convertToDB,Se as createFieldAttribute,Ne as createInternalAdapter,Qe as getAdapter,q as getAuthTables,lt as getMigrations,_ as getSchema,M as getWithHooks,oe as matchType,Ve as toZodSchema};
|