New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

chnl

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

chnl - npm Package Compare versions

Comparing version 1.1.1 to 1.2.0

types/general.d.ts

4

dist/channel.cjs.js

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

/* chnl v1.1.1 by Vitaliy Potapov @preserve */
"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?_assertThisInitialized(e):t}var Channel=function(){function t(e){_classCallCheck(this,t),this._listeners=[],this._mute=!1,this._accumulate=!1,this._accumulatedEvents=[],this._name=e||"",this._onListenerAdded=null,this._onFirstListenerAdded=null,this._onListenerRemoved=null,this._onLastListenerRemoved=null}return _createClass(t,[{key:"addListener",value:function(e,t){this._pushListener(e,t,!1)}},{key:"addOnceListener",value:function(e,t){this._pushListener(e,t,!0)}},{key:"removeListener",value:function(e,t){this._ensureFunction(e);var n=this._indexOfListener(e,t);0<=n&&this._spliceListener(n)}},{key:"removeAllListeners",value:function(){for(;this.hasListeners();)this._spliceListener(0)}},{key:"hasListener",value:function(e,t){return this._ensureFunction(e),0<=this._indexOfListener(e,t)}},{key:"hasListeners",value:function(){return 0<this._listeners.length}},{key:"dispatch",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];this._invokeListeners({args:t,async:!1})}},{key:"dispatchAsync",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];this._invokeListeners({args:t,async:!0})}},{key:"mute",value:function(e){var t=0<arguments.length&&void 0!==e?e:{};this._mute=!0,t.accumulate?this._accumulate=!0:(this._accumulate=!1,this._accumulatedEvents=[])}},{key:"unmute",value:function(){this._mute=!1,this._accumulate&&(this._dispatchAccumulated(),this._accumulate=!1)}},{key:"_invokeListeners",value:function(e){var t=this,n=0<arguments.length&&void 0!==e?e:{args:[],async:!1};this._mute?this._accumulate&&this._accumulatedEvents.push(n):this._listeners.slice().forEach(function(e){t._invokeListener(e,n),e.once&&t.removeListener(e.callback,e.context)})}},{key:"_invokeListener",value:function(e,t){t.async?setTimeout(function(){return e.callback.apply(e.context,t.args)},0):e.callback.apply(e.context,t.args)}},{key:"_ensureFunction",value:function(e){if("function"!=typeof e)throw new Error("Channel "+this._name+": listener is not a function")}},{key:"_dispatchInnerAddEvents",value:function(){var e,t;this._onListenerAdded&&(e=this._onListenerAdded).dispatch.apply(e,arguments);this._onFirstListenerAdded&&1===this._listeners.length&&(t=this._onFirstListenerAdded).dispatch.apply(t,arguments)}},{key:"_dispatchInnerRemoveEvents",value:function(){var e,t;this._onListenerRemoved&&(e=this._onListenerRemoved).dispatch.apply(e,arguments);this._onLastListenerRemoved&&0===this._listeners.length&&(t=this._onLastListenerRemoved).dispatch.apply(t,arguments)}},{key:"_indexOfListener",value:function(e,t){for(var n=0;n<this._listeners.length;n++){var i=this._listeners[n],s=i.callback===e,r=void 0===t&&void 0===i.context,o=t===i.context;if(s&&(r||o))return n}}},{key:"_dispatchAccumulated",value:function(){var t=this;this._accumulatedEvents.forEach(function(e){return t._invokeListeners(e)}),this._accumulatedEvents=[]}},{key:"_pushListener",value:function(e,t,n){this._ensureFunction(e),this._checkForDuplicates(e,t),this._listeners.push({callback:e,context:t,once:n}),this._dispatchInnerAddEvents(e,t,n)}},{key:"_checkForDuplicates",value:function(e,t){if(this.hasListener(e,t))throw new Error("Channel "+this._name+": duplicating listeners")}},{key:"_spliceListener",value:function(e){var t=this._listeners[e],n=t.callback,i=t.context,s=t.once;this._listeners.splice(e,1),this._dispatchInnerRemoveEvents(n,i,s)}},{key:"onListenerAdded",get:function(){return this._onListenerAdded||(this._onListenerAdded=new t("".concat(this._name,":onListenerAdded"))),this._onListenerAdded}},{key:"onFirstListenerAdded",get:function(){return this._onFirstListenerAdded||(this._onFirstListenerAdded=new t("".concat(this._name,":onFirstListenerAdded"))),this._onFirstListenerAdded}},{key:"onListenerRemoved",get:function(){return this._onListenerRemoved||(this._onListenerRemoved=new t("".concat(this._name,":onListenerRemoved"))),this._onListenerRemoved}},{key:"onLastListenerRemoved",get:function(){return this._onLastListenerRemoved||(this._onLastListenerRemoved=new t("".concat(this._name,":onLastListenerRemoved"))),this._onLastListenerRemoved}}]),t}(),EventEmitter=function(){function e(){_classCallCheck(this,e),this._channels=new Map}return _createClass(e,[{key:"addListener",value:function(e,t,n){this._getChannel(e).addListener(t,n)}},{key:"on",value:function(e,t,n){this.addListener(e,t,n)}},{key:"addOnceListener",value:function(e,t,n){this._getChannel(e).addOnceListener(t,n)}},{key:"once",value:function(e,t,n){this.addOnceListener(e,t,n)}},{key:"removeListener",value:function(e,t,n){this._getChannel(e).removeListener(t,n)}},{key:"off",value:function(e,t,n){this.removeListener(e,t,n)}},{key:"hasListener",value:function(e,t,n){return this._getChannel(e).hasListener(t,n)}},{key:"has",value:function(e,t,n){return this.hasListener(e,t,n)}},{key:"hasListeners",value:function(e){return this._getChannel(e).hasListeners()}},{key:"dispatch",value:function(e){for(var t,n=arguments.length,i=new Array(1<n?n-1:0),s=1;s<n;s++)i[s-1]=arguments[s];(t=this._getChannel(e)).dispatch.apply(t,i)}},{key:"emit",value:function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];this.dispatch.apply(this,[e].concat(n))}},{key:"_getChannel",value:function(e){return this._channels.has(e)||this._channels.set(e,new Channel(e)),this._channels.get(e)}}]),e}(),SubscriptionItem=function(){function t(e){_classCallCheck(this,t),this._params=e,this._isOn=!1,this._assertParams()}return _createClass(t,[{key:"on",value:function(){if(!this._isOn){var e=this._params.channel,t=e.addListener||e.addEventListener||e.on;this._applyMethod(t),this._isOn=!0}}},{key:"off",value:function(){if(this._isOn){var e=this._params.channel,t=e.removeListener||e.removeEventListener||e.off;this._applyMethod(t),this._isOn=!1}}},{key:"_applyMethod",value:function(e){var t=this._params,n=t.channel,i=t.event,s=t.listener,r=i?[i,s]:[s];e.apply(n,r)}},{key:"_assertParams",value:function(){var e=this._params,t=e.channel,n=e.event,i=e.listener;if(!t||"object"!==_typeof(t))throw new Error("Channel should be object");if(n&&"string"!=typeof n)throw new Error("Event should be string");if(!i||"function"!=typeof i)throw new Error("Listener should be function")}}]),t}(),Subscription=function(){function t(e){_classCallCheck(this,t),this._items=e.map(function(e){return new SubscriptionItem(e)})}return _createClass(t,[{key:"on",value:function(){return this._items.forEach(function(e){return e.on()}),this}},{key:"off",value:function(){return this._items.forEach(function(e){return e.off()}),this}}]),t}(),ReactSubscription=function(){function i(e,t){var n;return _classCallCheck(this,i),(n=_possibleConstructorReturn(this,_getPrototypeOf(i).call(this,t)))._overrideComponentCallback(e,"componentDidMount","on"),n._overrideComponentCallback(e,"componentWillUnmount","off"),n}return _inherits(i,Subscription),_createClass(i,[{key:"_overrideComponentCallback",value:function(i,e,s){var r=this,o=i[e];i[e]=function(){if(r[s](),"function"==typeof o){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return o.apply(i,t)}}}}]),i}(),chnl=Channel;chnl.EventEmitter=EventEmitter,chnl.Subscription=Subscription,chnl.ReactSubscription=ReactSubscription,module.exports=chnl;
/* chnl v1.2.0 by Vitaliy Potapov @preserve */
"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _createClass(e,t,n){return t&&_defineProperties(e.prototype,t),n&&_defineProperties(e,n),e}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?_assertThisInitialized(e):t}function _createSuper(r){var i=_isNativeReflectConstruct();return function(){var e,t=_getPrototypeOf(r);if(i){var n=_getPrototypeOf(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return _possibleConstructorReturn(this,e)}}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _iterableToArray(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var Channel=function(){function c(e){_classCallCheck(this,c),this._listeners=[],this._mute=!1,this._accumulate=!1,this._accumulatedEvents=[],this._name=e||"",this._onListenerAdded=null,this._onFirstListenerAdded=null,this._onListenerRemoved=null,this._onLastListenerRemoved=null}return _createClass(c,[{key:"addListener",value:function(e,t){this._pushListener(e,t,!1)}},{key:"addOnceListener",value:function(e,t){this._pushListener(e,t,!0)}},{key:"removeListener",value:function(e,t){this._ensureListener(e);var n=this._indexOfListener(e,t);0<=n&&this._spliceListener(n)}},{key:"removeAllListeners",value:function(){for(;this.hasListeners();)this._spliceListener(0)}},{key:"hasListener",value:function(e,t){return this._ensureListener(e),0<=this._indexOfListener(e,t)}},{key:"hasListeners",value:function(){return 0<this._listeners.length}},{key:"dispatch",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];this._invokeListeners({args:t,async:!1})}},{key:"dispatchAsync",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];this._invokeListeners({args:t,async:!0})}},{key:"mute",value:function(e){var t=0<arguments.length&&void 0!==e?e:{};this._mute=!0,t.accumulate?this._accumulate=!0:(this._accumulate=!1,this._accumulatedEvents=[])}},{key:"unmute",value:function(){this._mute=!1,this._accumulate&&(this._dispatchAccumulated(),this._accumulate=!1)}},{key:"_invokeListeners",value:function(e){var t=this,n=0<arguments.length&&void 0!==e?e:{args:[],async:!1};this._mute?this._accumulate&&this._accumulatedEvents.push(n):this._listeners.slice().forEach(function(e){t._invokeListener(e,n),e.once&&t.removeListener(e.callback,e.context)})}},{key:"_invokeListener",value:function(e,t){var n,r,i=e.callback instanceof c;t.async?i?(n=e.callback).dispatchAsync.apply(n,_toConsumableArray(t.args)):setTimeout(function(){return e.callback.apply(e.context,t.args)},0):i?(r=e.callback).dispatch.apply(r,_toConsumableArray(t.args)):e.callback.apply(e.context,t.args)}},{key:"_ensureListener",value:function(e){if(!c.isValidListener(e))throw new Error("Channel "+this._name+": listener is not a function and not a Channel")}},{key:"_dispatchInnerAddEvents",value:function(){var e,t;this._onListenerAdded&&(e=this._onListenerAdded).dispatch.apply(e,arguments);this._onFirstListenerAdded&&1===this._listeners.length&&(t=this._onFirstListenerAdded).dispatch.apply(t,arguments)}},{key:"_dispatchInnerRemoveEvents",value:function(){var e,t;this._onListenerRemoved&&(e=this._onListenerRemoved).dispatch.apply(e,arguments);this._onLastListenerRemoved&&0===this._listeners.length&&(t=this._onLastListenerRemoved).dispatch.apply(t,arguments)}},{key:"_indexOfListener",value:function(e,t){for(var n=0;n<this._listeners.length;n++){var r=this._listeners[n],i=r.callback===e,s=e instanceof c,o=void 0===t&&void 0===r.context,a=t===r.context;if(i&&(s||o||a))return n}}},{key:"_dispatchAccumulated",value:function(){var t=this;this._accumulatedEvents.forEach(function(e){return t._invokeListeners(e)}),this._accumulatedEvents=[]}},{key:"_pushListener",value:function(e,t,n){this._ensureListener(e),this._checkForDuplicates(e,t),this._listeners.push({callback:e,context:t,once:n}),this._dispatchInnerAddEvents(e,t,n)}},{key:"_checkForDuplicates",value:function(e,t){if(this.hasListener(e,t))throw new Error("Channel "+this._name+": duplicating listeners")}},{key:"_spliceListener",value:function(e){var t=this._listeners[e],n=t.callback,r=t.context,i=t.once;this._listeners.splice(e,1),this._dispatchInnerRemoveEvents(n,r,i)}},{key:"onListenerAdded",get:function(){return this._onListenerAdded||(this._onListenerAdded=new c("".concat(this._name,":onListenerAdded"))),this._onListenerAdded}},{key:"onFirstListenerAdded",get:function(){return this._onFirstListenerAdded||(this._onFirstListenerAdded=new c("".concat(this._name,":onFirstListenerAdded"))),this._onFirstListenerAdded}},{key:"onListenerRemoved",get:function(){return this._onListenerRemoved||(this._onListenerRemoved=new c("".concat(this._name,":onListenerRemoved"))),this._onListenerRemoved}},{key:"onLastListenerRemoved",get:function(){return this._onLastListenerRemoved||(this._onLastListenerRemoved=new c("".concat(this._name,":onLastListenerRemoved"))),this._onLastListenerRemoved}}],[{key:"isValidListener",value:function(e){return"function"==typeof e||e instanceof c}}]),c}(),EventEmitter=function(){function e(){_classCallCheck(this,e),this._channels=new Map}return _createClass(e,[{key:"addListener",value:function(e,t,n){this._getChannel(e).addListener(t,n)}},{key:"on",value:function(e,t,n){this.addListener(e,t,n)}},{key:"addOnceListener",value:function(e,t,n){this._getChannel(e).addOnceListener(t,n)}},{key:"once",value:function(e,t,n){this.addOnceListener(e,t,n)}},{key:"removeListener",value:function(e,t,n){this._getChannel(e).removeListener(t,n)}},{key:"off",value:function(e,t,n){this.removeListener(e,t,n)}},{key:"hasListener",value:function(e,t,n){return this._getChannel(e).hasListener(t,n)}},{key:"has",value:function(e,t,n){return this.hasListener(e,t,n)}},{key:"hasListeners",value:function(e){return this._getChannel(e).hasListeners()}},{key:"dispatch",value:function(e){for(var t,n=arguments.length,r=new Array(1<n?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];(t=this._getChannel(e)).dispatch.apply(t,r)}},{key:"emit",value:function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];this.dispatch.apply(this,[e].concat(n))}},{key:"_getChannel",value:function(e){return this._channels.has(e)||this._channels.set(e,new Channel(e)),this._channels.get(e)}}]),e}(),SubscriptionItem=function(){function t(e){_classCallCheck(this,t),this._params=e,this._isOn=!1,this._assertParams()}return _createClass(t,[{key:"on",value:function(){if(!this._isOn){var e=this._params.channel,t=e.addListener||e.addEventListener||e.on;this._applyMethod(t),this._isOn=!0}}},{key:"off",value:function(){if(this._isOn){var e=this._params.channel,t=e.removeListener||e.removeEventListener||e.off;this._applyMethod(t),this._isOn=!1}}},{key:"_applyMethod",value:function(e){var t=this._params,n=t.channel,r=t.event,i=t.listener,s=r?[r,i]:[i];e.apply(n,s)}},{key:"_assertParams",value:function(){var e=this._params,t=e.channel,n=e.event,r=e.listener;if(!t||"object"!==_typeof(t))throw new Error("Channel should be object");if(n&&"string"!=typeof n)throw new Error("Event should be string");if(!r||!Channel.isValidListener(r))throw new Error("Listener should be function or Channel")}}]),t}(),Subscription=function(){function t(e){_classCallCheck(this,t),this._items=e.map(function(e){return new SubscriptionItem(e)})}return _createClass(t,[{key:"on",value:function(){return this._items.forEach(function(e){return e.on()}),this}},{key:"off",value:function(){return this._items.forEach(function(e){return e.off()}),this}}]),t}(),ReactSubscription=function(){_inherits(i,Subscription);var r=_createSuper(i);function i(e,t){var n;return _classCallCheck(this,i),(n=r.call(this,t))._overrideComponentCallback(e,"componentDidMount","on"),n._overrideComponentCallback(e,"componentWillUnmount","off"),n}return _createClass(i,[{key:"_overrideComponentCallback",value:function(r,e,i){var s=this,o=r[e];r[e]=function(){if(s[i](),"function"==typeof o){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return o.apply(r,t)}}}}]),i}(),chnl=Channel;chnl.EventEmitter=EventEmitter,chnl.Subscription=Subscription,chnl.ReactSubscription=ReactSubscription,module.exports=chnl;
{
"name": "chnl",
"version": "1.1.1",
"version": "1.2.0",
"description": "Implementation of event channels compatible with Chrome extensions events API",

@@ -42,16 +42,16 @@ "main": "dist/channel.cjs.js",

"devDependencies": {
"@babel/core": "^7.7.7",
"@babel/preset-env": "^7.7.7",
"ava": "^2.4.0",
"coveralls": "^3.0.9",
"documentation": "^12.1.4",
"@babel/core": "^7.9.6",
"@babel/preset-env": "^7.9.6",
"ava": "^3.8.1",
"coveralls": "^3.1.0",
"documentation": "^12.3.0",
"eslint": "^6.8.0",
"eslint-plugin-ava": "^9.0.0",
"husky": "^3.1.0",
"lint-staged": "^9.5.0",
"rollup": "^1.27.14",
"eslint-plugin-ava": "^10.3.0",
"husky": "^4.2.5",
"lint-staged": "^10.2.2",
"rollup": "^2.8.0",
"rollup-plugin-analyzer": "^3.2.2",
"rollup-plugin-babel": "^4.3.3",
"rollup-plugin-babel": "^4.4.0",
"rollup-plugin-uglify": "^6.0.4",
"sinon": "^8.0.1"
"sinon": "^9.0.2"
},

@@ -58,0 +58,0 @@ "ava": {

@@ -30,2 +30,12 @@ /**

/**
* Check for the passed listener is valid.
*
* @param {*} listener
* @returns {Boolean}
*/
static isValidListener(listener) {
return typeof listener === 'function' || listener instanceof Channel;
}
/**
* Triggers when listener is added to channel.

@@ -79,4 +89,4 @@ *

/**
* Add listener for event
* @param {Function} callback
* Add listener for event.
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -89,4 +99,4 @@ */

/**
* Add once listener for event
* @param {Function} callback
* Add once listener for event.
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -99,8 +109,8 @@ */

/**
* Remove listener from event
* @param {Function} callback
* Remove listener from event.
* @param {Function|Channel} callback
* @param {Object} [context]
*/
removeListener(callback, context) {
this._ensureFunction(callback);
this._ensureListener(callback);
const index = this._indexOfListener(callback, context);

@@ -122,4 +132,4 @@ if (index >= 0) {

/**
* Is listener exist
* @param {Function} callback
* Is listener exist.
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -129,3 +139,3 @@ * @returns {Boolean}

hasListener(callback, context) {
this._ensureFunction(callback);
this._ensureListener(callback);
return this._indexOfListener(callback, context) >= 0;

@@ -135,3 +145,3 @@ }

/**
* Are there any listeners
* Are there any listeners.
* @returns {Boolean}

@@ -144,3 +154,3 @@ */

/**
* Call all listeners with specified params
* Call all listeners with specified params.
*/

@@ -152,3 +162,3 @@ dispatch(...args) {

/**
* Call all listeners with specified params asynchronously
* Call all listeners with specified params asynchronously.
*/

@@ -160,3 +170,3 @@ dispatchAsync(...args) {

/**
* Mute channel
* Mute channel.
* @param {Object} [options]

@@ -176,3 +186,3 @@ * @param {Boolean} [options.accumulate] accumulate events and call listeners after .unmute()

/**
* Unmute channel
* Unmute channel.
*/

@@ -215,6 +225,15 @@ unmute() {

_invokeListener(listener, options) {
const isListenerChannel = listener.callback instanceof Channel;
if (options.async) {
setTimeout(() => listener.callback.apply(listener.context, options.args), 0);
if (isListenerChannel) {
listener.callback.dispatchAsync(...options.args);
} else {
setTimeout(() => listener.callback.apply(listener.context, options.args), 0);
}
} else {
listener.callback.apply(listener.context, options.args);
if (isListenerChannel) {
listener.callback.dispatch(...options.args);
} else {
listener.callback.apply(listener.context, options.args);
}
}

@@ -224,8 +243,9 @@ }

/**
* Ensure function
* @param {Function} callback
* Ensure listener.
* @param {Function|Channel} listener
* @private
*/
_ensureFunction(callback) {
if (typeof callback !== 'function') {
throw new Error('Channel ' + this._name + ': listener is not a function');
_ensureListener(listener) {
if (!Channel.isValidListener(listener)) {
throw new Error('Channel ' + this._name + ': listener is not a function and not a Channel');
}

@@ -235,3 +255,3 @@ }

/**
* Dispatch inner events when listener is added
* Dispatch inner events when listener is added.
* @private

@@ -249,3 +269,3 @@ */

/**
* Dispatch inner events when listener is removed
* Dispatch inner events when listener is removed.
* @private

@@ -263,4 +283,4 @@ */

/**
* Find listener index
* @param {Function} callback
* Find listener index.
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -273,5 +293,6 @@ * @private

const equalCallbacks = listener.callback === callback;
const isListenerChannel = callback instanceof Channel;
const emptyContexts = context === undefined && listener.context === undefined;
const equalContexts = context === listener.context;
if (equalCallbacks && (emptyContexts || equalContexts)) {
if (equalCallbacks && (isListenerChannel || emptyContexts || equalContexts)) {
return i;

@@ -283,3 +304,3 @@ }

/**
* Dispatch accumulated events
* Dispatch accumulated events.
* @private

@@ -293,12 +314,13 @@ */

/**
* Pushes listener
* @param {Function} callback
* Pushes listener.
* @param {Function|Channel} listener
* @param {Object} context
* @param {Boolean} once
* @private
*/
_pushListener(callback, context, once) {
this._ensureFunction(callback);
this._checkForDuplicates(callback, context);
this._listeners.push({callback, context, once});
this._dispatchInnerAddEvents(callback, context, once);
_pushListener(listener, context, once) {
this._ensureListener(listener);
this._checkForDuplicates(listener, context);
this._listeners.push({callback: listener, context, once});
this._dispatchInnerAddEvents(listener, context, once);
}

@@ -308,7 +330,7 @@

* Check for listeners duplicates
* @param {Function} callback
* @param {Function|Channel} listener
* @param {Object} context
*/
_checkForDuplicates(callback, context) {
if (this.hasListener(callback, context)) {
_checkForDuplicates(listener, context) {
if (this.hasListener(listener, context)) {
throw new Error('Channel ' + this._name + ': duplicating listeners');

@@ -319,4 +341,5 @@ }

/**
* Splice listener under index
* Splice listener under index.
* @param {Number} index
* @private
*/

@@ -323,0 +346,0 @@ _spliceListener(index) {

@@ -26,3 +26,3 @@ import Channel from './channel';

* @param {String} event
* @param {Function} callback
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -38,3 +38,3 @@ */

* @param {String} event
* @param {Function} callback
* @param {Function|Channel} callback
* @param {Object} [context]

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

* @param {String} event
* @param {Function} callback
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -62,3 +62,3 @@ */

* @param {String} event
* @param {Function} callback
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -74,3 +74,3 @@ */

* @param {String} event
* @param {Function} callback
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -86,3 +86,3 @@ */

* @param {String} event
* @param {Function} callback
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -98,3 +98,3 @@ */

* @param {String} event
* @param {Function} callback
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -111,3 +111,3 @@ * @returns {Boolean}

* @param {String} event
* @param {Function} callback
* @param {Function|Channel} callback
* @param {Object} [context]

@@ -114,0 +114,0 @@ * @returns {Boolean}

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

import Channel from './channel';
/**

@@ -12,3 +14,3 @@ * Subscription item

* @param {String} [params.event]
* @param {Function} params.listener
* @param {Function|Channel} params.listener
*/

@@ -59,6 +61,6 @@ constructor(params) {

}
if (!listener || typeof listener !== 'function') {
throw new Error('Listener should be function');
if (!listener || !Channel.isValidListener(listener)) {
throw new Error('Listener should be function or Channel');
}
}
}

@@ -30,3 +30,3 @@ import SubscriptionItem from './subscription-item';

*
* @returns {Subscription}
* @returns {this}
*/

@@ -41,3 +41,3 @@ on() {

*
* @returns {Subscription}
* @returns {this}
*/

@@ -44,0 +44,0 @@ off() {

@@ -0,4 +1,5 @@

import {Listener} from "./general";
type ChannelMethod = (callback: (...args: any[]) => any, context?: any) => void;
type ChannelBooleanMethod = (callback: (...args: any[]) => any, context?: any) => boolean;
type ChannelMethod = (callback: Listener, context?: any) => void;
type ChannelBooleanMethod = (callback: Listener, context?: any) => boolean;

@@ -5,0 +6,0 @@ export = Channel;

@@ -0,4 +1,6 @@

import Channel from './channel';
import {Listener} from './general';
type EventEmitterMethod = (event: string, callback: (...args: any[]) => any, context?: any) => void;
type EventEmitterBooleanMethod = (event: string, callback: (...args: any[]) => any, context?: any) => boolean;
type EventEmitterMethod = (event: string, callback: Listener, context?: any) => void;
type EventEmitterBooleanMethod = (event: string, callback: Listener, context?: any) => boolean;

@@ -5,0 +7,0 @@ export = EventEmitter;

import Subscription = require('./subscription');
import SubscriptionItem = require('./subscription-item');
import Subscription from './subscription';
import {SubscriptionItemParams} from './subscription-item';

@@ -8,3 +8,3 @@ export = ReactSubscription;

declare class ReactSubscription extends Subscription {
constructor(component: object, items: SubscriptionItem[]);
constructor(component: object, items: SubscriptionItemParams[]);
}
import Channel = require('./channel');
import {Listener} from './general';
export = SubscriptionItem;
interface SubscriptionItemParams {
export interface SubscriptionItemParams {
channel: Channel;
listener: (...args: any[]) => any;
listener: Listener;
event?: string;
}
declare class SubscriptionItem {
export class SubscriptionItem {
constructor(params: SubscriptionItemParams);

@@ -14,0 +13,0 @@ on(): void;

@@ -0,10 +1,9 @@

import {SubscriptionItemParams} from './subscription-item';
import SubscriptionItem = require('./subscription-item');
export = Subscription;
declare class Subscription {
constructor(items: SubscriptionItem[]);
on(): void;
off(): void;
constructor(items: SubscriptionItemParams[]);
on(): this;
off(): this;
}
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