diff --git a/examples/react/start-clerk-basic/package.disabled.json b/examples/react/start-clerk-basic/package.json similarity index 73% rename from examples/react/start-clerk-basic/package.disabled.json rename to examples/react/start-clerk-basic/package.json index 0f777b3181e..3dd7a5d4c4d 100644 --- a/examples/react/start-clerk-basic/package.disabled.json +++ b/examples/react/start-clerk-basic/package.json @@ -9,15 +9,16 @@ "start": "vite start" }, "dependencies": { - "@clerk/tanstack-react-start": "^0.19.0", - "@tanstack/react-router": "^1.132.0-alpha.25", - "@tanstack/react-router-devtools": "^1.132.0-alpha.25", - "@tanstack/react-start": "^1.132.0-alpha.25", + "@clerk/tanstack-react-start": "^0.26.3", + "@tanstack/react-router": "^1.133.8", + "@tanstack/react-router-devtools": "^1.133.8", + "@tanstack/react-start": "^1.133.8", "@vitejs/plugin-react": "^4.3.4", "react": "^19.0.0", "react-dom": "^19.0.0", "redaxios": "^0.5.1", - "tailwind-merge": "^2.6.0" + "tailwind-merge": "^2.6.0", + "srvx": "0.8.15" }, "devDependencies": { "@types/node": "^22.5.4", diff --git a/examples/react/start-clerk-basic/src/routes/__root.tsx b/examples/react/start-clerk-basic/src/routes/__root.tsx index 80ce274116b..8cf05a38350 100644 --- a/examples/react/start-clerk-basic/src/routes/__root.tsx +++ b/examples/react/start-clerk-basic/src/routes/__root.tsx @@ -1,11 +1,4 @@ /// -import { - HeadContent, - Link, - Outlet, - Scripts, - createRootRoute, -} from '@tanstack/react-router' import { ClerkProvider, SignInButton, @@ -15,15 +8,21 @@ import { } from '@clerk/tanstack-react-start' import { TanStackRouterDevtools } from '@tanstack/react-router-devtools' import { createServerFn } from '@tanstack/react-start' +import { auth } from '@clerk/tanstack-react-start/server' import * as React from 'react' -import { getAuth } from '@clerk/tanstack-react-start/server' -import { getRequest } from '@tanstack/react-start/server' +import { + HeadContent, + Link, + Outlet, + Scripts, + createRootRoute, +} from '@tanstack/react-router' import { DefaultCatchBoundary } from '~/components/DefaultCatchBoundary.js' import { NotFound } from '~/components/NotFound.js' import appCss from '~/styles/app.css?url' const fetchClerkAuth = createServerFn({ method: 'GET' }).handler(async () => { - const { userId } = await getAuth(getRequest()) + const { userId } = await auth() return { userId, diff --git a/examples/react/start-clerk-basic/src/routes/_authed.tsx b/examples/react/start-clerk-basic/src/routes/_authed.tsx index 1f68471a91c..1a97917c124 100644 --- a/examples/react/start-clerk-basic/src/routes/_authed.tsx +++ b/examples/react/start-clerk-basic/src/routes/_authed.tsx @@ -1,5 +1,5 @@ -import { createFileRoute } from '@tanstack/react-router' import { SignIn } from '@clerk/tanstack-react-start' +import { createFileRoute } from '@tanstack/react-router' export const Route = createFileRoute('/_authed')({ beforeLoad: ({ context }) => { diff --git a/examples/react/start-clerk-basic/src/server.ts b/examples/react/start-clerk-basic/src/server.ts deleted file mode 100644 index 74b9ed60042..00000000000 --- a/examples/react/start-clerk-basic/src/server.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { defaultStreamHandler } from '@tanstack/react-start/server' -import { createClerkHandler } from '@clerk/tanstack-react-start/server' - -// TODO fixme -const clerkHandler = createClerkHandler({} as any) - -export default { - fetch: clerkHandler(defaultStreamHandler), -} diff --git a/examples/react/start-clerk-basic/src/start.ts b/examples/react/start-clerk-basic/src/start.ts new file mode 100644 index 00000000000..7447718f41c --- /dev/null +++ b/examples/react/start-clerk-basic/src/start.ts @@ -0,0 +1,8 @@ +import { clerkMiddleware } from '@clerk/tanstack-react-start/server' +import { createStart } from '@tanstack/react-start' + +export const startInstance = createStart(() => { + return { + requestMiddleware: [clerkMiddleware()], + } +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6a06530a9e..faaeddcb8c8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5358,11 +5358,72 @@ importers: specifier: ^5.1.0 version: 5.1.0 + examples/react/start-clerk-basic: + dependencies: + '@clerk/tanstack-react-start': + specifier: ^0.26.3 + version: 0.26.3(@tanstack/react-router@packages+react-router)(@tanstack/react-start@packages+react-start)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@tanstack/react-router': + specifier: workspace:* + version: link:../../../packages/react-router + '@tanstack/react-router-devtools': + specifier: workspace:^ + version: link:../../../packages/react-router-devtools + '@tanstack/react-start': + specifier: workspace:* + version: link:../../../packages/react-start + '@vitejs/plugin-react': + specifier: ^4.3.4 + version: 4.7.0(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + react: + specifier: ^19.0.0 + version: 19.0.0 + react-dom: + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) + redaxios: + specifier: ^0.5.1 + version: 0.5.1 + srvx: + specifier: 0.8.15 + version: 0.8.15 + tailwind-merge: + specifier: ^2.6.0 + version: 2.6.0 + devDependencies: + '@types/node': + specifier: 22.10.2 + version: 22.10.2 + '@types/react': + specifier: ^19.0.8 + version: 19.0.8 + '@types/react-dom': + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.5.6) + postcss: + specifier: ^8.5.1 + version: 8.5.6 + tailwindcss: + specifier: ^3.4.17 + version: 3.4.17 + typescript: + specifier: ^5.7.2 + version: 5.9.2 + vite: + specifier: ^7.1.7 + version: 7.1.7(@types/node@22.10.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1) + vite-tsconfig-paths: + specifier: ^5.1.4 + version: 5.1.4(typescript@5.9.2)(vite@7.1.7(@types/node@22.10.2)(jiti@2.6.0)(lightningcss@1.30.1)(terser@5.37.0)(tsx@4.20.3)(yaml@2.8.1)) + examples/react/start-convex-trellaux: dependencies: '@convex-dev/react-query': specifier: 0.0.0-alpha.8 - version: 0.0.0-alpha.8(@tanstack/react-query@5.66.0(react@19.0.0))(convex@1.19.0(@clerk/clerk-react@5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) + version: 0.0.0-alpha.8(@tanstack/react-query@5.66.0(react@19.0.0))(convex@1.19.0(@clerk/clerk-react@5.53.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) '@tanstack/react-query': specifier: 5.66.0 version: 5.66.0(react@19.0.0) @@ -5386,7 +5447,7 @@ importers: version: 8.2.2 convex: specifier: ^1.19.0 - version: 1.19.0(@clerk/clerk-react@5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.19.0(@clerk/clerk-react@5.53.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) ky: specifier: ^1.7.4 version: 1.7.4 @@ -7912,15 +7973,19 @@ packages: '@bundled-es-modules/tough-cookie@0.1.6': resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} - '@clerk/clerk-react@5.44.0': - resolution: {integrity: sha512-navFmAeDcM6GV0BJlg4KYKgG7vOOSIQ65xbDZjATafoACO+HNgO95lC4Nhq1O79Cr4Yy1s3ue608RCnrB+LKDg==} + '@clerk/backend@2.18.3': + resolution: {integrity: sha512-fWMq/Tb2hgfUXLKJN8jr6pbpA5XLUwC4BjWz7lB5Y+YhXhBrO7GtfpZIS91L/aDhNb17X6IaE6XvS6tDJBCUUw==} + engines: {node: '>=18.17.0'} + + '@clerk/clerk-react@5.53.2': + resolution: {integrity: sha512-/ckRJC1dDS6hUVv+zzNX5VUCC49/UlbhKElN5LQqv172ntrx4Mw1TKBCJ3aO5Rct/RiJxhf1PfTUEohtY4QjUg==} engines: {node: '>=18.17.0'} peerDependencies: react: ^19.0.0 react-dom: ^19.0.0 - '@clerk/shared@3.22.1': - resolution: {integrity: sha512-b2CLuMiMlAoHo1FXaTXhLzFeaXZP2IiWj0hv2LA4uZDR7U+WuXby6+Wew6edpCMARg2gmnJTQSr7Ly2uuusCcw==} + '@clerk/shared@3.28.2': + resolution: {integrity: sha512-BfBCPaoPoLCiU0b0MhQUfCjs+bWRRLkdHw0vBffSjtsFLxp1b5IL5D8nKgDPIKIIv7DmCCmO15tr+GqG3CGpYQ==} engines: {node: '>=18.17.0'} peerDependencies: react: ^19.0.0 @@ -7931,8 +7996,17 @@ packages: react-dom: optional: true - '@clerk/types@4.82.0': - resolution: {integrity: sha512-vUgT3Wvu2HkCuvsVyaEykiMs/vYSLnjK9aBSubE7SbPYqlOTQRsOgfnmHHUdhB9gZIxkcy6SIZwLpZxPTtNMsw==} + '@clerk/tanstack-react-start@0.26.3': + resolution: {integrity: sha512-ZMiNTDyqHmczw08rb3o0KwVEFn1EJmaEtAY2VH8qvnyDY61fwtAXpM9jBseBhw/iYllYlv8QN/q/AIhVszXdNw==} + engines: {node: '>=18.17.0'} + peerDependencies: + '@tanstack/react-router': workspace:* + '@tanstack/react-start': workspace:* + react: ^19.0.0 + react-dom: ^19.0.0 + + '@clerk/types@4.95.0': + resolution: {integrity: sha512-K1kI3BjvufG1mZBZJ5Q8Yu9wV6AFpjjITml5vhvP95xibJWOi3eYvlRCTKXDNKBFGvQfrTJbwn67jSG2VdyLKw==} engines: {node: '>=18.17.0'} '@cloudflare/kv-asset-handler@0.4.0': @@ -10949,6 +11023,9 @@ packages: resolution: {integrity: sha512-hI6twvUkzOmyGZhQMza1gpfqErZxXRw6JEsiVjUbo7tFanVD+8Oil0Ih3l2nGzHdxPI41zFmfUQG7GHqhciKZQ==} hasBin: true + '@stablelib/base64@1.0.1': + resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==} + '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} @@ -13408,6 +13485,9 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -15775,6 +15855,11 @@ packages: peerDependencies: kysely: '*' + srvx@0.8.15: + resolution: {integrity: sha512-poPs1GuctQLpiJ/1Pb8e+5b5lju9hQU7wxJ6NkYVUw7ZZExeRoYwyiaOekal+rDZc99MO/J2y9+SGFpHBKRSpQ==} + engines: {node: '>=20.16.0'} + hasBin: true + srvx@0.8.7: resolution: {integrity: sha512-g3+15LlwVOGL2QpoTPZlvRjg+9a5Tx/69CatXjFP6txvhIaW2FmGyzJfb8yft5wyfGddvJmP/Yx+e/uNDMRSLQ==} engines: {node: '>=20.16.0'} @@ -15793,6 +15878,9 @@ packages: standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + standardwebhooks@1.0.0: + resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==} + statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -17339,18 +17427,28 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 - '@clerk/clerk-react@5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@clerk/backend@2.18.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@clerk/shared': 3.28.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@clerk/types': 4.95.0 + cookie: 1.0.2 + standardwebhooks: 1.0.0 + tslib: 2.8.1 + transitivePeerDependencies: + - react + - react-dom + + '@clerk/clerk-react@5.53.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@clerk/shared': 3.22.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@clerk/types': 4.82.0 + '@clerk/shared': 3.28.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@clerk/types': 4.95.0 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) tslib: 2.8.1 - optional: true - '@clerk/shared@3.22.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@clerk/shared@3.28.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@clerk/types': 4.82.0 + '@clerk/types': 4.95.0 dequal: 2.0.3 glob-to-regexp: 0.4.1 js-cookie: 3.0.5 @@ -17359,12 +17457,22 @@ snapshots: optionalDependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - optional: true - '@clerk/types@4.82.0': + '@clerk/tanstack-react-start@0.26.3(@tanstack/react-router@packages+react-router)(@tanstack/react-start@packages+react-start)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@clerk/backend': 2.18.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@clerk/clerk-react': 5.53.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@clerk/shared': 3.28.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@clerk/types': 4.95.0 + '@tanstack/react-router': link:packages/react-router + '@tanstack/react-start': link:packages/react-start + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + tslib: 2.8.1 + + '@clerk/types@4.95.0': dependencies: csstype: 3.1.3 - optional: true '@cloudflare/kv-asset-handler@0.4.0': dependencies: @@ -17422,10 +17530,10 @@ snapshots: '@types/conventional-commits-parser': 5.0.1 chalk: 5.4.1 - '@convex-dev/react-query@0.0.0-alpha.8(@tanstack/react-query@5.66.0(react@19.0.0))(convex@1.19.0(@clerk/clerk-react@5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': + '@convex-dev/react-query@0.0.0-alpha.8(@tanstack/react-query@5.66.0(react@19.0.0))(convex@1.19.0(@clerk/clerk-react@5.53.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': dependencies: '@tanstack/react-query': 5.66.0(react@19.0.0) - convex: 1.19.0(@clerk/clerk-react@5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + convex: 1.19.0(@clerk/clerk-react@5.53.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@cspotcode/source-map-support@0.8.1': dependencies: @@ -20327,6 +20435,8 @@ snapshots: '@sqlite.org/sqlite-wasm@3.48.0-build4': {} + '@stablelib/base64@1.0.1': {} + '@standard-schema/spec@1.0.0': {} '@stylistic/eslint-plugin@5.4.0(eslint@9.22.0(jiti@2.6.0))': @@ -22337,13 +22447,13 @@ snapshots: convert-source-map@2.0.0: {} - convex@1.19.0(@clerk/clerk-react@5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + convex@1.19.0(@clerk/clerk-react@5.53.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: esbuild: 0.23.0 jwt-decode: 3.1.2 prettier: 3.4.2 optionalDependencies: - '@clerk/clerk-react': 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@clerk/clerk-react': 5.53.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -23238,6 +23348,8 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-sha256@1.3.0: {} + fast-uri@3.0.6: {} fastest-levenshtein@1.0.16: {} @@ -23564,7 +23676,7 @@ snapshots: cookie-es: 2.0.0 fetchdts: 0.1.7 rou3: 0.7.5 - srvx: 0.8.7 + srvx: 0.8.15 handle-thing@2.0.1: {} @@ -25840,6 +25952,10 @@ snapshots: '@sqlite.org/sqlite-wasm': 3.48.0-build4 kysely: 0.27.6 + srvx@0.8.15: + dependencies: + cookie-es: 2.0.0 + srvx@0.8.7: dependencies: cookie-es: 2.0.0 @@ -25852,6 +25968,11 @@ snapshots: standard-as-callback@2.1.0: {} + standardwebhooks@1.0.0: + dependencies: + '@stablelib/base64': 1.0.1 + fast-sha256: 1.3.0 + statuses@1.5.0: {} statuses@2.0.1: {} @@ -25959,7 +26080,6 @@ snapshots: dequal: 2.0.3 react: 19.0.0 use-sync-external-store: 1.5.0(react@19.0.0) - optional: true symbol-tree@3.2.4: {}