Skip to content

Commit 834c6eb

Browse files
committed
chore: revert
1 parent 57a8049 commit 834c6eb

6 files changed

Lines changed: 41 additions & 54 deletions

File tree

.changeset/curvy-jobs-pump.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
---
22
"@clerk/react-router": minor
3-
"@clerk/shared": patch
4-
"@clerk/tanstack-react-start": patch
53
---
64

75
Introduce Keyless quickstart for React Router. This allows the Clerk SDK to be used without having to sign up and paste your keys manually.
Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,29 @@
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
}

packages/react-router/src/server/keyless/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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,

packages/shared/src/keyless/createFileStorage.ts

Lines changed: 0 additions & 34 deletions
This file was deleted.

packages/shared/src/keyless/index.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ export {
66
} from './devCache';
77
export type { ClerkDevCache } from './devCache';
88

9-
export { createFileStorage } from './createFileStorage';
10-
export type { FileStorageOptions } from './createFileStorage';
11-
129
export { createNodeFileStorage } from './nodeFileStorage';
1310
export type { FileSystemAdapter, NodeFileStorageOptions, PathAdapter } from './nodeFileStorage';
1411

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,19 @@
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
}

0 commit comments

Comments
 (0)