@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,45 @@
1
+ import { betterAuth } from "better-auth";
2
+ import { GenericActionCtx } from "convex/server";
3
+ import { CreateAuth } from "../client/index.js";
4
+ export declare const getCookieName: (createAuth: CreateAuth) => Promise<string>;
5
+ export declare const fetchSession: <T extends (ctx: GenericActionCtx<any>) => ReturnType<typeof betterAuth>>(request: Request, opts: {
6
+ convexSiteUrl: string;
7
+ verbose?: boolean;
8
+ }) => Promise<{
9
+ session: ReturnType<T>["$Infer"]["Session"] | null;
10
+ }>;
11
+ export declare const reactStartHandler: (request: Request, opts: {
12
+ convexSiteUrl: string;
13
+ verbose?: boolean;
14
+ }) => Promise<Response>;
15
+ export declare const reactStartHelpers: (createAuth: CreateAuth, opts: {
16
+ convexSiteUrl: string;
17
+ verbose?: boolean;
18
+ }) => {
19
+ fetchSession: (request: Request) => Promise<{
20
+ session: {
21
+ session: {
22
+ id: string;
23
+ userId: string;
24
+ expiresAt: Date;
25
+ createdAt: Date;
26
+ updatedAt: Date;
27
+ token: string;
28
+ ipAddress?: string | null | undefined;
29
+ userAgent?: string | null | undefined;
30
+ };
31
+ user: {
32
+ id: string;
33
+ email: string;
34
+ emailVerified: boolean;
35
+ name: string;
36
+ createdAt: Date;
37
+ updatedAt: Date;
38
+ image?: string | null | undefined;
39
+ };
40
+ } | null;
41
+ }>;
42
+ reactStartHandler: (request: Request) => Promise<Response>;
43
+ getCookieName: () => Promise<string>;
44
+ };
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react-start/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,OAAO,EAAE,UAAU,EAA2B,MAAM,WAAW,CAAC;AAEhE,eAAO,MAAM,aAAa,GAAU,YAAY,UAAU,oBAKzD,CAAC;AAeF,eAAO,MAAM,YAAY,GACvB,CAAC,SAAS,CAAC,GAAG,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,OAAO,UAAU,CAAC,EAEvE,SAAS,OAAO,EAChB,MAAM;IACJ,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;;EAoBF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,OAAO,EAChB,MAAM;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,sBAOnD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,YAAY,UAAU,EACtB,MAAM;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE;4BAexB,OAAO;;;;;;;;;;;;;;;;;;;;;;;iCACF,OAAO;;CAGvC,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { createCookieGetter } from "better-auth/cookies";
2
+ import { betterFetch } from "@better-fetch/fetch";
3
+ import { JWT_COOKIE_NAME } from "../plugins/convex/index.js";
4
+ import { oneLine } from "common-tags";
5
+ import { getInactiveAuthInstance } from "../client/index.js";
6
+ export const getCookieName = async (createAuth) => {
7
+ const auth = getInactiveAuthInstance(createAuth);
8
+ const createCookie = createCookieGetter(auth.options);
9
+ const cookie = createCookie(JWT_COOKIE_NAME);
10
+ return cookie.name;
11
+ };
12
+ const requireConvexSiteUrl = (opts, calledFrom) => {
13
+ if (!opts.convexSiteUrl) {
14
+ throw new Error(`${calledFrom}: opts.convexSiteUrl is required`);
15
+ }
16
+ if (opts.verbose) {
17
+ console.log(`${calledFrom}: opts.convexSiteUrl: ${opts.convexSiteUrl}`);
18
+ }
19
+ return opts.convexSiteUrl;
20
+ };
21
+ export const fetchSession = async (request, opts) => {
22
+ if (!request) {
23
+ throw new Error("No request found");
24
+ }
25
+ const convexSiteUrl = requireConvexSiteUrl(opts, "fetchSession");
26
+ const { data: session } = await betterFetch("/api/auth/get-session", {
27
+ baseURL: convexSiteUrl,
28
+ headers: {
29
+ cookie: request.headers.get("cookie") ?? "",
30
+ },
31
+ });
32
+ return {
33
+ session,
34
+ };
35
+ };
36
+ export const reactStartHandler = (request, opts) => {
37
+ const requestUrl = new URL(request.url);
38
+ const convexSiteUrl = requireConvexSiteUrl(opts, "reactStartHandler");
39
+ const nextUrl = `${convexSiteUrl}${requestUrl.pathname}${requestUrl.search}`;
40
+ request.headers.set("accept-encoding", "application/json");
41
+ return fetch(nextUrl, new Request(request, { redirect: "manual" }));
42
+ };
43
+ export const reactStartHelpers = (createAuth, opts) => {
44
+ if (!opts.convexSiteUrl) {
45
+ throw new Error("opts.convexSiteUrl is required");
46
+ }
47
+ if (opts.convexSiteUrl.endsWith(".convex.cloud")) {
48
+ throw new Error(oneLine(`
49
+ opts.convexSiteUrl ends with .convex.cloud, which is your cloud URL.
50
+ Use your Convex site URL instead.
51
+ https://docs.convex.dev/production/environment-variables#system-environment-variables
52
+ `));
53
+ }
54
+ return {
55
+ fetchSession: (request) => fetchSession(request, opts),
56
+ reactStartHandler: (request) => reactStartHandler(request, opts),
57
+ getCookieName: () => getCookieName(createAuth),
58
+ };
59
+ };
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/react-start/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { RunActionCtx, RunCtx, RunMutationCtx, RunQueryCtx } from "../client/index.js";
2
+ export declare const requireEnv: (name: string) => string;
3
+ export declare const isQueryCtx: (ctx: RunCtx) => ctx is RunQueryCtx;
4
+ export declare const isMutationCtx: (ctx: RunCtx) => ctx is RunMutationCtx;
5
+ export declare const isActionCtx: (ctx: RunCtx) => ctx is RunActionCtx;
6
+ export declare const requireQueryCtx: (ctx: RunCtx) => RunQueryCtx;
7
+ export declare const requireMutationCtx: (ctx: RunCtx) => RunMutationCtx;
8
+ export declare const requireActionCtx: (ctx: RunCtx) => RunActionCtx;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9E,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,WAMtC,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,GAAG,IAAI,WAE/C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,GAAG,IAAI,cAElD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,GAAG,IAAI,YAEhD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,WAK7C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,cAKhD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,YAK9C,CAAC"}
@@ -0,0 +1,35 @@
1
+ export const requireEnv = (name) => {
2
+ const value = process.env[name];
3
+ if (value === undefined) {
4
+ throw new Error(`Missing environment variable \`${name}\``);
5
+ }
6
+ return value;
7
+ };
8
+ export const isQueryCtx = (ctx) => {
9
+ return "runQuery" in ctx;
10
+ };
11
+ export const isMutationCtx = (ctx) => {
12
+ return "runMutation" in ctx;
13
+ };
14
+ export const isActionCtx = (ctx) => {
15
+ return "runAction" in ctx;
16
+ };
17
+ export const requireQueryCtx = (ctx) => {
18
+ if (!isQueryCtx(ctx)) {
19
+ throw new Error("Query context required");
20
+ }
21
+ return ctx;
22
+ };
23
+ export const requireMutationCtx = (ctx) => {
24
+ if (!isMutationCtx(ctx)) {
25
+ throw new Error("Mutation context required");
26
+ }
27
+ return ctx;
28
+ };
29
+ export const requireActionCtx = (ctx) => {
30
+ if (!isActionCtx(ctx)) {
31
+ throw new Error("Action context required");
32
+ }
33
+ return ctx;
34
+ };
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAsB,EAAE;IAC5D,OAAO,UAAU,IAAI,GAAG,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAyB,EAAE;IAClE,OAAO,aAAa,IAAI,GAAG,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAuB,EAAE;IAC9D,OAAO,WAAW,IAAI,GAAG,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAW,EAAe,EAAE;IAC1D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAkB,EAAE;IAChE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAgB,EAAE;IAC5D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "bugs": {
7
7
  "url": "https://github.com/get-convex/better-auth/issues"
8
8
  },
9
- "version": "0.8.0-alpha.8",
9
+ "version": "0.8.0",
10
10
  "versionMetadata": {
11
11
  "branch": "main",
12
12
  "label": "alpha"
@@ -29,9 +29,8 @@
29
29
  "build:cjs:generatePackageJson": "echo '{\\n \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json",
30
30
  "build:watch": "chokidar 'tsconfig*.json' 'src/**/*.ts' -c 'npm run build' --initial",
31
31
  "typecheck": "tsc --noEmit",
32
- "prepare": "npm run build",
33
32
  "prepack": "node node10stubs.mjs",
34
- "prepublishOnly": "npm run generate && npm run build",
33
+ "prepublishOnly": "npm run build",
35
34
  "postpack": "node node10stubs.mjs --cleanup",
36
35
  "generate": "concurrently \"cd examples/next && npm run generate\" \"cd examples/react && npm run generate\" \"cd examples/tanstack && npm run generate\"",
37
36
  "test": "vitest run",
@@ -48,20 +47,36 @@
48
47
  "./package.json": "./package.json",
49
48
  ".": {
50
49
  "import": {
50
+ "@convex-dev/component-source": "./src/client/index.ts",
51
51
  "types": "./dist/esm/client/index.d.ts",
52
52
  "default": "./dist/esm/client/index.js"
53
53
  },
54
54
  "require": {
55
+ "@convex-dev/component-source": "./src/client/index.ts",
55
56
  "types": "./dist/commonjs/client/index.d.ts",
56
57
  "default": "./dist/commonjs/client/index.js"
57
58
  }
58
59
  },
60
+ "./adapter": {
61
+ "import": {
62
+ "@convex-dev/component-source": "./src/component/adapter.ts",
63
+ "types": "./dist/esm/component/adapter.d.ts",
64
+ "default": "./dist/esm/component/adapter.js"
65
+ },
66
+ "require": {
67
+ "@convex-dev/component-source": "./src/component/adapter.ts",
68
+ "types": "./dist/commonjs/component/adapter.d.ts",
69
+ "default": "./dist/commonjs/component/adapter.js"
70
+ }
71
+ },
59
72
  "./client/plugins": {
60
73
  "import": {
74
+ "@convex-dev/component-source": "./src/client/plugins/index.ts",
61
75
  "types": "./dist/esm/client/plugins/index.d.ts",
62
76
  "default": "./dist/esm/client/plugins/index.js"
63
77
  },
64
78
  "require": {
79
+ "@convex-dev/component-source": "./src/client/plugins/index.ts",
65
80
  "types": "./dist/commonjs/client/plugins/index.d.ts",
66
81
  "default": "./dist/commonjs/client/plugins/index.js"
67
82
  }
@@ -78,20 +93,24 @@
78
93
  },
79
94
  "./plugins": {
80
95
  "import": {
96
+ "@convex-dev/component-source": "./src/plugins/index.ts",
81
97
  "types": "./dist/esm/plugins/index.d.ts",
82
98
  "default": "./dist/esm/plugins/index.js"
83
99
  },
84
100
  "require": {
101
+ "@convex-dev/component-source": "./src/plugins/index.ts",
85
102
  "types": "./dist/commonjs/plugins/index.d.ts",
86
103
  "default": "./dist/commonjs/plugins/index.js"
87
104
  }
88
105
  },
89
106
  "./react": {
90
107
  "import": {
108
+ "@convex-dev/component-source": "./src/react/index.tsx",
91
109
  "types": "./dist/esm/react/index.d.ts",
92
110
  "default": "./dist/esm/react/index.js"
93
111
  },
94
112
  "require": {
113
+ "@convex-dev/component-source": "./src/react/index.tsx",
95
114
  "types": "./dist/commonjs/react/index.d.ts",
96
115
  "default": "./dist/commonjs/react/index.js"
97
116
  }
@@ -108,16 +127,19 @@
108
127
  },
109
128
  "./utils": {
110
129
  "import": {
130
+ "@convex-dev/component-source": "./src/utils/index.ts",
111
131
  "types": "./dist/esm/utils/index.d.ts",
112
132
  "default": "./dist/esm/utils/index.js"
113
133
  },
114
134
  "require": {
135
+ "@convex-dev/component-source": "./src/utils/index.ts",
115
136
  "types": "./dist/commonjs/utils/index.d.ts",
116
137
  "default": "./dist/commonjs/utils/index.js"
117
138
  }
118
139
  },
119
140
  "./convex.config": {
120
141
  "import": {
142
+ "@convex-dev/component-source": "./src/component/convex.config.ts",
121
143
  "types": "./dist/esm/component/convex.config.d.ts",
122
144
  "default": "./dist/esm/component/convex.config.js"
123
145
  }
@@ -131,13 +153,13 @@
131
153
  }
132
154
  },
133
155
  "peerDependencies": {
134
- "better-auth": "1.3.7",
135
- "convex": ">=1.25.0 <1.35.0",
156
+ "better-auth": "1.3.8",
157
+ "convex": "^1.26.2",
136
158
  "react": "^18.3.1 || ^19.0.0",
137
159
  "react-dom": "^18.3.1 || ^19.0.0"
138
160
  },
139
161
  "devDependencies": {
140
- "@better-auth/stripe": "1.3.7",
162
+ "@better-auth/stripe": "1.3.8",
141
163
  "@edge-runtime/vm": "^5.0.0",
142
164
  "@eslint/js": "^9.9.1",
143
165
  "@polar-sh/better-auth": "^1.0.4",
@@ -157,7 +179,7 @@
157
179
  "prettier": "3.2.5",
158
180
  "semver": "^7.7.2",
159
181
  "tsc-alias": "^1.8.16",
160
- "typescript": "^5.8.2",
182
+ "typescript": "5.8.3",
161
183
  "typescript-eslint": "^8.4.0",
162
184
  "vitest": "^3.2.2"
163
185
  },
@@ -165,6 +187,7 @@
165
187
  "types": "./dist/commonjs/client/index.d.ts",
166
188
  "module": "./dist/esm/client/index.js",
167
189
  "dependencies": {
190
+ "@better-fetch/fetch": "^1.1.18",
168
191
  "common-tags": "^1.8.2",
169
192
  "convex-helpers": "^0.1.95",
170
193
  "is-network-error": "^1.1.0",
package/src/auth.ts ADDED
@@ -0,0 +1,57 @@
1
+ import { betterAuth, BetterAuthOptions } from "better-auth";
2
+ import {
3
+ anonymous,
4
+ bearer,
5
+ emailOTP,
6
+ genericOAuth,
7
+ jwt,
8
+ magicLink,
9
+ oidcProvider,
10
+ oneTap,
11
+ oneTimeToken,
12
+ phoneNumber,
13
+ twoFactor,
14
+ username,
15
+ } from "better-auth/plugins";
16
+ import { convex } from "./plugins";
17
+ import { passkey } from "better-auth/plugins/passkey";
18
+ import { convexAdapter } from "./client";
19
+
20
+ // This is the config used to generate the schema
21
+ const options = {
22
+ logger: {
23
+ disabled: true,
24
+ },
25
+ database: convexAdapter({} as any, {} as any),
26
+ rateLimit: {
27
+ storage: "database",
28
+ },
29
+ plugins: [
30
+ twoFactor(),
31
+ anonymous(),
32
+ username(),
33
+ phoneNumber(),
34
+ magicLink({ sendMagicLink: async () => {} }),
35
+ emailOTP({ sendVerificationOTP: async () => {} }),
36
+ passkey(),
37
+ genericOAuth({
38
+ config: [
39
+ {
40
+ clientId: "",
41
+ clientSecret: "",
42
+ providerId: "",
43
+ },
44
+ ],
45
+ }),
46
+ oneTap(),
47
+ oidcProvider({
48
+ loginPage: "/login",
49
+ }),
50
+ bearer(),
51
+ oneTimeToken(),
52
+ jwt(),
53
+ convex(),
54
+ ],
55
+ } as BetterAuthOptions; // assert type to avoid overloading ts compiler
56
+ const config = betterAuth(options) as ReturnType<typeof betterAuth>;
57
+ export { config as auth };
@@ -421,4 +421,19 @@ describe("Convex Adapter Tests", async () => {
421
421
  })
422
422
  ).toEqual(null);
423
423
  });
424
+
425
+ test("should fail to create a record with a unique field that already exists", async () => {
426
+ const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
427
+ const adapter = await getAdapter(t)();
428
+ await adapter.create({
429
+ model: "user",
430
+ data: { name: "foo", email: "foo@bar.com" },
431
+ });
432
+ await expect(
433
+ adapter.create({
434
+ model: "user",
435
+ data: { name: "foo", email: "foo@bar.com" },
436
+ })
437
+ ).rejects.toThrow("user email already exists");
438
+ });
424
439
  });
@@ -1,17 +1,22 @@
1
- import { BetterAuth } from "./index";
2
1
  import {
3
2
  AdapterDebugLogs,
4
3
  CleanedWhere,
5
4
  createAdapter,
6
5
  } from "better-auth/adapters";
7
6
  import {
7
+ createFunctionHandle,
8
+ FunctionHandle,
8
9
  GenericActionCtx,
9
- GenericMutationCtx,
10
- GenericQueryCtx,
10
+ GenericDataModel,
11
11
  PaginationOptions,
12
12
  PaginationResult,
13
+ SchemaDefinition,
13
14
  } from "convex/server";
14
15
  import { SetOptional } from "type-fest";
16
+ import { createSchema } from "./createSchema";
17
+ import { AuthFunctions, GenericCtx, Triggers, UseApi } from ".";
18
+ import defaultSchema from "../component/schema";
19
+ import { api as componentApi } from "../component/_generated/api";
15
20
 
16
21
  const handlePagination = async (
17
22
  next: ({
@@ -88,28 +93,24 @@ const parseWhere = (where?: CleanedWhere[]): ConvexCleanedWhere[] => {
88
93
  }) as ConvexCleanedWhere[];
89
94
  };
90
95
 
91
- type GenericCtx =
92
- | GenericQueryCtx<any>
93
- | GenericMutationCtx<any>
94
- | GenericActionCtx<any>;
95
-
96
- interface ConvexAdapterConfig {
97
- /**
98
- * Helps you debug issues with the adapter.
99
- */
100
- debugLogs?: AdapterDebugLogs;
101
- }
102
- export const convexAdapter = (
103
- ctx: GenericCtx,
104
- component: BetterAuth,
105
- config: ConvexAdapterConfig = {}
96
+ export const convexAdapter = <
97
+ DataModel extends GenericDataModel,
98
+ Ctx extends GenericCtx<DataModel> = GenericActionCtx<DataModel>,
99
+ Schema extends SchemaDefinition<any, any> = typeof defaultSchema,
100
+ >(
101
+ ctx: Ctx,
102
+ api: UseApi<typeof componentApi>,
103
+ config: {
104
+ debugLogs?: AdapterDebugLogs;
105
+ authFunctions?: AuthFunctions;
106
+ triggers?: Triggers<DataModel, Schema>;
107
+ } = {}
106
108
  ) => {
107
- const { debugLogs } = config;
108
109
  return createAdapter({
109
110
  config: {
110
111
  adapterId: "convex",
111
112
  adapterName: "Convex Adapter",
112
- debugLogs: component.config.verbose ?? debugLogs ?? false,
113
+ debugLogs: config.debugLogs || false,
113
114
  disableIdGeneration: true,
114
115
  supportsNumericIds: false,
115
116
  usePlural: false,
@@ -137,39 +138,36 @@ export const convexAdapter = (
137
138
  options.telemetry = { enabled: false };
138
139
  return {
139
140
  id: "convex",
141
+ createSchema,
140
142
  create: async ({ model, data, select }): Promise<any> => {
141
143
  if (!("runMutation" in ctx)) {
142
144
  throw new Error("ctx is not a mutation ctx");
143
145
  }
144
- if (select) {
145
- throw new Error("select is not supported");
146
- }
147
- const createFn =
148
- model === "user"
149
- ? component.config.authFunctions.createUser
150
- : model === "session"
151
- ? component.config.authFunctions.createSession
152
- : component.component.lib.create;
153
- return await ctx.runMutation(createFn, {
146
+ const onCreateHandle =
147
+ config.authFunctions?.onCreate && config.triggers?.[model]?.onCreate
148
+ ? ((await createFunctionHandle(
149
+ config.authFunctions.onCreate
150
+ )) as FunctionHandle<"mutation">)
151
+ : undefined;
152
+ return ctx.runMutation(api.adapter.create, {
154
153
  input: { model, data },
154
+ select,
155
+ onCreateHandle: onCreateHandle,
155
156
  });
156
157
  },
157
158
  findOne: async (data): Promise<any> => {
158
159
  if (data.where?.every((w) => w.connector === "OR")) {
159
160
  for (const w of data.where) {
160
- const result = await ctx.runQuery(
161
- component.component.lib.findOne,
162
- {
163
- ...data,
164
- where: parseWhere([w]),
165
- }
166
- );
161
+ const result = await ctx.runQuery(api.adapter.findOne, {
162
+ ...data,
163
+ where: parseWhere([w]),
164
+ });
167
165
  if (result) {
168
166
  return result;
169
167
  }
170
168
  }
171
169
  }
172
- return await ctx.runQuery(component.component.lib.findOne, {
170
+ return await ctx.runQuery(api.adapter.findOne, {
173
171
  ...data,
174
172
  where: parseWhere(data.where),
175
173
  });
@@ -183,7 +181,7 @@ export const convexAdapter = (
183
181
  }
184
182
  const result = await handlePagination(
185
183
  async ({ paginationOpts }) => {
186
- return await ctx.runQuery(component.component.lib.findMany, {
184
+ return await ctx.runQuery(api.adapter.findMany, {
187
185
  ...data,
188
186
  where: parseWhere(data.where),
189
187
  paginationOpts,
@@ -199,7 +197,7 @@ export const convexAdapter = (
199
197
  throw new Error("OR connector not supported in findMany");
200
198
  }
201
199
  const result = await handlePagination(async ({ paginationOpts }) => {
202
- return await ctx.runQuery(component.component.lib.findMany, {
200
+ return await ctx.runQuery(api.adapter.findMany, {
203
201
  ...data,
204
202
  where: parseWhere(data.where),
205
203
  paginationOpts,
@@ -212,16 +210,20 @@ export const convexAdapter = (
212
210
  throw new Error("ctx is not a mutation ctx");
213
211
  }
214
212
  if (data.where?.length === 1 && data.where[0].operator === "eq") {
215
- const updateFn =
216
- data.model === "user"
217
- ? component.config.authFunctions.updateUser
218
- : component.component.lib.updateOne;
219
- return ctx.runMutation(updateFn, {
213
+ const onUpdateHandle =
214
+ config.authFunctions?.onUpdate &&
215
+ config.triggers?.[data.model]?.onUpdate
216
+ ? ((await createFunctionHandle(
217
+ config.authFunctions.onUpdate
218
+ )) as FunctionHandle<"mutation">)
219
+ : undefined;
220
+ return ctx.runMutation(api.adapter.updateOne, {
220
221
  input: {
221
222
  model: data.model,
222
223
  where: parseWhere(data.where),
223
224
  update: data.update as any,
224
225
  },
226
+ onUpdateHandle: onUpdateHandle,
225
227
  });
226
228
  }
227
229
  throw new Error("where clause not supported");
@@ -230,25 +232,40 @@ export const convexAdapter = (
230
232
  if (!("runMutation" in ctx)) {
231
233
  throw new Error("ctx is not a mutation ctx");
232
234
  }
233
- const deleteFn =
234
- data.model === "user"
235
- ? component.config.authFunctions.deleteUser
236
- : component.component.lib.deleteOne;
237
- await ctx.runMutation(deleteFn, {
238
- model: data.model,
239
- where: parseWhere(data.where),
235
+ const onDeleteHandle =
236
+ config.authFunctions?.onDelete &&
237
+ config.triggers?.[data.model]?.onDelete
238
+ ? ((await createFunctionHandle(
239
+ config.authFunctions.onDelete
240
+ )) as FunctionHandle<"mutation">)
241
+ : undefined;
242
+ await ctx.runMutation(api.adapter.deleteOne, {
243
+ input: {
244
+ model: data.model,
245
+ where: parseWhere(data.where),
246
+ },
247
+ onDeleteHandle: onDeleteHandle,
240
248
  });
241
- return;
242
249
  },
243
250
  deleteMany: async (data) => {
244
251
  if (!("runMutation" in ctx)) {
245
252
  throw new Error("ctx is not a mutation ctx");
246
253
  }
254
+ const onDeleteHandle =
255
+ config.authFunctions?.onDelete &&
256
+ config.triggers?.[data.model]?.onDelete
257
+ ? ((await createFunctionHandle(
258
+ config.authFunctions.onDelete
259
+ )) as FunctionHandle<"mutation">)
260
+ : undefined;
247
261
  const result = await handlePagination(async ({ paginationOpts }) => {
248
- return await ctx.runMutation(component.component.lib.deleteMany, {
249
- ...data,
250
- where: parseWhere(data.where),
262
+ return await ctx.runMutation(api.adapter.deleteMany, {
263
+ input: {
264
+ ...data,
265
+ where: parseWhere(data.where),
266
+ },
251
267
  paginationOpts,
268
+ onDeleteHandle: onDeleteHandle,
252
269
  });
253
270
  });
254
271
  return result.count;
@@ -257,13 +274,21 @@ export const convexAdapter = (
257
274
  if (!("runMutation" in ctx)) {
258
275
  throw new Error("ctx is not an action ctx");
259
276
  }
277
+ const onUpdateHandle =
278
+ config.authFunctions?.onUpdate &&
279
+ config.triggers?.[data.model]?.onUpdate
280
+ ? ((await createFunctionHandle(
281
+ config.authFunctions.onUpdate
282
+ )) as FunctionHandle<"mutation">)
283
+ : undefined;
260
284
  const result = await handlePagination(async ({ paginationOpts }) => {
261
- return await ctx.runMutation(component.component.lib.updateMany, {
285
+ return await ctx.runMutation(api.adapter.updateMany, {
262
286
  input: {
263
287
  ...data,
264
288
  where: parseWhere(data.where),
265
- paginationOpts,
266
289
  },
290
+ paginationOpts,
291
+ onUpdateHandle: onUpdateHandle,
267
292
  });
268
293
  });
269
294
  return result.count;