Sha256: 19c4c02375186ca993ff55c9edd94fd9443195385df50e3f4708c8b37cd62df3

Contents?: true

Size: 1.35 KB

Versions: 67

Compression:

Stored size: 1.35 KB

Contents

'use strict';

var forEach    = require('es5-ext/object/for-each')
  , validValue = require('es5-ext/object/valid-object')

  , push = Array.prototype.apply, defineProperty = Object.defineProperty
  , create = Object.create, hasOwnProperty = Object.prototype.hasOwnProperty
  , d = { configurable: true, enumerable: false, writable: true };

module.exports = function (e1, e2) {
	var data;
	(validValue(e1) && validValue(e2));
	if (!hasOwnProperty.call(e1, '__ee__')) {
		if (!hasOwnProperty.call(e2, '__ee__')) {
			d.value = create(null);
			defineProperty(e1, '__ee__', d);
			defineProperty(e2, '__ee__', d);
			d.value = null;
			return;
		}
		d.value = e2.__ee__;
		defineProperty(e1, '__ee__', d);
		d.value = null;
		return;
	}
	data = d.value = e1.__ee__;
	if (!hasOwnProperty.call(e2, '__ee__')) {
		defineProperty(e2, '__ee__', d);
		d.value = null;
		return;
	}
	if (data === e2.__ee__) return;
	forEach(e2.__ee__, function (listener, name) {
		if (!data[name]) {
			data[name] = listener;
			return;
		}
		if (typeof data[name] === 'object') {
			if (typeof listener === 'object') push.apply(data[name], listener);
			else data[name].push(listener);
		} else if (typeof listener === 'object') {
			listener.unshift(data[name]);
			data[name] = listener;
		} else {
			data[name] = [data[name], listener];
		}
	});
	defineProperty(e2, '__ee__', d);
	d.value = null;
};

Version data entries

67 entries across 60 versions & 8 rubygems

Version Path
govuk_publishing_components-18.0.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.21.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.20.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.19.1 node_modules/event-emitter/unify.js
govuk_publishing_components-17.19.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.18.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.17.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.16.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.15.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.14.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.13.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.12.2 node_modules/event-emitter/unify.js
govuk_publishing_components-17.12.1 node_modules/event-emitter/unify.js
govuk_publishing_components-17.12.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.11.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.10.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.9.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.8.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.7.0 node_modules/event-emitter/unify.js
govuk_publishing_components-17.6.1 node_modules/event-emitter/unify.js