@@ -69,6 +69,8 @@ export interface PatchEventTargetOptions {
6969diff ?: ( task : any , delegate : any ) => boolean ;
7070// support passive or not
7171supportPassive ?: 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(
212214return 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
217221const taskData : any = { } ;
@@ -384,8 +388,10 @@ export function patchEventTarget(
384388let symbolEventName ;
385389if ( ! 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 ;
389395const symbol = ZONE_SYMBOL_PREFIX + falseEventName ;
390396const symbolCapture = ZONE_SYMBOL_PREFIX + trueEventName ;
391397zoneSymbolEventNames [ eventName ] = { } ;
@@ -418,7 +424,8 @@ export function patchEventTarget(
418424source = targetSource [ eventName ] ;
419425}
420426if ( ! 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(
556563const eventName = arguments [ 0 ] ;
557564
558565const listeners : any [ ] = [ ] ;
559- const tasks = findEventTasks ( target , eventName ) ;
566+ const tasks =
567+ findEventTasks ( target , eventNameToString ? eventNameToString ( eventName ) : eventName ) ;
560568
561569for ( let i = 0 ; i < tasks . length ; i ++ ) {
562570const task : any = tasks [ i ] ;
0 commit comments