events: remove type check for event type
authorTrevor Norris <trev.norris@gmail.com>
Mon, 4 Mar 2013 19:33:03 +0000 (11:33 -0800)
committerTrevor Norris <trev.norris@gmail.com>
Mon, 4 Mar 2013 19:57:35 +0000 (11:57 -0800)
Strict checking for typeof types broke backwards compatibility for other
libraries. This reverts those checks.

The subclass test has been changed to ensure all operations can be
performed on the inherited EE before instantiation. Including the
ability to set event names with numbers.

lib/events.js
test/simple/test-event-emitter-subclass.js

index 811cb90..9eaa36b 100644 (file)
@@ -125,8 +125,6 @@ EventEmitter.prototype.emit = function(type) {
 EventEmitter.prototype.addListener = function(type, listener) {
   var m;
 
-  if (typeof type !== 'string')
-    throw TypeError('type must be a string');
   if (typeof listener !== 'function')
     throw TypeError('listener must be a function');
 
@@ -168,8 +166,6 @@ EventEmitter.prototype.addListener = function(type, listener) {
 EventEmitter.prototype.on = EventEmitter.prototype.addListener;
 
 EventEmitter.prototype.once = function(type, listener) {
-  if (typeof type !== 'string')
-    throw TypeError('type must be a string');
   if (typeof listener !== 'function')
     throw TypeError('listener must be a function');
 
@@ -188,8 +184,6 @@ EventEmitter.prototype.once = function(type, listener) {
 EventEmitter.prototype.removeListener = function(type, listener) {
   var list, position, length, i;
 
-  if (typeof type !== 'string')
-    throw TypeError('type must be a string');
   if (typeof listener !== 'function')
     throw TypeError('listener must be a function');
 
@@ -235,9 +229,6 @@ EventEmitter.prototype.removeListener = function(type, listener) {
 EventEmitter.prototype.removeAllListeners = function(type) {
   var key, listeners;
 
-  if (arguments.length > 0 && typeof type !== 'string')
-    throw TypeError('type must not be set or must be a string');
-
   if (!this._events)
     return this;
 
@@ -276,9 +267,6 @@ EventEmitter.prototype.removeAllListeners = function(type) {
 };
 
 EventEmitter.prototype.listeners = function(type) {
-  if (typeof type !== 'string')
-    throw TypeError('event type must be a string');
-
   if (!this._events || !this._events[type])
     return [];
   if (typeof this._events[type] === 'function')
index 7a2f778..8a2e9c1 100644 (file)
@@ -27,9 +27,9 @@ var util = require('util');
 util.inherits(MyEE, EventEmitter);
 
 function MyEE(cb) {
-  this.emit('bar');
-  this.on('foo', cb);
-  process.nextTick(this.emit.bind(this, 'foo'));
+  this.once(1, cb);
+  this.emit(1);
+  this.removeAllListeners();
   EventEmitter.call(this);
 }
 
@@ -50,5 +50,6 @@ assert.throws(function() {
 
 process.on('exit', function() {
   assert(called);
+  assert.deepEqual(myee._events, {});
   console.log('ok');
 });