Socket
Socket
Sign inDemoInstall

event-target-shim

Package Overview
Dependencies
Maintainers
1
Versions
27
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

event-target-shim - npm Package Compare versions

Comparing version 1.1.1 to 2.0.0

356

dist/event-target-shim.js

@@ -7,5 +7,4 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.eventTargetShim = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){

*/
"use strict"
"use strict";
/**

@@ -15,12 +14,24 @@ * Creates a unique key.

* @param {string} name - A name to create.
* @returns {symbol|string}
* @returns {symbol|string} Generated unique key.
* @private
*/
var createUniqueKey = exports.createUniqueKey = (typeof Symbol !== "undefined" ?
Symbol :
function createUniqueKey(name) {
return "[[" + name + "_" + Math.random().toFixed(8).slice(2) + "]]";
});
var createUniqueKey = module.exports.createUniqueKey = (
typeof Symbol !== "undefined" ? Symbol : //eslint-disable-line no-undef
/* otherwise */ function createUniqueKey(name) {
return "[[" + name + "_" + Math.random().toFixed(8).slice(2) + "]]"
}
)
/**
* Checks whether the given value is a non-null object or not.
*
* @param {any} x - The value to be check.
* @returns {boolean} `true` if the value is a non-null object.
* @private
*/
var isObject = module.exports.isObject = function isObject(x) {
return typeof x === "object" && x !== null
}
/**
* The key of listeners.

@@ -31,3 +42,3 @@ *

*/
exports.LISTENERS = createUniqueKey("listeners");
module.exports.LISTENERS = createUniqueKey("listeners")

@@ -40,3 +51,3 @@ /**

*/
exports.CAPTURE = 1;
module.exports.CAPTURE = 1

@@ -49,3 +60,3 @@ /**

*/
exports.BUBBLE = 2;
module.exports.BUBBLE = 2

@@ -58,3 +69,3 @@ /**

*/
exports.ATTRIBUTE = 3;
module.exports.ATTRIBUTE = 3

@@ -74,8 +85,19 @@ /**

* @param {number} kind - The kind of the listener.
* @param {object} [options] - The option object.
* @param {boolean} [options.once] - The flag to remove the listener at the first call.
* @param {boolean} [options.passive] - The flag to ignore `event.preventDefault` method.
* @returns {ListenerNode} The created listener node.
*/
exports.newNode = function newNode(listener, kind) {
return {listener: listener, kind: kind, next: null};
};
module.exports.newNode = function newNode(listener, kind, options) {
var obj = isObject(options)
return {
listener: listener,
kind: kind,
once: obj && Boolean(options.once),
passive: obj && Boolean(options.passive),
next: null,
}
}
},{}],2:[function(require,module,exports){

@@ -87,5 +109,4 @@ /**

*/
"use strict"
"use strict";
//-----------------------------------------------------------------------------

@@ -95,6 +116,6 @@ // Requirements

var Commons = require("./commons");
var LISTENERS = Commons.LISTENERS;
var ATTRIBUTE = Commons.ATTRIBUTE;
var newNode = Commons.newNode;
var Commons = require("./commons")
var LISTENERS = Commons.LISTENERS
var ATTRIBUTE = Commons.ATTRIBUTE
var newNode = Commons.newNode

@@ -113,10 +134,10 @@ //-----------------------------------------------------------------------------

function getAttributeListener(eventTarget, type) {
var node = eventTarget[LISTENERS][type];
var node = eventTarget[LISTENERS][type]
while (node != null) {
if (node.kind === ATTRIBUTE) {
return node.listener;
return node.listener
}
node = node.next;
node = node.next
}
return null;
return null
}

@@ -134,7 +155,7 @@

if (typeof listener !== "function" && typeof listener !== "object") {
listener = null; // eslint-disable-line no-param-reassign
listener = null // eslint-disable-line no-param-reassign
}
var prev = null;
var node = eventTarget[LISTENERS][type];
var prev = null
var node = eventTarget[LISTENERS][type]
while (node != null) {

@@ -144,13 +165,13 @@ if (node.kind === ATTRIBUTE) {

if (prev == null) {
eventTarget[LISTENERS][type] = node.next;
eventTarget[LISTENERS][type] = node.next
}
else {
prev.next = node.next;
prev.next = node.next
}
}
else {
prev = node;
prev = node
}
node = node.next;
node = node.next
}

@@ -161,6 +182,6 @@

if (prev == null) {
eventTarget[LISTENERS][type] = newNode(listener, ATTRIBUTE);
eventTarget[LISTENERS][type] = newNode(listener, ATTRIBUTE)
}
else {
prev.next = newNode(listener, ATTRIBUTE);
prev.next = newNode(listener, ATTRIBUTE)
}

@@ -181,5 +202,9 @@ }

*/
exports.defineCustomEventTarget = function(EventTargetBase, types) {
module.exports.defineCustomEventTarget = function(EventTargetBase, types) {
/**
* The constructor of custom event target.
* @constructor
*/
function EventTarget() {
EventTargetBase.call(this);
EventTargetBase.call(this)
}

@@ -191,19 +216,23 @@

configurable: true,
writable: true
}
};
writable: true,
},
}
types.forEach(function(type) {
descripter["on" + type] = {
get: function() { return getAttributeListener(this, type); },
set: function(listener) { setAttributeListener(this, type, listener); },
get: function() {
return getAttributeListener(this, type)
},
set: function(listener) {
setAttributeListener(this, type, listener)
},
configurable: true,
enumerable: true
};
});
enumerable: true,
}
})
EventTarget.prototype = Object.create(EventTargetBase.prototype, descripter);
EventTarget.prototype = Object.create(EventTargetBase.prototype, descripter)
return EventTarget;
};
return EventTarget
}

@@ -216,25 +245,27 @@ },{"./commons":1}],3:[function(require,module,exports){

*/
"use strict"
"use strict";
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Requirements
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------
var Commons = require("./commons");
var CustomEventTarget = require("./custom-event-target");
var EventWrapper = require("./event-wrapper");
var LISTENERS = Commons.LISTENERS;
var CAPTURE = Commons.CAPTURE;
var BUBBLE = Commons.BUBBLE;
var ATTRIBUTE = Commons.ATTRIBUTE;
var newNode = Commons.newNode;
var defineCustomEventTarget = CustomEventTarget.defineCustomEventTarget;
var createEventWrapper = EventWrapper.createEventWrapper;
var STOP_IMMEDIATE_PROPAGATION_FLAG =
EventWrapper.STOP_IMMEDIATE_PROPAGATION_FLAG;
/*globals window */
//-----------------------------------------------------------------------------
var Commons = require("./commons")
var CustomEventTarget = require("./custom-event-target")
var EventWrapper = require("./event-wrapper")
var isObject = Commons.isObject
var LISTENERS = Commons.LISTENERS
var CAPTURE = Commons.CAPTURE
var BUBBLE = Commons.BUBBLE
var ATTRIBUTE = Commons.ATTRIBUTE
var newNode = Commons.newNode
var defineCustomEventTarget = CustomEventTarget.defineCustomEventTarget
var createEventWrapper = EventWrapper.createEventWrapper
var STOP_IMMEDIATE_PROPAGATION_FLAG = EventWrapper.STOP_IMMEDIATE_PROPAGATION_FLAG
var PASSIVE_LISTENER_FLAG = EventWrapper.PASSIVE_LISTENER_FLAG
//------------------------------------------------------------------------------
// Constants
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------

@@ -250,7 +281,7 @@ /**

typeof window.EventTarget !== "undefined"
);
)
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Public Interface
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------

@@ -274,11 +305,11 @@ /**

// }
Object.defineProperty(this, LISTENERS, {value: Object.create(null)});
Object.defineProperty(this, LISTENERS, {value: Object.create(null)})
}
else if (arguments.length === 1 && Array.isArray(arguments[0])) {
return defineCustomEventTarget(EventTarget, arguments[0]);
return defineCustomEventTarget(EventTarget, arguments[0])
}
else if (arguments.length > 0) {
var types = Array(arguments.length);
var types = Array(arguments.length)
for (var i = 0; i < arguments.length; ++i) {
types[i] = arguments[i];
types[i] = arguments[i]
}

@@ -291,8 +322,8 @@

// }
return defineCustomEventTarget(EventTarget, types);
return defineCustomEventTarget(EventTarget, types)
}
else {
throw new TypeError("Cannot call a class as a function");
throw new TypeError("Cannot call a class as a function")
}
};
}

@@ -305,66 +336,68 @@ EventTarget.prototype = Object.create(

writable: true,
configurable: true
configurable: true,
},
addEventListener: {
value: function addEventListener(type, listener, capture) {
value: function addEventListener(type, listener, options) {
if (listener == null) {
return false;
return false
}
if (typeof listener !== "function" && typeof listener !== "object") {
throw new TypeError("\"listener\" is not an object.");
throw new TypeError("\"listener\" is not an object.")
}
var kind = (capture ? CAPTURE : BUBBLE);
var node = this[LISTENERS][type];
var capture = isObject(options) ? Boolean(options.capture) : Boolean(options)
var kind = (capture ? CAPTURE : BUBBLE)
var node = this[LISTENERS][type]
if (node == null) {
this[LISTENERS][type] = newNode(listener, kind);
return true;
this[LISTENERS][type] = newNode(listener, kind, options)
return true
}
var prev = null;
var prev = null
while (node != null) {
if (node.listener === listener && node.kind === kind) {
// Should ignore a duplicated listener.
return false;
return false
}
prev = node;
node = node.next;
prev = node
node = node.next
}
prev.next = newNode(listener, kind);
return true;
prev.next = newNode(listener, kind, options)
return true
},
configurable: true,
writable: true
writable: true,
},
removeEventListener: {
value: function removeEventListener(type, listener, capture) {
value: function removeEventListener(type, listener, options) {
if (listener == null) {
return false;
return false
}
var kind = (capture ? CAPTURE : BUBBLE);
var prev = null;
var node = this[LISTENERS][type];
var capture = isObject(options) ? Boolean(options.capture) : Boolean(options)
var kind = (capture ? CAPTURE : BUBBLE)
var prev = null
var node = this[LISTENERS][type]
while (node != null) {
if (node.listener === listener && node.kind === kind) {
if (prev == null) {
this[LISTENERS][type] = node.next;
this[LISTENERS][type] = node.next
}
else {
prev.next = node.next;
prev.next = node.next
}
return true;
return true
}
prev = node;
node = node.next;
prev = node
node = node.next
}
return false;
return false
},
configurable: true,
writable: true
writable: true,
},

@@ -375,33 +408,52 @@

// If listeners aren't registered, terminate.
var node = this[LISTENERS][event.type];
var type = event.type
var node = this[LISTENERS][type]
if (node == null) {
return true;
return true
}
// Since we cannot rewrite several properties, so wrap object.
var wrapped = createEventWrapper(event, this);
var wrapped = createEventWrapper(event, this)
// This doesn't process capturing phase and bubbling phase.
// This isn't participating in a tree.
var prev = null
while (node != null) {
// Remove this listener if it's once
if (node.once) {
if (prev == null) {
this[LISTENERS][type] = node.next
}
else {
prev.next = node.next
}
}
else {
prev = node
}
// Call this listener
wrapped[PASSIVE_LISTENER_FLAG] = node.passive
if (typeof node.listener === "function") {
node.listener.call(this, wrapped);
node.listener.call(this, wrapped)
}
else if (node.kind !== ATTRIBUTE && typeof node.listener.handleEvent === "function") {
node.listener.handleEvent(wrapped);
node.listener.handleEvent(wrapped)
}
// Break if `event.stopImmediatePropagation` was called.
if (wrapped[STOP_IMMEDIATE_PROPAGATION_FLAG]) {
break;
break
}
node = node.next;
node = node.next
}
return !wrapped.defaultPrevented;
return !wrapped.defaultPrevented
},
configurable: true,
writable: true
}
writable: true,
},
}
);
)

@@ -414,5 +466,4 @@ },{"./commons":1,"./custom-event-target":2,"./event-wrapper":4}],4:[function(require,module,exports){

*/
"use strict"
"use strict";
//-----------------------------------------------------------------------------

@@ -422,3 +473,3 @@ // Requirements

var createUniqueKey = require("./commons").createUniqueKey;
var createUniqueKey = require("./commons").createUniqueKey

@@ -436,3 +487,3 @@ //-----------------------------------------------------------------------------

var STOP_IMMEDIATE_PROPAGATION_FLAG =
createUniqueKey("stop_immediate_propagation_flag");
createUniqueKey("stop_immediate_propagation_flag")

@@ -445,5 +496,13 @@ /**

*/
var CANCELED_FLAG = createUniqueKey("canceled_flag");
var CANCELED_FLAG = createUniqueKey("canceled_flag")
/**
* The key of the flag that it cannot use `preventDefault` method.
*
* @type {symbol|string}
* @private
*/
var PASSIVE_LISTENER_FLAG = createUniqueKey("passive_listener_flag")
/**
* The key of the original event object.

@@ -454,3 +513,3 @@ *

*/
var ORIGINAL_EVENT = createUniqueKey("original_event");
var ORIGINAL_EVENT = createUniqueKey("original_event")

@@ -466,9 +525,9 @@ /**

value: function stopPropagation() {
var e = this[ORIGINAL_EVENT];
var e = this[ORIGINAL_EVENT]
if (typeof e.stopPropagation === "function") {
e.stopPropagation();
e.stopPropagation()
}
},
writable: true,
configurable: true
configurable: true,
}),

@@ -478,11 +537,11 @@

value: function stopImmediatePropagation() {
this[STOP_IMMEDIATE_PROPAGATION_FLAG] = true;
this[STOP_IMMEDIATE_PROPAGATION_FLAG] = true
var e = this[ORIGINAL_EVENT];
var e = this[ORIGINAL_EVENT]
if (typeof e.stopImmediatePropagation === "function") {
e.stopImmediatePropagation();
e.stopImmediatePropagation()
}
},
writable: true,
configurable: true
configurable: true,
}),

@@ -492,21 +551,26 @@

value: function preventDefault() {
if (this[PASSIVE_LISTENER_FLAG]) {
return
}
if (this.cancelable === true) {
this[CANCELED_FLAG] = true;
this[CANCELED_FLAG] = true
}
var e = this[ORIGINAL_EVENT];
var e = this[ORIGINAL_EVENT]
if (typeof e.preventDefault === "function") {
e.preventDefault();
e.preventDefault()
}
},
writable: true,
configurable: true
configurable: true,
}),
defaultPrevented: Object.freeze({
get: function defaultPrevented() { return this[CANCELED_FLAG]; },
get: function defaultPrevented() {
return this[CANCELED_FLAG]
},
enumerable: true,
configurable: true
})
});
configurable: true,
}),
})

@@ -517,3 +581,4 @@ //-----------------------------------------------------------------------------

exports.STOP_IMMEDIATE_PROPAGATION_FLAG = STOP_IMMEDIATE_PROPAGATION_FLAG;
module.exports.STOP_IMMEDIATE_PROPAGATION_FLAG = STOP_IMMEDIATE_PROPAGATION_FLAG
module.exports.PASSIVE_LISTENER_FLAG = PASSIVE_LISTENER_FLAG

@@ -531,6 +596,6 @@ /**

*/
exports.createEventWrapper = function createEventWrapper(event, eventTarget) {
module.exports.createEventWrapper = function createEventWrapper(event, eventTarget) {
var timeStamp = (
typeof event.timeStamp === "number" ? event.timeStamp : Date.now()
);
)
var propertyDefinition = {

@@ -544,11 +609,12 @@ type: {value: event.type, enumerable: true},

timeStamp: {value: timeStamp, enumerable: true},
isTrusted: {value: false, enumerable: true}
};
propertyDefinition[STOP_IMMEDIATE_PROPAGATION_FLAG] = {value: false, writable: true};
propertyDefinition[CANCELED_FLAG] = {value: false, writable: true};
propertyDefinition[ORIGINAL_EVENT] = {value: event};
isTrusted: {value: false, enumerable: true},
}
propertyDefinition[STOP_IMMEDIATE_PROPAGATION_FLAG] = {value: false, writable: true}
propertyDefinition[CANCELED_FLAG] = {value: false, writable: true}
propertyDefinition[PASSIVE_LISTENER_FLAG] = {value: false, writable: true}
propertyDefinition[ORIGINAL_EVENT] = {value: event}
// For CustomEvent.
if (typeof event.detail !== "undefined") {
propertyDefinition.detail = {value: event.detail, enumerable: true};
propertyDefinition.detail = {value: event.detail, enumerable: true}
}

@@ -559,6 +625,6 @@

propertyDefinition
);
};
)
}
},{"./commons":1}]},{},[3])(3)
});

@@ -1,1 +0,1 @@

!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.eventTargetShim=e()}}(function(){return function e(t,n,r){function o(i,u){if(!n[i]){if(!t[i]){var l="function"==typeof require&&require;if(!u&&l)return l(i,!0);if(a)return a(i,!0);var f=new Error("Cannot find module '"+i+"'");throw f.code="MODULE_NOT_FOUND",f}var c=n[i]={exports:{}};t[i][0].call(c.exports,function(e){var n=t[i][1][e];return o(n?n:e)},c,c.exports,e,t,n,r)}return n[i].exports}for(var a="function"==typeof require&&require,i=0;i<r.length;i++)o(r[i]);return o}({1:[function(e,t,n){"use strict";var r=n.createUniqueKey="undefined"!=typeof Symbol?Symbol:function(e){return"[["+e+"_"+Math.random().toFixed(8).slice(2)+"]]"};n.LISTENERS=r("listeners"),n.CAPTURE=1,n.BUBBLE=2,n.ATTRIBUTE=3,n.newNode=function(e,t){return{listener:e,kind:t,next:null}}},{}],2:[function(e,t,n){"use strict";function r(e,t){for(var n=e[i][t];null!=n;){if(n.kind===u)return n.listener;n=n.next}return null}function o(e,t,n){"function"!=typeof n&&"object"!=typeof n&&(n=null);for(var r=null,o=e[i][t];null!=o;)o.kind===u?null==r?e[i][t]=o.next:r.next=o.next:r=o,o=o.next;null!=n&&(null==r?e[i][t]=l(n,u):r.next=l(n,u))}var a=e("./commons"),i=a.LISTENERS,u=a.ATTRIBUTE,l=a.newNode;n.defineCustomEventTarget=function(e,t){function n(){e.call(this)}var a={constructor:{value:n,configurable:!0,writable:!0}};return t.forEach(function(e){a["on"+e]={get:function(){return r(this,e)},set:function(t){o(this,e,t)},configurable:!0,enumerable:!0}}),n.prototype=Object.create(e.prototype,a),n}},{"./commons":1}],3:[function(e,t,n){"use strict";var r=e("./commons"),o=e("./custom-event-target"),a=e("./event-wrapper"),i=r.LISTENERS,u=r.CAPTURE,l=r.BUBBLE,f=r.ATTRIBUTE,c=r.newNode,s=o.defineCustomEventTarget,p=a.createEventWrapper,v=a.STOP_IMMEDIATE_PROPAGATION_FLAG,d="undefined"!=typeof window&&"undefined"!=typeof window.EventTarget,b=t.exports=function m(){if(!(this instanceof m)){if(1===arguments.length&&Array.isArray(arguments[0]))return s(m,arguments[0]);if(arguments.length>0){for(var e=Array(arguments.length),t=0;t<arguments.length;++t)e[t]=arguments[t];return s(m,e)}throw new TypeError("Cannot call a class as a function")}Object.defineProperty(this,i,{value:Object.create(null)})};b.prototype=Object.create((d?window.EventTarget:Object).prototype,{constructor:{value:b,writable:!0,configurable:!0},addEventListener:{value:function(e,t,n){if(null==t)return!1;if("function"!=typeof t&&"object"!=typeof t)throw new TypeError('"listener" is not an object.');var r=n?u:l,o=this[i][e];if(null==o)return this[i][e]=c(t,r),!0;for(var a=null;null!=o;){if(o.listener===t&&o.kind===r)return!1;a=o,o=o.next}return a.next=c(t,r),!0},configurable:!0,writable:!0},removeEventListener:{value:function(e,t,n){if(null==t)return!1;for(var r=n?u:l,o=null,a=this[i][e];null!=a;){if(a.listener===t&&a.kind===r)return null==o?this[i][e]=a.next:o.next=a.next,!0;o=a,a=a.next}return!1},configurable:!0,writable:!0},dispatchEvent:{value:function(e){var t=this[i][e.type];if(null==t)return!0;for(var n=p(e,this);null!=t&&("function"==typeof t.listener?t.listener.call(this,n):t.kind!==f&&"function"==typeof t.listener.handleEvent&&t.listener.handleEvent(n),!n[v]);)t=t.next;return!n.defaultPrevented},configurable:!0,writable:!0}})},{"./commons":1,"./custom-event-target":2,"./event-wrapper":4}],4:[function(e,t,n){"use strict";var r=e("./commons").createUniqueKey,o=r("stop_immediate_propagation_flag"),a=r("canceled_flag"),i=r("original_event"),u=Object.freeze({stopPropagation:Object.freeze({value:function(){var e=this[i];"function"==typeof e.stopPropagation&&e.stopPropagation()},writable:!0,configurable:!0}),stopImmediatePropagation:Object.freeze({value:function(){this[o]=!0;var e=this[i];"function"==typeof e.stopImmediatePropagation&&e.stopImmediatePropagation()},writable:!0,configurable:!0}),preventDefault:Object.freeze({value:function(){this.cancelable===!0&&(this[a]=!0);var e=this[i];"function"==typeof e.preventDefault&&e.preventDefault()},writable:!0,configurable:!0}),defaultPrevented:Object.freeze({get:function(){return this[a]},enumerable:!0,configurable:!0})});n.STOP_IMMEDIATE_PROPAGATION_FLAG=o,n.createEventWrapper=function(e,t){var n="number"==typeof e.timeStamp?e.timeStamp:Date.now(),r={type:{value:e.type,enumerable:!0},target:{value:t,enumerable:!0},currentTarget:{value:t,enumerable:!0},eventPhase:{value:2,enumerable:!0},bubbles:{value:Boolean(e.bubbles),enumerable:!0},cancelable:{value:Boolean(e.cancelable),enumerable:!0},timeStamp:{value:n,enumerable:!0},isTrusted:{value:!1,enumerable:!0}};return r[o]={value:!1,writable:!0},r[a]={value:!1,writable:!0},r[i]={value:e},"undefined"!=typeof e.detail&&(r.detail={value:e.detail,enumerable:!0}),Object.create(Object.create(e,u),r)}},{"./commons":1}]},{},[3])(3)});
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.eventTargetShim=e()}}(function(){return function e(t,n,r){function o(a,l){if(!n[a]){if(!t[a]){var u="function"==typeof require&&require;if(!l&&u)return u(a,!0);if(i)return i(a,!0);var f=new Error("Cannot find module '"+a+"'");throw f.code="MODULE_NOT_FOUND",f}var c=n[a]={exports:{}};t[a][0].call(c.exports,function(e){var n=t[a][1][e];return o(n?n:e)},c,c.exports,e,t,n,r)}return n[a].exports}for(var i="function"==typeof require&&require,a=0;a<r.length;a++)o(r[a]);return o}({1:[function(e,t,n){"use strict";var r=t.exports.createUniqueKey="undefined"!=typeof Symbol?Symbol:function(e){return"[["+e+"_"+Math.random().toFixed(8).slice(2)+"]]"},o=t.exports.isObject=function(e){return"object"==typeof e&&null!==e};t.exports.LISTENERS=r("listeners"),t.exports.CAPTURE=1,t.exports.BUBBLE=2,t.exports.ATTRIBUTE=3,t.exports.newNode=function(e,t,n){var r=o(n);return{listener:e,kind:t,once:r&&Boolean(n.once),passive:r&&Boolean(n.passive),next:null}}},{}],2:[function(e,t,n){"use strict";function r(e,t){for(var n=e[a][t];null!=n;){if(n.kind===l)return n.listener;n=n.next}return null}function o(e,t,n){"function"!=typeof n&&"object"!=typeof n&&(n=null);for(var r=null,o=e[a][t];null!=o;)o.kind===l?null==r?e[a][t]=o.next:r.next=o.next:r=o,o=o.next;null!=n&&(null==r?e[a][t]=u(n,l):r.next=u(n,l))}var i=e("./commons"),a=i.LISTENERS,l=i.ATTRIBUTE,u=i.newNode;t.exports.defineCustomEventTarget=function(e,t){function n(){e.call(this)}var i={constructor:{value:n,configurable:!0,writable:!0}};return t.forEach(function(e){i["on"+e]={get:function(){return r(this,e)},set:function(t){o(this,e,t)},configurable:!0,enumerable:!0}}),n.prototype=Object.create(e.prototype,i),n}},{"./commons":1}],3:[function(e,t,n){"use strict";var r=e("./commons"),o=e("./custom-event-target"),i=e("./event-wrapper"),a=r.isObject,l=r.LISTENERS,u=r.CAPTURE,f=r.BUBBLE,c=r.ATTRIBUTE,s=r.newNode,p=o.defineCustomEventTarget,v=i.createEventWrapper,b=i.STOP_IMMEDIATE_PROPAGATION_FLAG,d=i.PASSIVE_LISTENER_FLAG,m="undefined"!=typeof window&&"undefined"!=typeof window.EventTarget,y=t.exports=function e(){if(!(this instanceof e)){if(1===arguments.length&&Array.isArray(arguments[0]))return p(e,arguments[0]);if(arguments.length>0){for(var t=Array(arguments.length),n=0;n<arguments.length;++n)t[n]=arguments[n];return p(e,t)}throw new TypeError("Cannot call a class as a function")}Object.defineProperty(this,l,{value:Object.create(null)})};y.prototype=Object.create((m?window.EventTarget:Object).prototype,{constructor:{value:y,writable:!0,configurable:!0},addEventListener:{value:function(e,t,n){if(null==t)return!1;if("function"!=typeof t&&"object"!=typeof t)throw new TypeError('"listener" is not an object.');var r=a(n)?Boolean(n.capture):Boolean(n),o=r?u:f,i=this[l][e];if(null==i)return this[l][e]=s(t,o,n),!0;for(var c=null;null!=i;){if(i.listener===t&&i.kind===o)return!1;c=i,i=i.next}return c.next=s(t,o,n),!0},configurable:!0,writable:!0},removeEventListener:{value:function(e,t,n){if(null==t)return!1;for(var r=a(n)?Boolean(n.capture):Boolean(n),o=r?u:f,i=null,c=this[l][e];null!=c;){if(c.listener===t&&c.kind===o)return null==i?this[l][e]=c.next:i.next=c.next,!0;i=c,c=c.next}return!1},configurable:!0,writable:!0},dispatchEvent:{value:function(e){var t=e.type,n=this[l][t];if(null==n)return!0;for(var r=v(e,this),o=null;null!=n&&(n.once?null==o?this[l][t]=n.next:o.next=n.next:o=n,r[d]=n.passive,"function"==typeof n.listener?n.listener.call(this,r):n.kind!==c&&"function"==typeof n.listener.handleEvent&&n.listener.handleEvent(r),!r[b]);)n=n.next;return!r.defaultPrevented},configurable:!0,writable:!0}})},{"./commons":1,"./custom-event-target":2,"./event-wrapper":4}],4:[function(e,t,n){"use strict";var r=e("./commons").createUniqueKey,o=r("stop_immediate_propagation_flag"),i=r("canceled_flag"),a=r("passive_listener_flag"),l=r("original_event"),u=Object.freeze({stopPropagation:Object.freeze({value:function(){var e=this[l];"function"==typeof e.stopPropagation&&e.stopPropagation()},writable:!0,configurable:!0}),stopImmediatePropagation:Object.freeze({value:function(){this[o]=!0;var e=this[l];"function"==typeof e.stopImmediatePropagation&&e.stopImmediatePropagation()},writable:!0,configurable:!0}),preventDefault:Object.freeze({value:function(){if(!this[a]){this.cancelable===!0&&(this[i]=!0);var e=this[l];"function"==typeof e.preventDefault&&e.preventDefault()}},writable:!0,configurable:!0}),defaultPrevented:Object.freeze({get:function(){return this[i]},enumerable:!0,configurable:!0})});t.exports.STOP_IMMEDIATE_PROPAGATION_FLAG=o,t.exports.PASSIVE_LISTENER_FLAG=a,t.exports.createEventWrapper=function(e,t){var n="number"==typeof e.timeStamp?e.timeStamp:Date.now(),r={type:{value:e.type,enumerable:!0},target:{value:t,enumerable:!0},currentTarget:{value:t,enumerable:!0},eventPhase:{value:2,enumerable:!0},bubbles:{value:Boolean(e.bubbles),enumerable:!0},cancelable:{value:Boolean(e.cancelable),enumerable:!0},timeStamp:{value:n,enumerable:!0},isTrusted:{value:!1,enumerable:!0}};return r[o]={value:!1,writable:!0},r[i]={value:!1,writable:!0},r[a]={value:!1,writable:!0},r[l]={value:e},"undefined"!=typeof e.detail&&(r.detail={value:e.detail,enumerable:!0}),Object.create(Object.create(e,u),r)}},{"./commons":1}]},{},[3])(3)});

@@ -6,5 +6,4 @@ /**

*/
"use strict"
"use strict";
/**

@@ -14,12 +13,24 @@ * Creates a unique key.

* @param {string} name - A name to create.
* @returns {symbol|string}
* @returns {symbol|string} Generated unique key.
* @private
*/
var createUniqueKey = exports.createUniqueKey = (typeof Symbol !== "undefined" ?
Symbol :
function createUniqueKey(name) {
return "[[" + name + "_" + Math.random().toFixed(8).slice(2) + "]]";
});
var createUniqueKey = module.exports.createUniqueKey = (
typeof Symbol !== "undefined" ? Symbol : //eslint-disable-line no-undef
/* otherwise */ function createUniqueKey(name) {
return "[[" + name + "_" + Math.random().toFixed(8).slice(2) + "]]"
}
)
/**
* Checks whether the given value is a non-null object or not.
*
* @param {any} x - The value to be check.
* @returns {boolean} `true` if the value is a non-null object.
* @private
*/
var isObject = module.exports.isObject = function isObject(x) {
return typeof x === "object" && x !== null
}
/**
* The key of listeners.

@@ -30,3 +41,3 @@ *

*/
exports.LISTENERS = createUniqueKey("listeners");
module.exports.LISTENERS = createUniqueKey("listeners")

@@ -39,3 +50,3 @@ /**

*/
exports.CAPTURE = 1;
module.exports.CAPTURE = 1

@@ -48,3 +59,3 @@ /**

*/
exports.BUBBLE = 2;
module.exports.BUBBLE = 2

@@ -57,3 +68,3 @@ /**

*/
exports.ATTRIBUTE = 3;
module.exports.ATTRIBUTE = 3

@@ -73,6 +84,17 @@ /**

* @param {number} kind - The kind of the listener.
* @param {object} [options] - The option object.
* @param {boolean} [options.once] - The flag to remove the listener at the first call.
* @param {boolean} [options.passive] - The flag to ignore `event.preventDefault` method.
* @returns {ListenerNode} The created listener node.
*/
exports.newNode = function newNode(listener, kind) {
return {listener: listener, kind: kind, next: null};
};
module.exports.newNode = function newNode(listener, kind, options) {
var obj = isObject(options)
return {
listener: listener,
kind: kind,
once: obj && Boolean(options.once),
passive: obj && Boolean(options.passive),
next: null,
}
}

@@ -6,5 +6,4 @@ /**

*/
"use strict"
"use strict";
//-----------------------------------------------------------------------------

@@ -14,6 +13,6 @@ // Requirements

var Commons = require("./commons");
var LISTENERS = Commons.LISTENERS;
var ATTRIBUTE = Commons.ATTRIBUTE;
var newNode = Commons.newNode;
var Commons = require("./commons")
var LISTENERS = Commons.LISTENERS
var ATTRIBUTE = Commons.ATTRIBUTE
var newNode = Commons.newNode

@@ -32,10 +31,10 @@ //-----------------------------------------------------------------------------

function getAttributeListener(eventTarget, type) {
var node = eventTarget[LISTENERS][type];
var node = eventTarget[LISTENERS][type]
while (node != null) {
if (node.kind === ATTRIBUTE) {
return node.listener;
return node.listener
}
node = node.next;
node = node.next
}
return null;
return null
}

@@ -53,7 +52,7 @@

if (typeof listener !== "function" && typeof listener !== "object") {
listener = null; // eslint-disable-line no-param-reassign
listener = null // eslint-disable-line no-param-reassign
}
var prev = null;
var node = eventTarget[LISTENERS][type];
var prev = null
var node = eventTarget[LISTENERS][type]
while (node != null) {

@@ -63,13 +62,13 @@ if (node.kind === ATTRIBUTE) {

if (prev == null) {
eventTarget[LISTENERS][type] = node.next;
eventTarget[LISTENERS][type] = node.next
}
else {
prev.next = node.next;
prev.next = node.next
}
}
else {
prev = node;
prev = node
}
node = node.next;
node = node.next
}

@@ -80,6 +79,6 @@

if (prev == null) {
eventTarget[LISTENERS][type] = newNode(listener, ATTRIBUTE);
eventTarget[LISTENERS][type] = newNode(listener, ATTRIBUTE)
}
else {
prev.next = newNode(listener, ATTRIBUTE);
prev.next = newNode(listener, ATTRIBUTE)
}

@@ -100,5 +99,9 @@ }

*/
exports.defineCustomEventTarget = function(EventTargetBase, types) {
module.exports.defineCustomEventTarget = function(EventTargetBase, types) {
/**
* The constructor of custom event target.
* @constructor
*/
function EventTarget() {
EventTargetBase.call(this);
EventTargetBase.call(this)
}

@@ -110,18 +113,22 @@

configurable: true,
writable: true
}
};
writable: true,
},
}
types.forEach(function(type) {
descripter["on" + type] = {
get: function() { return getAttributeListener(this, type); },
set: function(listener) { setAttributeListener(this, type, listener); },
get: function() {
return getAttributeListener(this, type)
},
set: function(listener) {
setAttributeListener(this, type, listener)
},
configurable: true,
enumerable: true
};
});
enumerable: true,
}
})
EventTarget.prototype = Object.create(EventTargetBase.prototype, descripter);
EventTarget.prototype = Object.create(EventTargetBase.prototype, descripter)
return EventTarget;
};
return EventTarget
}

@@ -6,25 +6,27 @@ /**

*/
"use strict"
"use strict";
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Requirements
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------
var Commons = require("./commons");
var CustomEventTarget = require("./custom-event-target");
var EventWrapper = require("./event-wrapper");
var LISTENERS = Commons.LISTENERS;
var CAPTURE = Commons.CAPTURE;
var BUBBLE = Commons.BUBBLE;
var ATTRIBUTE = Commons.ATTRIBUTE;
var newNode = Commons.newNode;
var defineCustomEventTarget = CustomEventTarget.defineCustomEventTarget;
var createEventWrapper = EventWrapper.createEventWrapper;
var STOP_IMMEDIATE_PROPAGATION_FLAG =
EventWrapper.STOP_IMMEDIATE_PROPAGATION_FLAG;
/*globals window */
//-----------------------------------------------------------------------------
var Commons = require("./commons")
var CustomEventTarget = require("./custom-event-target")
var EventWrapper = require("./event-wrapper")
var isObject = Commons.isObject
var LISTENERS = Commons.LISTENERS
var CAPTURE = Commons.CAPTURE
var BUBBLE = Commons.BUBBLE
var ATTRIBUTE = Commons.ATTRIBUTE
var newNode = Commons.newNode
var defineCustomEventTarget = CustomEventTarget.defineCustomEventTarget
var createEventWrapper = EventWrapper.createEventWrapper
var STOP_IMMEDIATE_PROPAGATION_FLAG = EventWrapper.STOP_IMMEDIATE_PROPAGATION_FLAG
var PASSIVE_LISTENER_FLAG = EventWrapper.PASSIVE_LISTENER_FLAG
//------------------------------------------------------------------------------
// Constants
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------

@@ -40,7 +42,7 @@ /**

typeof window.EventTarget !== "undefined"
);
)
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Public Interface
//-----------------------------------------------------------------------------
//------------------------------------------------------------------------------

@@ -64,11 +66,11 @@ /**

// }
Object.defineProperty(this, LISTENERS, {value: Object.create(null)});
Object.defineProperty(this, LISTENERS, {value: Object.create(null)})
}
else if (arguments.length === 1 && Array.isArray(arguments[0])) {
return defineCustomEventTarget(EventTarget, arguments[0]);
return defineCustomEventTarget(EventTarget, arguments[0])
}
else if (arguments.length > 0) {
var types = Array(arguments.length);
var types = Array(arguments.length)
for (var i = 0; i < arguments.length; ++i) {
types[i] = arguments[i];
types[i] = arguments[i]
}

@@ -81,8 +83,8 @@

// }
return defineCustomEventTarget(EventTarget, types);
return defineCustomEventTarget(EventTarget, types)
}
else {
throw new TypeError("Cannot call a class as a function");
throw new TypeError("Cannot call a class as a function")
}
};
}

@@ -95,66 +97,68 @@ EventTarget.prototype = Object.create(

writable: true,
configurable: true
configurable: true,
},
addEventListener: {
value: function addEventListener(type, listener, capture) {
value: function addEventListener(type, listener, options) {
if (listener == null) {
return false;
return false
}
if (typeof listener !== "function" && typeof listener !== "object") {
throw new TypeError("\"listener\" is not an object.");
throw new TypeError("\"listener\" is not an object.")
}
var kind = (capture ? CAPTURE : BUBBLE);
var node = this[LISTENERS][type];
var capture = isObject(options) ? Boolean(options.capture) : Boolean(options)
var kind = (capture ? CAPTURE : BUBBLE)
var node = this[LISTENERS][type]
if (node == null) {
this[LISTENERS][type] = newNode(listener, kind);
return true;
this[LISTENERS][type] = newNode(listener, kind, options)
return true
}
var prev = null;
var prev = null
while (node != null) {
if (node.listener === listener && node.kind === kind) {
// Should ignore a duplicated listener.
return false;
return false
}
prev = node;
node = node.next;
prev = node
node = node.next
}
prev.next = newNode(listener, kind);
return true;
prev.next = newNode(listener, kind, options)
return true
},
configurable: true,
writable: true
writable: true,
},
removeEventListener: {
value: function removeEventListener(type, listener, capture) {
value: function removeEventListener(type, listener, options) {
if (listener == null) {
return false;
return false
}
var kind = (capture ? CAPTURE : BUBBLE);
var prev = null;
var node = this[LISTENERS][type];
var capture = isObject(options) ? Boolean(options.capture) : Boolean(options)
var kind = (capture ? CAPTURE : BUBBLE)
var prev = null
var node = this[LISTENERS][type]
while (node != null) {
if (node.listener === listener && node.kind === kind) {
if (prev == null) {
this[LISTENERS][type] = node.next;
this[LISTENERS][type] = node.next
}
else {
prev.next = node.next;
prev.next = node.next
}
return true;
return true
}
prev = node;
node = node.next;
prev = node
node = node.next
}
return false;
return false
},
configurable: true,
writable: true
writable: true,
},

@@ -165,32 +169,51 @@

// If listeners aren't registered, terminate.
var node = this[LISTENERS][event.type];
var type = event.type
var node = this[LISTENERS][type]
if (node == null) {
return true;
return true
}
// Since we cannot rewrite several properties, so wrap object.
var wrapped = createEventWrapper(event, this);
var wrapped = createEventWrapper(event, this)
// This doesn't process capturing phase and bubbling phase.
// This isn't participating in a tree.
var prev = null
while (node != null) {
// Remove this listener if it's once
if (node.once) {
if (prev == null) {
this[LISTENERS][type] = node.next
}
else {
prev.next = node.next
}
}
else {
prev = node
}
// Call this listener
wrapped[PASSIVE_LISTENER_FLAG] = node.passive
if (typeof node.listener === "function") {
node.listener.call(this, wrapped);
node.listener.call(this, wrapped)
}
else if (node.kind !== ATTRIBUTE && typeof node.listener.handleEvent === "function") {
node.listener.handleEvent(wrapped);
node.listener.handleEvent(wrapped)
}
// Break if `event.stopImmediatePropagation` was called.
if (wrapped[STOP_IMMEDIATE_PROPAGATION_FLAG]) {
break;
break
}
node = node.next;
node = node.next
}
return !wrapped.defaultPrevented;
return !wrapped.defaultPrevented
},
configurable: true,
writable: true
}
writable: true,
},
}
);
)

@@ -6,5 +6,4 @@ /**

*/
"use strict"
"use strict";
//-----------------------------------------------------------------------------

@@ -14,3 +13,3 @@ // Requirements

var createUniqueKey = require("./commons").createUniqueKey;
var createUniqueKey = require("./commons").createUniqueKey

@@ -28,3 +27,3 @@ //-----------------------------------------------------------------------------

var STOP_IMMEDIATE_PROPAGATION_FLAG =
createUniqueKey("stop_immediate_propagation_flag");
createUniqueKey("stop_immediate_propagation_flag")

@@ -37,5 +36,13 @@ /**

*/
var CANCELED_FLAG = createUniqueKey("canceled_flag");
var CANCELED_FLAG = createUniqueKey("canceled_flag")
/**
* The key of the flag that it cannot use `preventDefault` method.
*
* @type {symbol|string}
* @private
*/
var PASSIVE_LISTENER_FLAG = createUniqueKey("passive_listener_flag")
/**
* The key of the original event object.

@@ -46,3 +53,3 @@ *

*/
var ORIGINAL_EVENT = createUniqueKey("original_event");
var ORIGINAL_EVENT = createUniqueKey("original_event")

@@ -58,9 +65,9 @@ /**

value: function stopPropagation() {
var e = this[ORIGINAL_EVENT];
var e = this[ORIGINAL_EVENT]
if (typeof e.stopPropagation === "function") {
e.stopPropagation();
e.stopPropagation()
}
},
writable: true,
configurable: true
configurable: true,
}),

@@ -70,11 +77,11 @@

value: function stopImmediatePropagation() {
this[STOP_IMMEDIATE_PROPAGATION_FLAG] = true;
this[STOP_IMMEDIATE_PROPAGATION_FLAG] = true
var e = this[ORIGINAL_EVENT];
var e = this[ORIGINAL_EVENT]
if (typeof e.stopImmediatePropagation === "function") {
e.stopImmediatePropagation();
e.stopImmediatePropagation()
}
},
writable: true,
configurable: true
configurable: true,
}),

@@ -84,21 +91,26 @@

value: function preventDefault() {
if (this[PASSIVE_LISTENER_FLAG]) {
return
}
if (this.cancelable === true) {
this[CANCELED_FLAG] = true;
this[CANCELED_FLAG] = true
}
var e = this[ORIGINAL_EVENT];
var e = this[ORIGINAL_EVENT]
if (typeof e.preventDefault === "function") {
e.preventDefault();
e.preventDefault()
}
},
writable: true,
configurable: true
configurable: true,
}),
defaultPrevented: Object.freeze({
get: function defaultPrevented() { return this[CANCELED_FLAG]; },
get: function defaultPrevented() {
return this[CANCELED_FLAG]
},
enumerable: true,
configurable: true
})
});
configurable: true,
}),
})

@@ -109,3 +121,4 @@ //-----------------------------------------------------------------------------

exports.STOP_IMMEDIATE_PROPAGATION_FLAG = STOP_IMMEDIATE_PROPAGATION_FLAG;
module.exports.STOP_IMMEDIATE_PROPAGATION_FLAG = STOP_IMMEDIATE_PROPAGATION_FLAG
module.exports.PASSIVE_LISTENER_FLAG = PASSIVE_LISTENER_FLAG

@@ -123,6 +136,6 @@ /**

*/
exports.createEventWrapper = function createEventWrapper(event, eventTarget) {
module.exports.createEventWrapper = function createEventWrapper(event, eventTarget) {
var timeStamp = (
typeof event.timeStamp === "number" ? event.timeStamp : Date.now()
);
)
var propertyDefinition = {

@@ -136,11 +149,12 @@ type: {value: event.type, enumerable: true},

timeStamp: {value: timeStamp, enumerable: true},
isTrusted: {value: false, enumerable: true}
};
propertyDefinition[STOP_IMMEDIATE_PROPAGATION_FLAG] = {value: false, writable: true};
propertyDefinition[CANCELED_FLAG] = {value: false, writable: true};
propertyDefinition[ORIGINAL_EVENT] = {value: event};
isTrusted: {value: false, enumerable: true},
}
propertyDefinition[STOP_IMMEDIATE_PROPAGATION_FLAG] = {value: false, writable: true}
propertyDefinition[CANCELED_FLAG] = {value: false, writable: true}
propertyDefinition[PASSIVE_LISTENER_FLAG] = {value: false, writable: true}
propertyDefinition[ORIGINAL_EVENT] = {value: event}
// For CustomEvent.
if (typeof event.detail !== "undefined") {
propertyDefinition.detail = {value: event.detail, enumerable: true};
propertyDefinition.detail = {value: event.detail, enumerable: true}
}

@@ -151,3 +165,3 @@

propertyDefinition
);
};
)
}
{
"name": "event-target-shim",
"version": "1.1.1",
"version": "2.0.0",
"description": "An implementation of W3C EventTarget interface.",

@@ -11,40 +11,41 @@ "main": "lib/event-target.js",

"scripts": {
"preversion": "npm run build",
"preversion": "npm test",
"version": "npm run build && git add dist/*",
"postversion": "git push && git push --tags",
"clean": "rimraf coverage dist",
"lint": "eslint lib test",
"build": "npm-run-all clean lint test build:*",
"clean": "rimraf coverage",
"lint": "if-node-version \">=4\" eslint lib test",
"build": "rimraf dist && run-s build:*",
"build:dist": "mkdirp dist && browserify lib/event-target.js --standalone event-target-shim > dist/event-target-shim.js",
"build:dist-min": "uglifyjs dist/event-target-shim.js --compress --mangle > dist/event-target-shim.min.js",
"test": "npm-run-all clean lint && karma start karma.conf.js --single-run",
"test": "run-s clean lint && karma start karma.conf.js --single-run",
"watch": "karma start karma.conf.js --watch",
"travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- test/**/*.js --require scripts/power-assert",
"coveralls": "cat ./coverage/lcov.info | coveralls"
"codecov": "codecov"
},
"devDependencies": {
"browserify": "^12.0.1",
"browserify-istanbul": "^0.2.1",
"coveralls": "^2.11.4",
"eslint": "^1.10.2",
"eslint-config-mysticatea": "^1.9.0",
"eslint-plugin-mysticatea": "^1.0.3",
"eslint-plugin-node": "^0.2.0",
"browserify": "^13.1.1",
"browserify-istanbul": "^2.0.0",
"codecov": "^1.0.1",
"eslint": "^3.11.0",
"eslint-config-mysticatea": "^7.0.1",
"espower-loader": "^1.0.0",
"espowerify": "^1.0.0",
"if-node-version": "^1.1.1",
"istanbul": "^0.4.1",
"karma": "^0.13.15",
"karma-browserify": "^4.2.1",
"karma-chrome-launcher": "^0.2.1",
"karma-coverage": "^0.5.3",
"karma-firefox-launcher": "^0.1.6",
"karma-growl-reporter": "^0.1.1",
"karma-ie-launcher": "^0.2.0",
"karma-mocha": "^0.2.1",
"karma": "^1.3.0",
"karma-browserify": "^5.1.0",
"karma-chrome-launcher": "^2.0.0",
"karma-coverage": "^1.1.1",
"karma-firefox-launcher": "^1.0.0",
"karma-growl-reporter": "^1.0.0",
"karma-ie-launcher": "^1.0.0",
"karma-mocha": "^1.3.0",
"mkdirp": "^0.5.1",
"mocha": "^2.2.5",
"npm-run-all": "^1.2.5",
"mocha": "^3.2.0",
"npm-run-all": "^3.1.1",
"power-assert": "^1.2.0",
"rimraf": "^2.3.4",
"spy": "^0.1.3",
"uglify-js": "^2.6.1"
"uglify-js": "^2.6.1",
"watchify": "^3.7.0"
},

@@ -51,0 +52,0 @@ "repository": {

# event-target-shim
[![npm version](https://img.shields.io/npm/v/event-target-shim.svg)](https://www.npmjs.com/package/event-target-shim)
[![Downloads/month](https://img.shields.io/npm/dm/event-target-shim.svg)](http://www.npmtrends.com/event-target-shim)
[![Build Status](https://travis-ci.org/mysticatea/event-target-shim.svg?branch=master)](https://travis-ci.org/mysticatea/event-target-shim)
[![Coverage Status](https://coveralls.io/repos/mysticatea/event-target-shim/badge.svg?branch=master&service=github)](https://coveralls.io/github/mysticatea/event-target-shim?branch=master)
[![Coverage Status](https://codecov.io/gh/mysticatea/event-target-shim/branch/master/graph/badge.svg)](https://codecov.io/gh/mysticatea/event-target-shim)
[![Dependency Status](https://david-dm.org/mysticatea/event-target-shim.svg)](https://david-dm.org/mysticatea/event-target-shim)
[![devDependency Status](https://david-dm.org/mysticatea/event-target-shim/dev-status.svg)](https://david-dm.org/mysticatea/event-target-shim#info=devDependencies)<br>
[![npm version](https://img.shields.io/npm/v/event-target-shim.svg)](https://www.npmjs.com/package/event-target-shim)
[![Downloads/month](https://img.shields.io/npm/dm/event-target-shim.svg)](https://www.npmjs.com/package/event-target-shim)
An implementation of [W3C EventTarget interface](http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget), plus few extensions.
An implementation of [WHATWG EventTarget interface](https://dom.spec.whatwg.org/#interface-eventtarget), plus few extensions.

@@ -158,3 +157,3 @@ - This provides `EventTarget` constructor that can inherit for your custom object.

```js
require(["https://cdn.rawgit.com/mysticatea/event-target-shim/v1.1.0/dist/event-target-shim.min.js"], function(EventTarget) {
require(["https://cdn.rawgit.com/mysticatea/event-target-shim/v2.0.0/dist/event-target-shim.min.js"], function(EventTarget) {
//...

@@ -169,5 +168,5 @@ });

constructor();
addEventListener(type: string, listener?: (event: Event) => void, capture: boolean = false): void;
removeEventListener(type: string, listener?: (event: Event) => void, capture: boolean = false): void;
dispatchEvent(event: Event | {type: string, cancelable?: boolean}): void;
addEventListener(type: string, listener?: (event: Event) => void, options?: boolean | AddEventListenerOptions): void;
removeEventListener(type: string, listener?: (event: Event) => void, options?: boolean | EventListenerOptions): void;
dispatchEvent(event: Event | EventLike): boolean;
}

@@ -178,2 +177,17 @@

declare function EventTarget(types: string[]): EventTarget;
// Options
interface EventListenerOptions {
capture?: boolean;
}
interface AddEventListenerOptions extends EventListenerOptions {
once?: boolean;
passive?: boolean;
}
// Non-standard.
interface EventLike {
type: string;
cancelable?: boolean;
}
```
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc