From 88f9476b6f0b412382341842c774ad2fd334c472 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Thu, 9 Apr 2026 00:20:24 -0300 Subject: [PATCH 1/2] Remove redundant comments AI-Session-Id: b6e1bc93-ea86-4eef-b2d1-cfd87bd6cdcd AI-Tool: claude-code AI-Model: unknown --- src/dtos/types.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/dtos/types.ts b/src/dtos/types.ts index 12a25117..b2fc6068 100644 --- a/src/dtos/types.ts +++ b/src/dtos/types.ts @@ -203,7 +203,6 @@ export interface IExcludedSegment { export interface TargetingEntity { name: string; - // Properties required for evaluation changeNumber: number; status: 'ACTIVE' | 'ARCHIVED'; conditions: IDefinitionCondition[]; @@ -220,7 +219,6 @@ export interface IDefinition extends TargetingEntity { trafficTypeName: string; sets?: string[]; impressionsDisabled?: boolean; - // Properties required for evaluation prerequisites?: null | { n: string, ts: string[] From 4e8267d2fc6164f7171b7ef69b48abcac1137947 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Thu, 9 Apr 2026 10:03:54 -0300 Subject: [PATCH 2/2] Add version property to definitions and update related logic --- src/dtos/types.ts | 1 + src/evaluator/index.ts | 6 +++--- src/sync/polling/fetchers/__tests__/configsFetcher.spec.ts | 2 ++ src/sync/polling/fetchers/configsFetcher.ts | 3 ++- src/sync/submitters/types.ts | 2 +- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/dtos/types.ts b/src/dtos/types.ts index b2fc6068..94f24113 100644 --- a/src/dtos/types.ts +++ b/src/dtos/types.ts @@ -219,6 +219,7 @@ export interface IDefinition extends TargetingEntity { trafficTypeName: string; sets?: string[]; impressionsDisabled?: boolean; + version?: number; prerequisites?: null | { n: string, ts: string[] diff --git a/src/evaluator/index.ts b/src/evaluator/index.ts index 18f69b4c..87f04dde 100644 --- a/src/evaluator/index.ts +++ b/src/evaluator/index.ts @@ -159,7 +159,7 @@ function getEvaluation( // If the storage is async and the evaluated flag uses segments or dependencies, evaluation is thenable if (thenable(evaluation)) { return evaluation.then(result => { - result.changeNumber = definition.changeNumber; + result.changeNumber = definition.version || definition.changeNumber; result.config = definition.configurations && definition.configurations[result.treatment] || null; // @ts-expect-error impressionsDisabled is not exposed in the public typings yet. result.impressionsDisabled = options?.impressionsDisabled || definition.impressionsDisabled; @@ -167,7 +167,7 @@ function getEvaluation( return result; }); } else { - evaluation.changeNumber = definition.changeNumber; + evaluation.changeNumber = definition.version || definition.changeNumber; evaluation.config = definition.configurations && definition.configurations[evaluation.treatment] || null; // @ts-expect-error impressionsDisabled is not exposed in the public typings yet. evaluation.impressionsDisabled = options?.impressionsDisabled || definition.impressionsDisabled; @@ -236,7 +236,7 @@ function getDefaultTreatment( treatment: definition.defaultTreatment, label: NO_CONDITION_MATCH, // "default rule" config: definition.configurations && definition.configurations[definition.defaultTreatment] || null, - changeNumber: definition.changeNumber + changeNumber: definition.version || definition.changeNumber }; } diff --git a/src/sync/polling/fetchers/__tests__/configsFetcher.spec.ts b/src/sync/polling/fetchers/__tests__/configsFetcher.spec.ts index 8ea9e469..f355b6d5 100644 --- a/src/sync/polling/fetchers/__tests__/configsFetcher.spec.ts +++ b/src/sync/polling/fetchers/__tests__/configsFetcher.spec.ts @@ -8,6 +8,7 @@ const INPUT: IConfigsResponse = { name: 'SomeConfig1', variants: [{ name: 'v1', definition: { prop1: true, prop2: 123 } }, { name: 'v2', definition: { prop1: false, prop2: 456 } }], changeNumber: 0, + version: 1, targeting: { default: 'v2', conditions: [{ partitions: [{ variant: 'v1', size: 100 }], label: 'main condition', matchers: [{ type: 'IS_EQUAL_TO', data: { type: 'NUMBER', number: 42 }, attribute: 'age' }, { type: 'WHITELIST', data: { strings: ['a', 'b', 'c'] }, attribute: 'favoriteCharacter' }] }] } }], }; @@ -19,6 +20,7 @@ const EXPECTED_OUTPUT: IDefinitionChangesResponse = { d: [{ name: 'SomeConfig1', changeNumber: 0, + version: 1, status: 'ACTIVE', killed: false, defaultTreatment: 'v2', diff --git a/src/sync/polling/fetchers/configsFetcher.ts b/src/sync/polling/fetchers/configsFetcher.ts index f5e485de..9926ea54 100644 --- a/src/sync/polling/fetchers/configsFetcher.ts +++ b/src/sync/polling/fetchers/configsFetcher.ts @@ -132,7 +132,8 @@ function convertConfigToDefinition(config: IConfig): IDefinition { return { name: config.name, - changeNumber: config.changeNumber || 0, + version: config.version, + changeNumber: config.changeNumber, status: 'ACTIVE', conditions, killed: false, diff --git a/src/sync/submitters/types.ts b/src/sync/submitters/types.ts index 57e8bfd5..9042210b 100644 --- a/src/sync/submitters/types.ts +++ b/src/sync/submitters/types.ts @@ -12,7 +12,7 @@ type ImpressionPayload = { t: string; /** Timestamp */ m: number; - /** Change number */ + /** Version */ c: number; /** Rule label */ r?: string;