@convex-dev/better-auth 0.8.0-alpha.8 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/dist/commonjs/auth.d.ts +4 -0
  2. package/dist/commonjs/auth.d.ts.map +1 -0
  3. package/dist/commonjs/auth.js +44 -0
  4. package/dist/commonjs/auth.js.map +1 -0
  5. package/dist/commonjs/client/adapter.d.ts +8 -10
  6. package/dist/commonjs/client/adapter.d.ts.map +1 -1
  7. package/dist/commonjs/client/adapter.js +48 -32
  8. package/dist/commonjs/client/adapter.js.map +1 -1
  9. package/dist/commonjs/client/adapterUtils.d.ts +66 -0
  10. package/dist/commonjs/client/adapterUtils.d.ts.map +1 -0
  11. package/dist/commonjs/client/adapterUtils.js +429 -0
  12. package/dist/commonjs/client/adapterUtils.js.map +1 -0
  13. package/dist/commonjs/client/createSchema.d.ts +24 -0
  14. package/dist/commonjs/client/createSchema.d.ts.map +1 -0
  15. package/dist/commonjs/client/createSchema.js +101 -0
  16. package/dist/commonjs/client/createSchema.js.map +1 -0
  17. package/dist/commonjs/client/index.d.ts +449 -599
  18. package/dist/commonjs/client/index.d.ts.map +1 -1
  19. package/dist/commonjs/client/index.js +339 -212
  20. package/dist/commonjs/client/index.js.map +1 -1
  21. package/dist/commonjs/component/adapter.d.ts +128 -0
  22. package/dist/commonjs/component/adapter.d.ts.map +1 -0
  23. package/dist/commonjs/component/adapter.js +5 -0
  24. package/dist/commonjs/component/adapter.js.map +1 -0
  25. package/dist/commonjs/component/adapterTest.d.ts +3 -5
  26. package/dist/commonjs/component/adapterTest.d.ts.map +1 -1
  27. package/dist/commonjs/component/adapterTest.js +3 -17
  28. package/dist/commonjs/component/adapterTest.js.map +1 -1
  29. package/dist/commonjs/component/lib.d.ts +4 -2
  30. package/dist/commonjs/component/lib.d.ts.map +1 -1
  31. package/dist/commonjs/component/schema.d.ts +464 -175
  32. package/dist/commonjs/component/schema.d.ts.map +1 -1
  33. package/dist/commonjs/component/schema.js +74 -158
  34. package/dist/commonjs/component/schema.js.map +1 -1
  35. package/dist/commonjs/component/util.d.ts +31 -11
  36. package/dist/commonjs/component/util.d.ts.map +1 -1
  37. package/dist/commonjs/nextjs/index.d.ts +1 -2
  38. package/dist/commonjs/nextjs/index.d.ts.map +1 -1
  39. package/dist/commonjs/nextjs/index.js +3 -2
  40. package/dist/commonjs/nextjs/index.js.map +1 -1
  41. package/dist/commonjs/plugins/convex/client.d.ts +2 -5
  42. package/dist/commonjs/plugins/convex/client.d.ts.map +1 -1
  43. package/dist/commonjs/plugins/convex/client.js.map +1 -1
  44. package/dist/commonjs/plugins/convex/index.d.ts +13 -144
  45. package/dist/commonjs/plugins/convex/index.d.ts.map +1 -1
  46. package/dist/commonjs/plugins/convex/index.js +11 -125
  47. package/dist/commonjs/plugins/convex/index.js.map +1 -1
  48. package/dist/commonjs/plugins/cross-domain/index.js +2 -2
  49. package/dist/commonjs/plugins/cross-domain/index.js.map +1 -1
  50. package/dist/commonjs/react-start/index.d.ts +17 -36
  51. package/dist/commonjs/react-start/index.d.ts.map +1 -1
  52. package/dist/commonjs/react-start/index.js +43 -31
  53. package/dist/commonjs/react-start/index.js.map +1 -1
  54. package/dist/commonjs/src/auth.d.ts +3085 -0
  55. package/dist/commonjs/src/auth.d.ts.map +1 -0
  56. package/dist/commonjs/src/auth.js +72 -0
  57. package/dist/commonjs/src/auth.js.map +1 -0
  58. package/dist/commonjs/src/client/adapter.d.ts +18 -0
  59. package/dist/commonjs/src/client/adapter.d.ts.map +1 -0
  60. package/dist/commonjs/src/client/adapter.js +211 -0
  61. package/dist/commonjs/src/client/adapter.js.map +1 -0
  62. package/dist/commonjs/src/client/createSchema.d.ts +25 -0
  63. package/dist/commonjs/src/client/createSchema.d.ts.map +1 -0
  64. package/dist/commonjs/src/client/createSchema.js +103 -0
  65. package/dist/commonjs/src/client/createSchema.js.map +1 -0
  66. package/dist/commonjs/src/client/index.d.ts +3310 -0
  67. package/dist/commonjs/src/client/index.d.ts.map +1 -0
  68. package/dist/commonjs/src/client/index.js +377 -0
  69. package/dist/commonjs/src/client/index.js.map +1 -0
  70. package/dist/commonjs/src/client/plugins/index.d.ts +3 -0
  71. package/dist/commonjs/src/client/plugins/index.d.ts.map +1 -0
  72. package/dist/commonjs/src/client/plugins/index.js +3 -0
  73. package/dist/commonjs/src/client/plugins/index.js.map +1 -0
  74. package/dist/commonjs/src/component/_generated/api.d.ts +12 -0
  75. package/dist/commonjs/src/component/_generated/api.d.ts.map +1 -0
  76. package/dist/commonjs/src/component/_generated/api.js +22 -0
  77. package/dist/commonjs/src/component/_generated/api.js.map +1 -0
  78. package/dist/commonjs/src/component/_generated/server.d.ts +64 -0
  79. package/dist/commonjs/src/component/_generated/server.d.ts.map +1 -0
  80. package/dist/commonjs/src/component/_generated/server.js +74 -0
  81. package/dist/commonjs/src/component/_generated/server.js.map +1 -0
  82. package/dist/commonjs/src/component/adapter.d.ts +355 -0
  83. package/dist/commonjs/src/component/adapter.d.ts.map +1 -0
  84. package/dist/commonjs/src/component/adapter.js +573 -0
  85. package/dist/commonjs/src/component/adapter.js.map +1 -0
  86. package/dist/commonjs/src/component/adapterTest.d.ts +18 -0
  87. package/dist/commonjs/src/component/adapterTest.d.ts.map +1 -0
  88. package/dist/commonjs/src/component/adapterTest.js +75 -0
  89. package/dist/commonjs/src/component/adapterTest.js.map +1 -0
  90. package/dist/commonjs/src/component/convex.config.d.ts +3 -0
  91. package/dist/commonjs/src/component/convex.config.d.ts.map +1 -0
  92. package/dist/commonjs/src/component/convex.config.js +4 -0
  93. package/dist/commonjs/src/component/convex.config.js.map +1 -0
  94. package/dist/commonjs/src/component/schema.d.ts +562 -0
  95. package/dist/commonjs/src/component/schema.d.ts.map +1 -0
  96. package/dist/commonjs/src/component/schema.js +217 -0
  97. package/dist/commonjs/src/component/schema.js.map +1 -0
  98. package/dist/commonjs/src/nextjs/index.d.ts +10 -0
  99. package/dist/commonjs/src/nextjs/index.d.ts.map +1 -0
  100. package/dist/commonjs/src/nextjs/index.js +43 -0
  101. package/dist/commonjs/src/nextjs/index.js.map +1 -0
  102. package/dist/commonjs/src/plugins/convex/client.d.ts +9 -0
  103. package/dist/commonjs/src/plugins/convex/client.d.ts.map +1 -0
  104. package/dist/commonjs/src/plugins/convex/client.js +7 -0
  105. package/dist/commonjs/src/plugins/convex/client.js.map +1 -0
  106. package/dist/commonjs/src/plugins/convex/index.d.ts +415 -0
  107. package/dist/commonjs/src/plugins/convex/index.d.ts.map +1 -0
  108. package/dist/commonjs/src/plugins/convex/index.js +354 -0
  109. package/dist/commonjs/src/plugins/convex/index.js.map +1 -0
  110. package/dist/commonjs/src/plugins/cross-domain/client.d.ts +132 -0
  111. package/dist/commonjs/src/plugins/cross-domain/client.d.ts.map +1 -0
  112. package/dist/commonjs/src/plugins/cross-domain/client.js +176 -0
  113. package/dist/commonjs/src/plugins/cross-domain/client.js.map +1 -0
  114. package/dist/commonjs/src/plugins/cross-domain/index.d.ts +83 -0
  115. package/dist/commonjs/src/plugins/cross-domain/index.d.ts.map +1 -0
  116. package/dist/commonjs/src/plugins/cross-domain/index.js +153 -0
  117. package/dist/commonjs/src/plugins/cross-domain/index.js.map +1 -0
  118. package/dist/commonjs/src/plugins/index.d.ts +3 -0
  119. package/dist/commonjs/src/plugins/index.d.ts.map +1 -0
  120. package/dist/commonjs/src/plugins/index.js +3 -0
  121. package/dist/commonjs/src/plugins/index.js.map +1 -0
  122. package/dist/commonjs/src/react/client.d.ts +31 -0
  123. package/dist/commonjs/src/react/client.d.ts.map +1 -0
  124. package/dist/commonjs/src/react/client.js +96 -0
  125. package/dist/commonjs/src/react/client.js.map +1 -0
  126. package/dist/commonjs/src/react/index.d.ts +9 -0
  127. package/dist/commonjs/src/react/index.d.ts.map +1 -0
  128. package/dist/commonjs/src/react/index.js +15 -0
  129. package/dist/commonjs/src/react/index.js.map +1 -0
  130. package/dist/commonjs/src/react-start/index.d.ts +45 -0
  131. package/dist/commonjs/src/react-start/index.d.ts.map +1 -0
  132. package/dist/commonjs/src/react-start/index.js +60 -0
  133. package/dist/commonjs/src/react-start/index.js.map +1 -0
  134. package/dist/commonjs/src/utils/index.d.ts +9 -0
  135. package/dist/commonjs/src/utils/index.d.ts.map +1 -0
  136. package/dist/commonjs/src/utils/index.js +35 -0
  137. package/dist/commonjs/src/utils/index.js.map +1 -0
  138. package/dist/esm/auth.d.ts +4 -0
  139. package/dist/esm/auth.d.ts.map +1 -0
  140. package/dist/esm/auth.js +44 -0
  141. package/dist/esm/auth.js.map +1 -0
  142. package/dist/esm/client/adapter.d.ts +8 -10
  143. package/dist/esm/client/adapter.d.ts.map +1 -1
  144. package/dist/esm/client/adapter.js +48 -32
  145. package/dist/esm/client/adapter.js.map +1 -1
  146. package/dist/esm/client/adapterUtils.d.ts +66 -0
  147. package/dist/esm/client/adapterUtils.d.ts.map +1 -0
  148. package/dist/esm/client/adapterUtils.js +429 -0
  149. package/dist/esm/client/adapterUtils.js.map +1 -0
  150. package/dist/esm/client/createSchema.d.ts +24 -0
  151. package/dist/esm/client/createSchema.d.ts.map +1 -0
  152. package/dist/esm/client/createSchema.js +101 -0
  153. package/dist/esm/client/createSchema.js.map +1 -0
  154. package/dist/esm/client/index.d.ts +449 -599
  155. package/dist/esm/client/index.d.ts.map +1 -1
  156. package/dist/esm/client/index.js +339 -212
  157. package/dist/esm/client/index.js.map +1 -1
  158. package/dist/esm/component/adapter.d.ts +128 -0
  159. package/dist/esm/component/adapter.d.ts.map +1 -0
  160. package/dist/esm/component/adapter.js +5 -0
  161. package/dist/esm/component/adapter.js.map +1 -0
  162. package/dist/esm/component/adapterTest.d.ts +3 -5
  163. package/dist/esm/component/adapterTest.d.ts.map +1 -1
  164. package/dist/esm/component/adapterTest.js +3 -17
  165. package/dist/esm/component/adapterTest.js.map +1 -1
  166. package/dist/esm/component/lib.d.ts +4 -2
  167. package/dist/esm/component/lib.d.ts.map +1 -1
  168. package/dist/esm/component/schema.d.ts +464 -175
  169. package/dist/esm/component/schema.d.ts.map +1 -1
  170. package/dist/esm/component/schema.js +74 -158
  171. package/dist/esm/component/schema.js.map +1 -1
  172. package/dist/esm/component/util.d.ts +31 -11
  173. package/dist/esm/component/util.d.ts.map +1 -1
  174. package/dist/esm/nextjs/index.d.ts +1 -2
  175. package/dist/esm/nextjs/index.d.ts.map +1 -1
  176. package/dist/esm/nextjs/index.js +3 -2
  177. package/dist/esm/nextjs/index.js.map +1 -1
  178. package/dist/esm/plugins/convex/client.d.ts +2 -5
  179. package/dist/esm/plugins/convex/client.d.ts.map +1 -1
  180. package/dist/esm/plugins/convex/client.js.map +1 -1
  181. package/dist/esm/plugins/convex/index.d.ts +13 -144
  182. package/dist/esm/plugins/convex/index.d.ts.map +1 -1
  183. package/dist/esm/plugins/convex/index.js +11 -125
  184. package/dist/esm/plugins/convex/index.js.map +1 -1
  185. package/dist/esm/plugins/cross-domain/index.js +2 -2
  186. package/dist/esm/plugins/cross-domain/index.js.map +1 -1
  187. package/dist/esm/react-start/index.d.ts +17 -36
  188. package/dist/esm/react-start/index.d.ts.map +1 -1
  189. package/dist/esm/react-start/index.js +43 -31
  190. package/dist/esm/react-start/index.js.map +1 -1
  191. package/dist/esm/src/auth.d.ts +3085 -0
  192. package/dist/esm/src/auth.d.ts.map +1 -0
  193. package/dist/esm/src/auth.js +72 -0
  194. package/dist/esm/src/auth.js.map +1 -0
  195. package/dist/esm/src/client/adapter.d.ts +18 -0
  196. package/dist/esm/src/client/adapter.d.ts.map +1 -0
  197. package/dist/esm/src/client/adapter.js +211 -0
  198. package/dist/esm/src/client/adapter.js.map +1 -0
  199. package/dist/esm/src/client/createSchema.d.ts +25 -0
  200. package/dist/esm/src/client/createSchema.d.ts.map +1 -0
  201. package/dist/esm/src/client/createSchema.js +103 -0
  202. package/dist/esm/src/client/createSchema.js.map +1 -0
  203. package/dist/esm/src/client/index.d.ts +3310 -0
  204. package/dist/esm/src/client/index.d.ts.map +1 -0
  205. package/dist/esm/src/client/index.js +377 -0
  206. package/dist/esm/src/client/index.js.map +1 -0
  207. package/dist/esm/src/client/plugins/index.d.ts +3 -0
  208. package/dist/esm/src/client/plugins/index.d.ts.map +1 -0
  209. package/dist/esm/src/client/plugins/index.js +3 -0
  210. package/dist/esm/src/client/plugins/index.js.map +1 -0
  211. package/dist/esm/src/component/_generated/api.d.ts +12 -0
  212. package/dist/esm/src/component/_generated/api.d.ts.map +1 -0
  213. package/dist/esm/src/component/_generated/api.js +22 -0
  214. package/dist/esm/src/component/_generated/api.js.map +1 -0
  215. package/dist/esm/src/component/_generated/server.d.ts +64 -0
  216. package/dist/esm/src/component/_generated/server.d.ts.map +1 -0
  217. package/dist/esm/src/component/_generated/server.js +74 -0
  218. package/dist/esm/src/component/_generated/server.js.map +1 -0
  219. package/dist/esm/src/component/adapter.d.ts +355 -0
  220. package/dist/esm/src/component/adapter.d.ts.map +1 -0
  221. package/dist/esm/src/component/adapter.js +573 -0
  222. package/dist/esm/src/component/adapter.js.map +1 -0
  223. package/dist/esm/src/component/adapterTest.d.ts +18 -0
  224. package/dist/esm/src/component/adapterTest.d.ts.map +1 -0
  225. package/dist/esm/src/component/adapterTest.js +75 -0
  226. package/dist/esm/src/component/adapterTest.js.map +1 -0
  227. package/dist/esm/src/component/convex.config.d.ts +3 -0
  228. package/dist/esm/src/component/convex.config.d.ts.map +1 -0
  229. package/dist/esm/src/component/convex.config.js +4 -0
  230. package/dist/esm/src/component/convex.config.js.map +1 -0
  231. package/dist/esm/src/component/schema.d.ts +562 -0
  232. package/dist/esm/src/component/schema.d.ts.map +1 -0
  233. package/dist/esm/src/component/schema.js +217 -0
  234. package/dist/esm/src/component/schema.js.map +1 -0
  235. package/dist/esm/src/nextjs/index.d.ts +10 -0
  236. package/dist/esm/src/nextjs/index.d.ts.map +1 -0
  237. package/dist/esm/src/nextjs/index.js +43 -0
  238. package/dist/esm/src/nextjs/index.js.map +1 -0
  239. package/dist/esm/src/plugins/convex/client.d.ts +9 -0
  240. package/dist/esm/src/plugins/convex/client.d.ts.map +1 -0
  241. package/dist/esm/src/plugins/convex/client.js +7 -0
  242. package/dist/esm/src/plugins/convex/client.js.map +1 -0
  243. package/dist/esm/src/plugins/convex/index.d.ts +415 -0
  244. package/dist/esm/src/plugins/convex/index.d.ts.map +1 -0
  245. package/dist/esm/src/plugins/convex/index.js +354 -0
  246. package/dist/esm/src/plugins/convex/index.js.map +1 -0
  247. package/dist/esm/src/plugins/cross-domain/client.d.ts +132 -0
  248. package/dist/esm/src/plugins/cross-domain/client.d.ts.map +1 -0
  249. package/dist/esm/src/plugins/cross-domain/client.js +176 -0
  250. package/dist/esm/src/plugins/cross-domain/client.js.map +1 -0
  251. package/dist/esm/src/plugins/cross-domain/index.d.ts +83 -0
  252. package/dist/esm/src/plugins/cross-domain/index.d.ts.map +1 -0
  253. package/dist/esm/src/plugins/cross-domain/index.js +153 -0
  254. package/dist/esm/src/plugins/cross-domain/index.js.map +1 -0
  255. package/dist/esm/src/plugins/index.d.ts +3 -0
  256. package/dist/esm/src/plugins/index.d.ts.map +1 -0
  257. package/dist/esm/src/plugins/index.js +3 -0
  258. package/dist/esm/src/plugins/index.js.map +1 -0
  259. package/dist/esm/src/react/client.d.ts +31 -0
  260. package/dist/esm/src/react/client.d.ts.map +1 -0
  261. package/dist/esm/src/react/client.js +96 -0
  262. package/dist/esm/src/react/client.js.map +1 -0
  263. package/dist/esm/src/react/index.d.ts +9 -0
  264. package/dist/esm/src/react/index.d.ts.map +1 -0
  265. package/dist/esm/src/react/index.js +15 -0
  266. package/dist/esm/src/react/index.js.map +1 -0
  267. package/dist/esm/src/react-start/index.d.ts +45 -0
  268. package/dist/esm/src/react-start/index.d.ts.map +1 -0
  269. package/dist/esm/src/react-start/index.js +60 -0
  270. package/dist/esm/src/react-start/index.js.map +1 -0
  271. package/dist/esm/src/utils/index.d.ts +9 -0
  272. package/dist/esm/src/utils/index.d.ts.map +1 -0
  273. package/dist/esm/src/utils/index.js +35 -0
  274. package/dist/esm/src/utils/index.js.map +1 -0
  275. package/package.json +30 -7
  276. package/src/auth.ts +57 -0
  277. package/src/client/adapter.test.ts +15 -0
  278. package/src/client/adapter.ts +83 -58
  279. package/src/{component/lib.ts → client/adapterUtils.ts} +106 -256
  280. package/src/client/createSchema.ts +149 -0
  281. package/src/client/index.ts +561 -317
  282. package/src/component/_generated/api.d.ts +1744 -787
  283. package/src/component/adapter.ts +13 -0
  284. package/src/component/adapterTest.ts +8 -34
  285. package/src/component/schema.ts +81 -172
  286. package/src/nextjs/index.ts +5 -5
  287. package/src/plugins/convex/client.ts +2 -3
  288. package/src/plugins/convex/index.ts +16 -147
  289. package/src/plugins/cross-domain/index.ts +2 -2
  290. package/src/react-start/index.ts +76 -44
  291. package/src/component/util.ts +0 -4
@@ -0,0 +1,354 @@
1
+ import { createAuthMiddleware, sessionMiddleware } from "better-auth/api";
2
+ import { createAuthEndpoint, customSession as customSessionPlugin, jwt as jwtPlugin, bearer as bearerPlugin, oidcProvider as oidcProviderPlugin, } from "better-auth/plugins";
3
+ import { omit } from "convex-helpers";
4
+ import { z } from "zod";
5
+ export const JWT_COOKIE_NAME = "convex_jwt";
6
+ export const convex = (opts = {}) => {
7
+ const { jwtExpirationSeconds = 60 * 15, deleteExpiredSessionsOnLogin = false, } = opts;
8
+ const customSession = customSessionPlugin(async ({ user, session }) => {
9
+ // Doing terrible things with types because user and session aren't actually
10
+ // objects and we need plugin inference to work
11
+ const { userId, ...userData } = omit(user, ["id"]);
12
+ return {
13
+ user: { ...userData, id: userId },
14
+ session: {
15
+ ...session,
16
+ userId,
17
+ },
18
+ };
19
+ }, opts.options);
20
+ const oidcProvider = oidcProviderPlugin({
21
+ loginPage: "/not-used",
22
+ metadata: {
23
+ issuer: `${process.env.CONVEX_SITE_URL}`,
24
+ jwks_uri: `${process.env.CONVEX_SITE_URL}${opts.options?.basePath ?? "/api/auth"}/convex/jwks`,
25
+ },
26
+ });
27
+ const jwt = jwtPlugin({
28
+ jwt: {
29
+ issuer: `${process.env.CONVEX_SITE_URL}`,
30
+ audience: "convex",
31
+ expirationTime: `${jwtExpirationSeconds}s`,
32
+ getSubject: (session) => {
33
+ // Return the userId from the app user table
34
+ return session.user.userId;
35
+ },
36
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
37
+ definePayload: ({ user: { id, userId, image, ...user }, session }) => ({
38
+ ...user,
39
+ sessionId: session.id,
40
+ }),
41
+ },
42
+ });
43
+ // Bearer plugin converts the session token to a cookie
44
+ // for cross domain social login after code verification,
45
+ // and is required for the headers() helper to work.
46
+ const bearer = bearerPlugin();
47
+ const schema = {
48
+ user: {
49
+ fields: { userId: { type: "string", required: false, input: false } },
50
+ },
51
+ ...jwt.schema,
52
+ };
53
+ return {
54
+ id: "convex",
55
+ init: ({ options }) => {
56
+ if (options.plugins?.every((p) => p.id !== "cross-domain") &&
57
+ !options.baseURL) {
58
+ console.warn("Better Auth baseURL is undefined - this is probably a mistake");
59
+ }
60
+ },
61
+ hooks: {
62
+ before: [
63
+ {
64
+ matcher: (ctx) => {
65
+ return !!ctx.body?.userId;
66
+ },
67
+ handler: createAuthMiddleware(async (ctx) => {
68
+ const user = await ctx.context.adapter.findOne({
69
+ model: "user",
70
+ where: [
71
+ {
72
+ field: "userId",
73
+ operator: "eq",
74
+ value: ctx.body?.userId,
75
+ },
76
+ ],
77
+ });
78
+ if (!user) {
79
+ throw new Error("User not found");
80
+ }
81
+ ctx.body.userId = user.id;
82
+ return {
83
+ context: ctx,
84
+ };
85
+ }),
86
+ },
87
+ ...bearer.hooks.before,
88
+ ],
89
+ after: [
90
+ ...oidcProvider.hooks.after,
91
+ {
92
+ matcher: (ctx) => {
93
+ return (deleteExpiredSessionsOnLogin &&
94
+ (ctx.path?.startsWith("/sign-in") ||
95
+ ctx.path?.startsWith("/callback")));
96
+ },
97
+ handler: createAuthMiddleware(async (ctx) => {
98
+ // Delete expired sessions at login
99
+ const userId = ctx.context.newSession?.user.id;
100
+ if (!userId) {
101
+ return;
102
+ }
103
+ await ctx.context.adapter.deleteMany({
104
+ model: "session",
105
+ where: [
106
+ {
107
+ field: "userId",
108
+ operator: "eq",
109
+ value: userId,
110
+ connector: "AND",
111
+ },
112
+ {
113
+ operator: "lte",
114
+ field: "expiresAt",
115
+ value: new Date().getTime(),
116
+ },
117
+ ],
118
+ });
119
+ }),
120
+ },
121
+ {
122
+ matcher: (ctx) => {
123
+ return (ctx.path.startsWith("/sign-in") ||
124
+ ctx.path.startsWith("/sign-up") ||
125
+ ctx.path.startsWith("/callback") ||
126
+ ctx.path.startsWith("/oauth2/callback") ||
127
+ ctx.path.startsWith("/magic-link/verify") ||
128
+ ctx.path.startsWith("/email-otp/verify-email") ||
129
+ ctx.path.startsWith("/phone-number/verify"));
130
+ },
131
+ handler: createAuthMiddleware(async (ctx) => {
132
+ // Set jwt cookie at login for ssa
133
+ const cookie = ctx.context.responseHeaders?.get("set-cookie") ?? "";
134
+ if (!cookie) {
135
+ return;
136
+ }
137
+ try {
138
+ const { token } = await jwt.endpoints.getToken({
139
+ ...ctx,
140
+ method: "GET",
141
+ headers: {
142
+ cookie,
143
+ },
144
+ returnHeaders: false,
145
+ });
146
+ const jwtCookie = ctx.context.createAuthCookie(JWT_COOKIE_NAME, {
147
+ maxAge: jwtExpirationSeconds,
148
+ });
149
+ ctx.setCookie(jwtCookie.name, token, jwtCookie.attributes);
150
+ }
151
+ catch (_err) {
152
+ // no-op, some sign-in calls (eg., when redirecting to 2fa)
153
+ // 401 here
154
+ }
155
+ }),
156
+ },
157
+ {
158
+ matcher: (ctx) => {
159
+ return (ctx.path?.startsWith("/sign-out") ||
160
+ ctx.path?.startsWith("/delete-user"));
161
+ },
162
+ handler: createAuthMiddleware(async (ctx) => {
163
+ const jwtCookie = ctx.context.createAuthCookie(JWT_COOKIE_NAME, {
164
+ maxAge: 0,
165
+ });
166
+ ctx.setCookie(jwtCookie.name, "", jwtCookie.attributes);
167
+ }),
168
+ },
169
+ ],
170
+ },
171
+ endpoints: {
172
+ getSession: createAuthEndpoint("/get-session", {
173
+ method: "GET",
174
+ query: z.optional(z.object({
175
+ // If cookie cache is enabled, it will disable the cache
176
+ // and fetch the session from the database
177
+ disableCookieCache: z
178
+ .boolean({
179
+ description: "Disable cookie cache and fetch session from database",
180
+ })
181
+ .or(z.string().transform((v) => v === "true"))
182
+ .optional(),
183
+ disableRefresh: z
184
+ .boolean({
185
+ description: "Disable session refresh. Useful for checking session status, without updating the session",
186
+ })
187
+ .optional(),
188
+ })),
189
+ metadata: {
190
+ CUSTOM_SESSION: true,
191
+ openapi: {
192
+ description: "Get custom session data",
193
+ responses: {
194
+ "200": {
195
+ description: "Success",
196
+ content: {
197
+ "application/json": {
198
+ schema: {
199
+ type: "array",
200
+ nullable: true,
201
+ items: {
202
+ $ref: "#/components/schemas/Session",
203
+ },
204
+ },
205
+ },
206
+ },
207
+ },
208
+ },
209
+ },
210
+ },
211
+ requireHeaders: true,
212
+ }, async (ctx) => {
213
+ const response = await customSession.endpoints.getSession({
214
+ ...ctx,
215
+ returnHeaders: false,
216
+ });
217
+ return response;
218
+ }),
219
+ getOpenIdConfig: createAuthEndpoint("/convex/.well-known/openid-configuration", {
220
+ method: "GET",
221
+ metadata: {
222
+ isAction: false,
223
+ },
224
+ }, async (ctx) => {
225
+ const response = await oidcProvider.endpoints.getOpenIdConfig({
226
+ ...ctx,
227
+ returnHeaders: false,
228
+ });
229
+ return response;
230
+ }),
231
+ getJwks: createAuthEndpoint("/convex/jwks", {
232
+ method: "GET",
233
+ metadata: {
234
+ openapi: {
235
+ description: "Get the JSON Web Key Set",
236
+ responses: {
237
+ "200": {
238
+ description: "JSON Web Key Set retrieved successfully",
239
+ content: {
240
+ "application/json": {
241
+ schema: {
242
+ type: "object",
243
+ properties: {
244
+ keys: {
245
+ type: "array",
246
+ description: "Array of public JSON Web Keys",
247
+ items: {
248
+ type: "object",
249
+ properties: {
250
+ kid: {
251
+ type: "string",
252
+ description: "Key ID uniquely identifying the key, corresponds to the 'id' from the stored Jwk",
253
+ },
254
+ kty: {
255
+ type: "string",
256
+ description: "Key type (e.g., 'RSA', 'EC', 'OKP')",
257
+ },
258
+ alg: {
259
+ type: "string",
260
+ description: "Algorithm intended for use with the key (e.g., 'EdDSA', 'RS256')",
261
+ },
262
+ use: {
263
+ type: "string",
264
+ description: "Intended use of the public key (e.g., 'sig' for signature)",
265
+ enum: ["sig"],
266
+ nullable: true,
267
+ },
268
+ n: {
269
+ type: "string",
270
+ description: "Modulus for RSA keys (base64url-encoded)",
271
+ nullable: true,
272
+ },
273
+ e: {
274
+ type: "string",
275
+ description: "Exponent for RSA keys (base64url-encoded)",
276
+ nullable: true,
277
+ },
278
+ crv: {
279
+ type: "string",
280
+ description: "Curve name for elliptic curve keys (e.g., 'Ed25519', 'P-256')",
281
+ nullable: true,
282
+ },
283
+ x: {
284
+ type: "string",
285
+ description: "X coordinate for elliptic curve keys (base64url-encoded)",
286
+ nullable: true,
287
+ },
288
+ y: {
289
+ type: "string",
290
+ description: "Y coordinate for elliptic curve keys (base64url-encoded)",
291
+ nullable: true,
292
+ },
293
+ },
294
+ required: ["kid", "kty", "alg"],
295
+ },
296
+ },
297
+ },
298
+ required: ["keys"],
299
+ },
300
+ },
301
+ },
302
+ },
303
+ },
304
+ },
305
+ },
306
+ }, async (ctx) => {
307
+ const response = await jwt.endpoints.getJwks({
308
+ ...ctx,
309
+ returnHeaders: false,
310
+ });
311
+ return response;
312
+ }),
313
+ getToken: createAuthEndpoint("/convex/token", {
314
+ method: "GET",
315
+ requireHeaders: true,
316
+ use: [sessionMiddleware],
317
+ metadata: {
318
+ openapi: {
319
+ description: "Get a JWT token",
320
+ responses: {
321
+ 200: {
322
+ description: "Success",
323
+ content: {
324
+ "application/json": {
325
+ schema: {
326
+ type: "object",
327
+ properties: {
328
+ token: {
329
+ type: "string",
330
+ },
331
+ },
332
+ },
333
+ },
334
+ },
335
+ },
336
+ },
337
+ },
338
+ },
339
+ }, async (ctx) => {
340
+ const response = await jwt.endpoints.getToken({
341
+ ...ctx,
342
+ returnHeaders: false,
343
+ });
344
+ const jwtCookie = ctx.context.createAuthCookie(JWT_COOKIE_NAME, {
345
+ maxAge: jwtExpirationSeconds,
346
+ });
347
+ ctx.setCookie(jwtCookie.name, response.token, jwtCookie.attributes);
348
+ return response;
349
+ }),
350
+ },
351
+ schema,
352
+ };
353
+ };
354
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/plugins/convex/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import type { Store } from "better-auth";
2
+ import { BetterFetchOption } from "@better-fetch/fetch";
3
+ import { crossDomain } from "./index.js";
4
+ interface CookieAttributes {
5
+ value: string;
6
+ expires?: Date;
7
+ "max-age"?: number;
8
+ domain?: string;
9
+ path?: string;
10
+ secure?: boolean;
11
+ httpOnly?: boolean;
12
+ sameSite?: "Strict" | "Lax" | "None";
13
+ }
14
+ export declare function parseSetCookieHeader(header: string): Map<string, CookieAttributes>;
15
+ export declare function getSetCookie(header: string, prevCookie?: string): string;
16
+ export declare function getCookie(cookie: string): string;
17
+ export declare const crossDomainClient: (opts?: {
18
+ storage?: {
19
+ setItem: (key: string, value: string) => any;
20
+ getItem: (key: string) => string | null;
21
+ };
22
+ storagePrefix?: string;
23
+ disableCache?: boolean;
24
+ }) => {
25
+ id: "cross-domain";
26
+ $InferServerPlugin: ReturnType<typeof crossDomain>;
27
+ getActions(_: import("@better-fetch/fetch").BetterFetch, $store: Store): {
28
+ /**
29
+ * Get the stored cookie.
30
+ *
31
+ * You can use this to get the cookie stored in the device and use it in your fetch
32
+ * requests.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const cookie = client.getCookie();
37
+ * fetch("https://api.example.com", {
38
+ * headers: {
39
+ * cookie,
40
+ * },
41
+ * });
42
+ */
43
+ getCookie: () => string;
44
+ /**
45
+ * Notify the session signal.
46
+ *
47
+ * This is used to trigger an update in useSession, generally when a new session
48
+ * token is set.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * client.notifySessionSignal();
53
+ * ```
54
+ */
55
+ updateSession: () => void;
56
+ /**
57
+ * Get the stored session data.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const sessionData = client.getSessionData();
62
+ * ```
63
+ */
64
+ getSessionData: () => any;
65
+ };
66
+ fetchPlugins: {
67
+ id: string;
68
+ name: string;
69
+ hooks: {
70
+ onSuccess(context: import("@better-fetch/fetch").SuccessContext<any>): Promise<void>;
71
+ };
72
+ init(url: string, options: {
73
+ method?: string | undefined;
74
+ headers?: (HeadersInit & (HeadersInit | {
75
+ accept: "application/json" | "text/plain" | "application/octet-stream";
76
+ "content-type": "application/json" | "text/plain" | "application/x-www-form-urlencoded" | "multipart/form-data" | "application/octet-stream";
77
+ authorization: "Bearer" | "Basic";
78
+ })) | undefined;
79
+ cache?: RequestCache | undefined;
80
+ credentials?: RequestCredentials | undefined;
81
+ integrity?: string | undefined;
82
+ keepalive?: boolean | undefined;
83
+ mode?: RequestMode | undefined;
84
+ priority?: RequestPriority | undefined;
85
+ redirect?: RequestRedirect | undefined;
86
+ referrer?: string | undefined;
87
+ referrerPolicy?: ReferrerPolicy | undefined;
88
+ signal?: (AbortSignal | null) | undefined;
89
+ window?: null | undefined;
90
+ onRequest?: (<T extends Record<string, any>>(context: import("@better-fetch/fetch").RequestContext<T>) => Promise<import("@better-fetch/fetch").RequestContext | void> | import("@better-fetch/fetch").RequestContext | void) | undefined;
91
+ onResponse?: ((context: import("@better-fetch/fetch").ResponseContext) => Promise<Response | void | import("@better-fetch/fetch").ResponseContext> | Response | import("@better-fetch/fetch").ResponseContext | void) | undefined;
92
+ onSuccess?: ((context: import("@better-fetch/fetch").SuccessContext<any>) => Promise<void> | void) | undefined;
93
+ onError?: ((context: import("@better-fetch/fetch").ErrorContext) => Promise<void> | void) | undefined;
94
+ onRetry?: ((response: import("@better-fetch/fetch").ResponseContext) => Promise<void> | void) | undefined;
95
+ hookOptions?: {
96
+ cloneResponse?: boolean;
97
+ } | undefined;
98
+ timeout?: number | undefined;
99
+ customFetchImpl?: import("@better-fetch/fetch").FetchEsque | undefined;
100
+ plugins?: import("@better-fetch/fetch").BetterFetchPlugin[] | undefined;
101
+ baseURL?: string | undefined;
102
+ throw?: boolean | undefined;
103
+ auth?: ({
104
+ type: "Bearer";
105
+ token: string | Promise<string | undefined> | (() => string | Promise<string | undefined> | undefined) | undefined;
106
+ } | {
107
+ type: "Basic";
108
+ username: string | (() => string | undefined) | undefined;
109
+ password: string | (() => string | undefined) | undefined;
110
+ } | {
111
+ type: "Custom";
112
+ prefix: string | (() => string | undefined) | undefined;
113
+ value: string | (() => string | undefined) | undefined;
114
+ }) | undefined;
115
+ body?: any;
116
+ query?: any;
117
+ params?: any;
118
+ duplex?: "full" | "half" | undefined;
119
+ jsonParser?: ((text: string) => Promise<any> | any) | undefined;
120
+ retry?: import("@better-fetch/fetch").RetryOptions | undefined;
121
+ retryAttempt?: number | undefined;
122
+ output?: (import("@better-fetch/fetch").StandardSchemaV1 | typeof Blob | typeof File) | undefined;
123
+ errorSchema?: import("@better-fetch/fetch").StandardSchemaV1 | undefined;
124
+ disableValidation?: boolean | undefined;
125
+ } | undefined): Promise<{
126
+ url: string;
127
+ options: BetterFetchOption;
128
+ }>;
129
+ }[];
130
+ };
131
+ export {};
132
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/cross-domain/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,KAAK,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;AAEhC,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CACtC;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,GACb,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAkB/B;AAOD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,UA4B/D;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,UAcvC;AAED,eAAO,MAAM,iBAAiB,GAC5B,OAAM;IACJ,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;QAC7C,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;KACzC,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB;;wBAUsB,UAAU,CAAC,OAAO,WAAW,CAAC;;QAIpD;;;;;;;;;;;;;;WAcG;;QAKH;;;;;;;;;;WAUG;;QAIH;;;;;;;WAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAuEisV,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA7B3qV,iBAAiB;;;CA4BlD,CAAC"}