From 19a504c181f139e480515373b1b909534261a78d Mon Sep 17 00:00:00 2001 From: Heat Hamilton Date: Fri, 15 Aug 2025 16:28:59 -0400 Subject: [PATCH 1/2] Use nodeFsOrThrow instead of directly importing fs module --- .../nextjs/src/server/keyless-telemetry.ts | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/nextjs/src/server/keyless-telemetry.ts b/packages/nextjs/src/server/keyless-telemetry.ts index 223b0b8c931..f015fe9d236 100644 --- a/packages/nextjs/src/server/keyless-telemetry.ts +++ b/packages/nextjs/src/server/keyless-telemetry.ts @@ -1,9 +1,9 @@ import type { TelemetryEventRaw } from '@clerk/types'; -import { promises as fs } from 'fs'; import { dirname, join } from 'path'; import { canUseKeyless } from '../utils/feature-flags'; import { createClerkClientWithOptions } from './createClerkClient'; +import { nodeFsOrThrow } from './fs/utils'; const EVENT_KEYLESS_ENV_DRIFT_DETECTED = 'KEYLESS_ENV_DRIFT_DETECTED'; const EVENT_SAMPLING_RATE = 1; // 100% sampling rate @@ -43,18 +43,23 @@ function getTelemetryFlagFilePath(): string { */ async function tryMarkTelemetryEventAsFired(): Promise { try { - const flagFilePath = getTelemetryFlagFilePath(); - const flagDirectory = dirname(flagFilePath); + if (canUseKeyless) { + const { mkdir, writeFile } = nodeFsOrThrow(); + const flagFilePath = getTelemetryFlagFilePath(); + const flagDirectory = dirname(flagFilePath); - // Ensure the directory exists before attempting to write the file - await fs.mkdir(flagDirectory, { recursive: true }); + // Ensure the directory exists before attempting to write the file + await mkdir(flagDirectory, { recursive: true }); - const flagData = { - firedAt: new Date().toISOString(), - event: EVENT_KEYLESS_ENV_DRIFT_DETECTED, - }; - await fs.writeFile(flagFilePath, JSON.stringify(flagData, null, 2), { flag: 'wx' }); - return true; + const flagData = { + firedAt: new Date().toISOString(), + event: EVENT_KEYLESS_ENV_DRIFT_DETECTED, + }; + await writeFile(flagFilePath, JSON.stringify(flagData, null, 2), { flag: 'wx' }); + return true; + } else { + return false; + } } catch (error: unknown) { if ((error as { code?: string })?.code === 'EEXIST') { return false; From d013b464a8d9b943dc97057c329372cb46039a9a Mon Sep 17 00:00:00 2001 From: Heat Hamilton Date: Fri, 15 Aug 2025 16:55:43 -0400 Subject: [PATCH 2/2] Changeset --- .changeset/itchy-queens-cough.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/itchy-queens-cough.md diff --git a/.changeset/itchy-queens-cough.md b/.changeset/itchy-queens-cough.md new file mode 100644 index 00000000000..5ae1be47305 --- /dev/null +++ b/.changeset/itchy-queens-cough.md @@ -0,0 +1,5 @@ +--- +'@clerk/nextjs': patch +--- + +Import fs methods with nodeFsOrThrow rather than direct import.