22// All types from evaluations should be at least imported here and re-exported
33// Do not use types directly from generated files
44
5- import type {
6- EnvironmentContext ,
7- IdentityContext ,
8- SegmentContext ,
9- SegmentRule ,
10- SegmentCondition ,
11- InSegmentCondition ,
12- FeatureContext ,
13- FeatureValue as ContextFeatureValue ,
14- Traits ,
15- Features ,
16- Segments
17- } from './evaluationContext/evaluationContext.types.js' ;
18-
195import type {
206 EvaluationResult as EvaluationContextResult ,
21- FlagResult as EvaluationContextResultFlagResult ,
7+ FlagResult ,
228 Metadata
239} from './evaluationResult/evaluationResult.types.js' ;
2410
25- export type EnvironmentKey = EnvironmentContext [ 'key' ] ;
26- export type EnvironmentName = EnvironmentContext [ 'name' ] ;
27-
28- export type IdentityIdentifier = IdentityContext [ 'identifier' ] ;
29- export type IdentityKey = IdentityContext [ 'key' ] ;
30-
31- export type SegmentKey = SegmentContext [ 'key' ] ;
32- export type SegmentName = SegmentContext [ 'name' ] ;
33- export type SegmentRuleType = SegmentRule [ 'type' ] ;
34- export type ConditionOperator = SegmentCondition [ 'operator' ] | InSegmentCondition [ 'operator' ] ;
35- export type ConditionProperty = SegmentCondition [ 'property' ] | InSegmentCondition [ 'property' ] ;
36- export type ConditionValue = SegmentCondition [ 'value' ] | InSegmentCondition [ 'value' ] ;
37-
38- export type FeatureKey = FeatureContext [ 'feature_key' ] ;
39- export type FeatureName = FeatureContext [ 'name' ] ;
40- export type FeatureEnabled = FeatureContext [ 'enabled' ] ;
41- export type FeatureValue = FeatureContext [ 'value' ] ;
42- export type FeaturePriority = FeatureContext [ 'priority' ] ;
43- export type FeatureVariants = FeatureContext [ 'variants' ] ;
44-
45- export type VariantValue = ContextFeatureValue [ 'value' ] ;
46- export type VariantWeight = ContextFeatureValue [ 'weight' ] ;
11+ import type {
12+ EvaluationContext as GeneratedEvaluationContext ,
13+ FeatureContext as GeneratedFeatureContext
14+ } from './evaluationContext/evaluationContext.types.js' ;
4715
48- export type TraitMap = Traits ;
49- export type FeatureMap = Features ;
50- export type SegmentMap = Segments ;
16+ export interface FeatureMetadata extends Metadata {
17+ flagsmithId : number ;
18+ }
5119
52- export type SegmentConditionOperator = SegmentCondition [ 'operator' ] ;
20+ export interface FeatureContext < T extends Metadata = Metadata > {
21+ key : GeneratedFeatureContext [ 'key' ] ;
22+ feature_key : GeneratedFeatureContext [ 'feature_key' ] ;
23+ name : GeneratedFeatureContext [ 'name' ] ;
24+ enabled : GeneratedFeatureContext [ 'enabled' ] ;
25+ value : GeneratedFeatureContext [ 'value' ] ;
26+ variants ?: GeneratedFeatureContext [ 'variants' ] ;
27+ priority ?: GeneratedFeatureContext [ 'priority' ] ;
28+ metadata ?: T ;
29+ [ k : string ] : unknown ;
30+ }
5331
54- export type EvaluationReason = EvaluationContextResultFlagResult [ 'reason' ] ;
32+ export type FeaturesWithMetadata < T extends Metadata = Metadata > = {
33+ [ k : string ] : FeatureContext < T > ;
34+ } ;
5535
56- export type EvaluationResultSegments = EvaluationContextResult [ 'segments' ] ;
57- import type { FlagResult } from './evaluationResult/evaluationResult.types.js' ;
36+ export interface EvaluationContext < T extends Metadata = Metadata > {
37+ environment : GeneratedEvaluationContext [ 'environment' ] ;
38+ identity ?: GeneratedEvaluationContext [ 'identity' ] ;
39+ segments ?: GeneratedEvaluationContext [ 'segments' ] ;
40+ features ?: FeaturesWithMetadata < T > ;
41+ [ k : string ] : unknown ;
42+ }
5843
5944export type FlagResultWithMetadata < T extends Metadata = Metadata > = FlagResult & {
6045 metadata ?: T ;
@@ -65,11 +50,16 @@ export type EvaluationResultFlags<T extends Metadata = Metadata> = Record<
6550 FlagResultWithMetadata < T >
6651> ;
6752
68- export type EvaluationResult = {
69- flags : EvaluationResultFlags ;
53+ export type EvaluationResultSegments = EvaluationContextResult [ 'segments' ] ;
54+
55+ export type EvaluationResult < T extends Metadata = Metadata > = {
56+ flags : EvaluationResultFlags < T > ;
7057 segments : EvaluationResultSegments ;
7158} ;
7259
60+ export type EvaluationResultWithMetadata = EvaluationResult < FeatureMetadata > ;
61+ export type EvaluationContextWithMetadata = EvaluationContext < FeatureMetadata > ;
62+
7363export enum SegmentSource {
7464 API = 'api' ,
7565 IDENTITY_OVERRIDE = 'identity_override'
0 commit comments