@@ -5,7 +5,10 @@ import {
55 GenericEvaluationContext ,
66 EnvironmentContext ,
77 IdentityContext ,
8- SegmentSource
8+ SegmentSource ,
9+ CustomFeatureMetadata ,
10+ SegmentsWithMetadata ,
11+ CustomSegmentMetadata
912} from '../models.js' ;
1013import { EnvironmentModel } from '../../environments/models.js' ;
1114import { IdentityModel } from '../../identities/models.js' ;
@@ -17,9 +20,13 @@ import { uuidToBigInt } from '../../features/util.js';
1720export function getEvaluationContext (
1821 environment : EnvironmentModel ,
1922 identity ?: IdentityModel ,
20- overrideTraits ?: TraitModel [ ]
23+ overrideTraits ?: TraitModel [ ] ,
24+ isEnvironmentEvaluation : boolean = false
2125) : GenericEvaluationContext {
2226 const environmentContext = mapEnvironmentModelToEvaluationContext ( environment ) ;
27+ if ( isEnvironmentEvaluation ) {
28+ return environmentContext ;
29+ }
2330 const identityContext = identity
2431 ? mapIdentityModelToIdentityContext ( identity , overrideTraits )
2532 : undefined ;
@@ -40,7 +47,7 @@ function mapEnvironmentModelToEvaluationContext(
4047 name : environment . project . name
4148 } ;
4249
43- const features : FeaturesWithMetadata = { } ;
50+ const features : FeaturesWithMetadata < CustomFeatureMetadata > = { } ;
4451 for ( const fs of environment . featureStates ) {
4552 const variants =
4653 fs . multivariateFeatureStateValues ?. length > 0
@@ -59,12 +66,12 @@ function mapEnvironmentModelToEvaluationContext(
5966 variants,
6067 priority : fs . featureSegment ?. priority ,
6168 metadata : {
62- flagsmithId : fs . feature . id
69+ id : fs . feature . id
6370 }
6471 } ;
6572 }
6673
67- const segmentOverrides : Segments = { } ;
74+ const segmentOverrides : SegmentsWithMetadata < CustomSegmentMetadata > = { } ;
6875 for ( const segment of environment . project . segments ) {
6976 segmentOverrides [ segment . id . toString ( ) ] = {
7077 key : segment . id . toString ( ) ,
@@ -79,18 +86,18 @@ function mapEnvironmentModelToEvaluationContext(
7986 value : fs . getValue ( ) ,
8087 priority : fs . featureSegment ?. priority ,
8188 metadata : {
82- flagsmithId : fs . feature . id
89+ id : fs . feature . id
8390 }
8491 } ) )
8592 : [ ] ,
8693 metadata : {
8794 source : SegmentSource . API ,
88- flagsmithId : segment . id
95+ id : segment . id
8996 }
9097 } ;
9198 }
9299
93- let identityOverrideSegments : Segments = { } ;
100+ let identityOverrideSegments : SegmentsWithMetadata < CustomSegmentMetadata > = { } ;
94101 if ( environment . identityOverrides && environment . identityOverrides . length > 0 ) {
95102 identityOverrideSegments = mapIdentityOverridesToSegments ( environment . identityOverrides ) ;
96103 }
@@ -140,8 +147,10 @@ function mapSegmentRuleModelToRule(rule: any): any {
140147 } ;
141148}
142149
143- function mapIdentityOverridesToSegments ( identityOverrides : IdentityModel [ ] ) : Segments {
144- const segments : Segments = { } ;
150+ function mapIdentityOverridesToSegments (
151+ identityOverrides : IdentityModel [ ]
152+ ) : SegmentsWithMetadata < CustomSegmentMetadata > {
153+ const segments : SegmentsWithMetadata < CustomSegmentMetadata > = { } ;
145154 const featuresToIdentifiers = new Map < string , { identifiers : string [ ] ; overrides : any [ ] } > ( ) ;
146155
147156 for ( const identity of identityOverrides ) {
@@ -158,7 +167,7 @@ function mapIdentityOverridesToSegments(identityOverrides: IdentityModel[]): Seg
158167 value : fs . getValue ( ) ,
159168 priority : - Infinity ,
160169 metadata : {
161- flagsmithId : fs . feature . id
170+ id : fs . feature . id
162171 }
163172 } ) ) ;
164173
0 commit comments