@convex-dev/better-auth 0.8.8 → 0.9.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.
- package/dist/commonjs/client/adapter.d.ts +8 -4
- package/dist/commonjs/client/adapter.d.ts.map +1 -1
- package/dist/commonjs/client/adapter.js +45 -8
- package/dist/commonjs/client/adapter.js.map +1 -1
- package/dist/commonjs/client/adapterUtils.d.ts +6 -6
- package/dist/commonjs/client/adapterUtils.d.ts.map +1 -1
- package/dist/commonjs/client/adapterUtils.js +17 -9
- package/dist/commonjs/client/adapterUtils.js.map +1 -1
- package/dist/commonjs/client/createSchema.d.ts +0 -5
- package/dist/commonjs/client/createSchema.d.ts.map +1 -1
- package/dist/commonjs/client/createSchema.js +0 -8
- package/dist/commonjs/client/createSchema.js.map +1 -1
- package/dist/commonjs/client/index.d.ts +76 -3367
- package/dist/commonjs/client/index.d.ts.map +1 -1
- package/dist/commonjs/client/index.js +100 -33
- package/dist/commonjs/client/index.js.map +1 -1
- package/dist/commonjs/component/adapter.d.ts +23 -21
- package/dist/commonjs/component/adapter.d.ts.map +1 -1
- package/dist/commonjs/component/adapter.js +1 -1
- package/dist/commonjs/component/adapter.js.map +1 -1
- package/dist/commonjs/component/adapterTest.d.ts +1 -1
- package/dist/commonjs/component/adapterTest.d.ts.map +1 -1
- package/dist/commonjs/component/schema.d.ts +16 -419
- package/dist/commonjs/component/schema.d.ts.map +1 -1
- package/dist/commonjs/component/schema.js +6 -196
- package/dist/commonjs/component/schema.js.map +1 -1
- package/dist/commonjs/plugins/convex/index.d.ts +10 -2
- package/dist/commonjs/plugins/convex/index.d.ts.map +1 -1
- package/dist/commonjs/plugins/convex/index.js +17 -1
- package/dist/commonjs/plugins/convex/index.js.map +1 -1
- package/dist/commonjs/plugins/cross-domain/index.d.ts +5 -0
- package/dist/commonjs/plugins/cross-domain/index.d.ts.map +1 -1
- package/dist/commonjs/plugins/cross-domain/index.js +8 -0
- package/dist/commonjs/plugins/cross-domain/index.js.map +1 -1
- package/dist/commonjs/react/index.js +3 -2
- package/dist/commonjs/react/index.js.map +1 -1
- package/dist/commonjs/react-start/index.d.ts.map +1 -1
- package/dist/commonjs/react-start/index.js +10 -2
- package/dist/commonjs/react-start/index.js.map +1 -1
- package/dist/commonjs/utils/index.d.ts +5 -5
- package/dist/commonjs/utils/index.d.ts.map +1 -1
- package/dist/commonjs/utils/index.js +9 -11
- package/dist/commonjs/utils/index.js.map +1 -1
- package/dist/esm/client/adapter.d.ts +8 -4
- package/dist/esm/client/adapter.d.ts.map +1 -1
- package/dist/esm/client/adapter.js +45 -8
- package/dist/esm/client/adapter.js.map +1 -1
- package/dist/esm/client/adapterUtils.d.ts +6 -6
- package/dist/esm/client/adapterUtils.d.ts.map +1 -1
- package/dist/esm/client/adapterUtils.js +17 -9
- package/dist/esm/client/adapterUtils.js.map +1 -1
- package/dist/esm/client/createSchema.d.ts +0 -5
- package/dist/esm/client/createSchema.d.ts.map +1 -1
- package/dist/esm/client/createSchema.js +0 -8
- package/dist/esm/client/createSchema.js.map +1 -1
- package/dist/esm/client/index.d.ts +76 -3367
- package/dist/esm/client/index.d.ts.map +1 -1
- package/dist/esm/client/index.js +100 -33
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/component/adapter.d.ts +23 -21
- package/dist/esm/component/adapter.d.ts.map +1 -1
- package/dist/esm/component/adapter.js +1 -1
- package/dist/esm/component/adapter.js.map +1 -1
- package/dist/esm/component/adapterTest.d.ts +1 -1
- package/dist/esm/component/adapterTest.d.ts.map +1 -1
- package/dist/esm/component/schema.d.ts +16 -419
- package/dist/esm/component/schema.d.ts.map +1 -1
- package/dist/esm/component/schema.js +6 -196
- package/dist/esm/component/schema.js.map +1 -1
- package/dist/esm/plugins/convex/index.d.ts +10 -2
- package/dist/esm/plugins/convex/index.d.ts.map +1 -1
- package/dist/esm/plugins/convex/index.js +17 -1
- package/dist/esm/plugins/convex/index.js.map +1 -1
- package/dist/esm/plugins/cross-domain/index.d.ts +5 -0
- package/dist/esm/plugins/cross-domain/index.d.ts.map +1 -1
- package/dist/esm/plugins/cross-domain/index.js +8 -0
- package/dist/esm/plugins/cross-domain/index.js.map +1 -1
- package/dist/esm/react/index.js +3 -2
- package/dist/esm/react/index.js.map +1 -1
- package/dist/esm/react-start/index.d.ts.map +1 -1
- package/dist/esm/react-start/index.js +10 -2
- package/dist/esm/react-start/index.js.map +1 -1
- package/dist/esm/utils/index.d.ts +5 -5
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +9 -11
- package/dist/esm/utils/index.js.map +1 -1
- package/package.json +13 -8
- package/src/client/adapter.test.ts +94 -34
- package/src/client/adapter.ts +66 -14
- package/src/client/adapterUtils.ts +23 -8
- package/src/client/createSchema.ts +0 -8
- package/src/client/index.ts +124 -63
- package/src/component/_generated/api.d.ts +133 -1303
- package/src/component/adapter.ts +1 -0
- package/src/component/schema.ts +11 -214
- package/src/plugins/convex/index.ts +21 -1
- package/src/plugins/cross-domain/index.ts +8 -0
- package/src/react/index.tsx +3 -2
- package/src/react-start/index.ts +10 -2
- package/src/utils/index.ts +20 -10
- package/dist/commonjs/react/client.d.ts +0 -31
- package/dist/commonjs/react/client.d.ts.map +0 -1
- package/dist/commonjs/react/client.js +0 -96
- package/dist/commonjs/react/client.js.map +0 -1
- package/dist/commonjs/react/old-index.d.ts +0 -9
- package/dist/commonjs/react/old-index.d.ts.map +0 -1
- package/dist/commonjs/react/old-index.js +0 -15
- package/dist/commonjs/react/old-index.js.map +0 -1
- package/dist/esm/react/client.d.ts +0 -31
- package/dist/esm/react/client.d.ts.map +0 -1
- package/dist/esm/react/client.js +0 -96
- package/dist/esm/react/client.js.map +0 -1
- package/dist/esm/react/old-index.d.ts +0 -9
- package/dist/esm/react/old-index.d.ts.map +0 -1
- package/dist/esm/react/old-index.js +0 -15
- package/dist/esm/react/old-index.js.map +0 -1
package/dist/esm/react/client.js
DELETED
|
@@ -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"}
|