Code Duplication    Length = 96-105 lines in 2 locations

formio/node_modules/eventemitter2/lib/eventemitter2.js 2 locations

@@ 300-404 (lines=105) @@
297
    return self;
298
  };
299
300
  EventEmitter.prototype.emit = function() {
301
302
    this._events || init.call(this);
303
304
    var type = arguments[0];
305
306
    if (type === 'newListener' && !this._newListener) {
307
      if (!this._events.newListener) {
308
        return false;
309
      }
310
    }
311
312
    var al = arguments.length;
313
    var args,l,i,j;
314
    var handler;
315
316
    if (this._all && this._all.length) {
317
      handler = this._all.slice();
318
      if (al > 3) {
319
        args = new Array(al);
320
        for (j = 0; j < al; j++) args[j] = arguments[j];
321
      }
322
323
      for (i = 0, l = handler.length; i < l; i++) {
324
        this.event = type;
325
        switch (al) {
326
        case 1:
327
          handler[i].call(this, type);
328
          break;
329
        case 2:
330
          handler[i].call(this, type, arguments[1]);
331
          break;
332
        case 3:
333
          handler[i].call(this, type, arguments[1], arguments[2]);
334
          break;
335
        default:
336
          handler[i].apply(this, args);
337
        }
338
      }
339
    }
340
341
    if (this.wildcard) {
342
      handler = [];
343
      var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();
344
      searchListenerTree.call(this, handler, ns, this.listenerTree, 0);
345
    } else {
346
      handler = this._events[type];
347
      if (typeof handler === 'function') {
348
        this.event = type;
349
        switch (al) {
350
        case 1:
351
          handler.call(this);
352
          break;
353
        case 2:
354
          handler.call(this, arguments[1]);
355
          break;
356
        case 3:
357
          handler.call(this, arguments[1], arguments[2]);
358
          break;
359
        default:
360
          args = new Array(al - 1);
361
          for (j = 1; j < al; j++) args[j - 1] = arguments[j];
362
          handler.apply(this, args);
363
        }
364
        return true;
365
      } else if (handler) {
366
        // need to make copy of handlers because list can change in the middle
367
        // of emit call
368
        handler = handler.slice();
369
      }
370
    }
371
372
    if (handler && handler.length) {
373
      if (al > 3) {
374
        args = new Array(al - 1);
375
        for (j = 1; j < al; j++) args[j - 1] = arguments[j];
376
      }
377
      for (i = 0, l = handler.length; i < l; i++) {
378
        this.event = type;
379
        switch (al) {
380
        case 1:
381
          handler[i].call(this);
382
          break;
383
        case 2:
384
          handler[i].call(this, arguments[1]);
385
          break;
386
        case 3:
387
          handler[i].call(this, arguments[1], arguments[2]);
388
          break;
389
        default:
390
          handler[i].apply(this, args);
391
        }
392
      }
393
      return true;
394
    } else if (!this._all && type === 'error') {
395
      if (arguments[1] instanceof Error) {
396
        throw arguments[1]; // Unhandled 'error' event
397
      } else {
398
        throw new Error("Uncaught, unspecified 'error' event.");
399
      }
400
      return false;
401
    }
402
403
    return !!this._all;
404
  };
405
406
  EventEmitter.prototype.emitAsync = function() {
407
@@ 406-501 (lines=96) @@
403
    return !!this._all;
404
  };
405
406
  EventEmitter.prototype.emitAsync = function() {
407
408
    this._events || init.call(this);
409
410
    var type = arguments[0];
411
412
    if (type === 'newListener' && !this._newListener) {
413
        if (!this._events.newListener) { return Promise.resolve([false]); }
414
    }
415
416
    var promises= [];
417
418
    var al = arguments.length;
419
    var args,l,i,j;
420
    var handler;
421
422
    if (this._all) {
423
      if (al > 3) {
424
        args = new Array(al);
425
        for (j = 1; j < al; j++) args[j] = arguments[j];
426
      }
427
      for (i = 0, l = this._all.length; i < l; i++) {
428
        this.event = type;
429
        switch (al) {
430
        case 1:
431
          promises.push(this._all[i].call(this, type));
432
          break;
433
        case 2:
434
          promises.push(this._all[i].call(this, type, arguments[1]));
435
          break;
436
        case 3:
437
          promises.push(this._all[i].call(this, type, arguments[1], arguments[2]));
438
          break;
439
        default:
440
          promises.push(this._all[i].apply(this, args));
441
        }
442
      }
443
    }
444
445
    if (this.wildcard) {
446
      handler = [];
447
      var ns = typeof type === 'string' ? type.split(this.delimiter) : type.slice();
448
      searchListenerTree.call(this, handler, ns, this.listenerTree, 0);
449
    } else {
450
      handler = this._events[type];
451
    }
452
453
    if (typeof handler === 'function') {
454
      this.event = type;
455
      switch (al) {
456
      case 1:
457
        promises.push(handler.call(this));
458
        break;
459
      case 2:
460
        promises.push(handler.call(this, arguments[1]));
461
        break;
462
      case 3:
463
        promises.push(handler.call(this, arguments[1], arguments[2]));
464
        break;
465
      default:
466
        args = new Array(al - 1);
467
        for (j = 1; j < al; j++) args[j - 1] = arguments[j];
468
        promises.push(handler.apply(this, args));
469
      }
470
    } else if (handler && handler.length) {
471
      handler = handler.slice();
472
      if (al > 3) {
473
        args = new Array(al - 1);
474
        for (j = 1; j < al; j++) args[j - 1] = arguments[j];
475
      }
476
      for (i = 0, l = handler.length; i < l; i++) {
477
        this.event = type;
478
        switch (al) {
479
        case 1:
480
          promises.push(handler[i].call(this));
481
          break;
482
        case 2:
483
          promises.push(handler[i].call(this, arguments[1]));
484
          break;
485
        case 3:
486
          promises.push(handler[i].call(this, arguments[1], arguments[2]));
487
          break;
488
        default:
489
          promises.push(handler[i].apply(this, args));
490
        }
491
      }
492
    } else if (!this._all && type === 'error') {
493
      if (arguments[1] instanceof Error) {
494
        return Promise.reject(arguments[1]); // Unhandled 'error' event
495
      } else {
496
        return Promise.reject("Uncaught, unspecified 'error' event.");
497
      }
498
    }
499
500
    return Promise.all(promises);
501
  };
502
503
  EventEmitter.prototype.on = function(type, listener) {
504
    return this._on(type, listener, false);