Skip to content

Commit 47ca625

Browse files
committed
Added lots of documentation;
1 parent f1033fc commit 47ca625

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

src/EventEmitter.re

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,39 +4,133 @@
44
* be achieved by implementing the known `Event.t('a => 'b, t)` types
55
*/
66
module 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

Comments
 (0)