File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -12,7 +12,6 @@ import { IdentityModel } from '../../identities/models.js';
1212import { TraitModel } from '../../identities/traits/models.js' ;
1313import { IDENTITY_OVERRIDE_SEGMENT_NAME } from '../../segments/constants.js' ;
1414import { createHash } from 'node:crypto' ;
15- import { parse as uuidParse } from 'uuid' ;
1615import { uuidToBigInt } from '../../features/util.js' ;
1716
1817export function getEvaluationContext (
@@ -57,7 +56,10 @@ function mapEnvironmentModelToEvaluationContext(environment: EnvironmentModel):
5756 enabled : fs . enabled ,
5857 value : fs . getValue ( ) ,
5958 variants,
60- priority : fs . featureSegment ?. priority
59+ priority : fs . featureSegment ?. priority ,
60+ metadata : {
61+ flagsmithId : fs . feature . id
62+ }
6163 } ;
6264 }
6365
Original file line number Diff line number Diff line change @@ -54,25 +54,22 @@ export type SegmentConditionOperator = SegmentCondition['operator'];
5454export type EvaluationReason = EvaluationContextResultFlagResult [ 'reason' ] ;
5555
5656export type EvaluationResultSegments = EvaluationContextResult [ 'segments' ] ;
57- export type EvaluationResultFlags = Record <
57+ import type { FlagResult } from './evaluationResult/evaluationResult.types.js' ;
58+
59+ export type FlagResultWithMetadata < T extends Metadata = Metadata > = FlagResult & {
60+ metadata ?: T ;
61+ } ;
62+
63+ export type EvaluationResultFlags < T extends Metadata = Metadata > = Record <
5864 string ,
59- {
60- feature_key : FeatureKey ;
61- name : FeatureName ;
62- enabled : FeatureEnabled ;
63- value : FeatureValue ;
64- metadata ?: Metadata ;
65- reason : EvaluationReason ;
66- }
65+ FlagResultWithMetadata < T >
6766> ;
6867
6968export type EvaluationResult = {
7069 flags : EvaluationResultFlags ;
7170 segments : EvaluationResultSegments ;
7271} ;
7372
74- export { FlagResult } from './evaluationResult/evaluationResult.types.js' ;
75-
7673export enum SegmentSource {
7774 API = 'api' ,
7875 IDENTITY_OVERRIDE = 'identity_override'
Original file line number Diff line number Diff line change @@ -127,7 +127,7 @@ export function evaluateFeatures(
127127 name : finalFeature . name ,
128128 enabled : finalFeature . enabled ,
129129 value : evaluatedValue ,
130- ...( finalFeature . metadata ? { metadata : { ... finalFeature . metadata } } : { } ) ,
130+ ...( finalFeature . metadata ? { metadata : finalFeature . metadata } : { } ) ,
131131 reason :
132132 evaluatedReason ??
133133 getTargetingMatchReason ( { type : 'SEGMENT' , override : segmentOverride } )
Original file line number Diff line number Diff line change 1- import { EvaluationResult , FlagResult } from '../flagsmith-engine/evaluation/models.js' ;
1+ import { EvaluationResult , FlagResultWithMetadata } from '../flagsmith-engine/evaluation/models.js' ;
22import { FeatureStateModel } from '../flagsmith-engine/features/models.js' ;
33import { AnalyticsProcessor } from './analytics.js' ;
44
@@ -81,11 +81,11 @@ export class Flag extends BaseFlag {
8181 } ) ;
8282 }
8383
84- static fromFlagResult ( flagResult : FlagResult ) : Flag {
84+ static fromFlagResult ( flagResult : FlagResultWithMetadata < { flagsmithId ?: number } > ) : Flag {
8585 return new Flag ( {
8686 enabled : flagResult . enabled ,
8787 value : flagResult . value ?? null ,
88- featureId : Number ( flagResult . feature_key ) ,
88+ featureId : flagResult . metadata ?. flagsmithId || Number ( flagResult . feature_key ) ,
8989 featureName : flagResult . name ,
9090 reason : flagResult . reason
9191 } ) ;
You can’t perform that action at this time.
0 commit comments