diff --git a/package.json b/package.json index b4f5dd1..c3ad2e6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eppo/js-client-sdk-common", - "version": "4.13.0", + "version": "4.13.1", "description": "Common library for Eppo JavaScript SDKs (web, react native, and node)", "main": "dist/index.js", "files": [ diff --git a/src/client/eppo-client.spec.ts b/src/client/eppo-client.spec.ts index fad2c13..a761d8d 100644 --- a/src/client/eppo-client.spec.ts +++ b/src/client/eppo-client.spec.ts @@ -79,6 +79,7 @@ describe('EppoClient E2E test', () => { const mockFlag: Flag = { key: flagKey, enabled: true, + entityId: 123, variationType: VariationType.STRING, variations: { a: variationA, b: variationB }, allocations: [ @@ -195,6 +196,16 @@ describe('EppoClient E2E test', () => { client.setAssignmentLogger(mockLogger); expect(td.explain(mockLogger.logAssignment).callCount).toEqual(MAX_EVENT_QUEUE_SIZE); }); + + it('should log assignment event with entityId', () => { + const mockLogger = td.object(); + const client = new EppoClient({ flagConfigurationStore: storage }); + client.setAssignmentLogger(mockLogger); + client.getStringAssignment(flagKey, 'subject-to-be-logged', {}, 'default-value'); + expect(td.explain(mockLogger.logAssignment).callCount).toEqual(1); + const loggedAssignmentEvent = td.explain(mockLogger.logAssignment).calls[0].args[0]; + expect(loggedAssignmentEvent.entityId).toEqual(123); + }); }); describe('check type match', () => { diff --git a/src/client/eppo-client.ts b/src/client/eppo-client.ts index 3b47ece..ec37f01 100644 --- a/src/client/eppo-client.ts +++ b/src/client/eppo-client.ts @@ -1287,7 +1287,7 @@ export default class EppoClient { }); } - private maybeLogAssignment(result: FlagEvaluation & { entityId?: number }) { + private maybeLogAssignment(result: FlagEvaluation) { const { flagKey, format, diff --git a/src/client/eppo-precomputed-client.ts b/src/client/eppo-precomputed-client.ts index 7db1436..49a4ff6 100644 --- a/src/client/eppo-precomputed-client.ts +++ b/src/client/eppo-precomputed-client.ts @@ -237,6 +237,7 @@ export default class EppoPrecomputedClient { allocationKey: precomputedFlag.allocationKey ?? '', extraLogging: precomputedFlag.extraLogging ?? {}, doLog: precomputedFlag.doLog, + entityId: null, }; try { diff --git a/src/evaluator.ts b/src/evaluator.ts index ded3132..98ab3fd 100644 --- a/src/evaluator.ts +++ b/src/evaluator.ts @@ -30,6 +30,7 @@ export interface FlagEvaluationWithoutDetails { extraLogging: Record; // whether to log assignment event doLog: boolean; + entityId: number | null; } export interface FlagEvaluation extends FlagEvaluationWithoutDetails { @@ -122,6 +123,7 @@ export class Evaluator { extraLogging: split.extraLogging ?? {}, doLog: allocation.doLog, flagEvaluationDetails, + entityId: flag.entityId ?? null, }; } } @@ -227,6 +229,7 @@ export function noneResult( extraLogging: {}, doLog: false, flagEvaluationDetails, + entityId: null, }; } @@ -288,5 +291,6 @@ export function overrideResult( format: '', allocationKey: overrideAllocationKey, extraLogging: {}, + entityId: null, }; }