diff --git a/frontend/local-client-cli/src/args.ts b/frontend/local-client-cli/src/args.ts index 961cadb5..fc2d4a95 100644 --- a/frontend/local-client-cli/src/args.ts +++ b/frontend/local-client-cli/src/args.ts @@ -13,6 +13,7 @@ export interface CliArgs { webSocketRetryIntervalMs?: number; logLevel: LogLevel; health?: string; + enableTelemetry?: boolean; } export function parseArgs(argv: string[]): CliArgs { @@ -56,6 +57,10 @@ export function parseArgs(argv: string[]): CliArgs { "--health ", "[OPTIONAL] Path to health status file for Docker healthcheck" ) + .option( + "--enable-telemetry", + "[OPTIONAL] Enable telemetry (disabled by default)" + ) .addHelpText( "after", ` @@ -84,6 +89,7 @@ Examples: | undefined; const logLevelStr = (opts.logLevel as string | undefined) ?? "INFO"; const health = opts.health as string | undefined; + const enableTelemetry = opts.enableTelemetry as boolean | undefined; /* eslint-enable @typescript-eslint/no-unsafe-type-assertion */ if (localPath === undefined) { @@ -124,6 +130,7 @@ Examples: ignorePatterns: ignorePattern, webSocketRetryIntervalMs: websocketRetryIntervalMs, logLevel, - health + health, + enableTelemetry }; } diff --git a/frontend/local-client-cli/src/cli.ts b/frontend/local-client-cli/src/cli.ts index 8ef7a45a..b0ce096e 100644 --- a/frontend/local-client-cli/src/cli.ts +++ b/frontend/local-client-cli/src/cli.ts @@ -98,7 +98,8 @@ async function main(): Promise { webSocketRetryIntervalMs: args.webSocketRetryIntervalMs ?? DEFAULT_SETTINGS.webSocketRetryIntervalMs, - isSyncEnabled: true + isSyncEnabled: true, + enableTelemetry: args.enableTelemetry ?? false }; const client = await SyncClient.create({ diff --git a/frontend/sync-client/src/utils/set-up-telemetry.ts b/frontend/sync-client/src/utils/set-up-telemetry.ts index 8f6de17d..e4a4d881 100644 --- a/frontend/sync-client/src/utils/set-up-telemetry.ts +++ b/frontend/sync-client/src/utils/set-up-telemetry.ts @@ -26,6 +26,8 @@ export const setUpTelemetry = (): (() => void) => { return (): void => { window.removeEventListener("error", onError); window.removeEventListener("unhandledrejection", onUnhandledRejection); - Sentry.close(5000); + Sentry.close(5000).catch(() => { + // Ignore errors during shutdown + }); }; };