11import {
22 FeaturesWithMetadata ,
3- Segments ,
43 Traits ,
54 GenericEvaluationContext ,
65 EnvironmentContext ,
76 IdentityContext ,
8- SegmentSource
7+ SegmentSource ,
8+ SDKFeatureMetadata ,
9+ SegmentsWithMetadata ,
10+ SDKSegmentMetadata
911} from '../models.js' ;
1012import { EnvironmentModel } from '../../environments/models.js' ;
1113import { IdentityModel } from '../../identities/models.js' ;
@@ -17,9 +19,13 @@ import { uuidToBigInt } from '../../features/util.js';
1719export function getEvaluationContext (
1820 environment : EnvironmentModel ,
1921 identity ?: IdentityModel ,
20- overrideTraits ?: TraitModel [ ]
22+ overrideTraits ?: TraitModel [ ] ,
23+ isEnvironmentEvaluation : boolean = false
2124) : GenericEvaluationContext {
2225 const environmentContext = mapEnvironmentModelToEvaluationContext ( environment ) ;
26+ if ( isEnvironmentEvaluation ) {
27+ return environmentContext ;
28+ }
2329 const identityContext = identity
2430 ? mapIdentityModelToIdentityContext ( identity , overrideTraits )
2531 : undefined ;
@@ -40,7 +46,7 @@ function mapEnvironmentModelToEvaluationContext(
4046 name : environment . project . name
4147 } ;
4248
43- const features : FeaturesWithMetadata = { } ;
49+ const features : FeaturesWithMetadata < SDKFeatureMetadata > = { } ;
4450 for ( const fs of environment . featureStates ) {
4551 const variants =
4652 fs . multivariateFeatureStateValues ?. length > 0
@@ -59,12 +65,12 @@ function mapEnvironmentModelToEvaluationContext(
5965 variants,
6066 priority : fs . featureSegment ?. priority ,
6167 metadata : {
62- flagsmithId : fs . feature . id
68+ id : fs . feature . id
6369 }
6470 } ;
6571 }
6672
67- const segmentOverrides : Segments = { } ;
73+ const segmentOverrides : SegmentsWithMetadata < SDKSegmentMetadata > = { } ;
6874 for ( const segment of environment . project . segments ) {
6975 segmentOverrides [ segment . id . toString ( ) ] = {
7076 key : segment . id . toString ( ) ,
@@ -79,18 +85,18 @@ function mapEnvironmentModelToEvaluationContext(
7985 value : fs . getValue ( ) ,
8086 priority : fs . featureSegment ?. priority ,
8187 metadata : {
82- flagsmithId : fs . feature . id
88+ id : fs . feature . id
8389 }
8490 } ) )
8591 : [ ] ,
8692 metadata : {
8793 source : SegmentSource . API ,
88- flagsmithId : segment . id
94+ id : segment . id
8995 }
9096 } ;
9197 }
9298
93- let identityOverrideSegments : Segments = { } ;
99+ let identityOverrideSegments : SegmentsWithMetadata < SDKSegmentMetadata > = { } ;
94100 if ( environment . identityOverrides && environment . identityOverrides . length > 0 ) {
95101 identityOverrideSegments = mapIdentityOverridesToSegments ( environment . identityOverrides ) ;
96102 }
@@ -140,8 +146,10 @@ function mapSegmentRuleModelToRule(rule: any): any {
140146 } ;
141147}
142148
143- function mapIdentityOverridesToSegments ( identityOverrides : IdentityModel [ ] ) : Segments {
144- const segments : Segments = { } ;
149+ function mapIdentityOverridesToSegments (
150+ identityOverrides : IdentityModel [ ]
151+ ) : SegmentsWithMetadata < SDKSegmentMetadata > {
152+ const segments : SegmentsWithMetadata < SDKSegmentMetadata > = { } ;
145153 const featuresToIdentifiers = new Map < string , { identifiers : string [ ] ; overrides : any [ ] } > ( ) ;
146154
147155 for ( const identity of identityOverrides ) {
@@ -158,7 +166,7 @@ function mapIdentityOverridesToSegments(identityOverrides: IdentityModel[]): Seg
158166 value : fs . getValue ( ) ,
159167 priority : - Infinity ,
160168 metadata : {
161- flagsmithId : fs . feature . id
169+ id : fs . feature . id
162170 }
163171 } ) ) ;
164172
0 commit comments