@better-auth/core 1.4.2-beta.5 → 1.4.3

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.
@@ -1,13 +1,13 @@
1
1
 
2
- > @better-auth/core@1.4.2-beta.5 build /home/runner/work/better-auth/better-auth/packages/core
2
+ > @better-auth/core@1.4.3 build /home/runner/work/better-auth/better-auth/packages/core
3
3
  > tsdown
4
4
 
5
- ℹ tsdown v0.16.6 powered by rolldown v1.0.0-beta.51
5
+ ℹ tsdown v0.16.5 powered by rolldown v1.0.0-beta.50
6
6
  ℹ Using tsdown config: /home/runner/work/better-auth/better-auth/packages/core/tsdown.config.ts
7
7
  ℹ entry: src/index.ts, src/db/index.ts, src/db/adapter/index.ts, src/async_hooks/index.ts, src/context/index.ts, src/env/index.ts, src/oauth2/index.ts, src/api/index.ts, src/social-providers/index.ts, src/utils/index.ts, src/error/index.ts
8
8
  ℹ tsconfig: tsconfig.json
9
9
  ℹ Build start
10
- ℹ dist/social-providers/index.mjs  78.27 kB │ gzip: 10.18 kB
10
+ ℹ dist/social-providers/index.mjs  79.87 kB │ gzip: 10.31 kB
11
11
  ℹ dist/db/index.mjs  1.58 kB │ gzip: 0.49 kB
12
12
  ℹ dist/api/index.mjs  0.83 kB │ gzip: 0.40 kB
13
13
  ℹ dist/context/index.mjs  0.74 kB │ gzip: 0.27 kB
@@ -18,25 +18,25 @@
18
18
  ℹ dist/utils/index.mjs  0.09 kB │ gzip: 0.09 kB
19
19
  ℹ dist/db/adapter/index.mjs  0.01 kB │ gzip: 0.03 kB
20
20
  ℹ dist/index.mjs  0.01 kB │ gzip: 0.03 kB
21
- ℹ dist/oauth2-DmgZmPEg.mjs  9.17 kB │ gzip: 2.13 kB
21
+ ℹ dist/oauth2-B2XPHgx5.mjs  9.19 kB │ gzip: 2.13 kB
22
22
  ℹ dist/env-DwlNAN_D.mjs  7.67 kB │ gzip: 2.54 kB
23
23
  ℹ dist/context-DgQ9XGBl.mjs  3.89 kB │ gzip: 1.00 kB
24
24
  ℹ dist/error-BhAKg8LX.mjs  1.77 kB │ gzip: 0.79 kB
25
25
  ℹ dist/async_hooks-BfRfbd1J.mjs  0.87 kB │ gzip: 0.46 kB
26
26
  ℹ dist/utils-C5EN75oV.mjs  0.13 kB │ gzip: 0.12 kB
27
- ℹ dist/social-providers/index.d.mts  3.78 kB │ gzip: 1.16 kB
27
+ ℹ dist/social-providers/index.d.mts  3.87 kB │ gzip: 1.19 kB
28
28
  ℹ dist/context/index.d.mts  3.05 kB │ gzip: 0.96 kB
29
29
  ℹ dist/error/index.d.mts  1.84 kB │ gzip: 0.72 kB
30
- ℹ dist/db/index.d.mts  1.01 kB │ gzip: 0.38 kB
31
- ℹ dist/index.d.mts  0.87 kB │ gzip: 0.34 kB
30
+ ℹ dist/db/index.d.mts  1.01 kB │ gzip: 0.37 kB
31
+ ℹ dist/index.d.mts  0.87 kB │ gzip: 0.33 kB
32
32
  ℹ dist/utils/index.d.mts  0.84 kB │ gzip: 0.43 kB
33
33
  ℹ dist/oauth2/index.d.mts  0.79 kB │ gzip: 0.30 kB
34
34
  ℹ dist/env/index.d.mts  0.59 kB │ gzip: 0.30 kB
35
- ℹ dist/db/adapter/index.d.mts  0.53 kB │ gzip: 0.25 kB
35
+ ℹ dist/db/adapter/index.d.mts  0.53 kB │ gzip: 0.24 kB
36
36
  ℹ dist/api/index.d.mts  0.29 kB │ gzip: 0.16 kB
37
37
  ℹ dist/async_hooks/index.d.mts  0.14 kB │ gzip: 0.10 kB
38
- ℹ dist/index-BlxTbL2l.d.mts 205.91 kB │ gzip: 32.51 kB
38
+ ℹ dist/index-CVLGS-cz.d.mts 208.78 kB │ gzip: 32.75 kB
39
39
  ℹ dist/index-CdubV7uy.d.mts  3.31 kB │ gzip: 1.11 kB
40
40
  ℹ dist/index-DgwIISs7.d.mts  0.24 kB │ gzip: 0.16 kB
41
- ℹ 31 files, total: 329.56 kB
42
- ✔ Build complete in 4411ms
41
+ ℹ 31 files, total: 334.14 kB
42
+ ✔ Build complete in 4707ms
@@ -1,3 +1,3 @@
1
- import { a as optionsMiddleware, i as createAuthMiddleware, n as AuthMiddleware, r as createAuthEndpoint, t as AuthEndpoint } from "../index-BlxTbL2l.mjs";
1
+ import { a as optionsMiddleware, i as createAuthMiddleware, n as AuthMiddleware, r as createAuthEndpoint, t as AuthEndpoint } from "../index-CVLGS-cz.mjs";
2
2
  import "../index-CdubV7uy.mjs";
3
3
  export { AuthEndpoint, AuthMiddleware, createAuthEndpoint, createAuthMiddleware, optionsMiddleware };
@@ -1,4 +1,4 @@
1
- import { Wn as DBAdapter, Yn as DBTransactionAdapter, f as AuthContext } from "../index-BlxTbL2l.mjs";
1
+ import { Qn as DBTransactionAdapter, f as AuthContext, qn as DBAdapter } from "../index-CVLGS-cz.mjs";
2
2
  import "../index-CdubV7uy.mjs";
3
3
  import { t as AsyncLocalStorage } from "../index-DgwIISs7.mjs";
4
4
  import { EndpointContext, InputContext } from "better-call";
@@ -1,3 +1,3 @@
1
- import { Gn as DBAdapterDebugLogOption, Hn as CleanedWhere, Jn as DBAdapterSchemaCreation, Kn as DBAdapterFactoryConfig, Qn as Where, Un as CustomAdapter, Wn as DBAdapter, Xn as JoinConfig, Yn as DBTransactionAdapter, Zn as JoinOption, qn as DBAdapterInstance } from "../../index-BlxTbL2l.mjs";
1
+ import { $n as JoinConfig, Gn as CleanedWhere, Jn as DBAdapterDebugLogOption, Kn as CustomAdapter, Qn as DBTransactionAdapter, Xn as DBAdapterInstance, Yn as DBAdapterFactoryConfig, Zn as DBAdapterSchemaCreation, er as JoinOption, qn as DBAdapter, tr as Where } from "../../index-CVLGS-cz.mjs";
2
2
  import "../../index-CdubV7uy.mjs";
3
3
  export { CleanedWhere, CustomAdapter, DBAdapter, DBAdapterDebugLogOption, DBAdapterFactoryConfig, DBAdapterInstance, DBAdapterSchemaCreation, DBTransactionAdapter, JoinConfig, JoinOption, Where };
@@ -1,3 +1,3 @@
1
- import { $n as AuthPluginSchema, Cr as SecondaryStorage, Sr as DBPrimitive, _r as BetterAuthDBSchema, ar as Verification, br as DBFieldType, cr as userSchema, dr as sessionSchema, er as BetterAuthDbSchema, fr as RateLimit, gr as BetterAuthPluginDBSchema, hr as accountSchema, ir as Primitive, lr as coreSchema, mr as Account, nr as FieldAttributeConfig, or as verificationSchema, pr as rateLimitSchema, rr as FieldType, sr as User, tr as FieldAttribute, ur as Session, vr as DBFieldAttribute, xr as DBPreservedModels, yr as DBFieldAttributeConfig } from "../index-BlxTbL2l.mjs";
1
+ import { Cr as DBFieldType, Er as SecondaryStorage, Sr as DBFieldAttributeConfig, Tr as DBPrimitive, _r as Account, ar as FieldAttributeConfig, br as BetterAuthDBSchema, cr as Verification, dr as userSchema, fr as coreSchema, gr as rateLimitSchema, hr as RateLimit, ir as FieldAttribute, lr as verificationSchema, mr as sessionSchema, nr as AuthPluginSchema, or as FieldType, pr as Session, rr as BetterAuthDbSchema, sr as Primitive, ur as User, vr as accountSchema, wr as DBPreservedModels, xr as DBFieldAttribute, yr as BetterAuthPluginDBSchema } from "../index-CVLGS-cz.mjs";
2
2
  import "../index-CdubV7uy.mjs";
3
3
  export { Account, AuthPluginSchema, BetterAuthDBSchema, BetterAuthDbSchema, BetterAuthPluginDBSchema, DBFieldAttribute, DBFieldAttributeConfig, DBFieldType, DBPreservedModels, DBPrimitive, FieldAttribute, FieldAttributeConfig, FieldType, Primitive, RateLimit, SecondaryStorage, Session, User, Verification, accountSchema, coreSchema, rateLimitSchema, sessionSchema, userSchema, verificationSchema };
@@ -1010,7 +1010,7 @@ declare function createAuthorizationURL({
1010
1010
  authorizationEndpoint: string;
1011
1011
  state: string;
1012
1012
  codeVerifier?: string | undefined;
1013
- scopes: string[];
1013
+ scopes?: string[] | undefined;
1014
1014
  claims?: string[] | undefined;
1015
1015
  duration?: string | undefined;
1016
1016
  prompt?: string | undefined;
@@ -4159,6 +4159,66 @@ declare const polar: (options: PolarOptions) => {
4159
4159
  options: PolarOptions;
4160
4160
  };
4161
4161
  //#endregion
4162
+ //#region src/social-providers/vercel.d.ts
4163
+ interface VercelProfile {
4164
+ sub: string;
4165
+ name?: string;
4166
+ preferred_username?: string;
4167
+ email?: string;
4168
+ email_verified?: boolean;
4169
+ picture?: string;
4170
+ }
4171
+ interface VercelOptions extends ProviderOptions<VercelProfile> {
4172
+ clientId: string;
4173
+ }
4174
+ declare const vercel: (options: VercelOptions) => {
4175
+ id: "vercel";
4176
+ name: string;
4177
+ createAuthorizationURL({
4178
+ state,
4179
+ scopes,
4180
+ codeVerifier,
4181
+ redirectURI
4182
+ }: {
4183
+ state: string;
4184
+ codeVerifier: string;
4185
+ scopes?: string[] | undefined;
4186
+ redirectURI: string;
4187
+ display?: string | undefined;
4188
+ loginHint?: string | undefined;
4189
+ }): Promise<URL>;
4190
+ validateAuthorizationCode: ({
4191
+ code,
4192
+ codeVerifier,
4193
+ redirectURI
4194
+ }: {
4195
+ code: string;
4196
+ redirectURI: string;
4197
+ codeVerifier?: string | undefined;
4198
+ deviceId?: string | undefined;
4199
+ }) => Promise<OAuth2Tokens>;
4200
+ getUserInfo(token: OAuth2Tokens & {
4201
+ user?: {
4202
+ name?: {
4203
+ firstName?: string;
4204
+ lastName?: string;
4205
+ };
4206
+ email?: string;
4207
+ } | undefined;
4208
+ }): Promise<{
4209
+ user: {
4210
+ id: string;
4211
+ name?: string;
4212
+ email?: string | null;
4213
+ image?: string;
4214
+ emailVerified: boolean;
4215
+ [key: string]: any;
4216
+ };
4217
+ data: any;
4218
+ } | null>;
4219
+ options: VercelOptions;
4220
+ };
4221
+ //#endregion
4162
4222
  //#region src/social-providers/index.d.ts
4163
4223
  declare const socialProviders: {
4164
4224
  apple: (options: AppleOptions) => {
@@ -5788,6 +5848,53 @@ declare const socialProviders: {
5788
5848
  } | null>;
5789
5849
  options: PolarOptions;
5790
5850
  };
5851
+ vercel: (options: VercelOptions) => {
5852
+ id: "vercel";
5853
+ name: string;
5854
+ createAuthorizationURL({
5855
+ state,
5856
+ scopes,
5857
+ codeVerifier,
5858
+ redirectURI
5859
+ }: {
5860
+ state: string;
5861
+ codeVerifier: string;
5862
+ scopes?: string[] | undefined;
5863
+ redirectURI: string;
5864
+ display?: string | undefined;
5865
+ loginHint?: string | undefined;
5866
+ }): Promise<URL>;
5867
+ validateAuthorizationCode: ({
5868
+ code,
5869
+ codeVerifier,
5870
+ redirectURI
5871
+ }: {
5872
+ code: string;
5873
+ redirectURI: string;
5874
+ codeVerifier?: string | undefined;
5875
+ deviceId?: string | undefined;
5876
+ }) => Promise<OAuth2Tokens>;
5877
+ getUserInfo(token: OAuth2Tokens & {
5878
+ user?: {
5879
+ name?: {
5880
+ firstName?: string;
5881
+ lastName?: string;
5882
+ };
5883
+ email?: string;
5884
+ } | undefined;
5885
+ }): Promise<{
5886
+ user: {
5887
+ id: string;
5888
+ name?: string;
5889
+ email?: string | null;
5890
+ image?: string;
5891
+ emailVerified: boolean;
5892
+ [key: string]: any;
5893
+ };
5894
+ data: any;
5895
+ } | null>;
5896
+ options: VercelOptions;
5897
+ };
5791
5898
  };
5792
5899
  declare const socialProviderList: ["github", ...(keyof typeof socialProviders)[]];
5793
5900
  declare const SocialProviderListEnum: z.ZodType<SocialProviderList[number] | (string & {})>;
@@ -6111,6 +6218,19 @@ type BetterAuthAdvancedOptions = {
6111
6218
  */
6112
6219
  generateId?: GenerateIdFn | false | "serial" | "uuid";
6113
6220
  } | undefined;
6221
+ /**
6222
+ * Trusted proxy headers
6223
+ *
6224
+ * - `x-forwarded-host`
6225
+ * - `x-forwarded-proto`
6226
+ *
6227
+ * If set to `true` and no `baseURL` option is provided, we will use the headers to infer the
6228
+ * base URL.
6229
+ *
6230
+ * ⚠︎ This may expose your application to security vulnerabilities if not
6231
+ * used correctly. Please use this with caution.
6232
+ */
6233
+ trustedProxyHeaders?: boolean | undefined;
6114
6234
  };
6115
6235
  type BetterAuthOptions = {
6116
6236
  /**
@@ -7353,4 +7473,4 @@ declare const createAuthEndpoint: <Path extends string, Opts extends EndpointOpt
7353
7473
  type AuthEndpoint = ReturnType<typeof createAuthEndpoint>;
7354
7474
  type AuthMiddleware = ReturnType<typeof createAuthMiddleware>;
7355
7475
  //#endregion
7356
- export { PronounOption as $, AuthPluginSchema as $n, MicrosoftOptions as $t, PayPalOptions as A, validateToken as An, kick as At, line as B, OAuthProvider as Bn, SpotifyOptions as Bt, SocialProviderListEnum as C, apple as Cn, SecondaryStorage as Cr, linkedin as Ct, PolarOptions as D, BetterAuthCookies as Dn, linear as Dt, socialProviders as E, LiteralUnion as En, LinearUser as Et, PaybinProfile as F, createAuthorizationURL as Fn, TwitterProfile as Ft, KakaoProfile as G, DBAdapterDebugLogOption as Gn, slack as Gt, NaverProfile as H, CleanedWhere as Hn, spotify as Ht, paybin as I, clientCredentialsToken as In, twitter as It, NotionProfile as J, DBAdapterSchemaCreation as Jn, huggingface as Jt, kakao as K, DBAdapterFactoryConfig as Kn, HuggingFaceOptions as Kt, LineIdTokenPayload as L, createClientCredentialsTokenRequest as Ln, TwitchOptions as Lt, PayPalTokenResponse as M, getOAuth2Tokens as Mn, DropboxProfile as Mt, paypal as N, createRefreshAccessTokenRequest as Nn, dropbox as Nt, PolarProfile as O, createAuthorizationCodeRequest as On, KickOptions as Ot, PaybinOptions as P, refreshAccessToken as Pn, TwitterOption as Pt, PhoneNumber as Q, Where as Qn, MicrosoftEntraIDProfile as Qt, LineOptions as R, OAuth2Tokens as Rn, TwitchProfile as Rt, SocialProviderList as S, AppleProfile as Sn, DBPrimitive as Sr, LinkedInProfile as St, socialProviderList as T, LiteralString as Tn, LinearProfile as Tt, naver as U, CustomAdapter as Un, SlackOptions as Ut, NaverOptions as V, ProviderOptions as Vn, SpotifyProfile as Vt, KakaoOptions as W, DBAdapter as Wn, SlackProfile as Wt, AccountStatus as X, JoinConfig as Xn, GoogleProfile as Xt, notion as Y, DBTransactionAdapter as Yn, GoogleOptions as Yt, LoginType as Z, JoinOption as Zn, google as Zt, BetterAuthRateLimitOptions as _, AtlassianOptions as _n, BetterAuthDBSchema as _r, tiktok as _t, optionsMiddleware as a, FigmaProfile as an, Verification as ar, vk as at, HookEndpointContext as b, AppleNonConformUser as bn, DBFieldType as br, gitlab as bt, BetterAuthClientPlugin as c, FacebookProfile as cn, userSchema as cr, salesforce as ct, ClientStore as d, DiscordProfile as dn, sessionSchema as dr, roblox as dt, microsoft as en, BetterAuthDbSchema as er, ZoomOptions as et, AuthContext as f, discord as fn, RateLimit as fr, RedditOptions as ft, BetterAuthOptions as g, getCognitoPublicKey as gn, BetterAuthPluginDBSchema as gr, TiktokProfile as gt, BetterAuthAdvancedOptions as h, cognito as hn, accountSchema as hr, TiktokOptions as ht, createAuthMiddleware as i, FigmaOptions as in, Primitive$1 as ir, VkProfile as it, PayPalProfile as j, generateCodeChallenge as jn, DropboxOptions as jt, polar as k, validateAuthorizationCode as kn, KickProfile as kt, ClientAtomListener as l, facebook as ln, coreSchema as lr, RobloxOptions as lt, InternalAdapter as m, CognitoProfile as mn, Account as mr, reddit as mt, AuthMiddleware as n, GithubProfile as nn, FieldAttributeConfig as nr, zoom as nt, StandardSchemaV1$1 as o, figma as on, verificationSchema as or, SalesforceOptions as ot, GenericEndpointContext as p, CognitoOptions as pn, rateLimitSchema as pr, RedditProfile as pt, NotionOptions as q, DBAdapterInstance as qn, HuggingFaceProfile as qt, createAuthEndpoint as r, github as rn, FieldType as rr, VkOption as rt, BetterAuthClientOptions as s, FacebookOptions as sn, User as sr, SalesforceProfile as st, AuthEndpoint as t, GithubOptions as tn, FieldAttribute as tr, ZoomProfile as tt, ClientFetchOption as u, DiscordOptions as un, Session as ur, RobloxProfile as ut, GenerateIdFn as v, AtlassianProfile as vn, DBFieldAttribute as vr, GitlabOptions as vt, SocialProviders as w, getApplePublicKey as wn, LinearOptions as wt, SocialProvider as x, AppleOptions as xn, DBPreservedModels as xr, LinkedInOptions as xt, BetterAuthPlugin as y, atlassian as yn, DBFieldAttributeConfig as yr, GitlabProfile as yt, LineUserInfo as z, OAuth2UserInfo as zn, twitch as zt };
7476
+ export { AccountStatus as $, JoinConfig as $n, GoogleProfile as $t, PolarOptions as A, BetterAuthCookies as An, linear as At, LineIdTokenPayload as B, createClientCredentialsTokenRequest as Bn, TwitchOptions as Bt, SocialProviderListEnum as C, AppleNonConformUser as Cn, DBFieldType as Cr, gitlab as Ct, VercelOptions as D, getApplePublicKey as Dn, LinearOptions as Dt, socialProviders as E, apple as En, SecondaryStorage as Er, linkedin as Et, PayPalTokenResponse as F, getOAuth2Tokens as Fn, DropboxProfile as Ft, NaverProfile as G, CleanedWhere as Gn, spotify as Gt, LineUserInfo as H, OAuth2UserInfo as Hn, twitch as Ht, paypal as I, createRefreshAccessTokenRequest as In, dropbox as It, KakaoProfile as J, DBAdapterDebugLogOption as Jn, slack as Jt, naver as K, CustomAdapter as Kn, SlackOptions as Kt, PaybinOptions as L, refreshAccessToken as Ln, TwitterOption as Lt, polar as M, validateAuthorizationCode as Mn, KickProfile as Mt, PayPalOptions as N, validateToken as Nn, kick as Nt, VercelProfile as O, LiteralString as On, LinearProfile as Ot, PayPalProfile as P, generateCodeChallenge as Pn, DropboxOptions as Pt, notion as Q, DBTransactionAdapter as Qn, GoogleOptions as Qt, PaybinProfile as R, createAuthorizationURL as Rn, TwitterProfile as Rt, SocialProviderList as S, atlassian as Sn, DBFieldAttributeConfig as Sr, GitlabProfile as St, socialProviderList as T, AppleProfile as Tn, DBPrimitive as Tr, LinkedInProfile as Tt, line as U, OAuthProvider as Un, SpotifyOptions as Ut, LineOptions as V, OAuth2Tokens as Vn, TwitchProfile as Vt, NaverOptions as W, ProviderOptions as Wn, SpotifyProfile as Wt, NotionOptions as X, DBAdapterInstance as Xn, HuggingFaceProfile as Xt, kakao as Y, DBAdapterFactoryConfig as Yn, HuggingFaceOptions as Yt, NotionProfile as Z, DBAdapterSchemaCreation as Zn, huggingface as Zt, BetterAuthRateLimitOptions as _, CognitoProfile as _n, Account as _r, reddit as _t, optionsMiddleware as a, GithubProfile as an, FieldAttributeConfig as ar, zoom as at, HookEndpointContext as b, AtlassianOptions as bn, BetterAuthDBSchema as br, tiktok as bt, BetterAuthClientPlugin as c, FigmaProfile as cn, Verification as cr, vk as ct, ClientStore as d, FacebookProfile as dn, userSchema as dr, salesforce as dt, google as en, JoinOption as er, LoginType as et, AuthContext as f, facebook as fn, coreSchema as fr, RobloxOptions as ft, BetterAuthOptions as g, CognitoOptions as gn, rateLimitSchema as gr, RedditProfile as gt, BetterAuthAdvancedOptions as h, discord as hn, RateLimit as hr, RedditOptions as ht, createAuthMiddleware as i, GithubOptions as in, FieldAttribute as ir, ZoomProfile as it, PolarProfile as j, createAuthorizationCodeRequest as jn, KickOptions as jt, vercel as k, LiteralUnion as kn, LinearUser as kt, ClientAtomListener as l, figma as ln, verificationSchema as lr, SalesforceOptions as lt, InternalAdapter as m, DiscordProfile as mn, sessionSchema as mr, roblox as mt, AuthMiddleware as n, MicrosoftOptions as nn, AuthPluginSchema as nr, PronounOption as nt, StandardSchemaV1$1 as o, github as on, FieldType as or, VkOption as ot, GenericEndpointContext as p, DiscordOptions as pn, Session as pr, RobloxProfile as pt, KakaoOptions as q, DBAdapter as qn, SlackProfile as qt, createAuthEndpoint as r, microsoft as rn, BetterAuthDbSchema as rr, ZoomOptions as rt, BetterAuthClientOptions as s, FigmaOptions as sn, Primitive$1 as sr, VkProfile as st, AuthEndpoint as t, MicrosoftEntraIDProfile as tn, Where as tr, PhoneNumber as tt, ClientFetchOption as u, FacebookOptions as un, User as ur, SalesforceProfile as ut, GenerateIdFn as v, cognito as vn, accountSchema as vr, TiktokOptions as vt, SocialProviders as w, AppleOptions as wn, DBPreservedModels as wr, LinkedInOptions as wt, SocialProvider as x, AtlassianProfile as xn, DBFieldAttribute as xr, GitlabOptions as xt, BetterAuthPlugin as y, getCognitoPublicKey as yn, BetterAuthPluginDBSchema as yr, TiktokProfile as yt, paybin as z, clientCredentialsToken as zn, twitter as zt };
package/dist/index.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { Dn as BetterAuthCookies, En as LiteralUnion, Tn as LiteralString, _ as BetterAuthRateLimitOptions, b as HookEndpointContext, c as BetterAuthClientPlugin, d as ClientStore, f as AuthContext, g as BetterAuthOptions, h as BetterAuthAdvancedOptions, l as ClientAtomListener, m as InternalAdapter, o as StandardSchemaV1, p as GenericEndpointContext, s as BetterAuthClientOptions, u as ClientFetchOption, v as GenerateIdFn, y as BetterAuthPlugin } from "./index-BlxTbL2l.mjs";
1
+ import { An as BetterAuthCookies, On as LiteralString, _ as BetterAuthRateLimitOptions, b as HookEndpointContext, c as BetterAuthClientPlugin, d as ClientStore, f as AuthContext, g as BetterAuthOptions, h as BetterAuthAdvancedOptions, kn as LiteralUnion, l as ClientAtomListener, m as InternalAdapter, o as StandardSchemaV1, p as GenericEndpointContext, s as BetterAuthClientOptions, u as ClientFetchOption, v as GenerateIdFn, y as BetterAuthPlugin } from "./index-CVLGS-cz.mjs";
2
2
  import "./index-CdubV7uy.mjs";
3
3
  export { AuthContext, BetterAuthAdvancedOptions, BetterAuthClientOptions, BetterAuthClientPlugin, BetterAuthCookies, BetterAuthOptions, BetterAuthPlugin, BetterAuthRateLimitOptions, ClientAtomListener, ClientFetchOption, ClientStore, GenerateIdFn, GenericEndpointContext, HookEndpointContext, InternalAdapter, LiteralString, LiteralUnion, StandardSchemaV1 };
@@ -1,3 +1,3 @@
1
- import { An as validateToken, Bn as OAuthProvider, Fn as createAuthorizationURL, In as clientCredentialsToken, Ln as createClientCredentialsTokenRequest, Mn as getOAuth2Tokens, Nn as createRefreshAccessTokenRequest, On as createAuthorizationCodeRequest, Pn as refreshAccessToken, Rn as OAuth2Tokens, Vn as ProviderOptions, jn as generateCodeChallenge, kn as validateAuthorizationCode, zn as OAuth2UserInfo } from "../index-BlxTbL2l.mjs";
1
+ import { Bn as createClientCredentialsTokenRequest, Fn as getOAuth2Tokens, Hn as OAuth2UserInfo, In as createRefreshAccessTokenRequest, Ln as refreshAccessToken, Mn as validateAuthorizationCode, Nn as validateToken, Pn as generateCodeChallenge, Rn as createAuthorizationURL, Un as OAuthProvider, Vn as OAuth2Tokens, Wn as ProviderOptions, jn as createAuthorizationCodeRequest, zn as clientCredentialsToken } from "../index-CVLGS-cz.mjs";
2
2
  import "../index-CdubV7uy.mjs";
3
3
  export { OAuth2Tokens, OAuth2UserInfo, OAuthProvider, ProviderOptions, clientCredentialsToken, createAuthorizationCodeRequest, createAuthorizationURL, createClientCredentialsTokenRequest, createRefreshAccessTokenRequest, generateCodeChallenge, getOAuth2Tokens, refreshAccessToken, validateAuthorizationCode, validateToken };
@@ -1,3 +1,3 @@
1
- import { a as refreshAccessToken, c as getOAuth2Tokens, i as createRefreshAccessTokenRequest, l as clientCredentialsToken, n as validateAuthorizationCode, o as createAuthorizationURL, r as validateToken, s as generateCodeChallenge, t as createAuthorizationCodeRequest, u as createClientCredentialsTokenRequest } from "../oauth2-DmgZmPEg.mjs";
1
+ import { a as refreshAccessToken, c as getOAuth2Tokens, i as createRefreshAccessTokenRequest, l as clientCredentialsToken, n as validateAuthorizationCode, o as createAuthorizationURL, r as validateToken, s as generateCodeChallenge, t as createAuthorizationCodeRequest, u as createClientCredentialsTokenRequest } from "../oauth2-B2XPHgx5.mjs";
2
2
 
3
3
  export { clientCredentialsToken, createAuthorizationCodeRequest, createAuthorizationURL, createClientCredentialsTokenRequest, createRefreshAccessTokenRequest, generateCodeChallenge, getOAuth2Tokens, refreshAccessToken, validateAuthorizationCode, validateToken };
@@ -83,7 +83,7 @@ async function createAuthorizationURL({ id, options, authorizationEndpoint, stat
83
83
  const primaryClientId = Array.isArray(options.clientId) ? options.clientId[0] : options.clientId;
84
84
  url.searchParams.set("client_id", primaryClientId);
85
85
  url.searchParams.set("state", state);
86
- url.searchParams.set("scope", scopes.join(scopeJoiner || " "));
86
+ if (scopes) url.searchParams.set("scope", scopes.join(scopeJoiner || " "));
87
87
  url.searchParams.set("redirect_uri", options.redirectURI || redirectURI);
88
88
  duration && url.searchParams.set("duration", duration);
89
89
  display && url.searchParams.set("display", display);
@@ -1,3 +1,3 @@
1
- import { $ as PronounOption, $t as MicrosoftOptions, A as PayPalOptions, At as kick, B as line, Bt as SpotifyOptions, C as SocialProviderListEnum, Cn as apple, Ct as linkedin, D as PolarOptions, Dt as linear, E as socialProviders, Et as LinearUser, F as PaybinProfile, Ft as TwitterProfile, G as KakaoProfile, Gt as slack, H as NaverProfile, Ht as spotify, I as paybin, It as twitter, J as NotionProfile, Jt as huggingface, K as kakao, Kt as HuggingFaceOptions, L as LineIdTokenPayload, Lt as TwitchOptions, M as PayPalTokenResponse, Mt as DropboxProfile, N as paypal, Nt as dropbox, O as PolarProfile, Ot as KickOptions, P as PaybinOptions, Pt as TwitterOption, Q as PhoneNumber, Qt as MicrosoftEntraIDProfile, R as LineOptions, Rt as TwitchProfile, S as SocialProviderList, Sn as AppleProfile, St as LinkedInProfile, T as socialProviderList, Tt as LinearProfile, U as naver, Ut as SlackOptions, V as NaverOptions, Vt as SpotifyProfile, W as KakaoOptions, Wt as SlackProfile, X as AccountStatus, Xt as GoogleProfile, Y as notion, Yt as GoogleOptions, Z as LoginType, Zt as google, _n as AtlassianOptions, _t as tiktok, an as FigmaProfile, at as vk, bn as AppleNonConformUser, bt as gitlab, cn as FacebookProfile, ct as salesforce, dn as DiscordProfile, dt as roblox, en as microsoft, et as ZoomOptions, fn as discord, ft as RedditOptions, gn as getCognitoPublicKey, gt as TiktokProfile, hn as cognito, ht as TiktokOptions, in as FigmaOptions, it as VkProfile, j as PayPalProfile, jt as DropboxOptions, k as polar, kt as KickProfile, ln as facebook, lt as RobloxOptions, mn as CognitoProfile, mt as reddit, nn as GithubProfile, nt as zoom, on as figma, ot as SalesforceOptions, pn as CognitoOptions, pt as RedditProfile, q as NotionOptions, qt as HuggingFaceProfile, rn as github, rt as VkOption, sn as FacebookOptions, st as SalesforceProfile, tn as GithubOptions, tt as ZoomProfile, un as DiscordOptions, ut as RobloxProfile, vn as AtlassianProfile, vt as GitlabOptions, w as SocialProviders, wn as getApplePublicKey, wt as LinearOptions, x as SocialProvider, xn as AppleOptions, xt as LinkedInOptions, yn as atlassian, yt as GitlabProfile, z as LineUserInfo, zt as twitch } from "../index-BlxTbL2l.mjs";
1
+ import { $ as AccountStatus, $t as GoogleProfile, A as PolarOptions, At as linear, B as LineIdTokenPayload, Bt as TwitchOptions, C as SocialProviderListEnum, Cn as AppleNonConformUser, Ct as gitlab, D as VercelOptions, Dn as getApplePublicKey, Dt as LinearOptions, E as socialProviders, En as apple, Et as linkedin, F as PayPalTokenResponse, Ft as DropboxProfile, G as NaverProfile, Gt as spotify, H as LineUserInfo, Ht as twitch, I as paypal, It as dropbox, J as KakaoProfile, Jt as slack, K as naver, Kt as SlackOptions, L as PaybinOptions, Lt as TwitterOption, M as polar, Mt as KickProfile, N as PayPalOptions, Nt as kick, O as VercelProfile, Ot as LinearProfile, P as PayPalProfile, Pt as DropboxOptions, Q as notion, Qt as GoogleOptions, R as PaybinProfile, Rt as TwitterProfile, S as SocialProviderList, Sn as atlassian, St as GitlabProfile, T as socialProviderList, Tn as AppleProfile, Tt as LinkedInProfile, U as line, Ut as SpotifyOptions, V as LineOptions, Vt as TwitchProfile, W as NaverOptions, Wt as SpotifyProfile, X as NotionOptions, Xt as HuggingFaceProfile, Y as kakao, Yt as HuggingFaceOptions, Z as NotionProfile, Zt as huggingface, _n as CognitoProfile, _t as reddit, an as GithubProfile, at as zoom, bn as AtlassianOptions, bt as tiktok, cn as FigmaProfile, ct as vk, dn as FacebookProfile, dt as salesforce, en as google, et as LoginType, fn as facebook, ft as RobloxOptions, gn as CognitoOptions, gt as RedditProfile, hn as discord, ht as RedditOptions, in as GithubOptions, it as ZoomProfile, j as PolarProfile, jt as KickOptions, k as vercel, kt as LinearUser, ln as figma, lt as SalesforceOptions, mn as DiscordProfile, mt as roblox, nn as MicrosoftOptions, nt as PronounOption, on as github, ot as VkOption, pn as DiscordOptions, pt as RobloxProfile, q as KakaoOptions, qt as SlackProfile, rn as microsoft, rt as ZoomOptions, sn as FigmaOptions, st as VkProfile, tn as MicrosoftEntraIDProfile, tt as PhoneNumber, un as FacebookOptions, ut as SalesforceProfile, vn as cognito, vt as TiktokOptions, w as SocialProviders, wn as AppleOptions, wt as LinkedInOptions, x as SocialProvider, xn as AtlassianProfile, xt as GitlabOptions, yn as getCognitoPublicKey, yt as TiktokProfile, z as paybin, zt as twitter } from "../index-CVLGS-cz.mjs";
2
2
  import "../index-CdubV7uy.mjs";
3
- export { AccountStatus, AppleNonConformUser, AppleOptions, AppleProfile, AtlassianOptions, AtlassianProfile, CognitoOptions, CognitoProfile, DiscordOptions, DiscordProfile, DropboxOptions, DropboxProfile, FacebookOptions, FacebookProfile, FigmaOptions, FigmaProfile, GithubOptions, GithubProfile, GitlabOptions, GitlabProfile, GoogleOptions, GoogleProfile, HuggingFaceOptions, HuggingFaceProfile, KakaoOptions, KakaoProfile, KickOptions, KickProfile, LineIdTokenPayload, LineOptions, LineUserInfo, LinearOptions, LinearProfile, LinearUser, LinkedInOptions, LinkedInProfile, LoginType, MicrosoftEntraIDProfile, MicrosoftOptions, NaverOptions, NaverProfile, NotionOptions, NotionProfile, PayPalOptions, PayPalProfile, PayPalTokenResponse, PaybinOptions, PaybinProfile, PhoneNumber, PolarOptions, PolarProfile, PronounOption, RedditOptions, RedditProfile, RobloxOptions, RobloxProfile, SalesforceOptions, SalesforceProfile, SlackOptions, SlackProfile, SocialProvider, SocialProviderList, SocialProviderListEnum, SocialProviders, SpotifyOptions, SpotifyProfile, TiktokOptions, TiktokProfile, TwitchOptions, TwitchProfile, TwitterOption, TwitterProfile, VkOption, VkProfile, ZoomOptions, ZoomProfile, apple, atlassian, cognito, discord, dropbox, facebook, figma, getApplePublicKey, getCognitoPublicKey, github, gitlab, google, huggingface, kakao, kick, line, linear, linkedin, microsoft, naver, notion, paybin, paypal, polar, reddit, roblox, salesforce, slack, socialProviderList, socialProviders, spotify, tiktok, twitch, twitter, vk, zoom };
3
+ export { AccountStatus, AppleNonConformUser, AppleOptions, AppleProfile, AtlassianOptions, AtlassianProfile, CognitoOptions, CognitoProfile, DiscordOptions, DiscordProfile, DropboxOptions, DropboxProfile, FacebookOptions, FacebookProfile, FigmaOptions, FigmaProfile, GithubOptions, GithubProfile, GitlabOptions, GitlabProfile, GoogleOptions, GoogleProfile, HuggingFaceOptions, HuggingFaceProfile, KakaoOptions, KakaoProfile, KickOptions, KickProfile, LineIdTokenPayload, LineOptions, LineUserInfo, LinearOptions, LinearProfile, LinearUser, LinkedInOptions, LinkedInProfile, LoginType, MicrosoftEntraIDProfile, MicrosoftOptions, NaverOptions, NaverProfile, NotionOptions, NotionProfile, PayPalOptions, PayPalProfile, PayPalTokenResponse, PaybinOptions, PaybinProfile, PhoneNumber, PolarOptions, PolarProfile, PronounOption, RedditOptions, RedditProfile, RobloxOptions, RobloxProfile, SalesforceOptions, SalesforceProfile, SlackOptions, SlackProfile, SocialProvider, SocialProviderList, SocialProviderListEnum, SocialProviders, SpotifyOptions, SpotifyProfile, TiktokOptions, TiktokProfile, TwitchOptions, TwitchProfile, TwitterOption, TwitterProfile, VercelOptions, VercelProfile, VkOption, VkProfile, ZoomOptions, ZoomProfile, apple, atlassian, cognito, discord, dropbox, facebook, figma, getApplePublicKey, getCognitoPublicKey, github, gitlab, google, huggingface, kakao, kick, line, linear, linkedin, microsoft, naver, notion, paybin, paypal, polar, reddit, roblox, salesforce, slack, socialProviderList, socialProviders, spotify, tiktok, twitch, twitter, vercel, vk, zoom };
@@ -1,5 +1,5 @@
1
1
  import { i as logger } from "../env-DwlNAN_D.mjs";
2
- import { a as refreshAccessToken, c as getOAuth2Tokens, n as validateAuthorizationCode, o as createAuthorizationURL, s as generateCodeChallenge } from "../oauth2-DmgZmPEg.mjs";
2
+ import { a as refreshAccessToken, c as getOAuth2Tokens, n as validateAuthorizationCode, o as createAuthorizationURL, s as generateCodeChallenge } from "../oauth2-B2XPHgx5.mjs";
3
3
  import "../utils-C5EN75oV.mjs";
4
4
  import { t as BetterAuthError } from "../error-BhAKg8LX.mjs";
5
5
  import * as z from "zod";
@@ -2341,6 +2341,60 @@ const twitter = (options) => {
2341
2341
  };
2342
2342
  };
2343
2343
 
2344
+ //#endregion
2345
+ //#region src/social-providers/vercel.ts
2346
+ const vercel = (options) => {
2347
+ return {
2348
+ id: "vercel",
2349
+ name: "Vercel",
2350
+ createAuthorizationURL({ state, scopes, codeVerifier, redirectURI }) {
2351
+ if (!codeVerifier) throw new BetterAuthError("codeVerifier is required for Vercel");
2352
+ let _scopes = void 0;
2353
+ if (options.scope !== void 0 || scopes !== void 0) {
2354
+ _scopes = [];
2355
+ if (options.scope) _scopes.push(...options.scope);
2356
+ if (scopes) _scopes.push(...scopes);
2357
+ }
2358
+ return createAuthorizationURL({
2359
+ id: "vercel",
2360
+ options,
2361
+ authorizationEndpoint: "https://vercel.com/oauth/authorize",
2362
+ scopes: _scopes,
2363
+ state,
2364
+ codeVerifier,
2365
+ redirectURI
2366
+ });
2367
+ },
2368
+ validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {
2369
+ return validateAuthorizationCode({
2370
+ code,
2371
+ codeVerifier,
2372
+ redirectURI,
2373
+ options,
2374
+ tokenEndpoint: "https://api.vercel.com/login/oauth/token"
2375
+ });
2376
+ },
2377
+ async getUserInfo(token) {
2378
+ if (options.getUserInfo) return options.getUserInfo(token);
2379
+ const { data: profile, error } = await betterFetch("https://api.vercel.com/login/oauth/userinfo", { headers: { Authorization: `Bearer ${token.accessToken}` } });
2380
+ if (error || !profile) return null;
2381
+ const userMap = await options.mapProfileToUser?.(profile);
2382
+ return {
2383
+ user: {
2384
+ id: profile.sub,
2385
+ name: profile.name ?? profile.preferred_username,
2386
+ email: profile.email,
2387
+ image: profile.picture,
2388
+ emailVerified: profile.email_verified ?? false,
2389
+ ...userMap
2390
+ },
2391
+ data: profile
2392
+ };
2393
+ },
2394
+ options
2395
+ };
2396
+ };
2397
+
2344
2398
  //#endregion
2345
2399
  //#region src/social-providers/vk.ts
2346
2400
  const vk = (options) => {
@@ -2516,10 +2570,11 @@ const socialProviders = {
2516
2570
  line,
2517
2571
  paybin,
2518
2572
  paypal,
2519
- polar
2573
+ polar,
2574
+ vercel
2520
2575
  };
2521
2576
  const socialProviderList = Object.keys(socialProviders);
2522
2577
  const SocialProviderListEnum = z.enum(socialProviderList).or(z.string());
2523
2578
 
2524
2579
  //#endregion
2525
- export { SocialProviderListEnum, apple, atlassian, cognito, discord, dropbox, facebook, figma, getApplePublicKey, getCognitoPublicKey, github, gitlab, google, huggingface, kakao, kick, line, linear, linkedin, microsoft, naver, notion, paybin, paypal, polar, reddit, roblox, salesforce, slack, socialProviderList, socialProviders, spotify, tiktok, twitch, twitter, vk, zoom };
2580
+ export { SocialProviderListEnum, apple, atlassian, cognito, discord, dropbox, facebook, figma, getApplePublicKey, getCognitoPublicKey, github, gitlab, google, huggingface, kakao, kick, line, linear, linkedin, microsoft, naver, notion, paybin, paypal, polar, reddit, roblox, salesforce, slack, socialProviderList, socialProviders, spotify, tiktok, twitch, twitter, vercel, vk, zoom };
package/package.json CHANGED
@@ -1,13 +1,8 @@
1
1
  {
2
2
  "name": "@better-auth/core",
3
- "version": "1.4.2-beta.5",
3
+ "version": "1.4.3",
4
4
  "description": "The most comprehensive authentication framework for TypeScript.",
5
5
  "type": "module",
6
- "repository": {
7
- "type": "git",
8
- "url": "https://github.com/better-auth/better-auth",
9
- "directory": "packages/core"
10
- },
11
6
  "main": "./dist/index.mjs",
12
7
  "module": "./dist/index.mjs",
13
8
  "exports": {
@@ -113,7 +108,7 @@
113
108
  "jose": "^6.1.0",
114
109
  "kysely": "^0.28.5",
115
110
  "nanostores": "^1.0.1",
116
- "tsdown": "^0.16.6"
111
+ "tsdown": "^0.16.0"
117
112
  },
118
113
  "dependencies": {
119
114
  "@standard-schema/spec": "^1.0.0",
@@ -27,7 +27,7 @@ export async function createAuthorizationURL({
27
27
  authorizationEndpoint: string;
28
28
  state: string;
29
29
  codeVerifier?: string | undefined;
30
- scopes: string[];
30
+ scopes?: string[] | undefined;
31
31
  claims?: string[] | undefined;
32
32
  duration?: string | undefined;
33
33
  prompt?: string | undefined;
@@ -47,7 +47,9 @@ export async function createAuthorizationURL({
47
47
  : options.clientId;
48
48
  url.searchParams.set("client_id", primaryClientId);
49
49
  url.searchParams.set("state", state);
50
- url.searchParams.set("scope", scopes.join(scopeJoiner || " "));
50
+ if (scopes) {
51
+ url.searchParams.set("scope", scopes.join(scopeJoiner || " "));
52
+ }
51
53
  url.searchParams.set("redirect_uri", options.redirectURI || redirectURI);
52
54
  duration && url.searchParams.set("duration", duration);
53
55
  display && url.searchParams.set("display", display);
@@ -29,6 +29,7 @@ import { spotify } from "./spotify";
29
29
  import { tiktok } from "./tiktok";
30
30
  import { twitch } from "./twitch";
31
31
  import { twitter } from "./twitter";
32
+ import { vercel } from "./vercel";
32
33
  import { vk } from "./vk";
33
34
  import { zoom } from "./zoom";
34
35
 
@@ -65,6 +66,7 @@ export const socialProviders = {
65
66
  paybin,
66
67
  paypal,
67
68
  polar,
69
+ vercel,
68
70
  };
69
71
 
70
72
  export const socialProviderList = Object.keys(socialProviders) as [
@@ -118,6 +120,7 @@ export * from "./spotify";
118
120
  export * from "./tiktok";
119
121
  export * from "./twitch";
120
122
  export * from "./twitter";
123
+ export * from "./vercel";
121
124
  export * from "./vk";
122
125
  export * from "./zoom";
123
126
 
@@ -0,0 +1,87 @@
1
+ import { betterFetch } from "@better-fetch/fetch";
2
+ import { BetterAuthError } from "../error";
3
+ import type { OAuthProvider, ProviderOptions } from "../oauth2";
4
+ import { createAuthorizationURL, validateAuthorizationCode } from "../oauth2";
5
+
6
+ export interface VercelProfile {
7
+ sub: string;
8
+ name?: string;
9
+ preferred_username?: string;
10
+ email?: string;
11
+ email_verified?: boolean;
12
+ picture?: string;
13
+ }
14
+
15
+ export interface VercelOptions extends ProviderOptions<VercelProfile> {
16
+ clientId: string;
17
+ }
18
+
19
+ export const vercel = (options: VercelOptions) => {
20
+ return {
21
+ id: "vercel",
22
+ name: "Vercel",
23
+ createAuthorizationURL({ state, scopes, codeVerifier, redirectURI }) {
24
+ if (!codeVerifier) {
25
+ throw new BetterAuthError("codeVerifier is required for Vercel");
26
+ }
27
+
28
+ let _scopes: string[] | undefined = undefined;
29
+ if (options.scope !== undefined || scopes !== undefined) {
30
+ _scopes = [];
31
+ if (options.scope) _scopes.push(...options.scope);
32
+ if (scopes) _scopes.push(...scopes);
33
+ }
34
+
35
+ return createAuthorizationURL({
36
+ id: "vercel",
37
+ options,
38
+ authorizationEndpoint: "https://vercel.com/oauth/authorize",
39
+ scopes: _scopes,
40
+ state,
41
+ codeVerifier,
42
+ redirectURI,
43
+ });
44
+ },
45
+ validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {
46
+ return validateAuthorizationCode({
47
+ code,
48
+ codeVerifier,
49
+ redirectURI,
50
+ options,
51
+ tokenEndpoint: "https://api.vercel.com/login/oauth/token",
52
+ });
53
+ },
54
+ async getUserInfo(token) {
55
+ if (options.getUserInfo) {
56
+ return options.getUserInfo(token);
57
+ }
58
+
59
+ const { data: profile, error } = await betterFetch<VercelProfile>(
60
+ "https://api.vercel.com/login/oauth/userinfo",
61
+ {
62
+ headers: {
63
+ Authorization: `Bearer ${token.accessToken}`,
64
+ },
65
+ },
66
+ );
67
+
68
+ if (error || !profile) {
69
+ return null;
70
+ }
71
+
72
+ const userMap = await options.mapProfileToUser?.(profile);
73
+ return {
74
+ user: {
75
+ id: profile.sub,
76
+ name: profile.name ?? profile.preferred_username,
77
+ email: profile.email,
78
+ image: profile.picture,
79
+ emailVerified: profile.email_verified ?? false,
80
+ ...userMap,
81
+ },
82
+ data: profile,
83
+ };
84
+ },
85
+ options,
86
+ } satisfies OAuthProvider<VercelProfile>;
87
+ };
@@ -257,6 +257,20 @@ export type BetterAuthAdvancedOptions = {
257
257
  generateId?: GenerateIdFn | false | "serial" | "uuid";
258
258
  }
259
259
  | undefined;
260
+ /**
261
+ * Trusted proxy headers
262
+ *
263
+
264
+ * - `x-forwarded-host`
265
+ * - `x-forwarded-proto`
266
+ *
267
+ * If set to `true` and no `baseURL` option is provided, we will use the headers to infer the
268
+ * base URL.
269
+ *
270
+ * ⚠︎ This may expose your application to security vulnerabilities if not
271
+ * used correctly. Please use this with caution.
272
+ */
273
+ trustedProxyHeaders?: boolean | undefined;
260
274
  };
261
275
 
262
276
  export type BetterAuthOptions = {