@@ -45,6 +45,10 @@ const isNetworkOfExpectedSchema = (n: string): n is NetworksEnumSchema => networ
4545
4646const logger = contextLogger ( commonLogger , 'PostHogClient' ) ;
4747
48+ const FALSY_VALUES = [ 'false' , 'False' , 'FALSE' , 'f' , 'F' , '0' , 0 , false ] ;
49+ const TRUTHY_VALUES = [ 'true' , 'True' , 'TRUE' , 't' , 'T' , '1' , 1 , true ] ;
50+ const VALID_VALUES = new Set ( [ ...FALSY_VALUES , ...TRUTHY_VALUES ] ) ;
51+
4852/**
4953 * PostHog API reference:
5054 * https://posthog.com/docs/libraries/js
@@ -56,6 +60,7 @@ export class PostHogClient<Action extends string = string> {
5660 hasPostHogInitialized$ = new BehaviorSubject ( false ) ;
5761 featureFlagsByNetwork : FeatureFlagsByNetwork = featureFlagsByNetworkInitialValue ;
5862 featureFlagPayloads : FeatureFlagPayloads = featureFlagPayloadsInitialValue ;
63+ private ffOverride : Record < string , boolean > = { } ;
5964
6065 constructor (
6166 private chain : Wallet . Cardano . ChainId ,
@@ -66,6 +71,18 @@ export class PostHogClient<Action extends string = string> {
6671 ) {
6772 if ( ! this . postHogHost ) throw new Error ( 'POSTHOG_HOST url has not been provided' ) ;
6873 void this . initialize ( ) ;
74+
75+ if ( typeof process . env . FF_OVERRIDE === 'string' )
76+ try {
77+ const ffOverride = JSON . parse ( process . env . FF_OVERRIDE ) as Record < string , string | number | boolean > ;
78+
79+ for ( const [ key , value ] of Object . entries ( ffOverride ) ) {
80+ if ( VALID_VALUES . has ( value ) ) this . ffOverride [ key ] = TRUTHY_VALUES . includes ( value ) ;
81+ else commonLogger . error ( `Invalid value for FF_OVERRIDE[${ key } ]: "${ value } "` ) ;
82+ }
83+ } catch ( error ) {
84+ commonLogger . error ( 'While parsing FF_OVERRIDE' , error ) ;
85+ }
6986 }
7087
7188 private async initialize ( ) {
@@ -224,6 +241,8 @@ export class PostHogClient<Action extends string = string> {
224241 }
225242
226243 isFeatureFlagEnabled ( feature : FeatureFlag ) : boolean {
244+ if ( feature in this . ffOverride ) return this . ffOverride [ feature ] ;
245+
227246 const currentNetworkFeatureFlags =
228247 this . featureFlagsByNetwork [ this . chain . networkMagic as Wallet . Cardano . NetworkMagics ] ;
229248 return currentNetworkFeatureFlags [ feature ] || false ;
0 commit comments