better-auth-instantdb 1.3.0 → 1.3.1

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.
Files changed (54) hide show
  1. package/README.md +3 -3
  2. package/dist/adapter/create-schema.d.ts +1 -1
  3. package/dist/adapter/instant-adapter.d.ts +3 -3
  4. package/dist/index.cjs +35 -0
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.js +2663 -2
  7. package/dist/react/index.d.ts +4 -4
  8. package/dist/react/instant-auth.d.ts +2 -2
  9. package/dist/react/types.d.ts +1 -1
  10. package/dist/react/use-instant-auth.d.ts +2 -2
  11. package/dist/react/use-instant-session.d.ts +4 -4
  12. package/dist/react/use-persistent-session.d.ts +2 -2
  13. package/dist/shared/instant-auth.d.ts +3 -3
  14. package/package.json +5 -3
  15. package/dist/adapter/create-schema.js +0 -178
  16. package/dist/adapter/instant-adapter.js +0 -273
  17. package/dist/client-plugin.d.ts +0 -2143
  18. package/dist/client-plugin.js +0 -21
  19. package/dist/create-schema.d.ts +0 -25
  20. package/dist/create-schema.js +0 -115
  21. package/dist/create-schema.js.map +0 -1
  22. package/dist/index.d.mts +0 -18
  23. package/dist/index.js.map +0 -1
  24. package/dist/index.mjs +0 -160
  25. package/dist/instant-adapter.d.ts +0 -26
  26. package/dist/instant-adapter.js +0 -214
  27. package/dist/instant-adapter.js.map +0 -1
  28. package/dist/instant-auth.d.ts +0 -3
  29. package/dist/instant-auth.js +0 -9
  30. package/dist/lib/instant-auth.d.ts +0 -3
  31. package/dist/lib/instant-auth.js +0 -9
  32. package/dist/lib/utils.js +0 -22
  33. package/dist/metafile-cjs.json +0 -1
  34. package/dist/metafile-esm.json +0 -1
  35. package/dist/react/client-plugin.d.ts +0 -2143
  36. package/dist/react/client-plugin.js +0 -21
  37. package/dist/react/index.js +0 -4
  38. package/dist/react/instant-auth.js +0 -5
  39. package/dist/react/react.d.ts +0 -2
  40. package/dist/react/react.js +0 -2
  41. package/dist/react/types.js +0 -1
  42. package/dist/react/use-hydrated.js +0 -7
  43. package/dist/react/use-instant-auth.js +0 -13
  44. package/dist/react/use-instant-session.js +0 -25
  45. package/dist/react/use-persistent-session.js +0 -49
  46. package/dist/react/use-session.d.ts +0 -0
  47. package/dist/react/use-session.js +0 -1
  48. package/dist/react/with-instant.d.ts +0 -3
  49. package/dist/react/with-instant.js +0 -47
  50. package/dist/react.d.ts +0 -2
  51. package/dist/react.js +0 -2
  52. package/dist/shared/instant-auth.js +0 -9
  53. package/dist/utils.d.ts +0 -6
  54. package/dist/utils.js +0 -9
package/README.md CHANGED
@@ -30,7 +30,7 @@ First you need to add the InstantDB Adapter to your Better Auth config.
30
30
  #### auth.ts
31
31
  ```typescript
32
32
  import { betterAuth } from "better-auth"
33
- import { instantDBAdapter } from "better-auth-instantdb"
33
+ import { instantAdapter } from "better-auth-instantdb"
34
34
  import { init } from "@instantdb/admin"
35
35
  import schema from "@/instant.schema"
36
36
 
@@ -44,7 +44,7 @@ export const adminDb = init({
44
44
 
45
45
  // Create Better Auth instance with InstantDB adapter
46
46
  export const auth = betterAuth({
47
- database: instantDBAdapter({
47
+ database: instantAdapter({
48
48
  db: adminDb,
49
49
  usePlural: true, // Optional: set to true if your schema uses plural table names
50
50
  debugLogs: false // Optional: set to true to see detailed logs
@@ -187,7 +187,7 @@ export const db = init({
187
187
 
188
188
  ## API Reference
189
189
 
190
- ### `instantDBAdapter(options)`
190
+ ### `instantAdapter(options)`
191
191
 
192
192
  Creates an adapter that allows Better Auth to use InstantDB as its database.
193
193
 
@@ -1,4 +1,4 @@
1
- import type { BetterAuthDBSchema } from "@better-auth/core/db";
1
+ import { BetterAuthDBSchema } from '@better-auth/core/db';
2
2
  /**
3
3
  * Creates InstantDB links from Better Auth schema references
4
4
  */
@@ -1,5 +1,5 @@
1
- import { type InstantAdminDatabase } from "@instantdb/admin";
2
- import { type DBAdapterDebugLogOption, type Where } from "better-auth/adapters";
1
+ import { InstantAdminDatabase } from '@instantdb/admin';
2
+ import { DBAdapterDebugLogOption, Where } from 'better-auth/adapters';
3
3
  /**
4
4
  * The InstantDB adapter config options.
5
5
  */
@@ -20,6 +20,6 @@ interface InstantAdapterConfig {
20
20
  /**
21
21
  * The InstantDB adapter.
22
22
  */
23
- export declare const instantAdapter: ({ db, usePlural, debugLogs }: InstantAdapterConfig) => import("better-auth/adapters").AdapterFactory;
23
+ export declare const instantAdapter: ({ db, usePlural, debugLogs }: InstantAdapterConfig) => import('better-auth/adapters').AdapterFactory;
24
24
  export declare function parseWhere(where?: Where[]): Record<string, unknown>;
25
25
  export {};
package/dist/index.cjs ADDED
@@ -0,0 +1,35 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k={Remove:"remove",Replace:"replace",Add:"add"},Pe=Symbol.for("__MUTATIVE_PROXY_DRAFT__"),de=Symbol.iterator,K={mutable:"mutable",immutable:"immutable"},Ae={};function ae(e,t){return e instanceof Map?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Me(e,t){if(t in e){let n=Reflect.getPrototypeOf(e);for(;n;){const r=Reflect.getOwnPropertyDescriptor(n,t);if(r)return r;n=Reflect.getPrototypeOf(n)}}}function ze(e){return Object.getPrototypeOf(e)===Set.prototype}function qe(e){return Object.getPrototypeOf(e)===Map.prototype}function F(e){var t;return(t=e.copy)!==null&&t!==void 0?t:e.original}function ye(e){return!!v(e)}function v(e){return typeof e!="object"?null:e?.[Pe]}function Ie(e){var t;const n=v(e);return n?(t=n.copy)!==null&&t!==void 0?t:n.original:e}function Q(e,t){if(!e||typeof e!="object")return!1;let n;return Object.getPrototypeOf(e)===Object.prototype||Array.isArray(e)||e instanceof Map||e instanceof Set||!!t?.mark&&((n=t.mark(e,K))===K.immutable||typeof n=="function")}function Ve(e,t=[]){if(Object.hasOwnProperty.call(e,"key")){const n=e.parent.copy,r=v(H(n,e.key));if(r!==null&&r?.original!==e.original)return null;const i=e.parent.type===3,o=i?Array.from(e.parent.setMap.keys()).indexOf(e.key):e.key;if(!(i&&n.size>o||ae(n,o)))return null;t.push(o)}if(e.parent)return Ve(e.parent,t);t.reverse();try{Qe(e.copy,t)}catch{return null}return t}function le(e){return Array.isArray(e)?1:e instanceof Map?2:e instanceof Set?3:0}function H(e,t){return le(e)===2?e.get(t):e[t]}function Te(e,t,n){le(e)===2?e.set(t,n):e[t]=n}function we(e,t){const n=v(e);return(n?F(n):e)[t]}function Z(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function X(e,t){return t?e:[""].concat(e).map(n=>{const r=`${n}`;return r.indexOf("/")===-1&&r.indexOf("~")===-1?r:r.replace(/~/g,"~0").replace(/\//g,"~1")}).join("/")}function Qe(e,t){for(let n=0;n<t.length-1;n+=1){const r=t[n];if(e=H(le(e)===3?Array.from(e):e,r),typeof e!="object")throw new Error(`Cannot resolve patch at '${t.join("/")}'.`)}return e}function et(e){const t=Object.create(Object.getPrototypeOf(e));return Reflect.ownKeys(e).forEach(n=>{let r=Reflect.getOwnPropertyDescriptor(e,n);if(r.enumerable&&r.configurable&&r.writable){t[n]=e[n];return}r.writable||(r.writable=!0,r.configurable=!0),(r.get||r.set)&&(r={configurable:!0,writable:!0,enumerable:r.enumerable,value:e[n]}),Reflect.defineProperty(t,n,r)}),t}const tt=Object.prototype.propertyIsEnumerable;function nt(e,t){let n;if(Array.isArray(e))return Array.prototype.concat.call(e);if(e instanceof Set){if(!ze(e)){const r=Object.getPrototypeOf(e).constructor;return new r(e.values())}return Set.prototype.difference?Set.prototype.difference.call(e,new Set):new Set(e.values())}else if(e instanceof Map){if(!qe(e)){const r=Object.getPrototypeOf(e).constructor;return new r(e)}return new Map(e)}else if(t?.mark&&(n=t.mark(e,K),n!==void 0)&&n!==K.mutable){if(n===K.immutable)return et(e);if(typeof n=="function"){if(t.enablePatches||t.enableAutoFreeze)throw new Error("You can't use mark and patches or auto freeze together.");return n()}throw new Error(`Unsupported mark result: ${n}`)}else if(typeof e=="object"&&Object.getPrototypeOf(e)===Object.prototype){const r={};return Object.keys(e).forEach(i=>{r[i]=e[i]}),Object.getOwnPropertySymbols(e).forEach(i=>{tt.call(e,i)&&(r[i]=e[i])}),r}else throw new Error("Please check mark() to ensure that it is a stable marker draftable function.")}function q(e){e.copy||(e.copy=nt(e.original,e.options))}function oe(e){if(!Q(e))return Ie(e);if(Array.isArray(e))return e.map(oe);if(e instanceof Map){const n=Array.from(e.entries()).map(([r,i])=>[r,oe(i)]);if(!qe(e)){const r=Object.getPrototypeOf(e).constructor;return new r(n)}return new Map(n)}if(e instanceof Set){const n=Array.from(e).map(oe);if(!ze(e)){const r=Object.getPrototypeOf(e).constructor;return new r(n)}return new Set(n)}const t=Object.create(Object.getPrototypeOf(e));for(const n in e)t[n]=oe(e[n]);return t}function pe(e){return ye(e)?oe(e):e}function W(e){var t;e.assignedMap=(t=e.assignedMap)!==null&&t!==void 0?t:new Map,e.operated||(e.operated=!0,e.parent&&W(e.parent))}function rt(e,t){const n=le(e);if(n===0)Reflect.ownKeys(e).forEach(r=>{t(r,e[r],e)});else if(n===1){let r=0;for(const i of e)t(r,i,e),r+=1}else e.forEach((r,i)=>t(i,r,e))}function Fe(e,t,n){if(ye(e)||!Q(e,n)||t.has(e)||Object.isFrozen(e))return;const r=e instanceof Set,i=r?new Map:void 0;if(t.add(e),rt(e,(o,f)=>{var s;if(ye(f)){const a=v(f);q(a);const c=!((s=a.assignedMap)===null||s===void 0)&&s.size||a.operated?a.copy:a.original;Te(r?i:e,o,c)}else Fe(f,t,n)}),i){const o=e,f=Array.from(o);o.clear(),f.forEach(s=>{o.add(i.has(s)?i.get(s):s)})}}function it(e,t){const n=e.type===3?e.setMap:e.copy;e.finalities.revoke.length>1&&e.assignedMap.get(t)&&n&&Fe(H(n,t),e.finalities.handledSet,e.options)}function _e(e){e.type===3&&e.copy&&(e.copy.clear(),e.setMap.forEach(t=>{e.copy.add(Ie(t))}))}function Oe(e,t,n,r){if(e.operated&&e.assignedMap&&e.assignedMap.size>0&&!e.finalized){if(n&&r){const o=Ve(e);o&&t(e,o,n,r)}e.finalized=!0}}function Re(e,t,n,r){const i=v(n);i&&(i.callbacks||(i.callbacks=[]),i.callbacks.push((o,f)=>{var s;const a=e.type===3?e.setMap:e.copy;if(Z(H(a,t),n)){let c=i.original;i.copy&&(c=i.copy),_e(e),Oe(e,r,o,f),e.options.enableAutoFreeze&&(e.options.updatedValues=(s=e.options.updatedValues)!==null&&s!==void 0?s:new WeakMap,e.options.updatedValues.set(c,i.original)),Te(a,t,c)}}),e.options.enableAutoFreeze&&i.finalities!==e.finalities&&(e.options.enableAutoFreeze=!1)),Q(n,e.options)&&e.finalities.draft.push(()=>{const o=e.type===3?e.setMap:e.copy;Z(H(o,t),n)&&it(e,t)})}function ot(e,t,n,r,i){let{original:o,assignedMap:f,options:s}=e,a=e.copy;a.length<o.length&&([o,a]=[a,o],[n,r]=[r,n]);for(let c=0;c<o.length;c+=1)if(f.get(c.toString())&&a[c]!==o[c]){const l=t.concat([c]),y=X(l,i);n.push({op:k.Replace,path:y,value:pe(a[c])}),r.push({op:k.Replace,path:y,value:pe(o[c])})}for(let c=o.length;c<a.length;c+=1){const l=t.concat([c]),y=X(l,i);n.push({op:k.Add,path:y,value:pe(a[c])})}if(o.length<a.length){const{arrayLengthAssignment:c=!0}=s.enablePatches;if(c){const l=t.concat(["length"]),y=X(l,i);r.push({op:k.Replace,path:y,value:o.length})}else for(let l=a.length;o.length<l;l-=1){const y=t.concat([l-1]),w=X(y,i);r.push({op:k.Remove,path:w})}}}function st({original:e,copy:t,assignedMap:n},r,i,o,f){n.forEach((s,a)=>{const c=H(e,a),l=pe(H(t,a)),y=s?ae(e,a)?k.Replace:k.Add:k.Remove;if(Z(c,l)&&y===k.Replace)return;const w=r.concat(a),S=X(w,f);i.push(y===k.Remove?{op:y,path:S}:{op:y,path:S,value:l}),o.push(y===k.Add?{op:k.Remove,path:S}:y===k.Remove?{op:k.Add,path:S,value:c}:{op:k.Replace,path:S,value:c})})}function at({original:e,copy:t},n,r,i,o){let f=0;e.forEach(s=>{if(!t.has(s)){const a=n.concat([f]),c=X(a,o);r.push({op:k.Remove,path:c,value:s}),i.unshift({op:k.Add,path:c,value:s})}f+=1}),f=0,t.forEach(s=>{if(!e.has(s)){const a=n.concat([f]),c=X(a,o);r.push({op:k.Add,path:c,value:s}),i.unshift({op:k.Remove,path:c,value:s})}f+=1})}function ce(e,t,n,r){const{pathAsArray:i=!0}=e.options.enablePatches;switch(e.type){case 0:case 2:return st(e,t,n,r,i);case 1:return ot(e,t,n,r,i);case 3:return at(e,t,n,r,i)}}const he=(e,t,n=!1)=>{if(typeof e=="object"&&e!==null&&(!Q(e,t)||n))throw new Error("Strict mode: Mutable data cannot be accessed directly, please use 'unsafe(callback)' wrap.")},$e={get size(){return F(v(this)).size},has(e){return F(v(this)).has(e)},set(e,t){const n=v(this),r=F(n);return(!r.has(e)||!Z(r.get(e),t))&&(q(n),W(n),n.assignedMap.set(e,!0),n.copy.set(e,t),Re(n,e,t,ce)),this},delete(e){if(!this.has(e))return!1;const t=v(this);return q(t),W(t),t.original.has(e)?t.assignedMap.set(e,!1):t.assignedMap.delete(e),t.copy.delete(e),!0},clear(){const e=v(this);if(this.size){q(e),W(e),e.assignedMap=new Map;for(const[t]of e.original)e.assignedMap.set(t,!1);e.copy.clear()}},forEach(e,t){const n=v(this);F(n).forEach((r,i)=>{e.call(t,this.get(i),i,this)})},get(e){var t,n;const r=v(this),i=F(r).get(e),o=((n=(t=r.options).mark)===null||n===void 0?void 0:n.call(t,i,K))===K.mutable;if(r.options.strict&&he(i,r.options,o),o||r.finalized||!Q(i,r.options)||i!==r.original.get(e))return i;const f=Ae.createDraft({original:i,parentDraft:r,key:e,finalities:r.finalities,options:r.options});return q(r),r.copy.set(e,f),f},keys(){return F(v(this)).keys()},values(){const e=this.keys();return{[de]:()=>this.values(),next:()=>{const t=e.next();return t.done?t:{done:!1,value:this.get(t.value)}}}},entries(){const e=this.keys();return{[de]:()=>this.entries(),next:()=>{const t=e.next();if(t.done)return t;const n=this.get(t.value);return{done:!1,value:[t.value,n]}}}},[de](){return this.entries()}},ut=Reflect.ownKeys($e),xe=(e,t,{isValuesIterator:n})=>()=>{var r,i;const o=t.next();if(o.done)return o;const f=o.value;let s=e.setMap.get(f);const a=v(s),c=((i=(r=e.options).mark)===null||i===void 0?void 0:i.call(r,s,K))===K.mutable;if(e.options.strict&&he(f,e.options,c),!c&&!a&&Q(f,e.options)&&!e.finalized&&e.original.has(f)){const l=Ae.createDraft({original:f,parentDraft:e,key:f,finalities:e.finalities,options:e.options});e.setMap.set(f,l),s=l}else a&&(s=a.proxy);return{done:!1,value:n?s:[s,s]}},be={get size(){return v(this).setMap.size},has(e){const t=v(this);if(t.setMap.has(e))return!0;q(t);const n=v(e);return!!(n&&t.setMap.has(n.original))},add(e){const t=v(this);return this.has(e)||(q(t),W(t),t.assignedMap.set(e,!0),t.setMap.set(e,e),Re(t,e,e,ce)),this},delete(e){if(!this.has(e))return!1;const t=v(this);q(t),W(t);const n=v(e);return n&&t.setMap.has(n.original)?(t.assignedMap.set(n.original,!1),t.setMap.delete(n.original)):(!n&&t.setMap.has(e)?t.assignedMap.set(e,!1):t.assignedMap.delete(e),t.setMap.delete(e))},clear(){if(!this.size)return;const e=v(this);q(e),W(e);for(const t of e.original)e.assignedMap.set(t,!1);e.setMap.clear()},values(){const e=v(this);q(e);const t=e.setMap.keys();return{[Symbol.iterator]:()=>this.values(),next:xe(e,t,{isValuesIterator:!0})}},entries(){const e=v(this);q(e);const t=e.setMap.keys();return{[Symbol.iterator]:()=>this.entries(),next:xe(e,t,{isValuesIterator:!1})}},keys(){return this.values()},[de](){return this.values()},forEach(e,t){const n=this.values();let r=n.next();for(;!r.done;)e.call(t,r.value,r.value,this),r=n.next()}};Set.prototype.difference&&Object.assign(be,{intersection(e){return Set.prototype.intersection.call(new Set(this.values()),e)},union(e){return Set.prototype.union.call(new Set(this.values()),e)},difference(e){return Set.prototype.difference.call(new Set(this.values()),e)},symmetricDifference(e){return Set.prototype.symmetricDifference.call(new Set(this.values()),e)},isSubsetOf(e){return Set.prototype.isSubsetOf.call(new Set(this.values()),e)},isSupersetOf(e){return Set.prototype.isSupersetOf.call(new Set(this.values()),e)},isDisjointFrom(e){return Set.prototype.isDisjointFrom.call(new Set(this.values()),e)}});const ct=Reflect.ownKeys(be),Ue={get(e,t,n){var r,i;const o=(r=e.copy)===null||r===void 0?void 0:r[t];if(o&&e.finalities.draftsCache.has(o))return o;if(t===Pe)return e;let f;if(e.options.mark){const c=t==="size"&&(e.original instanceof Map||e.original instanceof Set)?Reflect.get(e.original,t):Reflect.get(e.original,t,n);if(f=e.options.mark(c,K),f===K.mutable)return e.options.strict&&he(c,e.options,!0),c}const s=F(e);if(s instanceof Map&&ut.includes(t))return t==="size"?Object.getOwnPropertyDescriptor($e,"size").get.call(e.proxy):$e[t].bind(e.proxy);if(s instanceof Set&&ct.includes(t))return t==="size"?Object.getOwnPropertyDescriptor(be,"size").get.call(e.proxy):be[t].bind(e.proxy);if(!ae(s,t)){const c=Me(s,t);return c?"value"in c?c.value:(i=c.get)===null||i===void 0?void 0:i.call(e.proxy):void 0}const a=s[t];if(e.options.strict&&he(a,e.options),e.finalized||!Q(a,e.options))return a;if(a===we(e.original,t)){if(q(e),e.copy[t]=Be({original:e.original[t],parentDraft:e,key:e.type===1?Number(t):t,finalities:e.finalities,options:e.options}),typeof f=="function"){const c=v(e.copy[t]);return q(c),W(c),c.copy}return e.copy[t]}return ye(a)&&e.finalities.draftsCache.add(a),a},set(e,t,n){var r;if(e.type===3||e.type===2)throw new Error("Map/Set draft does not support any property assignment.");let i;if(e.type===1&&t!=="length"&&!(Number.isInteger(i=Number(t))&&i>=0&&(t===0||i===0||String(i)===String(t))))throw new Error("Only supports setting array indices and the 'length' property.");const o=Me(F(e),t);if(o?.set)return o.set.call(e.proxy,n),!0;const f=we(F(e),t),s=v(f);return s&&Z(s.original,n)?(e.copy[t]=n,e.assignedMap=(r=e.assignedMap)!==null&&r!==void 0?r:new Map,e.assignedMap.set(t,!1),!0):(Z(n,f)&&(n!==void 0||ae(e.original,t))||(q(e),W(e),ae(e.original,t)&&Z(n,e.original[t])?e.assignedMap.delete(t):e.assignedMap.set(t,!0),e.copy[t]=n,Re(e,t,n,ce)),!0)},has(e,t){return t in F(e)},ownKeys(e){return Reflect.ownKeys(F(e))},getOwnPropertyDescriptor(e,t){const n=F(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{writable:!0,configurable:e.type!==1||t!=="length",enumerable:r.enumerable,value:n[t]}},getPrototypeOf(e){return Reflect.getPrototypeOf(e.original)},setPrototypeOf(){throw new Error("Cannot call 'setPrototypeOf()' on drafts")},defineProperty(){throw new Error("Cannot call 'defineProperty()' on drafts")},deleteProperty(e,t){var n;return e.type===1?Ue.set.call(this,e,t,void 0,e.proxy):(we(e.original,t)!==void 0||t in e.original?(q(e),W(e),e.assignedMap.set(t,!1)):(e.assignedMap=(n=e.assignedMap)!==null&&n!==void 0?n:new Map,e.assignedMap.delete(t)),e.copy&&delete e.copy[t],!0)}};function Be(e){const{original:t,parentDraft:n,key:r,finalities:i,options:o}=e,f=le(t),s={type:f,finalized:!1,parent:n,original:t,copy:null,proxy:null,finalities:i,options:o,setMap:f===3?new Map(t.entries()):void 0};(r||"key"in e)&&(s.key=r);const{proxy:a,revoke:c}=Proxy.revocable(f===1?Object.assign([],s):s,Ue);if(i.revoke.push(c),s.proxy=a,n){const l=n;l.finalities.draft.push((y,w)=>{var S,C;const x=v(a);let E=l.type===3?l.setMap:l.copy;const B=H(E,r),V=v(B);if(V){let u=V.original;V.operated&&(u=Ie(B)),_e(V),Oe(V,ce,y,w),l.options.enableAutoFreeze&&(l.options.updatedValues=(S=l.options.updatedValues)!==null&&S!==void 0?S:new WeakMap,l.options.updatedValues.set(u,V.original)),Te(E,r,u)}(C=x.callbacks)===null||C===void 0||C.forEach(u=>{u(y,w)})})}else{const l=v(a);l.finalities.draft.push((y,w)=>{_e(l),Oe(l,ce,y,w)})}return a}Ae.createDraft=Be;Object.prototype.constructor.toString();const P=[];for(let e=0;e<256;++e)P.push((e+256).toString(16).slice(1));function lt(e,t=0){return(P[e[t+0]]+P[e[t+1]]+P[e[t+2]]+P[e[t+3]]+"-"+P[e[t+4]]+P[e[t+5]]+"-"+P[e[t+6]]+P[e[t+7]]+"-"+P[e[t+8]]+P[e[t+9]]+"-"+P[e[t+10]]+P[e[t+11]]+P[e[t+12]]+P[e[t+13]]+P[e[t+14]]+P[e[t+15]]).toLowerCase()}let ge;const ft=new Uint8Array(16);function dt(){if(!ge){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");ge=crypto.getRandomValues.bind(crypto)}return ge(ft)}const pt=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),je={randomUUID:pt};function mt(e,t,n){if(je.randomUUID&&!e)return je.randomUUID();e=e||{};const r=e.random??e.rng?.()??dt();if(r.length<16)throw new Error("Random bytes length must be >= 16");return r[6]=r[6]&15|64,r[8]=r[8]&63|128,lt(r)}function yt(){return mt()}function ht(e,t){return e.localeCompare(t)}function bt(){let e=ht;if(typeof Intl=="object"&&Intl.hasOwnProperty("Collator"))try{e=Intl.Collator("en-US").compare}catch{}return e}bt();function wt(){const t={__etype:1,__ops:1,create:1,update:1,link:1,unlink:1,delete:1,merge:1,ruleParams:1};return new Set(Object.keys(t))}const gt=wt();function ve(e,t,n){const r={__etype:e,__ops:n};return new Proxy(r,{get:(i,o)=>{if(o==="__ops")return n;if(o==="__etype")return e;if(gt.has(o))return(f,s)=>ve(e,t,[...n,s?[o,e,t,f,s]:[o,e,t,f]])}})}function _t(e){return e.startsWith("lookup__")}function Ot(e){const[t,n,...r]=e.split("__");return[n,JSON.parse(r.join("__"))]}function $t(e){return new Proxy({__etype:e},{get(t,n){if(n==="__etype")return e;const r=n;return _t(r)?ve(e,Ot(r),[]):ve(e,r,[])}})}function vt(){return new Proxy({},{get(e,t){return $t(t)}})}vt();const Nt={"unique?":!0,"index?":!0};Object.assign(Object.assign({},Nt),{cardinality:"one"});typeof window<"u"&&typeof window.localStorage<"u"&&(window.localStorage.getItem("devBackend"),window.localStorage.getItem("__instantLogging"),window.localStorage.getItem("__devtoolLocalDash"));function St(){var e;return globalThis.__instantDbSchemaHashStore=(e=globalThis.__instantDbSchemaHashStore)!==null&&e!==void 0?e:new WeakMap,globalThis.__instantDbSchemaHashStore}function At(){var e;return globalThis.__instantDbStore=(e=globalThis.__instantDbStore)!==null&&e!==void 0?e:{},globalThis.__instantDbStore}At();St();const me=Object.create(null),ne=e=>globalThis.process?.env||globalThis.Deno?.env.toObject()||globalThis.__env__||(e?me:globalThis),re=new Proxy(me,{get(e,t){return ne()[t]??me[t]},has(e,t){const n=ne();return t in n||t in me},set(e,t,n){const r=ne(!0);return r[t]=n,!0},deleteProperty(e,t){if(!t)return!1;const n=ne(!0);return delete n[t],!0},ownKeys(){const e=ne(!0);return Object.keys(e)}});typeof process<"u"&&process.env&&process.env.NODE_ENV;function M(e,t){return typeof process<"u"&&process.env?process.env[e]??t:typeof Deno<"u"?Deno.env.get(e)??t:typeof Bun<"u"?Bun.env[e]??t:t}const ie=1,L=4,G=8,U=24,ke={eterm:L,cons25:L,console:L,cygwin:L,dtterm:L,gnome:L,hurd:L,jfbterm:L,konsole:L,kterm:L,mlterm:L,mosh:U,putty:L,st:L,"rxvt-unicode-24bit":U,terminator:U,"xterm-kitty":U},It=new Map(Object.entries({APPVEYOR:G,BUILDKITE:G,CIRCLECI:U,DRONE:G,GITEA_ACTIONS:U,GITHUB_ACTIONS:U,GITLAB_CI:G,TRAVIS:G})),Tt=[/ansi/,/color/,/linux/,/direct/,/^con[0-9]*x[0-9]/,/^rxvt/,/^screen/,/^xterm/,/^vt100/,/^vt220/];function Ke(){if(M("FORCE_COLOR")!==void 0)switch(M("FORCE_COLOR")){case"":case"1":case"true":return L;case"2":return G;case"3":return U;default:return ie}if(M("NODE_DISABLE_COLORS")!==void 0&&M("NODE_DISABLE_COLORS")!==""||M("NO_COLOR")!==void 0&&M("NO_COLOR")!==""||M("TERM")==="dumb")return ie;if(M("TMUX"))return U;if("TF_BUILD"in re&&"AGENT_NAME"in re)return L;if("CI"in re){for(const{0:e,1:t}of It)if(e in re)return t;return M("CI_NAME")==="codeship"?G:ie}if("TEAMCITY_VERSION"in re)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.exec(M("TEAMCITY_VERSION"))!==null?L:ie;switch(M("TERM_PROGRAM")){case"iTerm.app":return!M("TERM_PROGRAM_VERSION")||/^[0-2]\./.exec(M("TERM_PROGRAM_VERSION"))!==null?G:U;case"HyperTerm":case"MacTerm":return U;case"Apple_Terminal":return G}if(M("COLORTERM")==="truecolor"||M("COLORTERM")==="24bit")return U;if(M("TERM")){if(/truecolor/.exec(M("TERM"))!==null)return U;if(/^xterm-256/.exec(M("TERM"))!==null)return G;const e=M("TERM").toLowerCase();if(ke[e])return ke[e];if(Tt.some(t=>t.exec(e)!==null))return L}return M("COLORTERM")?L:ie}const D={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",fg:{red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m"},bg:{black:"\x1B[40m"}},Ne=["info","success","warn","error","debug"];function Rt(e,t){return Ne.indexOf(t)<=Ne.indexOf(e)}const Et={info:D.fg.blue,success:D.fg.green,warn:D.fg.yellow,error:D.fg.red,debug:D.fg.magenta},Mt=(e,t,n)=>{const r=new Date().toISOString();return n?`${D.dim}${r}${D.reset} ${Et[e]}${e.toUpperCase()}${D.reset} ${D.bright}[Better Auth]:${D.reset} ${t}`:`${r} ${e.toUpperCase()} [Better Auth]: ${t}`},xt=e=>{const t="error",n=Ke()!==1,r=(o,f,s=[])=>{if(!Rt(t,o))return;const a=Mt(o,f,n);{o==="error"?console.error(a,...s):o==="warn"?console.warn(a,...s):console.log(a,...s);return}};return{...Object.fromEntries(Ne.map(o=>[o,(...[f,...s])=>r(o,f,s)])),get level(){return t}}},Y=xt();function jt(e){function t(n,r){if(typeof r=="string"&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z$/.test(r)){const o=new Date(r);if(!isNaN(o.getTime()))return o}return r}try{return typeof e!="string"?e:JSON.parse(e,t)}catch(n){return Y.error("Error parsing JSON",{error:n}),null}}const De=e=>{const t=(e.plugins??[]).reduce((c,l)=>{const y=l.schema;if(!y)return c;for(const[w,S]of Object.entries(y))c[w]={fields:{...c[w]?.fields,...S.fields},modelName:S.modelName||w};return c},{}),n=e.rateLimit?.storage==="database",r={rateLimit:{modelName:e.rateLimit?.modelName||"rateLimit",fields:{key:{type:"string",fieldName:e.rateLimit?.fields?.key||"key"},count:{type:"number",fieldName:e.rateLimit?.fields?.count||"count"},lastRequest:{type:"number",bigint:!0,fieldName:e.rateLimit?.fields?.lastRequest||"lastRequest"}}}},{user:i,session:o,account:f,...s}=t,a={session:{modelName:e.session?.modelName||"session",fields:{expiresAt:{type:"date",required:!0,fieldName:e.session?.fields?.expiresAt||"expiresAt"},token:{type:"string",required:!0,fieldName:e.session?.fields?.token||"token",unique:!0},createdAt:{type:"date",required:!0,fieldName:e.session?.fields?.createdAt||"createdAt",defaultValue:()=>new Date},updatedAt:{type:"date",required:!0,fieldName:e.session?.fields?.updatedAt||"updatedAt",onUpdate:()=>new Date},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},...o?.fields,...e.session?.additionalFields},order:2}};return{user:{modelName:e.user?.modelName||"user",fields:{name:{type:"string",required:!0,fieldName:e.user?.fields?.name||"name",sortable:!0},email:{type:"string",unique:!0,required:!0,fieldName:e.user?.fields?.email||"email",sortable:!0},emailVerified:{type:"boolean",defaultValue:!1,required:!0,fieldName:e.user?.fields?.emailVerified||"emailVerified",input:!1},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,onUpdate:()=>new Date,required:!0,fieldName:e.user?.fields?.updatedAt||"updatedAt"},...i?.fields,...e.user?.additionalFields},order:1},...!e.secondaryStorage||e.session?.storeSessionInDatabase?a:{},account:{modelName:e.account?.modelName||"account",fields:{accountId:{type:"string",required:!0,fieldName:e.account?.fields?.accountId||"accountId"},providerId:{type:"string",required:!0,fieldName:e.account?.fields?.providerId||"providerId"},userId:{type:"string",references:{model:e.user?.modelName||"user",field:"id",onDelete:"cascade"},required:!0,fieldName:e.account?.fields?.userId||"userId"},accessToken:{type:"string",required:!1,fieldName:e.account?.fields?.accessToken||"accessToken"},refreshToken:{type:"string",required:!1,fieldName:e.account?.fields?.refreshToken||"refreshToken"},idToken:{type:"string",required:!1,fieldName:e.account?.fields?.idToken||"idToken"},accessTokenExpiresAt:{type:"date",required:!1,fieldName:e.account?.fields?.accessTokenExpiresAt||"accessTokenExpiresAt"},refreshTokenExpiresAt:{type:"date",required:!1,fieldName:e.account?.fields?.refreshTokenExpiresAt||"refreshTokenExpiresAt"},scope:{type:"string",required:!1,fieldName:e.account?.fields?.scope||"scope"},password:{type:"string",required:!1,fieldName:e.account?.fields?.password||"password"},createdAt:{type:"date",required:!0,fieldName:e.account?.fields?.createdAt||"createdAt",defaultValue:()=>new Date},updatedAt:{type:"date",required:!0,fieldName:e.account?.fields?.updatedAt||"updatedAt",onUpdate:()=>new Date},...f?.fields,...e.account?.additionalFields},order:3},verification:{modelName:e.verification?.modelName||"verification",fields:{identifier:{type:"string",required:!0,fieldName:e.verification?.fields?.identifier||"identifier"},value:{type:"string",required:!0,fieldName:e.verification?.fields?.value||"value"},expiresAt:{type:"date",required:!0,fieldName:e.verification?.fields?.expiresAt||"expiresAt"},createdAt:{type:"date",required:!0,defaultValue:()=>new Date,fieldName:e.verification?.fields?.createdAt||"createdAt"},updatedAt:{type:"date",required:!0,defaultValue:()=>new Date,onUpdate:()=>new Date,fieldName:e.verification?.fields?.updatedAt||"updatedAt"}},order:4},...s,...n?r:{}}};function Le(e){switch(e){case"a-z":return"abcdefghijklmnopqrstuvwxyz";case"A-Z":return"ABCDEFGHIJKLMNOPQRSTUVWXYZ";case"0-9":return"0123456789";case"-_":return"-_";default:throw new Error(`Unsupported alphabet: ${e}`)}}function Ge(...e){const t=e.map(Le).join("");if(t.length===0)throw new Error("No valid characters provided for random string generation.");const n=t.length;return(r,...i)=>{if(r<=0)throw new Error("Length must be a positive integer.");let o=t,f=n;i.length>0&&(o=i.map(Le).join(""),f=o.length);const s=Math.floor(256/f)*f,a=new Uint8Array(r*2),c=a.length;let l="",y=c,w;for(;l.length<r;)y>=c&&(crypto.getRandomValues(a),y=0),w=a[y++],w<s&&(l+=o[w%f]);return l}}const kt=e=>Ge("a-z","A-Z","0-9")(32);var Dt=Object.defineProperty,Lt=(e,t)=>{for(var n in t)Dt(e,n,{get:t[n],enumerable:!0})},Ct={};Lt(Ct,{BIGINT_FORMAT_RANGES:()=>dn,Class:()=>An,NUMBER_FORMAT_RANGES:()=>fn,aborted:()=>gn,allowsEval:()=>tn,assert:()=>Ft,assertEqual:()=>Pt,assertIs:()=>qt,assertNever:()=>Vt,assertNotEqual:()=>zt,assignProp:()=>Ee,cached:()=>We,captureStackTrace:()=>en,cleanEnum:()=>Sn,cleanRegex:()=>Wt,clone:()=>ee,createTransparentProxy:()=>cn,defineLazy:()=>Jt,esc:()=>Qt,escapeRegex:()=>an,extend:()=>yn,finalizeIssue:()=>On,floatSafeRemainder:()=>Ht,getElementAtPath:()=>Yt,getEnumValues:()=>Ut,getLengthableOrigin:()=>vn,getParsedType:()=>rn,getSizableOrigin:()=>$n,isObject:()=>Se,isPlainObject:()=>He,issue:()=>Nn,joinValues:()=>Bt,jsonStringifyReplacer:()=>Kt,merge:()=>hn,normalizeParams:()=>un,nullish:()=>Gt,numKeys:()=>nn,omit:()=>mn,optionalKeys:()=>ln,partial:()=>bn,pick:()=>pn,prefixIssues:()=>_n,primitiveTypes:()=>sn,promiseAllObject:()=>Xt,propertyKeyTypes:()=>on,randomString:()=>Zt,required:()=>wn,stringifyPrimitive:()=>Je,unwrapMessage:()=>se});function Pt(e){return e}function zt(e){return e}function qt(e){}function Vt(e){throw new Error}function Ft(e){}function Ut(e){const t=Object.values(e).filter(r=>typeof r=="number");return Object.entries(e).filter(([r,i])=>t.indexOf(+r)===-1).map(([r,i])=>i)}function Bt(e,t="|"){return e.map(n=>Je(n)).join(t)}function Kt(e,t){return typeof t=="bigint"?t.toString():t}function We(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Gt(e){return e==null}function Wt(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function Ht(e,t){const n=(e.toString().split(".")[1]||"").length,r=(t.toString().split(".")[1]||"").length,i=n>r?n:r,o=Number.parseInt(e.toFixed(i).replace(".","")),f=Number.parseInt(t.toFixed(i).replace(".",""));return o%f/10**i}function Jt(e,t,n){Object.defineProperty(e,t,{get(){{const r=n();return e[t]=r,r}},set(r){Object.defineProperty(e,t,{value:r})},configurable:!0})}function Ee(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Yt(e,t){return t?t.reduce((n,r)=>n?.[r],e):e}function Xt(e){const t=Object.keys(e),n=t.map(r=>e[r]);return Promise.all(n).then(r=>{const i={};for(let o=0;o<t.length;o++)i[t[o]]=r[o];return i})}function Zt(e=10){const t="abcdefghijklmnopqrstuvwxyz";let n="";for(let r=0;r<e;r++)n+=t[Math.floor(Math.random()*t.length)];return n}function Qt(e){return JSON.stringify(e)}var en=Error.captureStackTrace?Error.captureStackTrace:(...e)=>{};function Se(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var tn=We(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function He(e){if(Se(e)===!1)return!1;const t=e.constructor;if(t===void 0)return!0;const n=t.prototype;return!(Se(n)===!1||Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)}function nn(e){let t=0;for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&t++;return t}var rn=e=>{const t=typeof e;switch(t){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(e)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":return Array.isArray(e)?"array":e===null?"null":e.then&&typeof e.then=="function"&&e.catch&&typeof e.catch=="function"?"promise":typeof Map<"u"&&e instanceof Map?"map":typeof Set<"u"&&e instanceof Set?"set":typeof Date<"u"&&e instanceof Date?"date":typeof File<"u"&&e instanceof File?"file":"object";default:throw new Error(`Unknown data type: ${t}`)}},on=new Set(["string","number","symbol"]),sn=new Set(["string","number","bigint","boolean","symbol","undefined"]);function an(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ee(e,t,n){const r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function un(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function cn(e){let t;return new Proxy({},{get(n,r,i){return t??(t=e()),Reflect.get(t,r,i)},set(n,r,i,o){return t??(t=e()),Reflect.set(t,r,i,o)},has(n,r){return t??(t=e()),Reflect.has(t,r)},deleteProperty(n,r){return t??(t=e()),Reflect.deleteProperty(t,r)},ownKeys(n){return t??(t=e()),Reflect.ownKeys(t)},getOwnPropertyDescriptor(n,r){return t??(t=e()),Reflect.getOwnPropertyDescriptor(t,r)},defineProperty(n,r,i){return t??(t=e()),Reflect.defineProperty(t,r,i)}})}function Je(e){return typeof e=="bigint"?e.toString()+"n":typeof e=="string"?`"${e}"`:`${e}`}function ln(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}var fn={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},dn={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function pn(e,t){const n={},r=e._zod.def;for(const i in t){if(!(i in r.shape))throw new Error(`Unrecognized key: "${i}"`);t[i]&&(n[i]=r.shape[i])}return ee(e,{...e._zod.def,shape:n,checks:[]})}function mn(e,t){const n={...e._zod.def.shape},r=e._zod.def;for(const i in t){if(!(i in r.shape))throw new Error(`Unrecognized key: "${i}"`);t[i]&&delete n[i]}return ee(e,{...e._zod.def,shape:n,checks:[]})}function yn(e,t){if(!He(t))throw new Error("Invalid input to extend: expected a plain object");const n={...e._zod.def,get shape(){const r={...e._zod.def.shape,...t};return Ee(this,"shape",r),r},checks:[]};return ee(e,n)}function hn(e,t){return ee(e,{...e._zod.def,get shape(){const n={...e._zod.def.shape,...t._zod.def.shape};return Ee(this,"shape",n),n},catchall:t._zod.def.catchall,checks:[]})}function bn(e,t,n){const r=t._zod.def.shape,i={...r};if(n)for(const o in n){if(!(o in r))throw new Error(`Unrecognized key: "${o}"`);n[o]&&(i[o]=e?new e({type:"optional",innerType:r[o]}):r[o])}else for(const o in r)i[o]=e?new e({type:"optional",innerType:r[o]}):r[o];return ee(t,{...t._zod.def,shape:i,checks:[]})}function wn(e,t,n){const r=t._zod.def.shape,i={...r};if(n)for(const o in n){if(!(o in i))throw new Error(`Unrecognized key: "${o}"`);n[o]&&(i[o]=new e({type:"nonoptional",innerType:r[o]}))}else for(const o in r)i[o]=new e({type:"nonoptional",innerType:r[o]});return ee(t,{...t._zod.def,shape:i,checks:[]})}function gn(e,t=0){for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function _n(e,t){return t.map(n=>{var r;return(r=n).path??(r.path=[]),n.path.unshift(e),n})}function se(e){return typeof e=="string"?e:e?.message}function On(e,t,n){const r={...e,path:e.path??[]};if(!e.message){const i=se(e.inst?._zod.def?.error?.(e))??se(t?.error?.(e))??se(n.customError?.(e))??se(n.localeError?.(e))??"Invalid input";r.message=i}return delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function $n(e){return e instanceof Set?"set":e instanceof Map?"map":e instanceof File?"file":"unknown"}function vn(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function Nn(...e){const[t,n,r]=e;return typeof t=="string"?{message:t,code:"custom",input:n,inst:r}:{...t}}function Sn(e){return Object.entries(e).filter(([t,n])=>Number.isNaN(Number.parseInt(t,10))).map(t=>t[1])}var An=class{constructor(...e){}};Ge("a-z","0-9","A-Z","-_");function In(e,t,n){return n==="update"?e===void 0&&t.onUpdate!==void 0?typeof t.onUpdate=="function"?t.onUpdate():t.onUpdate:e:e==null&&t.defaultValue!==void 0?typeof t.defaultValue=="function"?t.defaultValue():t.defaultValue:e}let fe=[],z=-1;const Tn=e=>t=>t(e),Rn=({adapter:e,config:t})=>n=>{const r=Math.random().toString(36).substring(2,15),i={...t,supportsBooleans:t.supportsBooleans??!0,supportsDates:t.supportsDates??!0,supportsJSON:t.supportsJSON??!1,adapterName:t.adapterName??t.adapterId,supportsNumericIds:t.supportsNumericIds??!0,transaction:t.transaction??!1,disableTransformInput:t.disableTransformInput??!1,disableTransformOutput:t.disableTransformOutput??!1};if(n.advanced?.database?.useNumberId===!0&&i.supportsNumericIds===!1)throw new Error(`[${i.adapterName}] Your database or database adapter does not support numeric ids. Please disable "useNumberId" in your config.`);const o=De(n),f=({field:u,model:m})=>{if(u==="id"||u==="_id")return"id";const p=s(m);let d=o[p]?.fields[u];if(!d){const h=Object.entries(o[p].fields).find(([b,O])=>O.fieldName===u);h&&(d=h[1],u=h[0])}if(!d)throw l(`Field ${u} not found in model ${p}`),l("Schema:",o),new Error(`Field ${u} not found in model ${p}`);return u},s=u=>{if(i.usePlural&&u.charAt(u.length-1)==="s"){let p=u.slice(0,-1),d=o[p]?p:void 0;if(d||(d=Object.entries(o).find(([h,b])=>b.modelName===p)?.[0]),d)return d}let m=o[u]?u:void 0;if(m||(m=Object.entries(o).find(([p,d])=>d.modelName===u)?.[0]),!m)throw l(`Model "${u}" not found in schema`),l("Schema:",o),new Error(`Model "${u}" not found in schema`);return m},a=u=>{const m=s(u),p=i&&i.usePlural;return o&&o[m]&&o[m].modelName!==u?p?`${o[m].modelName}s`:o[m].modelName:p?`${u}s`:u};function c({model:u,field:m}){const p=s(u),d=f({model:p,field:m});return o[p]?.fields[d]?.fieldName||d}const l=(...u)=>{if(i.debugLogs===!0||typeof i.debugLogs=="object"){if(typeof i.debugLogs=="object"&&"isRunningAdapterTests"in i.debugLogs){i.debugLogs.isRunningAdapterTests&&(u.shift(),fe.push({instance:r,args:u}));return}if(typeof i.debugLogs=="object"&&i.debugLogs.logCondition&&!i.debugLogs.logCondition?.())return;if(typeof u[0]=="object"&&"method"in u[0]){const m=u.shift().method;if(typeof i.debugLogs=="object"){if(m==="create"&&!i.debugLogs.create)return;if(m==="update"&&!i.debugLogs.update)return;if(m==="updateMany"&&!i.debugLogs.updateMany)return;if(m==="findOne"&&!i.debugLogs.findOne)return;if(m==="findMany"&&!i.debugLogs.findMany)return;if(m==="delete"&&!i.debugLogs.delete)return;if(m==="deleteMany"&&!i.debugLogs.deleteMany)return;if(m==="count"&&!i.debugLogs.count)return}Y.info(`[${i.adapterName}]`,...u)}else Y.info(`[${i.adapterName}]`,...u)}},y=({customModelName:u,forceAllowId:m})=>{const p=!i.disableIdGeneration&&!n.advanced?.database?.useNumberId&&!m,d=s(u??"id");return{type:n.advanced?.database?.useNumberId?"number":"string",required:!!p,...p?{defaultValue(){if(i.disableIdGeneration)return;const h=n.advanced?.database?.useNumberId;let b=n.advanced?.database?.generateId;if(n.advanced?.generateId!==void 0&&(Y.warn("Your Better Auth config includes advanced.generateId which is deprecated. Please use advanced.database.generateId instead. This will be removed in future releases."),b=n.advanced?.generateId),!(b===!1||h))return b?b({model:d}):i.customIdGenerator?i.customIdGenerator({model:d}):kt()}}:{}}},w=({model:u,field:m})=>{const p=s(u),d=f({field:m,model:p}),h=o[p].fields;return h.id=y({customModelName:p}),h[d]},S=async(u,m,p,d)=>{const h={},b=o[m].fields,O=i.mapKeysTransformInput??{};!i.disableIdGeneration&&!n.advanced?.database?.useNumberId&&(b.id=y({customModelName:m,forceAllowId:d&&"id"in u}));for(const g in b){const N=u[g],A=b[g];let _=O[g]||b[g].fieldName||g;if(N===void 0&&(A.defaultValue===void 0&&!A.transform?.input&&!(p==="update"&&A.onUpdate)||p==="update"&&!A.onUpdate))continue;let $=In(N,A,p);A.transform?.input&&($=await A.transform.input($)),A.references?.field==="id"&&n.advanced?.database?.useNumberId?Array.isArray($)?$=$.map(te=>te!==null?Number(te):null):$=$!==null?Number($):null:i.supportsJSON===!1&&typeof $=="object"&&A.type==="json"?$=JSON.stringify($):i.supportsDates===!1&&$ instanceof Date&&A.type==="date"?$=$.toISOString():i.supportsBooleans===!1&&typeof $=="boolean"&&($=$?1:0),i.customTransformInput&&($=i.customTransformInput({data:$,action:p,field:_,fieldAttributes:A,model:m,schema:o,options:n})),$!==void 0&&(h[_]=$)}return h},C=async(u,m,p=[])=>{if(!u)return null;const d=i.mapKeysTransformOutput??{},h={},b=o[m].fields,O=Object.entries(d).find(([g,N])=>N==="id")?.[0];b[O??"id"]={type:n.advanced?.database?.useNumberId?"number":"string"};for(const g in b){if(p.length&&!p.includes(g))continue;const N=b[g];if(N){const A=N.fieldName||g;let _=u[Object.entries(d).find(([te,Ze])=>Ze===A)?.[0]||A];N.transform?.output&&(_=await N.transform.output(_));let $=d[g]||g;A==="id"||N.references?.field==="id"?typeof _<"u"&&_!==null&&(_=String(_)):i.supportsJSON===!1&&typeof _=="string"&&N.type==="json"?_=jt(_):i.supportsDates===!1&&typeof _=="string"&&N.type==="date"?_=new Date(_):i.supportsBooleans===!1&&typeof _=="number"&&N.type==="boolean"&&(_=_===1),i.customTransformOutput&&(_=i.customTransformOutput({data:_,field:$,fieldAttributes:N,select:p,model:m,schema:o,options:n})),h[$]=_}}return h},x=({model:u,where:m})=>{if(!m)return;const p=i.mapKeysTransformInput??{};return m.map(d=>{const{field:h,value:b,operator:O="eq",connector:g="AND"}=d;if(O==="in"&&!Array.isArray(b))throw new Error("Value must be an array");const N=s(u),A=f({field:h,model:u}),_=p[A]||c({field:A,model:N}),$=w({field:A,model:N});return(A==="id"||$.references?.field==="id")&&n.advanced?.database?.useNumberId?Array.isArray(b)?{operator:O,connector:g,field:_,value:b.map(Number)}:{operator:O,connector:g,field:_,value:Number(b)}:{operator:O,connector:g,field:_,value:b}})},E=e({options:n,schema:o,debugLog:l,getFieldName:c,getModelName:a,getDefaultModelName:s,getDefaultFieldName:f,getFieldAttributes:w,transformInput:S,transformOutput:C,transformWhereClause:x});let B=null;const V={transaction:async u=>(B||(i.transaction?(Y.debug(`[${i.adapterName}] - Using provided transaction implementation.`),B=i.transaction):(typeof i.debugLogs=="object"&&"isRunningAdapterTests"in i.debugLogs&&i.debugLogs.isRunningAdapterTests||Y.warn(`[${i.adapterName}] - Transactions are not supported. Executing operations sequentially.`),B=Tn(V))),B(u)),create:async({data:u,model:m,select:p,forceAllowId:d=!1})=>{z++;let h=z;const b=a(m);if(m=s(m),"id"in u&&!d){Y.warn(`[${i.adapterName}] - You are trying to create a record with an id. This is not allowed as we handle id generation for you, unless you pass in the \`forceAllowId\` parameter. The id will be ignored.`);const _=new Error().stack?.split(`
2
+ `).filter(($,te)=>te!==1).join(`
3
+ `).replace("Error:","Create method with `id` being called at:");console.log(_),u.id=void 0}l({method:"create"},`${I(h)} ${T(1,4)}`,`${R("create")} ${j("Unsafe Input")}:`,{model:b,data:u});let O=u;i.disableTransformInput||(O=await S(u,m,"create",d)),l({method:"create"},`${I(h)} ${T(2,4)}`,`${R("create")} ${j("Parsed Input")}:`,{model:b,data:O});const g=await E.create({data:O,model:b});l({method:"create"},`${I(h)} ${T(3,4)}`,`${R("create")} ${j("DB Result")}:`,{model:b,res:g});let N=g;return i.disableTransformOutput||(N=await C(g,m,p)),l({method:"create"},`${I(h)} ${T(4,4)}`,`${R("create")} ${j("Parsed Result")}:`,{model:b,data:N}),N},update:async({model:u,where:m,update:p})=>{z++;let d=z;u=s(u);const h=a(u),b=x({model:u,where:m});l({method:"update"},`${I(d)} ${T(1,4)}`,`${R("update")} ${j("Unsafe Input")}:`,{model:h,data:p});let O=p;i.disableTransformInput||(O=await S(p,u,"update")),l({method:"update"},`${I(d)} ${T(2,4)}`,`${R("update")} ${j("Parsed Input")}:`,{model:h,data:O});const g=await E.update({model:h,where:b,update:O});l({method:"update"},`${I(d)} ${T(3,4)}`,`${R("update")} ${j("DB Result")}:`,{model:h,data:g});let N=g;return i.disableTransformOutput||(N=await C(g,u)),l({method:"update"},`${I(d)} ${T(4,4)}`,`${R("update")} ${j("Parsed Result")}:`,{model:h,data:N}),N},updateMany:async({model:u,where:m,update:p})=>{z++;let d=z;const h=a(u),b=x({model:u,where:m});u=s(u),l({method:"updateMany"},`${I(d)} ${T(1,4)}`,`${R("updateMany")} ${j("Unsafe Input")}:`,{model:h,data:p});let O=p;i.disableTransformInput||(O=await S(p,u,"update")),l({method:"updateMany"},`${I(d)} ${T(2,4)}`,`${R("updateMany")} ${j("Parsed Input")}:`,{model:h,data:O});const g=await E.updateMany({model:h,where:b,update:O});return l({method:"updateMany"},`${I(d)} ${T(3,4)}`,`${R("updateMany")} ${j("DB Result")}:`,{model:h,data:g}),l({method:"updateMany"},`${I(d)} ${T(4,4)}`,`${R("updateMany")} ${j("Parsed Result")}:`,{model:h,data:g}),g},findOne:async({model:u,where:m,select:p})=>{z++;let d=z;const h=a(u),b=x({model:u,where:m});u=s(u),l({method:"findOne"},`${I(d)} ${T(1,3)}`,`${R("findOne")}:`,{model:h,where:b,select:p});const O=await E.findOne({model:h,where:b,select:p});l({method:"findOne"},`${I(d)} ${T(2,3)}`,`${R("findOne")} ${j("DB Result")}:`,{model:h,data:O});let g=O;return i.disableTransformOutput||(g=await C(O,u,p)),l({method:"findOne"},`${I(d)} ${T(3,3)}`,`${R("findOne")} ${j("Parsed Result")}:`,{model:h,data:g}),g},findMany:async({model:u,where:m,limit:p,sortBy:d,offset:h})=>{z++;let b=z;const O=p??n.advanced?.database?.defaultFindManyLimit??100,g=a(u),N=x({model:u,where:m});u=s(u),l({method:"findMany"},`${I(b)} ${T(1,3)}`,`${R("findMany")}:`,{model:g,where:N,limit:O,sortBy:d,offset:h});const A=await E.findMany({model:g,where:N,limit:O,sortBy:d,offset:h});l({method:"findMany"},`${I(b)} ${T(2,3)}`,`${R("findMany")} ${j("DB Result")}:`,{model:g,data:A});let _=A;return i.disableTransformOutput||(_=await Promise.all(A.map(async $=>await C($,u)))),l({method:"findMany"},`${I(b)} ${T(3,3)}`,`${R("findMany")} ${j("Parsed Result")}:`,{model:g,data:_}),_},delete:async({model:u,where:m})=>{z++;let p=z;const d=a(u),h=x({model:u,where:m});u=s(u),l({method:"delete"},`${I(p)} ${T(1,2)}`,`${R("delete")}:`,{model:d,where:h}),await E.delete({model:d,where:h}),l({method:"delete"},`${I(p)} ${T(2,2)}`,`${R("delete")} ${j("DB Result")}:`,{model:d})},deleteMany:async({model:u,where:m})=>{z++;let p=z;const d=a(u),h=x({model:u,where:m});u=s(u),l({method:"deleteMany"},`${I(p)} ${T(1,2)}`,`${R("deleteMany")} ${j("DeleteMany")}:`,{model:d,where:h});const b=await E.deleteMany({model:d,where:h});return l({method:"deleteMany"},`${I(p)} ${T(2,2)}`,`${R("deleteMany")} ${j("DB Result")}:`,{model:d,data:b}),b},count:async({model:u,where:m})=>{z++;let p=z;const d=a(u),h=x({model:u,where:m});u=s(u),l({method:"count"},`${I(p)} ${T(1,2)}`,`${R("count")}:`,{model:d,where:h});const b=await E.count({model:d,where:h});return l({method:"count"},`${I(p)} ${T(2,2)}`,`${R("count")}:`,{model:d,data:b}),b},createSchema:E.createSchema?async(u,m)=>{const p=De(n);return n.secondaryStorage&&!n.session?.storeSessionInDatabase&&delete p.session,n.rateLimit&&n.rateLimit.storage==="database"&&(typeof n.rateLimit.enabled>"u"||n.rateLimit.enabled===!0)&&(p.ratelimit={modelName:n.rateLimit.modelName??"ratelimit",fields:{key:{type:"string",unique:!0,required:!0,fieldName:n.rateLimit.fields?.key??"key"},count:{type:"number",required:!0,fieldName:n.rateLimit.fields?.count??"count"},lastRequest:{type:"number",required:!0,bigint:!0,defaultValue:()=>Date.now(),fieldName:n.rateLimit.fields?.lastRequest??"lastRequest"}}}),E.createSchema({file:m,tables:p})}:void 0,options:{adapterConfig:i,...E.options??{}},id:i.adapterId,...i.debugLogs?.isRunningAdapterTests?{adapterTestDebugLogs:{resetDebugLogs(){fe=fe.filter(u=>u.instance!==r)},printDebugLogs(){const u="─".repeat(80),m=fe.filter(d=>d.instance===r);if(m.length===0)return;let p=m.reverse().map(d=>(d.args[0]=`
4
+ ${d.args[0]}`,[...d.args,`
5
+ `])).reduce((d,h)=>[...h,...d],[`
6
+ ${u}`]);console.log(...p)}}}:{}};return V};function I(e){return Ke()<8?`#${e}`:`${D.fg.magenta}#${e}${D.reset}`}function T(e,t){return`${D.bg.black}${D.fg.yellow}[${e}/${t}]${D.reset}`}function R(e){return`${D.bright}${e}${D.reset}`}function j(e){return`${D.dim}(${e})${D.reset}`}const En={};function ue(e){return En.inspect(e,{colors:!0,depth:null})}function Ye(e,t){return e.toLowerCase().endsWith("id")?e.slice(0,-2):t}function Mn(e,t,n){const{type:r,required:i,unique:o,sortable:f}=e,s=Array.isArray(r)?r[0]:r;let a;switch(s){case"string":a="i.string()";break;case"boolean":a="i.boolean()";break;case"date":a="i.date()";break;case"number":a="i.number()";break;case"json":a="i.json()";break;case"number[]":a="i.json()";break;case"string[]":a="i.json()";break;default:a="i.string()"}return o&&(a+=".unique()"),i===!1&&(a+=".optional()"),f&&(a+=".indexed()"),t==="user"&&n!=="email"&&!a.endsWith(".optional()")&&(a+=".optional()"),a}function Ce(e,t,n){return e==="user"?"$users":n?`${t}s`:t}function xn(e){return e.charAt(0).toLowerCase()+e.slice(1)}function jn(e,t){const n={},r={};for(const[i,o]of Object.entries(e)){const{modelName:f}=o;r[f]=Ce(f,i,t)}for(const[i,o]of Object.entries(e)){const{modelName:f,fields:s}=o,a=Ce(f,i,t);for(const[c,l]of Object.entries(s)){const{references:y}=l;if(y){const{model:w,onDelete:S}=y,C=r[w];if(!C){console.warn(`Warning: Could not find entity name for model "${w}" referenced by ${f}.${c}`);continue}const x=Ye(c,w),E=a.replace("$",""),B=x.charAt(0).toUpperCase()+xn(x.slice(1)),V=`${E}${B}`,u=a.replace("$","");n[V]={forward:{on:a,has:"one",label:x,onDelete:S||"cascade"},reverse:{on:C,has:"many",label:u}}}}}return n}function kn(e,t){const n={};for(const[s,a]of Object.entries(e)){const{modelName:c,fields:l}=a,y=[];for(const[S,C]of Object.entries(l)){const x=Mn(C,c,S);y.push(`${S}: ${x}`)}const w=c==="user"?"$users":t?`${s}s`:s;n[w]=`i.entity({
7
+ ${y.join(`,
8
+ `)}
9
+ })`}const r=jn(e,t),i=Object.entries(n).map(([s,a])=>` ${s}: ${a}`).join(`,
10
+ `),o=Object.entries(r).map(([s,a])=>{const c=a.forward,l=a.reverse;return` ${s}: {
11
+ forward: {
12
+ on: "${c.on}",
13
+ has: "${c.has}",
14
+ label: "${c.label}"${c.onDelete?`,
15
+ onDelete: "${c.onDelete}"`:""}
16
+ },
17
+ reverse: {
18
+ on: "${l.on}",
19
+ has: "${l.has}",
20
+ label: "${l.label}"
21
+ }
22
+ }`}).join(`,
23
+ `),f=o?`,
24
+ links: {
25
+ ${o}
26
+ }`:"";return`// Docs: https://www.instantdb.com/docs/modeling-data
27
+
28
+ import { i } from "@instantdb/react"
29
+
30
+ export const authSchema = i.schema({
31
+ entities: {
32
+ ${i}
33
+ }${f}
34
+ })
35
+ `}function Dn(e,t,n){return e==="user"?"$users":n?`${t}s`:t}function Ln(e,t){const n={};for(const[r,i]of Object.entries(e)){const{modelName:o}=i;n[o]=Dn(o,r,t)}return n}function Cn({db:e,model:t,modelSchema:n,data:r,entityNameMap:i}){const o=[],{fields:f,modelName:s}=n;for(const[a,c]of Object.entries(f)){const{references:l}=c;if(l){const{model:y}=l;if(!i[y]){console.warn(`Warning: Could not find entity name for model "${y}" referenced by ${s}.${a}`);continue}const S=r[a];if(S!=null){const x={[Ye(a,y)]:S},E=e.tx[t][r.id].link(x);o.push(E)}}}return o}const Pn=({db:e,usePlural:t=!0,debugLogs:n=!1})=>Rn({config:{customIdGenerator:yt,adapterId:"instantdb-adapter",adapterName:"InstantDB Adapter",usePlural:t,debugLogs:n,supportsJSON:!0,supportsDates:!1,supportsBooleans:!0,supportsNumericIds:!1},adapter:({debugLog:r,getDefaultModelName:i,getFieldName:o,schema:f})=>({create:async({data:s,model:a})=>{const c=i(a),l=f[c];if(c==="session"){const E=(await e.query({$users:{$:{where:{id:s.userId}}}})).$users;if(!E.length)throw new Error(`$users entity not found: ${s.userId}`);const B=E[0];r("Create Token",B.email);const V=await e.auth.createToken(B.email),u=o({model:a,field:"token"});Object.assign(s,{[u]:V})}c==="user"&&(a="$users"),r("Create",a,ue(s));const y=Ln(f,t),w=e.tx[a][s.id].create(s),S=Cn({db:e,model:a,modelSchema:l,data:s,entityNameMap:y}),C=[w,...S];return await e.transact(C),s},update:async({update:s,model:a,where:c})=>{i(a)==="user"&&(a="$users");const l=await J({db:e,model:a,where:c,debugLog:r});if(!l.length)return null;r("Update:",l.map(w=>w.id),ue(s));const y=l.map(w=>e.tx[a][w.id].update(s));return await e.transact(y),{...l[0],...s}},updateMany:async({update:s,model:a,where:c})=>{i(a)==="user"&&(a="$users");const l=await J({db:e,model:a,where:c,debugLog:r});if(!l.length)return 0;r("Update:",l.map(w=>w.id),ue(s));const y=l.map(w=>e.tx[a][w.id].update(s));return await e.transact(y),l.length},delete:async({model:s,where:a})=>{i(s)==="user"&&(s="$users");const c=await J({db:e,model:s,where:a,debugLog:r});if(!c.length)return;const l=c.map(y=>e.tx[s][y.id].delete());await e.transact(l),i(s)==="session"&&Promise.all(c.map(async y=>{try{const w=o({model:s,field:"token"});await e.auth.signOut({refresh_token:y[w]})}catch{}}))},deleteMany:async({model:s,where:a})=>{i(s)==="user"&&(s="$users");const c=await J({db:e,model:s,where:a,debugLog:r});if(!c.length)return 0;const l=c.map(y=>e.tx[s][y.id].delete());return await e.transact(l),i(s)==="session"&&Promise.all(c.map(async y=>{try{const w=o({model:s,field:"token"});await e.auth.signOut({refresh_token:y[w]})}catch{}})),c.length},findOne:async({model:s,where:a})=>{i(s)==="user"&&(s="$users");const c=await J({db:e,model:s,where:a,debugLog:r});return c.length?c[0]:null},findMany:async({model:s,where:a,limit:c,sortBy:l,offset:y})=>(i(s)==="user"&&(s="$users"),await J({db:e,model:s,where:a,limit:c,sortBy:l,offset:y,debugLog:r})),count:async({model:s,where:a})=>(i(s)==="user"&&(s="$users"),(await J({db:e,model:s,where:a,debugLog:r})).length),createSchema:async({file:s="./auth.schema.ts",tables:a})=>({code:kn(a,t),path:s})})});async function J({db:e,debugLog:t,model:n,where:r,limit:i,offset:o,sortBy:f}){let s;f&&(s={[f.field]:f.direction});const a={[n]:{$:{where:Xe(r),limit:i,offset:o,order:s}}};t("Query",ue(a));const c=await e.query(a);return t("Result",ue(c)),c[n]}function Xe(e){const t={};return e?.forEach(n=>{switch(n.operator){case"eq":t[n.field]=n.value;break;case"in":t[n.field]={$in:n.value};break;case"contains":t[n.field]={$like:`%${n.value}%`};break;case"starts_with":t[n.field]={$like:`${n.value}%`};break;case"ends_with":t[n.field]={$like:`%${n.value}`};break;case"ne":t[n.field]={$not:n.value};break;case"gt":t[n.field]={$gt:n.value};break;case"gte":t[n.field]={$gte:n.value};break;case"lt":t[n.field]={$lt:n.value};break;case"lte":t[n.field]={$lte:n.value};break}}),t}async function zn(e,t){const n=await e.getAuth();t&&n?.id!==t?.userId&&e.auth.signInWithToken(t.token),!t&&n&&e.auth.signOut()}exports.instantAdapter=Pn;exports.instantAuth=zn;exports.parseWhere=Xe;
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from "./adapter/instant-adapter";
2
- export * from "./shared/instant-auth";
1
+ export * from './adapter/instant-adapter';
2
+ export * from './shared/instant-auth';