Skip to content

Commit e0f93c6

Browse files
committed
Keep fingerprint telemetry from blocking login
1 parent 3d8f71d commit e0f93c6

1 file changed

Lines changed: 35 additions & 8 deletions

File tree

cli/src/utils/fingerprint.ts

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,27 @@ const BASE64URL_ALPHABET =
3030
type RandomValuesProvider = {
3131
getRandomValues: (bytes: Uint8Array) => Uint8Array
3232
}
33+
type FingerprintLogLevel = 'debug' | 'info' | 'warn' | 'error'
34+
35+
function logFingerprint(
36+
level: FingerprintLogLevel,
37+
data: Record<string, any>,
38+
message: string,
39+
): void {
40+
try {
41+
logger[level](data, message)
42+
} catch {
43+
// Fingerprinting is part of login; logging must not block it.
44+
}
45+
}
46+
47+
function trackFingerprintGenerated(properties: Record<string, any>): void {
48+
try {
49+
trackEvent(AnalyticsEvent.FINGERPRINT_GENERATED, properties)
50+
} catch {
51+
// Fingerprinting is part of login; telemetry must not block it.
52+
}
53+
}
3354

3455
async function getMachineId(): Promise<string> {
3556
if (!machineIdModule) {
@@ -157,7 +178,8 @@ export function generateLegacyFingerprintSuffix(
157178
.toString('base64url')
158179
.substring(0, LEGACY_FINGERPRINT_SUFFIX_LENGTH)
159180
} catch (err) {
160-
logger.warn(
181+
logFingerprint(
182+
'warn',
161183
{
162184
errorMessage: err instanceof Error ? err.message : String(err),
163185
},
@@ -174,7 +196,8 @@ export function generateLegacyFingerprintSuffix(
174196
.substring(0, LEGACY_FINGERPRINT_SUFFIX_LENGTH)
175197
}
176198
} catch (err) {
177-
logger.warn(
199+
logFingerprint(
200+
'warn',
178201
{
179202
errorMessage: err instanceof Error ? err.message : String(err),
180203
},
@@ -219,20 +242,22 @@ export async function calculateFingerprint(): Promise<string> {
219242
ENHANCED_FINGERPRINT_TIMEOUT_MS,
220243
`Enhanced CLI fingerprinting timed out after ${ENHANCED_FINGERPRINT_TIMEOUT_MS}ms`,
221244
)
222-
logger.debug(
245+
logFingerprint(
246+
'debug',
223247
{
224248
fingerprintType: 'enhanced_cli',
225249
fingerprintId: fingerprint.substring(0, 20) + '...',
226250
},
227251
'Enhanced CLI fingerprint generated successfully',
228252
)
229-
trackEvent(AnalyticsEvent.FINGERPRINT_GENERATED, {
253+
trackFingerprintGenerated({
230254
fingerprintType: 'enhanced_cli',
231255
success: true,
232256
})
233257
return fingerprint
234258
} catch (enhancedError) {
235-
logger.info(
259+
logFingerprint(
260+
'info',
236261
{
237262
errorMessage:
238263
enhancedError instanceof Error ? enhancedError.message : String(enhancedError),
@@ -243,22 +268,24 @@ export async function calculateFingerprint(): Promise<string> {
243268

244269
try {
245270
const fingerprint = calculateLegacyFingerprint()
246-
logger.debug(
271+
logFingerprint(
272+
'debug',
247273
{
248274
fingerprintType: 'legacy_fallback',
249275
fingerprintId: fingerprint,
250276
},
251277
'Legacy fingerprint generated successfully as fallback',
252278
)
253-
trackEvent(AnalyticsEvent.FINGERPRINT_GENERATED, {
279+
trackFingerprintGenerated({
254280
fingerprintType: 'legacy',
255281
success: true,
256282
fallbackReason:
257283
enhancedError instanceof Error ? enhancedError.message : 'unknown',
258284
})
259285
return fingerprint
260286
} catch (legacyError) {
261-
logger.error(
287+
logFingerprint(
288+
'error',
262289
{
263290
errorMessage:
264291
legacyError instanceof Error ? legacyError.message : String(legacyError),

0 commit comments

Comments
 (0)