Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit 6816d87

Browse files
authored
Merge pull request #73 from exoego/events
Overhaul events module
2 parents e8052af + 6be6157 commit 6816d87

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ The following core Node.js modules (v8.7.0+) have been implemented:
2828
| [crypto](https://nodejs.org/api/crypto.html) | :heavy_check_mark: |
2929
| [dgram](https://nodejs.org/api/dgram.html) | |
3030
| [dns](https://nodejs.org/api/dns.html) | :heavy_check_mark: |
31-
| [events](https://nodejs.org/api/events.html) | |
31+
| [events](https://nodejs.org/api/events.html) | :heavy_check_mark: |
3232
| [fs](https://nodejs.org/api/fs.html) | :heavy_check_mark: |
3333
| [http](https://nodejs.org/api/http.html) | |
3434
| [http2](https://nodejs.org/api/http2.html) | |

app/current/src/main/scala/io/scalajs/nodejs/events/EventEmitter.scala

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.scalajs.nodejs.events
22

3+
import com.thoughtworks.enableIf
4+
35
import scala.scalajs.js
46
import scala.scalajs.js.annotation.JSImport
57

@@ -48,7 +50,9 @@ trait IEventEmitter extends js.Object {
4850
* @param args the event arguments
4951
* @example emitter.emit(name[, arg1][, arg2][, ...])
5052
*/
51-
def emit(name: String, args: js.Any*): Any = js.native
53+
def emit(name: String, args: js.Any*): Boolean = js.native
54+
55+
def eventNames(): js.Array[String] = js.native
5256

5357
/**
5458
* Returns the current max listener value for the EventEmitter which is either set by
@@ -70,6 +74,9 @@ trait IEventEmitter extends js.Object {
7074
*/
7175
def listeners(eventName: String): js.Array[js.Function] = js.native
7276

77+
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
78+
def off(eventName: String, listner: js.Function): this.type = js.native
79+
7380
/**
7481
* Adds the listener function to the end of the listeners array for the event named eventName.
7582
* No checks are made to see if the listener has already been added. Multiple calls passing
@@ -87,15 +94,9 @@ trait IEventEmitter extends js.Object {
8794
*/
8895
def once(eventName: String, listener: js.Function): this.type = js.native
8996

90-
/**
91-
* Removes all listeners, or those of the specified eventName.
92-
* <p/><b>Note</b> that it is bad practice to remove listeners added elsewhere in the code,
93-
* particularly when the EventEmitter instance was created by some other component or
94-
* module (e.g. sockets or file streams).
95-
* <p/>Returns a reference to the EventEmitter so calls can be chained.
96-
* @example emitter.removeAllListeners([eventName])
97-
*/
98-
def removeAllListeners(eventName: String): this.type = js.native
97+
def prependListener(eventName: String, listener: js.Function): this.type = js.native
98+
99+
def prependOnceListener(eventName: String, listener: js.Function): this.type = js.native
99100

100101
/**
101102
* Removes all listeners, or those of the specified eventName.
@@ -105,7 +106,7 @@ trait IEventEmitter extends js.Object {
105106
* <p/>Returns a reference to the EventEmitter so calls can be chained.
106107
* @example emitter.removeAllListeners([eventName])
107108
*/
108-
def removeAllListeners(): this.type = js.native
109+
def removeAllListeners(eventName: String = js.native): this.type = js.native
109110

110111
/**
111112
* Removes the specified listener from the listener array for the event named eventName.
@@ -131,6 +132,8 @@ trait IEventEmitter extends js.Object {
131132
*/
132133
def setMaxListeners(n: Int): this.type = js.native
133134

135+
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs10)
136+
def rawListeners(eventName: String): js.Array[js.Function] = js.native
134137
}
135138

136139
/**
@@ -155,4 +158,6 @@ object EventEmitter extends IEventEmitter {
155158
@deprecated("Use emitter.listenerCount() instead.", since = "4.0.0")
156159
def listenerCount(emitter: IEventEmitter, eventName: String): Unit = js.native
157160

161+
@enableIf(io.scalajs.nodejs.CompilerSwitches.gteNodeJs12)
162+
def once(emitter: IEventEmitter, eventName: String): js.Promise[js.Array[js.Any]] = js.native
158163
}

0 commit comments

Comments
 (0)