better-auth 0.0.9-beta.7 → 0.0.9-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.d.ts CHANGED
@@ -5,12 +5,12 @@ import * as _better_fetch_fetch from '@better-fetch/fetch';
5
5
  import { BetterFetch, BetterFetchOption, BetterFetchError } from '@better-fetch/fetch';
6
6
  import { B as BetterAuthPlugin, F as FieldAttribute, I as InferFieldOutput } from './internal-adapter-DXjewSmi.js';
7
7
  import { U as UnionToIntersection } from './helper-D8dhRz72.js';
8
- import { C as ClientOptions, I as InferClientAPI, a as InferActions, A as AuthClientPlugin, c as InferSessionFromClient, d as InferUserFromClient, b as IsSignal } from './types-BdJgP44o.js';
8
+ import { C as ClientOptions, I as InferClientAPI, a as InferActions, A as AuthClientPlugin, c as InferSessionFromClient, d as InferUserFromClient, b as IsSignal } from './types-DPwV7Ir2.js';
9
9
  import 'kysely';
10
10
  import './index-CcxejJTH.js';
11
11
  import 'arctic';
12
12
  import 'better-call';
13
- import './index-CPKWKAiy.js';
13
+ import './index-BqqlGo3a.js';
14
14
 
15
15
  type InferResolvedHooks<O extends ClientOptions> = O["plugins"] extends Array<infer Plugin> ? Plugin extends AuthClientPlugin ? Plugin["getAtoms"] extends (fetch: any) => infer Atoms ? Atoms extends Record<string, any> ? {
16
16
  [key in keyof Atoms as IsSignal<key> extends true ? never : key extends string ? `use${Capitalize<key>}` : never]: Atoms[key];
package/dist/client.js CHANGED
@@ -124,7 +124,8 @@ var getClientConfig = (options) => {
124
124
  let pluginsActions = {};
125
125
  let pluginsAtoms = {};
126
126
  let pluginPathMethods = {
127
- "/sign-out": "POST"
127
+ "/sign-out": "POST",
128
+ "/user/revoke-sessions": "POST"
128
129
  };
129
130
  const atomListeners = [
130
131
  {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/error/better-auth-error.ts","../src/utils/base-url.ts","../src/client/fetch-plugins.ts","../src/client/config.ts","../src/utils/misc.ts","../src/client/proxy.ts","../src/client/query.ts","../src/client/session-atom.ts","../src/client/vanilla.ts"],"names":["value","atom"],"mappings":"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","file":"client.js","sourcesContent":["export class BetterAuthError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t}\n}\n","import { BetterAuthError } from \"../error/better-auth-error\";\n\nfunction checkHasPath(url: string): boolean {\n\ttry {\n\t\tconst parsedUrl = new URL(url);\n\t\treturn parsedUrl.pathname !== \"/\";\n\t} catch (error) {\n\t\tthrow new BetterAuthError(\n\t\t\t`Invalid base URL: ${url}. Please provide a valid base URL.`,\n\t\t);\n\t}\n}\n\nfunction withPath(url: string, path = \"/api/auth\") {\n\tconst hasPath = checkHasPath(url);\n\tif (hasPath) {\n\t\treturn url;\n\t}\n\tpath = path.startsWith(\"/\") ? path : `/${path}`;\n\treturn `${url}${path}`;\n}\n\nexport function getBaseURL(url?: string, path?: string) {\n\tif (url) {\n\t\treturn withPath(url, path);\n\t}\n\tconst env: any = typeof process !== \"undefined\" ? process.env : {};\n\tconst fromEnv =\n\t\tenv.BETTER_AUTH_URL ||\n\t\tenv.NEXT_PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.NUXT_PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.NUXT_PUBLIC_AUTH_URL;\n\tif (fromEnv) {\n\t\treturn withPath(fromEnv, path);\n\t}\n\n\tif (typeof window !== \"undefined\") {\n\t\treturn withPath(window.location.origin, path);\n\t}\n\treturn undefined;\n}\n","import { type BetterFetchPlugin, betterFetch } from \"@better-fetch/fetch\";\nimport { BetterAuthError } from \"../error/better-auth-error\";\n\nexport const redirectPlugin = {\n\tid: \"redirect\",\n\tname: \"Redirect\",\n\thooks: {\n\t\tonSuccess(context) {\n\t\t\tif (context.data?.url && context.data?.redirect) {\n\t\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\t\twindow.location.href = context.data.url;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n} satisfies BetterFetchPlugin;\n\nexport const addCurrentURL = {\n\tid: \"add-current-url\",\n\tname: \"Add current URL\",\n\thooks: {\n\t\tonRequest(context) {\n\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\tconst url = new URL(context.url);\n\t\t\t\turl.searchParams.set(\"currentURL\", window.location.href);\n\t\t\t\tcontext.url = url;\n\t\t\t}\n\t\t\treturn context;\n\t\t},\n\t},\n} satisfies BetterFetchPlugin;\n\nexport const csrfPlugin = {\n\tid: \"csrf\",\n\tname: \"CSRF Check\",\n\tasync init(url, options) {\n\t\tif (!options?.baseURL) {\n\t\t\tthrow new BetterAuthError(\n\t\t\t\t\"API Base URL on the auth client isn't configured. Please pass it directly to the client `baseURL`\",\n\t\t\t);\n\t\t}\n\n\t\tif (options?.method !== \"GET\") {\n\t\t\toptions = options || {};\n\t\t\tconst { data, error } = await betterFetch<{\n\t\t\t\tcsrfToken: string;\n\t\t\t}>(\"/csrf\", {\n\t\t\t\tbody: undefined,\n\t\t\t\tbaseURL: options.baseURL,\n\t\t\t\tplugins: [],\n\t\t\t\tmethod: \"GET\",\n\t\t\t\tcredentials: \"include\",\n\t\t\t\tcustomFetchImpl: options.customFetchImpl,\n\t\t\t});\n\t\t\tif (error?.status === 404) {\n\t\t\t\tthrow new BetterAuthError(\n\t\t\t\t\t\"Route not found. Make sure the server is running and the base URL is correct and includes the path (e.g. http://localhost:3000/api/auth).\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (error) {\n\t\t\t\tthrow new BetterAuthError(error.message || \"Failed to get CSRF token.\");\n\t\t\t}\n\t\t\toptions.body = {\n\t\t\t\t...options?.body,\n\t\t\t\tcsrfToken: data.csrfToken,\n\t\t\t};\n\t\t}\n\t\toptions.credentials = \"include\";\n\t\treturn { url, options };\n\t},\n} satisfies BetterFetchPlugin;\n","import { createFetch } from \"@better-fetch/fetch\";\nimport { getBaseURL } from \"../utils/base-url\";\nimport { type Atom } from \"nanostores\";\nimport type { AtomListener, ClientOptions } from \"./types\";\n\nimport { addCurrentURL, csrfPlugin, redirectPlugin } from \"./fetch-plugins\";\nimport type { InferSession } from \"../types\";\n\nexport const getClientConfig = <O extends ClientOptions>(options?: O) => {\n\tconst $fetch = createFetch({\n\t\tbaseURL: getBaseURL(options?.fetchOptions?.baseURL || options?.baseURL),\n\t\t...options?.fetchOptions,\n\t\tplugins: [\n\t\t\tcsrfPlugin,\n\t\t\tredirectPlugin,\n\t\t\taddCurrentURL,\n\t\t\t...(options?.fetchOptions?.plugins || []),\n\t\t\t...(options?.plugins\n\t\t\t\t?.flatMap((plugin) => plugin.fetchPlugins)\n\t\t\t\t.filter((pl) => pl !== undefined) || []),\n\t\t],\n\t});\n\tconst plugins = options?.plugins || [];\n\tlet pluginsActions = {} as Record<string, any>;\n\tlet pluginsAtoms = {} as Record<string, Atom<any>>;\n\tlet pluginPathMethods: Record<string, \"POST\" | \"GET\"> = {\n\t\t\"/sign-out\": \"POST\",\n\t};\n\tconst atomListeners: AtomListener[] = [\n\t\t{\n\t\t\tsignal: \"_sessionSignal\",\n\t\t\tmatcher(path) {\n\t\t\t\treturn (\n\t\t\t\t\tpath === \"/sign-out\" ||\n\t\t\t\t\tpath === \"sign-up/email\" ||\n\t\t\t\t\tpath === \"/user/update\"\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t];\n\tfor (const plugin of plugins) {\n\t\tif (plugin.getActions) {\n\t\t\tObject.assign(pluginsActions, plugin.getActions?.($fetch));\n\t\t}\n\t\tif (plugin.getAtoms) {\n\t\t\tObject.assign(pluginsAtoms, plugin.getAtoms?.($fetch));\n\t\t}\n\t\tif (plugin.pathMethods) {\n\t\t\tObject.assign(pluginPathMethods, plugin.pathMethods);\n\t\t}\n\t\tif (plugin.atomListeners) {\n\t\t\tatomListeners.push(...plugin.atomListeners);\n\t\t}\n\t}\n\treturn {\n\t\tpluginsActions,\n\t\tpluginsAtoms,\n\t\tpluginPathMethods,\n\t\tatomListeners,\n\t\t$fetch,\n\t};\n};\n","export function capitalizeFirstLetter(str: string) {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n","import type { BetterFetch } from \"@better-fetch/fetch\";\nimport type { Atom, PreinitializedWritableAtom } from \"nanostores\";\nimport type { ProxyRequest } from \"./path-to-object\";\nimport type { AuthClientPlugin } from \"./types\";\n\nfunction getMethod(\n\tpath: string,\n\tknownPathMethods: Record<string, \"POST\" | \"GET\">,\n\targs?: ProxyRequest,\n) {\n\tconst method = knownPathMethods[path];\n\tconst { options, query, ...body } = args || {};\n\tif (method) {\n\t\treturn method;\n\t}\n\tif (options?.method) {\n\t\treturn options.method;\n\t}\n\tif (body && Object.keys(body).length > 0) {\n\t\treturn \"POST\";\n\t}\n\treturn \"GET\";\n}\n\nexport type AuthProxySignal = {\n\tatom: PreinitializedWritableAtom<boolean>;\n\tmatcher: (path: string) => boolean;\n};\n\nexport function createDynamicPathProxy<T extends Record<string, any>>(\n\troutes: T,\n\tclient: BetterFetch,\n\tknownPathMethods: Record<string, \"POST\" | \"GET\">,\n\tatoms: Record<string, Atom>,\n\tatomListeners: AuthClientPlugin[\"atomListeners\"],\n): T {\n\tfunction createProxy(path: string[] = []): any {\n\t\treturn new Proxy(function () {}, {\n\t\t\tget(target, prop: string) {\n\t\t\t\tconst fullPath = [...path, prop];\n\t\t\t\tlet current: any = routes;\n\t\t\t\tfor (const segment of fullPath) {\n\t\t\t\t\tif (current && typeof current === \"object\" && segment in current) {\n\t\t\t\t\t\tcurrent = current[segment];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrent = undefined;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (typeof current === \"function\") {\n\t\t\t\t\treturn current;\n\t\t\t\t}\n\t\t\t\treturn createProxy(fullPath);\n\t\t\t},\n\t\t\tapply: async (_, __, args) => {\n\t\t\t\tconst routePath =\n\t\t\t\t\t\"/\" +\n\t\t\t\t\tpath\n\t\t\t\t\t\t.map((segment) =>\n\t\t\t\t\t\t\tsegment.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\"/\");\n\n\t\t\t\tconst arg = (args[0] || {}) as ProxyRequest;\n\t\t\t\tconst method = getMethod(routePath, knownPathMethods, arg);\n\t\t\t\tconst { query, options, ...body } = arg;\n\n\t\t\t\treturn await client(routePath, {\n\t\t\t\t\t...options,\n\t\t\t\t\tbody:\n\t\t\t\t\t\tmethod === \"GET\"\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t...body,\n\t\t\t\t\t\t\t\t\t...(options?.body || {}),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\tquery: query,\n\t\t\t\t\tmethod,\n\t\t\t\t\tasync onSuccess(context) {\n\t\t\t\t\t\tawait options?.onSuccess?.(context);\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * We trigger listeners\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst matches = atomListeners?.find((s) => s.matcher(routePath));\n\n\t\t\t\t\t\tif (!matches) return;\n\t\t\t\t\t\tconst signal = atoms[matches.signal];\n\t\t\t\t\t\tif (!signal) return;\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * To avoid race conditions we set the signal in a setTimeout\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst val = signal.get();\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t//@ts-expect-error\n\t\t\t\t\t\t\tsignal.set(!val);\n\t\t\t\t\t\t}, 0);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\treturn createProxy() as T;\n}\n","import {\n\tBetterFetchError,\n\ttype BetterFetch,\n\ttype BetterFetchOption,\n} from \"@better-fetch/fetch\";\nimport { atom, type PreinitializedWritableAtom } from \"nanostores\";\n\nexport const useAuthQuery = <T>(\n\tinitializedAtom:\n\t\t| PreinitializedWritableAtom<any>\n\t\t| PreinitializedWritableAtom<any>[],\n\tpath: string,\n\t$fetch: BetterFetch,\n\toptions?: (() => BetterFetchOption) | BetterFetchOption,\n) => {\n\tconst value = atom<{\n\t\tdata: null | T;\n\t\terror: null | BetterFetchError;\n\t\tisPending: boolean;\n\t}>({\n\t\tdata: null,\n\t\terror: null,\n\t\tisPending: false,\n\t});\n\n\tconst fn = () => {\n\t\tconst opts = typeof options === \"function\" ? options() : options;\n\t\treturn $fetch<T>(path, {\n\t\t\t...opts,\n\t\t\tonSuccess: async (context) => {\n\t\t\t\tvalue.set({\n\t\t\t\t\tdata: context.data,\n\t\t\t\t\terror: null,\n\t\t\t\t\tisPending: false,\n\t\t\t\t});\n\t\t\t\tawait opts?.onSuccess?.(context);\n\t\t\t},\n\t\t\tasync onError(context) {\n\t\t\t\tvalue.set({\n\t\t\t\t\terror: context.error,\n\t\t\t\t\tdata: null,\n\t\t\t\t\tisPending: false,\n\t\t\t\t});\n\t\t\t\tawait opts?.onError?.(context);\n\t\t\t},\n\t\t\tasync onRequest(context) {\n\t\t\t\tconst currentValue = value.get();\n\t\t\t\tvalue.set({\n\t\t\t\t\tisPending: true,\n\t\t\t\t\tdata: currentValue.data,\n\t\t\t\t\terror: currentValue.error,\n\t\t\t\t});\n\t\t\t\tawait opts?.onRequest?.(context);\n\t\t\t},\n\t\t});\n\t};\n\tfn();\n\tinitializedAtom = Array.isArray(initializedAtom)\n\t\t? initializedAtom\n\t\t: [initializedAtom];\n\tlet firstRun = true;\n\tfor (const initAtom of initializedAtom) {\n\t\tinitAtom.subscribe((value) => {\n\t\t\tif (value && !firstRun) {\n\t\t\t\tfn();\n\t\t\t}\n\t\t});\n\t}\n\tfirstRun = false;\n\treturn value;\n};\n","import type { BetterFetch } from \"@better-fetch/fetch\";\nimport { atom } from \"nanostores\";\nimport type { Auth as BetterAuth } from \"../auth\";\nimport type { Prettify, UnionToIntersection } from \"../types/helper\";\nimport type { InferSession, InferUser } from \"../types/models\";\nimport type { AuthClientPlugin, ClientOptions } from \"./types\";\nimport { useAuthQuery } from \"./query\";\nimport type { BetterAuthPlugin } from \"../plugins\";\n\nexport function getSessionAtom<Option extends ClientOptions>(\n\tclient: BetterFetch,\n) {\n\ttype Plugins = Option[\"plugins\"] extends Array<AuthClientPlugin>\n\t\t? Array<\n\t\t\t\tOption[\"plugins\"][number] extends infer T\n\t\t\t\t\t? T extends AuthClientPlugin\n\t\t\t\t\t\t? T[\"$InferServerPlugin\"] extends infer U\n\t\t\t\t\t\t\t? U extends BetterAuthPlugin\n\t\t\t\t\t\t\t\t? U\n\t\t\t\t\t\t\t\t: never\n\t\t\t\t\t\t\t: never\n\t\t\t\t\t\t: never\n\t\t\t\t\t: never\n\t\t\t>\n\t\t: never;\n\n\ttype Auth = {\n\t\thandler: any;\n\t\tapi: any;\n\t\toptions: {\n\t\t\tdatabase: any;\n\t\t\tplugins: Plugins;\n\t\t};\n\t};\n\n\ttype UserWithAdditionalFields = InferUser<Auth[\"options\"]>;\n\ttype SessionWithAdditionalFields = InferSession<Auth[\"options\"]>;\n\tconst $signal = atom<boolean>(false);\n\tconst session = useAuthQuery<{\n\t\tuser: Prettify<UserWithAdditionalFields>;\n\t\tsession: Prettify<SessionWithAdditionalFields>;\n\t}>($signal, \"/session\", client, {\n\t\tmethod: \"GET\",\n\t});\n\treturn {\n\t\t$session: session,\n\t\t_sessionSignal: $signal,\n\t\t$infer: {} as {\n\t\t\tsession: {\n\t\t\t\tsession: Prettify<SessionWithAdditionalFields>;\n\t\t\t\tuser: Prettify<UserWithAdditionalFields>;\n\t\t\t};\n\t\t},\n\t};\n}\n","import { getClientConfig } from \"./config\";\nimport { capitalizeFirstLetter } from \"../utils/misc\";\nimport type {\n\tAuthClientPlugin,\n\tClientOptions,\n\tInferActions,\n\tInferClientAPI,\n\tInferSessionFromClient,\n\tInferUserFromClient,\n\tIsSignal,\n} from \"./types\";\nimport { createDynamicPathProxy } from \"./proxy\";\nimport { getSessionAtom } from \"./session-atom\";\nimport type { UnionToIntersection } from \"../types/helper\";\n\ntype InferResolvedHooks<O extends ClientOptions> = O[\"plugins\"] extends Array<\n\tinfer Plugin\n>\n\t? Plugin extends AuthClientPlugin\n\t\t? Plugin[\"getAtoms\"] extends (fetch: any) => infer Atoms\n\t\t\t? Atoms extends Record<string, any>\n\t\t\t\t? {\n\t\t\t\t\t\t[key in keyof Atoms as IsSignal<key> extends true\n\t\t\t\t\t\t\t? never\n\t\t\t\t\t\t\t: key extends string\n\t\t\t\t\t\t\t\t? `use${Capitalize<key>}`\n\t\t\t\t\t\t\t\t: never]: Atoms[key];\n\t\t\t\t\t}\n\t\t\t\t: {}\n\t\t\t: {}\n\t\t: {}\n\t: {};\n\nexport function createAuthClient<Option extends ClientOptions>(\n\toptions?: Option,\n) {\n\tconst {\n\t\tpluginPathMethods,\n\t\tpluginsActions,\n\t\tpluginsAtoms,\n\t\t$fetch,\n\t\tatomListeners,\n\t} = getClientConfig(options);\n\tlet resolvedHooks: Record<string, any> = {};\n\tfor (const [key, value] of Object.entries(pluginsAtoms)) {\n\t\tresolvedHooks[`use${capitalizeFirstLetter(key)}`] = value;\n\t}\n\n\tconst { $session, _sessionSignal } = getSessionAtom<Option>($fetch);\n\tconst routes = {\n\t\t...pluginsActions,\n\t\t...resolvedHooks,\n\t\t$fetch,\n\t\tuseSession: $session,\n\t};\n\tconst proxy = createDynamicPathProxy(\n\t\troutes,\n\t\t$fetch,\n\t\tpluginPathMethods,\n\t\t{\n\t\t\t...pluginsAtoms,\n\t\t\t_sessionSignal,\n\t\t},\n\t\tatomListeners,\n\t);\n\treturn proxy as UnionToIntersection<InferResolvedHooks<Option>> &\n\t\tInferClientAPI<Option> &\n\t\tInferActions<Option> & {\n\t\t\tuseSession: typeof $session;\n\t\t\t$fetch: typeof $fetch;\n\t\t\t$infer: {\n\t\t\t\tsession: InferSessionFromClient<Option>;\n\t\t\t\tuser: InferUserFromClient<Option>;\n\t\t\t};\n\t\t};\n}\n"]}
1
+ {"version":3,"sources":["../src/error/better-auth-error.ts","../src/utils/base-url.ts","../src/client/fetch-plugins.ts","../src/client/config.ts","../src/utils/misc.ts","../src/client/proxy.ts","../src/client/query.ts","../src/client/session-atom.ts","../src/client/vanilla.ts"],"names":["value","atom"],"mappings":"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","file":"client.js","sourcesContent":["export class BetterAuthError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t}\n}\n","import { BetterAuthError } from \"../error/better-auth-error\";\n\nfunction checkHasPath(url: string): boolean {\n\ttry {\n\t\tconst parsedUrl = new URL(url);\n\t\treturn parsedUrl.pathname !== \"/\";\n\t} catch (error) {\n\t\tthrow new BetterAuthError(\n\t\t\t`Invalid base URL: ${url}. Please provide a valid base URL.`,\n\t\t);\n\t}\n}\n\nfunction withPath(url: string, path = \"/api/auth\") {\n\tconst hasPath = checkHasPath(url);\n\tif (hasPath) {\n\t\treturn url;\n\t}\n\tpath = path.startsWith(\"/\") ? path : `/${path}`;\n\treturn `${url}${path}`;\n}\n\nexport function getBaseURL(url?: string, path?: string) {\n\tif (url) {\n\t\treturn withPath(url, path);\n\t}\n\tconst env: any = typeof process !== \"undefined\" ? process.env : {};\n\tconst fromEnv =\n\t\tenv.BETTER_AUTH_URL ||\n\t\tenv.NEXT_PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.NUXT_PUBLIC_BETTER_AUTH_URL ||\n\t\tenv.NUXT_PUBLIC_AUTH_URL;\n\tif (fromEnv) {\n\t\treturn withPath(fromEnv, path);\n\t}\n\n\tif (typeof window !== \"undefined\") {\n\t\treturn withPath(window.location.origin, path);\n\t}\n\treturn undefined;\n}\n","import { type BetterFetchPlugin, betterFetch } from \"@better-fetch/fetch\";\nimport { BetterAuthError } from \"../error/better-auth-error\";\n\nexport const redirectPlugin = {\n\tid: \"redirect\",\n\tname: \"Redirect\",\n\thooks: {\n\t\tonSuccess(context) {\n\t\t\tif (context.data?.url && context.data?.redirect) {\n\t\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\t\twindow.location.href = context.data.url;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n} satisfies BetterFetchPlugin;\n\nexport const addCurrentURL = {\n\tid: \"add-current-url\",\n\tname: \"Add current URL\",\n\thooks: {\n\t\tonRequest(context) {\n\t\t\tif (typeof window !== \"undefined\") {\n\t\t\t\tconst url = new URL(context.url);\n\t\t\t\turl.searchParams.set(\"currentURL\", window.location.href);\n\t\t\t\tcontext.url = url;\n\t\t\t}\n\t\t\treturn context;\n\t\t},\n\t},\n} satisfies BetterFetchPlugin;\n\nexport const csrfPlugin = {\n\tid: \"csrf\",\n\tname: \"CSRF Check\",\n\tasync init(url, options) {\n\t\tif (!options?.baseURL) {\n\t\t\tthrow new BetterAuthError(\n\t\t\t\t\"API Base URL on the auth client isn't configured. Please pass it directly to the client `baseURL`\",\n\t\t\t);\n\t\t}\n\n\t\tif (options?.method !== \"GET\") {\n\t\t\toptions = options || {};\n\t\t\tconst { data, error } = await betterFetch<{\n\t\t\t\tcsrfToken: string;\n\t\t\t}>(\"/csrf\", {\n\t\t\t\tbody: undefined,\n\t\t\t\tbaseURL: options.baseURL,\n\t\t\t\tplugins: [],\n\t\t\t\tmethod: \"GET\",\n\t\t\t\tcredentials: \"include\",\n\t\t\t\tcustomFetchImpl: options.customFetchImpl,\n\t\t\t});\n\t\t\tif (error?.status === 404) {\n\t\t\t\tthrow new BetterAuthError(\n\t\t\t\t\t\"Route not found. Make sure the server is running and the base URL is correct and includes the path (e.g. http://localhost:3000/api/auth).\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (error) {\n\t\t\t\tthrow new BetterAuthError(error.message || \"Failed to get CSRF token.\");\n\t\t\t}\n\t\t\toptions.body = {\n\t\t\t\t...options?.body,\n\t\t\t\tcsrfToken: data.csrfToken,\n\t\t\t};\n\t\t}\n\t\toptions.credentials = \"include\";\n\t\treturn { url, options };\n\t},\n} satisfies BetterFetchPlugin;\n","import { createFetch } from \"@better-fetch/fetch\";\nimport { getBaseURL } from \"../utils/base-url\";\nimport { type Atom } from \"nanostores\";\nimport type { AtomListener, ClientOptions } from \"./types\";\n\nimport { addCurrentURL, csrfPlugin, redirectPlugin } from \"./fetch-plugins\";\nimport type { InferSession } from \"../types\";\n\nexport const getClientConfig = <O extends ClientOptions>(options?: O) => {\n\tconst $fetch = createFetch({\n\t\tbaseURL: getBaseURL(options?.fetchOptions?.baseURL || options?.baseURL),\n\t\t...options?.fetchOptions,\n\t\tplugins: [\n\t\t\tcsrfPlugin,\n\t\t\tredirectPlugin,\n\t\t\taddCurrentURL,\n\t\t\t...(options?.fetchOptions?.plugins || []),\n\t\t\t...(options?.plugins\n\t\t\t\t?.flatMap((plugin) => plugin.fetchPlugins)\n\t\t\t\t.filter((pl) => pl !== undefined) || []),\n\t\t],\n\t});\n\tconst plugins = options?.plugins || [];\n\tlet pluginsActions = {} as Record<string, any>;\n\tlet pluginsAtoms = {} as Record<string, Atom<any>>;\n\tlet pluginPathMethods: Record<string, \"POST\" | \"GET\"> = {\n\t\t\"/sign-out\": \"POST\",\n\t\t\"/user/revoke-sessions\": \"POST\",\n\t};\n\tconst atomListeners: AtomListener[] = [\n\t\t{\n\t\t\tsignal: \"_sessionSignal\",\n\t\t\tmatcher(path) {\n\t\t\t\treturn (\n\t\t\t\t\tpath === \"/sign-out\" ||\n\t\t\t\t\tpath === \"sign-up/email\" ||\n\t\t\t\t\tpath === \"/user/update\"\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t];\n\tfor (const plugin of plugins) {\n\t\tif (plugin.getActions) {\n\t\t\tObject.assign(pluginsActions, plugin.getActions?.($fetch));\n\t\t}\n\t\tif (plugin.getAtoms) {\n\t\t\tObject.assign(pluginsAtoms, plugin.getAtoms?.($fetch));\n\t\t}\n\t\tif (plugin.pathMethods) {\n\t\t\tObject.assign(pluginPathMethods, plugin.pathMethods);\n\t\t}\n\t\tif (plugin.atomListeners) {\n\t\t\tatomListeners.push(...plugin.atomListeners);\n\t\t}\n\t}\n\treturn {\n\t\tpluginsActions,\n\t\tpluginsAtoms,\n\t\tpluginPathMethods,\n\t\tatomListeners,\n\t\t$fetch,\n\t};\n};\n","export function capitalizeFirstLetter(str: string) {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n","import type { BetterFetch } from \"@better-fetch/fetch\";\nimport type { Atom, PreinitializedWritableAtom } from \"nanostores\";\nimport type { ProxyRequest } from \"./path-to-object\";\nimport type { AuthClientPlugin } from \"./types\";\n\nfunction getMethod(\n\tpath: string,\n\tknownPathMethods: Record<string, \"POST\" | \"GET\">,\n\targs?: ProxyRequest,\n) {\n\tconst method = knownPathMethods[path];\n\tconst { options, query, ...body } = args || {};\n\tif (method) {\n\t\treturn method;\n\t}\n\tif (options?.method) {\n\t\treturn options.method;\n\t}\n\tif (body && Object.keys(body).length > 0) {\n\t\treturn \"POST\";\n\t}\n\treturn \"GET\";\n}\n\nexport type AuthProxySignal = {\n\tatom: PreinitializedWritableAtom<boolean>;\n\tmatcher: (path: string) => boolean;\n};\n\nexport function createDynamicPathProxy<T extends Record<string, any>>(\n\troutes: T,\n\tclient: BetterFetch,\n\tknownPathMethods: Record<string, \"POST\" | \"GET\">,\n\tatoms: Record<string, Atom>,\n\tatomListeners: AuthClientPlugin[\"atomListeners\"],\n): T {\n\tfunction createProxy(path: string[] = []): any {\n\t\treturn new Proxy(function () {}, {\n\t\t\tget(target, prop: string) {\n\t\t\t\tconst fullPath = [...path, prop];\n\t\t\t\tlet current: any = routes;\n\t\t\t\tfor (const segment of fullPath) {\n\t\t\t\t\tif (current && typeof current === \"object\" && segment in current) {\n\t\t\t\t\t\tcurrent = current[segment];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrent = undefined;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (typeof current === \"function\") {\n\t\t\t\t\treturn current;\n\t\t\t\t}\n\t\t\t\treturn createProxy(fullPath);\n\t\t\t},\n\t\t\tapply: async (_, __, args) => {\n\t\t\t\tconst routePath =\n\t\t\t\t\t\"/\" +\n\t\t\t\t\tpath\n\t\t\t\t\t\t.map((segment) =>\n\t\t\t\t\t\t\tsegment.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`),\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\"/\");\n\n\t\t\t\tconst arg = (args[0] || {}) as ProxyRequest;\n\t\t\t\tconst method = getMethod(routePath, knownPathMethods, arg);\n\t\t\t\tconst { query, options, ...body } = arg;\n\n\t\t\t\treturn await client(routePath, {\n\t\t\t\t\t...options,\n\t\t\t\t\tbody:\n\t\t\t\t\t\tmethod === \"GET\"\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t...body,\n\t\t\t\t\t\t\t\t\t...(options?.body || {}),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\tquery: query,\n\t\t\t\t\tmethod,\n\t\t\t\t\tasync onSuccess(context) {\n\t\t\t\t\t\tawait options?.onSuccess?.(context);\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * We trigger listeners\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst matches = atomListeners?.find((s) => s.matcher(routePath));\n\n\t\t\t\t\t\tif (!matches) return;\n\t\t\t\t\t\tconst signal = atoms[matches.signal];\n\t\t\t\t\t\tif (!signal) return;\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * To avoid race conditions we set the signal in a setTimeout\n\t\t\t\t\t\t */\n\t\t\t\t\t\tconst val = signal.get();\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t//@ts-expect-error\n\t\t\t\t\t\t\tsignal.set(!val);\n\t\t\t\t\t\t}, 0);\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t}\n\treturn createProxy() as T;\n}\n","import {\n\tBetterFetchError,\n\ttype BetterFetch,\n\ttype BetterFetchOption,\n} from \"@better-fetch/fetch\";\nimport { atom, type PreinitializedWritableAtom } from \"nanostores\";\n\nexport const useAuthQuery = <T>(\n\tinitializedAtom:\n\t\t| PreinitializedWritableAtom<any>\n\t\t| PreinitializedWritableAtom<any>[],\n\tpath: string,\n\t$fetch: BetterFetch,\n\toptions?: (() => BetterFetchOption) | BetterFetchOption,\n) => {\n\tconst value = atom<{\n\t\tdata: null | T;\n\t\terror: null | BetterFetchError;\n\t\tisPending: boolean;\n\t}>({\n\t\tdata: null,\n\t\terror: null,\n\t\tisPending: false,\n\t});\n\n\tconst fn = () => {\n\t\tconst opts = typeof options === \"function\" ? options() : options;\n\t\treturn $fetch<T>(path, {\n\t\t\t...opts,\n\t\t\tonSuccess: async (context) => {\n\t\t\t\tvalue.set({\n\t\t\t\t\tdata: context.data,\n\t\t\t\t\terror: null,\n\t\t\t\t\tisPending: false,\n\t\t\t\t});\n\t\t\t\tawait opts?.onSuccess?.(context);\n\t\t\t},\n\t\t\tasync onError(context) {\n\t\t\t\tvalue.set({\n\t\t\t\t\terror: context.error,\n\t\t\t\t\tdata: null,\n\t\t\t\t\tisPending: false,\n\t\t\t\t});\n\t\t\t\tawait opts?.onError?.(context);\n\t\t\t},\n\t\t\tasync onRequest(context) {\n\t\t\t\tconst currentValue = value.get();\n\t\t\t\tvalue.set({\n\t\t\t\t\tisPending: true,\n\t\t\t\t\tdata: currentValue.data,\n\t\t\t\t\terror: currentValue.error,\n\t\t\t\t});\n\t\t\t\tawait opts?.onRequest?.(context);\n\t\t\t},\n\t\t});\n\t};\n\tfn();\n\tinitializedAtom = Array.isArray(initializedAtom)\n\t\t? initializedAtom\n\t\t: [initializedAtom];\n\tlet firstRun = true;\n\tfor (const initAtom of initializedAtom) {\n\t\tinitAtom.subscribe((value) => {\n\t\t\tif (value && !firstRun) {\n\t\t\t\tfn();\n\t\t\t}\n\t\t});\n\t}\n\tfirstRun = false;\n\treturn value;\n};\n","import type { BetterFetch } from \"@better-fetch/fetch\";\nimport { atom } from \"nanostores\";\nimport type { Auth as BetterAuth } from \"../auth\";\nimport type { Prettify, UnionToIntersection } from \"../types/helper\";\nimport type { InferSession, InferUser } from \"../types/models\";\nimport type { AuthClientPlugin, ClientOptions } from \"./types\";\nimport { useAuthQuery } from \"./query\";\nimport type { BetterAuthPlugin } from \"../plugins\";\n\nexport function getSessionAtom<Option extends ClientOptions>(\n\tclient: BetterFetch,\n) {\n\ttype Plugins = Option[\"plugins\"] extends Array<AuthClientPlugin>\n\t\t? Array<\n\t\t\t\tOption[\"plugins\"][number] extends infer T\n\t\t\t\t\t? T extends AuthClientPlugin\n\t\t\t\t\t\t? T[\"$InferServerPlugin\"] extends infer U\n\t\t\t\t\t\t\t? U extends BetterAuthPlugin\n\t\t\t\t\t\t\t\t? U\n\t\t\t\t\t\t\t\t: never\n\t\t\t\t\t\t\t: never\n\t\t\t\t\t\t: never\n\t\t\t\t\t: never\n\t\t\t>\n\t\t: never;\n\n\ttype Auth = {\n\t\thandler: any;\n\t\tapi: any;\n\t\toptions: {\n\t\t\tdatabase: any;\n\t\t\tplugins: Plugins;\n\t\t};\n\t};\n\n\ttype UserWithAdditionalFields = InferUser<Auth[\"options\"]>;\n\ttype SessionWithAdditionalFields = InferSession<Auth[\"options\"]>;\n\tconst $signal = atom<boolean>(false);\n\tconst session = useAuthQuery<{\n\t\tuser: Prettify<UserWithAdditionalFields>;\n\t\tsession: Prettify<SessionWithAdditionalFields>;\n\t}>($signal, \"/session\", client, {\n\t\tmethod: \"GET\",\n\t});\n\treturn {\n\t\t$session: session,\n\t\t_sessionSignal: $signal,\n\t\t$infer: {} as {\n\t\t\tsession: {\n\t\t\t\tsession: Prettify<SessionWithAdditionalFields>;\n\t\t\t\tuser: Prettify<UserWithAdditionalFields>;\n\t\t\t};\n\t\t},\n\t};\n}\n","import { getClientConfig } from \"./config\";\nimport { capitalizeFirstLetter } from \"../utils/misc\";\nimport type {\n\tAuthClientPlugin,\n\tClientOptions,\n\tInferActions,\n\tInferClientAPI,\n\tInferSessionFromClient,\n\tInferUserFromClient,\n\tIsSignal,\n} from \"./types\";\nimport { createDynamicPathProxy } from \"./proxy\";\nimport { getSessionAtom } from \"./session-atom\";\nimport type { UnionToIntersection } from \"../types/helper\";\n\ntype InferResolvedHooks<O extends ClientOptions> = O[\"plugins\"] extends Array<\n\tinfer Plugin\n>\n\t? Plugin extends AuthClientPlugin\n\t\t? Plugin[\"getAtoms\"] extends (fetch: any) => infer Atoms\n\t\t\t? Atoms extends Record<string, any>\n\t\t\t\t? {\n\t\t\t\t\t\t[key in keyof Atoms as IsSignal<key> extends true\n\t\t\t\t\t\t\t? never\n\t\t\t\t\t\t\t: key extends string\n\t\t\t\t\t\t\t\t? `use${Capitalize<key>}`\n\t\t\t\t\t\t\t\t: never]: Atoms[key];\n\t\t\t\t\t}\n\t\t\t\t: {}\n\t\t\t: {}\n\t\t: {}\n\t: {};\n\nexport function createAuthClient<Option extends ClientOptions>(\n\toptions?: Option,\n) {\n\tconst {\n\t\tpluginPathMethods,\n\t\tpluginsActions,\n\t\tpluginsAtoms,\n\t\t$fetch,\n\t\tatomListeners,\n\t} = getClientConfig(options);\n\tlet resolvedHooks: Record<string, any> = {};\n\tfor (const [key, value] of Object.entries(pluginsAtoms)) {\n\t\tresolvedHooks[`use${capitalizeFirstLetter(key)}`] = value;\n\t}\n\n\tconst { $session, _sessionSignal } = getSessionAtom<Option>($fetch);\n\tconst routes = {\n\t\t...pluginsActions,\n\t\t...resolvedHooks,\n\t\t$fetch,\n\t\tuseSession: $session,\n\t};\n\tconst proxy = createDynamicPathProxy(\n\t\troutes,\n\t\t$fetch,\n\t\tpluginPathMethods,\n\t\t{\n\t\t\t...pluginsAtoms,\n\t\t\t_sessionSignal,\n\t\t},\n\t\tatomListeners,\n\t);\n\treturn proxy as UnionToIntersection<InferResolvedHooks<Option>> &\n\t\tInferClientAPI<Option> &\n\t\tInferActions<Option> & {\n\t\t\tuseSession: typeof $session;\n\t\t\t$fetch: typeof $fetch;\n\t\t\t$infer: {\n\t\t\t\tsession: InferSessionFromClient<Option>;\n\t\t\t\tuser: InferUserFromClient<Option>;\n\t\t\t};\n\t\t};\n}\n"]}
@@ -80,14 +80,14 @@ declare const router: <C extends AuthContext, Option extends BetterAuthOptions>(
80
80
  }>>;
81
81
  body: zod.ZodObject<{
82
82
  callbackURL: zod.ZodOptional<zod.ZodString>;
83
- provider: zod.ZodEnum<["github", ...("github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter")[]]>;
83
+ provider: zod.ZodEnum<["github", ...("apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter")[]]>;
84
84
  dontRememberMe: zod.ZodOptional<zod.ZodDefault<zod.ZodBoolean>>;
85
85
  }, "strip", zod.ZodTypeAny, {
86
- provider: "github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter";
86
+ provider: "apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter";
87
87
  callbackURL?: string | undefined;
88
88
  dontRememberMe?: boolean | undefined;
89
89
  }, {
90
- provider: "github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter";
90
+ provider: "apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter";
91
91
  callbackURL?: string | undefined;
92
92
  dontRememberMe?: boolean | undefined;
93
93
  }>;
@@ -110,14 +110,14 @@ declare const router: <C extends AuthContext, Option extends BetterAuthOptions>(
110
110
  }>>;
111
111
  body: zod.ZodObject<{
112
112
  callbackURL: zod.ZodOptional<zod.ZodString>;
113
- provider: zod.ZodEnum<["github", ...("github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter")[]]>;
113
+ provider: zod.ZodEnum<["github", ...("apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter")[]]>;
114
114
  dontRememberMe: zod.ZodOptional<zod.ZodDefault<zod.ZodBoolean>>;
115
115
  }, "strip", zod.ZodTypeAny, {
116
- provider: "github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter";
116
+ provider: "apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter";
117
117
  callbackURL?: string | undefined;
118
118
  dontRememberMe?: boolean | undefined;
119
119
  }, {
120
- provider: "github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter";
120
+ provider: "apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter";
121
121
  callbackURL?: string | undefined;
122
122
  dontRememberMe?: boolean | undefined;
123
123
  }>;
@@ -726,6 +726,183 @@ declare const router: <C extends AuthContext, Option extends BetterAuthOptions>(
726
726
  method: better_call.Method | better_call.Method[];
727
727
  headers: Headers;
728
728
  };
729
+ listSessions: {
730
+ (ctx_0?: Context<"/user/list-sessions", {
731
+ method: "GET";
732
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
733
+ session: {
734
+ session: {
735
+ id: string;
736
+ userId: string;
737
+ expiresAt: Date;
738
+ ipAddress?: string | undefined;
739
+ userAgent?: string | undefined;
740
+ };
741
+ user: {
742
+ id: string;
743
+ email: string;
744
+ emailVerified: boolean;
745
+ name: string;
746
+ createdAt: Date;
747
+ updatedAt: Date;
748
+ image?: string | undefined;
749
+ };
750
+ };
751
+ }>, better_call.EndpointOptions>[];
752
+ }> | undefined): Promise<{
753
+ id: string;
754
+ userId: string;
755
+ expiresAt: Date;
756
+ ipAddress?: string | undefined;
757
+ userAgent?: string | undefined;
758
+ }[]>;
759
+ path: "/user/list-sessions";
760
+ options: {
761
+ method: "GET";
762
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
763
+ session: {
764
+ session: {
765
+ id: string;
766
+ userId: string;
767
+ expiresAt: Date;
768
+ ipAddress?: string | undefined;
769
+ userAgent?: string | undefined;
770
+ };
771
+ user: {
772
+ id: string;
773
+ email: string;
774
+ emailVerified: boolean;
775
+ name: string;
776
+ createdAt: Date;
777
+ updatedAt: Date;
778
+ image?: string | undefined;
779
+ };
780
+ };
781
+ }>, better_call.EndpointOptions>[];
782
+ };
783
+ method: better_call.Method | better_call.Method[];
784
+ headers: Headers;
785
+ };
786
+ revokeSession: {
787
+ (ctx_0: Context<"/user/revoke-session", {
788
+ method: "POST";
789
+ body: zod.ZodObject<{
790
+ id: zod.ZodString;
791
+ }, "strip", zod.ZodTypeAny, {
792
+ id: string;
793
+ }, {
794
+ id: string;
795
+ }>;
796
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
797
+ session: {
798
+ session: {
799
+ id: string;
800
+ userId: string;
801
+ expiresAt: Date;
802
+ ipAddress?: string | undefined;
803
+ userAgent?: string | undefined;
804
+ };
805
+ user: {
806
+ id: string;
807
+ email: string;
808
+ emailVerified: boolean;
809
+ name: string;
810
+ createdAt: Date;
811
+ updatedAt: Date;
812
+ image?: string | undefined;
813
+ };
814
+ };
815
+ }>, better_call.EndpointOptions>[];
816
+ }>): Promise<{
817
+ status: boolean;
818
+ }>;
819
+ path: "/user/revoke-session";
820
+ options: {
821
+ method: "POST";
822
+ body: zod.ZodObject<{
823
+ id: zod.ZodString;
824
+ }, "strip", zod.ZodTypeAny, {
825
+ id: string;
826
+ }, {
827
+ id: string;
828
+ }>;
829
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
830
+ session: {
831
+ session: {
832
+ id: string;
833
+ userId: string;
834
+ expiresAt: Date;
835
+ ipAddress?: string | undefined;
836
+ userAgent?: string | undefined;
837
+ };
838
+ user: {
839
+ id: string;
840
+ email: string;
841
+ emailVerified: boolean;
842
+ name: string;
843
+ createdAt: Date;
844
+ updatedAt: Date;
845
+ image?: string | undefined;
846
+ };
847
+ };
848
+ }>, better_call.EndpointOptions>[];
849
+ };
850
+ method: better_call.Method | better_call.Method[];
851
+ headers: Headers;
852
+ };
853
+ revokeSessions: {
854
+ (ctx_0?: Context<"/user/revoke-sessions", {
855
+ method: "POST";
856
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
857
+ session: {
858
+ session: {
859
+ id: string;
860
+ userId: string;
861
+ expiresAt: Date;
862
+ ipAddress?: string | undefined;
863
+ userAgent?: string | undefined;
864
+ };
865
+ user: {
866
+ id: string;
867
+ email: string;
868
+ emailVerified: boolean;
869
+ name: string;
870
+ createdAt: Date;
871
+ updatedAt: Date;
872
+ image?: string | undefined;
873
+ };
874
+ };
875
+ }>, better_call.EndpointOptions>[];
876
+ }> | undefined): Promise<{
877
+ status: boolean;
878
+ }>;
879
+ path: "/user/revoke-sessions";
880
+ options: {
881
+ method: "POST";
882
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
883
+ session: {
884
+ session: {
885
+ id: string;
886
+ userId: string;
887
+ expiresAt: Date;
888
+ ipAddress?: string | undefined;
889
+ userAgent?: string | undefined;
890
+ };
891
+ user: {
892
+ id: string;
893
+ email: string;
894
+ emailVerified: boolean;
895
+ name: string;
896
+ createdAt: Date;
897
+ updatedAt: Date;
898
+ image?: string | undefined;
899
+ };
900
+ };
901
+ }>, better_call.EndpointOptions>[];
902
+ };
903
+ method: better_call.Method | better_call.Method[];
904
+ headers: Headers;
905
+ };
729
906
  }, "error" | "ok" | "welcome">;
730
907
  };
731
908
 
@@ -786,14 +963,14 @@ declare const betterAuth: <O extends BetterAuthOptions>(options: O) => {
786
963
  }>>;
787
964
  body: zod.ZodObject<{
788
965
  callbackURL: zod.ZodOptional<zod.ZodString>;
789
- provider: zod.ZodEnum<["github", ...("github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter")[]]>;
966
+ provider: zod.ZodEnum<["github", ...("apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter")[]]>;
790
967
  dontRememberMe: zod.ZodOptional<zod.ZodDefault<zod.ZodBoolean>>;
791
968
  }, "strip", zod.ZodTypeAny, {
792
- provider: "github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter";
969
+ provider: "apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter";
793
970
  callbackURL?: string | undefined;
794
971
  dontRememberMe?: boolean | undefined;
795
972
  }, {
796
- provider: "github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter";
973
+ provider: "apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter";
797
974
  callbackURL?: string | undefined;
798
975
  dontRememberMe?: boolean | undefined;
799
976
  }>;
@@ -816,14 +993,14 @@ declare const betterAuth: <O extends BetterAuthOptions>(options: O) => {
816
993
  }>>;
817
994
  body: zod.ZodObject<{
818
995
  callbackURL: zod.ZodOptional<zod.ZodString>;
819
- provider: zod.ZodEnum<["github", ...("github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter")[]]>;
996
+ provider: zod.ZodEnum<["github", ...("apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter")[]]>;
820
997
  dontRememberMe: zod.ZodOptional<zod.ZodDefault<zod.ZodBoolean>>;
821
998
  }, "strip", zod.ZodTypeAny, {
822
- provider: "github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter";
999
+ provider: "apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter";
823
1000
  callbackURL?: string | undefined;
824
1001
  dontRememberMe?: boolean | undefined;
825
1002
  }, {
826
- provider: "github" | "apple" | "discord" | "facebook" | "google" | "spotify" | "twitch" | "twitter";
1003
+ provider: "apple" | "discord" | "facebook" | "github" | "google" | "spotify" | "twitch" | "twitter";
827
1004
  callbackURL?: string | undefined;
828
1005
  dontRememberMe?: boolean | undefined;
829
1006
  }>;
@@ -1432,6 +1609,183 @@ declare const betterAuth: <O extends BetterAuthOptions>(options: O) => {
1432
1609
  method: better_call.Method | better_call.Method[];
1433
1610
  headers: Headers;
1434
1611
  };
1612
+ listSessions: {
1613
+ (ctx_0?: better_call.Context<"/user/list-sessions", {
1614
+ method: "GET";
1615
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
1616
+ session: {
1617
+ session: {
1618
+ id: string;
1619
+ userId: string;
1620
+ expiresAt: Date;
1621
+ ipAddress?: string | undefined;
1622
+ userAgent?: string | undefined;
1623
+ };
1624
+ user: {
1625
+ id: string;
1626
+ email: string;
1627
+ emailVerified: boolean;
1628
+ name: string;
1629
+ createdAt: Date;
1630
+ updatedAt: Date;
1631
+ image?: string | undefined;
1632
+ };
1633
+ };
1634
+ }>, better_call.EndpointOptions>[];
1635
+ }> | undefined): Promise<{
1636
+ id: string;
1637
+ userId: string;
1638
+ expiresAt: Date;
1639
+ ipAddress?: string | undefined;
1640
+ userAgent?: string | undefined;
1641
+ }[]>;
1642
+ path: "/user/list-sessions";
1643
+ options: {
1644
+ method: "GET";
1645
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
1646
+ session: {
1647
+ session: {
1648
+ id: string;
1649
+ userId: string;
1650
+ expiresAt: Date;
1651
+ ipAddress?: string | undefined;
1652
+ userAgent?: string | undefined;
1653
+ };
1654
+ user: {
1655
+ id: string;
1656
+ email: string;
1657
+ emailVerified: boolean;
1658
+ name: string;
1659
+ createdAt: Date;
1660
+ updatedAt: Date;
1661
+ image?: string | undefined;
1662
+ };
1663
+ };
1664
+ }>, better_call.EndpointOptions>[];
1665
+ };
1666
+ method: better_call.Method | better_call.Method[];
1667
+ headers: Headers;
1668
+ };
1669
+ revokeSession: {
1670
+ (ctx_0: better_call.Context<"/user/revoke-session", {
1671
+ method: "POST";
1672
+ body: zod.ZodObject<{
1673
+ id: zod.ZodString;
1674
+ }, "strip", zod.ZodTypeAny, {
1675
+ id: string;
1676
+ }, {
1677
+ id: string;
1678
+ }>;
1679
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
1680
+ session: {
1681
+ session: {
1682
+ id: string;
1683
+ userId: string;
1684
+ expiresAt: Date;
1685
+ ipAddress?: string | undefined;
1686
+ userAgent?: string | undefined;
1687
+ };
1688
+ user: {
1689
+ id: string;
1690
+ email: string;
1691
+ emailVerified: boolean;
1692
+ name: string;
1693
+ createdAt: Date;
1694
+ updatedAt: Date;
1695
+ image?: string | undefined;
1696
+ };
1697
+ };
1698
+ }>, better_call.EndpointOptions>[];
1699
+ }>): Promise<{
1700
+ status: boolean;
1701
+ }>;
1702
+ path: "/user/revoke-session";
1703
+ options: {
1704
+ method: "POST";
1705
+ body: zod.ZodObject<{
1706
+ id: zod.ZodString;
1707
+ }, "strip", zod.ZodTypeAny, {
1708
+ id: string;
1709
+ }, {
1710
+ id: string;
1711
+ }>;
1712
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
1713
+ session: {
1714
+ session: {
1715
+ id: string;
1716
+ userId: string;
1717
+ expiresAt: Date;
1718
+ ipAddress?: string | undefined;
1719
+ userAgent?: string | undefined;
1720
+ };
1721
+ user: {
1722
+ id: string;
1723
+ email: string;
1724
+ emailVerified: boolean;
1725
+ name: string;
1726
+ createdAt: Date;
1727
+ updatedAt: Date;
1728
+ image?: string | undefined;
1729
+ };
1730
+ };
1731
+ }>, better_call.EndpointOptions>[];
1732
+ };
1733
+ method: better_call.Method | better_call.Method[];
1734
+ headers: Headers;
1735
+ };
1736
+ revokeSessions: {
1737
+ (ctx_0?: better_call.Context<"/user/revoke-sessions", {
1738
+ method: "POST";
1739
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
1740
+ session: {
1741
+ session: {
1742
+ id: string;
1743
+ userId: string;
1744
+ expiresAt: Date;
1745
+ ipAddress?: string | undefined;
1746
+ userAgent?: string | undefined;
1747
+ };
1748
+ user: {
1749
+ id: string;
1750
+ email: string;
1751
+ emailVerified: boolean;
1752
+ name: string;
1753
+ createdAt: Date;
1754
+ updatedAt: Date;
1755
+ image?: string | undefined;
1756
+ };
1757
+ };
1758
+ }>, better_call.EndpointOptions>[];
1759
+ }> | undefined): Promise<{
1760
+ status: boolean;
1761
+ }>;
1762
+ path: "/user/revoke-sessions";
1763
+ options: {
1764
+ method: "POST";
1765
+ use: Endpoint<better_call.Handler<string, better_call.EndpointOptions, {
1766
+ session: {
1767
+ session: {
1768
+ id: string;
1769
+ userId: string;
1770
+ expiresAt: Date;
1771
+ ipAddress?: string | undefined;
1772
+ userAgent?: string | undefined;
1773
+ };
1774
+ user: {
1775
+ id: string;
1776
+ email: string;
1777
+ emailVerified: boolean;
1778
+ name: string;
1779
+ createdAt: Date;
1780
+ updatedAt: Date;
1781
+ image?: string | undefined;
1782
+ };
1783
+ };
1784
+ }>, better_call.EndpointOptions>[];
1785
+ };
1786
+ method: better_call.Method | better_call.Method[];
1787
+ headers: Headers;
1788
+ };
1435
1789
  }>;
1436
1790
  options: O;
1437
1791
  $infer: {
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { A as Auth, b as betterAuth } from './index-CPKWKAiy.js';
1
+ export { A as Auth, b as betterAuth } from './index-BqqlGo3a.js';
2
2
  import './internal-adapter-DXjewSmi.js';
3
3
  import 'kysely';
4
4
  import './index-CcxejJTH.js';