@@ -56,6 +56,7 @@ export class PostHogClient<Action extends string = string> {
56
56
hasPostHogInitialized$ = new BehaviorSubject ( false ) ;
57
57
featureFlagsByNetwork : FeatureFlagsByNetwork = featureFlagsByNetworkInitialValue ;
58
58
featureFlagPayloads : FeatureFlagPayloads = featureFlagPayloadsInitialValue ;
59
+ private ffOverride : Record < string , boolean > = { } ;
59
60
60
61
constructor (
61
62
private chain : Wallet . Cardano . ChainId ,
@@ -66,6 +67,19 @@ export class PostHogClient<Action extends string = string> {
66
67
) {
67
68
if ( ! this . postHogHost ) throw new Error ( 'POSTHOG_HOST url has not been provided' ) ;
68
69
void this . initialize ( ) ;
70
+
71
+ try {
72
+ const ffOverride = JSON . parse ( process . env . FF_OVERRIDE ) as Record < string , string | number > ;
73
+
74
+ for ( const [ key , value ] of Object . entries ( ffOverride ) ) {
75
+ if ( ! [ 'false' , 'False' , 'FALSE' , '0' , 0 , 'true' , 'True' , 'TRUE' , '1' , 1 ] . includes ( value ) )
76
+ throw new Error ( `Invalid value for FF_OVERRIDE[${ key } ]: "${ value } "` ) ;
77
+
78
+ this . ffOverride [ key ] = [ 'true' , 'True' , 'TRUE' , '1' , 1 ] . includes ( value ) ;
79
+ }
80
+ } catch ( error ) {
81
+ commonLogger . error ( 'While parsing FF_OVERRIDE' , error ) ;
82
+ }
69
83
}
70
84
71
85
private async initialize ( ) {
@@ -224,6 +238,8 @@ export class PostHogClient<Action extends string = string> {
224
238
}
225
239
226
240
isFeatureFlagEnabled ( feature : FeatureFlag ) : boolean {
241
+ if ( feature in this . ffOverride ) return this . ffOverride [ feature ] ;
242
+
227
243
const currentNetworkFeatureFlags =
228
244
this . featureFlagsByNetwork [ this . chain . networkMagic as Wallet . Cardano . NetworkMagics ] ;
229
245
return currentNetworkFeatureFlags [ feature ] || false ;
0 commit comments