Skip to content

Commit

Permalink
Merge pull request #271 from Ilrilan/master
Browse files Browse the repository at this point in the history
Fix prependListener in wildcard mode
  • Loading branch information
DigitalBrainJS committed Feb 23, 2021
2 parents 90a37aa + 658fe05 commit 2eb5d5a
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 3 deletions.
10 changes: 7 additions & 3 deletions lib/eventemitter2.js
Original file line number Diff line number Diff line change
Expand Up @@ -599,7 +599,7 @@
return listeners;
}

function growListenerTree(type, listener) {
function growListenerTree(type, listener, prepend) {
var len = 0, j = 0, i, delimiter = this.delimiter, dl= delimiter.length, ns;

if(typeof type==='string') {
Expand Down Expand Up @@ -648,7 +648,11 @@
tree._listeners = [tree._listeners];
}

tree._listeners.push(listener);
if (prepend) {
tree._listeners.unshift(listener);
} else {
tree._listeners.push(listener);
}

if (
!tree._listeners.warned &&
Expand Down Expand Up @@ -1229,7 +1233,7 @@
}

if (this.wildcard) {
growListenerTree.call(this, type, listener);
growListenerTree.call(this, type, listener, prepend);
return returnValue;
}

Expand Down
26 changes: 26 additions & 0 deletions test/wildcardEvents/prependListener.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
var assert= require('assert');

var file = '../../lib/eventemitter2';
var EventEmitter2;

if(typeof require !== 'undefined') {
EventEmitter2 = require(file).EventEmitter2;
}
else {
EventEmitter2 = window.EventEmitter2;
}

module.exports= {
'use prepend on wildcards mode': function(){
var ee = new EventEmitter2({
wildcard: true
});
var type = ['some', 'listener', 'bar'];
const function1 = function () {}
const function2 = function () {}

ee.on(type, function2);
ee.prependListener(type, function1);
assert.deepStrictEqual(ee.listeners(type), [function1, function2])
}
};

0 comments on commit 2eb5d5a

Please sign in to comment.