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

evnty

Package Overview
Dependencies
Maintainers
1
Versions
420
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

evnty - npm Package Compare versions

Comparing version 0.7.5 to 0.8.0

14

build/index.d.ts

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

declare type MaybePromise<T> = Promise<T> | PromiseLike<T> | T;
export interface Unsubscribe {

@@ -11,3 +12,3 @@ (): void;

export interface Filter<T extends any[]> {
(...args: T): boolean;
(...args: T): MaybePromise<boolean>;
}

@@ -20,6 +21,14 @@ export interface Mapper<T extends any[], R> {

}
export declare type Listeners<T extends any[]> = Set<Listener<T>>;
export declare type Listeners<T extends any[]> = Listener<T>[];
declare class FunctionExt extends Function {
constructor(func: Function);
}
export interface Dismiss {
(): Promise<void> | void;
}
export declare class Dismiss extends FunctionExt {
constructor(dismiss: Unsubscribe);
while(process: () => MaybePromise<any>): Promise<void>;
after(count: number): Promise<() => void>;
}
export interface Event<T extends any[]> {

@@ -36,2 +45,3 @@ (...args: T): Promise<void> | void;

get size(): number;
lacks(listener: Listener<T>): boolean;
has(listener: Listener<T>): boolean;

@@ -38,0 +48,0 @@ off(listener: Listener<T>): void;

@@ -12,3 +12,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.Event = void 0;
exports.Event = exports.Dismiss = void 0;
class FunctionExt extends Function {

@@ -20,8 +20,29 @@ constructor(func) {

}
class Dismiss extends FunctionExt {
constructor(dismiss) {
super(dismiss);
}
while(process) {
return __awaiter(this, void 0, void 0, function* () {
yield process();
this();
});
}
after(count) {
return __awaiter(this, void 0, void 0, function* () {
return () => {
if (!count--) {
this();
}
};
});
}
}
exports.Dismiss = Dismiss;
function eventEmitter(listeners, ...args) {
return Promise.all([...listeners].map((listener) => listener(...args))).then(() => void 0);
return Promise.all(listeners.map((listener) => listener(...args))).then(() => void 0);
}
class Event extends FunctionExt {
constructor(dispose) {
const listeners = new Set();
const listeners = [];
const fn = eventEmitter.bind(null, listeners);

@@ -48,13 +69,21 @@ super(fn);

get size() {
return this.listeners.size;
return this.listeners.length;
}
lacks(listener) {
return this.listeners.indexOf(listener) === -1;
}
has(listener) {
return this.listeners.has(listener);
return !this.lacks(listener);
}
off(listener) {
this.listeners.delete(listener);
const index = this.listeners.indexOf(listener);
if (index !== -1) {
this.listeners.splice(index, 1);
}
}
on(listener) {
this.listeners.add(listener);
return () => this.off(listener);
if (this.lacks(listener)) {
this.listeners.push(listener);
}
return new Dismiss(() => this.off(listener));
}

@@ -69,3 +98,3 @@ once(listener) {

clear() {
this.listeners.clear();
this.listeners.splice(0);
}

@@ -72,0 +101,0 @@ toPromise() {

10

package.json
{
"name": "evnty",
"version": "0.7.5",
"version": "0.8.0",
"description": "0-Deps, simple, fast, for browser and node js anonymous event library",
"main": "build/index.js",
"types": "build/index.d.ts",
"files": [
"build",
"src/index.ts"
],
"scripts": {

@@ -11,3 +15,3 @@ "build": "rm -rf build && NODE_ENV=production tsc",

"test:cov": "COVERAGE=true jest",
"lint": "eslint .",
"lint": "eslint src",
"prepare": "husky install"

@@ -42,3 +46,3 @@ },

"husky": "^7.0.4",
"jest": "^27.5.1",
"jest": "27",
"prettier": "^2.6.2",

@@ -45,0 +49,0 @@ "pretty-quick": "^3.1.3",

@@ -11,28 +11,77 @@ # Evnty

## Table of Contents
- [Features](#features)
- [Browser Support](#browser-support)
- [Installing](#installing)
- [Examples](#examples)
- [Roadmap](#roadmap)
- [License](#license)
## Features
- Promises support
- Full-featured typeScript support
- Browser & Workers environment compatibility
- Performance eventemitter3/eventemitter2/event-emitter/events/native node/native browser
## Roadmap
- Namespaces/Wildcards
- Times To Listen (TTL)
- Subscribe/UnSubscribe
## Browser Support
| ![Chrome][chrome-image] | ![Firefox][firefox-image] | ![Safari][safari-image] | ![Opera][opera-image] | ![Edge][edge-image] |
| ----------------------- | ------------------------- | ----------------------- | --------------------- | ------------------- |
| Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ |
[chrome-image]: https://raw.github.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png?1
[firefox-image]: https://raw.github.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png?1
[safari-image]: https://raw.github.com/alrra/browser-logos/master/src/safari/safari_48x48.png?1
[opera-image]: https://raw.github.com/alrra/browser-logos/master/src/opera/opera_48x48.png?1
[edge-image]: https://raw.github.com/alrra/browser-logos/master/src/edge/edge_48x48.png?1
## Installing
Using yarn:
```bash
yarn add evnty
```
Using npm:
```bash
npm install evnty
```
## Interface
```typescript
declare type Unsubscribe = () => void;
declare type Listener = (...args: any[]) => void;
declare type Dispose = () => void;
declare type Filter = (...args: any[]) => boolean;
declare type Mapper = <T = any>(...args: any[]) => T;
declare type Reducer = <T = any>(value: any, ...args: any[]) => T;
type Unsubscribe = () => void;
type Listener = (...args: any[]) => void;
type Dispose = () => void;
type Filter = (...args: any[]) => boolean;
type Mapper = <T = any>(...args: any[]) => T;
type Reducer = <T = any>(value: any, ...args: any[]) => T;
declare class Event {
static merge(...events: Event[]): Event;
static interval(interval: number): Event;
class Event {
static merge(...events: Event[]): Event;
static interval(interval: number): Event;
readonly size: Number;
readonly size: Number;
constructor(dispose?: Dispose);
has(listener: Listener): boolean;
off(listener: Listener): void;
on(listener: Listener): Unsubscribe;
once(listener: Listener): Unsubscribe;
clear(): void;
toPromise(): Promise<any[]>;
filter(filter: Filter): Event;
map(mapper: Mapper): Event;
reduce(reducer: Reducer, init: any): Event;
constructor(dispose?: Dispose);
has(listener: Listener): boolean;
off(listener: Listener): void;
on(listener: Listener): Unsubscribe;
once(listener: Listener): Unsubscribe;
clear(): void;
toPromise(): Promise<any[]>;
filter(filter: Filter): Event;
map(mapper: Mapper): Event;
reduce(reducer: Reducer, init: any): Event;
dispose(): Dispose;
}

@@ -54,6 +103,4 @@ ```

function handleInput({ button, key }) {
function handleInput({ button, key }) {}
}
const inputEvent = Event.merge(clickEvent, keyPressEvent);

@@ -68,3 +115,2 @@ inputEvent.on(handleInput);

clickEvent({ button: 'right' });

@@ -82,2 +128,3 @@ clickEvent({ button: 'left' });

## License
License [Apache-2.0](http://www.apache.org/licenses/LICENSE-2.0)

@@ -84,0 +131,0 @@ Copyright (c) 2021-present Ivan Zakharchanka

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

type MaybePromise<T> = Promise<T> | PromiseLike<T> | T;
export interface Unsubscribe {

@@ -14,3 +16,3 @@ (): void;

export interface Filter<T extends any[]> {
(...args: T): boolean;
(...args: T): MaybePromise<boolean>;
}

@@ -26,3 +28,3 @@

export type Listeners<T extends any[]> = Set<Listener<T>>;
export type Listeners<T extends any[]> = Listener<T>[];

@@ -36,4 +38,25 @@ class FunctionExt extends Function {

export interface Dismiss {
(): Promise<void> | void;
}
export class Dismiss extends FunctionExt {
constructor(dismiss: Unsubscribe) {
super(dismiss);
}
async while(process: () => MaybePromise<any>) {
await process();
this();
}
async after(count: number) {
return () => {
if (!count--) {
this();
}
};
}
}
function eventEmitter<A extends any[]>(listeners: Listeners<A>, ...args: A) {
return Promise.all([...listeners].map((listener) => listener(...args))).then(() => void 0);
return Promise.all(listeners.map((listener) => listener(...args))).then(() => void 0);
}

@@ -66,3 +89,3 @@

constructor(dispose?: Dispose) {
const listeners = new Set<Listener<T>>();
const listeners: Listeners<T> = [];
const fn: (...args: T) => Promise<void> = eventEmitter.bind(null, listeners);

@@ -78,16 +101,25 @@ super(fn);

get size(): number {
return this.listeners.size;
return this.listeners.length;
}
lacks(listener: Listener<T>): boolean {
return this.listeners.indexOf(listener) === -1;
}
has(listener: Listener<T>): boolean {
return this.listeners.has(listener);
return !this.lacks(listener);
}
off(listener: Listener<T>): void {
this.listeners.delete(listener);
const index = this.listeners.indexOf(listener);
if (index !== -1) {
this.listeners.splice(index, 1);
}
}
on(listener: Listener<T>): Unsubscribe {
this.listeners.add(listener);
return () => this.off(listener);
if (this.lacks(listener)) {
this.listeners.push(listener);
}
return new Dismiss(() => this.off(listener));
}

@@ -104,3 +136,3 @@

clear() {
this.listeners.clear();
this.listeners.splice(0);
}

@@ -107,0 +139,0 @@

Sorry, the diff of this file is not supported yet

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