@convex-dev/better-auth 0.8.8 → 0.8.9

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.
@@ -3107,10 +3107,10 @@ export declare const createApi: <DataModel extends GenericDataModel, Schema exte
3107
3107
  offset?: number | undefined;
3108
3108
  model: string;
3109
3109
  paginationOpts: {
3110
- id?: number | undefined;
3111
- endCursor?: string | null | undefined;
3112
- maximumRowsRead?: number | undefined;
3113
- maximumBytesRead?: number | undefined;
3110
+ id?: number;
3111
+ endCursor?: string | null;
3112
+ maximumRowsRead?: number;
3113
+ maximumBytesRead?: number;
3114
3114
  numItems: number;
3115
3115
  cursor: string | null;
3116
3116
  };
@@ -3149,10 +3149,10 @@ export declare const createApi: <DataModel extends GenericDataModel, Schema exte
3149
3149
  };
3150
3150
  };
3151
3151
  paginationOpts: {
3152
- id?: number | undefined;
3153
- endCursor?: string | null | undefined;
3154
- maximumRowsRead?: number | undefined;
3155
- maximumBytesRead?: number | undefined;
3152
+ id?: number;
3153
+ endCursor?: string | null;
3154
+ maximumRowsRead?: number;
3155
+ maximumBytesRead?: number;
3156
3156
  numItems: number;
3157
3157
  cursor: string | null;
3158
3158
  };
@@ -3188,10 +3188,10 @@ export declare const createApi: <DataModel extends GenericDataModel, Schema exte
3188
3188
  model: string;
3189
3189
  };
3190
3190
  paginationOpts: {
3191
- id?: number | undefined;
3192
- endCursor?: string | null | undefined;
3193
- maximumRowsRead?: number | undefined;
3194
- maximumBytesRead?: number | undefined;
3191
+ id?: number;
3192
+ endCursor?: string | null;
3193
+ maximumRowsRead?: number;
3194
+ maximumBytesRead?: number;
3195
3195
  numItems: number;
3196
3196
  cursor: string | null;
3197
3197
  };
@@ -3296,10 +3296,10 @@ export declare const createClient: <DataModel extends GenericDataModel, Schema e
3296
3296
  offset?: number | undefined;
3297
3297
  model: string;
3298
3298
  paginationOpts: {
3299
- id?: number | undefined | undefined;
3300
- endCursor?: string | null | undefined | undefined;
3301
- maximumRowsRead?: number | undefined | undefined;
3302
- maximumBytesRead?: number | undefined | undefined;
3299
+ id?: number | undefined;
3300
+ endCursor?: string | null | undefined;
3301
+ maximumRowsRead?: number | undefined;
3302
+ maximumBytesRead?: number | undefined;
3303
3303
  numItems: number;
3304
3304
  cursor: string | null;
3305
3305
  };
@@ -3368,10 +3368,10 @@ export declare const createClient: <DataModel extends GenericDataModel, Schema e
3368
3368
  };
3369
3369
  };
3370
3370
  paginationOpts: {
3371
- id?: number | undefined | undefined;
3372
- endCursor?: string | null | undefined | undefined;
3373
- maximumRowsRead?: number | undefined | undefined;
3374
- maximumBytesRead?: number | undefined | undefined;
3371
+ id?: number | undefined;
3372
+ endCursor?: string | null | undefined;
3373
+ maximumRowsRead?: number | undefined;
3374
+ maximumBytesRead?: number | undefined;
3375
3375
  numItems: number;
3376
3376
  cursor: string | null;
3377
3377
  };
@@ -3455,10 +3455,10 @@ export declare const createClient: <DataModel extends GenericDataModel, Schema e
3455
3455
  model: string;
3456
3456
  };
3457
3457
  paginationOpts: {
3458
- id?: number | undefined | undefined;
3459
- endCursor?: string | null | undefined | undefined;
3460
- maximumRowsRead?: number | undefined | undefined;
3461
- maximumBytesRead?: number | undefined | undefined;
3458
+ id?: number | undefined;
3459
+ endCursor?: string | null | undefined;
3460
+ maximumRowsRead?: number | undefined;
3461
+ maximumBytesRead?: number | undefined;
3462
3462
  numItems: number;
3463
3463
  cursor: string | null;
3464
3464
  };
@@ -33,10 +33,10 @@ export declare const create: import("convex/server").RegisteredMutation<"public"
33
33
  offset?: number | undefined;
34
34
  model: string;
35
35
  paginationOpts: {
36
- id?: number | undefined;
37
- endCursor?: string | null | undefined;
38
- maximumRowsRead?: number | undefined;
39
- maximumBytesRead?: number | undefined;
36
+ id?: number;
37
+ endCursor?: string | null;
38
+ maximumRowsRead?: number;
39
+ maximumBytesRead?: number;
40
40
  numItems: number;
41
41
  cursor: string | null;
42
42
  };
@@ -73,10 +73,10 @@ export declare const create: import("convex/server").RegisteredMutation<"public"
73
73
  };
74
74
  };
75
75
  paginationOpts: {
76
- id?: number | undefined;
77
- endCursor?: string | null | undefined;
78
- maximumRowsRead?: number | undefined;
79
- maximumBytesRead?: number | undefined;
76
+ id?: number;
77
+ endCursor?: string | null;
78
+ maximumRowsRead?: number;
79
+ maximumBytesRead?: number;
80
80
  numItems: number;
81
81
  cursor: string | null;
82
82
  };
@@ -110,10 +110,10 @@ export declare const create: import("convex/server").RegisteredMutation<"public"
110
110
  model: string;
111
111
  };
112
112
  paginationOpts: {
113
- id?: number | undefined;
114
- endCursor?: string | null | undefined;
115
- maximumRowsRead?: number | undefined;
116
- maximumBytesRead?: number | undefined;
113
+ id?: number;
114
+ endCursor?: string | null;
115
+ maximumRowsRead?: number;
116
+ maximumBytesRead?: number;
117
117
  numItems: number;
118
118
  cursor: string | null;
119
119
  };
@@ -41,6 +41,7 @@ export function ConvexBetterAuthProvider({ children, client, authClient, }) {
41
41
  function useUseAuthFromBetterAuth(authClient) {
42
42
  return useMemo(() => function useAuthFromBetterAuth() {
43
43
  const { data: session, isPending: isSessionPending } = authClient.useSession();
44
+ const sessionId = session?.session.id;
44
45
  const fetchAccessToken = useCallback(async () => {
45
46
  try {
46
47
  const { data } = await authClient.convex.token();
@@ -52,12 +53,12 @@ function useUseAuthFromBetterAuth(authClient) {
52
53
  },
53
54
  // Build a new fetchAccessToken to trigger setAuth() whenever the
54
55
  // session changes.
55
- [session]);
56
+ [sessionId]);
56
57
  return useMemo(() => ({
57
58
  isLoading: isSessionPending,
58
59
  isAuthenticated: session !== null,
59
60
  fetchAccessToken,
60
- }), [isSessionPending, session, fetchAccessToken]);
61
+ }), [isSessionPending, sessionId, fetchAccessToken]);
61
62
  }, [authClient]);
62
63
  }
63
64
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAa,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAiCtD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,GAKX;IACC,MAAM,aAAa,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAE3D,SAAS,CAAC,GAAG,EAAE;QACb,mEAAmE;QACnE,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,yBAAyB,GAC7B,UAA2D,CAAC;gBAC9D,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,MAAM,GACV,MAAM,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC9D,KAAK;iBACN,CAAC,CAAC;gBACL,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;gBACrC,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,UAAU,CAAC,UAAU,CAAC;wBAC1B,YAAY,EAAE;4BACZ,OAAO,EAAE;gCACP,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;6BACzC;yBACF;qBACF,CAAC,CAAC;oBACH,yBAAyB,CAAC,aAAa,EAAE,CAAC;gBAC5C,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjB,OAAO,CACL,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,YAC3D,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAsB;IACtD,OAAO,OAAO,CACZ,GAAG,EAAE,CACH,SAAS,qBAAqB;QAC5B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAClD,UAAU,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,IAAI,EAAE;YACT,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjD,OAAO,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,iEAAiE;QACjE,mBAAmB;QACnB,CAAC,OAAO,CAAC,CACV,CAAC;QACF,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;YACL,SAAS,EAAE,gBAAgB;YAC3B,eAAe,EAAE,OAAO,KAAK,IAAI;YACjC,gBAAgB;SACjB,CAAC,EACF,CAAC,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAC9C,CAAC;IACJ,CAAC,EACH,CAAC,UAAU,CAAC,CACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAa,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAiCtD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,GAKX;IACC,MAAM,aAAa,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAE3D,SAAS,CAAC,GAAG,EAAE;QACb,mEAAmE;QACnE,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,yBAAyB,GAC7B,UAA2D,CAAC;gBAC9D,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,MAAM,GACV,MAAM,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC9D,KAAK;iBACN,CAAC,CAAC;gBACL,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;gBACrC,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,UAAU,CAAC,UAAU,CAAC;wBAC1B,YAAY,EAAE;4BACZ,OAAO,EAAE;gCACP,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;6BACzC;yBACF;qBACF,CAAC,CAAC;oBACH,yBAAyB,CAAC,aAAa,EAAE,CAAC;gBAC5C,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjB,OAAO,CACL,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,YAC3D,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAsB;IACtD,OAAO,OAAO,CACZ,GAAG,EAAE,CACH,SAAS,qBAAqB;QAC5B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAClD,UAAU,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,IAAI,EAAE;YACT,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjD,OAAO,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,iEAAiE;QACjE,mBAAmB;QACnB,CAAC,SAAS,CAAC,CACZ,CAAC;QACF,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;YACL,SAAS,EAAE,gBAAgB;YAC3B,eAAe,EAAE,OAAO,KAAK,IAAI;YACjC,gBAAgB;SACjB,CAAC,EACF,CAAC,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAChD,CAAC;IACJ,CAAC,EACH,CAAC,UAAU,CAAC,CACb,CAAC;AACJ,CAAC"}
@@ -3107,10 +3107,10 @@ export declare const createApi: <DataModel extends GenericDataModel, Schema exte
3107
3107
  offset?: number | undefined;
3108
3108
  model: string;
3109
3109
  paginationOpts: {
3110
- id?: number | undefined;
3111
- endCursor?: string | null | undefined;
3112
- maximumRowsRead?: number | undefined;
3113
- maximumBytesRead?: number | undefined;
3110
+ id?: number;
3111
+ endCursor?: string | null;
3112
+ maximumRowsRead?: number;
3113
+ maximumBytesRead?: number;
3114
3114
  numItems: number;
3115
3115
  cursor: string | null;
3116
3116
  };
@@ -3149,10 +3149,10 @@ export declare const createApi: <DataModel extends GenericDataModel, Schema exte
3149
3149
  };
3150
3150
  };
3151
3151
  paginationOpts: {
3152
- id?: number | undefined;
3153
- endCursor?: string | null | undefined;
3154
- maximumRowsRead?: number | undefined;
3155
- maximumBytesRead?: number | undefined;
3152
+ id?: number;
3153
+ endCursor?: string | null;
3154
+ maximumRowsRead?: number;
3155
+ maximumBytesRead?: number;
3156
3156
  numItems: number;
3157
3157
  cursor: string | null;
3158
3158
  };
@@ -3188,10 +3188,10 @@ export declare const createApi: <DataModel extends GenericDataModel, Schema exte
3188
3188
  model: string;
3189
3189
  };
3190
3190
  paginationOpts: {
3191
- id?: number | undefined;
3192
- endCursor?: string | null | undefined;
3193
- maximumRowsRead?: number | undefined;
3194
- maximumBytesRead?: number | undefined;
3191
+ id?: number;
3192
+ endCursor?: string | null;
3193
+ maximumRowsRead?: number;
3194
+ maximumBytesRead?: number;
3195
3195
  numItems: number;
3196
3196
  cursor: string | null;
3197
3197
  };
@@ -3296,10 +3296,10 @@ export declare const createClient: <DataModel extends GenericDataModel, Schema e
3296
3296
  offset?: number | undefined;
3297
3297
  model: string;
3298
3298
  paginationOpts: {
3299
- id?: number | undefined | undefined;
3300
- endCursor?: string | null | undefined | undefined;
3301
- maximumRowsRead?: number | undefined | undefined;
3302
- maximumBytesRead?: number | undefined | undefined;
3299
+ id?: number | undefined;
3300
+ endCursor?: string | null | undefined;
3301
+ maximumRowsRead?: number | undefined;
3302
+ maximumBytesRead?: number | undefined;
3303
3303
  numItems: number;
3304
3304
  cursor: string | null;
3305
3305
  };
@@ -3368,10 +3368,10 @@ export declare const createClient: <DataModel extends GenericDataModel, Schema e
3368
3368
  };
3369
3369
  };
3370
3370
  paginationOpts: {
3371
- id?: number | undefined | undefined;
3372
- endCursor?: string | null | undefined | undefined;
3373
- maximumRowsRead?: number | undefined | undefined;
3374
- maximumBytesRead?: number | undefined | undefined;
3371
+ id?: number | undefined;
3372
+ endCursor?: string | null | undefined;
3373
+ maximumRowsRead?: number | undefined;
3374
+ maximumBytesRead?: number | undefined;
3375
3375
  numItems: number;
3376
3376
  cursor: string | null;
3377
3377
  };
@@ -3455,10 +3455,10 @@ export declare const createClient: <DataModel extends GenericDataModel, Schema e
3455
3455
  model: string;
3456
3456
  };
3457
3457
  paginationOpts: {
3458
- id?: number | undefined | undefined;
3459
- endCursor?: string | null | undefined | undefined;
3460
- maximumRowsRead?: number | undefined | undefined;
3461
- maximumBytesRead?: number | undefined | undefined;
3458
+ id?: number | undefined;
3459
+ endCursor?: string | null | undefined;
3460
+ maximumRowsRead?: number | undefined;
3461
+ maximumBytesRead?: number | undefined;
3462
3462
  numItems: number;
3463
3463
  cursor: string | null;
3464
3464
  };
@@ -33,10 +33,10 @@ export declare const create: import("convex/server").RegisteredMutation<"public"
33
33
  offset?: number | undefined;
34
34
  model: string;
35
35
  paginationOpts: {
36
- id?: number | undefined;
37
- endCursor?: string | null | undefined;
38
- maximumRowsRead?: number | undefined;
39
- maximumBytesRead?: number | undefined;
36
+ id?: number;
37
+ endCursor?: string | null;
38
+ maximumRowsRead?: number;
39
+ maximumBytesRead?: number;
40
40
  numItems: number;
41
41
  cursor: string | null;
42
42
  };
@@ -73,10 +73,10 @@ export declare const create: import("convex/server").RegisteredMutation<"public"
73
73
  };
74
74
  };
75
75
  paginationOpts: {
76
- id?: number | undefined;
77
- endCursor?: string | null | undefined;
78
- maximumRowsRead?: number | undefined;
79
- maximumBytesRead?: number | undefined;
76
+ id?: number;
77
+ endCursor?: string | null;
78
+ maximumRowsRead?: number;
79
+ maximumBytesRead?: number;
80
80
  numItems: number;
81
81
  cursor: string | null;
82
82
  };
@@ -110,10 +110,10 @@ export declare const create: import("convex/server").RegisteredMutation<"public"
110
110
  model: string;
111
111
  };
112
112
  paginationOpts: {
113
- id?: number | undefined;
114
- endCursor?: string | null | undefined;
115
- maximumRowsRead?: number | undefined;
116
- maximumBytesRead?: number | undefined;
113
+ id?: number;
114
+ endCursor?: string | null;
115
+ maximumRowsRead?: number;
116
+ maximumBytesRead?: number;
117
117
  numItems: number;
118
118
  cursor: string | null;
119
119
  };
@@ -41,6 +41,7 @@ export function ConvexBetterAuthProvider({ children, client, authClient, }) {
41
41
  function useUseAuthFromBetterAuth(authClient) {
42
42
  return useMemo(() => function useAuthFromBetterAuth() {
43
43
  const { data: session, isPending: isSessionPending } = authClient.useSession();
44
+ const sessionId = session?.session.id;
44
45
  const fetchAccessToken = useCallback(async () => {
45
46
  try {
46
47
  const { data } = await authClient.convex.token();
@@ -52,12 +53,12 @@ function useUseAuthFromBetterAuth(authClient) {
52
53
  },
53
54
  // Build a new fetchAccessToken to trigger setAuth() whenever the
54
55
  // session changes.
55
- [session]);
56
+ [sessionId]);
56
57
  return useMemo(() => ({
57
58
  isLoading: isSessionPending,
58
59
  isAuthenticated: session !== null,
59
60
  fetchAccessToken,
60
- }), [isSessionPending, session, fetchAccessToken]);
61
+ }), [isSessionPending, sessionId, fetchAccessToken]);
61
62
  }, [authClient]);
62
63
  }
63
64
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAa,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAiCtD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,GAKX;IACC,MAAM,aAAa,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAE3D,SAAS,CAAC,GAAG,EAAE;QACb,mEAAmE;QACnE,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,yBAAyB,GAC7B,UAA2D,CAAC;gBAC9D,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,MAAM,GACV,MAAM,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC9D,KAAK;iBACN,CAAC,CAAC;gBACL,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;gBACrC,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,UAAU,CAAC,UAAU,CAAC;wBAC1B,YAAY,EAAE;4BACZ,OAAO,EAAE;gCACP,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;6BACzC;yBACF;qBACF,CAAC,CAAC;oBACH,yBAAyB,CAAC,aAAa,EAAE,CAAC;gBAC5C,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjB,OAAO,CACL,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,YAC3D,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAsB;IACtD,OAAO,OAAO,CACZ,GAAG,EAAE,CACH,SAAS,qBAAqB;QAC5B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAClD,UAAU,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,IAAI,EAAE;YACT,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjD,OAAO,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,iEAAiE;QACjE,mBAAmB;QACnB,CAAC,OAAO,CAAC,CACV,CAAC;QACF,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;YACL,SAAS,EAAE,gBAAgB;YAC3B,eAAe,EAAE,OAAO,KAAK,IAAI;YACjC,gBAAgB;SACjB,CAAC,EACF,CAAC,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAC9C,CAAC;IACJ,CAAC,EACH,CAAC,UAAU,CAAC,CACb,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAa,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAiCtD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,GAKX;IACC,MAAM,aAAa,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAE3D,SAAS,CAAC,GAAG,EAAE;QACb,mEAAmE;QACnE,CAAC,KAAK,IAAI,EAAE;YACV,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,yBAAyB,GAC7B,UAA2D,CAAC;gBAC9D,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,MAAM,GACV,MAAM,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC9D,KAAK;iBACN,CAAC,CAAC;gBACL,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;gBACrC,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,UAAU,CAAC,UAAU,CAAC;wBAC1B,YAAY,EAAE;4BACZ,OAAO,EAAE;gCACP,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE;6BACzC;yBACF;qBACF,CAAC,CAAC;oBACH,yBAAyB,CAAC,aAAa,EAAE,CAAC;gBAC5C,CAAC;gBACD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjB,OAAO,CACL,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,YAC3D,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,UAAsB;IACtD,OAAO,OAAO,CACZ,GAAG,EAAE,CACH,SAAS,qBAAqB;QAC5B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAClD,UAAU,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,IAAI,EAAE;YACT,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjD,OAAO,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,iEAAiE;QACjE,mBAAmB;QACnB,CAAC,SAAS,CAAC,CACZ,CAAC;QACF,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;YACL,SAAS,EAAE,gBAAgB;YAC3B,eAAe,EAAE,OAAO,KAAK,IAAI;YACjC,gBAAgB;SACjB,CAAC,EACF,CAAC,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAChD,CAAC;IACJ,CAAC,EACH,CAAC,UAAU,CAAC,CACb,CAAC;AACJ,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.8",
9
+ "version": "0.8.9",
10
10
  "license": "Apache-2.0",
11
11
  "keywords": [
12
12
  "convex",
@@ -93,6 +93,7 @@ function useUseAuthFromBetterAuth(authClient: AuthClient) {
93
93
  function useAuthFromBetterAuth() {
94
94
  const { data: session, isPending: isSessionPending } =
95
95
  authClient.useSession();
96
+ const sessionId = session?.session.id;
96
97
  const fetchAccessToken = useCallback(
97
98
  async () => {
98
99
  try {
@@ -104,7 +105,7 @@ function useUseAuthFromBetterAuth(authClient: AuthClient) {
104
105
  },
105
106
  // Build a new fetchAccessToken to trigger setAuth() whenever the
106
107
  // session changes.
107
- [session]
108
+ [sessionId]
108
109
  );
109
110
  return useMemo(
110
111
  () => ({
@@ -112,7 +113,7 @@ function useUseAuthFromBetterAuth(authClient: AuthClient) {
112
113
  isAuthenticated: session !== null,
113
114
  fetchAccessToken,
114
115
  }),
115
- [isSessionPending, session, fetchAccessToken]
116
+ [isSessionPending, sessionId, fetchAccessToken]
116
117
  );
117
118
  },
118
119
  [authClient]
@@ -1,31 +0,0 @@
1
- import { ConvexReactClient } from "convex/react";
2
- import { ReactNode } from "react";
3
- import { createAuthClient } from "better-auth/react";
4
- import { convexClient, crossDomainClient } from "../client/plugins";
5
- import { BetterAuthClientPlugin, ClientOptions } from "better-auth";
6
- export declare function useAuth(): {
7
- isLoading: boolean;
8
- isAuthenticated: boolean;
9
- fetchAccessToken: ({ forceRefreshToken, }: {
10
- forceRefreshToken: boolean;
11
- }) => Promise<string | null>;
12
- };
13
- export type ConvexAuthClient = {
14
- verbose?: boolean;
15
- logger?: ConvexReactClient["logger"];
16
- };
17
- type CrossDomainClient = ReturnType<typeof crossDomainClient>;
18
- type ConvexClient = ReturnType<typeof convexClient>;
19
- type PluginsWithCrossDomain = (CrossDomainClient | ConvexClient | BetterAuthClientPlugin)[];
20
- type PluginsWithoutCrossDomain = (ConvexClient | BetterAuthClientPlugin)[];
21
- type AuthClientWithPlugins<Plugins extends PluginsWithCrossDomain | PluginsWithoutCrossDomain> = ReturnType<typeof createAuthClient<ClientOptions & {
22
- plugins: Plugins;
23
- }>>;
24
- export type AuthClient = AuthClientWithPlugins<PluginsWithCrossDomain> | AuthClientWithPlugins<PluginsWithoutCrossDomain>;
25
- export declare function AuthProvider({ client, authClient, children, }: {
26
- client: ConvexAuthClient;
27
- authClient: AuthClient;
28
- children: ReactNode;
29
- }): import("react/jsx-runtime").JSX.Element;
30
- export {};
31
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/react/client.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAEL,SAAS,EAKV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAYpE,wBAAgB,OAAO;eATV,OAAO;qBACD,OAAO;sBACN,CAAC,EACjB,iBAAiB,GAClB,EAAE;QACD,iBAAiB,EAAE,OAAO,CAAC;KAC5B,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;EAK7B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,KAAK,sBAAsB,GAAG,CAC1B,iBAAiB,GACjB,YAAY,GACZ,sBAAsB,CACzB,EAAE,CAAC;AACJ,KAAK,yBAAyB,GAAG,CAAC,YAAY,GAAG,sBAAsB,CAAC,EAAE,CAAC;AAC3E,KAAK,qBAAqB,CACxB,OAAO,SAAS,sBAAsB,GAAG,yBAAyB,IAChE,UAAU,CACZ,OAAO,gBAAgB,CACrB,aAAa,GAAG;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,qBAAqB,CAAC,sBAAsB,CAAC,GAC7C,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAErD,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAmHA"}
@@ -1,96 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import isNetworkError from "is-network-error";
3
- import { createContext, useCallback, useContext, useEffect, useMemo, } from "react";
4
- const ConvexAuthInternalContext = createContext(undefined);
5
- export function useAuth() {
6
- return useContext(ConvexAuthInternalContext);
7
- }
8
- export function AuthProvider({ client, authClient, children, }) {
9
- const { data: session, isPending: isSessionPending } = authClient.useSession();
10
- const verbose = client.verbose ?? false;
11
- const logVerbose = useCallback((message) => {
12
- if (verbose) {
13
- console.debug(`${new Date().toISOString()} ${message}`);
14
- client.logger?.logVerbose(message);
15
- }
16
- }, [verbose]);
17
- const fetchToken = useCallback(async () => {
18
- const initialBackoff = 100;
19
- const maxBackoff = 1000;
20
- let retries = 0;
21
- const nextBackoff = () => {
22
- const baseBackoff = initialBackoff * Math.pow(2, retries);
23
- retries += 1;
24
- const actualBackoff = Math.min(baseBackoff, maxBackoff);
25
- const jitter = actualBackoff * (Math.random() - 0.5);
26
- return actualBackoff + jitter;
27
- };
28
- const fetchWithRetry = async () => {
29
- try {
30
- const { data } = await authClient.convex.token();
31
- return data?.token || null;
32
- }
33
- catch (e) {
34
- if (!isNetworkError(e)) {
35
- throw e;
36
- }
37
- if (retries > 10) {
38
- logVerbose(`fetchToken failed with network error, giving up`);
39
- throw e;
40
- }
41
- const backoff = nextBackoff();
42
- logVerbose(`fetchToken failed with network error, attempting retrying in ${backoff}ms`);
43
- await new Promise((resolve) => setTimeout(resolve, backoff));
44
- return fetchWithRetry();
45
- }
46
- };
47
- return fetchWithRetry();
48
- }, [client]);
49
- const fetchAccessToken = useCallback(async ({ forceRefreshToken }) => {
50
- if (forceRefreshToken) {
51
- const token = await fetchToken();
52
- logVerbose(`returning retrieved token`);
53
- return token;
54
- }
55
- return null;
56
- }, [fetchToken]);
57
- useEffect(() => {
58
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
59
- (async () => {
60
- const url = new URL(window.location?.href);
61
- const token = url.searchParams.get("ott");
62
- if (token) {
63
- const authClientWithCrossDomain = authClient;
64
- url.searchParams.delete("ott");
65
- const result = await authClientWithCrossDomain.crossDomain.oneTimeToken.verify({
66
- token,
67
- });
68
- const session = result.data?.session;
69
- if (session) {
70
- await authClient.getSession({
71
- fetchOptions: {
72
- headers: {
73
- Authorization: `Bearer ${session.token}`,
74
- },
75
- },
76
- });
77
- authClientWithCrossDomain.updateSession();
78
- }
79
- window.history.replaceState({}, "", url);
80
- }
81
- })();
82
- },
83
- // Explicitly chosen dependencies.
84
- // This effect should mostly only run once
85
- // on mount.
86
- [client, authClient]);
87
- const isAuthenticated = session !== null;
88
- const isLoading = isSessionPending;
89
- const authState = useMemo(() => ({
90
- isLoading,
91
- isAuthenticated,
92
- fetchAccessToken,
93
- }), [fetchAccessToken, isLoading, isAuthenticated]);
94
- return (_jsx(ConvexAuthInternalContext.Provider, { value: authState, children: children }));
95
- }
96
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/react/client.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { ConvexReactClient } from "convex/react";
2
- import { PropsWithChildren } from "react";
3
- import { AuthClient } from "./client";
4
- export declare function ConvexBetterAuthProvider({ client, authClient, children, }: PropsWithChildren<{
5
- client: ConvexReactClient;
6
- authClient: AuthClient;
7
- }>): import("react/jsx-runtime").JSX.Element;
8
- export { ConvexBetterAuthProvider as ConvexProviderWithBetterAuth };
9
- //# sourceMappingURL=old-index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"old-index.d.ts","sourceRoot":"","sources":["../../../src/react/old-index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA0B,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAW,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,UAAU,EAIX,MAAM,UAAU,CAAC;AAElB,wBAAgB,wBAAwB,CAAC,EACvC,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE,iBAAiB,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC,2CAgBD;AAGD,OAAO,EAAE,wBAAwB,IAAI,4BAA4B,EAAE,CAAC"}
@@ -1,15 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { ConvexProviderWithAuth } from "convex/react";
4
- import { useMemo } from "react";
5
- import { AuthProvider, useAuth, } from "./client";
6
- export function ConvexBetterAuthProvider({ client, authClient, children, }) {
7
- const convexAuthClient = useMemo(() => ({
8
- verbose: client.options?.verbose,
9
- logger: client.logger,
10
- }), [client]);
11
- return (_jsx(AuthProvider, { client: convexAuthClient, authClient: authClient, children: _jsx(ConvexProviderWithAuth, { client: client, useAuth: useAuth, children: children }) }));
12
- }
13
- // TODO: Remove, short-lived alias
14
- export { ConvexBetterAuthProvider as ConvexProviderWithBetterAuth };
15
- //# sourceMappingURL=old-index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"old-index.js","sourceRoot":"","sources":["../../../src/react/old-index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,sBAAsB,EAAqB,MAAM,cAAc,CAAC;AACzE,OAAO,EAAqB,OAAO,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAEL,YAAY,EACZ,OAAO,GAER,MAAM,UAAU,CAAC;AAElB,MAAM,UAAU,wBAAwB,CAAC,EACvC,MAAM,EACN,UAAU,EACV,QAAQ,GAIR;IACA,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CACH,CAAC;QACC,OAAO,EAAG,MAAc,CAAC,OAAO,EAAE,OAAO;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAA4B,EAC/B,CAAC,MAAM,CAAC,CACT,CAAC;IACF,OAAO,CACL,KAAC,YAAY,IAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,YAC5D,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,YACrD,QAAQ,GACc,GACZ,CAChB,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,OAAO,EAAE,wBAAwB,IAAI,4BAA4B,EAAE,CAAC"}
@@ -1,31 +0,0 @@
1
- import { ConvexReactClient } from "convex/react";
2
- import { ReactNode } from "react";
3
- import { createAuthClient } from "better-auth/react";
4
- import { convexClient, crossDomainClient } from "../client/plugins/index.js";
5
- import { BetterAuthClientPlugin, ClientOptions } from "better-auth";
6
- export declare function useAuth(): {
7
- isLoading: boolean;
8
- isAuthenticated: boolean;
9
- fetchAccessToken: ({ forceRefreshToken, }: {
10
- forceRefreshToken: boolean;
11
- }) => Promise<string | null>;
12
- };
13
- export type ConvexAuthClient = {
14
- verbose?: boolean;
15
- logger?: ConvexReactClient["logger"];
16
- };
17
- type CrossDomainClient = ReturnType<typeof crossDomainClient>;
18
- type ConvexClient = ReturnType<typeof convexClient>;
19
- type PluginsWithCrossDomain = (CrossDomainClient | ConvexClient | BetterAuthClientPlugin)[];
20
- type PluginsWithoutCrossDomain = (ConvexClient | BetterAuthClientPlugin)[];
21
- type AuthClientWithPlugins<Plugins extends PluginsWithCrossDomain | PluginsWithoutCrossDomain> = ReturnType<typeof createAuthClient<ClientOptions & {
22
- plugins: Plugins;
23
- }>>;
24
- export type AuthClient = AuthClientWithPlugins<PluginsWithCrossDomain> | AuthClientWithPlugins<PluginsWithoutCrossDomain>;
25
- export declare function AuthProvider({ client, authClient, children, }: {
26
- client: ConvexAuthClient;
27
- authClient: AuthClient;
28
- children: ReactNode;
29
- }): import("react/jsx-runtime").JSX.Element;
30
- export {};
31
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/react/client.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAEL,SAAS,EAKV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAYpE,wBAAgB,OAAO;eATV,OAAO;qBACD,OAAO;sBACN,CAAC,EACjB,iBAAiB,GAClB,EAAE;QACD,iBAAiB,EAAE,OAAO,CAAC;KAC5B,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;EAK7B;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AACpD,KAAK,sBAAsB,GAAG,CAC1B,iBAAiB,GACjB,YAAY,GACZ,sBAAsB,CACzB,EAAE,CAAC;AACJ,KAAK,yBAAyB,GAAG,CAAC,YAAY,GAAG,sBAAsB,CAAC,EAAE,CAAC;AAC3E,KAAK,qBAAqB,CACxB,OAAO,SAAS,sBAAsB,GAAG,yBAAyB,IAChE,UAAU,CACZ,OAAO,gBAAgB,CACrB,aAAa,GAAG;IACd,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,qBAAqB,CAAC,sBAAsB,CAAC,GAC7C,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAErD,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE;IACD,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAmHA"}
@@ -1,96 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import isNetworkError from "is-network-error";
3
- import { createContext, useCallback, useContext, useEffect, useMemo, } from "react";
4
- const ConvexAuthInternalContext = createContext(undefined);
5
- export function useAuth() {
6
- return useContext(ConvexAuthInternalContext);
7
- }
8
- export function AuthProvider({ client, authClient, children, }) {
9
- const { data: session, isPending: isSessionPending } = authClient.useSession();
10
- const verbose = client.verbose ?? false;
11
- const logVerbose = useCallback((message) => {
12
- if (verbose) {
13
- console.debug(`${new Date().toISOString()} ${message}`);
14
- client.logger?.logVerbose(message);
15
- }
16
- }, [verbose]);
17
- const fetchToken = useCallback(async () => {
18
- const initialBackoff = 100;
19
- const maxBackoff = 1000;
20
- let retries = 0;
21
- const nextBackoff = () => {
22
- const baseBackoff = initialBackoff * Math.pow(2, retries);
23
- retries += 1;
24
- const actualBackoff = Math.min(baseBackoff, maxBackoff);
25
- const jitter = actualBackoff * (Math.random() - 0.5);
26
- return actualBackoff + jitter;
27
- };
28
- const fetchWithRetry = async () => {
29
- try {
30
- const { data } = await authClient.convex.token();
31
- return data?.token || null;
32
- }
33
- catch (e) {
34
- if (!isNetworkError(e)) {
35
- throw e;
36
- }
37
- if (retries > 10) {
38
- logVerbose(`fetchToken failed with network error, giving up`);
39
- throw e;
40
- }
41
- const backoff = nextBackoff();
42
- logVerbose(`fetchToken failed with network error, attempting retrying in ${backoff}ms`);
43
- await new Promise((resolve) => setTimeout(resolve, backoff));
44
- return fetchWithRetry();
45
- }
46
- };
47
- return fetchWithRetry();
48
- }, [client]);
49
- const fetchAccessToken = useCallback(async ({ forceRefreshToken }) => {
50
- if (forceRefreshToken) {
51
- const token = await fetchToken();
52
- logVerbose(`returning retrieved token`);
53
- return token;
54
- }
55
- return null;
56
- }, [fetchToken]);
57
- useEffect(() => {
58
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
59
- (async () => {
60
- const url = new URL(window.location?.href);
61
- const token = url.searchParams.get("ott");
62
- if (token) {
63
- const authClientWithCrossDomain = authClient;
64
- url.searchParams.delete("ott");
65
- const result = await authClientWithCrossDomain.crossDomain.oneTimeToken.verify({
66
- token,
67
- });
68
- const session = result.data?.session;
69
- if (session) {
70
- await authClient.getSession({
71
- fetchOptions: {
72
- headers: {
73
- Authorization: `Bearer ${session.token}`,
74
- },
75
- },
76
- });
77
- authClientWithCrossDomain.updateSession();
78
- }
79
- window.history.replaceState({}, "", url);
80
- }
81
- })();
82
- },
83
- // Explicitly chosen dependencies.
84
- // This effect should mostly only run once
85
- // on mount.
86
- [client, authClient]);
87
- const isAuthenticated = session !== null;
88
- const isLoading = isSessionPending;
89
- const authState = useMemo(() => ({
90
- isLoading,
91
- isAuthenticated,
92
- fetchAccessToken,
93
- }), [fetchAccessToken, isLoading, isAuthenticated]);
94
- return (_jsx(ConvexAuthInternalContext.Provider, { value: authState, children: children }));
95
- }
96
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/react/client.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- import { ConvexReactClient } from "convex/react";
2
- import { PropsWithChildren } from "react";
3
- import { AuthClient } from "./client.js";
4
- export declare function ConvexBetterAuthProvider({ client, authClient, children, }: PropsWithChildren<{
5
- client: ConvexReactClient;
6
- authClient: AuthClient;
7
- }>): import("react/jsx-runtime").JSX.Element;
8
- export { ConvexBetterAuthProvider as ConvexProviderWithBetterAuth };
9
- //# sourceMappingURL=old-index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"old-index.d.ts","sourceRoot":"","sources":["../../../src/react/old-index.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA0B,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAW,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,UAAU,EAIX,MAAM,UAAU,CAAC;AAElB,wBAAgB,wBAAwB,CAAC,EACvC,MAAM,EACN,UAAU,EACV,QAAQ,GACT,EAAE,iBAAiB,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC,2CAgBD;AAGD,OAAO,EAAE,wBAAwB,IAAI,4BAA4B,EAAE,CAAC"}
@@ -1,15 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { ConvexProviderWithAuth } from "convex/react";
4
- import { useMemo } from "react";
5
- import { AuthProvider, useAuth, } from "./client.js";
6
- export function ConvexBetterAuthProvider({ client, authClient, children, }) {
7
- const convexAuthClient = useMemo(() => ({
8
- verbose: client.options?.verbose,
9
- logger: client.logger,
10
- }), [client]);
11
- return (_jsx(AuthProvider, { client: convexAuthClient, authClient: authClient, children: _jsx(ConvexProviderWithAuth, { client: client, useAuth: useAuth, children: children }) }));
12
- }
13
- // TODO: Remove, short-lived alias
14
- export { ConvexBetterAuthProvider as ConvexProviderWithBetterAuth };
15
- //# sourceMappingURL=old-index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"old-index.js","sourceRoot":"","sources":["../../../src/react/old-index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,sBAAsB,EAAqB,MAAM,cAAc,CAAC;AACzE,OAAO,EAAqB,OAAO,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAEL,YAAY,EACZ,OAAO,GAER,MAAM,UAAU,CAAC;AAElB,MAAM,UAAU,wBAAwB,CAAC,EACvC,MAAM,EACN,UAAU,EACV,QAAQ,GAIR;IACA,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CACH,CAAC;QACC,OAAO,EAAG,MAAc,CAAC,OAAO,EAAE,OAAO;QACzC,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAA4B,EAC/B,CAAC,MAAM,CAAC,CACT,CAAC;IACF,OAAO,CACL,KAAC,YAAY,IAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,YAC5D,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,YACrD,QAAQ,GACc,GACZ,CAChB,CAAC;AACJ,CAAC;AAED,kCAAkC;AAClC,OAAO,EAAE,wBAAwB,IAAI,4BAA4B,EAAE,CAAC"}