File tree Expand file tree Collapse file tree
react-router/src/server/keyless
tanstack-react-start/src/server/keyless Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11---
22" @clerk/react-router " : minor
3- " @clerk/shared " : patch
4- " @clerk/tanstack-react-start " : patch
53---
64
75Introduce Keyless quickstart for React Router. This allows the Clerk SDK to be used without having to sign up and paste your keys manually.
Original file line number Diff line number Diff line change 1- import { createFileStorage as sharedCreateFileStorage } from '@clerk/shared/keyless' ;
2- export type { KeylessStorage } from '@clerk/shared/keyless' ;
1+ import { createNodeFileStorage , type KeylessStorage } from '@clerk/shared/keyless' ;
2+
3+ export type { KeylessStorage } ;
4+
5+ export interface FileStorageOptions {
6+ cwd ?: ( ) => string ;
7+ }
38
49/**
510 * Creates a file-based storage adapter for keyless mode.
11+ * Uses dynamic imports to avoid bundler issues with edge runtimes.
612 */
7- export function createFileStorage ( ) {
8- return sharedCreateFileStorage ( {
9- frameworkPackageName : '@clerk/react-router' ,
10- } ) ;
13+ export async function createFileStorage ( options : FileStorageOptions = { } ) : Promise < KeylessStorage > {
14+ const { cwd = ( ) => process . cwd ( ) } = options ;
15+
16+ try {
17+ const [ fs , path ] = await Promise . all ( [ import ( 'node:fs' ) , import ( 'node:path' ) ] ) ;
18+
19+ return createNodeFileStorage ( fs , path , {
20+ cwd,
21+ frameworkPackageName : '@clerk/react-router' ,
22+ } ) ;
23+ } catch {
24+ throw new Error (
25+ 'Keyless mode requires a Node.js runtime with file system access. ' +
26+ 'Set VITE_CLERK_KEYLESS_DISABLED=1 to disable keyless mode.' ,
27+ ) ;
28+ }
1129}
Original file line number Diff line number Diff line change @@ -38,7 +38,7 @@ export async function keyless(
3838
3939 keylessInitPromise = ( async ( ) => {
4040 try {
41- const storage = createFileStorage ( ) ;
41+ const storage = await createFileStorage ( ) ;
4242
4343 const service = createKeylessService ( {
4444 storage,
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 66} from './devCache' ;
77export type { ClerkDevCache } from './devCache' ;
88
9- export { createFileStorage } from './createFileStorage' ;
10- export type { FileStorageOptions } from './createFileStorage' ;
11-
129export { createNodeFileStorage } from './nodeFileStorage' ;
1310export type { FileSystemAdapter , NodeFileStorageOptions , PathAdapter } from './nodeFileStorage' ;
1411
Original file line number Diff line number Diff line change 1- import { createFileStorage as sharedCreateFileStorage } from '@clerk/shared/keyless' ;
2- export type { KeylessStorage } from '@clerk/shared/keyless' ;
3-
4- /**
5- * Creates a file-based storage adapter for keyless mode.
6- */
7- export function createFileStorage ( ) {
8- return sharedCreateFileStorage ( {
1+ import * as fs from 'node:fs' ;
2+ import * as path from 'node:path' ;
3+
4+ import { createNodeFileStorage , type KeylessStorage } from '@clerk/shared/keyless' ;
5+
6+ export type { KeylessStorage } ;
7+
8+ export interface FileStorageOptions {
9+ cwd ?: ( ) => string ;
10+ }
11+
12+ export function createFileStorage ( options : FileStorageOptions = { } ) : KeylessStorage {
13+ const { cwd = ( ) => process . cwd ( ) } = options ;
14+
15+ return createNodeFileStorage ( fs , path , {
16+ cwd,
917 frameworkPackageName : '@clerk/tanstack-react-start' ,
1018 } ) ;
1119}
You can’t perform that action at this time.
0 commit comments