11import { FeatureStateModel } from '../flagsmith-engine/features/models.js' ;
22import { AnalyticsProcessor } from './analytics.js' ;
33
4+ type FlagValue = string | number | boolean | undefined ;
5+
46export class BaseFlag {
57 enabled : boolean ;
6- value : string | number | boolean | undefined ;
8+ value : FlagValue ;
79 isDefault : boolean ;
810
9- constructor (
10- value : string | number | boolean | undefined ,
11- enabled : boolean ,
12- isDefault : boolean
13- ) {
11+ constructor ( value : FlagValue , enabled : boolean , isDefault : boolean ) {
1412 this . value = value ;
1513 this . enabled = enabled ;
1614 this . isDefault = isDefault ;
1715 }
1816}
1917
2018export class DefaultFlag extends BaseFlag {
21- constructor ( value : string | number | boolean | undefined , enabled : boolean ) {
19+ constructor ( value : FlagValue , enabled : boolean ) {
2220 super ( value , enabled , true ) ;
2321 }
2422}
@@ -28,7 +26,7 @@ export class Flag extends BaseFlag {
2826 featureName : string ;
2927
3028 constructor ( params : {
31- value : string | number | boolean | undefined ;
29+ value : FlagValue ;
3230 enabled : boolean ;
3331 isDefault ?: boolean ;
3432 featureId : number ;
@@ -82,7 +80,7 @@ export class Flags {
8280 defaultFlagHandler ?: ( f : string ) => DefaultFlag ;
8381 identityID ?: string | number ;
8482 } ) : Flags {
85- const flags : { [ key : string ] : any } = { } ;
83+ const flags : { [ key : string ] : Flag } = { } ;
8684 for ( const fs of data . featureStates ) {
8785 flags [ fs . feature . name ] = Flag . fromFeatureStateModel ( fs , data . identityID ) ;
8886 }
@@ -98,7 +96,7 @@ export class Flags {
9896 analyticsProcessor ?: AnalyticsProcessor ;
9997 defaultFlagHandler ?: ( v : string ) => DefaultFlag ;
10098 } ) : Flags {
101- const flags : { [ key : string ] : any } = { } ;
99+ const flags : { [ key : string ] : Flag } = { } ;
102100
103101 for ( const flagData of data . apiFlags ) {
104102 flags [ flagData [ 'feature' ] [ 'name' ] ] = Flag . fromAPIFlag ( flagData ) ;
@@ -124,7 +122,6 @@ export class Flags {
124122 }
125123
126124 return { enabled : false , isDefault : true , value : undefined } ;
127-
128125 }
129126
130127 if ( this . analyticsProcessor && flag . featureId ) {
@@ -134,7 +131,7 @@ export class Flags {
134131 return flag ;
135132 }
136133
137- getFeatureValue ( featureName : string ) : any {
134+ getFeatureValue ( featureName : string ) : FlagValue {
138135 return this . getFlag ( featureName ) . value ;
139136 }
140137
0 commit comments