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

@voliware/eventsystem

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@voliware/eventsystem - npm Package Compare versions

Comparing version 1.0.5 to 1.0.6

100

lib/eventSystem.js

@@ -31,13 +31,17 @@ /**

let s = '';
let randomchar = () => {
let n = Math.floor(Math.random() * 62);
if (n < 10) {
return n;
}
if (n < 36) return String.fromCharCode(n + 55);
const randomchar = () => {
const n = Math.floor(Math.random() * 62);
if (n < 10) {
return n;
}
if (n < 36) {
return String.fromCharCode(n + 55);
}
return String.fromCharCode(n + 61);
}
while (s.length < length) {
s += randomchar();
}
return s;

@@ -53,3 +57,3 @@ }

getHandlersCount(event){
let event_object = this.events[event];
const event_object = this.events[event];
if(!event_object){

@@ -87,18 +91,18 @@ return 0;

}
let event_array = event.split('.');
const event_array = event.split('.');
let last_object = this.events;
let events_object = this.events;
for (let i = 0; i < event_array.length; i++) {
let current_event_namespace = event_array[i];
if (!last_object[current_event_namespace]) {
last_object[current_event_namespace] = {};
if (!events_object[current_event_namespace]) {
events_object[current_event_namespace] = {};
}
if (i === event_array.length - 1) {
if (!Array.isArray(last_object[current_event_namespace].handlers)) {
last_object[current_event_namespace].handlers = [];
if (!Array.isArray(events_object[current_event_namespace].handlers)) {
events_object[current_event_namespace].handlers = [];
}
last_object[current_event_namespace].handlers.push(callback);
events_object[current_event_namespace].handlers.push(callback);
}
else {
last_object = last_object[current_event_namespace];
events_object = events_object[current_event_namespace];
}

@@ -114,7 +118,6 @@ }

one(event, callback) {
let self = this;
let new_event_name = event + "." + this.generateRandomString(16);
let newCallback = function(data) {
const new_event_name = event + "." + this.generateRandomString(16);
const newCallback = (data) => {
callback(data);
self.off(new_event_name);
this.off(new_event_name);
}

@@ -129,25 +132,42 @@ this.on(new_event_name, newCallback);

* @param {String} event - An event such as click, or click.foo.bar
* @param {Function} [callback=null] - Callback to remove. If not found, removes
* all callbacks for the event.
* @param {boolean} [remove_all_child_handlers=true] - Whether to remove
* all child events
* all child events. Only applicable of callback is null.
*/
off(event, remove_all_child_handlers = true) {
off(event, callback = null, remove_all_child_handlers = true) {
if(typeof event !== "string"){
event = event + '';
}
let event_array = event.split('.');
const event_array = event.split('.');
let last_object = this.events;
let events_object = this.events;
for (let i = 0; i < event_array.length; i++) {
let current_event_namespace = event_array[i];
const current_event_namespace = event_array[i];
if (i === event_array.length - 1) {
if (remove_all_child_handlers) {
delete last_object[current_event_namespace];
} else {
delete last_object[current_event_namespace].handlers;
if (Object.keys(last_object[current_event_namespace]).length === 0) {
delete last_object[current_event_namespace];
// Remove a specific callback
if(callback){
const handlers = events_object[current_event_namespace].handlers;
for(let x = 0; x < handlers.length; x++){
if(handlers[x] === callback){
handlers.splice(x, 1);
}
}
}
} else {
last_object = last_object[current_event_namespace];
else {
// Remove all child handlers, ie if event is "click",
// then also remove "click.foo", "click.foo.bar", etc.
if (remove_all_child_handlers) {
delete events_object[current_event_namespace];
}
else {
delete events_object[current_event_namespace].handlers;
if (Object.keys(events_object[current_event_namespace]).length === 0) {
delete events_object[current_event_namespace];
}
}
}
}
else {
events_object = events_object[current_event_namespace];
}

@@ -167,10 +187,10 @@ }

}
let event_array = event.split('.');
let last_object = this.events;
const event_array = event.split('.');
let events_object = this.events;
for (let i = 0; i < event_array.length; i++) {
let current_event_namespace = event_array[i];
last_object = last_object[current_event_namespace];
events_object = events_object[current_event_namespace];
// Event does not exist
if(!last_object){
return this;
if(!events_object){
return;
}

@@ -180,3 +200,3 @@

let stack = [];
stack.push(last_object);
stack.push(events_object);
while(stack.length){

@@ -189,3 +209,4 @@ let obj = stack.pop();

}
} else {
}
else {
stack.push(obj[k]);

@@ -199,4 +220,5 @@ }

}
if(typeof module !== "undefined"){
module.exports = EventSystem;
}
{
"name": "@voliware/eventsystem",
"version": "1.0.5",
"version": "1.0.6",
"description": "An event system with on/off/emit functions",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -5,2 +5,4 @@ const Assert = require('assert');

const named_handler = () => {};
it('attaches a handler to an event', function() {

@@ -17,2 +19,12 @@ es.on('test', () => {});

it('attaches a named handler to an event', function() {
es.on('test', named_handler);
Assert.strictEqual(es.getHandlersCount('test'), 1);
});
it('detaches a named handler from an event', function() {
es.off('test', named_handler);
Assert.strictEqual(es.getHandlersCount('test'), 0);
});
it('attaches a namespaced handler to an event', function() {

@@ -38,2 +50,9 @@ es.on('test.a', () => {});

it('detaches only namespaced handlers from an event', function() {
es.on('test.a', () => {});
es.on('test.b', () => {});
es.off('test', null, false);
Assert.strictEqual(es.getHandlersCount('test'), 2);
});
it('handles an event many times', function() {

@@ -40,0 +59,0 @@ let v = 0;

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