Sfoglia il codice sorgente

ref(EventEmitterForwarder) rewrite in TS as an ES6 class

release-8443
Saúl Ibarra Corretgé 1 anno fa
parent
commit
30d36fd7e6

+ 0
- 56
modules/util/EventEmitterForwarder.js Vedi File

@@ -1,56 +0,0 @@
1
-/**
2
- * Implements utility to forward events from one eventEmitter to another.
3
- * @param src {object} instance of EventEmitter or another class that implements
4
- * addListener method which will register listener to EventEmitter instance.
5
- * @param dest {object} instance of EventEmitter or another class that
6
- * implements emit method which will emit an event.
7
- */
8
-function EventEmitterForwarder(src, dest) {
9
-    if (!src || !dest || typeof src.addListener !== 'function'
10
-        || typeof dest.emit !== 'function') {
11
-        throw new Error('Invalid arguments passed to EventEmitterForwarder');
12
-    }
13
-    this.src = src;
14
-    this.dest = dest;
15
-    this.listeners = new Map();
16
-}
17
-
18
-/**
19
- * Adds event to be forwarded from src to dest.
20
- * @param srcEvent {string} the event that EventEmitterForwarder is listening
21
- * for.
22
- * @param dstEvent {string} the event that will be fired from dest.
23
- * @param arguments all other passed arguments are going to be fired with
24
- * dstEvent.
25
- */
26
-EventEmitterForwarder.prototype.forward = function(...args) {
27
-    const srcEvent = args[0];
28
-
29
-    // This will be the "this" value for emit function.
30
-
31
-    args[0] = this.dest;
32
-
33
-    // Using bind.apply to pass the arguments as Array-like object ("arguments")
34
-    const newListener = Function.prototype.bind.apply(this.dest.emit, args);
35
-
36
-    this.src.addListener(srcEvent, newListener);
37
-    this.listeners.set(srcEvent, newListener);
38
-};
39
-
40
-/**
41
- * Clears the listeners for the supplied events.
42
- *
43
- * @param args all the events which listeners to be cleaned.
44
- */
45
-EventEmitterForwarder.prototype.removeListeners = function(...args) {
46
-    args.forEach(a => {
47
-        const l = this.listeners.get(a);
48
-
49
-        if (l) {
50
-            this.src.removeListener(a, l);
51
-            this.listeners.delete(a);
52
-        }
53
-    });
54
-};
55
-
56
-module.exports = EventEmitterForwarder;

+ 61
- 0
modules/util/EventEmitterForwarder.ts Vedi File

@@ -0,0 +1,61 @@
1
+/**
2
+ * Implements utility to forward events from one eventEmitter to another.
3
+ * @param src {object} instance of EventEmitter or another class that implements
4
+ * addListener method which will register listener to EventEmitter instance.
5
+ * @param dest {object} instance of EventEmitter or another class that
6
+ * implements emit method which will emit an event.
7
+ */
8
+export default class EventEmitterForwarder {
9
+    src: any;
10
+    dest: any;
11
+    listeners: Map<any, any>;
12
+
13
+    /**
14
+     * @constructor
15
+     */
16
+    constructor(src: any, dest: any) {
17
+        if (!src || !dest || typeof src.addListener !== 'function' || typeof dest.emit !== 'function') {
18
+            throw new Error('Invalid arguments passed to EventEmitterForwarder');
19
+        }
20
+        this.src = src;
21
+        this.dest = dest;
22
+        this.listeners = new Map();
23
+    }
24
+
25
+    /**
26
+     * Adds event to be forwarded from src to dest.
27
+     * @param srcEvent {string} the event that EventEmitterForwarder is listening
28
+     * for.
29
+     * @param dstEvent {string} the event that will be fired from dest.
30
+     * @param arguments all other passed arguments are going to be fired with
31
+     * dstEvent.
32
+     */
33
+    forward(...args) {
34
+        const srcEvent = args[0];
35
+
36
+        // This will be the "this" value for emit function.
37
+        args[0] = this.dest;
38
+
39
+        // Using bind.apply to pass the arguments as Array-like object ("arguments")
40
+        const newListener = Function.prototype.bind.apply(this.dest.emit, args);
41
+
42
+        this.src.addListener(srcEvent, newListener);
43
+        this.listeners.set(srcEvent, newListener);
44
+    }
45
+
46
+    /**
47
+     * Clears the listeners for the supplied events.
48
+     *
49
+     * @param args all the events which listeners to be cleaned.
50
+     */
51
+    removeListeners(...args) {
52
+        args.forEach(a => {
53
+            const l = this.listeners.get(a);
54
+
55
+            if (l) {
56
+                this.src.removeListener(a, l);
57
+                this.listeners.delete(a);
58
+            }
59
+        });
60
+    }
61
+}

Loading…
Annulla
Salva