@@ -87,6 +87,14 @@ function isEvent(value) {
87
87
}
88
88
89
89
class Event {
90
+ /**
91
+ * @param {string } type
92
+ * @param {{
93
+ * bubbles?: boolean,
94
+ * cancelable?: boolean,
95
+ * composed?: boolean,
96
+ * }} [options]
97
+ */
90
98
constructor ( type , options = null ) {
91
99
if ( arguments . length === 0 )
92
100
throw new ERR_MISSING_ARGS ( 'type' ) ;
@@ -146,42 +154,63 @@ class Event {
146
154
this [ kDefaultPrevented ] = true ;
147
155
}
148
156
157
+ /**
158
+ * @type {EventTarget }
159
+ */
149
160
get target ( ) {
150
161
if ( ! isEvent ( this ) )
151
162
throw new ERR_INVALID_THIS ( 'Event' ) ;
152
163
return this [ kTarget ] ;
153
164
}
154
165
166
+ /**
167
+ * @type {EventTarget }
168
+ */
155
169
get currentTarget ( ) {
156
170
if ( ! isEvent ( this ) )
157
171
throw new ERR_INVALID_THIS ( 'Event' ) ;
158
172
return this [ kTarget ] ;
159
173
}
160
174
175
+ /**
176
+ * @type {EventTarget }
177
+ */
161
178
get srcElement ( ) {
162
179
if ( ! isEvent ( this ) )
163
180
throw new ERR_INVALID_THIS ( 'Event' ) ;
164
181
return this [ kTarget ] ;
165
182
}
166
183
184
+ /**
185
+ * @type {string }
186
+ */
167
187
get type ( ) {
168
188
if ( ! isEvent ( this ) )
169
189
throw new ERR_INVALID_THIS ( 'Event' ) ;
170
190
return this [ kType ] ;
171
191
}
172
192
193
+ /**
194
+ * @type {boolean }
195
+ */
173
196
get cancelable ( ) {
174
197
if ( ! isEvent ( this ) )
175
198
throw new ERR_INVALID_THIS ( 'Event' ) ;
176
199
return this [ kCancelable ] ;
177
200
}
178
201
202
+ /**
203
+ * @type {boolean }
204
+ */
179
205
get defaultPrevented ( ) {
180
206
if ( ! isEvent ( this ) )
181
207
throw new ERR_INVALID_THIS ( 'Event' ) ;
182
208
return this [ kCancelable ] && this [ kDefaultPrevented ] ;
183
209
}
184
210
211
+ /**
212
+ * @type {number }
213
+ */
185
214
get timeStamp ( ) {
186
215
if ( ! isEvent ( this ) )
187
216
throw new ERR_INVALID_THIS ( 'Event' ) ;
@@ -192,43 +221,63 @@ class Event {
192
221
// The following are non-op and unused properties/methods from Web API Event.
193
222
// These are not supported in Node.js and are provided purely for
194
223
// API completeness.
195
-
224
+ /**
225
+ * @returns {EventTarget[] }
226
+ */
196
227
composedPath ( ) {
197
228
if ( ! isEvent ( this ) )
198
229
throw new ERR_INVALID_THIS ( 'Event' ) ;
199
230
return this [ kIsBeingDispatched ] ? [ this [ kTarget ] ] : [ ] ;
200
231
}
201
232
233
+ /**
234
+ * @type {boolean }
235
+ */
202
236
get returnValue ( ) {
203
237
if ( ! isEvent ( this ) )
204
238
throw new ERR_INVALID_THIS ( 'Event' ) ;
205
239
return ! this . defaultPrevented ;
206
240
}
207
241
242
+ /**
243
+ * @type {boolean }
244
+ */
208
245
get bubbles ( ) {
209
246
if ( ! isEvent ( this ) )
210
247
throw new ERR_INVALID_THIS ( 'Event' ) ;
211
248
return this [ kBubbles ] ;
212
249
}
213
250
251
+ /**
252
+ * @type {boolean }
253
+ */
214
254
get composed ( ) {
215
255
if ( ! isEvent ( this ) )
216
256
throw new ERR_INVALID_THIS ( 'Event' ) ;
217
257
return this [ kComposed ] ;
218
258
}
219
259
260
+ /**
261
+ * @type {number }
262
+ */
220
263
get eventPhase ( ) {
221
264
if ( ! isEvent ( this ) )
222
265
throw new ERR_INVALID_THIS ( 'Event' ) ;
223
266
return this [ kIsBeingDispatched ] ? Event . AT_TARGET : Event . NONE ;
224
267
}
225
268
269
+ /**
270
+ * @type {boolean }
271
+ */
226
272
get cancelBubble ( ) {
227
273
if ( ! isEvent ( this ) )
228
274
throw new ERR_INVALID_THIS ( 'Event' ) ;
229
275
return this [ kPropagationStopped ] ;
230
276
}
231
277
278
+ /**
279
+ * @type {boolean }
280
+ */
232
281
set cancelBubble ( value ) {
233
282
if ( ! isEvent ( this ) )
234
283
throw new ERR_INVALID_THIS ( 'Event' ) ;
@@ -391,6 +440,19 @@ class EventTarget {
391
440
}
392
441
[ kRemoveListener ] ( size , type , listener , capture ) { }
393
442
443
+ /**
444
+ * @callback EventTargetCallback
445
+ * @param {Event } event
446
+ * @typedef {{ handleEvent: EventTargetCallback } } EventListener
447
+ * @param {string } type
448
+ * @param {EventTargetCallback|EventListener } listener
449
+ * @param {{
450
+ * capture?: boolean,
451
+ * once?: boolean,
452
+ * passive?: boolean,
453
+ * signal?: AbortSignal
454
+ * }} [options]
455
+ */
394
456
addEventListener ( type , listener , options = { } ) {
395
457
if ( ! isEventTarget ( this ) )
396
458
throw new ERR_INVALID_THIS ( 'EventTarget' ) ;
@@ -471,6 +533,13 @@ class EventTarget {
471
533
this [ kNewListener ] ( root . size , type , listener , once , capture , passive , weak ) ;
472
534
}
473
535
536
+ /**
537
+ * @param {string } type
538
+ * @param {EventTargetCallback|EventListener } listener
539
+ * @param {{
540
+ * capture?: boolean,
541
+ * }} [options]
542
+ */
474
543
removeEventListener ( type , listener , options = { } ) {
475
544
if ( ! isEventTarget ( this ) )
476
545
throw new ERR_INVALID_THIS ( 'EventTarget' ) ;
@@ -498,6 +567,9 @@ class EventTarget {
498
567
}
499
568
}
500
569
570
+ /**
571
+ * @param {Event } event
572
+ */
501
573
dispatchEvent ( event ) {
502
574
if ( ! isEventTarget ( this ) )
503
575
throw new ERR_INVALID_THIS ( 'EventTarget' ) ;
@@ -627,58 +699,103 @@ class NodeEventTarget extends EventTarget {
627
699
initNodeEventTarget ( this ) ;
628
700
}
629
701
702
+ /**
703
+ * @param {number } n
704
+ */
630
705
setMaxListeners ( n ) {
631
706
if ( ! isNodeEventTarget ( this ) )
632
707
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
633
708
EventEmitter . setMaxListeners ( n , this ) ;
634
709
}
635
710
711
+ /**
712
+ * @returns {number }
713
+ */
636
714
getMaxListeners ( ) {
637
715
if ( ! isNodeEventTarget ( this ) )
638
716
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
639
717
return this [ kMaxEventTargetListeners ] ;
640
718
}
641
719
720
+ /**
721
+ * @returns {string[] }
722
+ */
642
723
eventNames ( ) {
643
724
if ( ! isNodeEventTarget ( this ) )
644
725
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
645
726
return ArrayFrom ( this [ kEvents ] . keys ( ) ) ;
646
727
}
647
728
729
+ /**
730
+ * @param {string } [type]
731
+ * @returns {number }
732
+ */
648
733
listenerCount ( type ) {
649
734
if ( ! isNodeEventTarget ( this ) )
650
735
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
651
736
const root = this [ kEvents ] . get ( String ( type ) ) ;
652
737
return root !== undefined ? root . size : 0 ;
653
738
}
654
739
740
+ /**
741
+ * @param {string } type
742
+ * @param {EventTargetCallback|EventListener } listener
743
+ * @param {{
744
+ * capture?: boolean,
745
+ * }} [options]
746
+ * @returns {NodeEventTarget }
747
+ */
655
748
off ( type , listener , options ) {
656
749
if ( ! isNodeEventTarget ( this ) )
657
750
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
658
751
this . removeEventListener ( type , listener , options ) ;
659
752
return this ;
660
753
}
661
754
755
+ /**
756
+ * @param {string } type
757
+ * @param {EventTargetCallback|EventListener } listener
758
+ * @param {{
759
+ * capture?: boolean,
760
+ * }} [options]
761
+ * @returns {NodeEventTarget }
762
+ */
662
763
removeListener ( type , listener , options ) {
663
764
if ( ! isNodeEventTarget ( this ) )
664
765
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
665
766
this . removeEventListener ( type , listener , options ) ;
666
767
return this ;
667
768
}
668
769
770
+ /**
771
+ * @param {string } type
772
+ * @param {EventTargetCallback|EventListener } listener
773
+ * @returns {NodeEventTarget }
774
+ */
669
775
on ( type , listener ) {
670
776
if ( ! isNodeEventTarget ( this ) )
671
777
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
672
778
this . addEventListener ( type , listener , { [ kIsNodeStyleListener ] : true } ) ;
673
779
return this ;
674
780
}
675
781
782
+ /**
783
+ * @param {string } type
784
+ * @param {EventTargetCallback|EventListener } listener
785
+ * @returns {NodeEventTarget }
786
+ */
676
787
addListener ( type , listener ) {
677
788
if ( ! isNodeEventTarget ( this ) )
678
789
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
679
790
this . addEventListener ( type , listener , { [ kIsNodeStyleListener ] : true } ) ;
680
791
return this ;
681
792
}
793
+
794
+ /**
795
+ * @param {string } type
796
+ * @param {any } arg
797
+ * @returns {boolean }
798
+ */
682
799
emit ( type , arg ) {
683
800
if ( ! isNodeEventTarget ( this ) )
684
801
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
@@ -688,6 +805,11 @@ class NodeEventTarget extends EventTarget {
688
805
return hadListeners ;
689
806
}
690
807
808
+ /**
809
+ * @param {string } type
810
+ * @param {EventTargetCallback|EventListener } listener
811
+ * @returns {NodeEventTarget }
812
+ */
691
813
once ( type , listener ) {
692
814
if ( ! isNodeEventTarget ( this ) )
693
815
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
@@ -696,6 +818,10 @@ class NodeEventTarget extends EventTarget {
696
818
return this ;
697
819
}
698
820
821
+ /**
822
+ * @param {string } type
823
+ * @returns {NodeEventTarget }
824
+ */
699
825
removeAllListeners ( type ) {
700
826
if ( ! isNodeEventTarget ( this ) )
701
827
throw new ERR_INVALID_THIS ( 'NodeEventTarget' ) ;
0 commit comments