@convex-dev/better-auth 0.6.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 (181) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +44 -0
  3. package/dist/commonjs/client/adapter.d.ts +4 -0
  4. package/dist/commonjs/client/adapter.d.ts.map +1 -0
  5. package/dist/commonjs/client/adapter.js +189 -0
  6. package/dist/commonjs/client/adapter.js.map +1 -0
  7. package/dist/commonjs/client/cors.d.ts +72 -0
  8. package/dist/commonjs/client/cors.d.ts.map +1 -0
  9. package/dist/commonjs/client/cors.js +281 -0
  10. package/dist/commonjs/client/cors.js.map +1 -0
  11. package/dist/commonjs/client/index.d.ts +302 -0
  12. package/dist/commonjs/client/index.d.ts.map +1 -0
  13. package/dist/commonjs/client/index.js +232 -0
  14. package/dist/commonjs/client/index.js.map +1 -0
  15. package/dist/commonjs/client/plugins/index.d.ts +3 -0
  16. package/dist/commonjs/client/plugins/index.d.ts.map +1 -0
  17. package/dist/commonjs/client/plugins/index.js +3 -0
  18. package/dist/commonjs/client/plugins/index.js.map +1 -0
  19. package/dist/commonjs/component/_generated/api.d.ts +12 -0
  20. package/dist/commonjs/component/_generated/api.d.ts.map +1 -0
  21. package/dist/commonjs/component/_generated/api.js +22 -0
  22. package/dist/commonjs/component/_generated/api.js.map +1 -0
  23. package/dist/commonjs/component/_generated/server.d.ts +64 -0
  24. package/dist/commonjs/component/_generated/server.d.ts.map +1 -0
  25. package/dist/commonjs/component/_generated/server.js +74 -0
  26. package/dist/commonjs/component/_generated/server.js.map +1 -0
  27. package/dist/commonjs/component/convex.config.d.ts +3 -0
  28. package/dist/commonjs/component/convex.config.d.ts.map +1 -0
  29. package/dist/commonjs/component/convex.config.js +4 -0
  30. package/dist/commonjs/component/convex.config.js.map +1 -0
  31. package/dist/commonjs/component/lib.d.ts +584 -0
  32. package/dist/commonjs/component/lib.d.ts.map +1 -0
  33. package/dist/commonjs/component/lib.js +323 -0
  34. package/dist/commonjs/component/lib.js.map +1 -0
  35. package/dist/commonjs/component/schema.d.ts +116 -0
  36. package/dist/commonjs/component/schema.d.ts.map +1 -0
  37. package/dist/commonjs/component/schema.js +68 -0
  38. package/dist/commonjs/component/schema.js.map +1 -0
  39. package/dist/commonjs/component/util.d.ts +394 -0
  40. package/dist/commonjs/component/util.d.ts.map +1 -0
  41. package/dist/commonjs/component/util.js +4 -0
  42. package/dist/commonjs/component/util.js.map +1 -0
  43. package/dist/commonjs/nextjs/index.d.ts +10 -0
  44. package/dist/commonjs/nextjs/index.d.ts.map +1 -0
  45. package/dist/commonjs/nextjs/index.js +23 -0
  46. package/dist/commonjs/nextjs/index.js.map +1 -0
  47. package/dist/commonjs/package.json +3 -0
  48. package/dist/commonjs/plugins/convex/client.d.ts +6 -0
  49. package/dist/commonjs/plugins/convex/client.d.ts.map +1 -0
  50. package/dist/commonjs/plugins/convex/client.js +7 -0
  51. package/dist/commonjs/plugins/convex/client.js.map +1 -0
  52. package/dist/commonjs/plugins/convex/index.d.ts +280 -0
  53. package/dist/commonjs/plugins/convex/index.d.ts.map +1 -0
  54. package/dist/commonjs/plugins/convex/index.js +253 -0
  55. package/dist/commonjs/plugins/convex/index.js.map +1 -0
  56. package/dist/commonjs/plugins/cross-domain/client.d.ts +123 -0
  57. package/dist/commonjs/plugins/cross-domain/client.d.ts.map +1 -0
  58. package/dist/commonjs/plugins/cross-domain/client.js +164 -0
  59. package/dist/commonjs/plugins/cross-domain/client.js.map +1 -0
  60. package/dist/commonjs/plugins/cross-domain/index.d.ts +81 -0
  61. package/dist/commonjs/plugins/cross-domain/index.d.ts.map +1 -0
  62. package/dist/commonjs/plugins/cross-domain/index.js +135 -0
  63. package/dist/commonjs/plugins/cross-domain/index.js.map +1 -0
  64. package/dist/commonjs/plugins/index.d.ts +3 -0
  65. package/dist/commonjs/plugins/index.d.ts.map +1 -0
  66. package/dist/commonjs/plugins/index.js +3 -0
  67. package/dist/commonjs/plugins/index.js.map +1 -0
  68. package/dist/commonjs/react/client.d.ts +31 -0
  69. package/dist/commonjs/react/client.d.ts.map +1 -0
  70. package/dist/commonjs/react/client.js +102 -0
  71. package/dist/commonjs/react/client.js.map +1 -0
  72. package/dist/commonjs/react/index.d.ts +9 -0
  73. package/dist/commonjs/react/index.d.ts.map +1 -0
  74. package/dist/commonjs/react/index.js +15 -0
  75. package/dist/commonjs/react/index.js.map +1 -0
  76. package/dist/commonjs/react-start/index.d.ts +10 -0
  77. package/dist/commonjs/react-start/index.d.ts.map +1 -0
  78. package/dist/commonjs/react-start/index.js +32 -0
  79. package/dist/commonjs/react-start/index.js.map +1 -0
  80. package/dist/esm/client/adapter.d.ts +4 -0
  81. package/dist/esm/client/adapter.d.ts.map +1 -0
  82. package/dist/esm/client/adapter.js +189 -0
  83. package/dist/esm/client/adapter.js.map +1 -0
  84. package/dist/esm/client/cors.d.ts +72 -0
  85. package/dist/esm/client/cors.d.ts.map +1 -0
  86. package/dist/esm/client/cors.js +281 -0
  87. package/dist/esm/client/cors.js.map +1 -0
  88. package/dist/esm/client/index.d.ts +302 -0
  89. package/dist/esm/client/index.d.ts.map +1 -0
  90. package/dist/esm/client/index.js +232 -0
  91. package/dist/esm/client/index.js.map +1 -0
  92. package/dist/esm/client/plugins/index.d.ts +3 -0
  93. package/dist/esm/client/plugins/index.d.ts.map +1 -0
  94. package/dist/esm/client/plugins/index.js +3 -0
  95. package/dist/esm/client/plugins/index.js.map +1 -0
  96. package/dist/esm/component/_generated/api.d.ts +12 -0
  97. package/dist/esm/component/_generated/api.d.ts.map +1 -0
  98. package/dist/esm/component/_generated/api.js +22 -0
  99. package/dist/esm/component/_generated/api.js.map +1 -0
  100. package/dist/esm/component/_generated/server.d.ts +64 -0
  101. package/dist/esm/component/_generated/server.d.ts.map +1 -0
  102. package/dist/esm/component/_generated/server.js +74 -0
  103. package/dist/esm/component/_generated/server.js.map +1 -0
  104. package/dist/esm/component/convex.config.d.ts +3 -0
  105. package/dist/esm/component/convex.config.d.ts.map +1 -0
  106. package/dist/esm/component/convex.config.js +4 -0
  107. package/dist/esm/component/convex.config.js.map +1 -0
  108. package/dist/esm/component/lib.d.ts +584 -0
  109. package/dist/esm/component/lib.d.ts.map +1 -0
  110. package/dist/esm/component/lib.js +323 -0
  111. package/dist/esm/component/lib.js.map +1 -0
  112. package/dist/esm/component/schema.d.ts +116 -0
  113. package/dist/esm/component/schema.d.ts.map +1 -0
  114. package/dist/esm/component/schema.js +68 -0
  115. package/dist/esm/component/schema.js.map +1 -0
  116. package/dist/esm/component/util.d.ts +394 -0
  117. package/dist/esm/component/util.d.ts.map +1 -0
  118. package/dist/esm/component/util.js +4 -0
  119. package/dist/esm/component/util.js.map +1 -0
  120. package/dist/esm/nextjs/index.d.ts +10 -0
  121. package/dist/esm/nextjs/index.d.ts.map +1 -0
  122. package/dist/esm/nextjs/index.js +23 -0
  123. package/dist/esm/nextjs/index.js.map +1 -0
  124. package/dist/esm/package.json +3 -0
  125. package/dist/esm/plugins/convex/client.d.ts +6 -0
  126. package/dist/esm/plugins/convex/client.d.ts.map +1 -0
  127. package/dist/esm/plugins/convex/client.js +7 -0
  128. package/dist/esm/plugins/convex/client.js.map +1 -0
  129. package/dist/esm/plugins/convex/index.d.ts +280 -0
  130. package/dist/esm/plugins/convex/index.d.ts.map +1 -0
  131. package/dist/esm/plugins/convex/index.js +253 -0
  132. package/dist/esm/plugins/convex/index.js.map +1 -0
  133. package/dist/esm/plugins/cross-domain/client.d.ts +123 -0
  134. package/dist/esm/plugins/cross-domain/client.d.ts.map +1 -0
  135. package/dist/esm/plugins/cross-domain/client.js +164 -0
  136. package/dist/esm/plugins/cross-domain/client.js.map +1 -0
  137. package/dist/esm/plugins/cross-domain/index.d.ts +81 -0
  138. package/dist/esm/plugins/cross-domain/index.d.ts.map +1 -0
  139. package/dist/esm/plugins/cross-domain/index.js +135 -0
  140. package/dist/esm/plugins/cross-domain/index.js.map +1 -0
  141. package/dist/esm/plugins/index.d.ts +3 -0
  142. package/dist/esm/plugins/index.d.ts.map +1 -0
  143. package/dist/esm/plugins/index.js +3 -0
  144. package/dist/esm/plugins/index.js.map +1 -0
  145. package/dist/esm/react/client.d.ts +31 -0
  146. package/dist/esm/react/client.d.ts.map +1 -0
  147. package/dist/esm/react/client.js +102 -0
  148. package/dist/esm/react/client.js.map +1 -0
  149. package/dist/esm/react/index.d.ts +9 -0
  150. package/dist/esm/react/index.d.ts.map +1 -0
  151. package/dist/esm/react/index.js +15 -0
  152. package/dist/esm/react/index.js.map +1 -0
  153. package/dist/esm/react-start/index.d.ts +10 -0
  154. package/dist/esm/react-start/index.d.ts.map +1 -0
  155. package/dist/esm/react-start/index.js +32 -0
  156. package/dist/esm/react-start/index.js.map +1 -0
  157. package/package.json +161 -0
  158. package/plugins/package.json +5 -0
  159. package/react/package.json +5 -0
  160. package/src/client/adapter.ts +236 -0
  161. package/src/client/cors.ts +403 -0
  162. package/src/client/index.ts +381 -0
  163. package/src/client/plugins/index.ts +2 -0
  164. package/src/component/_generated/api.d.ts +313 -0
  165. package/src/component/_generated/api.js +23 -0
  166. package/src/component/_generated/dataModel.d.ts +60 -0
  167. package/src/component/_generated/server.d.ts +149 -0
  168. package/src/component/_generated/server.js +90 -0
  169. package/src/component/convex.config.ts +5 -0
  170. package/src/component/lib.ts +391 -0
  171. package/src/component/schema.ts +74 -0
  172. package/src/component/util.ts +4 -0
  173. package/src/nextjs/index.ts +30 -0
  174. package/src/plugins/convex/client.ts +9 -0
  175. package/src/plugins/convex/index.ts +296 -0
  176. package/src/plugins/cross-domain/client.ts +209 -0
  177. package/src/plugins/cross-domain/index.ts +156 -0
  178. package/src/plugins/index.ts +2 -0
  179. package/src/react/client.tsx +184 -0
  180. package/src/react/index.tsx +38 -0
  181. package/src/react-start/index.ts +51 -0
@@ -0,0 +1,323 @@
1
+ import { action, mutation, query, } from "../component/_generated/server.js";
2
+ import { asyncMap } from "convex-helpers";
3
+ import { v } from "convex/values";
4
+ import { api } from "../component/_generated/api.js";
5
+ import schema from "../component/schema.js";
6
+ import { paginationOptsValidator } from "convex/server";
7
+ import { paginator } from "convex-helpers/server/pagination";
8
+ import { partial } from "convex-helpers/validators";
9
+ export const transformInput = (model, data) => {
10
+ return {
11
+ ...Object.fromEntries(Object.entries(data).map(([key, value]) => {
12
+ if (value instanceof Date) {
13
+ return [key, value.getTime()];
14
+ }
15
+ return [key, value];
16
+ })),
17
+ };
18
+ };
19
+ export const transformOutput = ({ _id, _creationTime, ...data }, _model) => {
20
+ // Provide the expected id field, but it can be overwritten if
21
+ // the model has an id field
22
+ return { id: _id, ...data };
23
+ };
24
+ // Get the session via sessionId in jwt claims
25
+ export const getCurrentSession = query({
26
+ args: {},
27
+ handler: async (ctx) => {
28
+ const identity = await ctx.auth.getUserIdentity();
29
+ if (!identity) {
30
+ return null;
31
+ }
32
+ return ctx.db.get(identity.sessionId);
33
+ },
34
+ });
35
+ export const getByHelper = async (ctx, args) => {
36
+ if (args.field === "id") {
37
+ return ctx.db.get(args.value);
38
+ }
39
+ const query = ctx.db
40
+ .query(args.table)
41
+ .withIndex(args.field, (q) => q.eq(args.field, args.value));
42
+ return args.unique ? await query.unique() : await query.first();
43
+ };
44
+ export const getByArgsValidator = {
45
+ table: v.string(),
46
+ field: v.string(),
47
+ unique: v.optional(v.boolean()),
48
+ value: v.union(v.string(), v.number(), v.boolean(), v.array(v.string()), v.array(v.number()), v.null()),
49
+ };
50
+ // Generic functions
51
+ export const getByQuery = query({
52
+ args: getByArgsValidator,
53
+ handler: async (ctx, args) => {
54
+ const doc = await getByHelper(ctx, args);
55
+ if (!doc) {
56
+ return;
57
+ }
58
+ return transformOutput(doc, args.table);
59
+ },
60
+ });
61
+ export { getByQuery as getBy };
62
+ export const create = mutation({
63
+ args: v.object({
64
+ input: v.union(...Object.values(schema.tables).map((table) => v.object({
65
+ table: v.string(),
66
+ ...table.validator.fields,
67
+ }))),
68
+ }),
69
+ handler: async (ctx, args) => {
70
+ const { table, ...input } = args.input;
71
+ const id = await ctx.db.insert(table, {
72
+ ...input,
73
+ });
74
+ const doc = await ctx.db.get(id);
75
+ if (!doc) {
76
+ throw new Error(`Failed to create ${table}`);
77
+ }
78
+ return transformOutput(doc, table);
79
+ },
80
+ });
81
+ export const updateArgsInputValidator = (table) => {
82
+ return v.object({
83
+ table: v.literal(table),
84
+ where: v.object({ field: v.string(), value: getByArgsValidator.value }),
85
+ value: v.record(v.string(), v.any()),
86
+ });
87
+ };
88
+ const updateArgsValidator = {
89
+ input: v.union(updateArgsInputValidator("account"), updateArgsInputValidator("session"), updateArgsInputValidator("verification"), updateArgsInputValidator("user")),
90
+ };
91
+ export const update = mutation({
92
+ args: updateArgsValidator,
93
+ handler: async (ctx, args) => {
94
+ const { table, where, value } = args.input;
95
+ const doc = where.field === "id"
96
+ ? await ctx.db.get(where.value)
97
+ : await getByHelper(ctx, { table, ...where });
98
+ if (!doc) {
99
+ throw new Error(`Failed to update ${table}`);
100
+ }
101
+ await ctx.db.patch(doc._id, value);
102
+ const updatedDoc = await ctx.db.get(doc._id);
103
+ if (!updatedDoc) {
104
+ throw new Error(`Failed to update ${table}`);
105
+ }
106
+ return transformOutput(updatedDoc, table);
107
+ },
108
+ });
109
+ export const deleteBy = mutation({
110
+ args: getByArgsValidator,
111
+ handler: async (ctx, args) => {
112
+ const doc = await getByHelper(ctx, args);
113
+ if (!doc) {
114
+ return;
115
+ }
116
+ await ctx.db.delete(doc._id);
117
+ // onDeleteUser requires userId from the doc,
118
+ // so just return the whole thing
119
+ return doc;
120
+ },
121
+ });
122
+ // Single purpose functions
123
+ export const getAccountsByUserId = query({
124
+ args: { userId: v.string(), limit: v.optional(v.number()) },
125
+ handler: async (ctx, args) => {
126
+ const query = ctx.db
127
+ .query("account")
128
+ .withIndex("userId", (q) => q.eq("userId", args.userId));
129
+ const docs = args.limit
130
+ ? await query.take(args.limit)
131
+ : await query.collect();
132
+ return docs.map((doc) => transformOutput(doc, "account"));
133
+ },
134
+ });
135
+ export const getJwks = query({
136
+ args: {
137
+ limit: v.optional(v.number()),
138
+ },
139
+ handler: async (ctx, args) => {
140
+ const query = ctx.db.query("jwks");
141
+ const docs = args.limit
142
+ ? await query.take(args.limit)
143
+ : await query.collect();
144
+ return docs.map((doc) => transformOutput(doc, "jwks"));
145
+ },
146
+ });
147
+ export const listVerificationsByIdentifier = query({
148
+ args: {
149
+ identifier: v.string(),
150
+ sortBy: v.optional(v.object({
151
+ field: v.string(),
152
+ direction: v.union(v.literal("asc"), v.literal("desc")),
153
+ })),
154
+ limit: v.optional(v.number()),
155
+ },
156
+ handler: async (ctx, args) => {
157
+ if (args.sortBy && args.sortBy.field !== "createdAt") {
158
+ throw new Error(`Unsupported sortBy field: ${args.sortBy.field}`);
159
+ }
160
+ const query = ctx.db
161
+ .query("verification")
162
+ .withIndex("identifier", (q) => q.eq("identifier", args.identifier))
163
+ .order(args.sortBy?.field === "createdAt" && args.sortBy?.direction
164
+ ? args.sortBy.direction
165
+ : "asc");
166
+ const docs = args.limit
167
+ ? await query.take(args.limit)
168
+ : await query.collect();
169
+ return docs.map((doc) => transformOutput(doc, "verification"));
170
+ },
171
+ });
172
+ export const deleteOldVerificationsPage = mutation({
173
+ args: {
174
+ currentTimestamp: v.number(),
175
+ paginationOpts: v.optional(paginationOptsValidator),
176
+ },
177
+ handler: async (ctx, args) => {
178
+ const paginationOpts = args.paginationOpts ?? {
179
+ numItems: 500,
180
+ cursor: null,
181
+ };
182
+ const { page, ...result } = await paginator(ctx.db, schema)
183
+ .query("verification")
184
+ .withIndex("expiresAt", (q) => q.lt("expiresAt", args.currentTimestamp))
185
+ .paginate(paginationOpts);
186
+ await asyncMap(page, async (doc) => {
187
+ await ctx.db.delete(doc._id);
188
+ });
189
+ return { ...result, count: page.length };
190
+ },
191
+ });
192
+ export const deleteOldVerifications = action({
193
+ args: {
194
+ currentTimestamp: v.number(),
195
+ },
196
+ handler: async (ctx, args) => {
197
+ let count = 0;
198
+ let cursor = null;
199
+ let isDone = false;
200
+ do {
201
+ const result = await ctx.runMutation(api.lib.deleteOldVerificationsPage, {
202
+ currentTimestamp: args.currentTimestamp,
203
+ paginationOpts: {
204
+ numItems: 500,
205
+ cursor,
206
+ },
207
+ });
208
+ count += result.count;
209
+ cursor =
210
+ result.pageStatus &&
211
+ result.splitCursor &&
212
+ ["SplitRecommended", "SplitRequired"].includes(result.pageStatus)
213
+ ? result.splitCursor
214
+ : result.continueCursor;
215
+ isDone = result.isDone;
216
+ } while (!isDone);
217
+ return count;
218
+ },
219
+ });
220
+ export const deleteAllForUserPage = mutation({
221
+ args: {
222
+ table: v.string(),
223
+ userId: v.string(),
224
+ paginationOpts: v.optional(paginationOptsValidator),
225
+ },
226
+ handler: async (ctx, args) => {
227
+ const paginationOpts = args.paginationOpts ?? {
228
+ numItems: 500,
229
+ cursor: null,
230
+ };
231
+ const { page, ...result } = await paginator(ctx.db, schema)
232
+ .query(args.table)
233
+ .withIndex("userId", (q) => q.eq("userId", args.userId))
234
+ .paginate(paginationOpts);
235
+ await asyncMap(page, async (doc) => {
236
+ await ctx.db.delete(doc._id);
237
+ });
238
+ return { ...result, count: page.length };
239
+ },
240
+ });
241
+ export const deleteAllForUser = action({
242
+ args: {
243
+ table: v.string(),
244
+ userId: v.string(),
245
+ },
246
+ handler: async (ctx, args) => {
247
+ let count = 0;
248
+ let cursor = null;
249
+ let isDone = false;
250
+ do {
251
+ const result = await ctx.runMutation(api.lib.deleteAllForUserPage, {
252
+ table: args.table,
253
+ userId: args.userId,
254
+ paginationOpts: {
255
+ numItems: 500,
256
+ cursor,
257
+ },
258
+ });
259
+ count += result.count;
260
+ cursor =
261
+ result.pageStatus &&
262
+ result.splitCursor &&
263
+ ["SplitRecommended", "SplitRequired"].includes(result.pageStatus)
264
+ ? result.splitCursor
265
+ : result.continueCursor;
266
+ isDone = result.isDone;
267
+ } while (!isDone);
268
+ return count;
269
+ },
270
+ });
271
+ export const getAccountByAccountIdAndProviderId = query({
272
+ args: { accountId: v.string(), providerId: v.string() },
273
+ handler: async (ctx, args) => {
274
+ const doc = await ctx.db
275
+ .query("account")
276
+ .withIndex("providerId_accountId", (q) => q.eq("providerId", args.providerId).eq("accountId", args.accountId))
277
+ .unique();
278
+ if (!doc) {
279
+ return;
280
+ }
281
+ return transformOutput(doc, "account");
282
+ },
283
+ });
284
+ export const updateUserProviderAccounts = mutation({
285
+ args: {
286
+ userId: v.string(),
287
+ providerId: v.string(),
288
+ update: v.object(partial(schema.tables.account.validator.fields)),
289
+ },
290
+ handler: async (ctx, args) => {
291
+ const docs = await ctx.db
292
+ .query("account")
293
+ .withIndex("userId_providerId", (q) => q.eq("userId", args.userId).eq("providerId", args.providerId))
294
+ .collect();
295
+ if (docs.length === 0) {
296
+ return 0;
297
+ }
298
+ await asyncMap(docs, async (doc) => {
299
+ await ctx.db.patch(doc._id, args.update);
300
+ });
301
+ return docs.length;
302
+ },
303
+ });
304
+ export const updateTwoFactor = mutation({
305
+ args: {
306
+ userId: v.string(),
307
+ update: v.object(partial(schema.tables.twoFactor.validator.fields)),
308
+ },
309
+ handler: async (ctx, args) => {
310
+ const docs = await ctx.db
311
+ .query("twoFactor")
312
+ .withIndex("userId", (q) => q.eq("userId", args.userId))
313
+ .collect();
314
+ if (docs.length === 0) {
315
+ return 0;
316
+ }
317
+ await asyncMap(docs, async (doc) => {
318
+ await ctx.db.patch(doc._id, args.update);
319
+ });
320
+ return docs.length;
321
+ },
322
+ });
323
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../src/component/lib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ declare const schema: import("convex/server").SchemaDefinition<{
2
+ user: import("convex/server").TableDefinition<import("convex/values").VObject<{
3
+ image?: string | undefined;
4
+ twoFactorEnabled?: boolean | undefined;
5
+ name: string;
6
+ email: string;
7
+ emailVerified: boolean;
8
+ userId: string;
9
+ createdAt: number;
10
+ updatedAt: number;
11
+ }, {
12
+ name: import("convex/values").VString<string, "required">;
13
+ email: import("convex/values").VString<string, "required">;
14
+ emailVerified: import("convex/values").VBoolean<boolean, "required">;
15
+ image: import("convex/values").VString<string | undefined, "optional">;
16
+ twoFactorEnabled: import("convex/values").VBoolean<boolean | undefined, "optional">;
17
+ userId: import("convex/values").VString<string, "required">;
18
+ createdAt: import("convex/values").VFloat64<number, "required">;
19
+ updatedAt: import("convex/values").VFloat64<number, "required">;
20
+ }, "required", "name" | "email" | "emailVerified" | "image" | "twoFactorEnabled" | "userId" | "createdAt" | "updatedAt">, {
21
+ email: ["email", "_creationTime"];
22
+ userId: ["userId", "_creationTime"];
23
+ }, {}, {}>;
24
+ session: import("convex/server").TableDefinition<import("convex/values").VObject<{
25
+ ipAddress?: string | undefined;
26
+ userAgent?: string | undefined;
27
+ userId: string;
28
+ createdAt: number;
29
+ updatedAt: number;
30
+ expiresAt: number;
31
+ token: string;
32
+ }, {
33
+ expiresAt: import("convex/values").VFloat64<number, "required">;
34
+ token: import("convex/values").VString<string, "required">;
35
+ createdAt: import("convex/values").VFloat64<number, "required">;
36
+ updatedAt: import("convex/values").VFloat64<number, "required">;
37
+ ipAddress: import("convex/values").VString<string | undefined, "optional">;
38
+ userAgent: import("convex/values").VString<string | undefined, "optional">;
39
+ userId: import("convex/values").VString<string, "required">;
40
+ }, "required", "userId" | "createdAt" | "updatedAt" | "expiresAt" | "token" | "ipAddress" | "userAgent">, {
41
+ token: ["token", "_creationTime"];
42
+ userId: ["userId", "_creationTime"];
43
+ }, {}, {}>;
44
+ account: import("convex/server").TableDefinition<import("convex/values").VObject<{
45
+ accessToken?: string | undefined;
46
+ refreshToken?: string | undefined;
47
+ idToken?: string | undefined;
48
+ accessTokenExpiresAt?: number | undefined;
49
+ refreshTokenExpiresAt?: number | undefined;
50
+ scope?: string | undefined;
51
+ password?: string | undefined;
52
+ userId: string;
53
+ createdAt: number;
54
+ updatedAt: number;
55
+ accountId: string;
56
+ providerId: string;
57
+ }, {
58
+ accountId: import("convex/values").VString<string, "required">;
59
+ providerId: import("convex/values").VString<string, "required">;
60
+ userId: import("convex/values").VString<string, "required">;
61
+ accessToken: import("convex/values").VString<string | undefined, "optional">;
62
+ refreshToken: import("convex/values").VString<string | undefined, "optional">;
63
+ idToken: import("convex/values").VString<string | undefined, "optional">;
64
+ accessTokenExpiresAt: import("convex/values").VFloat64<number | undefined, "optional">;
65
+ refreshTokenExpiresAt: import("convex/values").VFloat64<number | undefined, "optional">;
66
+ scope: import("convex/values").VString<string | undefined, "optional">;
67
+ password: import("convex/values").VString<string | undefined, "optional">;
68
+ createdAt: import("convex/values").VFloat64<number, "required">;
69
+ updatedAt: import("convex/values").VFloat64<number, "required">;
70
+ }, "required", "userId" | "createdAt" | "updatedAt" | "accountId" | "providerId" | "accessToken" | "refreshToken" | "idToken" | "accessTokenExpiresAt" | "refreshTokenExpiresAt" | "scope" | "password">, {
71
+ userId: ["userId", "_creationTime"];
72
+ accountId: ["accountId", "_creationTime"];
73
+ providerId_accountId: ["providerId", "accountId", "_creationTime"];
74
+ userId_providerId: ["userId", "providerId", "_creationTime"];
75
+ }, {}, {}>;
76
+ twoFactor: import("convex/server").TableDefinition<import("convex/values").VObject<{
77
+ userId: string;
78
+ secret: string;
79
+ backupCodes: string;
80
+ }, {
81
+ secret: import("convex/values").VString<string, "required">;
82
+ backupCodes: import("convex/values").VString<string, "required">;
83
+ userId: import("convex/values").VString<string, "required">;
84
+ }, "required", "userId" | "secret" | "backupCodes">, {
85
+ userId: ["userId", "_creationTime"];
86
+ }, {}, {}>;
87
+ verification: import("convex/server").TableDefinition<import("convex/values").VObject<{
88
+ createdAt?: number | undefined;
89
+ updatedAt?: number | undefined;
90
+ expiresAt: number;
91
+ identifier: string;
92
+ value: string;
93
+ }, {
94
+ identifier: import("convex/values").VString<string, "required">;
95
+ value: import("convex/values").VString<string, "required">;
96
+ expiresAt: import("convex/values").VFloat64<number, "required">;
97
+ createdAt: import("convex/values").VFloat64<number | undefined, "optional">;
98
+ updatedAt: import("convex/values").VFloat64<number | undefined, "optional">;
99
+ }, "required", "createdAt" | "updatedAt" | "expiresAt" | "identifier" | "value">, {
100
+ identifier: ["identifier", "_creationTime"];
101
+ expiresAt: ["expiresAt", "_creationTime"];
102
+ }, {}, {}>;
103
+ jwks: import("convex/server").TableDefinition<import("convex/values").VObject<{
104
+ id?: string | undefined;
105
+ createdAt: number;
106
+ publicKey: string;
107
+ privateKey: string;
108
+ }, {
109
+ publicKey: import("convex/values").VString<string, "required">;
110
+ privateKey: import("convex/values").VString<string, "required">;
111
+ createdAt: import("convex/values").VFloat64<number, "required">;
112
+ id: import("convex/values").VString<string | undefined, "optional">;
113
+ }, "required", "id" | "createdAt" | "publicKey" | "privateKey">, {}, {}, {}>;
114
+ }, true>;
115
+ export default schema;
116
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/component/schema.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoEV,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { defineSchema, defineTable } from "convex/server";
2
+ import { v } from "convex/values";
3
+ const schema = defineSchema({
4
+ user: defineTable({
5
+ name: v.string(),
6
+ email: v.string(),
7
+ emailVerified: v.boolean(),
8
+ image: v.optional(v.string()),
9
+ twoFactorEnabled: v.optional(v.boolean()),
10
+ userId: v.string(),
11
+ createdAt: v.number(),
12
+ updatedAt: v.number(),
13
+ })
14
+ .index("email", ["email"])
15
+ .index("userId", ["userId"]),
16
+ session: defineTable({
17
+ expiresAt: v.number(),
18
+ token: v.string(),
19
+ createdAt: v.number(),
20
+ updatedAt: v.number(),
21
+ ipAddress: v.optional(v.string()),
22
+ userAgent: v.optional(v.string()),
23
+ userId: v.string(),
24
+ })
25
+ .index("token", ["token"])
26
+ .index("userId", ["userId"]),
27
+ account: defineTable({
28
+ accountId: v.string(),
29
+ providerId: v.string(),
30
+ userId: v.string(),
31
+ accessToken: v.optional(v.string()),
32
+ refreshToken: v.optional(v.string()),
33
+ idToken: v.optional(v.string()),
34
+ accessTokenExpiresAt: v.optional(v.number()),
35
+ refreshTokenExpiresAt: v.optional(v.number()),
36
+ scope: v.optional(v.string()),
37
+ password: v.optional(v.string()),
38
+ createdAt: v.number(),
39
+ updatedAt: v.number(),
40
+ })
41
+ .index("userId", ["userId"])
42
+ .index("accountId", ["accountId"])
43
+ .index("providerId_accountId", ["providerId", "accountId"])
44
+ .index("userId_providerId", ["userId", "providerId"]),
45
+ twoFactor: defineTable({
46
+ secret: v.string(),
47
+ backupCodes: v.string(),
48
+ userId: v.string(),
49
+ }).index("userId", ["userId"]),
50
+ verification: defineTable({
51
+ identifier: v.string(),
52
+ value: v.string(),
53
+ expiresAt: v.number(),
54
+ createdAt: v.optional(v.number()),
55
+ updatedAt: v.optional(v.number()),
56
+ })
57
+ .index("identifier", ["identifier"])
58
+ .index("expiresAt", ["expiresAt"]),
59
+ jwks: defineTable({
60
+ publicKey: v.string(),
61
+ privateKey: v.string(),
62
+ createdAt: v.number(),
63
+ // no longer used
64
+ id: v.optional(v.string()),
65
+ }),
66
+ });
67
+ export default schema;
68
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/component/schema.ts"],"names":[],"mappings":"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"}