@take-out/better-auth-utils 0.2.9 → 0.3.0

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.
@@ -98,7 +98,11 @@ function createBetterAuthClient(options) {
98
98
  error
99
99
  } = props;
100
100
  if (error) {
101
- onAuthError?.(error), scheduleAuthRetry(retryDelay);
101
+ onAuthError?.(error), keysStorage.get()?.session || setState({
102
+ state: "logged-out",
103
+ session: null,
104
+ user: null
105
+ }), scheduleAuthRetry(retryDelay);
102
106
  return;
103
107
  }
104
108
  const data = dataGeneric,
@@ -106,12 +106,19 @@ function createBetterAuthClient(options) {
106
106
  error
107
107
  } = props;
108
108
  if (error) {
109
- onAuthError?.(error), scheduleAuthRetry(retryDelay);
109
+ var _keysStorage_get1;
110
+ onAuthError?.(error);
111
+ var hasPersistedSession = !!(!((_keysStorage_get1 = keysStorage.get()) === null || _keysStorage_get1 === void 0) && _keysStorage_get1.session);
112
+ hasPersistedSession || setState({
113
+ state: "logged-out",
114
+ session: null,
115
+ user: null
116
+ }), scheduleAuthRetry(retryDelay);
110
117
  return;
111
118
  }
112
119
  var data = dataGeneric,
113
- hasPersistedSession = !!(!((_keysStorage_get = keysStorage.get()) === null || _keysStorage_get === void 0) && _keysStorage_get.session),
114
- nextState = isPending ? "loading" : data?.session ? "logged-in" : hasPersistedSession && data === void 0 ? "loading" : "logged-out",
120
+ hasPersistedSession1 = !!(!((_keysStorage_get = keysStorage.get()) === null || _keysStorage_get === void 0) && _keysStorage_get.session),
121
+ nextState = isPending ? "loading" : data?.session ? "logged-in" : hasPersistedSession1 && data === void 0 ? "loading" : "logged-out",
115
122
  _data_session,
116
123
  sessionUpdate = nextState === "loading" ? {} : {
117
124
  session: (_data_session = data?.session) !== null && _data_session !== void 0 ? _data_session : null,
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createAuthClient_exports","__export","createBetterAuthClient","module","exports","import_helpers","require","import_client","options","onAuthStateChange","onAuthError","createUser","storagePrefix","retryDelay","useJWT","authCookieNames","authClientOptions","empty","state","session","user","token","keysStorage","createStorageValue","stateStorage","createAuthClientWithSession","createAuthClient","fetchOptions","credentials","headers","Authorization","authClient","_keysStorage_get","existingSession","get","authState","createEmitter","comparator","isEqualDeepLite","authClientVersion","setState","update","current","next","set","emit","setAuthClientToken","props","updateAuthClient","Math","random","subscribeToAuthEffect","dispose","retryTimer","useSession","subscribe","_authState_value","data","dataGeneric","isPending","error","scheduleAuthRetry","hasPersistedSession","nextState","_data_session","sessionUpdate","previousSession","isNewSession","id","userId","getValidToken","then","delayMs","clearTimeout","setTimeout","_res_data","res","$fetch","console","statusText","clearAuthClientToken","remove","clearAuthCookies","document","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","cookieName","cookie","domain","window","location","hostname","startsWith","slice","err","return","clearAllAuth","clearState","getAuth","loggedIn","useAuth","useEmitterValue","addEventListener"],"sources":["../../src/createAuthClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createAuthClient_exports","__export","createBetterAuthClient","module","exports","import_helpers","require","import_client","options","onAuthStateChange","onAuthError","createUser","storagePrefix","retryDelay","useJWT","authCookieNames","authClientOptions","empty","state","session","user","token","keysStorage","createStorageValue","stateStorage","createAuthClientWithSession","createAuthClient","fetchOptions","credentials","headers","Authorization","authClient","_keysStorage_get","existingSession","get","authState","createEmitter","comparator","isEqualDeepLite","authClientVersion","setState","update","current","next","set","emit","setAuthClientToken","props","updateAuthClient","Math","random","subscribeToAuthEffect","dispose","retryTimer","useSession","subscribe","_authState_value","data","dataGeneric","isPending","error","_keysStorage_get1","hasPersistedSession","scheduleAuthRetry","hasPersistedSession1","nextState","_data_session","sessionUpdate","previousSession","isNewSession","id","userId","getValidToken","then","delayMs","clearTimeout","setTimeout","_res_data","res","$fetch","console","statusText","clearAuthClientToken","remove","clearAuthCookies","document","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","cookieName","cookie","domain","window","location","hostname","startsWith","slice","err","return","clearAllAuth","clearState","getAuth","loggedIn"],"sources":["../../src/createAuthClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -73,7 +73,11 @@ function createBetterAuthClient(options) {
73
73
  error
74
74
  } = props;
75
75
  if (error) {
76
- onAuthError?.(error), scheduleAuthRetry(retryDelay);
76
+ onAuthError?.(error), keysStorage.get()?.session || setState({
77
+ state: "logged-out",
78
+ session: null,
79
+ user: null
80
+ }), scheduleAuthRetry(retryDelay);
77
81
  return;
78
82
  }
79
83
  const data = dataGeneric,
@@ -1 +1 @@
1
- {"version":3,"names":["createEmitter","createStorageValue","isEqualDeepLite","useEmitterValue","createAuthClient","createBetterAuthClient","options","onAuthStateChange","onAuthError","createUser","storagePrefix","retryDelay","useJWT","authCookieNames","authClientOptions","empty","state","session","user","token","keysStorage","stateStorage","createAuthClientWithSession","fetchOptions","credentials","headers","Authorization","authClient","existingSession","get","authState","comparator","authClientVersion","setState","update","next","value","set","emit","setAuthClientToken","props","updateAuthClient","Math","random","subscribeToAuthEffect","dispose","retryTimer","useSession","subscribe","data","dataGeneric","isPending","error","scheduleAuthRetry","hasPersistedSession","nextState","sessionUpdate","previousSession","isNewSession","id","userId","getValidToken","then","delayMs","clearTimeout","setTimeout","res","$fetch","console","statusText","clearAuthClientToken","remove","clearAuthCookies","document","cookieName","cookie","domain","window","location","hostname","startsWith","slice","clearAllAuth","clearState","getAuth","loggedIn","useAuth","addEventListener","cleanup","proxiedAuthClient","Proxy","_target","key","signOut","reload","Reflect"],"sources":["../../src/createAuthClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createEmitter","createStorageValue","isEqualDeepLite","useEmitterValue","createAuthClient","createBetterAuthClient","options","onAuthStateChange","onAuthError","createUser","storagePrefix","retryDelay","useJWT","authCookieNames","authClientOptions","empty","state","session","user","token","keysStorage","stateStorage","createAuthClientWithSession","fetchOptions","credentials","headers","Authorization","authClient","existingSession","get","authState","comparator","authClientVersion","setState","update","next","value","set","emit","setAuthClientToken","props","updateAuthClient","Math","random","subscribeToAuthEffect","dispose","retryTimer","useSession","subscribe","data","dataGeneric","isPending","error","scheduleAuthRetry","hasPersistedSession","nextState","sessionUpdate","previousSession","isNewSession","id","userId","getValidToken","then","delayMs","clearTimeout","setTimeout","res","$fetch","console","statusText","clearAuthClientToken","remove","clearAuthCookies","document","cookieName","cookie","domain","window","location","hostname","startsWith","slice","clearAllAuth","clearState","getAuth","loggedIn","useAuth","addEventListener","cleanup","proxiedAuthClient","Proxy","_target","key","signOut","reload","Reflect"],"sources":["../../src/createAuthClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -79,12 +79,19 @@ function createBetterAuthClient(options) {
79
79
  error
80
80
  } = props;
81
81
  if (error) {
82
- onAuthError?.(error), scheduleAuthRetry(retryDelay);
82
+ var _keysStorage_get1;
83
+ onAuthError?.(error);
84
+ var hasPersistedSession = !!(!((_keysStorage_get1 = keysStorage.get()) === null || _keysStorage_get1 === void 0) && _keysStorage_get1.session);
85
+ hasPersistedSession || setState({
86
+ state: "logged-out",
87
+ session: null,
88
+ user: null
89
+ }), scheduleAuthRetry(retryDelay);
83
90
  return;
84
91
  }
85
92
  var data = dataGeneric,
86
- hasPersistedSession = !!(!((_keysStorage_get = keysStorage.get()) === null || _keysStorage_get === void 0) && _keysStorage_get.session),
87
- nextState = isPending ? "loading" : data?.session ? "logged-in" : hasPersistedSession && data === void 0 ? "loading" : "logged-out",
93
+ hasPersistedSession1 = !!(!((_keysStorage_get = keysStorage.get()) === null || _keysStorage_get === void 0) && _keysStorage_get.session),
94
+ nextState = isPending ? "loading" : data?.session ? "logged-in" : hasPersistedSession1 && data === void 0 ? "loading" : "logged-out",
88
95
  _data_session,
89
96
  sessionUpdate = nextState === "loading" ? {} : {
90
97
  session: (_data_session = data?.session) !== null && _data_session !== void 0 ? _data_session : null,
@@ -1 +1 @@
1
- {"version":3,"names":["createEmitter","createStorageValue","isEqualDeepLite","useEmitterValue","createAuthClient","createBetterAuthClient","options","onAuthStateChange","onAuthError","createUser","storagePrefix","retryDelay","useJWT","authCookieNames","authClientOptions","empty","state","session","user","token","keysStorage","stateStorage","createAuthClientWithSession","fetchOptions","credentials","headers","Authorization","authClient","_keysStorage_get","existingSession","get","authState","comparator","authClientVersion","setState","update","current","value","next","set","emit","setAuthClientToken","props","updateAuthClient","Math","random","subscribeToAuthEffect","dispose","retryTimer","useSession","subscribe","_authState_value","data","dataGeneric","isPending","error","scheduleAuthRetry","hasPersistedSession","nextState","_data_session","sessionUpdate","previousSession","isNewSession","id","userId","getValidToken","then","delayMs","clearTimeout","setTimeout","_res_data","res","$fetch","console","statusText","clearAuthClientToken","remove","clearAuthCookies","document","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","cookieName","cookie","domain","window","location","hostname","startsWith","slice","err","return","clearAllAuth","clearState","getAuth","loggedIn","useAuth","addEventListener","cleanup","proxiedAuthClient","Proxy"],"sources":["../../src/createAuthClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createEmitter","createStorageValue","isEqualDeepLite","useEmitterValue","createAuthClient","createBetterAuthClient","options","onAuthStateChange","onAuthError","createUser","storagePrefix","retryDelay","useJWT","authCookieNames","authClientOptions","empty","state","session","user","token","keysStorage","stateStorage","createAuthClientWithSession","fetchOptions","credentials","headers","Authorization","authClient","_keysStorage_get","existingSession","get","authState","comparator","authClientVersion","setState","update","current","value","next","set","emit","setAuthClientToken","props","updateAuthClient","Math","random","subscribeToAuthEffect","dispose","retryTimer","useSession","subscribe","_authState_value","data","dataGeneric","isPending","error","_keysStorage_get1","hasPersistedSession","scheduleAuthRetry","hasPersistedSession1","nextState","_data_session","sessionUpdate","previousSession","isNewSession","id","userId","getValidToken","then","delayMs","clearTimeout","setTimeout","_res_data","res","$fetch","console","statusText","clearAuthClientToken","remove","clearAuthCookies","document","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","cookieName","cookie","domain","window","location","hostname","startsWith","slice","err","return","clearAllAuth","clearState","getAuth","loggedIn","useAuth"],"sources":["../../src/createAuthClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export * from "./createAuthClient";
1
+ export * from "./createAuthClient.mjs";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,6 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/index.ts"],
4
- "mappings": "AAAA,cAAc;",
5
- "names": []
6
- }
1
+ {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@take-out/better-auth-utils",
3
- "version": "0.2.9",
3
+ "version": "0.3.0",
4
4
  "description": "Better auth utilities and client for React/React Native applications",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -41,7 +41,7 @@
41
41
  }
42
42
  },
43
43
  "dependencies": {
44
- "@take-out/helpers": "0.2.9",
44
+ "@take-out/helpers": "0.3.0",
45
45
  "jose": "^6.0.10"
46
46
  },
47
47
  "peerDependencies": {
@@ -49,7 +49,7 @@
49
49
  "react": "*"
50
50
  },
51
51
  "devDependencies": {
52
- "@tamagui/build": "2.0.0-rc.15",
52
+ "@tamagui/build": "2.0.0-rc.36",
53
53
  "@types/node": "24.0.3",
54
54
  "@types/react": "^19.0.8",
55
55
  "oxfmt": "^0.16.0",
@@ -99,7 +99,7 @@ type InferUser<T> = T extends { createUser?: (user: User) => infer R }
99
99
  : User
100
100
 
101
101
  export function createBetterAuthClient<const Opts extends BetterAuthClientProps<any>>(
102
- options: Opts
102
+ options: Opts,
103
103
  ): BetterAuthClientReturn<InferUser<Opts>, ReturnType<typeof createAuthClient<Opts>>> {
104
104
  type TUser = InferUser<Opts>
105
105
  const {
@@ -146,7 +146,7 @@ export function createBetterAuthClient<const Opts extends BetterAuthClientProps<
146
146
  const authState = createEmitter<AuthState<TUser>>(
147
147
  'authState',
148
148
  stateStorage.get() || empty,
149
- { comparator: isEqualDeepLite }
149
+ { comparator: isEqualDeepLite },
150
150
  )
151
151
 
152
152
  const authClientVersion = createEmitter<number>('authClientVersion', 0)
@@ -197,6 +197,11 @@ export function createBetterAuthClient<const Opts extends BetterAuthClientProps<
197
197
 
198
198
  if (error) {
199
199
  onAuthError?.(error)
200
+ // if no persisted session, transition to logged-out instead of staying loading
201
+ const hasPersistedSession = !!keysStorage.get()?.session
202
+ if (!hasPersistedSession) {
203
+ setState({ state: 'logged-out', session: null, user: null })
204
+ }
200
205
  scheduleAuthRetry(retryDelay)
201
206
  return
202
207
  }
package/src/server.ts CHANGED
@@ -42,7 +42,7 @@ export type AuthServer = {
42
42
  export async function getAuthDataFromRequest(
43
43
  authServer: AuthServer,
44
44
  req: Request,
45
- tokenOptions?: ValidateTokenOptions
45
+ tokenOptions?: ValidateTokenOptions,
46
46
  ): Promise<AuthData | null> {
47
47
  // from react native, better auth doesnt send cookie but insteead only the Authorization
48
48
  // but better auth wants to find the cookie here, so re-route it:
@@ -98,7 +98,7 @@ export async function getAuthDataFromRequest(
98
98
 
99
99
  export async function validateToken(
100
100
  token: string,
101
- options?: ValidateTokenOptions
101
+ options?: ValidateTokenOptions,
102
102
  ): Promise<JWTPayload> {
103
103
  const {
104
104
  baseUrl = process.env.ONE_SERVER_URL,
@@ -134,7 +134,7 @@ export async function validateToken(
134
134
 
135
135
  export async function isValidJWT(
136
136
  token: string,
137
- options: ValidateTokenOptions
137
+ options: ValidateTokenOptions,
138
138
  ): Promise<boolean> {
139
139
  try {
140
140
  await validateToken(token, options)
@@ -6,6 +6,6 @@
6
6
  ],
7
7
  "version": 3,
8
8
  "sourcesContent": [
9
- "/**\n * Better-auth helpers for React / React Native applications\n *\n * Features:\n * - Session persistence in local storage\n * - State management with emitters\n * - Automatic retry on errors\n * - Optional JWT support (for Tauri, React Native)\n */\n\nimport {\n createEmitter,\n createStorageValue,\n type Emitter,\n isEqualDeepLite,\n useEmitterValue,\n} from '@take-out/helpers'\nimport { type BetterAuthClientOptions, createAuthClient } from 'better-auth/client'\n\nimport type { Session, User } from 'better-auth'\n\nexport interface StorageKeys {\n token: string\n session: string\n}\n\nexport type AuthState<U extends User = User> = {\n state: 'loading' | 'logged-in' | 'logged-out'\n session: Session | null\n user: U | null\n /** JWT token - only populated when useJWT is enabled */\n token: string | null\n}\n\nexport interface BetterAuthClientProps<\n TUser extends User = User,\n> extends BetterAuthClientOptions {\n /**\n * Callback to transform and type the user object\n * @default (user) => user\n */\n createUser?: (user: User) => TUser\n\n /**\n * Optional callback when authentication state changes\n */\n onAuthStateChange?: (state: AuthState<TUser>) => void\n\n /**\n * Optional callback for handling auth errors\n */\n onAuthError?: (error: any) => void\n\n /**\n * Storage key prefix for local storage\n * @default 'auth'\n */\n storagePrefix?: string\n\n /**\n * Retry delay in milliseconds after auth errors\n * @default 4000\n */\n retryDelay?: number\n\n /**\n * Enable JWT token management for native apps (Tauri, React Native)\n * When false (default), auth uses session cookies forwarded by the server\n * When true, fetches and manages JWT tokens for Authorization header auth\n * @default false\n */\n useJWT?: boolean\n\n /**\n * Cookie names to clear on auth invalidation\n * @default ['better-auth.jwt', 'better-auth.session_token']\n */\n authCookieNames?: string[]\n}\n\nexport interface BetterAuthClientReturn<U extends User = User, TClient = any> {\n clearState: () => void\n authState: ReturnType<typeof createEmitter<AuthState<U>>>\n authClient: TClient\n setAuthClientToken: (props: { token: string; session: string }) => Promise<void>\n clearAuthClientToken: () => void\n clearAllAuth: () => void\n useAuth: () => AuthState<U>\n getAuth: () => AuthState<U> & { loggedIn: boolean }\n getValidToken: () => Promise<string | undefined>\n updateAuthClient: (session: string) => void\n authClientVersion: Emitter<number>\n}\n\ntype InferUser<T> = T extends { createUser?: (user: User) => infer R }\n ? R extends User\n ? R\n : User\n : User\n\nexport function createBetterAuthClient<const Opts extends BetterAuthClientProps<any>>(\n options: Opts\n): BetterAuthClientReturn<InferUser<Opts>, ReturnType<typeof createAuthClient<Opts>>> {\n type TUser = InferUser<Opts>\n const {\n onAuthStateChange,\n onAuthError,\n createUser,\n storagePrefix = 'auth',\n retryDelay = 4000,\n useJWT = false,\n authCookieNames = ['better-auth.jwt', 'better-auth.session_token'],\n ...authClientOptions\n } = options\n\n const empty: AuthState<TUser> = {\n state: 'logged-out',\n session: null,\n user: null,\n token: null,\n }\n\n const keysStorage = createStorageValue<StorageKeys>(`${storagePrefix}-keys`)\n const stateStorage = createStorageValue<AuthState<TUser>>(`${storagePrefix}-state`)\n\n const createAuthClientWithSession = (session: string) => {\n return createAuthClient({\n ...authClientOptions,\n fetchOptions: {\n credentials: 'include',\n headers: session ? { Authorization: `Bearer ${session}` } : undefined,\n },\n })\n }\n\n let authClient = (() => {\n const existingSession = keysStorage.get()?.session\n return existingSession\n ? createAuthClientWithSession(existingSession)\n : createAuthClient({\n ...authClientOptions,\n fetchOptions: { credentials: 'include' },\n } as Opts)\n })()\n\n const authState = createEmitter<AuthState<TUser>>(\n 'authState',\n stateStorage.get() || empty,\n { comparator: isEqualDeepLite }\n )\n\n const authClientVersion = createEmitter<number>('authClientVersion', 0)\n\n const setState = (update: Partial<AuthState<TUser>>) => {\n const current = authState.value!\n const next = { ...current, ...update }\n stateStorage.set(next)\n authState.emit(next)\n\n // update storage keys\n if (next.token && next.session) {\n keysStorage.set({\n token: next.token,\n session: next.session.token,\n })\n } else if (next.session) {\n keysStorage.set({\n token: '',\n session: next.session.token,\n })\n } else {\n keysStorage.set({ token: '', session: '' })\n }\n\n onAuthStateChange?.(next)\n }\n\n const setAuthClientToken = async (props: { token: string; session: string }) => {\n keysStorage.set(props)\n updateAuthClient(props.session)\n }\n\n function updateAuthClient(session: string) {\n authClient = createAuthClientWithSession(session)\n authClientVersion.emit(Math.random())\n subscribeToAuthEffect()\n }\n\n let dispose: Function | null = null\n let retryTimer: ReturnType<typeof setTimeout> | null = null\n\n function subscribeToAuthEffect() {\n dispose?.()\n\n dispose = authClient.useSession.subscribe(async (props) => {\n const { data: dataGeneric, isPending, error } = props\n\n if (error) {\n onAuthError?.(error)\n scheduleAuthRetry(retryDelay)\n return\n }\n\n const data = dataGeneric as\n | undefined\n | {\n session?: AuthState<TUser>['session']\n user?: AuthState<TUser>['user']\n }\n\n // if we have a persisted session but server hasn't confirmed yet, stay loading\n const hasPersistedSession = !!keysStorage.get()?.session\n const nextState = isPending\n ? 'loading'\n : data?.session\n ? 'logged-in'\n : hasPersistedSession && data === undefined\n ? 'loading'\n : 'logged-out'\n\n // only update session/user when we have definitive data\n const sessionUpdate =\n nextState === 'loading'\n ? {}\n : {\n session: data?.session ?? null,\n user: data?.user ? (createUser ? createUser(data.user) : data.user) : null,\n }\n\n // detect new session\n const previousSession = authState.value?.session\n const isNewSession =\n data?.session &&\n (!previousSession ||\n previousSession.id !== data.session.id ||\n previousSession.userId !== data.session.userId)\n\n setState({\n state: nextState,\n ...sessionUpdate,\n })\n\n // fetch JWT token when useJWT is enabled (for native/tauri apps)\n if (useJWT && data?.session && (isNewSession || !authState.value.token)) {\n if (isNewSession && authState.value.token) {\n setState({ token: null })\n }\n\n getValidToken().then((token) => {\n if (token) {\n setState({ token })\n }\n })\n }\n })\n }\n\n function scheduleAuthRetry(delayMs: number) {\n if (retryTimer) clearTimeout(retryTimer)\n retryTimer = setTimeout(() => {\n retryTimer = null\n subscribeToAuthEffect()\n }, delayMs)\n }\n\n async function getValidToken(): Promise<string | undefined> {\n const res = await authClient.$fetch('/token')\n if (res.error) {\n console.error(`Error fetching token: ${res.error.statusText}`)\n return undefined\n }\n return (res.data as any)?.token as string | undefined\n }\n\n const clearAuthClientToken = () => {\n keysStorage.remove()\n }\n\n function clearAuthCookies() {\n if (typeof document === 'undefined') return\n\n for (const cookieName of authCookieNames) {\n document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`\n const domain = window.location.hostname\n document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain}`\n if (domain.startsWith('.')) {\n document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain.slice(1)}`\n }\n }\n }\n\n function clearAllAuth() {\n clearAuthCookies()\n clearState()\n }\n\n const getAuth = () => {\n const state = authState?.value || empty\n return { ...state, loggedIn: !!state.session }\n }\n\n const useAuth = () => {\n return useEmitterValue(authState) || empty\n }\n\n function clearState() {\n keysStorage.remove()\n stateStorage.remove()\n setState(empty)\n }\n\n subscribeToAuthEffect()\n\n if (typeof window !== 'undefined' && window.addEventListener) {\n const cleanup = () => {\n dispose?.()\n if (retryTimer) clearTimeout(retryTimer)\n }\n window.addEventListener('beforeunload', cleanup)\n }\n\n const proxiedAuthClient = new Proxy(authClient, {\n get(_target, key) {\n if (key === 'signOut') {\n return () => {\n clearState()\n // @ts-expect-error better-auth type issue\n authClient.signOut?.()\n if (typeof window !== 'undefined') {\n window.location?.reload?.()\n }\n }\n }\n return Reflect.get(authClient, key)\n },\n }) as ReturnType<typeof createAuthClient<Opts>>\n\n return {\n authClientVersion,\n clearState,\n authState,\n authClient: proxiedAuthClient,\n setAuthClientToken,\n clearAuthClientToken,\n clearAllAuth,\n useAuth,\n getAuth,\n getValidToken,\n updateAuthClient,\n }\n}\n"
9
+ "/**\n * Better-auth helpers for React / React Native applications\n *\n * Features:\n * - Session persistence in local storage\n * - State management with emitters\n * - Automatic retry on errors\n * - Optional JWT support (for Tauri, React Native)\n */\n\nimport {\n createEmitter,\n createStorageValue,\n type Emitter,\n isEqualDeepLite,\n useEmitterValue,\n} from '@take-out/helpers'\nimport { type BetterAuthClientOptions, createAuthClient } from 'better-auth/client'\n\nimport type { Session, User } from 'better-auth'\n\nexport interface StorageKeys {\n token: string\n session: string\n}\n\nexport type AuthState<U extends User = User> = {\n state: 'loading' | 'logged-in' | 'logged-out'\n session: Session | null\n user: U | null\n /** JWT token - only populated when useJWT is enabled */\n token: string | null\n}\n\nexport interface BetterAuthClientProps<\n TUser extends User = User,\n> extends BetterAuthClientOptions {\n /**\n * Callback to transform and type the user object\n * @default (user) => user\n */\n createUser?: (user: User) => TUser\n\n /**\n * Optional callback when authentication state changes\n */\n onAuthStateChange?: (state: AuthState<TUser>) => void\n\n /**\n * Optional callback for handling auth errors\n */\n onAuthError?: (error: any) => void\n\n /**\n * Storage key prefix for local storage\n * @default 'auth'\n */\n storagePrefix?: string\n\n /**\n * Retry delay in milliseconds after auth errors\n * @default 4000\n */\n retryDelay?: number\n\n /**\n * Enable JWT token management for native apps (Tauri, React Native)\n * When false (default), auth uses session cookies forwarded by the server\n * When true, fetches and manages JWT tokens for Authorization header auth\n * @default false\n */\n useJWT?: boolean\n\n /**\n * Cookie names to clear on auth invalidation\n * @default ['better-auth.jwt', 'better-auth.session_token']\n */\n authCookieNames?: string[]\n}\n\nexport interface BetterAuthClientReturn<U extends User = User, TClient = any> {\n clearState: () => void\n authState: ReturnType<typeof createEmitter<AuthState<U>>>\n authClient: TClient\n setAuthClientToken: (props: { token: string; session: string }) => Promise<void>\n clearAuthClientToken: () => void\n clearAllAuth: () => void\n useAuth: () => AuthState<U>\n getAuth: () => AuthState<U> & { loggedIn: boolean }\n getValidToken: () => Promise<string | undefined>\n updateAuthClient: (session: string) => void\n authClientVersion: Emitter<number>\n}\n\ntype InferUser<T> = T extends { createUser?: (user: User) => infer R }\n ? R extends User\n ? R\n : User\n : User\n\nexport function createBetterAuthClient<const Opts extends BetterAuthClientProps<any>>(\n options: Opts,\n): BetterAuthClientReturn<InferUser<Opts>, ReturnType<typeof createAuthClient<Opts>>> {\n type TUser = InferUser<Opts>\n const {\n onAuthStateChange,\n onAuthError,\n createUser,\n storagePrefix = 'auth',\n retryDelay = 4000,\n useJWT = false,\n authCookieNames = ['better-auth.jwt', 'better-auth.session_token'],\n ...authClientOptions\n } = options\n\n const empty: AuthState<TUser> = {\n state: 'logged-out',\n session: null,\n user: null,\n token: null,\n }\n\n const keysStorage = createStorageValue<StorageKeys>(`${storagePrefix}-keys`)\n const stateStorage = createStorageValue<AuthState<TUser>>(`${storagePrefix}-state`)\n\n const createAuthClientWithSession = (session: string) => {\n return createAuthClient({\n ...authClientOptions,\n fetchOptions: {\n credentials: 'include',\n headers: session ? { Authorization: `Bearer ${session}` } : undefined,\n },\n })\n }\n\n let authClient = (() => {\n const existingSession = keysStorage.get()?.session\n return existingSession\n ? createAuthClientWithSession(existingSession)\n : createAuthClient({\n ...authClientOptions,\n fetchOptions: { credentials: 'include' },\n } as Opts)\n })()\n\n const authState = createEmitter<AuthState<TUser>>(\n 'authState',\n stateStorage.get() || empty,\n { comparator: isEqualDeepLite },\n )\n\n const authClientVersion = createEmitter<number>('authClientVersion', 0)\n\n const setState = (update: Partial<AuthState<TUser>>) => {\n const current = authState.value!\n const next = { ...current, ...update }\n stateStorage.set(next)\n authState.emit(next)\n\n // update storage keys\n if (next.token && next.session) {\n keysStorage.set({\n token: next.token,\n session: next.session.token,\n })\n } else if (next.session) {\n keysStorage.set({\n token: '',\n session: next.session.token,\n })\n } else {\n keysStorage.set({ token: '', session: '' })\n }\n\n onAuthStateChange?.(next)\n }\n\n const setAuthClientToken = async (props: { token: string; session: string }) => {\n keysStorage.set(props)\n updateAuthClient(props.session)\n }\n\n function updateAuthClient(session: string) {\n authClient = createAuthClientWithSession(session)\n authClientVersion.emit(Math.random())\n subscribeToAuthEffect()\n }\n\n let dispose: Function | null = null\n let retryTimer: ReturnType<typeof setTimeout> | null = null\n\n function subscribeToAuthEffect() {\n dispose?.()\n\n dispose = authClient.useSession.subscribe(async (props) => {\n const { data: dataGeneric, isPending, error } = props\n\n if (error) {\n onAuthError?.(error)\n // if no persisted session, transition to logged-out instead of staying loading\n const hasPersistedSession = !!keysStorage.get()?.session\n if (!hasPersistedSession) {\n setState({ state: 'logged-out', session: null, user: null })\n }\n scheduleAuthRetry(retryDelay)\n return\n }\n\n const data = dataGeneric as\n | undefined\n | {\n session?: AuthState<TUser>['session']\n user?: AuthState<TUser>['user']\n }\n\n // if we have a persisted session but server hasn't confirmed yet, stay loading\n const hasPersistedSession = !!keysStorage.get()?.session\n const nextState = isPending\n ? 'loading'\n : data?.session\n ? 'logged-in'\n : hasPersistedSession && data === undefined\n ? 'loading'\n : 'logged-out'\n\n // only update session/user when we have definitive data\n const sessionUpdate =\n nextState === 'loading'\n ? {}\n : {\n session: data?.session ?? null,\n user: data?.user ? (createUser ? createUser(data.user) : data.user) : null,\n }\n\n // detect new session\n const previousSession = authState.value?.session\n const isNewSession =\n data?.session &&\n (!previousSession ||\n previousSession.id !== data.session.id ||\n previousSession.userId !== data.session.userId)\n\n setState({\n state: nextState,\n ...sessionUpdate,\n })\n\n // fetch JWT token when useJWT is enabled (for native/tauri apps)\n if (useJWT && data?.session && (isNewSession || !authState.value.token)) {\n if (isNewSession && authState.value.token) {\n setState({ token: null })\n }\n\n getValidToken().then((token) => {\n if (token) {\n setState({ token })\n }\n })\n }\n })\n }\n\n function scheduleAuthRetry(delayMs: number) {\n if (retryTimer) clearTimeout(retryTimer)\n retryTimer = setTimeout(() => {\n retryTimer = null\n subscribeToAuthEffect()\n }, delayMs)\n }\n\n async function getValidToken(): Promise<string | undefined> {\n const res = await authClient.$fetch('/token')\n if (res.error) {\n console.error(`Error fetching token: ${res.error.statusText}`)\n return undefined\n }\n return (res.data as any)?.token as string | undefined\n }\n\n const clearAuthClientToken = () => {\n keysStorage.remove()\n }\n\n function clearAuthCookies() {\n if (typeof document === 'undefined') return\n\n for (const cookieName of authCookieNames) {\n document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`\n const domain = window.location.hostname\n document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain}`\n if (domain.startsWith('.')) {\n document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain.slice(1)}`\n }\n }\n }\n\n function clearAllAuth() {\n clearAuthCookies()\n clearState()\n }\n\n const getAuth = () => {\n const state = authState?.value || empty\n return { ...state, loggedIn: !!state.session }\n }\n\n const useAuth = () => {\n return useEmitterValue(authState) || empty\n }\n\n function clearState() {\n keysStorage.remove()\n stateStorage.remove()\n setState(empty)\n }\n\n subscribeToAuthEffect()\n\n if (typeof window !== 'undefined' && window.addEventListener) {\n const cleanup = () => {\n dispose?.()\n if (retryTimer) clearTimeout(retryTimer)\n }\n window.addEventListener('beforeunload', cleanup)\n }\n\n const proxiedAuthClient = new Proxy(authClient, {\n get(_target, key) {\n if (key === 'signOut') {\n return () => {\n clearState()\n // @ts-expect-error better-auth type issue\n authClient.signOut?.()\n if (typeof window !== 'undefined') {\n window.location?.reload?.()\n }\n }\n }\n return Reflect.get(authClient, key)\n },\n }) as ReturnType<typeof createAuthClient<Opts>>\n\n return {\n authClientVersion,\n clearState,\n authState,\n authClient: proxiedAuthClient,\n setAuthClientToken,\n clearAuthClientToken,\n clearAllAuth,\n useAuth,\n getAuth,\n getValidToken,\n updateAuthClient,\n }\n}\n"
10
10
  ]
11
11
  }
@@ -6,6 +6,6 @@
6
6
  ],
7
7
  "version": 3,
8
8
  "sourcesContent": [
9
- "/**\n * Server-side auth utilities for better-auth\n * - Session validation via cookies (web)\n * - JWT validation via JWKS (native apps)\n */\n\nimport { createRemoteJWKSet, jwtVerify, type JWTPayload } from 'jose'\n\nexport interface ValidateTokenOptions {\n /** base URL for the auth server (e.g., https://myapp.com) */\n baseUrl?: string\n /** optional issuer override for CI/test environments */\n forceIssuer?: string\n /** JWKS endpoint path, defaults to /api/auth/jwks */\n jwksPath?: string\n}\n\nexport interface AuthData {\n id: string\n email?: string\n role: 'admin' | undefined\n}\n\nexport class NotAuthenticatedError extends Error {}\nexport class InvalidTokenError extends Error {}\n\nexport type AuthServer = {\n api: {\n getSession: (opts: { headers: Headers }) =>\n | Promise<{\n user: { id: string; email?: string | null; role?: string | null }\n } | null>\n | Promise<any>\n }\n}\n\n/**\n * Get auth data from request - tries session cookies first, then JWT header\n * Session: web apps with cookies forwarded by zero\n * JWT: native apps (Tauri, React Native) using Authorization header\n */\nexport async function getAuthDataFromRequest(\n authServer: AuthServer,\n req: Request,\n tokenOptions?: ValidateTokenOptions\n): Promise<AuthData | null> {\n // from react native, better auth doesnt send cookie but insteead only the Authorization\n // but better auth wants to find the cookie here, so re-route it:\n\n const authHeader = req.headers.get('authorization')\n const cookie = authHeader?.split('Bearer ')[1]\n\n const newHeaders = new Headers(req.headers)\n if (cookie) {\n newHeaders.set('Cookie', cookie)\n }\n\n // try session-based auth first (web - cookies forwarded by zero)\n try {\n const session = await authServer.api.getSession({ headers: newHeaders })\n if (session?.user) {\n return {\n id: session.user.id,\n email: session.user.email || undefined,\n role: session.user.role === 'admin' ? 'admin' : undefined,\n }\n }\n } catch {\n // session auth failed, try JWT\n }\n\n // try authorization header (token-based auth for native/tauri)\n\n const jwtToken = authHeader?.replace('Bearer ', '')\n\n if (jwtToken) {\n try {\n const payload = await validateToken(jwtToken, tokenOptions)\n const userId = (payload as any)?.id || payload?.sub\n if (userId) {\n return {\n id: userId as string,\n email: (payload as any).email as string | undefined,\n role: (payload as any).role === 'admin' ? 'admin' : undefined,\n }\n }\n } catch (err) {\n if (!(err instanceof InvalidTokenError)) {\n throw err\n }\n }\n }\n\n return null\n}\n\n// jwt validation for native apps\n\nexport async function validateToken(\n token: string,\n options?: ValidateTokenOptions\n): Promise<JWTPayload> {\n const {\n baseUrl = process.env.ONE_SERVER_URL,\n forceIssuer = process.env.FORCE_ISSUER || '',\n jwksPath = '/api/auth/jwks',\n } = options || {}\n\n if (!baseUrl) {\n throw new Error(`No baseURL!`)\n }\n\n const normalizedBaseUrl = removeTrailingSlash(baseUrl)\n const url = `${forceIssuer || normalizedBaseUrl}${jwksPath}`\n\n // create fresh JWKS fetcher each time to avoid stale key cache issues\n const JWKS = createRemoteJWKSet(new URL(url))\n\n try {\n const verifyOptions = forceIssuer\n ? {}\n : {\n issuer: normalizedBaseUrl,\n audience: normalizedBaseUrl,\n }\n\n const { payload } = await jwtVerify(token, JWKS, verifyOptions)\n\n return payload\n } catch (error) {\n throw new InvalidTokenError(`${error}`)\n }\n}\n\nexport async function isValidJWT(\n token: string,\n options: ValidateTokenOptions\n): Promise<boolean> {\n try {\n await validateToken(token, options)\n return true\n } catch {\n return false\n }\n}\n\nfunction removeTrailingSlash(str: string) {\n return str.replace(/\\/$/, '')\n}\n"
9
+ "/**\n * Server-side auth utilities for better-auth\n * - Session validation via cookies (web)\n * - JWT validation via JWKS (native apps)\n */\n\nimport { createRemoteJWKSet, jwtVerify, type JWTPayload } from 'jose'\n\nexport interface ValidateTokenOptions {\n /** base URL for the auth server (e.g., https://myapp.com) */\n baseUrl?: string\n /** optional issuer override for CI/test environments */\n forceIssuer?: string\n /** JWKS endpoint path, defaults to /api/auth/jwks */\n jwksPath?: string\n}\n\nexport interface AuthData {\n id: string\n email?: string\n role: 'admin' | undefined\n}\n\nexport class NotAuthenticatedError extends Error {}\nexport class InvalidTokenError extends Error {}\n\nexport type AuthServer = {\n api: {\n getSession: (opts: { headers: Headers }) =>\n | Promise<{\n user: { id: string; email?: string | null; role?: string | null }\n } | null>\n | Promise<any>\n }\n}\n\n/**\n * Get auth data from request - tries session cookies first, then JWT header\n * Session: web apps with cookies forwarded by zero\n * JWT: native apps (Tauri, React Native) using Authorization header\n */\nexport async function getAuthDataFromRequest(\n authServer: AuthServer,\n req: Request,\n tokenOptions?: ValidateTokenOptions,\n): Promise<AuthData | null> {\n // from react native, better auth doesnt send cookie but insteead only the Authorization\n // but better auth wants to find the cookie here, so re-route it:\n\n const authHeader = req.headers.get('authorization')\n const cookie = authHeader?.split('Bearer ')[1]\n\n const newHeaders = new Headers(req.headers)\n if (cookie) {\n newHeaders.set('Cookie', cookie)\n }\n\n // try session-based auth first (web - cookies forwarded by zero)\n try {\n const session = await authServer.api.getSession({ headers: newHeaders })\n if (session?.user) {\n return {\n id: session.user.id,\n email: session.user.email || undefined,\n role: session.user.role === 'admin' ? 'admin' : undefined,\n }\n }\n } catch {\n // session auth failed, try JWT\n }\n\n // try authorization header (token-based auth for native/tauri)\n\n const jwtToken = authHeader?.replace('Bearer ', '')\n\n if (jwtToken) {\n try {\n const payload = await validateToken(jwtToken, tokenOptions)\n const userId = (payload as any)?.id || payload?.sub\n if (userId) {\n return {\n id: userId as string,\n email: (payload as any).email as string | undefined,\n role: (payload as any).role === 'admin' ? 'admin' : undefined,\n }\n }\n } catch (err) {\n if (!(err instanceof InvalidTokenError)) {\n throw err\n }\n }\n }\n\n return null\n}\n\n// jwt validation for native apps\n\nexport async function validateToken(\n token: string,\n options?: ValidateTokenOptions,\n): Promise<JWTPayload> {\n const {\n baseUrl = process.env.ONE_SERVER_URL,\n forceIssuer = process.env.FORCE_ISSUER || '',\n jwksPath = '/api/auth/jwks',\n } = options || {}\n\n if (!baseUrl) {\n throw new Error(`No baseURL!`)\n }\n\n const normalizedBaseUrl = removeTrailingSlash(baseUrl)\n const url = `${forceIssuer || normalizedBaseUrl}${jwksPath}`\n\n // create fresh JWKS fetcher each time to avoid stale key cache issues\n const JWKS = createRemoteJWKSet(new URL(url))\n\n try {\n const verifyOptions = forceIssuer\n ? {}\n : {\n issuer: normalizedBaseUrl,\n audience: normalizedBaseUrl,\n }\n\n const { payload } = await jwtVerify(token, JWKS, verifyOptions)\n\n return payload\n } catch (error) {\n throw new InvalidTokenError(`${error}`)\n }\n}\n\nexport async function isValidJWT(\n token: string,\n options: ValidateTokenOptions,\n): Promise<boolean> {\n try {\n await validateToken(token, options)\n return true\n } catch {\n return false\n }\n}\n\nfunction removeTrailingSlash(str: string) {\n return str.replace(/\\/$/, '')\n}\n"
10
10
  ]
11
11
  }
@@ -1,150 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: !0 });
8
- }, __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from == "object" || typeof from == "function")
10
- for (let key of __getOwnPropNames(from))
11
- !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
- return to;
13
- };
14
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
- var createAuthClient_exports = {};
16
- __export(createAuthClient_exports, {
17
- createBetterAuthClient: () => createBetterAuthClient
18
- });
19
- module.exports = __toCommonJS(createAuthClient_exports);
20
- var import_helpers = require("@take-out/helpers"), import_client = require("better-auth/client");
21
- function createBetterAuthClient(options) {
22
- const {
23
- onAuthStateChange,
24
- onAuthError,
25
- createUser,
26
- storagePrefix = "auth",
27
- retryDelay = 4e3,
28
- useJWT = !1,
29
- authCookieNames = ["better-auth.jwt", "better-auth.session_token"],
30
- ...authClientOptions
31
- } = options, empty = {
32
- state: "logged-out",
33
- session: null,
34
- user: null,
35
- token: null
36
- }, keysStorage = (0, import_helpers.createStorageValue)(`${storagePrefix}-keys`), stateStorage = (0, import_helpers.createStorageValue)(`${storagePrefix}-state`), createAuthClientWithSession = (session) => (0, import_client.createAuthClient)({
37
- ...authClientOptions,
38
- fetchOptions: {
39
- credentials: "include",
40
- headers: session ? { Authorization: `Bearer ${session}` } : void 0
41
- }
42
- });
43
- let authClient = (() => {
44
- const existingSession = keysStorage.get()?.session;
45
- return existingSession ? createAuthClientWithSession(existingSession) : (0, import_client.createAuthClient)({
46
- ...authClientOptions,
47
- fetchOptions: { credentials: "include" }
48
- });
49
- })();
50
- const authState = (0, import_helpers.createEmitter)(
51
- "authState",
52
- stateStorage.get() || empty,
53
- { comparator: import_helpers.isEqualDeepLite }
54
- ), authClientVersion = (0, import_helpers.createEmitter)("authClientVersion", 0), setState = (update) => {
55
- const next = { ...authState.value, ...update };
56
- stateStorage.set(next), authState.emit(next), next.token && next.session ? keysStorage.set({
57
- token: next.token,
58
- session: next.session.token
59
- }) : next.session ? keysStorage.set({
60
- token: "",
61
- session: next.session.token
62
- }) : keysStorage.set({ token: "", session: "" }), onAuthStateChange?.(next);
63
- }, setAuthClientToken = async (props) => {
64
- keysStorage.set(props), updateAuthClient(props.session);
65
- };
66
- function updateAuthClient(session) {
67
- authClient = createAuthClientWithSession(session), authClientVersion.emit(Math.random()), subscribeToAuthEffect();
68
- }
69
- let dispose = null, retryTimer = null;
70
- function subscribeToAuthEffect() {
71
- dispose?.(), dispose = authClient.useSession.subscribe(async (props) => {
72
- const { data: dataGeneric, isPending, error } = props;
73
- if (error) {
74
- onAuthError?.(error), scheduleAuthRetry(retryDelay);
75
- return;
76
- }
77
- const data = dataGeneric, hasPersistedSession = !!keysStorage.get()?.session, nextState = isPending ? "loading" : data?.session ? "logged-in" : hasPersistedSession && data === void 0 ? "loading" : "logged-out", sessionUpdate = nextState === "loading" ? {} : {
78
- session: data?.session ?? null,
79
- user: data?.user ? createUser ? createUser(data.user) : data.user : null
80
- }, previousSession = authState.value?.session, isNewSession = data?.session && (!previousSession || previousSession.id !== data.session.id || previousSession.userId !== data.session.userId);
81
- setState({
82
- state: nextState,
83
- ...sessionUpdate
84
- }), useJWT && data?.session && (isNewSession || !authState.value.token) && (isNewSession && authState.value.token && setState({ token: null }), getValidToken().then((token) => {
85
- token && setState({ token });
86
- }));
87
- });
88
- }
89
- function scheduleAuthRetry(delayMs) {
90
- retryTimer && clearTimeout(retryTimer), retryTimer = setTimeout(() => {
91
- retryTimer = null, subscribeToAuthEffect();
92
- }, delayMs);
93
- }
94
- async function getValidToken() {
95
- const res = await authClient.$fetch("/token");
96
- if (res.error) {
97
- console.error(`Error fetching token: ${res.error.statusText}`);
98
- return;
99
- }
100
- return res.data?.token;
101
- }
102
- const clearAuthClientToken = () => {
103
- keysStorage.remove();
104
- };
105
- function clearAuthCookies() {
106
- if (!(typeof document > "u"))
107
- for (const cookieName of authCookieNames) {
108
- document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;
109
- const domain = window.location.hostname;
110
- document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain}`, domain.startsWith(".") && (document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain.slice(1)}`);
111
- }
112
- }
113
- function clearAllAuth() {
114
- clearAuthCookies(), clearState();
115
- }
116
- const getAuth = () => {
117
- const state = authState?.value || empty;
118
- return { ...state, loggedIn: !!state.session };
119
- }, useAuth = () => (0, import_helpers.useEmitterValue)(authState) || empty;
120
- function clearState() {
121
- keysStorage.remove(), stateStorage.remove(), setState(empty);
122
- }
123
- if (subscribeToAuthEffect(), typeof window < "u" && window.addEventListener) {
124
- const cleanup = () => {
125
- dispose?.(), retryTimer && clearTimeout(retryTimer);
126
- };
127
- window.addEventListener("beforeunload", cleanup);
128
- }
129
- const proxiedAuthClient = new Proxy(authClient, {
130
- get(_target, key) {
131
- return key === "signOut" ? () => {
132
- clearState(), authClient.signOut?.(), typeof window < "u" && window.location?.reload?.();
133
- } : Reflect.get(authClient, key);
134
- }
135
- });
136
- return {
137
- authClientVersion,
138
- clearState,
139
- authState,
140
- authClient: proxiedAuthClient,
141
- setAuthClientToken,
142
- clearAuthClientToken,
143
- clearAllAuth,
144
- useAuth,
145
- getAuth,
146
- getValidToken,
147
- updateAuthClient
148
- };
149
- }
150
- //# sourceMappingURL=createAuthClient.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/createAuthClient.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
package/dist/cjs/index.js DELETED
@@ -1,15 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __copyProps = (to, from, except, desc) => {
6
- if (from && typeof from == "object" || typeof from == "function")
7
- for (let key of __getOwnPropNames(from))
8
- !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
9
- return to;
10
- }, __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
11
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
12
- var index_exports = {};
13
- module.exports = __toCommonJS(index_exports);
14
- __reExport(index_exports, require("./createAuthClient"), module.exports);
15
- //# sourceMappingURL=index.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/index.ts"],
4
- "mappings": ";;;;;;;;;;;AAAA;AAAA;AAAA,0BAAc,+BAAd;",
5
- "names": []
6
- }
@@ -1,87 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: !0 });
8
- }, __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from == "object" || typeof from == "function")
10
- for (let key of __getOwnPropNames(from))
11
- !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
- return to;
13
- };
14
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
- var server_exports = {};
16
- __export(server_exports, {
17
- InvalidTokenError: () => InvalidTokenError,
18
- NotAuthenticatedError: () => NotAuthenticatedError,
19
- getAuthDataFromRequest: () => getAuthDataFromRequest,
20
- isValidJWT: () => isValidJWT,
21
- validateToken: () => validateToken
22
- });
23
- module.exports = __toCommonJS(server_exports);
24
- var import_jose = require("jose");
25
- class NotAuthenticatedError extends Error {
26
- }
27
- class InvalidTokenError extends Error {
28
- }
29
- async function getAuthDataFromRequest(authServer, req, tokenOptions) {
30
- const authHeader = req.headers.get("authorization"), cookie = authHeader?.split("Bearer ")[1], newHeaders = new Headers(req.headers);
31
- cookie && newHeaders.set("Cookie", cookie);
32
- try {
33
- const session = await authServer.api.getSession({ headers: newHeaders });
34
- if (session?.user)
35
- return {
36
- id: session.user.id,
37
- email: session.user.email || void 0,
38
- role: session.user.role === "admin" ? "admin" : void 0
39
- };
40
- } catch {
41
- }
42
- const jwtToken = authHeader?.replace("Bearer ", "");
43
- if (jwtToken)
44
- try {
45
- const payload = await validateToken(jwtToken, tokenOptions), userId = payload?.id || payload?.sub;
46
- if (userId)
47
- return {
48
- id: userId,
49
- email: payload.email,
50
- role: payload.role === "admin" ? "admin" : void 0
51
- };
52
- } catch (err) {
53
- if (!(err instanceof InvalidTokenError))
54
- throw err;
55
- }
56
- return null;
57
- }
58
- async function validateToken(token, options) {
59
- const {
60
- baseUrl = process.env.ONE_SERVER_URL,
61
- forceIssuer = process.env.FORCE_ISSUER || "",
62
- jwksPath = "/api/auth/jwks"
63
- } = options || {};
64
- if (!baseUrl)
65
- throw new Error("No baseURL!");
66
- const normalizedBaseUrl = removeTrailingSlash(baseUrl), url = `${forceIssuer || normalizedBaseUrl}${jwksPath}`, JWKS = (0, import_jose.createRemoteJWKSet)(new URL(url));
67
- try {
68
- const verifyOptions = forceIssuer ? {} : {
69
- issuer: normalizedBaseUrl,
70
- audience: normalizedBaseUrl
71
- }, { payload } = await (0, import_jose.jwtVerify)(token, JWKS, verifyOptions);
72
- return payload;
73
- } catch (error) {
74
- throw new InvalidTokenError(`${error}`);
75
- }
76
- }
77
- async function isValidJWT(token, options) {
78
- try {
79
- return await validateToken(token, options), !0;
80
- } catch {
81
- return !1;
82
- }
83
- }
84
- function removeTrailingSlash(str) {
85
- return str.replace(/\/$/, "");
86
- }
87
- //# sourceMappingURL=server.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/server.ts"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,kBAA+D;AAiBxD,MAAM,8BAA8B,MAAM;AAAC;AAC3C,MAAM,0BAA0B,MAAM;AAAC;AAiB9C,eAAsB,uBACpB,YACA,KACA,cAC0B;AAI1B,QAAM,aAAa,IAAI,QAAQ,IAAI,eAAe,GAC5C,SAAS,YAAY,MAAM,SAAS,EAAE,CAAC,GAEvC,aAAa,IAAI,QAAQ,IAAI,OAAO;AAC1C,EAAI,UACF,WAAW,IAAI,UAAU,MAAM;AAIjC,MAAI;AACF,UAAM,UAAU,MAAM,WAAW,IAAI,WAAW,EAAE,SAAS,WAAW,CAAC;AACvE,QAAI,SAAS;AACX,aAAO;AAAA,QACL,IAAI,QAAQ,KAAK;AAAA,QACjB,OAAO,QAAQ,KAAK,SAAS;AAAA,QAC7B,MAAM,QAAQ,KAAK,SAAS,UAAU,UAAU;AAAA,MAClD;AAAA,EAEJ,QAAQ;AAAA,EAER;AAIA,QAAM,WAAW,YAAY,QAAQ,WAAW,EAAE;AAElD,MAAI;AACF,QAAI;AACF,YAAM,UAAU,MAAM,cAAc,UAAU,YAAY,GACpD,SAAU,SAAiB,MAAM,SAAS;AAChD,UAAI;AACF,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,OAAQ,QAAgB;AAAA,UACxB,MAAO,QAAgB,SAAS,UAAU,UAAU;AAAA,QACtD;AAAA,IAEJ,SAAS,KAAK;AACZ,UAAI,EAAE,eAAe;AACnB,cAAM;AAAA,IAEV;AAGF,SAAO;AACT;AAIA,eAAsB,cACpB,OACA,SACqB;AACrB,QAAM;AAAA,IACJ,UAAU,QAAQ,IAAI;AAAA,IACtB,cAAc,QAAQ,IAAI,gBAAgB;AAAA,IAC1C,WAAW;AAAA,EACb,IAAI,WAAW,CAAC;AAEhB,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,aAAa;AAG/B,QAAM,oBAAoB,oBAAoB,OAAO,GAC/C,MAAM,GAAG,eAAe,iBAAiB,GAAG,QAAQ,IAGpD,WAAO,gCAAmB,IAAI,IAAI,GAAG,CAAC;AAE5C,MAAI;AACF,UAAM,gBAAgB,cAClB,CAAC,IACD;AAAA,MACE,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,GAEE,EAAE,QAAQ,IAAI,UAAM,uBAAU,OAAO,MAAM,aAAa;AAE9D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,kBAAkB,GAAG,KAAK,EAAE;AAAA,EACxC;AACF;AAEA,eAAsB,WACpB,OACA,SACkB;AAClB,MAAI;AACF,iBAAM,cAAc,OAAO,OAAO,GAC3B;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,oBAAoB,KAAa;AACxC,SAAO,IAAI,QAAQ,OAAO,EAAE;AAC9B;",
5
- "names": []
6
- }
@@ -1,140 +0,0 @@
1
- import {
2
- createEmitter,
3
- createStorageValue,
4
- isEqualDeepLite,
5
- useEmitterValue
6
- } from "@take-out/helpers";
7
- import { createAuthClient } from "better-auth/client";
8
- function createBetterAuthClient(options) {
9
- const {
10
- onAuthStateChange,
11
- onAuthError,
12
- createUser,
13
- storagePrefix = "auth",
14
- retryDelay = 4e3,
15
- useJWT = !1,
16
- authCookieNames = ["better-auth.jwt", "better-auth.session_token"],
17
- ...authClientOptions
18
- } = options, empty = {
19
- state: "logged-out",
20
- session: null,
21
- user: null,
22
- token: null
23
- }, keysStorage = createStorageValue(`${storagePrefix}-keys`), stateStorage = createStorageValue(`${storagePrefix}-state`), createAuthClientWithSession = (session) => createAuthClient({
24
- ...authClientOptions,
25
- fetchOptions: {
26
- credentials: "include",
27
- headers: session ? { Authorization: `Bearer ${session}` } : void 0
28
- }
29
- });
30
- let authClient = (() => {
31
- const existingSession = keysStorage.get()?.session;
32
- return existingSession ? createAuthClientWithSession(existingSession) : createAuthClient({
33
- ...authClientOptions,
34
- fetchOptions: { credentials: "include" }
35
- });
36
- })();
37
- const authState = createEmitter(
38
- "authState",
39
- stateStorage.get() || empty,
40
- { comparator: isEqualDeepLite }
41
- ), authClientVersion = createEmitter("authClientVersion", 0), setState = (update) => {
42
- const next = { ...authState.value, ...update };
43
- stateStorage.set(next), authState.emit(next), next.token && next.session ? keysStorage.set({
44
- token: next.token,
45
- session: next.session.token
46
- }) : next.session ? keysStorage.set({
47
- token: "",
48
- session: next.session.token
49
- }) : keysStorage.set({ token: "", session: "" }), onAuthStateChange?.(next);
50
- }, setAuthClientToken = async (props) => {
51
- keysStorage.set(props), updateAuthClient(props.session);
52
- };
53
- function updateAuthClient(session) {
54
- authClient = createAuthClientWithSession(session), authClientVersion.emit(Math.random()), subscribeToAuthEffect();
55
- }
56
- let dispose = null, retryTimer = null;
57
- function subscribeToAuthEffect() {
58
- dispose?.(), dispose = authClient.useSession.subscribe(async (props) => {
59
- const { data: dataGeneric, isPending, error } = props;
60
- if (error) {
61
- onAuthError?.(error), scheduleAuthRetry(retryDelay);
62
- return;
63
- }
64
- const data = dataGeneric, hasPersistedSession = !!keysStorage.get()?.session, nextState = isPending ? "loading" : data?.session ? "logged-in" : hasPersistedSession && data === void 0 ? "loading" : "logged-out", sessionUpdate = nextState === "loading" ? {} : {
65
- session: data?.session ?? null,
66
- user: data?.user ? createUser ? createUser(data.user) : data.user : null
67
- }, previousSession = authState.value?.session, isNewSession = data?.session && (!previousSession || previousSession.id !== data.session.id || previousSession.userId !== data.session.userId);
68
- setState({
69
- state: nextState,
70
- ...sessionUpdate
71
- }), useJWT && data?.session && (isNewSession || !authState.value.token) && (isNewSession && authState.value.token && setState({ token: null }), getValidToken().then((token) => {
72
- token && setState({ token });
73
- }));
74
- });
75
- }
76
- function scheduleAuthRetry(delayMs) {
77
- retryTimer && clearTimeout(retryTimer), retryTimer = setTimeout(() => {
78
- retryTimer = null, subscribeToAuthEffect();
79
- }, delayMs);
80
- }
81
- async function getValidToken() {
82
- const res = await authClient.$fetch("/token");
83
- if (res.error) {
84
- console.error(`Error fetching token: ${res.error.statusText}`);
85
- return;
86
- }
87
- return res.data?.token;
88
- }
89
- const clearAuthClientToken = () => {
90
- keysStorage.remove();
91
- };
92
- function clearAuthCookies() {
93
- if (!(typeof document > "u"))
94
- for (const cookieName of authCookieNames) {
95
- document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;
96
- const domain = window.location.hostname;
97
- document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain}`, domain.startsWith(".") && (document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain.slice(1)}`);
98
- }
99
- }
100
- function clearAllAuth() {
101
- clearAuthCookies(), clearState();
102
- }
103
- const getAuth = () => {
104
- const state = authState?.value || empty;
105
- return { ...state, loggedIn: !!state.session };
106
- }, useAuth = () => useEmitterValue(authState) || empty;
107
- function clearState() {
108
- keysStorage.remove(), stateStorage.remove(), setState(empty);
109
- }
110
- if (subscribeToAuthEffect(), typeof window < "u" && window.addEventListener) {
111
- const cleanup = () => {
112
- dispose?.(), retryTimer && clearTimeout(retryTimer);
113
- };
114
- window.addEventListener("beforeunload", cleanup);
115
- }
116
- const proxiedAuthClient = new Proxy(authClient, {
117
- get(_target, key) {
118
- return key === "signOut" ? () => {
119
- clearState(), authClient.signOut?.(), typeof window < "u" && window.location?.reload?.();
120
- } : Reflect.get(authClient, key);
121
- }
122
- });
123
- return {
124
- authClientVersion,
125
- clearState,
126
- authState,
127
- authClient: proxiedAuthClient,
128
- setAuthClientToken,
129
- clearAuthClientToken,
130
- clearAllAuth,
131
- useAuth,
132
- getAuth,
133
- getValidToken,
134
- updateAuthClient
135
- };
136
- }
137
- export {
138
- createBetterAuthClient
139
- };
140
- //# sourceMappingURL=createAuthClient.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/createAuthClient.ts"],
4
- "mappings": "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",
5
- "names": []
6
- }
@@ -1,71 +0,0 @@
1
- import { createRemoteJWKSet, jwtVerify } from "jose";
2
- class NotAuthenticatedError extends Error {
3
- }
4
- class InvalidTokenError extends Error {
5
- }
6
- async function getAuthDataFromRequest(authServer, req, tokenOptions) {
7
- const authHeader = req.headers.get("authorization"), cookie = authHeader?.split("Bearer ")[1], newHeaders = new Headers(req.headers);
8
- cookie && newHeaders.set("Cookie", cookie);
9
- try {
10
- const session = await authServer.api.getSession({ headers: newHeaders });
11
- if (session?.user)
12
- return {
13
- id: session.user.id,
14
- email: session.user.email || void 0,
15
- role: session.user.role === "admin" ? "admin" : void 0
16
- };
17
- } catch {
18
- }
19
- const jwtToken = authHeader?.replace("Bearer ", "");
20
- if (jwtToken)
21
- try {
22
- const payload = await validateToken(jwtToken, tokenOptions), userId = payload?.id || payload?.sub;
23
- if (userId)
24
- return {
25
- id: userId,
26
- email: payload.email,
27
- role: payload.role === "admin" ? "admin" : void 0
28
- };
29
- } catch (err) {
30
- if (!(err instanceof InvalidTokenError))
31
- throw err;
32
- }
33
- return null;
34
- }
35
- async function validateToken(token, options) {
36
- const {
37
- baseUrl = process.env.ONE_SERVER_URL,
38
- forceIssuer = process.env.FORCE_ISSUER || "",
39
- jwksPath = "/api/auth/jwks"
40
- } = options || {};
41
- if (!baseUrl)
42
- throw new Error("No baseURL!");
43
- const normalizedBaseUrl = removeTrailingSlash(baseUrl), url = `${forceIssuer || normalizedBaseUrl}${jwksPath}`, JWKS = createRemoteJWKSet(new URL(url));
44
- try {
45
- const verifyOptions = forceIssuer ? {} : {
46
- issuer: normalizedBaseUrl,
47
- audience: normalizedBaseUrl
48
- }, { payload } = await jwtVerify(token, JWKS, verifyOptions);
49
- return payload;
50
- } catch (error) {
51
- throw new InvalidTokenError(`${error}`);
52
- }
53
- }
54
- async function isValidJWT(token, options) {
55
- try {
56
- return await validateToken(token, options), !0;
57
- } catch {
58
- return !1;
59
- }
60
- }
61
- function removeTrailingSlash(str) {
62
- return str.replace(/\/$/, "");
63
- }
64
- export {
65
- InvalidTokenError,
66
- NotAuthenticatedError,
67
- getAuthDataFromRequest,
68
- isValidJWT,
69
- validateToken
70
- };
71
- //# sourceMappingURL=server.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/server.ts"],
4
- "mappings": "AAMA,SAAS,oBAAoB,iBAAkC;AAiBxD,MAAM,8BAA8B,MAAM;AAAC;AAC3C,MAAM,0BAA0B,MAAM;AAAC;AAiB9C,eAAsB,uBACpB,YACA,KACA,cAC0B;AAI1B,QAAM,aAAa,IAAI,QAAQ,IAAI,eAAe,GAC5C,SAAS,YAAY,MAAM,SAAS,EAAE,CAAC,GAEvC,aAAa,IAAI,QAAQ,IAAI,OAAO;AAC1C,EAAI,UACF,WAAW,IAAI,UAAU,MAAM;AAIjC,MAAI;AACF,UAAM,UAAU,MAAM,WAAW,IAAI,WAAW,EAAE,SAAS,WAAW,CAAC;AACvE,QAAI,SAAS;AACX,aAAO;AAAA,QACL,IAAI,QAAQ,KAAK;AAAA,QACjB,OAAO,QAAQ,KAAK,SAAS;AAAA,QAC7B,MAAM,QAAQ,KAAK,SAAS,UAAU,UAAU;AAAA,MAClD;AAAA,EAEJ,QAAQ;AAAA,EAER;AAIA,QAAM,WAAW,YAAY,QAAQ,WAAW,EAAE;AAElD,MAAI;AACF,QAAI;AACF,YAAM,UAAU,MAAM,cAAc,UAAU,YAAY,GACpD,SAAU,SAAiB,MAAM,SAAS;AAChD,UAAI;AACF,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,OAAQ,QAAgB;AAAA,UACxB,MAAO,QAAgB,SAAS,UAAU,UAAU;AAAA,QACtD;AAAA,IAEJ,SAAS,KAAK;AACZ,UAAI,EAAE,eAAe;AACnB,cAAM;AAAA,IAEV;AAGF,SAAO;AACT;AAIA,eAAsB,cACpB,OACA,SACqB;AACrB,QAAM;AAAA,IACJ,UAAU,QAAQ,IAAI;AAAA,IACtB,cAAc,QAAQ,IAAI,gBAAgB;AAAA,IAC1C,WAAW;AAAA,EACb,IAAI,WAAW,CAAC;AAEhB,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,aAAa;AAG/B,QAAM,oBAAoB,oBAAoB,OAAO,GAC/C,MAAM,GAAG,eAAe,iBAAiB,GAAG,QAAQ,IAGpD,OAAO,mBAAmB,IAAI,IAAI,GAAG,CAAC;AAE5C,MAAI;AACF,UAAM,gBAAgB,cAClB,CAAC,IACD;AAAA,MACE,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,GAEE,EAAE,QAAQ,IAAI,MAAM,UAAU,OAAO,MAAM,aAAa;AAE9D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,kBAAkB,GAAG,KAAK,EAAE;AAAA,EACxC;AACF;AAEA,eAAsB,WACpB,OACA,SACkB;AAClB,MAAI;AACF,iBAAM,cAAc,OAAO,OAAO,GAC3B;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,oBAAoB,KAAa;AACxC,SAAO,IAAI,QAAQ,OAAO,EAAE;AAC9B;",
5
- "names": []
6
- }