Skip to content

Commit b6403a9

Browse files
committed
feat: re-organized-models
1 parent cfe6101 commit b6403a9

File tree

1 file changed

+34
-30
lines changed

1 file changed

+34
-30
lines changed

flagsmith-engine/evaluation/models.ts

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,19 @@ import type {
1313
FeatureContext,
1414
EnvironmentContext,
1515
IdentityContext,
16-
Segments,
1716
SegmentContext
1817
} from './evaluationContext/evaluationContext.types.js';
1918

20-
export interface CustomFeatureMetadata extends FeatureMetadata {
21-
flagsmith_id: number;
19+
export * from './evaluationContext/evaluationContext.types.js';
20+
21+
export enum SegmentSource {
22+
API = 'api',
23+
IDENTITY_OVERRIDE = 'identity_override'
2224
}
2325

24-
export interface CustomSegmentMetadata extends SegmentMetadata {
26+
// Feature types
27+
export interface CustomFeatureMetadata extends FeatureMetadata {
2528
flagsmith_id: number;
26-
source?: SegmentSource;
2729
}
2830

2931
export interface FeatureContextWithMetadata<T extends FeatureMetadata = FeatureMetadata>
@@ -36,6 +38,21 @@ export type FeaturesWithMetadata<T extends FeatureMetadata = FeatureMetadata> =
3638
[k: string]: FeatureContextWithMetadata<T>;
3739
};
3840

41+
export type FlagResultWithMetadata<T extends FeatureMetadata = FeatureMetadata> = FlagResult & {
42+
metadata: T;
43+
};
44+
45+
export type EvaluationResultFlags<T extends FeatureMetadata = FeatureMetadata> = Record<
46+
string,
47+
FlagResultWithMetadata<T>
48+
>;
49+
50+
// Segment types
51+
export interface CustomSegmentMetadata extends SegmentMetadata {
52+
flagsmith_id: number;
53+
source?: SegmentSource;
54+
}
55+
3956
export interface SegmentContextWithMetadata<T extends SegmentMetadata = SegmentMetadata>
4057
extends SegmentContext {
4158
metadata: T;
@@ -46,6 +63,14 @@ export type SegmentsWithMetadata<T extends SegmentMetadata = SegmentMetadata> =
4663
[k: string]: SegmentContextWithMetadata<T>;
4764
};
4865

66+
export interface SegmentResultWithMetadata {
67+
name: string;
68+
metadata: CustomSegmentMetadata;
69+
}
70+
71+
export type EvaluationResultSegments = EvaluationContextResult['segments'];
72+
73+
// Evaluation context types
4974
export interface GenericEvaluationContext<
5075
T extends FeatureMetadata = FeatureMetadata,
5176
S extends SegmentMetadata = SegmentMetadata
@@ -57,36 +82,15 @@ export interface GenericEvaluationContext<
5782
[k: string]: unknown;
5883
}
5984

60-
export type FlagResultWithMetadata<T extends FeatureMetadata = FeatureMetadata> = FlagResult & {
61-
metadata: T;
62-
};
63-
64-
export type EvaluationResultFlags<T extends FeatureMetadata = FeatureMetadata> = Record<
65-
string,
66-
FlagResultWithMetadata<T>
85+
export type EvaluationContextWithMetadata = GenericEvaluationContext<
86+
CustomFeatureMetadata,
87+
CustomSegmentMetadata
6788
>;
6889

69-
export type EvaluationResultSegments = EvaluationContextResult['segments'];
70-
90+
// Evaluation result types
7191
export type EvaluationResult<T extends FeatureMetadata = FeatureMetadata> = {
7292
flags: EvaluationResultFlags<T>;
7393
segments: EvaluationResultSegments;
7494
};
7595

7696
export type EvaluationResultWithMetadata = EvaluationResult<CustomFeatureMetadata>;
77-
export type EvaluationContextWithMetadata = GenericEvaluationContext<
78-
CustomFeatureMetadata,
79-
CustomSegmentMetadata
80-
>;
81-
82-
export interface SegmentResultWithMetadata {
83-
name: string;
84-
metadata: CustomSegmentMetadata;
85-
}
86-
87-
export enum SegmentSource {
88-
API = 'api',
89-
IDENTITY_OVERRIDE = 'identity_override'
90-
}
91-
92-
export * from './evaluationContext/evaluationContext.types.js';

0 commit comments

Comments
 (0)