@@ -142,14 +142,6 @@ interface CommandParams {
142142 } ;
143143 registerFlagChangeListener ?: {
144144 listenerId : string ;
145- flagKey : string ;
146- callbackUri : string ;
147- } ;
148- registerFlagValueChangeListener ?: {
149- listenerId : string ;
150- flagKey : string ;
151- context : LDContext ;
152- defaultValue : LDFlagValue ;
153145 callbackUri : string ;
154146 } ;
155147 unregisterListener ?: {
@@ -542,8 +534,7 @@ export async function newSdkClientEntity(options: any): Promise<SdkClientEntity>
542534
543535 case 'registerFlagChangeListener' : {
544536 const p = params . registerFlagChangeListener ! ;
545- // 'update:key' fires for a specific flag; 'update' (no key) fires for any flag change.
546- const eventName = p . flagKey ? `update:${ p . flagKey } ` : 'update' ;
537+ const eventName = 'update' ;
547538
548539 const handler = ( eventParams : { key : string } ) => {
549540 got
@@ -556,38 +547,10 @@ export async function newSdkClientEntity(options: any): Promise<SdkClientEntity>
556547 . catch ( ( ) => { } ) ;
557548 } ;
558549
559- listeners . set ( p . listenerId , { eventName, handler } ) ;
560- client . on ( eventName , handler ) ;
561- return undefined ;
562- }
563-
564- case 'registerFlagValueChangeListener' : {
565- const p = params . registerFlagValueChangeListener ! ;
566- const eventName = `update:${ p . flagKey } ` ;
567-
568- // Snapshot the current evaluated value so we can detect actual value changes.
569- // On each SDK update event, re-evaluate and only notify the harness if the
570- // evaluated value differs (using JSON comparison for deep equality).
571- let oldValue = await client . variation ( p . flagKey , p . context , p . defaultValue ) ;
572-
573- const handler = async ( ) => {
574- const newValue = await client . variation ( p . flagKey , p . context , p . defaultValue ) ;
575- if ( JSON . stringify ( newValue ) !== JSON . stringify ( oldValue ) ) {
576- const previousValue = oldValue ;
577- oldValue = newValue ;
578- got
579- . post ( p . callbackUri , {
580- json : {
581- listenerId : p . listenerId ,
582- flagKey : p . flagKey ,
583- oldValue : previousValue ,
584- newValue,
585- } ,
586- } )
587- . catch ( ( ) => { } ) ;
588- }
589- } ;
590-
550+ const existing = listeners . get ( p . listenerId ) ;
551+ if ( existing ) {
552+ client . off ( existing . eventName , existing . handler ) ;
553+ }
591554 listeners . set ( p . listenerId , { eventName, handler } ) ;
592555 client . on ( eventName , handler ) ;
593556 return undefined ;
0 commit comments