Skip to content

Commit

Permalink
FF-2465 Make orderPosition 1-indexed to match UI (#105)
Browse files Browse the repository at this point in the history
* FF-2465 rename flag-evaluation-details.ts to flag-evaluation-details-builder.ts

* FF-2465 make orderPosition 1-indexed to match UI

* FF-2465 include IAssignmentDetails in exports
  • Loading branch information
greghuels committed Jul 2, 2024
1 parent 54cb88a commit 52400e4
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 16 deletions.
2 changes: 1 addition & 1 deletion src/client/eppo-client-assignment-details.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import ApiEndpoints from '../api-endpoints';
import { IConfigurationStore } from '../configuration-store/configuration-store';
import { MemoryOnlyConfigurationStore } from '../configuration-store/memory.store';
import FlagConfigurationRequestor from '../flag-configuration-requestor';
import { AllocationEvaluationCode } from '../flag-evaluation-details';
import { AllocationEvaluationCode } from '../flag-evaluation-details-builder';
import FetchHttpClient from '../http-client';
import { Flag, ObfuscatedFlag, VariationType } from '../interfaces';
import { OperatorType } from '../rules';
Expand Down
2 changes: 1 addition & 1 deletion src/client/eppo-client.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { IConfigurationStore } from '../configuration-store/configuration-store'
import { MemoryOnlyConfigurationStore } from '../configuration-store/memory.store';
import { MAX_EVENT_QUEUE_SIZE, POLL_INTERVAL_MS, POLL_JITTER_PCT } from '../constants';
import FlagConfigurationRequestor from '../flag-configuration-requestor';
import { AllocationEvaluationCode } from '../flag-evaluation-details';
import { AllocationEvaluationCode } from '../flag-evaluation-details-builder';
import FetchHttpClient from '../http-client';
import { Flag, ObfuscatedFlag, VariationType } from '../interfaces';
import { OperatorType } from '../rules';
Expand Down
17 changes: 10 additions & 7 deletions src/client/eppo-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ import { decodeFlag } from '../decoding';
import { EppoValue } from '../eppo_value';
import { Evaluator, FlagEvaluation, noneResult } from '../evaluator';
import FlagConfigurationRequestor from '../flag-configuration-requestor';
import { FlagEvaluationDetails, FlagEvaluationDetailsBuilder } from '../flag-evaluation-details';
import {
FlagEvaluationDetails,
FlagEvaluationDetailsBuilder,
} from '../flag-evaluation-details-builder';
import FetchHttpClient from '../http-client';
import { Flag, ObfuscatedFlag, Variation, VariationType } from '../interfaces';
import { getMD5Hash } from '../obfuscation';
Expand All @@ -27,7 +30,7 @@ import { AttributeType, ValueType } from '../types';
import { validateNotBlank } from '../validation';
import { LIB_VERSION } from '../version';

export interface AssignmentDetails<T extends Variation['value'] | object>
export interface IAssignmentDetails<T extends Variation['value'] | object>
extends FlagEvaluationDetails {
value: T;
}
Expand Down Expand Up @@ -177,7 +180,7 @@ export default class EppoClient {
subjectKey: string,
subjectAttributes: Record<string, AttributeType>,
defaultValue: string,
): AssignmentDetails<string> {
): IAssignmentDetails<string> {
const { eppoValue, flagEvaluationDetails } = this.getAssignmentVariation(
flagKey,
subjectKey,
Expand Down Expand Up @@ -239,7 +242,7 @@ export default class EppoClient {
subjectKey: string,
subjectAttributes: Record<string, AttributeType>,
defaultValue: boolean,
): AssignmentDetails<boolean> {
): IAssignmentDetails<boolean> {
const { eppoValue, flagEvaluationDetails } = this.getAssignmentVariation(
flagKey,
subjectKey,
Expand Down Expand Up @@ -289,7 +292,7 @@ export default class EppoClient {
subjectKey: string,
subjectAttributes: Record<string, AttributeType>,
defaultValue: number,
): AssignmentDetails<number> {
): IAssignmentDetails<number> {
const { eppoValue, flagEvaluationDetails } = this.getAssignmentVariation(
flagKey,
subjectKey,
Expand Down Expand Up @@ -339,7 +342,7 @@ export default class EppoClient {
subjectKey: string,
subjectAttributes: Record<string, AttributeType>,
defaultValue: number,
): AssignmentDetails<number> {
): IAssignmentDetails<number> {
const { eppoValue, flagEvaluationDetails } = this.getAssignmentVariation(
flagKey,
subjectKey,
Expand Down Expand Up @@ -377,7 +380,7 @@ export default class EppoClient {
subjectKey: string,
subjectAttributes: Record<string, AttributeType>,
defaultValue: object,
): AssignmentDetails<object> {
): IAssignmentDetails<object> {
const { eppoValue, flagEvaluationDetails } = this.getAssignmentVariation(
flagKey,
subjectKey,
Expand Down
4 changes: 2 additions & 2 deletions src/evaluator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
AllocationEvaluationCode,
FlagEvaluationDetails,
FlagEvaluationDetailsBuilder,
} from './flag-evaluation-details';
} from './flag-evaluation-details-builder';
import { Flag, Shard, Range, Variation, Allocation, Split, VariationType } from './interfaces';
import { Rule, matchesRule } from './rules';
import { MD5Sharder, Sharder } from './sharders';
Expand Down Expand Up @@ -62,7 +62,7 @@ export class Evaluator {
unmatchedAllocations.push({
key: allocation.key,
allocationEvaluationCode: code,
orderPosition: i,
orderPosition: i + 1,
});
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ export class FlagEvaluationDetailsBuilder {
};

setMatch = (
orderPosition: number,
indexPosition: number,
variation: Variation,
allocation: Allocation,
matchedRule: Rule | null,
Expand All @@ -103,16 +103,17 @@ export class FlagEvaluationDetailsBuilder {
this.matchedAllocation = {
key: allocation.key,
allocationEvaluationCode: AllocationEvaluationCode.MATCH,
orderPosition,
orderPosition: indexPosition + 1, // orderPosition is 1-indexed to match UI
};
this.unmatchedAllocations = unmatchedAllocations;
const unevaluatedStartIndex = orderPosition + 1;
const unevaluatedStartIndex = indexPosition + 1;
const unevaluatedStartOrderPosition = unevaluatedStartIndex + 1; // orderPosition is 1-indexed to match UI
this.unevaluatedAllocations = this.allocations.slice(unevaluatedStartIndex).map(
(allocation, i) =>
({
key: allocation.key,
allocationEvaluationCode: AllocationEvaluationCode.UNEVALUATED,
orderPosition: unevaluatedStartIndex + i,
orderPosition: unevaluatedStartOrderPosition + i,
} as AllocationEvaluation),
);
return this;
Expand Down
6 changes: 5 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,10 @@ import {
assignmentCacheKeyToString,
assignmentCacheValueToString,
} from './cache/abstract-assignment-cache';
import EppoClient, { FlagConfigurationRequestParameters } from './client/eppo-client';
import EppoClient, {
IAssignmentDetails,
FlagConfigurationRequestParameters,
} from './client/eppo-client';
import {
IConfigurationStore,
IAsyncStore,
Expand All @@ -32,6 +35,7 @@ import * as validation from './validation';
export {
logger as applicationLogger,
AbstractAssignmentCache,
IAssignmentDetails as AssignmentDetails,
IAssignmentHooks,
IAssignmentLogger,
IAssignmentEvent,
Expand Down

0 comments on commit 52400e4

Please sign in to comment.