@@ -32,6 +32,10 @@ import { LDIdentifyOptions } from './api/LDIdentifyOptions';
3232import { createAsyncTaskQueue } from './async/AsyncTaskQueue' ;
3333import { Configuration , ConfigurationImpl , LDClientInternalOptions } from './configuration' ;
3434import { addAutoEnv } from './context/addAutoEnv' ;
35+ import {
36+ ActiveContextTracker ,
37+ createActiveContextTracker ,
38+ } from './context/createActiveContextTracker' ;
3539import { ensureKey } from './context/ensureKey' ;
3640import { DataManager , DataManagerFactory } from './DataManager' ;
3741import createDiagnosticsManager from './diagnostics/createDiagnosticsManager' ;
@@ -43,13 +47,12 @@ import createEventProcessor from './events/createEventProcessor';
4347import EventFactory from './events/EventFactory' ;
4448import DefaultFlagManager , { FlagManager } from './flag-manager/FlagManager' ;
4549import { FlagChangeType } from './flag-manager/FlagUpdater' ;
50+ import { ItemDescriptor } from './flag-manager/ItemDescriptor' ;
4651import HookRunner from './HookRunner' ;
4752import { getInspectorHook } from './inspection/getInspectorHook' ;
4853import InspectorManager from './inspection/InspectorManager' ;
4954import LDEmitter , { EventName } from './LDEmitter' ;
5055import { createPluginEnvironmentMetadata } from './plugins/createPluginEnvironmentMetadata' ;
51- import { ActiveContextTracker , createActiveContextTracker } from './context/createActiveContextTracker' ;
52- import { ItemDescriptor } from './flag-manager/ItemDescriptor' ;
5356
5457const { ClientMessages, ErrorKinds } = internal ;
5558
@@ -61,7 +64,7 @@ export default class LDClientImpl implements LDClient, LDClientIdentifyResult {
6164 private _eventProcessor ?: internal . EventProcessor ;
6265 readonly logger : LDLogger ;
6366
64- private _activeContextTracker : ActiveContextTracker = createActiveContextTracker ( )
67+ private _activeContextTracker : ActiveContextTracker = createActiveContextTracker ( ) ;
6568
6669 private readonly _highTimeoutThreshold : number = 15 ;
6770
@@ -202,7 +205,9 @@ export default class LDClientImpl implements LDClient, LDClientIdentifyResult {
202205 // code. We are returned the unchecked context so that if a consumer identifies with an invalid context
203206 // and then calls getContext, they get back the same context they provided, without any assertion about
204207 // validity.
205- return this . _activeContextTracker . hasContext ( ) ? clone < LDContext > ( this . _activeContextTracker . getPristineContext ( ) ) : undefined ;
208+ return this . _activeContextTracker . hasContext ( )
209+ ? clone < LDContext > ( this . _activeContextTracker . getPristineContext ( ) )
210+ : undefined ;
206211 }
207212
208213 protected getInternalContext ( ) : Context | undefined {
@@ -302,7 +307,7 @@ export default class LDClientImpl implements LDClient, LDClientIdentifyResult {
302307 this . emitter . emit ( 'error' , context , error ) ;
303308 return Promise . reject ( error ) ;
304309 }
305- this . _activeContextTracker . set ( context , checkedContext )
310+ this . _activeContextTracker . set ( context , checkedContext ) ;
306311
307312 this . _eventProcessor ?. sendEvent (
308313 this . _eventFactoryDefault . identifyEvent ( checkedContext ) ,
@@ -376,7 +381,12 @@ export default class LDClientImpl implements LDClient, LDClientIdentifyResult {
376381
377382 this . _eventProcessor ?. sendEvent (
378383 this . _config . trackEventModifier (
379- this . _eventFactoryDefault . customEvent ( key , this . _activeContextTracker . getContext ( ) ! , data , metricValue ) ,
384+ this . _eventFactoryDefault . customEvent (
385+ key ,
386+ this . _activeContextTracker . getContext ( ) ! ,
387+ data ,
388+ metricValue ,
389+ ) ,
380390 ) ,
381391 ) ;
382392
@@ -401,9 +411,11 @@ export default class LDClientImpl implements LDClient, LDClientIdentifyResult {
401411
402412 // NOTE: we will be changing this behavior soon once we have a tracker on the
403413 // client initialization state.
404- const hasContext = this . _activeContextTracker . hasContext ( )
414+ const hasContext = this . _activeContextTracker . hasContext ( ) ;
405415 if ( ! hasContext ) {
406- this . logger ?. warn ( 'Flag evaluation called before client is fully initialized, data from this evaulation could be stale.' )
416+ this . logger ?. warn (
417+ 'Flag evaluation called before client is fully initialized, data from this evaulation could be stale.' ,
418+ ) ;
407419 }
408420
409421 const evalContext = this . _activeContextTracker . getContext ( ) ! ;
@@ -416,9 +428,11 @@ export default class LDClientImpl implements LDClient, LDClientIdentifyResult {
416428 ) ;
417429
418430 this . emitter . emit ( 'error' , this . _activeContextTracker . getPristineContext ( ) , error ) ;
419- hasContext && this . _eventProcessor ?. sendEvent (
420- this . _eventFactoryDefault . unknownFlagEvent ( flagKey , defVal , evalContext ) ,
421- ) ;
431+ if ( hasContext ) {
432+ this . _eventProcessor ?. sendEvent (
433+ this . _eventFactoryDefault . unknownFlagEvent ( flagKey , defVal , evalContext ) ,
434+ ) ;
435+ }
422436 return createErrorEvaluationDetail ( ErrorKinds . FlagNotFound , defaultValue ) ;
423437 }
424438
@@ -427,16 +441,18 @@ export default class LDClientImpl implements LDClient, LDClientIdentifyResult {
427441 if ( typeChecker ) {
428442 const [ matched , type ] = typeChecker ( value ) ;
429443 if ( ! matched ) {
430- hasContext && this . _eventProcessor ?. sendEvent (
431- eventFactory . evalEventClient (
432- flagKey ,
433- defaultValue , // track default value on type errors
434- defaultValue ,
435- foundItem . flag ,
436- evalContext ,
437- reason ,
438- ) ,
439- ) ;
444+ if ( hasContext ) {
445+ this . _eventProcessor ?. sendEvent (
446+ eventFactory . evalEventClient (
447+ flagKey ,
448+ defaultValue , // track default value on type errors
449+ defaultValue ,
450+ foundItem . flag ,
451+ evalContext ,
452+ reason ,
453+ ) ,
454+ ) ;
455+ }
440456 const error = new LDClientError (
441457 `Wrong type "${ type } " for feature flag "${ flagKey } "; returning default value` ,
442458 ) ;
@@ -454,16 +470,18 @@ export default class LDClientImpl implements LDClient, LDClientIdentifyResult {
454470 prerequisites ?. forEach ( ( prereqKey ) => {
455471 this . _variationInternal ( prereqKey , undefined , this . _eventFactoryDefault ) ;
456472 } ) ;
457- hasContext && this . _eventProcessor ?. sendEvent (
458- eventFactory . evalEventClient (
459- flagKey ,
460- value ,
461- defaultValue ,
462- foundItem . flag ,
463- evalContext ,
464- reason ,
465- ) ,
466- ) ;
473+ if ( hasContext ) {
474+ this . _eventProcessor ?. sendEvent (
475+ eventFactory . evalEventClient (
476+ flagKey ,
477+ value ,
478+ defaultValue ,
479+ foundItem . flag ,
480+ evalContext ,
481+ reason ,
482+ ) ,
483+ ) ;
484+ }
467485 return successDetail ;
468486 }
469487
@@ -477,8 +495,11 @@ export default class LDClientImpl implements LDClient, LDClientIdentifyResult {
477495 return value ;
478496 }
479497 variationDetail ( flagKey : string , defaultValue ?: LDFlagValue ) : LDEvaluationDetail {
480- return this . _hookRunner . withEvaluation ( flagKey , this . _activeContextTracker . getPristineContext ( ) , defaultValue , ( ) =>
481- this . _variationInternal ( flagKey , defaultValue , this . _eventFactoryWithReasons ) ,
498+ return this . _hookRunner . withEvaluation (
499+ flagKey ,
500+ this . _activeContextTracker . getPristineContext ( ) ,
501+ defaultValue ,
502+ ( ) => this . _variationInternal ( flagKey , defaultValue , this . _eventFactoryWithReasons ) ,
482503 ) ;
483504 }
484505
@@ -488,8 +509,11 @@ export default class LDClientImpl implements LDClient, LDClientIdentifyResult {
488509 eventFactory : EventFactory ,
489510 typeChecker : ( value : unknown ) => [ boolean , string ] ,
490511 ) : LDEvaluationDetailTyped < T > {
491- return this . _hookRunner . withEvaluation ( key , this . _activeContextTracker . getPristineContext ( ) , defaultValue , ( ) =>
492- this . _variationInternal ( key , defaultValue , eventFactory , typeChecker ) ,
512+ return this . _hookRunner . withEvaluation (
513+ key ,
514+ this . _activeContextTracker . getPristineContext ( ) ,
515+ defaultValue ,
516+ ( ) => this . _variationInternal ( key , defaultValue , eventFactory , typeChecker ) ,
493517 ) ;
494518 }
495519
0 commit comments