@convex-dev/better-auth 0.10.5 → 0.10.7

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 (53) hide show
  1. package/dist/auth-options.d.ts +1 -1
  2. package/dist/auth-options.d.ts.map +1 -1
  3. package/dist/auth.js +1 -1
  4. package/dist/auth.js.map +1 -1
  5. package/dist/client/adapter-utils.d.ts +3 -3
  6. package/dist/client/adapter-utils.js +1 -1
  7. package/dist/client/adapter-utils.js.map +1 -1
  8. package/dist/client/adapter.d.ts.map +1 -1
  9. package/dist/client/adapter.js +15 -13
  10. package/dist/client/adapter.js.map +1 -1
  11. package/dist/client/create-api.d.ts +4 -2
  12. package/dist/client/create-api.d.ts.map +1 -1
  13. package/dist/client/create-api.js +2 -0
  14. package/dist/client/create-api.js.map +1 -1
  15. package/dist/client/create-client.d.ts.map +1 -1
  16. package/dist/client/create-client.js +3 -0
  17. package/dist/client/create-client.js.map +1 -1
  18. package/dist/client/create-schema.js +1 -1
  19. package/dist/component/_generated/component.d.ts +4 -8
  20. package/dist/component/_generated/component.d.ts.map +1 -1
  21. package/dist/component/adapter.d.ts +3 -1
  22. package/dist/component/adapter.d.ts.map +1 -1
  23. package/dist/component/adapterTest.d.ts +8 -15
  24. package/dist/component/adapterTest.d.ts.map +1 -1
  25. package/dist/component/adapterTest.js +390 -61
  26. package/dist/component/adapterTest.js.map +1 -1
  27. package/dist/nextjs/index.js +1 -1
  28. package/dist/nextjs/index.js.map +1 -1
  29. package/dist/plugins/convex/index.d.ts +2 -1
  30. package/dist/plugins/convex/index.d.ts.map +1 -1
  31. package/dist/plugins/convex/index.js +5 -5
  32. package/dist/plugins/convex/index.js.map +1 -1
  33. package/dist/react-start/index.js +1 -1
  34. package/dist/react-start/index.js.map +1 -1
  35. package/dist/utils/index.d.ts +2 -1
  36. package/dist/utils/index.d.ts.map +1 -1
  37. package/dist/utils/index.js +1 -0
  38. package/dist/utils/index.js.map +1 -1
  39. package/package.json +5 -4
  40. package/src/auth-options.ts +1 -1
  41. package/src/auth.ts +1 -1
  42. package/src/client/adapter-utils.ts +1 -1
  43. package/src/client/adapter.test.ts +24 -440
  44. package/src/client/adapter.ts +19 -14
  45. package/src/client/create-api.ts +3 -1
  46. package/src/client/create-client.ts +3 -0
  47. package/src/client/create-schema.ts +1 -1
  48. package/src/component/_generated/component.ts +4 -8
  49. package/src/component/adapterTest.ts +457 -100
  50. package/src/nextjs/index.ts +1 -1
  51. package/src/plugins/convex/index.ts +6 -10
  52. package/src/react-start/index.ts +1 -1
  53. package/src/utils/index.ts +3 -1
@@ -1,4 +1,5 @@
1
- import type { Auth, betterAuth } from "better-auth";
1
+ import type { Auth } from "better-auth";
2
+ import type { betterAuth } from "better-auth/minimal";
2
3
  import type { AuthProvider, DefaultFunctionArgs, FunctionReference, GenericActionCtx, GenericDataModel, GenericMutationCtx, GenericQueryCtx } from "convex/server";
3
4
  import type { Jwk } from "better-auth/plugins/jwt";
4
5
  export type CreateAuth<DataModel extends GenericDataModel, A extends ReturnType<typeof betterAuth> = Auth> = (ctx: GenericCtx<DataModel>) => A;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,7 @@ export const getToken = async (siteUrl, headers, opts) => {
68
68
  }
69
69
  }
70
70
  catch (error) {
71
+ // eslint-disable-next-line no-console
71
72
  console.error("Error decoding JWT", error);
72
73
  }
73
74
  return await fetchToken();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
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.10.5",
9
+ "version": "0.10.7",
10
10
  "license": "Apache-2.0",
11
11
  "keywords": [
12
12
  "convex",
@@ -28,10 +28,11 @@
28
28
  "test:watch": "vitest --typecheck --clearScreen false",
29
29
  "test:debug": "vitest --inspect-brk --no-file-parallelism",
30
30
  "test:coverage": "vitest run --coverage --coverage.reporter=text",
31
- "prepublishOnly": "npm run build",
31
+ "prepublishOnly": "npm whoami && npm run build",
32
32
  "preversion": "npm run clean && npm ci && npm run build && run-p test lint typecheck",
33
33
  "alpha": "npm version prerelease --preid alpha && npm publish --tag alpha && git push --follow-tags",
34
34
  "release": "npm version patch && npm publish && git push --follow-tags",
35
+ "prerelease": "npm whoami",
35
36
  "version": "vim -c 'normal o' -c 'normal o## '$npm_package_version CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md"
36
37
  },
37
38
  "files": [
@@ -101,7 +102,7 @@
101
102
  }
102
103
  },
103
104
  "peerDependencies": {
104
- "better-auth": "1.4.7",
105
+ "better-auth": "1.4.9",
105
106
  "convex": "^1.25.0",
106
107
  "react": "^18.3.1 || ^19.0.0",
107
108
  "react-dom": "^18.3.1 || ^19.0.0"
@@ -140,7 +141,7 @@
140
141
  "types": "./dist/client/index.d.ts",
141
142
  "module": "./dist/client/index.js",
142
143
  "dependencies": {
143
- "@better-auth/passkey": "1.4.7",
144
+ "@better-auth/passkey": "1.4.9",
144
145
  "@better-fetch/fetch": "^1.1.18",
145
146
  "common-tags": "^1.8.2",
146
147
  "convex-helpers": "^0.1.95",
@@ -1,4 +1,4 @@
1
- import type { BetterAuthOptions } from "better-auth";
1
+ import type { BetterAuthOptions } from "better-auth/minimal";
2
2
  import {
3
3
  anonymous,
4
4
  bearer,
package/src/auth.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { betterAuth } from "better-auth";
1
+ import { betterAuth } from "better-auth/minimal";
2
2
  import { options } from "./auth-options.js";
3
3
 
4
4
  export const auth = betterAuth(options);
@@ -349,7 +349,6 @@ const filterByWhere = <
349
349
  case "not_in": {
350
350
  const result =
351
351
  Array.isArray(w.value) && !(w.value as any[]).includes(value);
352
- console.log(doc, "not_in", w, value, result);
353
352
  return result;
354
353
  }
355
354
  case "lt": {
@@ -432,6 +431,7 @@ const generateQuery = (
432
431
  : indexedQuery;
433
432
  const filteredQuery = orderedQuery.filterWith(async (doc) => {
434
433
  if (!index && indexFields?.length) {
434
+ // eslint-disable-next-line no-console
435
435
  console.warn(
436
436
  stripIndent`
437
437
  Querying without an index on table "${args.model}".
@@ -1,53 +1,28 @@
1
1
  /// <reference types="vite/client" />
2
2
 
3
- import { describe, expect, test } from "vitest";
4
- import { runAdapterTest } from "better-auth/adapters/test";
3
+ import { describe } from "vitest";
4
+ import type { runAdapterTest } from "better-auth/adapters/test";
5
5
  import { convexTest } from "convex-test";
6
6
  import { api } from "../component/_generated/api.js";
7
7
  import schema from "../component/schema.js";
8
- import { serialize } from "../component/adapterTest.js";
9
- import type { DBAdapter } from "better-auth/adapters";
8
+ import { createClient } from "./create-client.js";
9
+ import type { DataModel } from "../component/_generated/dataModel.js";
10
+ import type { BetterAuthOptions } from "better-auth/types";
11
+ import type { GenericCtx } from "./index.js";
10
12
 
11
- export const getAdapter = (t: ReturnType<typeof convexTest>) => async () => {
12
- return {
13
- id: "convex",
14
- create: async (data) => {
15
- const result = await t.mutation(api.adapterTest.create, {
16
- ...data,
17
- data: serialize(data.data),
18
- });
19
- return result;
20
- },
21
- findOne: async (data) => {
22
- return t.query(api.adapterTest.findOne, data);
23
- },
24
- findMany: async (data) => {
25
- return t.query(api.adapterTest.findMany, data);
26
- },
27
- count: async (data) => {
28
- return t.query(api.adapterTest.count, data);
29
- },
30
- update: async (data) => {
31
- return t.mutation(api.adapterTest.update, {
32
- ...data,
33
- update: serialize(data.update),
34
- });
35
- },
36
- updateMany: async (data) => {
37
- return t.mutation(api.adapterTest.updateMany, data);
38
- },
39
- delete: async (data) => {
40
- await t.mutation(api.adapterTest.delete, data);
41
- },
42
- deleteMany: async (data) => {
43
- return t.mutation(api.adapterTest.deleteMany, data);
44
- },
45
- transaction: false as any,
46
- } satisfies DBAdapter;
47
- };
13
+ export const getAdapter: (
14
+ ctx: GenericCtx<DataModel>
15
+ ) => Parameters<typeof runAdapterTest>[0]["getAdapter"] =
16
+ (ctx: GenericCtx<DataModel>) =>
17
+ async (opts?: Omit<BetterAuthOptions, "database">) => {
18
+ const authComponent = createClient<DataModel>(api as any, {
19
+ verbose: false,
20
+ });
21
+ const adapterFactory = authComponent.adapter(ctx);
22
+ return adapterFactory(opts ?? {});
23
+ };
48
24
 
49
25
  describe("Better Auth Adapter Tests", async () => {
50
- const _t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
51
26
  const status = {
52
27
  active: "active",
53
28
  only: "only",
@@ -59,6 +34,9 @@ describe("Better Auth Adapter Tests", async () => {
59
34
  FIND_MODEL: status.active,
60
35
  FIND_MODEL_WITHOUT_ID: status.active,
61
36
  FIND_MODEL_WITH_SELECT: status.active,
37
+ // Requires a custom schema - we fake success by overriding custom user
38
+ // schema in the test adapter because this test creates a user that other
39
+ // tests rely on.
62
40
  FIND_MODEL_WITH_MODIFIED_FIELD_NAME: status.active,
63
41
  UPDATE_MODEL: status.active,
64
42
  SHOULD_FIND_MANY: status.active,
@@ -95,405 +73,11 @@ describe("Better Auth Adapter Tests", async () => {
95
73
  })
96
74
  );
97
75
 
98
- await runAdapterTest({
99
- getAdapter: getAdapter(_t),
100
- disableTests,
101
- });
76
+ const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
77
+ await t.action(api.adapterTest.runTests, { disableTests });
102
78
  });
103
79
 
104
80
  describe("Convex Adapter Tests", async () => {
105
- test("should handle lone range operators", async () => {
106
- const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
107
- const adapter = await getAdapter(t)();
108
- const user = await adapter.create({
109
- model: "user",
110
- data: {
111
- name: "ab",
112
- email: "a@a.com",
113
- },
114
- });
115
- expect(
116
- await adapter.findMany({
117
- model: "user",
118
- where: [
119
- {
120
- field: "name",
121
- operator: "lt",
122
- value: "a",
123
- },
124
- ],
125
- })
126
- ).toEqual([]);
127
- expect(
128
- await adapter.findMany({
129
- model: "user",
130
- where: [
131
- {
132
- field: "name",
133
- operator: "lte",
134
- value: "a",
135
- },
136
- ],
137
- })
138
- ).toEqual([]);
139
- expect(
140
- await adapter.findMany({
141
- model: "user",
142
- where: [
143
- {
144
- field: "name",
145
- operator: "gt",
146
- value: "a",
147
- },
148
- ],
149
- })
150
- ).toEqual([user]);
151
- expect(
152
- await adapter.findMany({
153
- model: "user",
154
- where: [
155
- {
156
- field: "name",
157
- operator: "gte",
158
- value: "ab",
159
- },
160
- ],
161
- })
162
- ).toEqual([user]);
163
- });
164
-
165
- test("should handle compound indexes that include id field", async () => {
166
- const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
167
- const adapter = await getAdapter(t)();
168
- const user = await adapter.create({
169
- model: "user",
170
- data: {
171
- name: "foo",
172
- email: "foo@bar.com",
173
- },
174
- });
175
- expect(
176
- await adapter.findOne({
177
- model: "user",
178
- where: [
179
- {
180
- field: "id",
181
- value: user.id,
182
- },
183
- {
184
- field: "name",
185
- value: "wrong name",
186
- },
187
- ],
188
- })
189
- ).toEqual(null);
190
- expect(
191
- await adapter.findOne({
192
- model: "user",
193
- where: [
194
- {
195
- field: "id",
196
- value: user.id,
197
- },
198
- {
199
- field: "name",
200
- value: "foo",
201
- },
202
- ],
203
- })
204
- ).toEqual(user);
205
- expect(
206
- await adapter.findOne({
207
- model: "user",
208
- where: [
209
- {
210
- field: "id",
211
- value: user.id,
212
- },
213
- {
214
- field: "name",
215
- value: "foo",
216
- operator: "lt",
217
- },
218
- ],
219
- })
220
- ).toEqual(null);
221
- expect(
222
- await adapter.findOne({
223
- model: "user",
224
- where: [
225
- {
226
- field: "id",
227
- value: user.id,
228
- },
229
- {
230
- field: "name",
231
- value: "foo",
232
- operator: "lte",
233
- },
234
- ],
235
- })
236
- ).toEqual(user);
237
- expect(
238
- await adapter.findOne({
239
- model: "user",
240
- where: [
241
- {
242
- field: "id",
243
- value: user.id,
244
- },
245
- {
246
- field: "name",
247
- value: "foo",
248
- operator: "gt",
249
- },
250
- ],
251
- })
252
- ).toEqual(null);
253
- expect(
254
- await adapter.findOne({
255
- model: "user",
256
- where: [
257
- {
258
- field: "id",
259
- value: user.id,
260
- },
261
- {
262
- field: "name",
263
- value: "foo",
264
- operator: "gte",
265
- },
266
- ],
267
- })
268
- ).toEqual(user);
269
- expect(
270
- await adapter.findOne({
271
- model: "user",
272
- where: [
273
- {
274
- field: "id",
275
- value: user.id,
276
- },
277
- {
278
- field: "name",
279
- operator: "in",
280
- value: ["wrong", "name"],
281
- },
282
- ],
283
- })
284
- ).toEqual(null);
285
- expect(
286
- await adapter.findOne({
287
- model: "user",
288
- where: [
289
- {
290
- field: "id",
291
- value: user.id,
292
- },
293
- {
294
- field: "name",
295
- operator: "in",
296
- value: ["foo"],
297
- },
298
- ],
299
- })
300
- ).toEqual(user);
301
- });
302
- test("should automatically paginate", async () => {
303
- const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
304
- const adapter = await getAdapter(t)();
305
- for (let i = 0; i < 300; i++) {
306
- await adapter.create({
307
- model: "user",
308
- data: {
309
- name: `foo${i}`,
310
- email: `foo${i}@bar.com`,
311
- },
312
- });
313
- }
314
- // Better Auth defaults to a limit of 100
315
- expect(
316
- await adapter.findMany({
317
- model: "user",
318
- })
319
- ).toHaveLength(100);
320
-
321
- // Pagination has a hardcoded numItems max of 200, this tests that it can handle
322
- // specified limits beyond that
323
- expect(
324
- await adapter.findMany({
325
- model: "user",
326
- limit: 250,
327
- })
328
- ).toHaveLength(250);
329
- expect(
330
- await adapter.findMany({
331
- model: "user",
332
- limit: 350,
333
- })
334
- ).toHaveLength(300);
335
- });
336
- test("should handle OR where clauses", async () => {
337
- const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
338
- const adapter = await getAdapter(t)();
339
- const user = await adapter.create({
340
- model: "user",
341
- data: {
342
- name: "foo",
343
- email: "foo@bar.com",
344
- },
345
- });
346
- expect(
347
- await adapter.findOne({
348
- model: "user",
349
- where: [
350
- { field: "name", value: "bar", connector: "OR" },
351
- { field: "name", value: "foo", connector: "OR" },
352
- ],
353
- })
354
- ).toEqual(user);
355
- });
356
- test("should handle OR where clauses with sortBy", async () => {
357
- const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
358
- const adapter = await getAdapter(t)();
359
- const fooUser = await adapter.create({
360
- model: "user",
361
- data: {
362
- name: "foo",
363
- email: "foo@bar.com",
364
- },
365
- });
366
- const barUser = await adapter.create({
367
- model: "user",
368
- data: {
369
- name: "bar",
370
- email: "bar@bar.com",
371
- },
372
- });
373
- await adapter.create({
374
- model: "user",
375
- data: {
376
- name: "baz",
377
- email: "baz@bar.com",
378
- },
379
- });
380
- expect(
381
- await adapter.findMany({
382
- model: "user",
383
- where: [
384
- { field: "name", value: "bar", connector: "OR" },
385
- { field: "name", value: "foo", connector: "OR" },
386
- ],
387
- sortBy: { field: "name", direction: "asc" },
388
- })
389
- ).toEqual([barUser, fooUser]);
390
- expect(
391
- await adapter.findMany({
392
- model: "user",
393
- where: [
394
- { field: "name", value: "bar", connector: "OR" },
395
- { field: "name", value: "foo", connector: "OR" },
396
- ],
397
- sortBy: { field: "name", direction: "desc" },
398
- })
399
- ).toEqual([fooUser, barUser]);
400
- });
401
- test("should handle count", async () => {
402
- const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
403
- const adapter = await getAdapter(t)();
404
- await adapter.create({
405
- model: "user",
406
- data: {
407
- name: "foo",
408
- email: "foo@bar.com",
409
- },
410
- });
411
- await adapter.create({
412
- model: "user",
413
- data: {
414
- name: "bar",
415
- email: "bar@bar.com",
416
- },
417
- });
418
- expect(
419
- await adapter.count({
420
- model: "user",
421
- where: [{ field: "name", value: "foo" }],
422
- })
423
- ).toEqual(1);
424
- });
425
- test("should handle queries with no index", async () => {
426
- const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
427
- const adapter = await getAdapter(t)();
428
- const user = await adapter.create({
429
- model: "user",
430
- data: {
431
- name: "foo",
432
- email: "foo@bar.com",
433
- emailVerified: true,
434
- },
435
- });
436
- expect(
437
- await adapter.findOne({
438
- model: "user",
439
- where: [{ field: "emailVerified", value: true }],
440
- })
441
- ).toEqual(user);
442
- expect(
443
- await adapter.findOne({
444
- model: "user",
445
- where: [{ field: "emailVerified", value: false }],
446
- })
447
- ).toEqual(null);
448
- });
449
-
450
- test("should handle compound operator on non-unique field without an index", async () => {
451
- const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
452
- const adapter = await getAdapter(t)();
453
- await adapter.create({
454
- model: "account",
455
- data: {
456
- accountId: "foo",
457
- providerId: "bar",
458
- userId: "baz",
459
- accessTokenExpiresAt: null,
460
- createdAt: Date.now(),
461
- updatedAt: Date.now(),
462
- },
463
- });
464
- expect(
465
- await adapter.findOne({
466
- model: "account",
467
- where: [
468
- {
469
- operator: "lt",
470
- connector: "AND",
471
- field: "accessTokenExpiresAt",
472
- value: Date.now(),
473
- },
474
- {
475
- operator: "ne",
476
- connector: "AND",
477
- field: "accessTokenExpiresAt",
478
- value: null,
479
- },
480
- ],
481
- })
482
- ).toEqual(null);
483
- });
484
-
485
- test("should fail to create a record with a unique field that already exists", async () => {
486
- const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
487
- const adapter = await getAdapter(t)();
488
- await adapter.create({
489
- model: "user",
490
- data: { name: "foo", email: "foo@bar.com" },
491
- });
492
- await expect(
493
- adapter.create({
494
- model: "user",
495
- data: { name: "foo", email: "foo@bar.com" },
496
- })
497
- ).rejects.toThrow("user email already exists");
498
- });
81
+ const t = convexTest(schema, import.meta.glob("../component/**/*.*s"));
82
+ await t.action(api.adapterTest.runCustomTests);
499
83
  });