diff --git a/README.md b/README.md index 37c019a..e4ff60d 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ PRs still in flight. Every row has a patch in `packages/` you can drop into your | :--- | :--- | :--- | :--- | | [`bun`](packages/oven-sh/bun/) | `1.3.14` | Drop the order-dependent peer-dep early-match block from `get_or_put_resolved_package` so `bun.lock` stops varying run to run. The block bound peers to whichever same-name resolution `package_index` held first, and `package_index` fills in thread-pool-completion order. Dedup and the "incorrect peer dependency" warning move into `Tree::hoist_dependency` where placement is deterministic. Rust port of Dylan's [#29804](https://github.com/oven-sh/bun/pull/29804). | [oven-sh/bun#30855](https://github.com/oven-sh/bun/pull/30855) | | [`@convex-dev/better-auth`](packages/@convex-dev/better-auth/) | `0.12.2` | Wrap `fetchAccessToken` in `new Promise()` so `useConvexAuth().isAuthenticated` flips after sign-in on Hermes V1. The Expo SDK 56 canary dropped `@babel/plugin-transform-async-to-generator` from its Hermes V1 preset ([expo/expo#45345](https://github.com/expo/expo/pull/45345)), exposing a bridge race the transform's extra tick was hiding. Babel-layer root fix in [facebook/react-native#56816](https://github.com/facebook/react-native/pull/56816). | [get-convex/better-auth#368](https://github.com/get-convex/better-auth/pull/368) | +| [`@convex-dev/better-auth`](packages/@convex-dev/better-auth/) | `0.12.2` | Drop the cached JWT when `authClient.useSession().session.id` changes. The React hook returned the stale token until logout, so `convex/react`'s `useConvexAuth` held a JWT whose `sub` pointed at a deleted session for the half-second between `/change-password` rotating sessions and the next `forceRefreshToken`. Track `sessionId` in a ref, compare on every `fetchAccessToken`, clear both `cachedToken` and `pendingTokenRef` on rotation. Pairs with [better-auth/better-auth#9345](https://github.com/better-auth/better-auth/pull/9345). | [get-convex/better-auth#329](https://github.com/get-convex/better-auth/pull/329) | | [`@react-native/babel-preset`](packages/@react-native/babel-preset/) | `0.85.3` | Three Babel plugins that rewrite source patterns Hermes V1 mishandles: `async ({a}) =>` (await resolves with `undefined` while the body keeps running), `class` inside `finally` (IR-cache contamination), and `super.x` in object-accessor identifier keys (segfaults at IR generation). Port of [@kitten](https://github.com/kitten)'s plugins from `babel-preset-expo` ([expo/expo#45601](https://github.com/expo/expo/pull/45601)) so bare RN consumers escape the bugs without `babel-preset-expo`. Root cause: [facebook/hermes#1761](https://github.com/facebook/hermes/issues/1761). | [facebook/react-native#56816](https://github.com/facebook/react-native/pull/56816) | | [`better-auth`](packages/better-auth/) | `1.6.11` | Preserve the caller's session on `/change-password` with `revokeOtherSessions: true`. Same family as [#9087](https://github.com/better-auth/better-auth/pull/9087). | [better-auth/better-auth#9345](https://github.com/better-auth/better-auth/pull/9345) | | [`@hugeicons/react`](packages/@hugeicons/react/) | `1.1.6` | Ship subpath types for `@hugeicons/core-free-icons/*` so TS finds them under `node16`, `nodenext`, and `bundler` resolution. Vite dev stops pre-bundling the 6.2 MB barrel for the 33 KB you actually use. | [hugeicons/react#5](https://github.com/hugeicons/react/pull/5) | diff --git a/packages/@convex-dev/better-auth/bun/@convex-dev%2Fbetter-auth@0.12.2-pr329.patch b/packages/@convex-dev/better-auth/bun/@convex-dev%2Fbetter-auth@0.12.2-pr329.patch new file mode 100644 index 0000000..2926a48 --- /dev/null +++ b/packages/@convex-dev/better-auth/bun/@convex-dev%2Fbetter-auth@0.12.2-pr329.patch @@ -0,0 +1,177 @@ +diff --git a/dist/react/index.d.ts.map b/dist/react/index.d.ts.map +index 850157a..8268d9f 100644 +--- a/dist/react/index.d.ts.map ++++ b/dist/react/index.d.ts.map +@@ -1 +1 @@ +-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,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,sBAAsB,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,qBAAqB,CAAC,sBAAsB,CAAC,GAC7C,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAIrD,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC5C,SAAS,IAAI,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,EACV,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,2CAqCA;AAuHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,YAAY,GAAI,iFAwB1B,iBAAiB,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACvC,aAAa,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC1C,CAAC,4CA4BD,CAAC"} +\ No newline at end of file ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,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,sBAAsB,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,qBAAqB,CAAC,sBAAsB,CAAC,GAC7C,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAIrD,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC5C,SAAS,IAAI,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,EACV,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,2CAqCA;AA0ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,YAAY,GAAI,iFAwB1B,iBAAiB,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACvC,aAAa,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC1C,CAAC,4CA4BD,CAAC"} +\ No newline at end of file +diff --git a/dist/react/index.js b/dist/react/index.js +index a90d81c..f5a92f6 100644 +--- a/dist/react/index.js ++++ b/dist/react/index.js +@@ -41,7 +41,13 @@ export function ConvexBetterAuthProvider({ children, client, authClient, initial + } + let initialTokenUsed = false; + function useUseAuthFromBetterAuth(authClient, initialToken) { +- const [cachedToken, setCachedToken] = useState(initialTokenUsed ? null : (initialToken ?? null)); ++ const initial = initialTokenUsed ? null : (initialToken ?? null); ++ const cachedTokenRef = useRef(initial); ++ const [cachedToken, setCachedTokenState] = useState(initial); ++ const setCachedToken = (value) => { ++ cachedTokenRef.current = value; ++ setCachedTokenState(value); ++ }; + const pendingTokenRef = useRef(null); + useEffect(() => { + if (!initialTokenUsed) { +@@ -51,37 +57,52 @@ function useUseAuthFromBetterAuth(authClient, initialToken) { + return useMemo(() => function useAuthFromBetterAuth() { + const { data: session, isPending: isSessionPending } = authClient.useSession(); + const sessionId = session?.session?.id; ++ const lastSessionIdRef = useRef(sessionId); + useEffect(() => { + if (!session && !isSessionPending && cachedToken) { + setCachedToken(null); + } + }, [session, isSessionPending]); + const fetchAccessToken = useCallback(async ({ forceRefreshToken = false, } = {}) => { +- if (cachedToken && !forceRefreshToken) { +- return cachedToken; ++ if (sessionId !== undefined && ++ lastSessionIdRef.current !== undefined && ++ sessionId !== lastSessionIdRef.current) { ++ cachedTokenRef.current = null; ++ pendingTokenRef.current = null; ++ setCachedTokenState(null); ++ } ++ lastSessionIdRef.current = sessionId; ++ if (cachedTokenRef.current && !forceRefreshToken) { ++ return cachedTokenRef.current; + } + if (!forceRefreshToken && pendingTokenRef.current) { + return pendingTokenRef.current; + } +- pendingTokenRef.current = authClient.convex ++ const tokenPromise = authClient.convex + .token({ fetchOptions: { throw: false } }) + .then(({ data }) => { ++ if (pendingTokenRef.current !== tokenPromise) ++ return null; + const token = data?.token || null; + setCachedToken(token); + return token; + }) + .catch(() => { ++ if (pendingTokenRef.current !== tokenPromise) ++ return null; + setCachedToken(null); + return null; + }) + .finally(() => { +- pendingTokenRef.current = null; ++ if (pendingTokenRef.current === tokenPromise) { ++ pendingTokenRef.current = null; ++ } + }); +- return pendingTokenRef.current; ++ pendingTokenRef.current = tokenPromise; ++ return tokenPromise; + }, + // Build a new fetchAccessToken to trigger setAuth() whenever the + // session changes. +- // eslint-disable-next-line react-hooks/exhaustive-deps + [sessionId]); + return useMemo(() => ({ + isLoading: isSessionPending && !cachedToken, +diff --git a/dist/react/index.js.map b/dist/react/index.js.map +index 09e5b18..f848c9a 100644 +--- a/dist/react/index.js.map ++++ b/dist/react/index.js.map +@@ -1 +1 @@ +-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"} +\ No newline at end of file ++{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/src/react/index.tsx b/src/react/index.tsx +index dc10909..269e17c 100644 +--- a/src/react/index.tsx ++++ b/src/react/index.tsx +@@ -105,9 +105,13 @@ function useUseAuthFromBetterAuth( + authClient: AuthClient, + initialToken?: string | null + ) { +- const [cachedToken, setCachedToken] = useState( +- initialTokenUsed ? null : (initialToken ?? null) +- ); ++ const initial = initialTokenUsed ? null : (initialToken ?? null); ++ const cachedTokenRef = useRef(initial); ++ const [cachedToken, setCachedTokenState] = useState(initial); ++ const setCachedToken = (value: string | null) => { ++ cachedTokenRef.current = value; ++ setCachedTokenState(value); ++ }; + const pendingTokenRef = useRef | null>(null); + useEffect(() => { + if (!initialTokenUsed) { +@@ -121,6 +125,7 @@ function useUseAuthFromBetterAuth( + const { data: session, isPending: isSessionPending } = + authClient.useSession(); + const sessionId = session?.session?.id; ++ const lastSessionIdRef = useRef(sessionId); + useEffect(() => { + if (!session && !isSessionPending && cachedToken) { + setCachedToken(null); +@@ -130,31 +135,45 @@ function useUseAuthFromBetterAuth( + async ({ + forceRefreshToken = false, + }: { forceRefreshToken?: boolean } = {}) => { +- if (cachedToken && !forceRefreshToken) { +- return cachedToken; ++ if ( ++ sessionId !== undefined && ++ lastSessionIdRef.current !== undefined && ++ sessionId !== lastSessionIdRef.current ++ ) { ++ cachedTokenRef.current = null; ++ pendingTokenRef.current = null; ++ setCachedTokenState(null); ++ } ++ lastSessionIdRef.current = sessionId; ++ if (cachedTokenRef.current && !forceRefreshToken) { ++ return cachedTokenRef.current; + } + if (!forceRefreshToken && pendingTokenRef.current) { + return pendingTokenRef.current; + } +- pendingTokenRef.current = authClient.convex ++ const tokenPromise = authClient.convex + .token({ fetchOptions: { throw: false } }) + .then(({ data }) => { ++ if (pendingTokenRef.current !== tokenPromise) return null; + const token = data?.token || null; + setCachedToken(token); + return token; + }) + .catch(() => { ++ if (pendingTokenRef.current !== tokenPromise) return null; + setCachedToken(null); + return null; + }) + .finally(() => { +- pendingTokenRef.current = null; ++ if (pendingTokenRef.current === tokenPromise) { ++ pendingTokenRef.current = null; ++ } + }); +- return pendingTokenRef.current; ++ pendingTokenRef.current = tokenPromise; ++ return tokenPromise; + }, + // Build a new fetchAccessToken to trigger setAuth() whenever the + // session changes. +- // eslint-disable-next-line react-hooks/exhaustive-deps + [sessionId] + ); + return useMemo( diff --git a/packages/@convex-dev/better-auth/npm/@convex-dev+better-auth+0.12.2-pr329.patch b/packages/@convex-dev/better-auth/npm/@convex-dev+better-auth+0.12.2-pr329.patch new file mode 100644 index 0000000..fbc03f7 --- /dev/null +++ b/packages/@convex-dev/better-auth/npm/@convex-dev+better-auth+0.12.2-pr329.patch @@ -0,0 +1,177 @@ +diff --git a/node_modules/@convex-dev/better-auth/dist/react/index.d.ts.map b/node_modules/@convex-dev/better-auth/dist/react/index.d.ts.map +index 850157a..8268d9f 100644 +--- a/node_modules/@convex-dev/better-auth/dist/react/index.d.ts.map ++++ b/node_modules/@convex-dev/better-auth/dist/react/index.d.ts.map +@@ -1 +1 @@ +-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,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,sBAAsB,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,qBAAqB,CAAC,sBAAsB,CAAC,GAC7C,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAIrD,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC5C,SAAS,IAAI,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,EACV,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,2CAqCA;AAuHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,YAAY,GAAI,iFAwB1B,iBAAiB,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACvC,aAAa,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC1C,CAAC,4CA4BD,CAAC"} +\ No newline at end of file ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,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,sBAAsB,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,qBAAqB,CAAC,sBAAsB,CAAC,GAC7C,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAIrD,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC5C,SAAS,IAAI,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,EACV,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,2CAqCA;AA0ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,YAAY,GAAI,iFAwB1B,iBAAiB,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACvC,aAAa,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC1C,CAAC,4CA4BD,CAAC"} +\ No newline at end of file +diff --git a/node_modules/@convex-dev/better-auth/dist/react/index.js b/node_modules/@convex-dev/better-auth/dist/react/index.js +index a90d81c..f5a92f6 100644 +--- a/node_modules/@convex-dev/better-auth/dist/react/index.js ++++ b/node_modules/@convex-dev/better-auth/dist/react/index.js +@@ -41,7 +41,13 @@ export function ConvexBetterAuthProvider({ children, client, authClient, initial + } + let initialTokenUsed = false; + function useUseAuthFromBetterAuth(authClient, initialToken) { +- const [cachedToken, setCachedToken] = useState(initialTokenUsed ? null : (initialToken ?? null)); ++ const initial = initialTokenUsed ? null : (initialToken ?? null); ++ const cachedTokenRef = useRef(initial); ++ const [cachedToken, setCachedTokenState] = useState(initial); ++ const setCachedToken = (value) => { ++ cachedTokenRef.current = value; ++ setCachedTokenState(value); ++ }; + const pendingTokenRef = useRef(null); + useEffect(() => { + if (!initialTokenUsed) { +@@ -51,37 +57,52 @@ function useUseAuthFromBetterAuth(authClient, initialToken) { + return useMemo(() => function useAuthFromBetterAuth() { + const { data: session, isPending: isSessionPending } = authClient.useSession(); + const sessionId = session?.session?.id; ++ const lastSessionIdRef = useRef(sessionId); + useEffect(() => { + if (!session && !isSessionPending && cachedToken) { + setCachedToken(null); + } + }, [session, isSessionPending]); + const fetchAccessToken = useCallback(async ({ forceRefreshToken = false, } = {}) => { +- if (cachedToken && !forceRefreshToken) { +- return cachedToken; ++ if (sessionId !== undefined && ++ lastSessionIdRef.current !== undefined && ++ sessionId !== lastSessionIdRef.current) { ++ cachedTokenRef.current = null; ++ pendingTokenRef.current = null; ++ setCachedTokenState(null); ++ } ++ lastSessionIdRef.current = sessionId; ++ if (cachedTokenRef.current && !forceRefreshToken) { ++ return cachedTokenRef.current; + } + if (!forceRefreshToken && pendingTokenRef.current) { + return pendingTokenRef.current; + } +- pendingTokenRef.current = authClient.convex ++ const tokenPromise = authClient.convex + .token({ fetchOptions: { throw: false } }) + .then(({ data }) => { ++ if (pendingTokenRef.current !== tokenPromise) ++ return null; + const token = data?.token || null; + setCachedToken(token); + return token; + }) + .catch(() => { ++ if (pendingTokenRef.current !== tokenPromise) ++ return null; + setCachedToken(null); + return null; + }) + .finally(() => { +- pendingTokenRef.current = null; ++ if (pendingTokenRef.current === tokenPromise) { ++ pendingTokenRef.current = null; ++ } + }); +- return pendingTokenRef.current; ++ pendingTokenRef.current = tokenPromise; ++ return tokenPromise; + }, + // Build a new fetchAccessToken to trigger setAuth() whenever the + // session changes. +- // eslint-disable-next-line react-hooks/exhaustive-deps + [sessionId]); + return useMemo(() => ({ + isLoading: isSessionPending && !cachedToken, +diff --git a/node_modules/@convex-dev/better-auth/dist/react/index.js.map b/node_modules/@convex-dev/better-auth/dist/react/index.js.map +index 09e5b18..f848c9a 100644 +--- a/node_modules/@convex-dev/better-auth/dist/react/index.js.map ++++ b/node_modules/@convex-dev/better-auth/dist/react/index.js.map +@@ -1 +1 @@ +-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"} +\ No newline at end of file ++{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"} +\ No newline at end of file +diff --git a/node_modules/@convex-dev/better-auth/src/react/index.tsx b/node_modules/@convex-dev/better-auth/src/react/index.tsx +index dc10909..269e17c 100644 +--- a/node_modules/@convex-dev/better-auth/src/react/index.tsx ++++ b/node_modules/@convex-dev/better-auth/src/react/index.tsx +@@ -105,9 +105,13 @@ function useUseAuthFromBetterAuth( + authClient: AuthClient, + initialToken?: string | null + ) { +- const [cachedToken, setCachedToken] = useState( +- initialTokenUsed ? null : (initialToken ?? null) +- ); ++ const initial = initialTokenUsed ? null : (initialToken ?? null); ++ const cachedTokenRef = useRef(initial); ++ const [cachedToken, setCachedTokenState] = useState(initial); ++ const setCachedToken = (value: string | null) => { ++ cachedTokenRef.current = value; ++ setCachedTokenState(value); ++ }; + const pendingTokenRef = useRef | null>(null); + useEffect(() => { + if (!initialTokenUsed) { +@@ -121,6 +125,7 @@ function useUseAuthFromBetterAuth( + const { data: session, isPending: isSessionPending } = + authClient.useSession(); + const sessionId = session?.session?.id; ++ const lastSessionIdRef = useRef(sessionId); + useEffect(() => { + if (!session && !isSessionPending && cachedToken) { + setCachedToken(null); +@@ -130,31 +135,45 @@ function useUseAuthFromBetterAuth( + async ({ + forceRefreshToken = false, + }: { forceRefreshToken?: boolean } = {}) => { +- if (cachedToken && !forceRefreshToken) { +- return cachedToken; ++ if ( ++ sessionId !== undefined && ++ lastSessionIdRef.current !== undefined && ++ sessionId !== lastSessionIdRef.current ++ ) { ++ cachedTokenRef.current = null; ++ pendingTokenRef.current = null; ++ setCachedTokenState(null); ++ } ++ lastSessionIdRef.current = sessionId; ++ if (cachedTokenRef.current && !forceRefreshToken) { ++ return cachedTokenRef.current; + } + if (!forceRefreshToken && pendingTokenRef.current) { + return pendingTokenRef.current; + } +- pendingTokenRef.current = authClient.convex ++ const tokenPromise = authClient.convex + .token({ fetchOptions: { throw: false } }) + .then(({ data }) => { ++ if (pendingTokenRef.current !== tokenPromise) return null; + const token = data?.token || null; + setCachedToken(token); + return token; + }) + .catch(() => { ++ if (pendingTokenRef.current !== tokenPromise) return null; + setCachedToken(null); + return null; + }) + .finally(() => { +- pendingTokenRef.current = null; ++ if (pendingTokenRef.current === tokenPromise) { ++ pendingTokenRef.current = null; ++ } + }); +- return pendingTokenRef.current; ++ pendingTokenRef.current = tokenPromise; ++ return tokenPromise; + }, + // Build a new fetchAccessToken to trigger setAuth() whenever the + // session changes. +- // eslint-disable-next-line react-hooks/exhaustive-deps + [sessionId] + ); + return useMemo( diff --git a/packages/@convex-dev/better-auth/pnpm/@convex-dev__better-auth@0.12.2-pr329.patch b/packages/@convex-dev/better-auth/pnpm/@convex-dev__better-auth@0.12.2-pr329.patch new file mode 100644 index 0000000..2926a48 --- /dev/null +++ b/packages/@convex-dev/better-auth/pnpm/@convex-dev__better-auth@0.12.2-pr329.patch @@ -0,0 +1,177 @@ +diff --git a/dist/react/index.d.ts.map b/dist/react/index.d.ts.map +index 850157a..8268d9f 100644 +--- a/dist/react/index.d.ts.map ++++ b/dist/react/index.d.ts.map +@@ -1 +1 @@ +-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,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,sBAAsB,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,qBAAqB,CAAC,sBAAsB,CAAC,GAC7C,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAIrD,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC5C,SAAS,IAAI,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,EACV,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,2CAqCA;AAuHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,YAAY,GAAI,iFAwB1B,iBAAiB,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACvC,aAAa,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC1C,CAAC,4CA4BD,CAAC"} +\ No newline at end of file ++{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAOvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,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,sBAAsB,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,CACF,CACF,CAAC;AACF,MAAM,MAAM,UAAU,GAClB,qBAAqB,CAAC,sBAAsB,CAAC,GAC7C,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAIrD,KAAK,kBAAkB,GAAG;IACxB,OAAO,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC5C,SAAS,IAAI,IAAI,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,EACV,YAAY,GACb,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,2CAqCA;AA0ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,eAAO,MAAM,YAAY,GAAI,iFAwB1B,iBAAiB,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAC;IACvC,aAAa,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC1C,CAAC,4CA4BD,CAAC"} +\ No newline at end of file +diff --git a/dist/react/index.js b/dist/react/index.js +index a90d81c..f5a92f6 100644 +--- a/dist/react/index.js ++++ b/dist/react/index.js +@@ -41,7 +41,13 @@ export function ConvexBetterAuthProvider({ children, client, authClient, initial + } + let initialTokenUsed = false; + function useUseAuthFromBetterAuth(authClient, initialToken) { +- const [cachedToken, setCachedToken] = useState(initialTokenUsed ? null : (initialToken ?? null)); ++ const initial = initialTokenUsed ? null : (initialToken ?? null); ++ const cachedTokenRef = useRef(initial); ++ const [cachedToken, setCachedTokenState] = useState(initial); ++ const setCachedToken = (value) => { ++ cachedTokenRef.current = value; ++ setCachedTokenState(value); ++ }; + const pendingTokenRef = useRef(null); + useEffect(() => { + if (!initialTokenUsed) { +@@ -51,37 +57,52 @@ function useUseAuthFromBetterAuth(authClient, initialToken) { + return useMemo(() => function useAuthFromBetterAuth() { + const { data: session, isPending: isSessionPending } = authClient.useSession(); + const sessionId = session?.session?.id; ++ const lastSessionIdRef = useRef(sessionId); + useEffect(() => { + if (!session && !isSessionPending && cachedToken) { + setCachedToken(null); + } + }, [session, isSessionPending]); + const fetchAccessToken = useCallback(async ({ forceRefreshToken = false, } = {}) => { +- if (cachedToken && !forceRefreshToken) { +- return cachedToken; ++ if (sessionId !== undefined && ++ lastSessionIdRef.current !== undefined && ++ sessionId !== lastSessionIdRef.current) { ++ cachedTokenRef.current = null; ++ pendingTokenRef.current = null; ++ setCachedTokenState(null); ++ } ++ lastSessionIdRef.current = sessionId; ++ if (cachedTokenRef.current && !forceRefreshToken) { ++ return cachedTokenRef.current; + } + if (!forceRefreshToken && pendingTokenRef.current) { + return pendingTokenRef.current; + } +- pendingTokenRef.current = authClient.convex ++ const tokenPromise = authClient.convex + .token({ fetchOptions: { throw: false } }) + .then(({ data }) => { ++ if (pendingTokenRef.current !== tokenPromise) ++ return null; + const token = data?.token || null; + setCachedToken(token); + return token; + }) + .catch(() => { ++ if (pendingTokenRef.current !== tokenPromise) ++ return null; + setCachedToken(null); + return null; + }) + .finally(() => { +- pendingTokenRef.current = null; ++ if (pendingTokenRef.current === tokenPromise) { ++ pendingTokenRef.current = null; ++ } + }); +- return pendingTokenRef.current; ++ pendingTokenRef.current = tokenPromise; ++ return tokenPromise; + }, + // Build a new fetchAccessToken to trigger setAuth() whenever the + // session changes. +- // eslint-disable-next-line react-hooks/exhaustive-deps + [sessionId]); + return useMemo(() => ({ + isLoading: isSessionPending && !cachedToken, +diff --git a/dist/react/index.js.map b/dist/react/index.js.map +index 09e5b18..f848c9a 100644 +--- a/dist/react/index.js.map ++++ b/dist/react/index.js.map +@@ -1 +1 @@ +-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":"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"} +\ No newline at end of file ++{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErF,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,QAAQ,GACT,MAAM,cAAc,CAAC;AAsCtB;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,MAAM,EACN,UAAU,EACV,YAAY,GAMb;IACC,MAAM,aAAa,GAAG,wBAAwB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACzE,SAAS,CAAC,GAAG,EAAE;QACb,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;gBAC5D,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1C,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,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBACzC,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;YACH,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,YAC5D,4BAAG,QAAQ,GAAI,GACQ,CAC1B,CAAC;AACJ,CAAC;AAED,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,SAAS,wBAAwB,CAC/B,UAAsB,EACtB,YAA4B;IAE5B,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,MAAM,CAAgB,OAAO,CAAC,CAAC;IACtD,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAgB,OAAO,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAE,EAAE;QAC9C,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,eAAe,GAAG,MAAM,CAAgC,IAAI,CAAC,CAAC;IACpE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,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,EAAE,EAAE,CAAC;QACvC,MAAM,gBAAgB,GAAG,MAAM,CAA4B,SAAS,CAAC,CAAC;QACtE,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,OAAO,IAAI,CAAC,gBAAgB,IAAI,WAAW,EAAE,CAAC;gBACjD,cAAc,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAChC,MAAM,gBAAgB,GAAG,WAAW,CAClC,KAAK,EAAE,EACL,iBAAiB,GAAG,KAAK,MACU,EAAE,EAAE,EAAE;YACzC,IACE,SAAS,KAAK,SAAS;gBACvB,gBAAgB,CAAC,OAAO,KAAK,SAAS;gBACtC,SAAS,KAAK,gBAAgB,CAAC,OAAO,EACtC,CAAC;gBACD,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC9B,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC/B,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YACD,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC;YACrC,IAAI,cAAc,CAAC,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACjD,OAAO,cAAc,CAAC,OAAO,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,iBAAiB,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;gBAClD,OAAO,eAAe,CAAC,OAAO,CAAC;YACjC,CAAC;YACD,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM;iBACnC,KAAK,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;iBACzC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;gBACjB,IAAI,eAAe,CAAC,OAAO,KAAK,YAAY;oBAAE,OAAO,IAAI,CAAC;gBAC1D,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;gBAClC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACV,IAAI,eAAe,CAAC,OAAO,KAAK,YAAY;oBAAE,OAAO,IAAI,CAAC;gBAC1D,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACZ,IAAI,eAAe,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;oBAC7C,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;gBACjC,CAAC;YACH,CAAC,CAAC,CAAC;YACL,eAAe,CAAC,OAAO,GAAG,YAAY,CAAC;YACvC,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,iEAAiE;QACjE,mBAAmB;QACnB,CAAC,SAAS,CAAC,CACZ,CAAC;QACF,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;YACL,SAAS,EAAE,gBAAgB,IAAI,CAAC,WAAW;YAC3C,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,WAAW,KAAK,IAAI;YAClE,gBAAgB;SACjB,CAAC;QACF,uDAAuD;QACvD,CAAC,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAC7D,CAAC;IACJ,CAAC,EACH,CAAC,UAAU,CAAC,CACb,CAAC;AACJ,CAAC;AAYD,MAAM,aAAc,SAAQ,SAAiD;IAC3E,YAAY,KAAyB;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,YAAY,GAAgC;QACjD,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;KAC3B,CAAC;IACF,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC1C,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,KAAY;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,MAAM;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;;AAGH,yEAAyE;AACzE,sFAAsF;AACtF,MAAM,gBAAgB,GAAG,CAAC,EACxB,aAAa,GAGd,EAAE,EAAE;IACH,QAAQ,CAAC,aAAa,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,QAAQ;AACR;;;GAGG;AACH,QAAQ;AACR;;GAEG;AACH,UAAU;AACV;;;GAGG;AACH,cAAc;AACd;;GAEG;AACH,aAAa;AACb;;GAEG;AACH,WAAW,GAOX,EAAE,EAAE;IACJ,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,aAAa,EAAE,CAAC;IACvD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC1C,6DAA6D;QAC7D,MAAM,UAAU,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,EAAE,CAAC;IACnB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnC,MAAM,YAAY,EAAE,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;IAEjC,OAAO,CACL,MAAC,aAAa,IACZ,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,aAE9B,KAAC,aAAa,cACZ,KAAC,gBAAgB,IAAC,aAAa,EAAE,aAAa,GAAI,GACpC,EACf,QAAQ,IACK,CACjB,CAAC;AACJ,CAAC,CAAC"} +\ No newline at end of file +diff --git a/src/react/index.tsx b/src/react/index.tsx +index dc10909..269e17c 100644 +--- a/src/react/index.tsx ++++ b/src/react/index.tsx +@@ -105,9 +105,13 @@ function useUseAuthFromBetterAuth( + authClient: AuthClient, + initialToken?: string | null + ) { +- const [cachedToken, setCachedToken] = useState( +- initialTokenUsed ? null : (initialToken ?? null) +- ); ++ const initial = initialTokenUsed ? null : (initialToken ?? null); ++ const cachedTokenRef = useRef(initial); ++ const [cachedToken, setCachedTokenState] = useState(initial); ++ const setCachedToken = (value: string | null) => { ++ cachedTokenRef.current = value; ++ setCachedTokenState(value); ++ }; + const pendingTokenRef = useRef | null>(null); + useEffect(() => { + if (!initialTokenUsed) { +@@ -121,6 +125,7 @@ function useUseAuthFromBetterAuth( + const { data: session, isPending: isSessionPending } = + authClient.useSession(); + const sessionId = session?.session?.id; ++ const lastSessionIdRef = useRef(sessionId); + useEffect(() => { + if (!session && !isSessionPending && cachedToken) { + setCachedToken(null); +@@ -130,31 +135,45 @@ function useUseAuthFromBetterAuth( + async ({ + forceRefreshToken = false, + }: { forceRefreshToken?: boolean } = {}) => { +- if (cachedToken && !forceRefreshToken) { +- return cachedToken; ++ if ( ++ sessionId !== undefined && ++ lastSessionIdRef.current !== undefined && ++ sessionId !== lastSessionIdRef.current ++ ) { ++ cachedTokenRef.current = null; ++ pendingTokenRef.current = null; ++ setCachedTokenState(null); ++ } ++ lastSessionIdRef.current = sessionId; ++ if (cachedTokenRef.current && !forceRefreshToken) { ++ return cachedTokenRef.current; + } + if (!forceRefreshToken && pendingTokenRef.current) { + return pendingTokenRef.current; + } +- pendingTokenRef.current = authClient.convex ++ const tokenPromise = authClient.convex + .token({ fetchOptions: { throw: false } }) + .then(({ data }) => { ++ if (pendingTokenRef.current !== tokenPromise) return null; + const token = data?.token || null; + setCachedToken(token); + return token; + }) + .catch(() => { ++ if (pendingTokenRef.current !== tokenPromise) return null; + setCachedToken(null); + return null; + }) + .finally(() => { +- pendingTokenRef.current = null; ++ if (pendingTokenRef.current === tokenPromise) { ++ pendingTokenRef.current = null; ++ } + }); +- return pendingTokenRef.current; ++ pendingTokenRef.current = tokenPromise; ++ return tokenPromise; + }, + // Build a new fetchAccessToken to trigger setAuth() whenever the + // session changes. +- // eslint-disable-next-line react-hooks/exhaustive-deps + [sessionId] + ); + return useMemo(