Skip to content

Commit 6daa584

Browse files
fix(nextjs): Use nodeFsOrThrow instead of directly importing fs module in keyless-telemetry (#6555)
1 parent 01c8bcc commit 6daa584

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

.changeset/itchy-queens-cough.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@clerk/nextjs': patch
3+
---
4+
5+
Import fs methods with nodeFsOrThrow rather than direct import.

packages/nextjs/src/server/keyless-telemetry.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import type { TelemetryEventRaw } from '@clerk/types';
2-
import { promises as fs } from 'fs';
32
import { dirname, join } from 'path';
43

54
import { canUseKeyless } from '../utils/feature-flags';
65
import { createClerkClientWithOptions } from './createClerkClient';
6+
import { nodeFsOrThrow } from './fs/utils';
77

88
const EVENT_KEYLESS_ENV_DRIFT_DETECTED = 'KEYLESS_ENV_DRIFT_DETECTED';
99
const EVENT_SAMPLING_RATE = 1; // 100% sampling rate
@@ -43,18 +43,23 @@ function getTelemetryFlagFilePath(): string {
4343
*/
4444
async function tryMarkTelemetryEventAsFired(): Promise<boolean> {
4545
try {
46-
const flagFilePath = getTelemetryFlagFilePath();
47-
const flagDirectory = dirname(flagFilePath);
46+
if (canUseKeyless) {
47+
const { mkdir, writeFile } = nodeFsOrThrow();
48+
const flagFilePath = getTelemetryFlagFilePath();
49+
const flagDirectory = dirname(flagFilePath);
4850

49-
// Ensure the directory exists before attempting to write the file
50-
await fs.mkdir(flagDirectory, { recursive: true });
51+
// Ensure the directory exists before attempting to write the file
52+
await mkdir(flagDirectory, { recursive: true });
5153

52-
const flagData = {
53-
firedAt: new Date().toISOString(),
54-
event: EVENT_KEYLESS_ENV_DRIFT_DETECTED,
55-
};
56-
await fs.writeFile(flagFilePath, JSON.stringify(flagData, null, 2), { flag: 'wx' });
57-
return true;
54+
const flagData = {
55+
firedAt: new Date().toISOString(),
56+
event: EVENT_KEYLESS_ENV_DRIFT_DETECTED,
57+
};
58+
await writeFile(flagFilePath, JSON.stringify(flagData, null, 2), { flag: 'wx' });
59+
return true;
60+
} else {
61+
return false;
62+
}
5863
} catch (error: unknown) {
5964
if ((error as { code?: string })?.code === 'EEXIST') {
6065
return false;

0 commit comments

Comments
 (0)