44 * be achieved by implementing the known `Event.t('a => 'b, t)` types
55 */
66module Impl = (T : {type t ; }) => {
7+ /**
8+ * `addListener(emitter, event, listener)`
9+ *
10+ * Adds a new event listener function to the event emitter.
11+ */
712 [@ bs . send ]
813 external addListener : (T . t , Event . t (' a => ' b , T . t ), ' a => ' b ) => T . t =
914 "addListener" ;
15+
1016 [@ bs . send ]
1117 external emit : (T . t , Event . t (' a => ' b , T . t ), ' a ) => bool = "emit" ;
18+
1219 [@ bs . get ] external errorMonitor : T . t => Js . Types . symbol = "errorMonitor" ;
20+
1321 [@ bs . send ]
1422 external eventNames :
1523 (T . t , Event . t (' a => ' b , T . t )) => array (Event . t (' a => ' b , T . t )) =
1624 "eventNames" ;
25+
1726 [@ bs . send ] external getMaxListeners : T . t => int = "getMaxListeners" ;
27+
1828 [@ bs . send ]
1929 external listenerCount : (T . t , Event . t (' a => ' b , T . t )) => int =
2030 "listenerCount" ;
2131 [@ bs . send ]
32+
2233 external listeners : (T . t , Event . t (' a => ' b , T . t )) => array (' a => ' b ) =
2334 "listeners" ;
35+
36+ /**
37+ * `on(emitter, event, listener)`
38+ *
39+ * Adds a new event listener function to the event emitter.
40+ * Alias for `addListener`.
41+ */
2442 [@ bs . send ]
2543 external on : (T . t , Event . t (' a => ' b , T . t ), ' a => ' b ) => T . t = "on" ;
44+
45+ /**
46+ * `once(emitter, event, listener)`
47+ *
48+ * Adds a new **single-use** event listener function to the event
49+ * emitter. Then next time the given event is emitted, this listener
50+ * will fire exactly once, and then be removed from the emitter's
51+ * internal listener array.
52+ */
2653 [@ bs . send ]
2754 external once : (T . t , Event . t (' a => ' b , T . t ), ' a => ' b ) => T . t = "once" ;
55+
56+ /**
57+ * `off(emitter, event, listener)`
58+ *
59+ * Removes the listener function from the event emitter.
60+ *
61+ * The specified listener function is compared by **referential
62+ * equality** to each function in the emitter's internal listener
63+ * array.
64+ *
65+ * This means that, when the target listener is initially added, that
66+ * exact function reference must be maintained and provided here
67+ * in order to ensure removal.
68+ *
69+ * Alias for `removeListener`.
70+ */
2871 [@ bs . send ]
2972 external off : (T . t , Event . t (' a => ' b , T . t ), ' a => ' b ) => T . t = "off" ;
73+
74+ /**
75+ * `prependListener(emitter, event, listener)`
76+ *
77+ * Adds a new event listener function to the event emitter.
78+ *
79+ * Unlike `on` and `addListener`, `prependListener` adds the listener
80+ * function to the front of the internal listener array, ensuring
81+ * that this function is called before the rest of the listeners for
82+ * the given event.
83+ */
3084 [@ bs . send ]
3185 external prependListener : (T . t , Event . t (' a => ' b , T . t ), ' a => ' b ) => T . t =
3286 "prependListener" ;
87+
88+ /**
89+ * `prependListenerOnce(emitter, event, listener)`
90+ *
91+ * Adds a new **single-use** event listener function to the event
92+ * emitter. Then next time the given event is emitted, this listener
93+ * will fire exactly once, and then be removed from the emitter's
94+ * internal listener array.
95+ *
96+ * Unlike `once`, `prependListenerOnce` adds the listener function
97+ * to the front of the internal listener array, ensuring that this
98+ * function is called before the rest of the listeners for the
99+ * given event.
100+ */
33101 [@ bs . send ]
34102 external prependOnceListener : (T . t , Event . t (' a => ' b , T . t ), ' a => ' b ) => T . t =
35103 "prependOnceListener" ;
104+
36105 [@ bs . send ] external removeAllListeners : T . t => T . t = "removeAllListeners" ;
106+
107+ /**
108+ * `removeListener(emitter, event, listener)`
109+ *
110+ * Removes the listener function from the event emitter.
111+ *
112+ * The specified listener function is compared by **referential
113+ * equality** to each function in the emitter's internal listener
114+ * array.
115+ *
116+ * This means that, when the target listener is initially added, that
117+ * exact function reference must be maintained and provided here
118+ * in order to ensure removal.
119+ */
37120 [@ bs . send ]
38121 external removeListener : (T . t , Event . t (' a => ' b , T . t ), ' a => ' b ) => T . t =
39122 "removeListener" ;
123+
124+ /**
125+ * `setMaxListeners(emitter, numberOfListeners)`
126+ *
127+ * Sets the maximum number of event listeners that may be added to
128+ * an event emitter before Node begins emitting warnings.
129+ *
130+ * By default, each event emitter has this value set to 10. This is
131+ * intended to warn the user about possible memory leaks.
132+ * `setMaxListeners` will increase this threshold.
133+ */
40134 [@ bs . send ] external setMaxListeners : (T . t , int ) => T . t = "setMaxListeners" ;
41135
42136 [@ bs . send ]
@@ -48,6 +142,7 @@ module Impl = (T: {type t;}) => {
48142 ) =>
49143 T . t =
50144 "on" ;
145+
51146 [@ bs . send ]
52147 external onRemoveListener :
53148 (
0 commit comments