@@ -69,6 +69,8 @@ export interface PatchEventTargetOptions {
6969 diff ?: ( task : any , delegate : any ) => boolean ;
7070 // support passive or not
7171 supportPassive ?: boolean ;
72+ // get string from eventName (in nodejs, eventName maybe Symbol)
73+ eventNameToString ?: ( eventName : any ) => string ;
7274}
7375
7476export function patchEventTarget (
@@ -212,6 +214,8 @@ export function patchEventTarget(
212214 return false ;
213215 }
214216
217+ const eventNameToString = patchOptions && patchOptions . eventNameToString ;
218+
215219 // a shared global taskData to pass data for scheduleEventTask
216220 // so we do not need to create a new object just for pass some data
217221 const taskData : any = { } ;
@@ -384,8 +388,10 @@ export function patchEventTarget(
384388 let symbolEventName ;
385389 if ( ! symbolEventNames ) {
386390 // the code is duplicate, but I just want to get some better performance
387- const falseEventName = eventName + FALSE_STR ;
388- const trueEventName = eventName + TRUE_STR ;
391+ const falseEventName =
392+ ( eventNameToString ? eventNameToString ( eventName ) : eventName ) + FALSE_STR ;
393+ const trueEventName =
394+ ( eventNameToString ? eventNameToString ( eventName ) : eventName ) + TRUE_STR ;
389395 const symbol = ZONE_SYMBOL_PREFIX + falseEventName ;
390396 const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName ;
391397 zoneSymbolEventNames [ eventName ] = { } ;
@@ -418,7 +424,8 @@ export function patchEventTarget(
418424 source = targetSource [ eventName ] ;
419425 }
420426 if ( ! source ) {
421- source = constructorName + addSource + eventName ;
427+ source = constructorName + addSource +
428+ ( eventNameToString ? eventNameToString ( eventName ) : eventName ) ;
422429 }
423430 // do not create a new object as task.data to pass those things
424431 // just use the global shared one
@@ -556,7 +563,8 @@ export function patchEventTarget(
556563 const eventName = arguments [ 0 ] ;
557564
558565 const listeners : any [ ] = [ ] ;
559- const tasks = findEventTasks ( target , eventName ) ;
566+ const tasks =
567+ findEventTasks ( target , eventNameToString ? eventNameToString ( eventName ) : eventName ) ;
560568
561569 for ( let i = 0 ; i < tasks . length ; i ++ ) {
562570 const task : any = tasks [ i ] ;
0 commit comments