@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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -1,257 +1,384 @@
1
- import { httpActionGeneric, internalMutationGeneric, queryGeneric, } from "convex/server";
1
+ import { httpActionGeneric, internalMutationGeneric, mutationGeneric, paginationOptsValidator, queryGeneric, } from "convex/server";
2
2
  import { v } from "convex/values";
3
- import schema from "../component/schema";
4
3
  import { convexAdapter } from "./adapter";
5
- import { omit } from "convex-helpers";
6
- import { createCookieGetter } from "better-auth/cookies";
7
- import { fetchQuery } from "convex/nextjs";
8
- import { JWT_COOKIE_NAME } from "../plugins/convex";
4
+ import { asyncMap } from "convex-helpers";
9
5
  import { requireEnv } from "../utils";
10
- import { parse, partial } from "convex-helpers/validators";
11
- import { adapterArgsValidator, adapterWhereValidator } from "../component/lib";
6
+ import { partial } from "convex-helpers/validators";
7
+ import { adapterWhereValidator, checkUniqueFields, hasUniqueFields, listOne, paginate, selectFields, } from "./adapterUtils";
12
8
  import { corsRouter } from "convex-helpers/server/cors";
13
9
  import { version as convexVersion } from "convex";
14
10
  import semver from "semver";
11
+ import { getAuthTables } from "better-auth/db";
15
12
  export { convexAdapter };
16
13
  if (semver.lt(convexVersion, "1.25.0")) {
17
14
  throw new Error("Convex version must be at least 1.25.0");
18
15
  }
19
- const createUserFields = omit(schema.tables.user.validator.fields, ["userId"]);
20
- const createUserValidator = v.object(createUserFields);
21
- const createPermissiveArgsValidator = v.object({
22
- input: v.object({
23
- model: v.literal("user"),
24
- data: v.record(v.string(), v.union(v.string(), v.number(), v.boolean(), v.array(v.string()), v.array(v.number()), v.null())),
25
- }),
16
+ const whereValidator = (schema, tableName) => v.object({
17
+ field: v.union(...Object.keys(schema.tables[tableName].validator.fields).map((field) => v.literal(field)), v.literal("id")),
18
+ operator: v.optional(v.union(v.literal("lt"), v.literal("lte"), v.literal("gt"), v.literal("gte"), v.literal("eq"), v.literal("in"), v.literal("ne"), v.literal("contains"), v.literal("starts_with"), v.literal("ends_with"))),
19
+ value: v.union(v.string(), v.number(), v.boolean(), v.array(v.string()), v.array(v.number()), v.null()),
20
+ connector: v.optional(v.union(v.literal("AND"), v.literal("OR"))),
26
21
  });
27
- const createUserArgsValidator = v.object({
28
- input: v.object({
29
- model: v.literal("user"),
30
- data: v.object(createUserFields),
31
- }),
32
- });
33
- const updateUserArgsValidator = v.object({
34
- input: v.object({
35
- model: v.literal("user"),
36
- where: v.optional(v.array(adapterWhereValidator)),
37
- update: v.object(partial(createUserFields)),
38
- }),
39
- });
40
- const createSessionArgsValidator = v.object({
41
- input: v.object({
42
- model: v.literal("session"),
43
- data: v.object(schema.tables.session.validator.fields),
44
- }),
45
- });
46
- export class BetterAuth {
47
- component;
48
- config;
49
- constructor(component, config) {
50
- this.component = component;
51
- this.config = config;
52
- }
53
- async isAuthenticated(token) {
54
- if (!this.config.publicAuthFunctions?.isAuthenticated) {
55
- throw new Error("isAuthenticated function not found. It must be a named export in convex/auth.ts");
56
- }
57
- return fetchQuery(this.config.publicAuthFunctions.isAuthenticated, {}, { token: token ?? undefined });
58
- }
59
- async getHeaders(ctx) {
60
- const session = await ctx.runQuery(this.component.lib.getCurrentSession);
61
- return new Headers({
62
- ...(session?.token ? { authorization: `Bearer ${session.token}` } : {}),
63
- ...(session?.ipAddress ? { "x-forwarded-for": session.ipAddress } : {}),
64
- });
65
- }
66
- // TODO: use the proper id type for auth functions
67
- async getAuthUserId(ctx) {
68
- const identity = await ctx.auth.getUserIdentity();
69
- if (!identity) {
70
- return null;
71
- }
72
- return identity.subject;
73
- }
74
- // Convenience function for getting the Better Auth user
75
- async getAuthUser(ctx) {
22
+ export const createApi = (schema, createAuth) => {
23
+ const betterAuthSchema = getAuthTables(createAuth({}).options);
24
+ return {
25
+ create: mutationGeneric({
26
+ args: {
27
+ input: v.union(...Object.entries(schema.tables).map(([model, table]) => v.object({
28
+ model: v.literal(model),
29
+ data: v.object(table.validator.fields),
30
+ }))),
31
+ select: v.optional(v.array(v.string())),
32
+ onCreateHandle: v.optional(v.string()),
33
+ },
34
+ handler: async (ctx, args) => {
35
+ await checkUniqueFields(ctx, schema, betterAuthSchema, args.input.model, args.input.data);
36
+ const id = await ctx.db.insert(args.input.model, args.input.data);
37
+ const doc = await ctx.db.get(id);
38
+ if (!doc) {
39
+ throw new Error(`Failed to create ${args.input.model}`);
40
+ }
41
+ const result = selectFields(doc, args.select);
42
+ if (args.onCreateHandle) {
43
+ await ctx.runMutation(args.onCreateHandle, {
44
+ model: args.input.model,
45
+ doc,
46
+ });
47
+ }
48
+ return result;
49
+ },
50
+ }),
51
+ findOne: queryGeneric({
52
+ args: {
53
+ model: v.union(...Object.keys(schema.tables).map((model) => v.literal(model))),
54
+ where: v.optional(v.array(adapterWhereValidator)),
55
+ select: v.optional(v.array(v.string())),
56
+ },
57
+ handler: async (ctx, args) => {
58
+ return await listOne(ctx, schema, betterAuthSchema, args);
59
+ },
60
+ }),
61
+ findMany: queryGeneric({
62
+ args: {
63
+ model: v.union(...Object.keys(schema.tables).map((model) => v.literal(model))),
64
+ where: v.optional(v.array(adapterWhereValidator)),
65
+ limit: v.optional(v.number()),
66
+ sortBy: v.optional(v.object({
67
+ direction: v.union(v.literal("asc"), v.literal("desc")),
68
+ field: v.string(),
69
+ })),
70
+ offset: v.optional(v.number()),
71
+ paginationOpts: paginationOptsValidator,
72
+ },
73
+ handler: async (ctx, args) => {
74
+ return await paginate(ctx, schema, betterAuthSchema, args);
75
+ },
76
+ }),
77
+ updateOne: mutationGeneric({
78
+ args: {
79
+ input: v.union(...Object.entries(schema.tables).map(([tableName, table]) => {
80
+ const fields = partial(table.validator.fields);
81
+ return v.object({
82
+ model: v.literal(tableName),
83
+ update: v.object(fields),
84
+ where: v.optional(v.array(whereValidator(schema, tableName))),
85
+ });
86
+ })),
87
+ onUpdateHandle: v.optional(v.string()),
88
+ },
89
+ handler: async (ctx, args) => {
90
+ const doc = await listOne(ctx, schema, betterAuthSchema, args.input);
91
+ if (!doc) {
92
+ throw new Error(`Failed to update ${args.input.model}`);
93
+ }
94
+ await checkUniqueFields(ctx, schema, betterAuthSchema, args.input.model, args.input.update, doc);
95
+ await ctx.db.patch(doc._id, args.input.update);
96
+ const updatedDoc = await ctx.db.get(doc._id);
97
+ if (!updatedDoc) {
98
+ throw new Error(`Failed to update ${args.input.model}`);
99
+ }
100
+ if (args.onUpdateHandle) {
101
+ await ctx.runMutation(args.onUpdateHandle, {
102
+ input: {
103
+ model: args.input.model,
104
+ oldDoc: doc,
105
+ newDoc: updatedDoc,
106
+ },
107
+ });
108
+ }
109
+ return updatedDoc;
110
+ },
111
+ }),
112
+ updateMany: mutationGeneric({
113
+ args: {
114
+ input: v.union(...Object.entries(schema.tables).map(([tableName, table]) => {
115
+ const fields = partial(table.validator.fields);
116
+ return v.object({
117
+ model: v.literal(tableName),
118
+ update: v.object(fields),
119
+ where: v.optional(v.array(whereValidator(schema, tableName))),
120
+ });
121
+ })),
122
+ paginationOpts: paginationOptsValidator,
123
+ onUpdateHandle: v.optional(v.string()),
124
+ },
125
+ handler: async (ctx, args) => {
126
+ const { page, ...result } = await paginate(ctx, schema, betterAuthSchema, {
127
+ ...args.input,
128
+ paginationOpts: args.paginationOpts,
129
+ });
130
+ if (args.input.update) {
131
+ if (hasUniqueFields(betterAuthSchema, args.input.model, args.input.update ?? {}) &&
132
+ page.length > 1) {
133
+ throw new Error(`Attempted to set unique fields in multiple documents in ${args.input.model} with the same value. Fields: ${Object.keys(args.input.update ?? {}).join(", ")}`);
134
+ }
135
+ await asyncMap(page, async (doc) => {
136
+ await checkUniqueFields(ctx, schema, betterAuthSchema, args.input.model, args.input.update ?? {}, doc);
137
+ await ctx.db.patch(doc._id, args.input.update);
138
+ if (args.onUpdateHandle) {
139
+ await ctx.runMutation(args.onUpdateHandle, {
140
+ model: args.input.model,
141
+ oldDoc: doc,
142
+ newDoc: await ctx.db.get(doc._id),
143
+ });
144
+ }
145
+ });
146
+ }
147
+ return {
148
+ ...result,
149
+ count: page.length,
150
+ ids: page.map((doc) => doc._id),
151
+ };
152
+ },
153
+ }),
154
+ deleteOne: mutationGeneric({
155
+ args: {
156
+ input: v.union(...Object.keys(schema.tables).map((tableName) => {
157
+ return v.object({
158
+ model: v.literal(tableName),
159
+ where: v.optional(v.array(whereValidator(schema, tableName))),
160
+ });
161
+ })),
162
+ onDeleteHandle: v.optional(v.string()),
163
+ },
164
+ handler: async (ctx, args) => {
165
+ const doc = await listOne(ctx, schema, betterAuthSchema, args.input);
166
+ if (!doc) {
167
+ return;
168
+ }
169
+ await ctx.db.delete(doc._id);
170
+ if (args.onDeleteHandle) {
171
+ await ctx.runMutation(args.onDeleteHandle, { model: args.input.model, doc });
172
+ }
173
+ return doc;
174
+ },
175
+ }),
176
+ deleteMany: mutationGeneric({
177
+ args: {
178
+ input: v.union(...Object.keys(schema.tables).map((tableName) => {
179
+ return v.object({
180
+ model: v.literal(tableName),
181
+ where: v.optional(v.array(whereValidator(schema, tableName))),
182
+ });
183
+ })),
184
+ paginationOpts: paginationOptsValidator,
185
+ onDeleteHandle: v.optional(v.string()),
186
+ },
187
+ handler: async (ctx, args) => {
188
+ const { page, ...result } = await paginate(ctx, schema, betterAuthSchema, {
189
+ ...args.input,
190
+ paginationOpts: args.paginationOpts,
191
+ });
192
+ await asyncMap(page, async (doc) => {
193
+ if (args.onDeleteHandle) {
194
+ await ctx.runMutation(args.onDeleteHandle, {
195
+ model: args.input.model,
196
+ doc,
197
+ });
198
+ }
199
+ await ctx.db.delete(doc._id);
200
+ });
201
+ return {
202
+ ...result,
203
+ count: page.length,
204
+ ids: page.map((doc) => doc._id),
205
+ };
206
+ },
207
+ }),
208
+ };
209
+ };
210
+ export const createClient = (component, config) => {
211
+ const safeGetAuthUser = async (ctx) => {
76
212
  const identity = await ctx.auth.getUserIdentity();
77
213
  if (!identity) {
78
- return null;
214
+ return;
79
215
  }
80
- const doc = await ctx.runQuery(this.component.lib.findOne, {
216
+ const doc = (await ctx.runQuery(component.adapter.findOne, {
81
217
  model: "user",
82
218
  where: [
83
219
  {
84
- field: "userId",
220
+ field: "id",
85
221
  value: identity.subject,
86
222
  },
87
223
  ],
88
- });
224
+ }));
89
225
  if (!doc) {
90
- return null;
91
- }
92
- // Type narrowing
93
- if (!("emailVerified" in doc)) {
94
- throw new Error("invalid user");
95
- }
96
- return omit(doc, ["_id", "_creationTime"]);
97
- }
98
- async getIdTokenCookieName(createAuth) {
99
- const auth = createAuth({});
100
- const createCookie = createCookieGetter(auth.options);
101
- const cookie = createCookie(JWT_COOKIE_NAME);
102
- return cookie.name;
103
- }
104
- async updateUserMetadata(ctx, userId, metadata) {
105
- return ctx.runMutation(this.component.lib.updateOne, {
106
- input: {
107
- model: "user",
108
- where: [{ field: "userId", value: userId }],
109
- update: metadata,
110
- },
111
- });
112
- }
113
- async getUserByUsername(ctx, username) {
114
- const user = await ctx.runQuery(this.component.lib.findOne, {
115
- model: "user",
116
- where: [{ field: "username", value: username }],
117
- });
118
- if (!user) {
119
- return null;
226
+ return;
120
227
  }
121
- return omit(user, ["_id", "_creationTime"]);
122
- }
123
- createAuthFunctions(opts) {
124
- return {
125
- isAuthenticated: queryGeneric({
126
- args: v.object({}),
127
- handler: async (ctx) => {
128
- const identity = await ctx.auth.getUserIdentity();
129
- return identity !== null;
228
+ return doc;
229
+ };
230
+ return {
231
+ component,
232
+ adapter: (ctx) => convexAdapter(ctx, component, config),
233
+ getHeaders: async (ctx) => {
234
+ const identity = await ctx.auth.getUserIdentity();
235
+ if (!identity) {
236
+ return;
237
+ }
238
+ const session = await ctx.runQuery(component.adapter.findOne, {
239
+ model: "session",
240
+ where: [
241
+ {
242
+ field: "userId",
243
+ value: identity.subject,
244
+ },
245
+ ],
246
+ });
247
+ return new Headers({
248
+ ...(session?.token ? { authorization: `Bearer ${session.token}` } : {}),
249
+ ...(session?.ipAddress
250
+ ? { "x-forwarded-for": session.ipAddress }
251
+ : {}),
252
+ });
253
+ },
254
+ safeGetAuthUser,
255
+ getAuthUser: async (ctx) => {
256
+ const user = await safeGetAuthUser(ctx);
257
+ if (!user) {
258
+ throw new Error("Unauthenticated");
259
+ }
260
+ return user;
261
+ },
262
+ // Replaces 0.7 behavior of returning a new user id from
263
+ // onCreateUser
264
+ setUserId: async (ctx, authId, userId) => {
265
+ await ctx.runMutation(component.adapter.updateOne, {
266
+ input: {
267
+ model: "user",
268
+ where: [{ field: "id", value: authId }],
269
+ update: { userId },
130
270
  },
131
- }),
132
- createUser: internalMutationGeneric({
133
- args: createPermissiveArgsValidator,
134
- handler: async (ctx, args) => {
135
- const userId = await opts.onCreateUser(ctx, args.input.data);
136
- const parsedArgs = parse(createUserArgsValidator, args);
137
- return ctx.runMutation(this.component.lib.create, {
138
- input: {
139
- ...parsedArgs.input,
140
- data: { ...parsedArgs.input.data, userId },
141
- },
142
- });
271
+ });
272
+ },
273
+ triggersApi: () => ({
274
+ onCreate: internalMutationGeneric({
275
+ args: {
276
+ doc: v.any(),
277
+ model: v.string(),
143
278
  },
144
- }),
145
- deleteUser: internalMutationGeneric({
146
- args: adapterArgsValidator,
147
279
  handler: async (ctx, args) => {
148
- const doc = await ctx.runMutation(this.component.lib.deleteOne, args);
149
- if (doc && opts.onDeleteUser) {
150
- await opts.onDeleteUser(ctx, doc.userId);
151
- }
152
- return doc;
280
+ await config?.triggers?.[args.model]?.onCreate?.(ctx, args.doc);
153
281
  },
154
282
  }),
155
- updateUser: internalMutationGeneric({
156
- args: updateUserArgsValidator,
283
+ onUpdate: internalMutationGeneric({
284
+ args: {
285
+ oldDoc: v.any(),
286
+ newDoc: v.any(),
287
+ model: v.string(),
288
+ },
157
289
  handler: async (ctx, args) => {
158
- const updatedUser = await ctx.runMutation(this.component.lib.updateOne, { input: args.input });
159
- // Type narrowing
160
- if (!("emailVerified" in updatedUser)) {
161
- throw new Error("invalid user");
162
- }
163
- if (opts.onUpdateUser) {
164
- await opts.onUpdateUser(ctx, omit(updatedUser, ["_id"]));
165
- }
166
- return updatedUser;
290
+ await config?.triggers?.[args.model]?.onUpdate?.(ctx, args.oldDoc, args.newDoc);
167
291
  },
168
292
  }),
169
- createSession: internalMutationGeneric({
170
- args: createSessionArgsValidator,
293
+ onDelete: internalMutationGeneric({
294
+ args: {
295
+ doc: v.any(),
296
+ model: v.string(),
297
+ },
171
298
  handler: async (ctx, args) => {
172
- const session = await ctx.runMutation(this.component.lib.create, {
173
- input: args.input,
174
- });
175
- await opts.onCreateSession?.(ctx, session);
176
- return session;
299
+ await config?.triggers?.[args.model]?.onDelete?.(ctx, args.doc);
177
300
  },
178
301
  }),
179
- };
180
- }
181
- registerRoutes(http, createAuth, opts = {}) {
182
- const betterAuthOptions = createAuth({}).options;
183
- const path = betterAuthOptions.basePath ?? "/api/auth";
184
- const authRequestHandler = httpActionGeneric(async (ctx, request) => {
185
- if (this.config.verbose) {
186
- console.log("options.baseURL", betterAuthOptions.baseURL);
187
- console.log("request headers", request.headers);
302
+ }),
303
+ registerRoutes: (http, createAuth, opts = {}) => {
304
+ const authDummy = createAuth({});
305
+ const path = authDummy.options.basePath ?? "/api/auth";
306
+ const authRequestHandler = httpActionGeneric(async (ctx, request) => {
307
+ if (config?.verbose) {
308
+ console.log("options.baseURL", authDummy.options.baseURL);
309
+ console.log("request headers", request.headers);
310
+ }
311
+ const auth = createAuth(ctx);
312
+ const response = await auth.handler(request);
313
+ if (config?.verbose) {
314
+ console.log("response headers", response.headers);
315
+ }
316
+ return response;
317
+ });
318
+ const wellKnown = http.lookup("/.well-known/openid-configuration", "GET");
319
+ // If registerRoutes is used multiple times, this may already be defined
320
+ if (!wellKnown) {
321
+ // Redirect root well-known to api well-known
322
+ http.route({
323
+ path: "/.well-known/openid-configuration",
324
+ method: "GET",
325
+ handler: httpActionGeneric(async () => {
326
+ const url = `${requireEnv("CONVEX_SITE_URL")}${path}/convex/.well-known/openid-configuration`;
327
+ return Response.redirect(url);
328
+ }),
329
+ });
188
330
  }
189
- const auth = createAuth(ctx);
190
- const response = await auth.handler(request);
191
- if (this.config?.verbose) {
192
- console.log("response headers", response.headers);
331
+ if (!opts.cors) {
332
+ http.route({
333
+ pathPrefix: `${path}/`,
334
+ method: "GET",
335
+ handler: authRequestHandler,
336
+ });
337
+ http.route({
338
+ pathPrefix: `${path}/`,
339
+ method: "POST",
340
+ handler: authRequestHandler,
341
+ });
342
+ return;
193
343
  }
194
- return response;
195
- });
196
- const wellKnown = http.lookup("/.well-known/openid-configuration", "GET");
197
- // If registerRoutes is used multiple times, this may already be defined
198
- if (!wellKnown) {
199
- // Redirect root well-known to api well-known
200
- http.route({
201
- path: "/.well-known/openid-configuration",
202
- method: "GET",
203
- handler: httpActionGeneric(async () => {
204
- const url = `${requireEnv("CONVEX_SITE_URL")}${path}/convex/.well-known/openid-configuration`;
205
- return Response.redirect(url);
206
- }),
344
+ const corsOpts = typeof opts.cors === "boolean"
345
+ ? { allowedOrigins: [], allowedHeaders: [], exposedHeaders: [] }
346
+ : opts.cors;
347
+ let trustedOriginsOption;
348
+ const cors = corsRouter(http, {
349
+ allowedOrigins: async (request) => {
350
+ trustedOriginsOption =
351
+ trustedOriginsOption ??
352
+ (await authDummy.$context).options.trustedOrigins ??
353
+ [];
354
+ const trustedOrigins = Array.isArray(trustedOriginsOption)
355
+ ? trustedOriginsOption
356
+ : await trustedOriginsOption(request);
357
+ return trustedOrigins
358
+ .map((origin) =>
359
+ // Strip trailing wildcards, unsupported for allowedOrigins
360
+ origin.endsWith("*") && origin.length > 1
361
+ ? origin.slice(0, -1)
362
+ : origin)
363
+ .concat(corsOpts.allowedOrigins ?? []);
364
+ },
365
+ allowCredentials: true,
366
+ allowedHeaders: ["Content-Type", "Better-Auth-Cookie"].concat(corsOpts.allowedHeaders ?? []),
367
+ exposedHeaders: ["Set-Better-Auth-Cookie"].concat(corsOpts.exposedHeaders ?? []),
368
+ debug: config?.verbose,
369
+ enforceAllowOrigins: false,
207
370
  });
208
- }
209
- if (!opts.cors) {
210
- http.route({
371
+ cors.route({
211
372
  pathPrefix: `${path}/`,
212
373
  method: "GET",
213
374
  handler: authRequestHandler,
214
375
  });
215
- http.route({
376
+ cors.route({
216
377
  pathPrefix: `${path}/`,
217
378
  method: "POST",
218
379
  handler: authRequestHandler,
219
380
  });
220
- return;
221
- }
222
- const corsOpts = typeof opts.cors === "boolean"
223
- ? { allowedOrigins: [], allowedHeaders: [], exposedHeaders: [] }
224
- : opts.cors;
225
- const cors = corsRouter(http, {
226
- allowedOrigins: async (request) => {
227
- const trustedOriginsOption = (await createAuth({}).$context).options.trustedOrigins ?? [];
228
- const trustedOrigins = Array.isArray(trustedOriginsOption)
229
- ? trustedOriginsOption
230
- : await trustedOriginsOption(request);
231
- return trustedOrigins
232
- .map((origin) =>
233
- // Strip trailing wildcards, unsupported for allowedOrigins
234
- origin.endsWith("*") && origin.length > 1
235
- ? origin.slice(0, -1)
236
- : origin)
237
- .concat(corsOpts.allowedOrigins ?? []);
238
- },
239
- allowCredentials: true,
240
- allowedHeaders: ["Content-Type", "Better-Auth-Cookie"].concat(corsOpts.allowedHeaders ?? []),
241
- exposedHeaders: ["Set-Better-Auth-Cookie"].concat(corsOpts.exposedHeaders ?? []),
242
- debug: this.config?.verbose,
243
- enforceAllowOrigins: false,
244
- });
245
- cors.route({
246
- pathPrefix: `${path}/`,
247
- method: "GET",
248
- handler: authRequestHandler,
249
- });
250
- cors.route({
251
- pathPrefix: `${path}/`,
252
- method: "POST",
253
- handler: authRequestHandler,
254
- });
255
- }
256
- }
381
+ },
382
+ };
383
+ };
257
384
  //# sourceMappingURL=index.js.map