@better-auth/core 1.7.0-beta.2 → 1.7.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/dist/context/global.mjs +1 -1
  2. package/dist/db/adapter/factory.mjs +64 -3
  3. package/dist/db/adapter/index.d.mts +35 -1
  4. package/dist/db/adapter/types.d.mts +1 -1
  5. package/dist/db/type.d.mts +12 -0
  6. package/dist/error/codes.d.mts +1 -0
  7. package/dist/error/codes.mjs +1 -0
  8. package/dist/instrumentation/tracer.mjs +1 -1
  9. package/dist/oauth2/authorization-params.d.mts +12 -0
  10. package/dist/oauth2/authorization-params.mjs +12 -0
  11. package/dist/oauth2/basic-credentials.d.mts +30 -0
  12. package/dist/oauth2/basic-credentials.mjs +64 -0
  13. package/dist/oauth2/client-assertion.d.mts +38 -22
  14. package/dist/oauth2/client-assertion.mjs +63 -28
  15. package/dist/oauth2/client-credentials-token.d.mts +19 -40
  16. package/dist/oauth2/client-credentials-token.mjs +18 -29
  17. package/dist/oauth2/create-authorization-url.d.mts +9 -1
  18. package/dist/oauth2/create-authorization-url.mjs +23 -5
  19. package/dist/oauth2/index.d.mts +10 -7
  20. package/dist/oauth2/index.mjs +9 -7
  21. package/dist/oauth2/oauth-provider.d.mts +21 -2
  22. package/dist/oauth2/refresh-access-token.d.mts +20 -40
  23. package/dist/oauth2/refresh-access-token.mjs +19 -32
  24. package/dist/oauth2/token-endpoint-auth.d.mts +17 -0
  25. package/dist/oauth2/token-endpoint-auth.mjs +89 -0
  26. package/dist/oauth2/utils.d.mts +9 -1
  27. package/dist/oauth2/utils.mjs +12 -1
  28. package/dist/oauth2/validate-authorization-code.d.mts +17 -52
  29. package/dist/oauth2/validate-authorization-code.mjs +17 -30
  30. package/dist/oauth2/verify.mjs +15 -5
  31. package/dist/social-providers/apple.d.mts +5 -12
  32. package/dist/social-providers/apple.mjs +14 -3
  33. package/dist/social-providers/atlassian.d.mts +3 -1
  34. package/dist/social-providers/atlassian.mjs +5 -2
  35. package/dist/social-providers/cognito.d.mts +16 -1
  36. package/dist/social-providers/cognito.mjs +6 -2
  37. package/dist/social-providers/discord.d.mts +5 -3
  38. package/dist/social-providers/discord.mjs +16 -3
  39. package/dist/social-providers/dropbox.d.mts +3 -1
  40. package/dist/social-providers/dropbox.mjs +5 -4
  41. package/dist/social-providers/facebook.d.mts +5 -3
  42. package/dist/social-providers/facebook.mjs +6 -3
  43. package/dist/social-providers/figma.d.mts +3 -1
  44. package/dist/social-providers/figma.mjs +3 -2
  45. package/dist/social-providers/github.d.mts +4 -2
  46. package/dist/social-providers/github.mjs +5 -4
  47. package/dist/social-providers/gitlab.d.mts +3 -1
  48. package/dist/social-providers/gitlab.mjs +3 -2
  49. package/dist/social-providers/google.d.mts +3 -1
  50. package/dist/social-providers/google.mjs +5 -2
  51. package/dist/social-providers/huggingface.d.mts +3 -1
  52. package/dist/social-providers/huggingface.mjs +3 -2
  53. package/dist/social-providers/index.d.mts +104 -36
  54. package/dist/social-providers/kakao.d.mts +3 -1
  55. package/dist/social-providers/kakao.mjs +3 -2
  56. package/dist/social-providers/kick.d.mts +3 -1
  57. package/dist/social-providers/kick.mjs +3 -2
  58. package/dist/social-providers/line.d.mts +3 -1
  59. package/dist/social-providers/line.mjs +3 -2
  60. package/dist/social-providers/linear.d.mts +3 -1
  61. package/dist/social-providers/linear.mjs +3 -2
  62. package/dist/social-providers/linkedin.d.mts +5 -3
  63. package/dist/social-providers/linkedin.mjs +4 -3
  64. package/dist/social-providers/microsoft-entra-id.d.mts +3 -2
  65. package/dist/social-providers/microsoft-entra-id.mjs +3 -2
  66. package/dist/social-providers/naver.d.mts +3 -1
  67. package/dist/social-providers/naver.mjs +3 -2
  68. package/dist/social-providers/notion.d.mts +3 -1
  69. package/dist/social-providers/notion.mjs +5 -2
  70. package/dist/social-providers/paybin.d.mts +3 -1
  71. package/dist/social-providers/paybin.mjs +3 -2
  72. package/dist/social-providers/paypal.d.mts +3 -1
  73. package/dist/social-providers/paypal.mjs +4 -3
  74. package/dist/social-providers/polar.d.mts +3 -1
  75. package/dist/social-providers/polar.mjs +3 -2
  76. package/dist/social-providers/railway.d.mts +3 -1
  77. package/dist/social-providers/railway.mjs +3 -2
  78. package/dist/social-providers/reddit.d.mts +3 -1
  79. package/dist/social-providers/reddit.mjs +3 -2
  80. package/dist/social-providers/roblox.d.mts +4 -2
  81. package/dist/social-providers/roblox.mjs +12 -2
  82. package/dist/social-providers/salesforce.d.mts +3 -1
  83. package/dist/social-providers/salesforce.mjs +3 -2
  84. package/dist/social-providers/slack.d.mts +4 -2
  85. package/dist/social-providers/slack.mjs +11 -8
  86. package/dist/social-providers/spotify.d.mts +3 -1
  87. package/dist/social-providers/spotify.mjs +3 -2
  88. package/dist/social-providers/tiktok.d.mts +3 -1
  89. package/dist/social-providers/tiktok.mjs +14 -2
  90. package/dist/social-providers/twitch.d.mts +3 -1
  91. package/dist/social-providers/twitch.mjs +3 -2
  92. package/dist/social-providers/twitter.d.mts +5 -2
  93. package/dist/social-providers/twitter.mjs +2 -1
  94. package/dist/social-providers/vercel.d.mts +3 -1
  95. package/dist/social-providers/vercel.mjs +3 -2
  96. package/dist/social-providers/vk.d.mts +3 -1
  97. package/dist/social-providers/vk.mjs +3 -2
  98. package/dist/social-providers/wechat.d.mts +3 -1
  99. package/dist/social-providers/wechat.mjs +7 -1
  100. package/dist/social-providers/zoom.d.mts +4 -2
  101. package/dist/social-providers/zoom.mjs +10 -17
  102. package/dist/types/context.d.mts +30 -4
  103. package/dist/types/init-options.d.mts +29 -5
  104. package/dist/utils/ip.d.mts +5 -4
  105. package/dist/utils/ip.mjs +3 -3
  106. package/dist/utils/redirect-uri.d.mts +20 -0
  107. package/dist/utils/redirect-uri.mjs +48 -0
  108. package/dist/utils/string.d.mts +5 -1
  109. package/dist/utils/string.mjs +20 -1
  110. package/dist/utils/url.d.mts +18 -1
  111. package/dist/utils/url.mjs +30 -1
  112. package/package.json +9 -8
  113. package/src/db/adapter/factory.ts +121 -3
  114. package/src/db/adapter/index.ts +32 -0
  115. package/src/db/adapter/types.ts +1 -0
  116. package/src/db/get-tables.ts +2 -0
  117. package/src/db/schema/user.ts +3 -0
  118. package/src/db/type.ts +12 -0
  119. package/src/error/codes.ts +1 -0
  120. package/src/oauth2/authorization-params.ts +28 -0
  121. package/src/oauth2/basic-credentials.ts +87 -0
  122. package/src/oauth2/client-assertion.ts +131 -58
  123. package/src/oauth2/client-credentials-token.ts +48 -72
  124. package/src/oauth2/create-authorization-url.ts +28 -6
  125. package/src/oauth2/index.ts +25 -9
  126. package/src/oauth2/oauth-provider.ts +21 -2
  127. package/src/oauth2/refresh-access-token.ts +50 -76
  128. package/src/oauth2/token-endpoint-auth.ts +221 -0
  129. package/src/oauth2/utils.ts +19 -0
  130. package/src/oauth2/validate-authorization-code.ts +55 -85
  131. package/src/oauth2/verify.ts +20 -4
  132. package/src/social-providers/apple.ts +27 -3
  133. package/src/social-providers/atlassian.ts +8 -1
  134. package/src/social-providers/cognito.ts +26 -1
  135. package/src/social-providers/discord.ts +22 -18
  136. package/src/social-providers/dropbox.ts +7 -5
  137. package/src/social-providers/facebook.ts +14 -9
  138. package/src/social-providers/figma.ts +8 -1
  139. package/src/social-providers/github.ts +5 -3
  140. package/src/social-providers/gitlab.ts +2 -0
  141. package/src/social-providers/google.ts +2 -0
  142. package/src/social-providers/huggingface.ts +8 -1
  143. package/src/social-providers/kakao.ts +2 -1
  144. package/src/social-providers/kick.ts +8 -1
  145. package/src/social-providers/line.ts +2 -0
  146. package/src/social-providers/linear.ts +8 -1
  147. package/src/social-providers/linkedin.ts +5 -3
  148. package/src/social-providers/microsoft-entra-id.ts +2 -1
  149. package/src/social-providers/naver.ts +2 -1
  150. package/src/social-providers/notion.ts +8 -1
  151. package/src/social-providers/paybin.ts +2 -0
  152. package/src/social-providers/paypal.ts +7 -1
  153. package/src/social-providers/polar.ts +8 -1
  154. package/src/social-providers/railway.ts +8 -1
  155. package/src/social-providers/reddit.ts +2 -1
  156. package/src/social-providers/roblox.ts +16 -11
  157. package/src/social-providers/salesforce.ts +8 -1
  158. package/src/social-providers/slack.ts +15 -9
  159. package/src/social-providers/spotify.ts +8 -1
  160. package/src/social-providers/tiktok.ts +22 -9
  161. package/src/social-providers/twitch.ts +2 -1
  162. package/src/social-providers/twitter.ts +1 -0
  163. package/src/social-providers/vercel.ts +8 -1
  164. package/src/social-providers/vk.ts +8 -1
  165. package/src/social-providers/wechat.ts +9 -1
  166. package/src/social-providers/zoom.ts +15 -19
  167. package/src/types/context.ts +33 -5
  168. package/src/types/init-options.ts +29 -5
  169. package/src/utils/ip.ts +12 -13
  170. package/src/utils/redirect-uri.ts +54 -0
  171. package/src/utils/string.ts +37 -0
  172. package/src/utils/url.ts +28 -0
@@ -2,7 +2,7 @@ import { logger } from "../env/logger.mjs";
2
2
  import { getOAuth2Tokens } from "../oauth2/utils.mjs";
3
3
  import { createAuthorizationURL } from "../oauth2/create-authorization-url.mjs";
4
4
  import { refreshAccessToken } from "../oauth2/refresh-access-token.mjs";
5
- import { createAuthorizationCodeRequest } from "../oauth2/validate-authorization-code.mjs";
5
+ import { authorizationCodeRequest } from "../oauth2/validate-authorization-code.mjs";
6
6
  import { betterFetch } from "@better-fetch/fetch";
7
7
  //#region src/social-providers/github.ts
8
8
  const github = (options) => {
@@ -10,7 +10,7 @@ const github = (options) => {
10
10
  return {
11
11
  id: "github",
12
12
  name: "GitHub",
13
- createAuthorizationURL({ state, scopes, loginHint, codeVerifier, redirectURI }) {
13
+ createAuthorizationURL({ state, scopes, loginHint, codeVerifier, redirectURI, additionalParams }) {
14
14
  const _scopes = options.disableDefaultScope ? [] : ["read:user", "user:email"];
15
15
  if (options.scope) _scopes.push(...options.scope);
16
16
  if (scopes) _scopes.push(...scopes);
@@ -23,11 +23,12 @@ const github = (options) => {
23
23
  codeVerifier,
24
24
  redirectURI,
25
25
  loginHint,
26
- prompt: options.prompt
26
+ prompt: options.prompt,
27
+ additionalParams
27
28
  });
28
29
  },
29
30
  validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {
30
- const { body, headers: requestHeaders } = createAuthorizationCodeRequest({
31
+ const { body, headers: requestHeaders } = await authorizationCodeRequest({
31
32
  code,
32
33
  codeVerifier,
33
34
  redirectURI,
@@ -57,7 +57,8 @@ declare const gitlab: (options: GitlabOptions) => {
57
57
  scopes,
58
58
  codeVerifier,
59
59
  loginHint,
60
- redirectURI
60
+ redirectURI,
61
+ additionalParams
61
62
  }: {
62
63
  state: string;
63
64
  codeVerifier: string;
@@ -65,6 +66,7 @@ declare const gitlab: (options: GitlabOptions) => {
65
66
  redirectURI: string;
66
67
  display?: string | undefined;
67
68
  loginHint?: string | undefined;
69
+ additionalParams?: Record<string, string> | undefined;
68
70
  }) => Promise<URL>;
69
71
  validateAuthorizationCode: ({
70
72
  code,
@@ -20,7 +20,7 @@ const gitlab = (options) => {
20
20
  return {
21
21
  id: issuerId,
22
22
  name: "Gitlab",
23
- createAuthorizationURL: async ({ state, scopes, codeVerifier, loginHint, redirectURI }) => {
23
+ createAuthorizationURL: async ({ state, scopes, codeVerifier, loginHint, redirectURI, additionalParams }) => {
24
24
  const _scopes = options.disableDefaultScope ? [] : ["read_user"];
25
25
  if (options.scope) _scopes.push(...options.scope);
26
26
  if (scopes) _scopes.push(...scopes);
@@ -32,7 +32,8 @@ const gitlab = (options) => {
32
32
  state,
33
33
  redirectURI,
34
34
  codeVerifier,
35
- loginHint
35
+ loginHint,
36
+ additionalParams
36
37
  });
37
38
  },
38
39
  validateAuthorizationCode: async ({ code, redirectURI, codeVerifier }) => {
@@ -50,7 +50,8 @@ declare const google: (options: GoogleOptions) => {
50
50
  codeVerifier,
51
51
  redirectURI,
52
52
  loginHint,
53
- display
53
+ display,
54
+ additionalParams
54
55
  }: {
55
56
  state: string;
56
57
  codeVerifier: string;
@@ -58,6 +59,7 @@ declare const google: (options: GoogleOptions) => {
58
59
  redirectURI: string;
59
60
  display?: string | undefined;
60
61
  loginHint?: string | undefined;
62
+ additionalParams?: Record<string, string> | undefined;
61
63
  }): Promise<URL>;
62
64
  validateAuthorizationCode: ({
63
65
  code,
@@ -11,7 +11,7 @@ const google = (options) => {
11
11
  return {
12
12
  id: "google",
13
13
  name: "Google",
14
- async createAuthorizationURL({ state, scopes, codeVerifier, redirectURI, loginHint, display }) {
14
+ async createAuthorizationURL({ state, scopes, codeVerifier, redirectURI, loginHint, display, additionalParams }) {
15
15
  if (!getPrimaryClientId(options.clientId) || !options.clientSecret) {
16
16
  logger.error("Client Id and Client Secret is required for Google. Make sure to provide them in the options.");
17
17
  throw new BetterAuthError("CLIENT_ID_AND_SECRET_REQUIRED");
@@ -37,7 +37,10 @@ const google = (options) => {
37
37
  display: display || options.display,
38
38
  loginHint,
39
39
  hd: options.hd,
40
- additionalParams: { include_granted_scopes: "true" }
40
+ additionalParams: {
41
+ include_granted_scopes: "true",
42
+ ...additionalParams ?? {}
43
+ }
41
44
  });
42
45
  },
43
46
  validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {
@@ -38,7 +38,8 @@ declare const huggingface: (options: HuggingFaceOptions) => {
38
38
  state,
39
39
  scopes,
40
40
  codeVerifier,
41
- redirectURI
41
+ redirectURI,
42
+ additionalParams
42
43
  }: {
43
44
  state: string;
44
45
  codeVerifier: string;
@@ -46,6 +47,7 @@ declare const huggingface: (options: HuggingFaceOptions) => {
46
47
  redirectURI: string;
47
48
  display?: string | undefined;
48
49
  loginHint?: string | undefined;
50
+ additionalParams?: Record<string, string> | undefined;
49
51
  }): Promise<URL>;
50
52
  validateAuthorizationCode: ({
51
53
  code,
@@ -8,7 +8,7 @@ const huggingface = (options) => {
8
8
  return {
9
9
  id: "huggingface",
10
10
  name: "Hugging Face",
11
- createAuthorizationURL({ state, scopes, codeVerifier, redirectURI }) {
11
+ createAuthorizationURL({ state, scopes, codeVerifier, redirectURI, additionalParams }) {
12
12
  const _scopes = options.disableDefaultScope ? [] : [
13
13
  "openid",
14
14
  "profile",
@@ -23,7 +23,8 @@ const huggingface = (options) => {
23
23
  scopes: _scopes,
24
24
  state,
25
25
  codeVerifier,
26
- redirectURI
26
+ redirectURI,
27
+ additionalParams
27
28
  });
28
29
  },
29
30
  validateAuthorizationCode: async ({ code, codeVerifier, redirectURI }) => {