From 9a359aa700aac82fcbc43afe0e204501015ee742 Mon Sep 17 00:00:00 2001 From: James Kebinger Date: Mon, 25 Aug 2025 16:46:32 -0500 Subject: [PATCH] Fix large config ID precision loss in telemetry reporting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../telemetry/evaluationSummaries.test.ts | 27 +++++++++++++++++++ src/telemetry/evaluationSummaries.ts | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/__tests__/telemetry/evaluationSummaries.test.ts b/src/__tests__/telemetry/evaluationSummaries.test.ts index 3b55b7b..a7ca9aa 100644 --- a/src/__tests__/telemetry/evaluationSummaries.test.ts +++ b/src/__tests__/telemetry/evaluationSummaries.test.ts @@ -356,4 +356,31 @@ describe("evaluationSummaries", () => { ); }); }); + + it("preserves large config IDs without precision loss", async () => { + const largeConfigId = Long.fromString("17537369033474523"); + const largeConfig: Config = { + ...basicConfig, + id: largeConfigId, + }; + + const aggregator = evaluationSummaries( + mockApiClient, + telemetrySource, + instanceHash, + true + ); + + aggregator.push(evaluationFor(largeConfig, usContexts)); + + const syncResult = await aggregator.sync(); + + if (syncResult === undefined) { + throw new Error("syncResult is undefined"); + } + + const counter = syncResult.dataSent.events[0].summaries?.summaries[0].counters[0]; + expect(counter?.configId?.toString()).toBe("17537369033474523"); + expect(counter?.configId?.equals(largeConfigId)).toBe(true); + }); }); diff --git a/src/telemetry/evaluationSummaries.ts b/src/telemetry/evaluationSummaries.ts index ce93995..ff1c05d 100644 --- a/src/telemetry/evaluationSummaries.ts +++ b/src/telemetry/evaluationSummaries.ts @@ -144,7 +144,7 @@ export const evaluationSummaries = ( } const counter: ConfigEvaluationCounter = { - configId: Long.fromNumber(configId), + configId: Long.fromString(configId), conditionalValueIndex, configRowIndex, selectedValue,