@@ -553,7 +553,7 @@ var Zone$1 = (function (global) {
553
553
if ( NativePromise ) {
554
554
patchThen ( NativePromise ) ;
555
555
if ( typeof global [ 'fetch' ] !== 'undefined' ) {
556
- var fetchPromise = global [ 'fetch' ] ( ) ;
556
+ var fetchPromise = global [ 'fetch' ] ( 'about:blank' ) ;
557
557
// ignore output to prevent error;
558
558
fetchPromise . then ( function ( ) { return null ; } , function ( ) { return null ; } ) ;
559
559
if ( fetchPromise . constructor != NativePromise ) {
@@ -572,12 +572,144 @@ var Zone$1 = (function (global) {
572
572
* @suppress {undefinedVars}
573
573
*/
574
574
var zoneSymbol = Zone [ '__symbol__' ] ;
575
+ var _global$1 = typeof window === 'object' && window || typeof self === 'object' && self || global ;
576
+ function bindArguments ( args , source ) {
577
+ for ( var i = args . length - 1 ; i >= 0 ; i -- ) {
578
+ if ( typeof args [ i ] === 'function' ) {
579
+ args [ i ] = Zone . current . wrap ( args [ i ] , source + '_' + i ) ;
580
+ }
581
+ }
582
+ return args ;
583
+ }
584
+ ;
575
585
var isNode = ( typeof process !== 'undefined' && { } . toString . call ( process ) === '[object process]' ) ;
576
586
var EVENT_TASKS = zoneSymbol ( 'eventTasks' ) ;
587
+ // For EventTarget
577
588
var ADD_EVENT_LISTENER = 'addEventListener' ;
578
589
var REMOVE_EVENT_LISTENER = 'removeEventListener' ;
579
- var SYMBOL_ADD_EVENT_LISTENER = zoneSymbol ( ADD_EVENT_LISTENER ) ;
580
- var SYMBOL_REMOVE_EVENT_LISTENER = zoneSymbol ( REMOVE_EVENT_LISTENER ) ;
590
+ function findExistingRegisteredTask ( target , handler , name , capture , remove ) {
591
+ var eventTasks = target [ EVENT_TASKS ] ;
592
+ if ( eventTasks ) {
593
+ for ( var i = 0 ; i < eventTasks . length ; i ++ ) {
594
+ var eventTask = eventTasks [ i ] ;
595
+ var data = eventTask . data ;
596
+ if ( data . handler === handler
597
+ && data . useCapturing === capture
598
+ && data . eventName === name ) {
599
+ if ( remove ) {
600
+ eventTasks . splice ( i , 1 ) ;
601
+ }
602
+ return eventTask ;
603
+ }
604
+ }
605
+ }
606
+ return null ;
607
+ }
608
+ function attachRegisteredEvent ( target , eventTask ) {
609
+ var eventTasks = target [ EVENT_TASKS ] ;
610
+ if ( ! eventTasks ) {
611
+ eventTasks = target [ EVENT_TASKS ] = [ ] ;
612
+ }
613
+ eventTasks . push ( eventTask ) ;
614
+ }
615
+ function makeZoneAwareAddListener ( addFnName , removeFnName , useCapturingParam , allowDuplicates ) {
616
+ if ( useCapturingParam === void 0 ) { useCapturingParam = true ; }
617
+ if ( allowDuplicates === void 0 ) { allowDuplicates = false ; }
618
+ var addFnSymbol = zoneSymbol ( addFnName ) ;
619
+ var removeFnSymbol = zoneSymbol ( removeFnName ) ;
620
+ var defaultUseCapturing = useCapturingParam ? false : undefined ;
621
+ function scheduleEventListener ( eventTask ) {
622
+ var meta = eventTask . data ;
623
+ attachRegisteredEvent ( meta . target , eventTask ) ;
624
+ return meta . target [ addFnSymbol ] ( meta . eventName , eventTask . invoke , meta . useCapturing ) ;
625
+ }
626
+ function cancelEventListener ( eventTask ) {
627
+ var meta = eventTask . data ;
628
+ findExistingRegisteredTask ( meta . target , eventTask . invoke , meta . eventName , meta . useCapturing , true ) ;
629
+ meta . target [ removeFnSymbol ] ( meta . eventName , eventTask . invoke , meta . useCapturing ) ;
630
+ }
631
+ return function zoneAwareAddListener ( self , args ) {
632
+ var eventName = args [ 0 ] ;
633
+ var handler = args [ 1 ] ;
634
+ var useCapturing = args [ 2 ] || defaultUseCapturing ;
635
+ // - Inside a Web Worker, `this` is undefined, the context is `global`
636
+ // - When `addEventListener` is called on the global context in strict mode, `this` is undefined
637
+ // see https://github.com/angular/zone.js/issues/190
638
+ var target = self || _global$1 ;
639
+ var delegate = null ;
640
+ if ( typeof handler == 'function' ) {
641
+ delegate = handler ;
642
+ }
643
+ else if ( handler && handler . handleEvent ) {
644
+ delegate = function ( event ) { return handler . handleEvent ( event ) ; } ;
645
+ }
646
+ var validZoneHandler = false ;
647
+ try {
648
+ // In cross site contexts (such as WebDriver frameworks like Selenium),
649
+ // accessing the handler object here will cause an exception to be thrown which
650
+ // will fail tests prematurely.
651
+ validZoneHandler = handler && handler . toString ( ) === "[object FunctionWrapper]" ;
652
+ }
653
+ catch ( e ) {
654
+ // Returning nothing here is fine, because objects in a cross-site context are unusable
655
+ return ;
656
+ }
657
+ // Ignore special listeners of IE11 & Edge dev tools, see https://github.com/angular/zone.js/issues/150
658
+ if ( ! delegate || validZoneHandler ) {
659
+ return target [ addFnSymbol ] ( eventName , handler , useCapturing ) ;
660
+ }
661
+ if ( ! allowDuplicates ) {
662
+ var eventTask = findExistingRegisteredTask ( target , handler , eventName , useCapturing , false ) ;
663
+ if ( eventTask ) {
664
+ // we already registered, so this will have noop.
665
+ return target [ addFnSymbol ] ( eventName , eventTask . invoke , useCapturing ) ;
666
+ }
667
+ }
668
+ var zone = Zone . current ;
669
+ var source = target . constructor [ 'name' ] + '.' + addFnName + ':' + eventName ;
670
+ var data = {
671
+ target : target ,
672
+ eventName : eventName ,
673
+ name : eventName ,
674
+ useCapturing : useCapturing ,
675
+ handler : handler
676
+ } ;
677
+ zone . scheduleEventTask ( source , delegate , data , scheduleEventListener , cancelEventListener ) ;
678
+ } ;
679
+ }
680
+ function makeZoneAwareRemoveListener ( fnName , useCapturingParam ) {
681
+ if ( useCapturingParam === void 0 ) { useCapturingParam = true ; }
682
+ var symbol = zoneSymbol ( fnName ) ;
683
+ var defaultUseCapturing = useCapturingParam ? false : undefined ;
684
+ return function zoneAwareRemoveListener ( self , args ) {
685
+ var eventName = args [ 0 ] ;
686
+ var handler = args [ 1 ] ;
687
+ var useCapturing = args [ 2 ] || defaultUseCapturing ;
688
+ // - Inside a Web Worker, `this` is undefined, the context is `global`
689
+ // - When `addEventListener` is called on the global context in strict mode, `this` is undefined
690
+ // see https://github.com/angular/zone.js/issues/190
691
+ var target = self || _global$1 ;
692
+ var eventTask = findExistingRegisteredTask ( target , handler , eventName , useCapturing , true ) ;
693
+ if ( eventTask ) {
694
+ eventTask . zone . cancelTask ( eventTask ) ;
695
+ }
696
+ else {
697
+ target [ symbol ] ( eventName , handler , useCapturing ) ;
698
+ }
699
+ } ;
700
+ }
701
+ function makeZoneAwareListeners ( fnName ) {
702
+ var symbol = zoneSymbol ( fnName ) ;
703
+ return function zoneAwareEventListeners ( self , args ) {
704
+ var eventName = args [ 0 ] ;
705
+ var target = self || _global$1 ;
706
+ return target [ EVENT_TASKS ]
707
+ . filter ( function ( task ) { return task . data . eventName === eventName ; } )
708
+ . map ( function ( task ) { return task . data . handler ; } ) ;
709
+ } ;
710
+ }
711
+ var zoneAwareAddEventListener = makeZoneAwareAddListener ( ADD_EVENT_LISTENER , REMOVE_EVENT_LISTENER ) ;
712
+ var zoneAwareRemoveEventListener = makeZoneAwareRemoveListener ( REMOVE_EVENT_LISTENER ) ;
581
713
var originalInstanceKey = zoneSymbol ( 'originalInstance' ) ;
582
714
function createNamedFn ( name , delegate ) {
583
715
try {
@@ -663,6 +795,93 @@ function patchTimer(window, setName, cancelName, nameSuffix) {
663
795
} ; } ) ;
664
796
}
665
797
798
+ // For EventEmitter
799
+ var EE_ADD_LISTENER = 'addListener' ;
800
+ var EE_PREPEND_LISTENER = 'prependListener' ;
801
+ var EE_REMOVE_LISTENER = 'removeListener' ;
802
+ var EE_LISTENERS = 'listeners' ;
803
+ var EE_ON = 'on' ;
804
+ var zoneAwareAddListener = makeZoneAwareAddListener ( EE_ADD_LISTENER , EE_REMOVE_LISTENER , false , true ) ;
805
+ var zoneAwarePrependListener = makeZoneAwareAddListener ( EE_PREPEND_LISTENER , EE_REMOVE_LISTENER , false , true ) ;
806
+ var zoneAwareRemoveListener = makeZoneAwareRemoveListener ( EE_REMOVE_LISTENER , false ) ;
807
+ var zoneAwareListeners = makeZoneAwareListeners ( EE_LISTENERS ) ;
808
+ function patchEventEmitterMethods ( obj ) {
809
+ if ( obj && obj . addListener ) {
810
+ patchMethod ( obj , EE_ADD_LISTENER , function ( ) { return zoneAwareAddListener ; } ) ;
811
+ patchMethod ( obj , EE_PREPEND_LISTENER , function ( ) { return zoneAwarePrependListener ; } ) ;
812
+ patchMethod ( obj , EE_REMOVE_LISTENER , function ( ) { return zoneAwareRemoveListener ; } ) ;
813
+ patchMethod ( obj , EE_LISTENERS , function ( ) { return zoneAwareListeners ; } ) ;
814
+ obj [ EE_ON ] = obj [ EE_ADD_LISTENER ] ;
815
+ return true ;
816
+ }
817
+ else {
818
+ return false ;
819
+ }
820
+ }
821
+ // EventEmitter
822
+ var events ;
823
+ try {
824
+ events = require ( 'events' ) ;
825
+ }
826
+ catch ( err ) { }
827
+ if ( events && events . EventEmitter ) {
828
+ patchEventEmitterMethods ( events . EventEmitter . prototype ) ;
829
+ }
830
+
831
+ var fs ;
832
+ try {
833
+ fs = require ( 'fs' ) ;
834
+ }
835
+ catch ( err ) { }
836
+ // TODO(alxhub): Patch `watch` and `unwatchFile`.
837
+ var TO_PATCH = [
838
+ 'access' ,
839
+ 'appendFile' ,
840
+ 'chmod' ,
841
+ 'chown' ,
842
+ 'close' ,
843
+ 'exists' ,
844
+ 'fchmod' ,
845
+ 'fchown' ,
846
+ 'fdatasync' ,
847
+ 'fstat' ,
848
+ 'fsync' ,
849
+ 'ftruncate' ,
850
+ 'futimes' ,
851
+ 'lchmod' ,
852
+ 'lchown' ,
853
+ 'link' ,
854
+ 'lstat' ,
855
+ 'mkdir' ,
856
+ 'mkdtemp' ,
857
+ 'open' ,
858
+ 'read' ,
859
+ 'readdir' ,
860
+ 'readFile' ,
861
+ 'readlink' ,
862
+ 'realpath' ,
863
+ 'rename' ,
864
+ 'rmdir' ,
865
+ 'stat' ,
866
+ 'symlink' ,
867
+ 'truncate' ,
868
+ 'unlink' ,
869
+ 'utimes' ,
870
+ 'write' ,
871
+ 'writeFile' ,
872
+ ] ;
873
+ if ( fs ) {
874
+ TO_PATCH
875
+ . filter ( function ( name ) { return ! ! fs [ name ] && typeof fs [ name ] === 'function' ; } )
876
+ . forEach ( function ( name ) {
877
+ fs [ name ] = ( function ( delegate ) {
878
+ return function ( ) {
879
+ return delegate . apply ( this , bindArguments ( arguments , 'fs.' + name ) ) ;
880
+ } ;
881
+ } ) ( fs [ name ] ) ;
882
+ } ) ;
883
+ }
884
+
666
885
var set = 'set' ;
667
886
var clear = 'clear' ;
668
887
var _global = typeof window === 'object' && window || typeof self === 'object' && self || global ;
@@ -713,4 +932,22 @@ if (crypto) {
713
932
return nativePbkdf2_1 . apply ( void 0 , args ) ;
714
933
}
715
934
} . bind ( crypto ) ;
935
+ }
936
+ // HTTP Client
937
+ var httpClient ;
938
+ try {
939
+ httpClient = require ( '_http_client' ) ;
940
+ }
941
+ catch ( err ) { }
942
+ if ( httpClient && httpClient . ClientRequest ) {
943
+ var ClientRequest_1 = httpClient . ClientRequest . bind ( httpClient ) ;
944
+ httpClient . ClientRequest = function ( options , callback ) {
945
+ if ( ! callback ) {
946
+ return new ClientRequest_1 ( options ) ;
947
+ }
948
+ else {
949
+ var zone = Zone . current ;
950
+ return new ClientRequest_1 ( options , zone . wrap ( callback , 'http.ClientRequest' ) ) ;
951
+ }
952
+ } ;
716
953
}
0 commit comments