better-auth 0.5.4-beta.6 → 0.5.4-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access.cjs +0 -1
- package/dist/access.js +0 -1
- package/dist/adapters/drizzle.cjs +0 -1
- package/dist/adapters/drizzle.js +0 -1
- package/dist/adapters/kysely.cjs +0 -1
- package/dist/adapters/kysely.js +0 -1
- package/dist/adapters/mongodb.cjs +1 -2
- package/dist/adapters/mongodb.d.cts +0 -9
- package/dist/adapters/mongodb.d.ts +0 -9
- package/dist/adapters/mongodb.js +1 -2
- package/dist/adapters/prisma.cjs +0 -1
- package/dist/adapters/prisma.js +0 -1
- package/dist/api.cjs +0 -1
- package/dist/api.js +0 -1
- package/dist/client/plugins.cjs +0 -1
- package/dist/client/plugins.js +0 -1
- package/dist/client.cjs +0 -1
- package/dist/client.d.cts +3 -36
- package/dist/client.d.ts +3 -36
- package/dist/client.js +0 -1
- package/dist/cookies.cjs +0 -1
- package/dist/cookies.js +0 -1
- package/dist/crypto.cjs +0 -1
- package/dist/crypto.js +0 -1
- package/dist/db.cjs +0 -1
- package/dist/db.js +0 -1
- package/dist/index.cjs +0 -1
- package/dist/index.js +0 -1
- package/dist/next-js.cjs +0 -1
- package/dist/next-js.js +0 -1
- package/dist/node.cjs +0 -1
- package/dist/node.js +0 -1
- package/dist/oauth2.cjs +0 -1
- package/dist/oauth2.js +0 -1
- package/dist/plugins.cjs +0 -1
- package/dist/plugins.js +0 -1
- package/dist/react.cjs +0 -1
- package/dist/react.d.cts +3 -36
- package/dist/react.d.ts +3 -36
- package/dist/react.js +0 -1
- package/dist/social.cjs +0 -1
- package/dist/social.js +0 -1
- package/dist/solid-start.cjs +0 -1
- package/dist/solid-start.js +0 -1
- package/dist/solid.cjs +0 -1
- package/dist/solid.d.cts +3 -36
- package/dist/solid.d.ts +3 -36
- package/dist/solid.js +0 -1
- package/dist/svelte-kit.cjs +0 -1
- package/dist/svelte-kit.js +0 -1
- package/dist/svelte.cjs +0 -1
- package/dist/svelte.d.cts +3 -36
- package/dist/svelte.d.ts +3 -36
- package/dist/svelte.js +0 -1
- package/dist/types.cjs +0 -1
- package/dist/types.js +0 -1
- package/dist/vue.cjs +0 -1
- package/dist/vue.d.cts +3 -36
- package/dist/vue.d.ts +3 -36
- package/dist/vue.js +0 -1
- package/package.json +2 -2
- package/dist/access.cjs.map +0 -1
- package/dist/access.js.map +0 -1
- package/dist/adapters/drizzle.cjs.map +0 -1
- package/dist/adapters/drizzle.js.map +0 -1
- package/dist/adapters/kysely.cjs.map +0 -1
- package/dist/adapters/kysely.js.map +0 -1
- package/dist/adapters/mongodb.cjs.map +0 -1
- package/dist/adapters/mongodb.js.map +0 -1
- package/dist/adapters/prisma.cjs.map +0 -1
- package/dist/adapters/prisma.js.map +0 -1
- package/dist/api.cjs.map +0 -1
- package/dist/api.js.map +0 -1
- package/dist/client/plugins.cjs.map +0 -1
- package/dist/client/plugins.js.map +0 -1
- package/dist/client.cjs.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/cookies.cjs.map +0 -1
- package/dist/cookies.js.map +0 -1
- package/dist/crypto.cjs.map +0 -1
- package/dist/crypto.js.map +0 -1
- package/dist/db.cjs.map +0 -1
- package/dist/db.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/next-js.cjs.map +0 -1
- package/dist/next-js.js.map +0 -1
- package/dist/node.cjs.map +0 -1
- package/dist/node.js.map +0 -1
- package/dist/oauth2.cjs.map +0 -1
- package/dist/oauth2.js.map +0 -1
- package/dist/plugins.cjs.map +0 -1
- package/dist/plugins.js.map +0 -1
- package/dist/react.cjs.map +0 -1
- package/dist/react.js.map +0 -1
- package/dist/social.cjs.map +0 -1
- package/dist/social.js.map +0 -1
- package/dist/solid-start.cjs.map +0 -1
- package/dist/solid-start.js.map +0 -1
- package/dist/solid.cjs.map +0 -1
- package/dist/solid.js.map +0 -1
- package/dist/svelte-kit.cjs.map +0 -1
- package/dist/svelte-kit.js.map +0 -1
- package/dist/svelte.cjs.map +0 -1
- package/dist/svelte.js.map +0 -1
- package/dist/types.cjs.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/vue.cjs.map +0 -1
- package/dist/vue.js.map +0 -1
package/dist/access.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
"use strict";var p=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var h=(t,e)=>{for(var r in e)p(t,r,{get:e[r],enumerable:!0})},T=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of b(e))!w.call(t,s)&&s!==r&&p(t,s,{get:()=>e[s],enumerable:!(n=y(e,s))||n.enumerable});return t};var v=t=>T(p({},"__esModule",{value:!0}),t);var z={};h(z,{AccessControl:()=>c,ParsingError:()=>a,Role:()=>i,adminAc:()=>f,createAccessControl:()=>d,defaultAc:()=>m,defaultRoles:()=>A,defaultStatements:()=>S,memberAc:()=>g,ownerAc:()=>x,permissionFromString:()=>R});module.exports=v(z);var a=class extends Error{path;constructor(e,r){super(e),this.path=r}},c=class{constructor(e){this.s=e;this.statements=e}statements;newRole(e){return new i(e)}},i=class t{statements;constructor(e){this.statements=e}authorize(e,r){for(let[n,s]of Object.entries(e)){let o=this.statements[n];if(!o)return{success:!1,error:`You are not allowed to access resource: ${n}`};let l=r==="OR"?s.some(u=>o.includes(u)):s.every(u=>o.includes(u));return l?{success:l}:{success:!1,error:`unauthorized to access resource "${n}"`}}return{success:!1,error:"Not authorized"}}static fromString(e){let r=JSON.parse(e);if(typeof r!="object")throw new a("statements is not an object",".");for(let[n,s]of Object.entries(r)){if(typeof n!="string")throw new a("invalid resource identifier",n);if(!Array.isArray(s))throw new a("actions is not an array",n);for(let o=0;o<s.length;o++)if(typeof s[o]!="string")throw new a("action is not a string",`${n}[${o}]`)}return new t(r)}toString(){return JSON.stringify(this.statements)}};var d=t=>new c(t),S={organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"]},m=d(S),f=m.newRole({organization:["update"],invitation:["create","cancel"],member:["create","update","delete"]}),x=m.newRole({organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"]}),g=m.newRole({organization:[],member:[],invitation:[]}),A={admin:f,owner:x,member:g};var R=t=>i.fromString(t??"");0&&(module.exports={AccessControl,ParsingError,Role,adminAc,createAccessControl,defaultAc,defaultRoles,defaultStatements,memberAc,ownerAc,permissionFromString});
|
|
2
|
-
//# sourceMappingURL=access.cjs.map
|
package/dist/access.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
var a=class extends Error{path;constructor(e,n){super(e),this.path=n}},c=class{constructor(e){this.s=e;this.statements=e}statements;newRole(e){return new i(e)}},i=class s{statements;constructor(e){this.statements=e}authorize(e,n){for(let[t,o]of Object.entries(e)){let r=this.statements[t];if(!r)return{success:!1,error:`You are not allowed to access resource: ${t}`};let p=n==="OR"?o.some(m=>r.includes(m)):o.every(m=>r.includes(m));return p?{success:p}:{success:!1,error:`unauthorized to access resource "${t}"`}}return{success:!1,error:"Not authorized"}}static fromString(e){let n=JSON.parse(e);if(typeof n!="object")throw new a("statements is not an object",".");for(let[t,o]of Object.entries(n)){if(typeof t!="string")throw new a("invalid resource identifier",t);if(!Array.isArray(o))throw new a("actions is not an array",t);for(let r=0;r<o.length;r++)if(typeof o[r]!="string")throw new a("action is not a string",`${t}[${r}]`)}return new s(n)}toString(){return JSON.stringify(this.statements)}};var l=s=>new c(s),d={organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"]},u=l(d),S=u.newRole({organization:["update"],invitation:["create","cancel"],member:["create","update","delete"]}),f=u.newRole({organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"]}),x=u.newRole({organization:[],member:[],invitation:[]}),b={admin:S,owner:f,member:x};var T=s=>i.fromString(s??"");export{c as AccessControl,a as ParsingError,i as Role,S as adminAc,l as createAccessControl,u as defaultAc,b as defaultRoles,d as defaultStatements,x as memberAc,f as ownerAc,T as permissionFromString};
|
|
2
|
-
//# sourceMappingURL=access.js.map
|
|
@@ -1,2 +1 @@
|
|
|
1
1
|
"use strict";var w=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var z=(t,r)=>{for(var s in r)w(t,s,{get:r[s],enumerable:!0})},A=(t,r,s,c)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of v(r))!P.call(t,n)&&n!==s&&w(t,n,{get:()=>r[n],enumerable:!(c=g(r,n))||c.enumerable});return t};var $=t=>A(w({},"__esModule",{value:!0}),t);var x={};z(x,{drizzleAdapter:()=>q});module.exports=$(x);var a=require("drizzle-orm");var f=class extends Error{constructor(r,s){super(r),this.name="BetterAuthError",this.message=r,this.cause=s}};function m(t,r){let s=r.schema;if(!s)throw new f("Drizzle adapter failed to initialize. Schema not found. Please provide a schema object in the adapter options object.");let c=r.usePlural?`${t}s`:t,n=s[c];if(!n)throw new f(`[# Drizzle Adapter]: The model "${t}" was not found in the schema object. Please pass the schema directly to the adapter options.`);return n}function p(t,r){if(!t)return[];if(t.length===1){let e=t[0];if(!e)return[];if(e.operator==="in"){if(!Array.isArray(e.value))throw new f(`The value for the field "${e.field}" must be an array when using the "in" operator.`);return[(0,a.inArray)(r[e.field],e.value)]}return e.operator==="contains"?[(0,a.like)(r[e.field],`%${e.value}%`)]:e.operator==="starts_with"?[(0,a.like)(r[e.field],`${e.value}%`)]:e.operator==="ends_with"?[(0,a.like)(r[e.field],`%${e.value}`)]:[(0,a.eq)(r[e.field],e.value)]}let s=t.filter(e=>e.connector==="AND"||!e.connector),c=t.filter(e=>e.connector==="OR"),n=(0,a.and)(...s.map(e=>{if(e.operator==="in"){if(!Array.isArray(e.value))throw new f(`The value for the field "${e.field}" must be an array when using the "in" operator.`);return(0,a.inArray)(r[e.field],e.value)}return(0,a.eq)(r[e.field],e.value)})),o=(0,a.or)(...c.map(e=>(0,a.eq)(r[e.field],e.value))),l=[];return s.length&&l.push(n),c.length&&l.push(o),l}var q=(t,r)=>{let s=r.schema||t._.fullSchema,c=r?.provider;return{id:"drizzle",async create(n){let{model:o,data:l}=n,e=m(o,{schema:s,usePlural:r.usePlural});r.generateId!==void 0&&(l.id=r.generateId?r.generateId():void 0);let i=t.insert(e).values(l);return c!=="mysql"?(await i.returning())[0]:(await i,(await t.select().from(e).where((0,a.eq)(e.id,n.data.id)))[0])},async findOne(n){let{model:o,where:l,select:e}=n,i=m(o,{schema:s,usePlural:r.usePlural}),d=p(l,i),u=null;return e?.length?u=await t.select(...e.map(h=>({[h]:i[h]}))).from(i).where(...d):u=await t.select().from(i).where(...d),u.length?u[0]:null},async findMany(n){let{model:o,where:l,limit:e,offset:i,sortBy:d}=n,u=m(o,{schema:s,usePlural:r.usePlural}),h=l?p(l,u):[],y=d?.direction==="desc"?a.desc:a.asc;return await t.select().from(u).limit(e||100).offset(i||0).orderBy(y(u[d?.field||"id"])).where(...h.length?h:[])},async update(n){let{model:o,where:l,update:e}=n,i=m(o,{schema:s,usePlural:r.usePlural});e.id&&(e.id=void 0);let d=p(l,i),u=t.update(i).set(e).where(...d);return c!=="mysql"?(await u.returning())[0]:(await u,(await t.select().from(i).where((0,a.eq)(i.id,n.update.id)))[0])},async delete(n){let{model:o,where:l}=n,e=m(o,{schema:s,usePlural:r.usePlural}),i=p(l,e);return(await t.delete(e).where(...i))[0]},async deleteMany(n){let{model:o,where:l}=n,e=m(o,{schema:s,usePlural:r.usePlural}),i=p(l,e);await t.delete(e).where(...i)},options:r}};0&&(module.exports={drizzleAdapter});
|
|
2
|
-
//# sourceMappingURL=drizzle.cjs.map
|
package/dist/adapters/drizzle.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
import{and as v,asc as P,desc as z,eq as p,or as A,inArray as y,like as w}from"drizzle-orm";var d=class extends Error{constructor(r,i){super(r),this.name="BetterAuthError",this.message=r,this.cause=i}};function h(t,r){let i=r.schema;if(!i)throw new d("Drizzle adapter failed to initialize. Schema not found. Please provide a schema object in the adapter options object.");let c=r.usePlural?`${t}s`:t,n=i[c];if(!n)throw new d(`[# Drizzle Adapter]: The model "${t}" was not found in the schema object. Please pass the schema directly to the adapter options.`);return n}function m(t,r){if(!t)return[];if(t.length===1){let e=t[0];if(!e)return[];if(e.operator==="in"){if(!Array.isArray(e.value))throw new d(`The value for the field "${e.field}" must be an array when using the "in" operator.`);return[y(r[e.field],e.value)]}return e.operator==="contains"?[w(r[e.field],`%${e.value}%`)]:e.operator==="starts_with"?[w(r[e.field],`${e.value}%`)]:e.operator==="ends_with"?[w(r[e.field],`%${e.value}`)]:[p(r[e.field],e.value)]}let i=t.filter(e=>e.connector==="AND"||!e.connector),c=t.filter(e=>e.connector==="OR"),n=v(...i.map(e=>{if(e.operator==="in"){if(!Array.isArray(e.value))throw new d(`The value for the field "${e.field}" must be an array when using the "in" operator.`);return y(r[e.field],e.value)}return p(r[e.field],e.value)})),l=A(...c.map(e=>p(r[e.field],e.value))),s=[];return i.length&&s.push(n),c.length&&s.push(l),s}var S=(t,r)=>{let i=r.schema||t._.fullSchema,c=r?.provider;return{id:"drizzle",async create(n){let{model:l,data:s}=n,e=h(l,{schema:i,usePlural:r.usePlural});r.generateId!==void 0&&(s.id=r.generateId?r.generateId():void 0);let a=t.insert(e).values(s);return c!=="mysql"?(await a.returning())[0]:(await a,(await t.select().from(e).where(p(e.id,n.data.id)))[0])},async findOne(n){let{model:l,where:s,select:e}=n,a=h(l,{schema:i,usePlural:r.usePlural}),u=m(s,a),o=null;return e?.length?o=await t.select(...e.map(f=>({[f]:a[f]}))).from(a).where(...u):o=await t.select().from(a).where(...u),o.length?o[0]:null},async findMany(n){let{model:l,where:s,limit:e,offset:a,sortBy:u}=n,o=h(l,{schema:i,usePlural:r.usePlural}),f=s?m(s,o):[],g=u?.direction==="desc"?z:P;return await t.select().from(o).limit(e||100).offset(a||0).orderBy(g(o[u?.field||"id"])).where(...f.length?f:[])},async update(n){let{model:l,where:s,update:e}=n,a=h(l,{schema:i,usePlural:r.usePlural});e.id&&(e.id=void 0);let u=m(s,a),o=t.update(a).set(e).where(...u);return c!=="mysql"?(await o.returning())[0]:(await o,(await t.select().from(a).where(p(a.id,n.update.id)))[0])},async delete(n){let{model:l,where:s}=n,e=h(l,{schema:i,usePlural:r.usePlural}),a=m(s,e);return(await t.delete(e).where(...a))[0]},async deleteMany(n){let{model:l,where:s}=n,e=h(l,{schema:i,usePlural:r.usePlural}),a=m(s,e);await t.delete(e).where(...a)},options:r}};export{S as drizzleAdapter};
|
|
2
|
-
//# sourceMappingURL=drizzle.js.map
|
package/dist/adapters/kysely.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
"use strict";var A=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var F=(t,e)=>{for(var a in e)A(t,a,{get:e[a],enumerable:!0})},T=(t,e,a,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of q(e))!x.call(t,s)&&s!==a&&A(t,s,{get:()=>e[s],enumerable:!(n=g(e,s))||n.enumerable});return t};var K=t=>T(A({},"__esModule",{value:!0}),t);var I={};F(I,{createKyselyAdapter:()=>C,kyselyAdapter:()=>O});module.exports=K(I);var p=require("kysely"),c=require("kysely");function D(t){if("dialect"in t)return D(t.dialect);if("createDriver"in t){if(t instanceof c.SqliteDialect)return"sqlite";if(t instanceof c.MysqlDialect)return"mysql";if(t instanceof c.PostgresDialect)return"postgres";if(t instanceof p.MssqlDialect)return"mssql"}return"aggregate"in t?"sqlite":"getConnection"in t?"mysql":"connect"in t?"postgres":null}var C=async t=>{let e=t.database;if("db"in e)return{kysely:e.db,databaseType:e.type};if("dialect"in e)return{kysely:new p.Kysely({dialect:e.dialect}),databaseType:e.type};let a,n=D(e);return"createDriver"in e&&(a=e),"aggregate"in e&&(a=new c.SqliteDialect({database:e})),"getConnection"in e&&(a=new c.MysqlDialect({pool:e})),"connect"in e&&(a=new c.PostgresDialect({pool:e})),{kysely:a?new p.Kysely({dialect:a}):null,databaseType:n}};function h(t){if(!t)return{and:null,or:null};let e={and:[],or:[]};return t.forEach(a=>{let{field:n,value:s,operator:l="=",connector:f="AND"}=a,i=r=>l.toLowerCase()==="in"?r(n,"in",Array.isArray(s)?s:[s]):l==="contains"?r(n,"like",`%${s}%`):l==="starts_with"?r(n,"like",`${s}%`):l==="ends_with"?r(n,"like",`%${s}`):r(n,l,s);f==="OR"?e.or.push(i):e.and.push(i)}),{and:e.and.length?e.and:null,or:e.or.length?e.or:null}}function w(t,e,a){for(let n in t){let s=e[n]||Object.values(e).find(l=>l.fieldName===n);t[n]===0&&s.type==="boolean"&&a?.boolean&&(t[n]=!1),t[n]===1&&s?.type==="boolean"&&a?.boolean&&(t[n]=!0),s?.type==="date"&&(t[n]instanceof Date||(t[n]=new Date(t[n])))}return t}function k(t,e){for(let a in t)typeof t[a]=="boolean"&&e?.boolean&&(t[a]=t[a]?1:0),t[a]instanceof Date&&(t[a]=t[a].toISOString());return t}var O=(t,e)=>({id:"kysely",async create(a){let{model:n,data:s,select:l}=a;e?.transform&&(s=k(s,e.transform)),e?.generateId!==void 0&&(s.id=e.generateId?e.generateId():void 0);let f=await t.insertInto(n).values(s).returningAll().executeTakeFirst();if(e?.transform){let i=e.transform.schema[n];f=i?w(s,i,e.transform):f}return l?.length&&(f=f?l.reduce((r,o)=>f?.[o]?{...r,[o]:f[o]}:r,{}):null),f},async findOne(a){let{model:n,where:s,select:l}=a,{and:f,or:i}=h(s),r=t.selectFrom(n).selectAll();f&&(r=r.where(y=>y.and(f.map(d=>d(y))))),i&&(r=r.where(y=>y.or(i.map(d=>d(y)))));let o=await r.executeTakeFirst();if(l?.length&&(o=o?l.reduce((d,u)=>o?.[u]?{...d,[u]:o[u]}:d,{}):null),e?.transform){let y=e.transform.schema[n];return o=o&&y?w(o,y,e.transform):o,o||null}return o||null},async findMany(a){let{model:n,where:s,limit:l,offset:f,sortBy:i}=a,r=t.selectFrom(n),{and:o,or:y}=h(s);o&&(r=r.where(u=>u.and(o.map(m=>m(u))))),y&&(r=r.where(u=>u.or(y.map(m=>m(u))))),r=r.limit(l||100),f&&(r=r.offset(f)),i&&(r=r.orderBy(i.field,i.direction));let d=await r.selectAll().execute();if(e?.transform){let u=e.transform.schema[n];return u?d.map(m=>w(m,u,e.transform)):d}return d},async update(a){let{model:n,where:s,update:l}=a,{and:f,or:i}=h(s);e?.transform&&(l=k(l,e.transform)),l.id&&(l.id=void 0);let r=t.updateTable(n).set(l);f&&(r=r.where(y=>y.and(f.map(d=>d(y))))),i&&(r=r.where(y=>y.or(i.map(d=>d(y)))));let o=await r.returningAll().executeTakeFirst()||null;if(e?.transform){let y=e.transform.schema[n];return y?w(o,y,e.transform):o}return o},async delete(a){let{model:n,where:s}=a,{and:l,or:f}=h(s),i=t.deleteFrom(n);l&&(i=i.where(r=>r.and(l.map(o=>o(r))))),f&&(i=i.where(r=>r.or(f.map(o=>o(r))))),await i.execute()},async deleteMany(a){let{model:n,where:s}=a,{and:l,or:f}=h(s),i=t.deleteFrom(n);l&&(i=i.where(r=>r.and(l.map(o=>o(r))))),f&&(i=i.where(r=>r.or(f.map(o=>o(r))))),await i.execute()}});0&&(module.exports={createKyselyAdapter,kyselyAdapter});
|
|
2
|
-
//# sourceMappingURL=kysely.cjs.map
|
package/dist/adapters/kysely.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
import{Kysely as h,MssqlDialect as q}from"kysely";import{MysqlDialect as w,PostgresDialect as A,SqliteDialect as D}from"kysely";function k(r){if("dialect"in r)return k(r.dialect);if("createDriver"in r){if(r instanceof D)return"sqlite";if(r instanceof w)return"mysql";if(r instanceof A)return"postgres";if(r instanceof q)return"mssql"}return"aggregate"in r?"sqlite":"getConnection"in r?"mysql":"connect"in r?"postgres":null}var T=async r=>{let e=r.database;if("db"in e)return{kysely:e.db,databaseType:e.type};if("dialect"in e)return{kysely:new h({dialect:e.dialect}),databaseType:e.type};let a,n=k(e);return"createDriver"in e&&(a=e),"aggregate"in e&&(a=new D({database:e})),"getConnection"in e&&(a=new w({pool:e})),"connect"in e&&(a=new A({pool:e})),{kysely:a?new h({dialect:a}):null,databaseType:n}};function m(r){if(!r)return{and:null,or:null};let e={and:[],or:[]};return r.forEach(a=>{let{field:n,value:i,operator:l="=",connector:f="AND"}=a,o=t=>l.toLowerCase()==="in"?t(n,"in",Array.isArray(i)?i:[i]):l==="contains"?t(n,"like",`%${i}%`):l==="starts_with"?t(n,"like",`${i}%`):l==="ends_with"?t(n,"like",`%${i}`):t(n,l,i);f==="OR"?e.or.push(o):e.and.push(o)}),{and:e.and.length?e.and:null,or:e.or.length?e.or:null}}function p(r,e,a){for(let n in r){let i=e[n]||Object.values(e).find(l=>l.fieldName===n);r[n]===0&&i.type==="boolean"&&a?.boolean&&(r[n]=!1),r[n]===1&&i?.type==="boolean"&&a?.boolean&&(r[n]=!0),i?.type==="date"&&(r[n]instanceof Date||(r[n]=new Date(r[n])))}return r}function g(r,e){for(let a in r)typeof r[a]=="boolean"&&e?.boolean&&(r[a]=r[a]?1:0),r[a]instanceof Date&&(r[a]=r[a].toISOString());return r}var C=(r,e)=>({id:"kysely",async create(a){let{model:n,data:i,select:l}=a;e?.transform&&(i=g(i,e.transform)),e?.generateId!==void 0&&(i.id=e.generateId?e.generateId():void 0);let f=await r.insertInto(n).values(i).returningAll().executeTakeFirst();if(e?.transform){let o=e.transform.schema[n];f=o?p(i,o,e.transform):f}return l?.length&&(f=f?l.reduce((t,s)=>f?.[s]?{...t,[s]:f[s]}:t,{}):null),f},async findOne(a){let{model:n,where:i,select:l}=a,{and:f,or:o}=m(i),t=r.selectFrom(n).selectAll();f&&(t=t.where(y=>y.and(f.map(d=>d(y))))),o&&(t=t.where(y=>y.or(o.map(d=>d(y)))));let s=await t.executeTakeFirst();if(l?.length&&(s=s?l.reduce((d,u)=>s?.[u]?{...d,[u]:s[u]}:d,{}):null),e?.transform){let y=e.transform.schema[n];return s=s&&y?p(s,y,e.transform):s,s||null}return s||null},async findMany(a){let{model:n,where:i,limit:l,offset:f,sortBy:o}=a,t=r.selectFrom(n),{and:s,or:y}=m(i);s&&(t=t.where(u=>u.and(s.map(c=>c(u))))),y&&(t=t.where(u=>u.or(y.map(c=>c(u))))),t=t.limit(l||100),f&&(t=t.offset(f)),o&&(t=t.orderBy(o.field,o.direction));let d=await t.selectAll().execute();if(e?.transform){let u=e.transform.schema[n];return u?d.map(c=>p(c,u,e.transform)):d}return d},async update(a){let{model:n,where:i,update:l}=a,{and:f,or:o}=m(i);e?.transform&&(l=g(l,e.transform)),l.id&&(l.id=void 0);let t=r.updateTable(n).set(l);f&&(t=t.where(y=>y.and(f.map(d=>d(y))))),o&&(t=t.where(y=>y.or(o.map(d=>d(y)))));let s=await t.returningAll().executeTakeFirst()||null;if(e?.transform){let y=e.transform.schema[n];return y?p(s,y,e.transform):s}return s},async delete(a){let{model:n,where:i}=a,{and:l,or:f}=m(i),o=r.deleteFrom(n);l&&(o=o.where(t=>t.and(l.map(s=>s(t))))),f&&(o=o.where(t=>t.or(f.map(s=>s(t))))),await o.execute()},async deleteMany(a){let{model:n,where:i}=a,{and:l,or:f}=m(i),o=r.deleteFrom(n);l&&(o=o.where(t=>t.and(l.map(s=>s(t))))),f&&(o=o.where(t=>t.or(f.map(s=>s(t))))),await o.execute()}});export{T as createKyselyAdapter,C as kyselyAdapter};
|
|
2
|
-
//# sourceMappingURL=kysely.js.map
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";var w=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var
|
|
2
|
-
//# sourceMappingURL=mongodb.cjs.map
|
|
1
|
+
"use strict";var w=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var $=(s,c)=>{for(var o in c)w(s,o,{get:c[o],enumerable:!0})},b=(s,c,o,a)=>{if(c&&typeof c=="object"||typeof c=="function")for(let t of h(c))!y.call(s,t)&&t!==o&&w(s,t,{get:()=>c[t],enumerable:!(a=g(c,t))||a.enumerable});return s};var k=s=>b(w({},"__esModule",{value:!0}),s);var D={};$(D,{mongodbAdapter:()=>C});module.exports=k(D);function f(s){if(!s)return{};let c=s.map(r=>{let{field:n,value:e,operator:d="eq",connector:l="AND"}=r,i;function u(m){return m==="id"?"_id":m}switch(d.toLowerCase()){case"eq":i={[u(n)]:e};break;case"in":i={[u(n)]:{$in:Array.isArray(e)?e:[e]}};break;case"gt":i={[u(n)]:{$gt:e}};break;case"gte":i={[u(n)]:{$gte:e}};break;case"lt":i={[u(n)]:{$lt:e}};break;case"lte":i={[u(n)]:{$lte:e}};break;case"ne":i={[u(n)]:{$ne:e}};break;case"contains":i={[u(n)]:{$regex:`.*${e}.*`}};break;case"starts_with":i={[u(n)]:{$regex:`${e}.*`}};break;case"ends_with":i={[u(n)]:{$regex:`.*${e}`}};break;default:throw new Error(`Unsupported operator: ${d}`)}return{condition:i,connector:l}}),o=c.filter(r=>r.connector==="AND").map(r=>r.condition),a=c.filter(r=>r.connector==="OR").map(r=>r.condition),t={};return o.length&&(t={...t,$and:o}),a.length&&(t={...t,$or:a}),t}function p(s){let{_id:c,...o}=s;return o}function A(s){return s.reduce((o,a)=>(o[a]=1,o),{})}var C=(s,c)=>{let o=s,a=t=>c?.usePlural?`${t}s`:t;return{id:"mongodb",async create(t){let{model:r,data:n}=t;n.id=void 0;let d=(await o.collection(a(r)).insertOne({...n})).insertedId,l={...n,id:d};return p(l)},async findOne(t){let{model:r,where:n,select:e}=t,d=f(n),l={};e&&(l=A(e));let i=await o.collection(a(r)).findOne(d,{projection:l});return i?p(i):null},async findMany(t){let{model:r,where:n,limit:e,offset:d,sortBy:l}=t,i=f(n);return(await o.collection(a(r)).find(i).skip(d||0).limit(e||100).sort(l?.field||"_id",l?.direction==="desc"?-1:1).toArray()).map(p)},async update(t){let{model:r,where:n,update:e}=t,d=f(n);if(e.id&&(e.id=void 0),n.length===1){let l=await o.collection(a(r)).findOneAndUpdate(d,{$set:e},{returnDocument:"after"});return p(l)}return await o.collection(a(r)).updateMany(d,{$set:e}),{}},async delete(t){let{model:r,where:n}=t,e=f(n),d=await o.collection(a(r)).findOneAndDelete(e)},async deleteMany(t){let{model:r,where:n}=t,e=f(n),d=await o.collection(a(r)).deleteMany(e)}}};0&&(module.exports={mongodbAdapter});
|
|
@@ -12,15 +12,6 @@ import 'mysql2';
|
|
|
12
12
|
|
|
13
13
|
declare const mongodbAdapter: (mongo: Db, opts?: {
|
|
14
14
|
usePlural?: boolean;
|
|
15
|
-
/**
|
|
16
|
-
* Custom generateId function.
|
|
17
|
-
*
|
|
18
|
-
* If not provided, nanoid will be used.
|
|
19
|
-
* If set to false, the database's auto generated id will be used.
|
|
20
|
-
*
|
|
21
|
-
* @default nanoid
|
|
22
|
-
*/
|
|
23
|
-
generateId?: ((size?: number) => string) | false;
|
|
24
15
|
}) => {
|
|
25
16
|
id: string;
|
|
26
17
|
create<T extends {
|
|
@@ -12,15 +12,6 @@ import 'mysql2';
|
|
|
12
12
|
|
|
13
13
|
declare const mongodbAdapter: (mongo: Db, opts?: {
|
|
14
14
|
usePlural?: boolean;
|
|
15
|
-
/**
|
|
16
|
-
* Custom generateId function.
|
|
17
|
-
*
|
|
18
|
-
* If not provided, nanoid will be used.
|
|
19
|
-
* If set to false, the database's auto generated id will be used.
|
|
20
|
-
*
|
|
21
|
-
* @default nanoid
|
|
22
|
-
*/
|
|
23
|
-
generateId?: ((size?: number) => string) | false;
|
|
24
15
|
}) => {
|
|
25
16
|
id: string;
|
|
26
17
|
create<T extends {
|
package/dist/adapters/mongodb.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
function
|
|
2
|
-
//# sourceMappingURL=mongodb.js.map
|
|
1
|
+
function f(l){if(!l)return{};let u=l.map(n=>{let{field:t,value:e,operator:c="eq",connector:a="AND"}=n,o;function d(w){return w==="id"?"_id":w}switch(c.toLowerCase()){case"eq":o={[d(t)]:e};break;case"in":o={[d(t)]:{$in:Array.isArray(e)?e:[e]}};break;case"gt":o={[d(t)]:{$gt:e}};break;case"gte":o={[d(t)]:{$gte:e}};break;case"lt":o={[d(t)]:{$lt:e}};break;case"lte":o={[d(t)]:{$lte:e}};break;case"ne":o={[d(t)]:{$ne:e}};break;case"contains":o={[d(t)]:{$regex:`.*${e}.*`}};break;case"starts_with":o={[d(t)]:{$regex:`${e}.*`}};break;case"ends_with":o={[d(t)]:{$regex:`.*${e}`}};break;default:throw new Error(`Unsupported operator: ${c}`)}return{condition:o,connector:a}}),s=u.filter(n=>n.connector==="AND").map(n=>n.condition),i=u.filter(n=>n.connector==="OR").map(n=>n.condition),r={};return s.length&&(r={...r,$and:s}),i.length&&(r={...r,$or:i}),r}function p(l){let{_id:u,...s}=l;return s}function m(l){return l.reduce((s,i)=>(s[i]=1,s),{})}var g=(l,u)=>{let s=l,i=r=>u?.usePlural?`${r}s`:r;return{id:"mongodb",async create(r){let{model:n,data:t}=r;t.id=void 0;let c=(await s.collection(i(n)).insertOne({...t})).insertedId,a={...t,id:c};return p(a)},async findOne(r){let{model:n,where:t,select:e}=r,c=f(t),a={};e&&(a=m(e));let o=await s.collection(i(n)).findOne(c,{projection:a});return o?p(o):null},async findMany(r){let{model:n,where:t,limit:e,offset:c,sortBy:a}=r,o=f(t);return(await s.collection(i(n)).find(o).skip(c||0).limit(e||100).sort(a?.field||"_id",a?.direction==="desc"?-1:1).toArray()).map(p)},async update(r){let{model:n,where:t,update:e}=r,c=f(t);if(e.id&&(e.id=void 0),t.length===1){let a=await s.collection(i(n)).findOneAndUpdate(c,{$set:e},{returnDocument:"after"});return p(a)}return await s.collection(i(n)).updateMany(c,{$set:e}),{}},async delete(r){let{model:n,where:t}=r,e=f(t),c=await s.collection(i(n)).findOneAndDelete(e)},async deleteMany(r){let{model:n,where:t}=r,e=f(t),c=await s.collection(i(n)).deleteMany(e)}}};export{g as mongodbAdapter};
|
package/dist/adapters/prisma.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
"use strict";var f=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var w=(r,a)=>{for(var s in a)f(r,s,{get:a[s],enumerable:!0})},g=(r,a,s,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let t of p(a))!m.call(r,t)&&t!==s&&f(r,t,{get:()=>a[t],enumerable:!(i=h(a,t))||i.enumerable});return r};var C=r=>g(f({},"__esModule",{value:!0}),r);var P={};w(P,{prismaAdapter:()=>v});module.exports=C(P);function y(r){switch(r){case"starts_with":return"startsWith";case"ends_with":return"endsWith";default:return r}}function l(r){if(!r)return{};if(r.length===1){let e=r[0];return e?{[e.field]:e.operator==="eq"||!e.operator?e.value:{[y(e.operator)]:e.value}}:void 0}let a=r.filter(e=>e.connector==="AND"||!e.connector),s=r.filter(e=>e.connector==="OR"),i=a.map(e=>({[e.field]:e.operator==="eq"||!e.operator?e.value:{[y(e.operator)]:e.value}})),t=s.map(e=>({[e.field]:{[e.operator||"eq"]:e.value}}));return{AND:i.length?i:void 0,OR:t.length?t:void 0}}var v=(r,a)=>{let s=r,i=a.generateId;return{id:"prisma",async create(t){let{model:e,data:d,select:n}=t;return i!==void 0&&(d.id=i?i():void 0),await s[e].create({data:d,...n?.length?{select:n.reduce((o,c)=>({...o,[c]:!0}),{})}:{}})},async findOne(t){let{model:e,where:d,select:n}=t,o=l(d);return await s[e].findFirst({where:o,...n?.length?{select:n.reduce((c,u)=>({...c,[u]:!0}),{})}:{}})},async findMany(t){let{model:e,where:d,limit:n,offset:o,sortBy:c}=t,u=l(d);return await s[e].findMany({where:u,take:n||100,skip:o||0,orderBy:c?.field?{[c.field]:c.direction==="desc"?"desc":"asc"}:void 0})},async update(t){let{model:e,where:d,update:n}=t;n.id&&(n.id=void 0);let o=l(d);return d.length===1?await s[e].update({where:o,data:n}):await s[e].updateMany({where:o,data:n})},async delete(t){let{model:e,where:d}=t,n=l(d);return await s[e].delete({where:n}).catch(o=>{})},async deleteMany(t){let{model:e,where:d}=t,n=l(d);return await s[e].deleteMany({where:n})},options:a}};0&&(module.exports={prismaAdapter});
|
|
2
|
-
//# sourceMappingURL=prisma.cjs.map
|
package/dist/adapters/prisma.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
function f(a){switch(a){case"starts_with":return"startsWith";case"ends_with":return"endsWith";default:return a}}function c(a){if(!a)return{};if(a.length===1){let e=a[0];return e?{[e.field]:e.operator==="eq"||!e.operator?e.value:{[f(e.operator)]:e.value}}:void 0}let l=a.filter(e=>e.connector==="AND"||!e.connector),s=a.filter(e=>e.connector==="OR"),o=l.map(e=>({[e.field]:e.operator==="eq"||!e.operator?e.value:{[f(e.operator)]:e.value}})),r=s.map(e=>({[e.field]:{[e.operator||"eq"]:e.value}}));return{AND:o.length?o:void 0,OR:r.length?r:void 0}}var y=(a,l)=>{let s=a,o=l.generateId;return{id:"prisma",async create(r){let{model:e,data:n,select:t}=r;return o!==void 0&&(n.id=o?o():void 0),await s[e].create({data:n,...t?.length?{select:t.reduce((d,i)=>({...d,[i]:!0}),{})}:{}})},async findOne(r){let{model:e,where:n,select:t}=r,d=c(n);return await s[e].findFirst({where:d,...t?.length?{select:t.reduce((i,u)=>({...i,[u]:!0}),{})}:{}})},async findMany(r){let{model:e,where:n,limit:t,offset:d,sortBy:i}=r,u=c(n);return await s[e].findMany({where:u,take:t||100,skip:d||0,orderBy:i?.field?{[i.field]:i.direction==="desc"?"desc":"asc"}:void 0})},async update(r){let{model:e,where:n,update:t}=r;t.id&&(t.id=void 0);let d=c(n);return n.length===1?await s[e].update({where:d,data:t}):await s[e].updateMany({where:d,data:t})},async delete(r){let{model:e,where:n}=r,t=c(n);return await s[e].delete({where:t}).catch(d=>{})},async deleteMany(r){let{model:e,where:n}=r,t=c(n);return await s[e].deleteMany({where:t})},options:l}};export{y as prismaAdapter};
|
|
2
|
-
//# sourceMappingURL=prisma.js.map
|
package/dist/api.cjs
CHANGED
|
@@ -81,4 +81,3 @@ Error: `,u),e.redirect(`${e.context.baseURL}/error?error=internal_server_error`)
|
|
|
81
81
|
</div>
|
|
82
82
|
</body>
|
|
83
83
|
</html>`,Oe=m("/error",{method:"GET",metadata:C},async e=>{let t=new URL(e.request?.url||"").searchParams.get("error")||"Unknown";return new Response(tr(t),{headers:{"Content-Type":"text/html"}})});var Le=m("/ok",{method:"GET",metadata:C},async e=>e.json({ok:!0}));var j=require("zod");var I=require("better-call");var Ie=()=>m("/sign-up/email",{method:"POST",query:j.z.object({currentURL:j.z.string().optional()}).optional(),body:j.z.record(j.z.string(),j.z.any()),use:[E]},async e=>{if(!e.context.options.emailAndPassword?.enabled)throw new I.APIError("BAD_REQUEST",{message:"Email and password sign up is not enabled"});let t=e.body,{name:r,email:o,password:n,image:i,callbackURL:s,...d}=t;if(!j.z.string().email().safeParse(o).success)throw new I.APIError("BAD_REQUEST",{message:"Invalid email"});let c=e.context.password.config.minPasswordLength;if(n.length<c)throw e.context.logger.error("Password is too short"),new I.APIError("BAD_REQUEST",{message:"Password is too short"});let l=e.context.password.config.maxPasswordLength;if(n.length>l)throw e.context.logger.error("Password is too long"),new I.APIError("BAD_REQUEST",{message:"Password is too long"});if((await e.context.internalAdapter.findUserByEmail(o))?.user)throw e.context.logger.info(`Sign-up attempt for existing email: ${o}`),new I.APIError("UNPROCESSABLE_ENTITY",{message:"User with this email already exists"});let g=_t(e.context.options,d),p;try{if(p=await e.context.internalAdapter.createUser({email:o.toLowerCase(),name:r,image:i,...g,emailVerified:!1}),!p)throw new I.APIError("BAD_REQUEST",{message:"Failed to create user"})}catch(u){throw new I.APIError("UNPROCESSABLE_ENTITY",{message:"Failed to create user",details:u})}if(!p)throw new I.APIError("UNPROCESSABLE_ENTITY",{message:"Failed to create user"});let A=await e.context.password.hash(n);if(await e.context.internalAdapter.linkAccount({userId:p.id,providerId:"credential",accountId:p.id,password:A,expiresAt:M(60*60*24*30,"sec")}),e.context.options.emailVerification?.sendOnSignUp){let u=await L(e.context.secret,p.email),U=`${e.context.baseURL}/verify-email?token=${u}&callbackURL=${t.callbackURL||e.query?.currentURL||"/"}`;await e.context.options.emailVerification?.sendVerificationEmail?.(p,U,u)}if(!e.context.options.emailAndPassword.autoSignIn||e.context.options.emailAndPassword.requireEmailVerification)return e.json({user:p,session:null},{body:t.callbackURL?{url:t.callbackURL,redirect:!0}:{user:p,session:null}});let x=await e.context.internalAdapter.createSession(p.id,e.request);if(!x)throw new I.APIError("BAD_REQUEST",{message:"Failed to create session"});return await S(e,x.id),e.json({user:p,session:x},{body:t.callbackURL?{url:t.callbackURL,redirect:!0}:{user:p,session:x}})});var Ot=require("std-env");function Lt(e){let t="127.0.0.1";if(Ot.isTest)return t;let r=["x-client-ip","x-forwarded-for","cf-connecting-ip","fastly-client-ip","x-real-ip","x-cluster-client-ip","x-forwarded","forwarded-for","forwarded"],o=e instanceof Request?e.headers:e;for(let n of r){let i=o.get(n);if(typeof i=="string"){let s=i.split(",")[0].trim();if(s)return s}}return null}function rr(e,t,r){let o=Date.now(),n=t*1e3;return o-r.lastRequest<n&&r.count>=e}function or(e){return new Response(JSON.stringify({message:"Too many requests. Please try again later."}),{status:429,statusText:"Too Many Requests",headers:{"X-Retry-After":e.toString()}})}function nr(e,t){let r=Date.now(),o=t*1e3;return Math.ceil((e+o-r)/1e3)}function ir(e,t){let r=t??"rateLimit",o=e.adapter;return{get:async n=>await o.findOne({model:r,where:[{field:"key",value:n}]}),set:async(n,i,s)=>{try{s?await o.update({model:t??"rateLimit",where:[{field:"key",value:n}],update:{count:i.count,lastRequest:i.lastRequest}}):await o.create({model:t??"rateLimit",data:{key:n,count:i.count,lastRequest:i.lastRequest}})}catch(d){w.error("Error setting rate limit",d)}}}}var It=new Map;function sr(e){return e.rateLimit.storage==="secondary-storage"?{get:async r=>{let o=await e.options.secondaryStorage?.get(r);return o?JSON.parse(o):void 0},set:async(r,o)=>{await e.options.secondaryStorage?.set?.(r,JSON.stringify(o))}}:e.rateLimit.storage==="memory"?{async get(r){return It.get(r)},async set(r,o,n){It.set(r,o)}}:ir(e,e.rateLimit.tableName)}async function Ct(e,t){if(!t.rateLimit.enabled)return;let r=t.baseURL,o=e.url.replace(r,""),n=t.rateLimit.window,i=t.rateLimit.max,s=Lt(e)+o,a=ar().find(g=>g.pathMatcher(o));a&&(n=a.window,i=a.max);for(let g of t.options.plugins||[])if(g.rateLimit){let p=g.rateLimit.find(A=>A.pathMatcher(o));if(p){n=p.window,i=p.max;break}}if(t.rateLimit.customRules){let g=t.rateLimit.customRules[o];g&&(n=g.window,i=g.max)}let c=sr(t),l=await c.get(s),h=Date.now();if(!l)await c.set(s,{key:s,count:1,lastRequest:h});else{let g=h-l.lastRequest;if(rr(i,n,l)){let p=nr(l.lastRequest,n);return or(p)}else g>n*1e3?await c.set(s,{...l,count:1,lastRequest:h}):await c.set(s,{...l,count:l.count+1,lastRequest:h})}}function ar(){return[{pathMatcher(t){return t.startsWith("/sign-in")||t.startsWith("/sign-up")},window:10,max:3}]}var Dt=require("better-call");function Bt(e,t){let r=t.plugins?.reduce((d,a)=>({...d,...a.endpoints}),{}),o=t.plugins?.map(d=>d.middlewares?.map(a=>{let c=async l=>a.middleware({...l,context:{...e,...l.context}});return c.path=a.path,c.options=a.middleware.options,c.headers=a.middleware.headers,{path:a.path,middleware:c}})).filter(d=>d!==void 0).flat()||[],i={...{signInOAuth:ye,callbackOAuth:ke,getCSRFToken:Se,getSession:X(),signOut:Ae,signUpEmail:Ie(),signInEmail:be,forgetPassword:Re,resetPassword:Ee,verifyEmail:we,sendVerificationEmail:he,changeEmail:_e,changePassword:Te,setPassword:ve,updateUser:xe(),deleteUser:Pe,forgetPasswordCallback:Ue,listSessions:me(),revokeSession:fe,revokeSessions:ge},...r,ok:Le,error:Oe},s={};for(let[d,a]of Object.entries(i))s[d]=async(c={})=>{let l=await e;for(let p of t.plugins||[])if(p.hooks?.before){for(let A of p.hooks.before)if(A.matcher({...a,...c,context:l})){let u=await A.handler({...c,context:{...l,...c?.context}});u&&"context"in u&&(l={...l,...u.context})}}let h;try{h=await a({...c,context:{...l,...c.context}})}catch(p){if(p instanceof q.APIError){let A=t.plugins?.map(u=>{if(u.hooks?.after)return u.hooks.after}).filter(u=>u!==void 0).flat();if(!A?.length)throw p;let x=new Response(JSON.stringify(p.body),{status:q.statusCode[p.status],headers:p.headers});for(let u of A||[])if(u.matcher(c)){let H=Object.assign(c,{context:{...e,returned:x}}),B=await u.handler(H);B&&"response"in B&&(x=B.response)}return x}throw p}let g=h;for(let p of t.plugins||[])if(p.hooks?.after){for(let A of p.hooks.after)if(A.matcher(c)){let u=Object.assign(c,{context:{...e,returned:g}}),U=await A.handler(u);U&&"response"in U&&(g=U.response)}}return g},s[d].path=a.path,s[d].method=a.method,s[d].options=a.options,s[d].headers=a.headers;return{api:s,middlewares:o}}var dr=(e,t)=>{let{api:r,middlewares:o}=Bt(e,t),n=new URL(e.baseURL).pathname;return(0,q.createRouter)(r,{extraContext:e,basePath:n,routerMiddleware:[{path:"/**",middleware:de},...o],async onRequest(i){for(let s of e.options.plugins||[])if(s.onRequest){let d=await s.onRequest(i,e);if(d)return d}return Ct(i,e)},async onResponse(i){for(let s of e.options.plugins||[])if(s.onResponse){let d=await s.onResponse(i,e);if(d)return d.response}return i},onError(i){if(t.onAPIError?.throw)throw i;if(t.onAPIError?.onError){t.onAPIError.onError(i,e);return}let s=t.logger?.verboseLogging?w:void 0;t.logger?.disabled!==!0&&(i instanceof q.APIError?(i.status==="INTERNAL_SERVER_ERROR"&&w.error(i),s?.error(i.message)):w?.error(i))}})};0&&(module.exports={APIError,callbackOAuth,changeEmail,changePassword,createAuthEndpoint,createAuthMiddleware,createEmailVerificationToken,csrfMiddleware,deleteUser,error,forgetPassword,forgetPasswordCallback,getCSRFToken,getEndpoints,getSession,getSessionFromCtx,listSessions,ok,optionsMiddleware,resetPassword,revokeSession,revokeSessions,router,sendVerificationEmail,sessionMiddleware,setPassword,signInEmail,signInOAuth,signOut,signUpEmail,updateUser,verifyEmail});
|
|
84
|
-
//# sourceMappingURL=api.cjs.map
|
package/dist/api.js
CHANGED
|
@@ -81,4 +81,3 @@ Error: `,u),e.redirect(`${e.context.baseURL}/error?error=internal_server_error`)
|
|
|
81
81
|
</div>
|
|
82
82
|
</body>
|
|
83
83
|
</html>`,Xe=m("/error",{method:"GET",metadata:C},async e=>{let r=new URL(e.request?.url||"").searchParams.get("error")||"Unknown";return new Response(Dt(r),{headers:{"Content-Type":"text/html"}})});var et=m("/ok",{method:"GET",metadata:C},async e=>e.json({ok:!0}));import{z as q}from"zod";import{APIError as I}from"better-call";var tt=()=>m("/sign-up/email",{method:"POST",query:q.object({currentURL:q.string().optional()}).optional(),body:q.record(q.string(),q.any()),use:[E]},async e=>{if(!e.context.options.emailAndPassword?.enabled)throw new I("BAD_REQUEST",{message:"Email and password sign up is not enabled"});let r=e.body,{name:t,email:o,password:n,image:i,callbackURL:s,...d}=r;if(!q.string().email().safeParse(o).success)throw new I("BAD_REQUEST",{message:"Invalid email"});let c=e.context.password.config.minPasswordLength;if(n.length<c)throw e.context.logger.error("Password is too short"),new I("BAD_REQUEST",{message:"Password is too short"});let l=e.context.password.config.maxPasswordLength;if(n.length>l)throw e.context.logger.error("Password is too long"),new I("BAD_REQUEST",{message:"Password is too long"});if((await e.context.internalAdapter.findUserByEmail(o))?.user)throw e.context.logger.info(`Sign-up attempt for existing email: ${o}`),new I("UNPROCESSABLE_ENTITY",{message:"User with this email already exists"});let g=qe(e.context.options,d),p;try{if(p=await e.context.internalAdapter.createUser({email:o.toLowerCase(),name:t,image:i,...g,emailVerified:!1}),!p)throw new I("BAD_REQUEST",{message:"Failed to create user"})}catch(u){throw new I("UNPROCESSABLE_ENTITY",{message:"Failed to create user",details:u})}if(!p)throw new I("UNPROCESSABLE_ENTITY",{message:"Failed to create user"});let k=await e.context.password.hash(n);if(await e.context.internalAdapter.linkAccount({userId:p.id,providerId:"credential",accountId:p.id,password:k,expiresAt:V(60*60*24*30,"sec")}),e.context.options.emailVerification?.sendOnSignUp){let u=await L(e.context.secret,p.email),R=`${e.context.baseURL}/verify-email?token=${u}&callbackURL=${r.callbackURL||e.query?.currentURL||"/"}`;await e.context.options.emailVerification?.sendVerificationEmail?.(p,R,u)}if(!e.context.options.emailAndPassword.autoSignIn||e.context.options.emailAndPassword.requireEmailVerification)return e.json({user:p,session:null},{body:r.callbackURL?{url:r.callbackURL,redirect:!0}:{user:p,session:null}});let x=await e.context.internalAdapter.createSession(p.id,e.request);if(!x)throw new I("BAD_REQUEST",{message:"Failed to create session"});return await S(e,x.id),e.json({user:p,session:x},{body:r.callbackURL?{url:r.callbackURL,redirect:!0}:{user:p,session:x}})});import{isTest as zt}from"std-env";function rt(e){let r="127.0.0.1";if(zt)return r;let t=["x-client-ip","x-forwarded-for","cf-connecting-ip","fastly-client-ip","x-real-ip","x-cluster-client-ip","x-forwarded","forwarded-for","forwarded"],o=e instanceof Request?e.headers:e;for(let n of t){let i=o.get(n);if(typeof i=="string"){let s=i.split(",")[0].trim();if(s)return s}}return null}function $t(e,r,t){let o=Date.now(),n=r*1e3;return o-t.lastRequest<n&&t.count>=e}function Vt(e){return new Response(JSON.stringify({message:"Too many requests. Please try again later."}),{status:429,statusText:"Too Many Requests",headers:{"X-Retry-After":e.toString()}})}function jt(e,r){let t=Date.now(),o=r*1e3;return Math.ceil((e+o-t)/1e3)}function qt(e,r){let t=r??"rateLimit",o=e.adapter;return{get:async n=>await o.findOne({model:t,where:[{field:"key",value:n}]}),set:async(n,i,s)=>{try{s?await o.update({model:r??"rateLimit",where:[{field:"key",value:n}],update:{count:i.count,lastRequest:i.lastRequest}}):await o.create({model:r??"rateLimit",data:{key:n,count:i.count,lastRequest:i.lastRequest}})}catch(d){w.error("Error setting rate limit",d)}}}}var ot=new Map;function Nt(e){return e.rateLimit.storage==="secondary-storage"?{get:async t=>{let o=await e.options.secondaryStorage?.get(t);return o?JSON.parse(o):void 0},set:async(t,o)=>{await e.options.secondaryStorage?.set?.(t,JSON.stringify(o))}}:e.rateLimit.storage==="memory"?{async get(t){return ot.get(t)},async set(t,o,n){ot.set(t,o)}}:qt(e,e.rateLimit.tableName)}async function nt(e,r){if(!r.rateLimit.enabled)return;let t=r.baseURL,o=e.url.replace(t,""),n=r.rateLimit.window,i=r.rateLimit.max,s=rt(e)+o,a=Mt().find(g=>g.pathMatcher(o));a&&(n=a.window,i=a.max);for(let g of r.options.plugins||[])if(g.rateLimit){let p=g.rateLimit.find(k=>k.pathMatcher(o));if(p){n=p.window,i=p.max;break}}if(r.rateLimit.customRules){let g=r.rateLimit.customRules[o];g&&(n=g.window,i=g.max)}let c=Nt(r),l=await c.get(s),h=Date.now();if(!l)await c.set(s,{key:s,count:1,lastRequest:h});else{let g=h-l.lastRequest;if($t(i,n,l)){let p=jt(l.lastRequest,n);return Vt(p)}else g>n*1e3?await c.set(s,{...l,count:1,lastRequest:h}):await c.set(s,{...l,count:l.count+1,lastRequest:h})}}function Mt(){return[{pathMatcher(r){return r.startsWith("/sign-in")||r.startsWith("/sign-up")},window:10,max:3}]}import{APIError as ta}from"better-call";function Zt(e,r){let t=r.plugins?.reduce((d,a)=>({...d,...a.endpoints}),{}),o=r.plugins?.map(d=>d.middlewares?.map(a=>{let c=async l=>a.middleware({...l,context:{...e,...l.context}});return c.path=a.path,c.options=a.middleware.options,c.headers=a.middleware.headers,{path:a.path,middleware:c}})).filter(d=>d!==void 0).flat()||[],i={...{signInOAuth:Be,callbackOAuth:Ne,getCSRFToken:Ye,getSession:Y(),signOut:Me,signUpEmail:tt(),signInEmail:De,forgetPassword:Fe,resetPassword:Ze,verifyEmail:Ce,sendVerificationEmail:Ie,changeEmail:Ke,changePassword:Ge,setPassword:We,updateUser:Qe(),deleteUser:Je,forgetPasswordCallback:He,listSessions:Se(),revokeSession:Oe,revokeSessions:Le},...t,ok:et,error:Xe},s={};for(let[d,a]of Object.entries(i))s[d]=async(c={})=>{let l=await e;for(let p of r.plugins||[])if(p.hooks?.before){for(let k of p.hooks.before)if(k.matcher({...a,...c,context:l})){let u=await k.handler({...c,context:{...l,...c?.context}});u&&"context"in u&&(l={...l,...u.context})}}let h;try{h=await a({...c,context:{...l,...c.context}})}catch(p){if(p instanceof it){let k=r.plugins?.map(u=>{if(u.hooks?.after)return u.hooks.after}).filter(u=>u!==void 0).flat();if(!k?.length)throw p;let x=new Response(JSON.stringify(p.body),{status:Ht[p.status],headers:p.headers});for(let u of k||[])if(u.matcher(c)){let N=Object.assign(c,{context:{...e,returned:x}}),B=await u.handler(N);B&&"response"in B&&(x=B.response)}return x}throw p}let g=h;for(let p of r.plugins||[])if(p.hooks?.after){for(let k of p.hooks.after)if(k.matcher(c)){let u=Object.assign(c,{context:{...e,returned:g}}),R=await k.handler(u);R&&"response"in R&&(g=R.response)}}return g},s[d].path=a.path,s[d].method=a.method,s[d].options=a.options,s[d].headers=a.headers;return{api:s,middlewares:o}}var Ws=(e,r)=>{let{api:t,middlewares:o}=Zt(e,r),n=new URL(e.baseURL).pathname;return Ft(t,{extraContext:e,basePath:n,routerMiddleware:[{path:"/**",middleware:de},...o],async onRequest(i){for(let s of e.options.plugins||[])if(s.onRequest){let d=await s.onRequest(i,e);if(d)return d}return nt(i,e)},async onResponse(i){for(let s of e.options.plugins||[])if(s.onResponse){let d=await s.onResponse(i,e);if(d)return d.response}return i},onError(i){if(r.onAPIError?.throw)throw i;if(r.onAPIError?.onError){r.onAPIError.onError(i,e);return}let s=r.logger?.verboseLogging?w:void 0;r.logger?.disabled!==!0&&(i instanceof it?(i.status==="INTERNAL_SERVER_ERROR"&&w.error(i),s?.error(i.message)):w?.error(i))}})};export{ta as APIError,Ne as callbackOAuth,Ke as changeEmail,Ge as changePassword,m as createAuthEndpoint,z as createAuthMiddleware,L as createEmailVerificationToken,de as csrfMiddleware,Je as deleteUser,Xe as error,Fe as forgetPassword,He as forgetPasswordCallback,Ye as getCSRFToken,Zt as getEndpoints,Y as getSession,X as getSessionFromCtx,Se as listSessions,et as ok,se as optionsMiddleware,Ze as resetPassword,Oe as revokeSession,Le as revokeSessions,Ws as router,Ie as sendVerificationEmail,O as sessionMiddleware,We as setPassword,De as signInEmail,Be as signInOAuth,Me as signOut,tt as signUpEmail,Qe as updateUser,Ce as verifyEmail};
|
|
84
|
-
//# sourceMappingURL=api.js.map
|
package/dist/client/plugins.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
"use strict";var y=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var R=(n,e)=>{for(var i in e)y(n,i,{get:e[i],enumerable:!0})},x=(n,e,i,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of T(e))!b.call(n,t)&&t!==i&&y(n,t,{get:()=>e[t],enumerable:!(o=A(e,t))||o.enumerable});return n};var C=n=>x(y({},"__esModule",{value:!0}),n);var D={};R(D,{adminClient:()=>W,anonymousClient:()=>N,genericOAuthClient:()=>j,getPasskeyActions:()=>O,inferAdditionalFields:()=>q,magicLinkClient:()=>$,multiSessionClient:()=>G,organizationClient:()=>E,passkeyClient:()=>_,phoneNumberClient:()=>M,twoFactorClient:()=>z,usernameClient:()=>L});module.exports=C(D);var g=require("nanostores");var c=class extends Error{path;constructor(e,i){super(e),this.path=i}},m=class{constructor(e){this.s=e;this.statements=e}statements;newRole(e){return new f(e)}},f=class n{statements;constructor(e){this.statements=e}authorize(e,i){for(let[o,t]of Object.entries(e)){let s=this.statements[o];if(!s)return{success:!1,error:`You are not allowed to access resource: ${o}`};let a=i==="OR"?t.some(r=>s.includes(r)):t.every(r=>s.includes(r));return a?{success:a}:{success:!1,error:`unauthorized to access resource "${o}"`}}return{success:!1,error:"Not authorized"}}static fromString(e){let i=JSON.parse(e);if(typeof i!="object")throw new c("statements is not an object",".");for(let[o,t]of Object.entries(i)){if(typeof o!="string")throw new c("invalid resource identifier",o);if(!Array.isArray(t))throw new c("actions is not an array",o);for(let s=0;s<t.length;s++)if(typeof t[s]!="string")throw new c("action is not a string",`${o}[${s}]`)}return new n(i)}toString(){return JSON.stringify(this.statements)}};var w=n=>new m(n),k={organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"]},h=w(k),Q=h.newRole({organization:["update"],invitation:["create","cancel"],member:["create","update","delete"]}),V=h.newRole({organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"]}),X=h.newRole({organization:[],member:[],invitation:[]});var U=require("@better-fetch/fetch");var F=require("std-env");var ye=require("nanostores");var v=require("@better-fetch/fetch");var I=require("nanostores");var Ae=require("@better-fetch/fetch"),d=require("nanostores"),l=(n,e,i,o)=>{let t=(0,d.atom)({data:null,error:null,isPending:!0,isRefetching:!1}),s=()=>{let r=typeof o=="function"?o({data:t.get().data,error:t.get().error,isPending:t.get().isPending}):o;return i(e,{...r,onSuccess:async u=>{t.set({data:u.data,error:null,isPending:!1,isRefetching:!1}),await r?.onSuccess?.(u)},async onError(u){t.set({error:u.error,data:null,isPending:!1,isRefetching:!1}),await r?.onError?.(u)},async onRequest(u){let P=t.get();t.set({isPending:P.data===null,data:P.data,error:null,isRefetching:!0}),await r?.onRequest?.(u)}})};n=Array.isArray(n)?n:[n];let a=!1;for(let r of n)r.subscribe(()=>{a?s():(0,d.onMount)(t,()=>(s(),a=!0,()=>{t.off(),r.off()}))});return t};var E=n=>{let e=(0,g.atom)(void 0),i=(0,g.atom)(!1),o=(0,g.atom)(!1);return{id:"organization",$InferServerPlugin:{},getActions:t=>({$Infer:{ActiveOrganization:{},Organization:{},Invitation:{},Member:{}},organization:{setActive(s){e.set(s)},hasPermission:async s=>await t("/organization/has-permission",{method:"POST",body:{permission:s.permission},...s.fetchOptions})}}),getAtoms:t=>{let s=l(i,"/organization/list",t,{method:"GET"}),a=l([e,o],"/organization/activate",t,()=>({method:"POST",credentials:"include",body:{orgId:e.get()}}));return{_listOrg:i,_activeOrgSignal:o,activeOrganization:a,listOrganizations:s}},atomListeners:[{matcher(t){return t==="/organization/create"||t==="/organization/delete"},signal:"_listOrg"},{matcher(t){return t.startsWith("/organization")},signal:"_activeOrgSignal"}]}};var L=()=>({id:"username",$InferServerPlugin:{}});var p=require("@simplewebauthn/browser");var S=require("nanostores"),O=(n,{_listPasskeys:e})=>({signIn:{passkey:async(t,s)=>{let a=await n("/passkey/generate-authenticate-options",{method:"POST",body:{email:t?.email}});if(!a.data)return a;try{let r=await(0,p.startAuthentication)(a.data,t?.autoFill||!1),u=await n("/passkey/verify-authentication",{body:{response:r},...t?.fetchOptions,...s,method:"POST"});if(!u.data)return u}catch(r){console.log(r)}}},passkey:{addPasskey:async(t,s)=>{let a=await n("/passkey/generate-register-options",{method:"GET"});if(!a.data)return a;try{let r=await(0,p.startRegistration)(a.data),u=await n("/passkey/verify-registration",{...t?.fetchOptions,...s,body:{response:r,name:t?.name},method:"POST"});if(!u.data)return u;e.set(Math.random())}catch(r){return r instanceof p.WebAuthnError?r.code==="ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED"?{data:null,error:{message:"previously registered",status:400,statusText:"BAD_REQUEST"}}:r.code==="ERROR_CEREMONY_ABORTED"?{data:null,error:{message:"registration cancelled",status:400,statusText:"BAD_REQUEST"}}:{data:null,error:{message:r.message,status:400,statusText:"BAD_REQUEST"}}:{data:null,error:{message:r instanceof Error?r.message:"unknown error",status:500,statusText:"INTERNAL_SERVER_ERROR"}}}}},$Infer:{}}),_=()=>{let n=(0,S.atom)();return{id:"passkey",$InferServerPlugin:{},getActions:e=>O(e,{_listPasskeys:n}),getAtoms(e){return{listPasskeys:l(n,"/passkey/list-user-passkeys",e,{method:"GET",credentials:"include"}),_listPasskeys:n}},pathMethods:{"/passkey/register":"POST","/passkey/authenticate":"POST"},atomListeners:[{matcher(e){return e==="/passkey/verify-registration"||e==="/passkey/delete-passkey"},signal:"_listPasskeys"}]}};var z=(n={redirect:!0,twoFactorPage:"/"})=>({id:"two-factor",$InferServerPlugin:{},atomListeners:[{matcher:e=>e.startsWith("/two-factor/"),signal:"_sessionSignal"}],pathMethods:{"/two-factor/disable":"POST","/two-factor/enable":"POST","/two-factor/send-otp":"POST","/two-factor/generate-backup-codes":"POST"},fetchPlugins:[{id:"two-factor",name:"two-factor",hooks:{async onSuccess(e){e.data?.twoFactorRedirect&&(n.redirect||n.twoFactorPage)&&typeof window<"u"&&(window.location.href=n.twoFactorPage)}}}]});var $=()=>({id:"magic-link",$InferServerPlugin:{}});var M=()=>({id:"phoneNumber",$InferServerPlugin:{},atomListeners:[{matcher(n){return n==="/phone-number/update"||n==="/phone-number/verify"},signal:"_sessionSignal"}]});var N=()=>({id:"anonymous",$InferServerPlugin:{},pathMethods:{"/sign-in/anonymous":"POST"}});var q=n=>({id:"additional-fields-client",$InferServerPlugin:{}});var W=()=>({id:"better-auth-client",$InferServerPlugin:{},pathMethods:{"/admin/list-users":"GET"}});var j=()=>({id:"generic-oauth-client",$InferServerPlugin:{}});var G=()=>({id:"multi-session",$InferServerPlugin:{},pathMethods:{"/multi-session/sign-out-device-sessions":"POST"},atomListeners:[{matcher(n){return n==="/multi-session/set-active"},signal:"_sessionSignal"}]});0&&(module.exports={adminClient,anonymousClient,genericOAuthClient,getPasskeyActions,inferAdditionalFields,magicLinkClient,multiSessionClient,organizationClient,passkeyClient,phoneNumberClient,twoFactorClient,usernameClient});
|
|
2
|
-
//# sourceMappingURL=plugins.cjs.map
|
package/dist/client/plugins.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
import{atom as d}from"nanostores";var c=class extends Error{path;constructor(n,a){super(n),this.path=a}},p=class{constructor(n){this.s=n;this.statements=n}statements;newRole(n){return new m(n)}},m=class t{statements;constructor(n){this.statements=n}authorize(n,a){for(let[i,e]of Object.entries(n)){let s=this.statements[i];if(!s)return{success:!1,error:`You are not allowed to access resource: ${i}`};let o=a==="OR"?e.some(r=>s.includes(r)):e.every(r=>s.includes(r));return o?{success:o}:{success:!1,error:`unauthorized to access resource "${i}"`}}return{success:!1,error:"Not authorized"}}static fromString(n){let a=JSON.parse(n);if(typeof a!="object")throw new c("statements is not an object",".");for(let[i,e]of Object.entries(a)){if(typeof i!="string")throw new c("invalid resource identifier",i);if(!Array.isArray(e))throw new c("actions is not an array",i);for(let s=0;s<e.length;s++)if(typeof e[s]!="string")throw new c("action is not a string",`${i}[${s}]`)}return new t(a)}toString(){return JSON.stringify(this.statements)}};var y=t=>new p(t),h={organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"]},f=y(h),k=f.newRole({organization:["update"],invitation:["create","cancel"],member:["create","update","delete"]}),B=f.newRole({organization:["update","delete"],member:["create","update","delete"],invitation:["create","cancel"]}),F=f.newRole({organization:[],member:[],invitation:[]});import{createFetch as Z}from"@better-fetch/fetch";import{env as q}from"std-env";import"nanostores";import{betterFetch as D}from"@better-fetch/fetch";import{atom as pe}from"nanostores";import"@better-fetch/fetch";import{atom as S,onMount as O}from"nanostores";var l=(t,n,a,i)=>{let e=S({data:null,error:null,isPending:!0,isRefetching:!1}),s=()=>{let r=typeof i=="function"?i({data:e.get().data,error:e.get().error,isPending:e.get().isPending}):i;return a(n,{...r,onSuccess:async u=>{e.set({data:u.data,error:null,isPending:!1,isRefetching:!1}),await r?.onSuccess?.(u)},async onError(u){e.set({error:u.error,data:null,isPending:!1,isRefetching:!1}),await r?.onError?.(u)},async onRequest(u){let g=e.get();e.set({isPending:g.data===null,data:g.data,error:null,isRefetching:!0}),await r?.onRequest?.(u)}})};t=Array.isArray(t)?t:[t];let o=!1;for(let r of t)r.subscribe(()=>{o?s():O(e,()=>(s(),o=!0,()=>{e.off(),r.off()}))});return e};var ve=t=>{let n=d(void 0),a=d(!1),i=d(!1);return{id:"organization",$InferServerPlugin:{},getActions:e=>({$Infer:{ActiveOrganization:{},Organization:{},Invitation:{},Member:{}},organization:{setActive(s){n.set(s)},hasPermission:async s=>await e("/organization/has-permission",{method:"POST",body:{permission:s.permission},...s.fetchOptions})}}),getAtoms:e=>{let s=l(a,"/organization/list",e,{method:"GET"}),o=l([n,i],"/organization/activate",e,()=>({method:"POST",credentials:"include",body:{orgId:n.get()}}));return{_listOrg:a,_activeOrgSignal:i,activeOrganization:o,listOrganizations:s}},atomListeners:[{matcher(e){return e==="/organization/create"||e==="/organization/delete"},signal:"_listOrg"},{matcher(e){return e.startsWith("/organization")},signal:"_activeOrgSignal"}]}};var Ie=()=>({id:"username",$InferServerPlugin:{}});import{WebAuthnError as A,startAuthentication as T,startRegistration as b}from"@simplewebauthn/browser";import{atom as R}from"nanostores";var x=(t,{_listPasskeys:n})=>({signIn:{passkey:async(e,s)=>{let o=await t("/passkey/generate-authenticate-options",{method:"POST",body:{email:e?.email}});if(!o.data)return o;try{let r=await T(o.data,e?.autoFill||!1),u=await t("/passkey/verify-authentication",{body:{response:r},...e?.fetchOptions,...s,method:"POST"});if(!u.data)return u}catch(r){console.log(r)}}},passkey:{addPasskey:async(e,s)=>{let o=await t("/passkey/generate-register-options",{method:"GET"});if(!o.data)return o;try{let r=await b(o.data),u=await t("/passkey/verify-registration",{...e?.fetchOptions,...s,body:{response:r,name:e?.name},method:"POST"});if(!u.data)return u;n.set(Math.random())}catch(r){return r instanceof A?r.code==="ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED"?{data:null,error:{message:"previously registered",status:400,statusText:"BAD_REQUEST"}}:r.code==="ERROR_CEREMONY_ABORTED"?{data:null,error:{message:"registration cancelled",status:400,statusText:"BAD_REQUEST"}}:{data:null,error:{message:r.message,status:400,statusText:"BAD_REQUEST"}}:{data:null,error:{message:r instanceof Error?r.message:"unknown error",status:500,statusText:"INTERNAL_SERVER_ERROR"}}}}},$Infer:{}}),$e=()=>{let t=R();return{id:"passkey",$InferServerPlugin:{},getActions:n=>x(n,{_listPasskeys:t}),getAtoms(n){return{listPasskeys:l(t,"/passkey/list-user-passkeys",n,{method:"GET",credentials:"include"}),_listPasskeys:t}},pathMethods:{"/passkey/register":"POST","/passkey/authenticate":"POST"},atomListeners:[{matcher(n){return n==="/passkey/verify-registration"||n==="/passkey/delete-passkey"},signal:"_listPasskeys"}]}};var Ne=(t={redirect:!0,twoFactorPage:"/"})=>({id:"two-factor",$InferServerPlugin:{},atomListeners:[{matcher:n=>n.startsWith("/two-factor/"),signal:"_sessionSignal"}],pathMethods:{"/two-factor/disable":"POST","/two-factor/enable":"POST","/two-factor/send-otp":"POST","/two-factor/generate-backup-codes":"POST"},fetchPlugins:[{id:"two-factor",name:"two-factor",hooks:{async onSuccess(n){n.data?.twoFactorRedirect&&(t.redirect||t.twoFactorPage)&&typeof window<"u"&&(window.location.href=t.twoFactorPage)}}}]});var We=()=>({id:"magic-link",$InferServerPlugin:{}});var Ge=()=>({id:"phoneNumber",$InferServerPlugin:{},atomListeners:[{matcher(t){return t==="/phone-number/update"||t==="/phone-number/verify"},signal:"_sessionSignal"}]});var He=()=>({id:"anonymous",$InferServerPlugin:{},pathMethods:{"/sign-in/anonymous":"POST"}});var Je=t=>({id:"additional-fields-client",$InferServerPlugin:{}});var Ve=()=>({id:"better-auth-client",$InferServerPlugin:{},pathMethods:{"/admin/list-users":"GET"}});var Ye=()=>({id:"generic-oauth-client",$InferServerPlugin:{}});var et=()=>({id:"multi-session",$InferServerPlugin:{},pathMethods:{"/multi-session/sign-out-device-sessions":"POST"},atomListeners:[{matcher(t){return t==="/multi-session/set-active"},signal:"_sessionSignal"}]});export{Ve as adminClient,He as anonymousClient,Ye as genericOAuthClient,x as getPasskeyActions,Je as inferAdditionalFields,We as magicLinkClient,et as multiSessionClient,ve as organizationClient,$e as passkeyClient,Ge as phoneNumberClient,Ne as twoFactorClient,Ie as usernameClient};
|
|
2
|
-
//# sourceMappingURL=plugins.js.map
|
package/dist/client.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
"use strict";var A=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var j=(e,t)=>{for(var s in t)A(e,s,{get:t[s],enumerable:!0})},z=(e,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of G(t))!H.call(e,r)&&r!==s&&A(e,r,{get:()=>t[r],enumerable:!(i=M(t,r))||i.enumerable});return e};var N=e=>z(A({},"__esModule",{value:!0}),e);var J={};j(J,{createAuthClient:()=>Q,useAuthQuery:()=>O});module.exports=N(J);var S=require("@better-fetch/fetch");var f=require("std-env");var p=class extends Error{constructor(t,s){super(t),this.name="BetterAuthError",this.message=t,this.cause=s}};function X(e){try{return new URL(e).pathname!=="/"}catch{throw new p(`Invalid base URL: ${e}. Please provide a valid base URL.`)}}function T(e,t="/api/auth"){return X(e)?e:(t=t.startsWith("/")?t:`/${t}`,`${e}${t}`)}function F(e,t){if(e)return T(e,t);let s=f.env.BETTER_AUTH_URL||f.env.NEXT_PUBLIC_BETTER_AUTH_URL||f.env.PUBLIC_BETTER_AUTH_URL||f.env.NUXT_PUBLIC_BETTER_AUTH_URL||f.env.NUXT_PUBLIC_AUTH_URL||(f.env.BASE_URL!=="/"?f.env.BASE_URL:void 0);if(s)return T(s,t);if(typeof window<"u")return T(window.location.origin,t)}var re=require("nanostores");var b=require("@better-fetch/fetch");var C={id:"redirect",name:"Redirect",hooks:{onSuccess(e){e.data?.url&&e.data?.redirect&&typeof window<"u"&&(window.location.href=e.data.url)}}},L={id:"add-current-url",name:"Add current URL",hooks:{onRequest(e){if(typeof window<"u"){let t=new URL(e.url);t.searchParams.set("currentURL",window.location.href),e.url=t}return e}}},B={id:"csrf",name:"CSRF Check",async init(e,t){if(t?.method!=="GET"){t=t||{};let{data:s,error:i}=await(0,b.betterFetch)("/csrf",{body:void 0,baseURL:t.baseURL,plugins:[],method:"GET",credentials:"include",customFetchImpl:t.customFetchImpl});if(i){if(i.status===404)throw new p("CSRF route not found. Make sure the server is running and the base URL is correct and includes the path (e.g. http://localhost:3000/api/auth).");if(i.status===429)return new Response(JSON.stringify({message:"Too many requests. Please try again later."}),{status:429,statusText:"Too Many Requests"});throw new p("Failed to fetch CSRF token: "+i.message)}let r=s?.csrfToken;t.body={...t?.body,csrfToken:r}}return t.credentials="include",{url:e,options:t}}};var x=e=>{let t=(0,S.createFetch)({baseURL:F(e?.fetchOptions?.baseURL||e?.baseURL),credentials:"include",method:"GET",...e?.fetchOptions,plugins:e?.disableDefaultFetchPlugins?e.fetchOptions?.plugins:[...e?.disableCSRFTokenCheck?[]:[B],C,L,...e?.fetchOptions?.plugins?.filter(n=>n!==void 0)||[],...e?.plugins?.flatMap(n=>n.fetchPlugins).filter(n=>n!==void 0)||[]]}),s=e?.plugins||[],i={},r={},u={"/sign-out":"POST","/user/revoke-sessions":"POST"},o=[{signal:"_sessionSignal",matcher(n){return n==="/sign-out"||n==="/user/update"||n.startsWith("/sign-in")||n.startsWith("/sign-up")}}];for(let n of s)n.getActions&&Object.assign(i,n.getActions?.(t)),n.getAtoms&&Object.assign(r,n.getAtoms?.(t)),n.pathMethods&&Object.assign(u,n.pathMethods),n.atomListeners&&o.push(...n.atomListeners);return{pluginsActions:i,pluginsAtoms:r,pluginPathMethods:u,atomListeners:o,$fetch:t}};function w(e){return e.charAt(0).toUpperCase()+e.slice(1)}function D(e,t,s){let i=t[e],{fetchOptions:r,query:u,...o}=s||{};return i||(r?.method?r.method:o&&Object.keys(o).length>0?"POST":"GET")}function I(e,t,s,i,r){function u(o=[]){return new Proxy(function(){},{get(n,c){let l=[...o,c],a=e;for(let d of l)if(a&&typeof a=="object"&&d in a)a=a[d];else{a=void 0;break}return typeof a=="function"?a:u(l)},apply:async(n,c,l)=>{let a="/"+o.map(P=>P.replace(/[A-Z]/g,g=>`-${g.toLowerCase()}`)).join("/"),d=l[0]||{},y=l[1]||{},{query:_,fetchOptions:$,...v}=d,h={...y,...$},U=D(a,s,d);return await t(a,{...h,body:U==="GET"?void 0:{...v,...h?.body||{}},query:_||h?.query,method:U,async onSuccess(P){await h?.onSuccess?.(P);let g=r?.find(q=>q.matcher(a));if(!g)return;let R=i[g.signal];if(!R)return;let W=R.get();setTimeout(()=>{R.set(!W)},10)}})}})}return u()}var E=require("nanostores");var ce=require("@better-fetch/fetch"),m=require("nanostores"),O=(e,t,s,i)=>{let r=(0,m.atom)({data:null,error:null,isPending:!0,isRefetching:!1}),u=()=>{let n=typeof i=="function"?i({data:r.get().data,error:r.get().error,isPending:r.get().isPending}):i;return s(t,{...n,onSuccess:async c=>{r.set({data:c.data,error:null,isPending:!1,isRefetching:!1}),await n?.onSuccess?.(c)},async onError(c){r.set({error:c.error,data:null,isPending:!1,isRefetching:!1}),await n?.onError?.(c)},async onRequest(c){let l=r.get();r.set({isPending:l.data===null,data:l.data,error:null,isRefetching:!0}),await n?.onRequest?.(c)}})};e=Array.isArray(e)?e:[e];let o=!1;for(let n of e)n.subscribe(()=>{o?u():(0,m.onMount)(r,()=>(u(),o=!0,()=>{r.off(),n.off()}))});return r};function k(e){let t=(0,E.atom)(!1);return{$session:O(t,"/get-session",e,{method:"GET"}),_sessionSignal:t,$Infer:{}}}function Q(e){let{pluginPathMethods:t,pluginsActions:s,pluginsAtoms:i,$fetch:r,atomListeners:u}=x(e),o={};for(let[d,y]of Object.entries(i))o[`use${w(d)}`]=y;let{$session:n,_sessionSignal:c}=k(r),l={...s,...o,$fetch:r,useSession:n};return I(l,r,t,{...i,_sessionSignal:c},u)}0&&(module.exports={createAuthClient,useAuthQuery});
|
|
2
|
-
//# sourceMappingURL=client.cjs.map
|
package/dist/client.d.cts
CHANGED
|
@@ -106,18 +106,7 @@ declare function createAuthClient<Option extends ClientOptions>(options?: Option
|
|
|
106
106
|
params?: any;
|
|
107
107
|
duplex?: ("full" | "half") | undefined;
|
|
108
108
|
jsonParser?: (<T>(text: string) => Promise<T | undefined>) | undefined;
|
|
109
|
-
retry?:
|
|
110
|
-
type: "linear";
|
|
111
|
-
attempts: number;
|
|
112
|
-
delay: number;
|
|
113
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
114
|
-
} | {
|
|
115
|
-
type: "exponential";
|
|
116
|
-
attempts: number;
|
|
117
|
-
baseDelay: number;
|
|
118
|
-
maxDelay: number;
|
|
119
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
120
|
-
}) | undefined;
|
|
109
|
+
retry?: _better_fetch_fetch.RetryOptions | undefined;
|
|
121
110
|
retryAttempt?: number | undefined;
|
|
122
111
|
output?: (zod.ZodType | typeof Blob | typeof File) | undefined;
|
|
123
112
|
errorSchema?: zod.ZodType | undefined;
|
|
@@ -172,18 +161,7 @@ declare function createAuthClient<Option extends ClientOptions>(options?: Option
|
|
|
172
161
|
params?: any;
|
|
173
162
|
duplex?: ("full" | "half") | undefined;
|
|
174
163
|
jsonParser?: (<T>(text: string) => Promise<T | undefined>) | undefined;
|
|
175
|
-
retry?:
|
|
176
|
-
type: "linear";
|
|
177
|
-
attempts: number;
|
|
178
|
-
delay: number;
|
|
179
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
180
|
-
} | {
|
|
181
|
-
type: "exponential";
|
|
182
|
-
attempts: number;
|
|
183
|
-
baseDelay: number;
|
|
184
|
-
maxDelay: number;
|
|
185
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
186
|
-
}) | undefined;
|
|
164
|
+
retry?: _better_fetch_fetch.RetryOptions | undefined;
|
|
187
165
|
retryAttempt?: number | undefined;
|
|
188
166
|
output?: (zod.ZodType | typeof Blob | typeof File) | undefined;
|
|
189
167
|
errorSchema?: zod.ZodType | undefined;
|
|
@@ -237,18 +215,7 @@ declare function createAuthClient<Option extends ClientOptions>(options?: Option
|
|
|
237
215
|
params?: any;
|
|
238
216
|
duplex?: "full" | "half";
|
|
239
217
|
jsonParser?: <T>(text: string) => Promise<T | undefined>;
|
|
240
|
-
retry?:
|
|
241
|
-
type: "linear";
|
|
242
|
-
attempts: number;
|
|
243
|
-
delay: number;
|
|
244
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
245
|
-
} | {
|
|
246
|
-
type: "exponential";
|
|
247
|
-
attempts: number;
|
|
248
|
-
baseDelay: number;
|
|
249
|
-
maxDelay: number;
|
|
250
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
251
|
-
};
|
|
218
|
+
retry?: _better_fetch_fetch.RetryOptions;
|
|
252
219
|
retryAttempt?: number;
|
|
253
220
|
output?: zod.ZodType | typeof Blob | typeof File;
|
|
254
221
|
errorSchema?: zod.ZodType;
|
package/dist/client.d.ts
CHANGED
|
@@ -106,18 +106,7 @@ declare function createAuthClient<Option extends ClientOptions>(options?: Option
|
|
|
106
106
|
params?: any;
|
|
107
107
|
duplex?: ("full" | "half") | undefined;
|
|
108
108
|
jsonParser?: (<T>(text: string) => Promise<T | undefined>) | undefined;
|
|
109
|
-
retry?:
|
|
110
|
-
type: "linear";
|
|
111
|
-
attempts: number;
|
|
112
|
-
delay: number;
|
|
113
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
114
|
-
} | {
|
|
115
|
-
type: "exponential";
|
|
116
|
-
attempts: number;
|
|
117
|
-
baseDelay: number;
|
|
118
|
-
maxDelay: number;
|
|
119
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
120
|
-
}) | undefined;
|
|
109
|
+
retry?: _better_fetch_fetch.RetryOptions | undefined;
|
|
121
110
|
retryAttempt?: number | undefined;
|
|
122
111
|
output?: (zod.ZodType | typeof Blob | typeof File) | undefined;
|
|
123
112
|
errorSchema?: zod.ZodType | undefined;
|
|
@@ -172,18 +161,7 @@ declare function createAuthClient<Option extends ClientOptions>(options?: Option
|
|
|
172
161
|
params?: any;
|
|
173
162
|
duplex?: ("full" | "half") | undefined;
|
|
174
163
|
jsonParser?: (<T>(text: string) => Promise<T | undefined>) | undefined;
|
|
175
|
-
retry?:
|
|
176
|
-
type: "linear";
|
|
177
|
-
attempts: number;
|
|
178
|
-
delay: number;
|
|
179
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
180
|
-
} | {
|
|
181
|
-
type: "exponential";
|
|
182
|
-
attempts: number;
|
|
183
|
-
baseDelay: number;
|
|
184
|
-
maxDelay: number;
|
|
185
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
186
|
-
}) | undefined;
|
|
164
|
+
retry?: _better_fetch_fetch.RetryOptions | undefined;
|
|
187
165
|
retryAttempt?: number | undefined;
|
|
188
166
|
output?: (zod.ZodType | typeof Blob | typeof File) | undefined;
|
|
189
167
|
errorSchema?: zod.ZodType | undefined;
|
|
@@ -237,18 +215,7 @@ declare function createAuthClient<Option extends ClientOptions>(options?: Option
|
|
|
237
215
|
params?: any;
|
|
238
216
|
duplex?: "full" | "half";
|
|
239
217
|
jsonParser?: <T>(text: string) => Promise<T | undefined>;
|
|
240
|
-
retry?:
|
|
241
|
-
type: "linear";
|
|
242
|
-
attempts: number;
|
|
243
|
-
delay: number;
|
|
244
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
245
|
-
} | {
|
|
246
|
-
type: "exponential";
|
|
247
|
-
attempts: number;
|
|
248
|
-
baseDelay: number;
|
|
249
|
-
maxDelay: number;
|
|
250
|
-
shouldRetry?: (response: Response | null) => boolean | Promise<boolean>;
|
|
251
|
-
};
|
|
218
|
+
retry?: _better_fetch_fetch.RetryOptions;
|
|
252
219
|
retryAttempt?: number;
|
|
253
220
|
output?: zod.ZodType | typeof Blob | typeof File;
|
|
254
221
|
errorSchema?: zod.ZodType;
|
package/dist/client.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
import{createFetch as v}from"@better-fetch/fetch";import{env as p}from"std-env";var d=class extends Error{constructor(t,i){super(t),this.name="BetterAuthError",this.message=t,this.cause=i}};function _(e){try{return new URL(e).pathname!=="/"}catch{throw new d(`Invalid base URL: ${e}. Please provide a valid base URL.`)}}function R(e,t="/api/auth"){return _(e)?e:(t=t.startsWith("/")?t:`/${t}`,`${e}${t}`)}function T(e,t){if(e)return R(e,t);let i=p.BETTER_AUTH_URL||p.NEXT_PUBLIC_BETTER_AUTH_URL||p.PUBLIC_BETTER_AUTH_URL||p.NUXT_PUBLIC_BETTER_AUTH_URL||p.NUXT_PUBLIC_AUTH_URL||(p.BASE_URL!=="/"?p.BASE_URL:void 0);if(i)return R(i,t);if(typeof window<"u")return R(window.location.origin,t)}import"nanostores";import{betterFetch as $}from"@better-fetch/fetch";var O={id:"redirect",name:"Redirect",hooks:{onSuccess(e){e.data?.url&&e.data?.redirect&&typeof window<"u"&&(window.location.href=e.data.url)}}},U={id:"add-current-url",name:"Add current URL",hooks:{onRequest(e){if(typeof window<"u"){let t=new URL(e.url);t.searchParams.set("currentURL",window.location.href),e.url=t}return e}}},F={id:"csrf",name:"CSRF Check",async init(e,t){if(t?.method!=="GET"){t=t||{};let{data:i,error:s}=await $("/csrf",{body:void 0,baseURL:t.baseURL,plugins:[],method:"GET",credentials:"include",customFetchImpl:t.customFetchImpl});if(s){if(s.status===404)throw new d("CSRF route not found. Make sure the server is running and the base URL is correct and includes the path (e.g. http://localhost:3000/api/auth).");if(s.status===429)return new Response(JSON.stringify({message:"Too many requests. Please try again later."}),{status:429,statusText:"Too Many Requests"});throw new d("Failed to fetch CSRF token: "+s.message)}let r=i?.csrfToken;t.body={...t?.body,csrfToken:r}}return t.credentials="include",{url:e,options:t}}};var b=e=>{let t=v({baseURL:T(e?.fetchOptions?.baseURL||e?.baseURL),credentials:"include",method:"GET",...e?.fetchOptions,plugins:e?.disableDefaultFetchPlugins?e.fetchOptions?.plugins:[...e?.disableCSRFTokenCheck?[]:[F],O,U,...e?.fetchOptions?.plugins?.filter(n=>n!==void 0)||[],...e?.plugins?.flatMap(n=>n.fetchPlugins).filter(n=>n!==void 0)||[]]}),i=e?.plugins||[],s={},r={},u={"/sign-out":"POST","/user/revoke-sessions":"POST"},o=[{signal:"_sessionSignal",matcher(n){return n==="/sign-out"||n==="/user/update"||n.startsWith("/sign-in")||n.startsWith("/sign-up")}}];for(let n of i)n.getActions&&Object.assign(s,n.getActions?.(t)),n.getAtoms&&Object.assign(r,n.getAtoms?.(t)),n.pathMethods&&Object.assign(u,n.pathMethods),n.atomListeners&&o.push(...n.atomListeners);return{pluginsActions:s,pluginsAtoms:r,pluginPathMethods:u,atomListeners:o,$fetch:t}};function C(e){return e.charAt(0).toUpperCase()+e.slice(1)}function W(e,t,i){let s=t[e],{fetchOptions:r,query:u,...o}=i||{};return s||(r?.method?r.method:o&&Object.keys(o).length>0?"POST":"GET")}function L(e,t,i,s,r){function u(o=[]){return new Proxy(function(){},{get(n,c){let l=[...o,c],a=e;for(let f of l)if(a&&typeof a=="object"&&f in a)a=a[f];else{a=void 0;break}return typeof a=="function"?a:u(l)},apply:async(n,c,l)=>{let a="/"+o.map(y=>y.replace(/[A-Z]/g,g=>`-${g.toLowerCase()}`)).join("/"),f=l[0]||{},m=l[1]||{},{query:x,fetchOptions:w,...I}=f,h={...m,...w},A=W(a,i,f);return await t(a,{...h,body:A==="GET"?void 0:{...I,...h?.body||{}},query:x||h?.query,method:A,async onSuccess(y){await h?.onSuccess?.(y);let g=r?.find(k=>k.matcher(a));if(!g)return;let P=s[g.signal];if(!P)return;let E=P.get();setTimeout(()=>{P.set(!E)},10)}})}})}return u()}import{atom as G}from"nanostores";import"@better-fetch/fetch";import{atom as q,onMount as M}from"nanostores";var B=(e,t,i,s)=>{let r=q({data:null,error:null,isPending:!0,isRefetching:!1}),u=()=>{let n=typeof s=="function"?s({data:r.get().data,error:r.get().error,isPending:r.get().isPending}):s;return i(t,{...n,onSuccess:async c=>{r.set({data:c.data,error:null,isPending:!1,isRefetching:!1}),await n?.onSuccess?.(c)},async onError(c){r.set({error:c.error,data:null,isPending:!1,isRefetching:!1}),await n?.onError?.(c)},async onRequest(c){let l=r.get();r.set({isPending:l.data===null,data:l.data,error:null,isRefetching:!0}),await n?.onRequest?.(c)}})};e=Array.isArray(e)?e:[e];let o=!1;for(let n of e)n.subscribe(()=>{o?u():M(r,()=>(u(),o=!0,()=>{r.off(),n.off()}))});return r};function S(e){let t=G(!1);return{$session:B(t,"/get-session",e,{method:"GET"}),_sessionSignal:t,$Infer:{}}}function pe(e){let{pluginPathMethods:t,pluginsActions:i,pluginsAtoms:s,$fetch:r,atomListeners:u}=b(e),o={};for(let[f,m]of Object.entries(s))o[`use${C(f)}`]=m;let{$session:n,_sessionSignal:c}=S(r),l={...i,...o,$fetch:r,useSession:n};return L(l,r,t,{...s,_sessionSignal:c},u)}export{pe as createAuthClient,B as useAuthQuery};
|
|
2
|
-
//# sourceMappingURL=client.js.map
|
package/dist/cookies.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
"use strict";var d=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var x=(e,t)=>{for(var o in t)d(e,o,{get:t[o],enumerable:!0})},g=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of l(t))!b.call(e,n)&&n!==o&&d(e,n,{get:()=>t[n],enumerable:!(s=f(t,n))||s.enumerable});return e};var S=e=>g(d({},"__esModule",{value:!0}),e);var E={};x(E,{createCookieGetter:()=>A,deleteSessionCookie:()=>$,getCookies:()=>O,parseCookies:()=>R,parseSetCookieHeader:()=>v,setSessionCookie:()=>y});module.exports=S(E);var k=require("oslo");var p=class extends Error{constructor(t,o){super(t),this.name="BetterAuthError",this.message=t,this.cause=o}};var c=require("std-env");function O(e){let o=(e.advanced?.useSecureCookies!==void 0?e.advanced?.useSecureCookies:e.baseURL!==void 0?!!e.baseURL.startsWith("https://"):c.isProduction)?"__Secure-":"",s="better-auth",n=e.session?.expiresIn||new k.TimeSpan(7,"d").seconds(),i=!!e.advanced?.crossSubDomainCookies?.enabled,r=i?e.advanced?.crossSubDomainCookies?.domain||(e.baseURL?new URL(e.baseURL).hostname:void 0):void 0;if(i&&!r)throw new p("baseURL is required when crossSubdomainCookies are enabled");let a=i?"none":"lax";return{sessionToken:{name:`${o}${s}.session_token`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,maxAge:n,...i?{domain:r}:{}}},csrfToken:{name:`${o}${s}.csrf_token`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,maxAge:60*60*24*7,...i?{domain:r}:{}}},state:{name:`${o}${s}.state`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,maxAge:60*15,...i?{domain:r}:{}}},pkCodeVerifier:{name:`${o}${s}.pk_code_verifier`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,maxAge:60*15,...i?{domain:r}:{}}},dontRememberToken:{name:`${o}${s}.dont_remember`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,...i?{domain:r}:{}}},nonce:{name:`${o}${s}.nonce`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,maxAge:60*15,...i?{domain:r}:{}}}}}function A(e){let o=(e.advanced?.useSecureCookies!==void 0?e.advanced?.useSecureCookies:e.baseURL?.startsWith("https://")||c.isProduction)?"__Secure-":"",s="better-auth",n=e.advanced?.crossSubDomainCookies?.domain||(e.baseURL?new URL(e.baseURL).hostname:void 0);function i(r,a){let u=e.advanced?.crossSubDomainCookies?.enabled?e.advanced.crossSubDomainCookies.additionalCookies?.includes(r):void 0;return{name:c.env.NODE_ENV==="production"?`${o}${s}.${r}`:`${s}.${r}`,options:{secure:!!o,sameSite:"lax",path:"/",maxAge:60*15,...a,...u?{domain:n}:{}}}}return i}async function y(e,t,o,s){let n=e.context.authCookies.sessionToken.options;n.maxAge=o?void 0:e.context.sessionConfig.expiresIn,await e.setSignedCookie(e.context.authCookies.sessionToken.name,t,e.context.secret,{...n,...s}),o&&await e.setSignedCookie(e.context.authCookies.dontRememberToken.name,"true",e.context.secret,e.context.authCookies.dontRememberToken.options)}function $(e){e.setCookie(e.context.authCookies.sessionToken.name,"",{maxAge:0}),e.setCookie(e.context.authCookies.dontRememberToken.name,"",{maxAge:0})}function v(e){let t=new Map;return e.split(", ").forEach(s=>{let[n,...i]=s.split("; "),[r,a]=n.split("="),u={value:a};i.forEach(m=>{let[C,h]=m.split("=");u[C.toLowerCase()]=h||!0}),t.set(r,u)}),t}function R(e){let t=e.split("; "),o=new Map;return t.forEach(s=>{let[n,i]=s.split("=");o.set(n,i)}),o}0&&(module.exports={createCookieGetter,deleteSessionCookie,getCookies,parseCookies,parseSetCookieHeader,setSessionCookie});
|
|
2
|
-
//# sourceMappingURL=cookies.cjs.map
|
package/dist/cookies.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
import{TimeSpan as C}from"oslo";var u=class extends Error{constructor(i,o){super(i),this.name="BetterAuthError",this.message=i,this.cause=o}};import{env as h,isProduction as p}from"std-env";function g(e){let o=(e.advanced?.useSecureCookies!==void 0?e.advanced?.useSecureCookies:e.baseURL!==void 0?!!e.baseURL.startsWith("https://"):p)?"__Secure-":"",t="better-auth",r=e.session?.expiresIn||new C(7,"d").seconds(),s=!!e.advanced?.crossSubDomainCookies?.enabled,n=s?e.advanced?.crossSubDomainCookies?.domain||(e.baseURL?new URL(e.baseURL).hostname:void 0):void 0;if(s&&!n)throw new u("baseURL is required when crossSubdomainCookies are enabled");let a=s?"none":"lax";return{sessionToken:{name:`${o}${t}.session_token`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,maxAge:r,...s?{domain:n}:{}}},csrfToken:{name:`${o}${t}.csrf_token`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,maxAge:60*60*24*7,...s?{domain:n}:{}}},state:{name:`${o}${t}.state`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,maxAge:60*15,...s?{domain:n}:{}}},pkCodeVerifier:{name:`${o}${t}.pk_code_verifier`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,maxAge:60*15,...s?{domain:n}:{}}},dontRememberToken:{name:`${o}${t}.dont_remember`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,...s?{domain:n}:{}}},nonce:{name:`${o}${t}.nonce`,options:{httpOnly:!0,sameSite:a,path:"/",secure:!!o,maxAge:60*15,...s?{domain:n}:{}}}}}function S(e){let o=(e.advanced?.useSecureCookies!==void 0?e.advanced?.useSecureCookies:e.baseURL?.startsWith("https://")||p)?"__Secure-":"",t="better-auth",r=e.advanced?.crossSubDomainCookies?.domain||(e.baseURL?new URL(e.baseURL).hostname:void 0);function s(n,a){let c=e.advanced?.crossSubDomainCookies?.enabled?e.advanced.crossSubDomainCookies.additionalCookies?.includes(n):void 0;return{name:h.NODE_ENV==="production"?`${o}${t}.${n}`:`${t}.${n}`,options:{secure:!!o,sameSite:"lax",path:"/",maxAge:60*15,...a,...c?{domain:r}:{}}}}return s}async function O(e,i,o,t){let r=e.context.authCookies.sessionToken.options;r.maxAge=o?void 0:e.context.sessionConfig.expiresIn,await e.setSignedCookie(e.context.authCookies.sessionToken.name,i,e.context.secret,{...r,...t}),o&&await e.setSignedCookie(e.context.authCookies.dontRememberToken.name,"true",e.context.secret,e.context.authCookies.dontRememberToken.options)}function A(e){e.setCookie(e.context.authCookies.sessionToken.name,"",{maxAge:0}),e.setCookie(e.context.authCookies.dontRememberToken.name,"",{maxAge:0})}function y(e){let i=new Map;return e.split(", ").forEach(t=>{let[r,...s]=t.split("; "),[n,a]=r.split("="),c={value:a};s.forEach(d=>{let[k,m]=d.split("=");c[k.toLowerCase()]=m||!0}),i.set(n,c)}),i}function $(e){let i=e.split("; "),o=new Map;return i.forEach(t=>{let[r,s]=t.split("=");o.set(r,s)}),o}export{S as createCookieGetter,A as deleteSessionCookie,g as getCookies,$ as parseCookies,y as parseSetCookieHeader,O as setSessionCookie};
|
|
2
|
-
//# sourceMappingURL=cookies.js.map
|
package/dist/crypto.cjs
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
"use strict";var U=Object.create;var y=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var D=(t,e)=>{for(var r in e)y(t,r,{get:e[r],enumerable:!0})},h=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of E(e))!R.call(t,o)&&o!==r&&y(t,o,{get:()=>e[o],enumerable:!(n=k(e,o))||n.enumerable});return t};var w=(t,e,r)=>(r=t!=null?U(N(t)):{},h(e||!t||!t.__esModule?y(r,"default",{value:t,enumerable:!0}):r,t)),H=t=>h(y({},"__esModule",{value:!0}),t);var z={};D(z,{alphabet:()=>K,byteToBinary:()=>B,bytesToBinary:()=>S,bytesToInteger:()=>f,constantTimeEqual:()=>p,generateRandomInteger:()=>T,generateRandomString:()=>I,hashPassword:()=>P,hs256:()=>L,random:()=>C,symmetricDecrypt:()=>q,symmetricEncrypt:()=>O,verifyPassword:()=>V});module.exports=H(z);var g=require("@noble/ciphers/chacha"),i=require("@noble/ciphers/utils"),l=require("@noble/ciphers/webcrypto"),d=require("oslo/crypto"),u=w(require("uncrypto"),1);function p(t,e){let r=new Uint8Array(t),n=new Uint8Array(e);if(r.length!==n.length)return!1;let o=0;for(let a=0;a<r.length;a++)o|=r[a]^n[a];return o===0}var c=require("oslo/encoding");var A=require("@noble/hashes/scrypt"),x=require("uncrypto"),s={N:16384,r:16,p:1,dkLen:64};async function b(t,e){return await(0,A.scryptAsync)(t.normalize("NFKC"),e,{N:s.N,p:s.p,r:s.r,dkLen:s.dkLen,maxmem:128*s.N*s.r*2})}var P=async t=>{let e=(0,c.encodeHex)((0,x.getRandomValues)(new Uint8Array(16))),r=await b(t,e);return`${e}:${(0,c.encodeHex)(r)}`},V=async(t,e)=>{let[r,n]=t.split(":"),o=await b(e,r);return p(o,(0,c.decodeHex)(n))};var m=w(require("uncrypto"),1);function B(t){return t.toString(2).padStart(8,"0")}function S(t){return[...t].map(e=>B(e)).join("")}function f(t){return parseInt(S(t),2)}function C(){let t=new ArrayBuffer(8),e=m.default.getRandomValues(new Uint8Array(t));return e[0]=63,e[1]=e[1]|240,new DataView(t).getFloat64(0)-1}function T(t){if(t<0||!Number.isInteger(t))throw new Error("Argument 'max' must be an integer greater than or equal to 0");let e=(t-1).toString(2).length,r=e%8,n=new Uint8Array(Math.ceil(e/8));m.default.getRandomValues(n),r!==0&&(n[0]&=(1<<r)-1);let o=f(n);for(;o>=t;)m.default.getRandomValues(n),r!==0&&(n[0]&=(1<<r)-1),o=f(n);return o}function I(t,e){let r="";for(let n=0;n<t;n++)r+=e[T(e.length)];return r}function K(...t){let e=new Set(t),r="";for(let n of e)n==="a-z"?r+="abcdefghijklmnopqrstuvwxyz":n==="A-Z"?r+="ABCDEFGHIJKLMNOPQRSTUVWXYZ":n==="0-9"?r+="0123456789":r+=n;return r}async function L(t,e){let r=new TextEncoder,n={name:"HMAC",hash:"SHA-256"},o=await u.default.subtle.importKey("raw",r.encode(t),n,!1,["sign","verify"]),a=await u.default.subtle.sign(n.name,o,r.encode(e));return btoa(String.fromCharCode(...new Uint8Array(a)))}var O=async({key:t,data:e})=>{let r=await(0,d.sha256)(new TextEncoder().encode(t)),n=(0,i.utf8ToBytes)(e),o=(0,l.managedNonce)(g.xchacha20poly1305)(new Uint8Array(r));return(0,i.bytesToHex)(o.encrypt(n))},q=async({key:t,data:e})=>{let r=await(0,d.sha256)(new TextEncoder().encode(t)),n=(0,i.hexToBytes)(e),o=(0,l.managedNonce)(g.xchacha20poly1305)(new Uint8Array(r));return new TextDecoder().decode(o.decrypt(n))};0&&(module.exports={alphabet,byteToBinary,bytesToBinary,bytesToInteger,constantTimeEqual,generateRandomInteger,generateRandomString,hashPassword,hs256,random,symmetricDecrypt,symmetricEncrypt,verifyPassword});
|
|
2
|
-
//# sourceMappingURL=crypto.cjs.map
|
package/dist/crypto.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
1
|
import{xchacha20poly1305 as u}from"@noble/ciphers/chacha";import{bytesToHex as B,hexToBytes as S,utf8ToBytes as T}from"@noble/ciphers/utils";import{managedNonce as g}from"@noble/ciphers/webcrypto";import{sha256 as l}from"oslo/crypto";import f from"uncrypto";function c(t,e){let r=new Uint8Array(t),n=new Uint8Array(e);if(r.length!==n.length)return!1;let o=0;for(let a=0;a<r.length;a++)o|=r[a]^n[a];return o===0}import{decodeHex as d,encodeHex as y}from"oslo/encoding";import{scryptAsync as h}from"@noble/hashes/scrypt";import{getRandomValues as w}from"uncrypto";var s={N:16384,r:16,p:1,dkLen:64};async function m(t,e){return await h(t.normalize("NFKC"),e,{N:s.N,p:s.p,r:s.r,dkLen:s.dkLen,maxmem:128*s.N*s.r*2})}var D=async t=>{let e=y(w(new Uint8Array(16))),r=await m(t,e);return`${e}:${y(r)}`},H=async(t,e)=>{let[r,n]=t.split(":"),o=await m(e,r);return c(o,d(n))};import i from"uncrypto";function A(t){return t.toString(2).padStart(8,"0")}function x(t){return[...t].map(e=>A(e)).join("")}function p(t){return parseInt(x(t),2)}function C(){let t=new ArrayBuffer(8),e=i.getRandomValues(new Uint8Array(t));return e[0]=63,e[1]=e[1]|240,new DataView(t).getFloat64(0)-1}function b(t){if(t<0||!Number.isInteger(t))throw new Error("Argument 'max' must be an integer greater than or equal to 0");let e=(t-1).toString(2).length,r=e%8,n=new Uint8Array(Math.ceil(e/8));i.getRandomValues(n),r!==0&&(n[0]&=(1<<r)-1);let o=p(n);for(;o>=t;)i.getRandomValues(n),r!==0&&(n[0]&=(1<<r)-1),o=p(n);return o}function I(t,e){let r="";for(let n=0;n<t;n++)r+=e[b(e.length)];return r}function K(...t){let e=new Set(t),r="";for(let n of e)n==="a-z"?r+="abcdefghijklmnopqrstuvwxyz":n==="A-Z"?r+="ABCDEFGHIJKLMNOPQRSTUVWXYZ":n==="0-9"?r+="0123456789":r+=n;return r}async function M(t,e){let r=new TextEncoder,n={name:"HMAC",hash:"SHA-256"},o=await f.subtle.importKey("raw",r.encode(t),n,!1,["sign","verify"]),a=await f.subtle.sign(n.name,o,r.encode(e));return btoa(String.fromCharCode(...new Uint8Array(a)))}var Z=async({key:t,data:e})=>{let r=await l(new TextEncoder().encode(t)),n=T(e),o=g(u)(new Uint8Array(r));return B(o.encrypt(n))},j=async({key:t,data:e})=>{let r=await l(new TextEncoder().encode(t)),n=S(e),o=g(u)(new Uint8Array(r));return new TextDecoder().decode(o.decrypt(n))};export{K as alphabet,A as byteToBinary,x as bytesToBinary,p as bytesToInteger,c as constantTimeEqual,b as generateRandomInteger,I as generateRandomString,D as hashPassword,M as hs256,C as random,j as symmetricDecrypt,Z as symmetricEncrypt,H as verifyPassword};
|
|
2
|
-
//# sourceMappingURL=crypto.js.map
|
package/dist/db.cjs
CHANGED
|
@@ -2,4 +2,3 @@
|
|
|
2
2
|
`)}}),S=ee();function M(e){let r=h(e),a={};for(let n in r){let o=r[n],s=o.fields,c={};if(Object.entries(s).forEach(([f,t])=>{c[t.fieldName||f]=t}),a[o.tableName]){a[o.tableName].fields={...a[o.tableName].fields,...c};continue}a[o.tableName]={fields:c,order:o.order||1/0}}return a}var te={string:["character varying","text"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamp","date"]},re={string:["varchar","text"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean"],date:["date","datetime"]},se={string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"]},ie={string:["nvarchar","varchar"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","boolean"],date:["datetime","date"]},ne={postgres:te,mysql:re,sqlite:se,mssql:ie};function $(e,r,a){return r==="string[]"||r==="number[]"?e.toLowerCase().includes("json"):ne[a][r].map(c=>c.toLowerCase()).includes(e.toLowerCase())}async function ae(e){let r=M(e),{kysely:a,databaseType:n}=await O(e);n||(S.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),n="sqlite"),a||(S.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 o=await a.introspection.getTables(),s=[],c=[];for(let[l,u]of Object.entries(r)){let m=o.find(y=>y.name===l);if(!m){let y=s.findIndex(N=>N.table===l),b={table:l,fields:u.fields,order:u.order||1/0},T=s.findIndex(N=>(N.order||1/0)>b.order);T===-1?y===-1?s.push(b):s[y].fields={...s[y].fields,...u.fields}:s.splice(T,0,b);continue}let p={};for(let[y,b]of Object.entries(u.fields)){let T=m.columns.find(N=>N.name===y);if(!T){p[y]=b;continue}$(T.dataType,b.type,n)||S.warn(`Field ${y} in table ${l} has a different type in the database. Expected ${b.type} but got ${T.dataType}.`)}Object.keys(p).length>0&&c.push({table:l,fields:p,order:u.order||1/0})}let f=[];function t(l){let u={string:"text",boolean:"boolean",number:"integer",date:"date"};return n==="mysql"&&l==="string"?"varchar(255)":n==="sqlite"&&(l==="string[]"||l==="number[]")?"text":l==="string[]"||l==="number[]"?"jsonb":u[l]}if(c.length)for(let l of c)for(let[u,m]of Object.entries(l.fields)){let p=t(m.type),y=a.schema.alterTable(l.table).addColumn(u,p,b=>(b=m.required!==!1?b.notNull():b,m.references&&(b=b.references(`${m.references.model}.${m.references.field}`)),b));f.push(y)}if(s.length)for(let l of s){let u=a.schema.createTable(l.table).addColumn("id",t("string"),m=>m.primaryKey().notNull());for(let[m,p]of Object.entries(l.fields)){let y=t(p.type);u=u.addColumn(m,y,b=>(b=p.required!==!1?b.notNull():b,p.references&&(b=b.references(`${p.references.model}.${p.references.field}`)),p.unique&&(b=b.unique()),b))}f.push(u)}async function i(){for(let l of f)await l.execute()}async function d(){return f.map(u=>u.compile().sql).join(`;
|
|
3
3
|
|
|
4
4
|
`)}return{toBeCreated:s,toBeAdded:c,runMigrations:i,compileMigrations:d}}0&&(module.exports={convertFromDB,convertToDB,createFieldAttribute,createInternalAdapter,getAdapter,getAuthTables,getMigrations,getSchema,getWithHooks,matchType,toZodSchema});
|
|
5
|
-
//# sourceMappingURL=db.cjs.map
|
package/dist/db.js
CHANGED
|
@@ -2,4 +2,3 @@ var q=(e,s="ms")=>new Date(Date.now()+(s==="sec"?e*1e3:e));var h=e=>{let s=e.plu
|
|
|
2
2
|
`)}}),O=H();function P(e){let s=h(e),a={};for(let n in s){let d=s[n],r=d.fields,c={};if(Object.entries(r).forEach(([f,t])=>{c[t.fieldName||f]=t}),a[d.tableName]){a[d.tableName].fields={...a[d.tableName].fields,...c};continue}a[d.tableName]={fields:c,order:d.order||1/0}}return a}var J={string:["character varying","text"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamp","date"]},Z={string:["varchar","text"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean"],date:["date","datetime"]},_={string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"]},z={string:["nvarchar","varchar"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","boolean"],date:["datetime","date"]},G={postgres:J,mysql:Z,sqlite:_,mssql:z};function X(e,s,a){return s==="string[]"||s==="number[]"?e.toLowerCase().includes("json"):G[a][s].map(c=>c.toLowerCase()).includes(e.toLowerCase())}async function Le(e){let s=P(e),{kysely:a,databaseType:n}=await k(e);n||(O.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),n="sqlite"),a||(O.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 d=await a.introspection.getTables(),r=[],c=[];for(let[l,u]of Object.entries(s)){let m=d.find(y=>y.name===l);if(!m){let y=r.findIndex(T=>T.table===l),b={table:l,fields:u.fields,order:u.order||1/0},x=r.findIndex(T=>(T.order||1/0)>b.order);x===-1?y===-1?r.push(b):r[y].fields={...r[y].fields,...u.fields}:r.splice(x,0,b);continue}let p={};for(let[y,b]of Object.entries(u.fields)){let x=m.columns.find(T=>T.name===y);if(!x){p[y]=b;continue}X(x.dataType,b.type,n)||O.warn(`Field ${y} in table ${l} has a different type in the database. Expected ${b.type} but got ${x.dataType}.`)}Object.keys(p).length>0&&c.push({table:l,fields:p,order:u.order||1/0})}let f=[];function t(l){let u={string:"text",boolean:"boolean",number:"integer",date:"date"};return n==="mysql"&&l==="string"?"varchar(255)":n==="sqlite"&&(l==="string[]"||l==="number[]")?"text":l==="string[]"||l==="number[]"?"jsonb":u[l]}if(c.length)for(let l of c)for(let[u,m]of Object.entries(l.fields)){let p=t(m.type),y=a.schema.alterTable(l.table).addColumn(u,p,b=>(b=m.required!==!1?b.notNull():b,m.references&&(b=b.references(`${m.references.model}.${m.references.field}`)),b));f.push(y)}if(r.length)for(let l of r){let u=a.schema.createTable(l.table).addColumn("id",t("string"),m=>m.primaryKey().notNull());for(let[m,p]of Object.entries(l.fields)){let y=t(p.type);u=u.addColumn(m,y,b=>(b=p.required!==!1?b.notNull():b,p.references&&(b=b.references(`${p.references.model}.${p.references.field}`)),p.unique&&(b=b.unique()),b))}f.push(u)}async function i(){for(let l of f)await l.execute()}async function o(){return f.map(u=>u.compile().sql).join(`;
|
|
3
3
|
|
|
4
4
|
`)}return{toBeCreated:r,toBeAdded:c,runMigrations:i,compileMigrations:o}}export{g as convertFromDB,D as convertToDB,qe as createFieldAttribute,ve as createInternalAdapter,me as getAdapter,h as getAuthTables,Le as getMigrations,P as getSchema,C as getWithHooks,X as matchType,Re as toZodSchema};
|
|
5
|
-
//# sourceMappingURL=db.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -81,4 +81,3 @@ Error: `,m),e.redirect(`${e.context.baseURL}/error?error=internal_server_error`)
|
|
|
81
81
|
</div>
|
|
82
82
|
</body>
|
|
83
83
|
</html>`,rr=y("/error",{method:"GET",metadata:D},async e=>{let t=new URL(e.request?.url||"").searchParams.get("error")||"Unknown";return new Response(Lr(t),{headers:{"Content-Type":"text/html"}})});var or=y("/ok",{method:"GET",metadata:D},async e=>e.json({ok:!0}));var K=require("zod");var C=require("better-call");var nr=()=>y("/sign-up/email",{method:"POST",query:K.z.object({currentURL:K.z.string().optional()}).optional(),body:K.z.record(K.z.string(),K.z.any()),use:[O]},async e=>{if(!e.context.options.emailAndPassword?.enabled)throw new C.APIError("BAD_REQUEST",{message:"Email and password sign up is not enabled"});let t=e.body,{name:r,email:o,password:i,image:n,callbackURL:a,...c}=t;if(!K.z.string().email().safeParse(o).success)throw new C.APIError("BAD_REQUEST",{message:"Invalid email"});let d=e.context.password.config.minPasswordLength;if(i.length<d)throw e.context.logger.error("Password is too short"),new C.APIError("BAD_REQUEST",{message:"Password is too short"});let l=e.context.password.config.maxPasswordLength;if(i.length>l)throw e.context.logger.error("Password is too long"),new C.APIError("BAD_REQUEST",{message:"Password is too long"});if((await e.context.internalAdapter.findUserByEmail(o))?.user)throw e.context.logger.info(`Sign-up attempt for existing email: ${o}`),new C.APIError("UNPROCESSABLE_ENTITY",{message:"User with this email already exists"});let p=jt(e.context.options,c),u;try{if(u=await e.context.internalAdapter.createUser({email:o.toLowerCase(),name:r,image:n,...p,emailVerified:!1}),!u)throw new C.APIError("BAD_REQUEST",{message:"Failed to create user"})}catch(m){throw new C.APIError("UNPROCESSABLE_ENTITY",{message:"Failed to create user",details:m})}if(!u)throw new C.APIError("UNPROCESSABLE_ENTITY",{message:"Failed to create user"});let g=await e.context.password.hash(i);if(await e.context.internalAdapter.linkAccount({userId:u.id,providerId:"credential",accountId:u.id,password:g,expiresAt:B(60*60*24*30,"sec")}),e.context.options.emailVerification?.sendOnSignUp){let m=await N(e.context.secret,u.email),T=`${e.context.baseURL}/verify-email?token=${m}&callbackURL=${t.callbackURL||e.query?.currentURL||"/"}`;await e.context.options.emailVerification?.sendVerificationEmail?.(u,T,m)}if(!e.context.options.emailAndPassword.autoSignIn||e.context.options.emailAndPassword.requireEmailVerification)return e.json({user:u,session:null},{body:t.callbackURL?{url:t.callbackURL,redirect:!0}:{user:u,session:null}});let h=await e.context.internalAdapter.createSession(u.id,e.request);if(!h)throw new C.APIError("BAD_REQUEST",{message:"Failed to create session"});return await _(e,h.id),e.json({user:u,session:h},{body:t.callbackURL?{url:t.callbackURL,redirect:!0}:{user:u,session:h}})});var ir=require("std-env");function he(e){let t="127.0.0.1";if(ir.isTest)return t;let r=["x-client-ip","x-forwarded-for","cf-connecting-ip","fastly-client-ip","x-real-ip","x-cluster-client-ip","x-forwarded","forwarded-for","forwarded"],o=e instanceof Request?e.headers:e;for(let i of r){let n=o.get(i);if(typeof n=="string"){let a=n.split(",")[0].trim();if(a)return a}}return null}function _r(e,t,r){let o=Date.now(),i=t*1e3;return o-r.lastRequest<i&&r.count>=e}function Cr(e){return new Response(JSON.stringify({message:"Too many requests. Please try again later."}),{status:429,statusText:"Too Many Requests",headers:{"X-Retry-After":e.toString()}})}function Br(e,t){let r=Date.now(),o=t*1e3;return Math.ceil((e+o-r)/1e3)}function Dr(e,t){let r=t??"rateLimit",o=e.adapter;return{get:async i=>await o.findOne({model:r,where:[{field:"key",value:i}]}),set:async(i,n,a)=>{try{a?await o.update({model:t??"rateLimit",where:[{field:"key",value:i}],update:{count:n.count,lastRequest:n.lastRequest}}):await o.create({model:t??"rateLimit",data:{key:i,count:n.count,lastRequest:n.lastRequest}})}catch(c){b.error("Error setting rate limit",c)}}}}var sr=new Map;function Fr(e){return e.rateLimit.storage==="secondary-storage"?{get:async r=>{let o=await e.options.secondaryStorage?.get(r);return o?JSON.parse(o):void 0},set:async(r,o)=>{await e.options.secondaryStorage?.set?.(r,JSON.stringify(o))}}:e.rateLimit.storage==="memory"?{async get(r){return sr.get(r)},async set(r,o,i){sr.set(r,o)}}:Dr(e,e.rateLimit.tableName)}async function ar(e,t){if(!t.rateLimit.enabled)return;let r=t.baseURL,o=e.url.replace(r,""),i=t.rateLimit.window,n=t.rateLimit.max,a=he(e)+o,s=Nr().find(p=>p.pathMatcher(o));s&&(i=s.window,n=s.max);for(let p of t.options.plugins||[])if(p.rateLimit){let u=p.rateLimit.find(g=>g.pathMatcher(o));if(u){i=u.window,n=u.max;break}}if(t.rateLimit.customRules){let p=t.rateLimit.customRules[o];p&&(i=p.window,n=p.max)}let d=Fr(t),l=await d.get(a),f=Date.now();if(!l)await d.set(a,{key:a,count:1,lastRequest:f});else{let p=f-l.lastRequest;if(_r(n,i,l)){let u=Br(l.lastRequest,i);return Cr(u)}else p>i*1e3?await d.set(a,{...l,count:1,lastRequest:f}):await d.set(a,{...l,count:l.count+1,lastRequest:f})}}function Nr(){return[{pathMatcher(t){return t.startsWith("/sign-in")||t.startsWith("/sign-up")},window:10,max:3}]}var qr=require("better-call");function Le(e,t){let r=t.plugins?.reduce((c,s)=>({...c,...s.endpoints}),{}),o=t.plugins?.map(c=>c.middlewares?.map(s=>{let d=async l=>s.middleware({...l,context:{...e,...l.context}});return d.path=s.path,d.options=s.middleware.options,d.headers=s.middleware.headers,{path:s.path,middleware:d}})).filter(c=>c!==void 0).flat()||[],n={...{signInOAuth:Ft,callbackOAuth:Mt,getCSRFToken:tr,getSession:Pe(),signOut:Kt,signUpEmail:nr(),signInEmail:Nt,forgetPassword:Zt,resetPassword:Qt,verifyEmail:Bt,sendVerificationEmail:Ct,changeEmail:er,changePassword:Jt,setPassword:Yt,updateUser:Wt(),deleteUser:Xt,forgetPasswordCallback:Gt,listSessions:Pt(),revokeSession:St,revokeSessions:Lt},...r,ok:or,error:rr},a={};for(let[c,s]of Object.entries(n))a[c]=async(d={})=>{let l=await e;for(let u of t.plugins||[])if(u.hooks?.before){for(let g of u.hooks.before)if(g.matcher({...s,...d,context:l})){let m=await g.handler({...d,context:{...l,...d?.context}});m&&"context"in m&&(l={...l,...m.context})}}let f;try{f=await s({...d,context:{...l,...d.context}})}catch(u){if(u instanceof Z.APIError){let g=t.plugins?.map(m=>{if(m.hooks?.after)return m.hooks.after}).filter(m=>m!==void 0).flat();if(!g?.length)throw u;let h=new Response(JSON.stringify(u.body),{status:Z.statusCode[u.status],headers:u.headers});for(let m of g||[])if(m.matcher(d)){let X=Object.assign(d,{context:{...e,returned:h}}),z=await m.handler(X);z&&"response"in z&&(h=z.response)}return h}throw u}let p=f;for(let u of t.plugins||[])if(u.hooks?.after){for(let g of u.hooks.after)if(g.matcher(d)){let m=Object.assign(d,{context:{...e,returned:p}}),T=await g.handler(m);T&&"response"in T&&(p=T.response)}}return p},a[c].path=s.path,a[c].method=s.method,a[c].options=s.options,a[c].headers=s.headers;return{api:a,middlewares:o}}var dr=(e,t)=>{let{api:r,middlewares:o}=Le(e,t),i=new URL(e.baseURL).pathname;return(0,Z.createRouter)(r,{extraContext:e,basePath:i,routerMiddleware:[{path:"/**",middleware:Ge},...o],async onRequest(n){for(let a of e.options.plugins||[])if(a.onRequest){let c=await a.onRequest(n,e);if(c)return c}return ar(n,e)},async onResponse(n){for(let a of e.options.plugins||[])if(a.onResponse){let c=await a.onResponse(n,e);if(c)return c.response}return n},onError(n){if(t.onAPIError?.throw)throw n;if(t.onAPIError?.onError){t.onAPIError.onError(n,e);return}let a=t.logger?.verboseLogging?b:void 0;t.logger?.disabled!==!0&&(n instanceof Z.APIError?(n.status==="INTERNAL_SERVER_ERROR"&&b.error(n),a?.error(n.message)):b?.error(n))}})};var q=e=>{let t=e.plugins?.reduce((s,d)=>{let l=d.schema;if(!l)return s;for(let[f,p]of Object.entries(l))s[f]={fields:{...s[f]?.fields,...p.fields},tableName:p.tableName||f};return s},{}),r=e.rateLimit?.storage==="database",o={rateLimit:{tableName:e.rateLimit?.tableName||"rateLimit",fields:{key:{type:"string",fieldName:e.rateLimit?.fields?.key||"key"},count:{type:"number",fieldName:e.rateLimit?.fields?.count||"count"},lastRequest:{type:"number",fieldName:e.rateLimit?.fields?.lastRequest||"lastRequest"}}}},{user:i,session:n,account:a,...c}=t||{};return{user:{tableName:e.user?.modelName||"user",fields:{name:{type:"string",required:!0,fieldName:e.user?.fields?.name||"name"},email:{type:"string",unique:!0,required:!0,fieldName:e.user?.fields?.email||"email"},emailVerified:{type:"boolean",defaultValue:()=>!1,required:!0,fieldName:e.user?.fields?.emailVerified||"emailVerified"},image:{type:"string",required:!1,fieldName:e.user?.fields?.image||"image"},createdAt:{type:"date",defaultValue:()=>new Date,required:!0,fieldName:e.user?.fields?.createdAt||"createdAt"},updatedAt:{type:"date",defaultValue:()=>new Date,required:!0,fieldName:e.user?.fields?.updatedAt||"updatedAt"},...i?.fields,...e.user?.additionalFields},order:1},session:{tableName:e.session?.modelName||"session",fields:{expiresAt:{type:"date",required:!0,fieldName:e.session?.fields?.expiresAt||"expiresAt"},ipAddress:{type:"string",required:!1,fieldName:e.session?.fields?.ipAddress||"ipAddress"},userAgent:{type:"string",required:!1,fieldName:e.session?.fields?.userAgent||"userAgent"},userId:{type:"string",fieldName:e.session?.fields?.userId||"userId",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0},...n?.fields,...e.session?.additionalFields},order:2},account:{tableName:e.account?.modelName||"account",fields:{accountId:{type:"string",required:!0,fieldName:e.account?.fields?.accountId||"accountId"},providerId:{type:"string",required:!0,fieldName:e.account?.fields?.providerId||"providerId"},userId:{type:"string",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0,fieldName:e.account?.fields?.userId||"userId"},accessToken:{type:"string",required:!1,fieldName:e.account?.fields?.accessToken||"accessToken"},refreshToken:{type:"string",required:!1,fieldName:e.account?.fields?.refreshToken||"refreshToken"},idToken:{type:"string",required:!1,fieldName:e.account?.fields?.idToken||"idToken"},expiresAt:{type:"date",required:!1,fieldName:e.account?.fields?.expiresAt||"expiresAt"},password:{type:"string",required:!1,fieldName:e.account?.fields?.password||"password"},...a?.fields},order:3},verification:{tableName:e.verification?.modelName||"verification",fields:{identifier:{type:"string",required:!0,fieldName:e.verification?.fields?.identifier||"identifier"},value:{type:"string",required:!0,fieldName:e.verification?.fields?.value||"value"},expiresAt:{type:"date",required:!0,fieldName:e.verification?.fields?.expiresAt||"expiresAt"}},order:4},...c,...r?o:{}}};var ie=require("kysely"),V=require("kysely");function cr(e){if("dialect"in e)return cr(e.dialect);if("createDriver"in e){if(e instanceof V.SqliteDialect)return"sqlite";if(e instanceof V.MysqlDialect)return"mysql";if(e instanceof V.PostgresDialect)return"postgres";if(e instanceof ie.MssqlDialect)return"mssql"}return"aggregate"in e?"sqlite":"getConnection"in e?"mysql":"connect"in e?"postgres":null}var se=async e=>{let t=e.database;if("db"in t)return{kysely:t.db,databaseType:t.type};if("dialect"in t)return{kysely:new ie.Kysely({dialect:t.dialect}),databaseType:t.type};let r,o=cr(t);return"createDriver"in t&&(r=t),"aggregate"in t&&(r=new V.SqliteDialect({database:t})),"getConnection"in t&&(r=new V.MysqlDialect({pool:t})),"connect"in t&&(r=new V.PostgresDialect({pool:t})),{kysely:r?new ie.Kysely({dialect:r}):null,databaseType:o}};function ae(e){if(!e)return{and:null,or:null};let t={and:[],or:[]};return e.forEach(r=>{let{field:o,value:i,operator:n="=",connector:a="AND"}=r,c=s=>n.toLowerCase()==="in"?s(o,"in",Array.isArray(i)?i:[i]):n==="contains"?s(o,"like",`%${i}%`):n==="starts_with"?s(o,"like",`${i}%`):n==="ends_with"?s(o,"like",`%${i}`):s(o,n,i);a==="OR"?t.or.push(c):t.and.push(c)}),{and:t.and.length?t.and:null,or:t.or.length?t.or:null}}function ye(e,t,r){for(let o in e){let i=t[o]||Object.values(t).find(n=>n.fieldName===o);e[o]===0&&i.type==="boolean"&&r?.boolean&&(e[o]=!1),e[o]===1&&i?.type==="boolean"&&r?.boolean&&(e[o]=!0),i?.type==="date"&&(e[o]instanceof Date||(e[o]=new Date(e[o])))}return e}function lr(e,t){for(let r in e)typeof e[r]=="boolean"&&t?.boolean&&(e[r]=e[r]?1:0),e[r]instanceof Date&&(e[r]=e[r].toISOString());return e}var ur=(e,t)=>({id:"kysely",async create(r){let{model:o,data:i,select:n}=r;t?.transform&&(i=lr(i,t.transform)),t?.generateId!==void 0&&(i.id=t.generateId?t.generateId():void 0);let a=await e.insertInto(o).values(i).returningAll().executeTakeFirst();if(t?.transform){let c=t.transform.schema[o];a=c?ye(i,c,t.transform):a}return n?.length&&(a=a?n.reduce((s,d)=>a?.[d]?{...s,[d]:a[d]}:s,{}):null),a},async findOne(r){let{model:o,where:i,select:n}=r,{and:a,or:c}=ae(i),s=e.selectFrom(o).selectAll();a&&(s=s.where(l=>l.and(a.map(f=>f(l))))),c&&(s=s.where(l=>l.or(c.map(f=>f(l)))));let d=await s.executeTakeFirst();if(n?.length&&(d=d?n.reduce((f,p)=>d?.[p]?{...f,[p]:d[p]}:f,{}):null),t?.transform){let l=t.transform.schema[o];return d=d&&l?ye(d,l,t.transform):d,d||null}return d||null},async findMany(r){let{model:o,where:i,limit:n,offset:a,sortBy:c}=r,s=e.selectFrom(o),{and:d,or:l}=ae(i);d&&(s=s.where(p=>p.and(d.map(u=>u(p))))),l&&(s=s.where(p=>p.or(l.map(u=>u(p))))),s=s.limit(n||100),a&&(s=s.offset(a)),c&&(s=s.orderBy(c.field,c.direction));let f=await s.selectAll().execute();if(t?.transform){let p=t.transform.schema[o];return p?f.map(u=>ye(u,p,t.transform)):f}return f},async update(r){let{model:o,where:i,update:n}=r,{and:a,or:c}=ae(i);t?.transform&&(n=lr(n,t.transform)),n.id&&(n.id=void 0);let s=e.updateTable(o).set(n);a&&(s=s.where(l=>l.and(a.map(f=>f(l))))),c&&(s=s.where(l=>l.or(c.map(f=>f(l)))));let d=await s.returningAll().executeTakeFirst()||null;if(t?.transform){let l=t.transform.schema[o];return l?ye(d,l,t.transform):d}return d},async delete(r){let{model:o,where:i}=r,{and:n,or:a}=ae(i),c=e.deleteFrom(o);n&&(c=c.where(s=>s.and(n.map(d=>d(s))))),a&&(c=c.where(s=>s.or(a.map(d=>d(s))))),await c.execute()},async deleteMany(r){let{model:o,where:i}=r,{and:n,or:a}=ae(i),c=e.deleteFrom(o);n&&(c=c.where(s=>s.and(n.map(d=>d(s))))),a&&(c=c.where(s=>s.or(a.map(d=>d(s))))),await c.execute()}});async function pr(e){if(!e.database)throw new E("Database configuration is required");if("create"in e.database)return e.database;let{kysely:t,databaseType:r}=await se(e);if(!t)throw new E("Failed to initialize database adapter");let o=q(e),i={};for(let n of Object.values(o))i[n.tableName]=n.fields;return ur(t,{transform:{schema:i,date:!0,boolean:r==="sqlite"},generateId:"generateId"in e.database?e.database.generateId:void 0})}function _e(e,t){let r={id:t.id};for(let o in e){let i=e[o],n=t[o];r[i.fieldName||o]=n}return r}function v(e,t){if(!t)return null;let r={id:t.id};for(let[o,i]of Object.entries(e))r[o]=t[i.fieldName||o];return r}function fr(e,t){let r=t.hooks,o=q(t.options);async function i(a,c,s){let d=a,l=o[c];for(let u of r||[]){let g=u[c]?.create?.before;if(g){let h=await g(a);if(h===!1)return null;typeof h=="object"&&"data"in h&&(d=h.data)}}let f=s?await s.fn(d):null,p=!s||s.executeMainFn?await e.create({model:l.tableName,data:{..._e(l.fields,d),id:d.id||U()}}):f;for(let u of r||[]){let g=u[c]?.create?.after;g&&await g(p)}return v(l.fields,p)}async function n(a,c,s,d){let l=a;for(let u of r||[]){let g=u[s]?.update?.before;if(g){let h=await g(a);if(h===!1)return null;l=typeof h=="object"?h.data:h}}let f=d?await d.fn(l):null,p=!d||d.executeMainFn?await e.update({model:o[s].tableName,update:_e(o[s].fields,l),where:c}):f;for(let u of r||[]){let g=u[s]?.update?.after;g&&await g(p)}return v(o[s].fields,p)}return{createWithHooks:i,updateWithHooks:n}}var Ce=(e,t)=>{let r=t.options,o=r.secondaryStorage,i=r.session?.expiresIn||60*60*24*7,n=q(r),{createWithHooks:a,updateWithHooks:c}=fr(e,t);return{createOAuthUser:async(s,d)=>{try{let l=await a({id:U(),createdAt:new Date,updatedAt:new Date,...s},"user"),f=await a({id:U(),...d,userId:l.id||s.id},"account");return{user:l,account:f}}catch(l){return console.log(l),null}},createUser:async s=>await a({id:U(),createdAt:new Date,updatedAt:new Date,emailVerified:!1,...s},"user"),createAccount:async s=>await a({id:U(),createdAt:new Date,updatedAt:new Date,...s},"account"),listSessions:async s=>await e.findMany({model:n.session.tableName,where:[{field:n.session.fields.userId.fieldName||"userId",value:s}]}),listUsers:async(s,d,l,f)=>(await e.findMany({model:n.user.tableName,limit:s,offset:d,sortBy:l,where:f})).map(u=>v(n.user.fields,u)),deleteUser:async s=>{await e.delete({model:n.account.tableName,where:[{field:n.account.fields.userId.fieldName||"userId",value:s}]}),await e.deleteMany({model:n.session.tableName,where:[{field:n.session.fields.userId.fieldName||"userId",value:s}]}),await e.deleteMany({model:n.user.tableName,where:[{field:"id",value:s}]})},createSession:async(s,d,l,f)=>{let p=d instanceof Request?d.headers:d,u={id:U(32),userId:s,expiresAt:l?B(60*60*24,"sec"):B(i,"sec"),ipAddress:d&&he(d)||"",userAgent:p?.get("user-agent")||"",...f};return await a(u,"session",o?{fn:async h=>{let m=await e.findOne({model:n.user.tableName,where:[{field:"id",value:s}]});return o.set(h.id,JSON.stringify({session:h,user:m}),i),h},executeMainFn:r.session?.storeSessionInDatabase}:void 0)},findSession:async s=>{if(o){let p=await o.get(s);if(p){let u=JSON.parse(p);return{session:{...u.session,expiresAt:new Date(u.session.expiresAt)},user:{...u.user,createdAt:new Date(u.user.createdAt),updatedAt:new Date(u.user.updatedAt)}}}}let d=await e.findOne({model:n.session.tableName,where:[{value:s,field:"id"}]});if(!d)return null;let l=v(n.session.fields,d),f=await e.findOne({model:n.user.tableName,where:[{value:l.userId,field:"id"}]});return f?{session:l,user:v(n.user.fields,f)}:null},findSessions:async s=>{if(o){let p=[];for(let u of s){let g=await o.get(u);if(g){let h=JSON.parse(g),m={session:{...h.session,expiresAt:new Date(h.session.expiresAt)},user:{...h.user,createdAt:new Date(h.user.createdAt),updatedAt:new Date(h.user.updatedAt)}};p.push(m)}}return p}let d=await e.findMany({model:n.session.tableName,where:[{field:"id",value:s,operator:"in"}]}),l=d.map(p=>v(n.session.fields,p).userId);if(!l.length)return[];let f=await e.findMany({model:n.user.tableName,where:[{field:"id",value:l,operator:"in"}]});return d.map(p=>{let u=f.find(g=>g.id===p.userId);return u?{session:v(n.session.fields,p),user:v(n.user.fields,u)}:null})},updateSession:async(s,d)=>await c(d,[{field:"id",value:s}],"session",o?{async fn(f){let p=await o.get(s),u=null;if(p){let g=JSON.parse(p);u={...g.session,...f},await o.set(s,JSON.stringify({session:u,user:g.user}),g.session.expiresAt?new Date(g.session.expiresAt).getTime():void 0)}else return null},executeMainFn:r.session?.storeSessionInDatabase}:void 0),deleteSession:async s=>{if(o){await o.delete(s),r.session?.storeSessionInDatabase&&await e.delete({model:n.session.tableName,where:[{field:"id",value:s}]});return}await e.delete({model:n.session.tableName,where:[{field:"id",value:s}]})},deleteSessions:async s=>{if(o){let d=await e.findMany({model:n.session.tableName,where:[{field:n.session.fields.userId.fieldName||"userId",value:s}]});for(let l of d)await o.delete(l.id);r.session?.storeSessionInDatabase&&await e.delete({model:n.session.tableName,where:[{field:n.session.fields.userId.fieldName||"userId",value:s}]});return}await e.deleteMany({model:n.session.tableName,where:[{field:n.session.fields.userId.fieldName||"userId",value:s}]})},findUserByEmail:async(s,d)=>{let l=await e.findOne({model:n.user.tableName,where:[{value:s.toLowerCase(),field:n.user.fields.email.fieldName||"email"}]});if(!l)return null;if(d?.includeAccounts){let f=await e.findMany({model:n.account.tableName,where:[{value:l.id,field:n.account.fields.userId.fieldName||"userId"}]});return{user:v(n.user.fields,l),accounts:f.map(p=>v(n.account.fields,p))}}return{user:v(n.user.fields,l),accounts:[]}},findUserById:async s=>await e.findOne({model:n.user.tableName,where:[{field:"id",value:s}]}),linkAccount:async s=>await a({id:U(),...s},"account"),updateUser:async(s,d)=>await c(d,[{field:"id",value:s}],"user"),updateUserByEmail:async(s,d)=>await c(d,[{field:n.user.fields.email.fieldName||"email",value:s}],"user"),updatePassword:async(s,d)=>await c({password:d},[{field:n.account.fields.userId.fieldName||"userId",value:s},{field:n.account.fields.providerId.fieldName||"providerId",value:"credential"}],"account"),findAccounts:async s=>(await e.findMany({model:n.account.tableName,where:[{field:n.account.fields.userId.fieldName||"userId",value:s}]})).map(l=>v(n.account.fields,l)),updateAccount:async(s,d)=>await c(d,[{field:"id",value:s}],"account"),createVerificationValue:async s=>await a({id:U(),...s},"verification"),findVerificationValue:async s=>{let d=await e.findOne({model:n.verification.tableName,where:[{field:n.verification.fields.identifier.fieldName||"identifier",value:s}]});return v(n.verification.fields,d)},deleteVerificationValue:async s=>{await e.delete({model:n.verification.tableName,where:[{field:"id",value:s}]})},updateVerificationValue:async(s,d)=>await c(d,[{field:"id",value:s}],"verification")}};var Vr=require("zod");var pa=require("kysely");var G=require("std-env"),mr=require("defu");var $=require("std-env");function $r(e){try{return new URL(e).pathname!=="/"}catch{throw new E(`Invalid base URL: ${e}. Please provide a valid base URL.`)}}function Be(e,t="/api/auth"){return $r(e)?e:(t=t.startsWith("/")?t:`/${t}`,`${e}${t}`)}function de(e,t){if(e)return Be(e,t);let r=$.env.BETTER_AUTH_URL||$.env.NEXT_PUBLIC_BETTER_AUTH_URL||$.env.PUBLIC_BETTER_AUTH_URL||$.env.NUXT_PUBLIC_BETTER_AUTH_URL||$.env.NUXT_PUBLIC_AUTH_URL||($.env.BASE_URL!=="/"?$.env.BASE_URL:void 0);if(r)return Be(r,t);if(typeof window<"u")return Be(window.location.origin,t)}var De="better-auth-secret-123456789";var gr=async e=>{let t=await pr(e),r=e.plugins||[],o=jr(e),{kysely:i}=await se(e),n=de(e.baseURL,e.basePath),a=e.secret||G.env.BETTER_AUTH_SECRET||G.env.AUTH_SECRET||De;a===De&&G.isProduction&&b.error("You are using the default secret. Please set `BETTER_AUTH_SECRET` in your environment variables or pass `secret` in your auth config."),e={...e,secret:a,baseURL:n?new URL(n).origin:"",basePath:e.basePath||"/api/auth",plugins:r.concat(o),emailAndPassword:{...e.emailAndPassword,enabled:e.emailAndPassword?.enabled??!1,autoSignIn:e.emailAndPassword?.autoSignIn??!0}};let c=Ue(e),s=q(e),d=Object.keys(e.socialProviders||{}).map(p=>{let u=e.socialProviders?.[p];return u.enabled===!1?null:((!u.clientId||!u.clientSecret)&&b.warn(`Social provider ${p} is missing clientId or clientSecret`),Oe[p](u))}).filter(p=>p!==null),l={appName:e.appName||"Better Auth",socialProviders:d,options:e,tables:s,trustedOrigins:Mr(e),baseURL:n||"",sessionConfig:{updateAge:e.session?.updateAge||24*60*60,expiresIn:e.session?.expiresIn||60*60*24*7},secret:a,rateLimit:{...e.rateLimit,enabled:e.rateLimit?.enabled??G.isProduction,window:e.rateLimit?.window||10,max:e.rateLimit?.max||100,storage:e.rateLimit?.storage||e.secondaryStorage?"secondary-storage":"memory"},authCookies:c,logger:me({disabled:e.logger?.disabled||!1}),db:i,uuid:U,secondaryStorage:e.secondaryStorage,password:{hash:e.emailAndPassword?.password?.hash||ze,verify:e.emailAndPassword?.password?.verify||je,config:{minPasswordLength:e.emailAndPassword?.minPasswordLength||8,maxPasswordLength:e.emailAndPassword?.maxPasswordLength||128}},adapter:t,internalAdapter:Ce(t,{options:e,hooks:e.databaseHooks?[e.databaseHooks]:[]}),createAuthCookie:ve(e)},{context:f}=zr(l);return f};function zr(e){let t=e.options,r=t.plugins||[],o=e,i=[];for(let n of r)if(n.init){let a=n.init(e);typeof a=="object"&&(a.options&&(a.options.databaseHooks&&i.push(a.options.databaseHooks),t=(0,mr.defu)(t,a.options)),a.context&&(o={...o,...a.context}))}return i.push(t.databaseHooks),o.internalAdapter=Ce(e.adapter,{options:t,hooks:i.filter(n=>n!==void 0)}),o.options=t,{context:o}}function jr(e){let t=[];return e.advanced?.crossSubDomainCookies?.enabled,t}function Mr(e){let t=de(e.baseURL,e.basePath);if(!t)return[];let r=[new URL(t).origin];e.trustedOrigins&&r.push(...e.trustedOrigins);let o=G.env.BETTER_AUTH_TRUSTED_ORIGINS;return o&&r.push(...o.split(",")),r}var Hr=e=>{let t=gr(e),{api:r}=Le(t,e);return{handler:async o=>{let i=await t,n=i.options.basePath||"/api/auth",a=new URL(o.url);if(!i.options.baseURL){let s=de(void 0,n)||`${a.origin}${n}`;i.options.baseURL=s,i.baseURL=s,i.trustedOrigins=[a.origin]}if(!i.options.baseURL)return new Response("Base URL not set",{status:400});if(a.pathname===n||a.pathname===`${n}/`)return new Response("Welcome to BetterAuth",{status:200});let{handler:c}=dr(i,e);return c(o)},api:r,options:e,$Infer:{}}};0&&(module.exports={BetterAuthError,HIDE_METADATA,MissingDependencyError,betterAuth,capitalizeFirstLetter,createCookieGetter,createLogger,deleteSessionCookie,generateId,generateState,getCookies,logger,parseCookies,parseSetCookieHeader,parseState,setSessionCookie});
|
|
84
|
-
//# sourceMappingURL=index.cjs.map
|