Socket
Socket
Sign inDemoInstall

emittery

Package Overview
Dependencies
Maintainers
2
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

emittery - npm Package Compare versions

Comparing version 0.13.1 to 1.0.0

183

index.d.ts

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

/* eslint-disable no-redeclare */
/**

@@ -8,3 +6,3 @@ Emittery accepts strings, symbols, and numbers as event names.

*/
type EventName = PropertyKey;
export type EventName = PropertyKey;

@@ -18,3 +16,3 @@ // Helper type for turning the passed `EventData` type map into a list of string keys that don't require data alongside the event name when emitting. Uses the same trick that `Omit` does internally to filter keys by building a map of keys to keys we want to keep, and then accessing all the keys to return just the list of keys we want to keep.

declare const listenerRemoved: unique symbol;
type _OmnipresentEventData = {[listenerAdded]: Emittery.ListenerChangedData; [listenerRemoved]: Emittery.ListenerChangedData};
type OmnipresentEventData = {[listenerAdded]: ListenerChangedData; [listenerRemoved]: ListenerChangedData};

@@ -28,3 +26,3 @@ /**

*/
type DebugLogger<EventData, Name extends keyof EventData> = (type: string, debugName: string, eventName?: Name, eventData?: EventData[Name]) => void;
export type DebugLogger<EventData, Name extends keyof EventData> = (type: string, debugName: string, eventName?: Name, eventData?: EventData[Name]) => void;

@@ -34,3 +32,3 @@ /**

*/
interface DebugOptions<EventData> {
export type DebugOptions<EventData> = {
/**

@@ -43,3 +41,3 @@ Define a name for the instance of Emittery to use when outputting debug data.

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -68,3 +66,3 @@ Emittery.isDebugEnabled = true;

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -89,3 +87,3 @@ const emitter1 = new Emittery({debug: {name: 'emitter1', enabled: true}});

*/
enabled?: boolean;
readonly enabled?: boolean;

@@ -112,5 +110,7 @@ /**

```
import Emittery = require('emittery');
import Emittery from 'emittery';
const myLogger = (type, debugName, eventName, eventData) => console.log(`[${type}]: ${eventName}`);
const myLogger = (type, debugName, eventName, eventData) => {
console.log(`[${type}]: ${eventName}`);
};

@@ -133,4 +133,4 @@ const emitter = new Emittery({

*/
logger?: DebugLogger<EventData, keyof EventData>;
}
readonly logger?: DebugLogger<EventData, keyof EventData>;
};

@@ -140,5 +140,5 @@ /**

*/
interface Options<EventData> {
debug?: DebugOptions<EventData>;
}
export type Options<EventData> = {
readonly debug?: DebugOptions<EventData>;
};

@@ -148,7 +148,27 @@ /**

*/
interface EmitteryOncePromise<T> extends Promise<T> {
export type EmitteryOncePromise<T> = {
off(): void;
}
} & Promise<T>;
/**
Removes an event subscription.
*/
export type UnsubscribeFunction = () => void;
/**
The data provided as `eventData` when listening for `Emittery.listenerAdded` or `Emittery.listenerRemoved`.
*/
export type ListenerChangedData = {
/**
The listener that was added or removed.
*/
listener: (eventData?: unknown) => (void | Promise<void>);
/**
The name of the event that was added or removed if `.on()` or `.off()` was used, or `undefined` if `.onAny()` or `.offAny()` was used.
*/
eventName?: EventName;
};
/**
Emittery is a strictly typed, fully async EventEmitter implementation. Event listeners can be registered with `on` or `once`, and events can be emitted with `emit`.

@@ -160,3 +180,3 @@

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -185,6 +205,6 @@ const emitter = new Emittery<

*/
declare class Emittery<
EventData = Record<EventName, any>,
AllEventData = EventData & _OmnipresentEventData,
DatalessEvents = DatalessEventNames<EventData>
export default class Emittery<
EventData = Record<EventName, any>, // TODO: Use `unknown` instead of `any`.
AllEventData = EventData & OmnipresentEventData,
DatalessEvents = DatalessEventNames<EventData>,
> {

@@ -198,3 +218,3 @@ /**

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -232,3 +252,3 @@ Emittery.isDebugEnabled = true;

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -259,3 +279,3 @@ const emitter = new Emittery();

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -282,14 +302,2 @@ const emitter = new Emittery();

/**
Debugging options for the current instance.
*/
debug: DebugOptions<EventData>;
/**
Create a new Emittery instance with the specified options.
@returns An instance of Emittery that you can use to listen for and emit events.
*/
constructor(options?: Options<EventData>);
/**
In TypeScript, it returns a decorator which mixins `Emittery` as property `emitteryPropertyName` and `methodNames`, or all `Emittery` methods if `methodNames` is not defined, into the target class.

@@ -299,3 +307,3 @@

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -313,5 +321,17 @@ @Emittery.mixin('emittery')

methodNames?: readonly string[]
): <T extends {new (...arguments_: any[]): any}>(klass: T) => T; // eslint-disable-line @typescript-eslint/prefer-function-type
): <T extends {new (...arguments_: readonly any[]): any}>(klass: T) => T; // eslint-disable-line @typescript-eslint/prefer-function-type
/**
Debugging options for the current instance.
*/
debug: DebugOptions<EventData>;
/**
Create a new Emittery instance with the specified options.
@returns An instance of Emittery that you can use to listen for and emit events.
*/
constructor(options?: Options<EventData>);
/**
Subscribe to one or more events.

@@ -325,3 +345,3 @@

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -343,5 +363,5 @@ const emitter = new Emittery();

on<Name extends keyof AllEventData>(
eventName: Name | Name[],
eventName: Name | readonly Name[],
listener: (eventData: AllEventData[Name]) => void | Promise<void>
): Emittery.UnsubscribeFn;
): UnsubscribeFunction;

@@ -355,3 +375,3 @@ /**

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -386,3 +406,3 @@ const emitter = new Emittery();

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -407,3 +427,3 @@ const emitter = new Emittery();

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -435,3 +455,3 @@ const emitter = new Emittery();

events<Name extends keyof EventData>(
eventName: Name | Name[]
eventName: Name | readonly Name[]
): AsyncIterableIterator<EventData[Name]>;

@@ -444,22 +464,23 @@

```
import Emittery = require('emittery');
import Emittery from 'emittery';
const emitter = new Emittery();
const listener = data => console.log(data);
(async () => {
emitter.on(['🦄', '🐶', '🦊'], listener);
await emitter.emit('🦄', 'a');
await emitter.emit('🐶', 'b');
await emitter.emit('🦊', 'c');
emitter.off('🦄', listener);
emitter.off(['🐶', '🦊'], listener);
await emitter.emit('🦄', 'a'); // nothing happens
await emitter.emit('🐶', 'b'); // nothing happens
await emitter.emit('🦊', 'c'); // nothing happens
})();
const listener = data => {
console.log(data);
};
emitter.on(['🦄', '🐶', '🦊'], listener);
await emitter.emit('🦄', 'a');
await emitter.emit('🐶', 'b');
await emitter.emit('🦊', 'c');
emitter.off('🦄', listener);
emitter.off(['🐶', '🦊'], listener);
await emitter.emit('🦄', 'a'); // nothing happens
await emitter.emit('🐶', 'b'); // nothing happens
await emitter.emit('🦊', 'c'); // nothing happens
```
*/
off<Name extends keyof AllEventData>(
eventName: Name | Name[],
eventName: Name | readonly Name[],
listener: (eventData: AllEventData[Name]) => void | Promise<void>

@@ -476,3 +497,3 @@ ): void;

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -494,3 +515,3 @@ const emitter = new Emittery();

*/
once<Name extends keyof AllEventData>(eventName: Name | Name[]): EmitteryOncePromise<AllEventData[Name]>;
once<Name extends keyof AllEventData>(eventName: Name | readonly Name[]): EmitteryOncePromise<AllEventData[Name]>;

@@ -531,3 +552,3 @@ /**

) => void | Promise<void>
): Emittery.UnsubscribeFn;
): UnsubscribeFunction;

@@ -543,3 +564,3 @@ /**

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -588,3 +609,3 @@ const emitter = new Emittery();

*/
clearListeners<Name extends keyof EventData>(eventName?: Name | Name[]): void;
clearListeners<Name extends keyof EventData>(eventName?: Name | readonly Name[]): void;

@@ -594,3 +615,3 @@ /**

*/
listenerCount<Name extends keyof EventData>(eventName?: Name | Name[]): number;
listenerCount<Name extends keyof EventData>(eventName?: Name | readonly Name[]): number;

@@ -602,3 +623,3 @@ /**

```
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -614,27 +635,1 @@ const object = {};

}
declare namespace Emittery {
/**
Removes an event subscription.
*/
type UnsubscribeFn = () => void;
/**
The data provided as `eventData` when listening for `Emittery.listenerAdded` or `Emittery.listenerRemoved`.
*/
interface ListenerChangedData {
/**
The listener that was added or removed.
*/
listener: (eventData?: unknown) => void | Promise<void>;
/**
The name of the event that was added or removed if `.on()` or `.off()` was used, or `undefined` if `.onAny()` or `.offAny()` was used.
*/
eventName?: EventName;
}
type OmnipresentEventData = _OmnipresentEventData;
}
export = Emittery;

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

'use strict';
import {anyMap, producersMap, eventsMap} from './maps.js';
const {anyMap, producersMap, eventsMap} = require('./maps.js');
const anyProducer = Symbol('anyProducer');

@@ -77,3 +75,3 @@ const resolvedPromise = Promise.resolve();

flush();
}
},
};

@@ -113,3 +111,3 @@

done: false,
value: await queue.shift()
value: await queue.shift(),
};

@@ -134,5 +132,5 @@ },

return arguments.length > 0 ?
{done: true, value: await value} :
{done: true};
return arguments.length > 0
? {done: true, value: await value}
: {done: true};
},

@@ -142,3 +140,3 @@

return this;
}
},
};

@@ -182,3 +180,3 @@ }

class Emittery {
export default class Emittery {
static mixin(emitteryPropertyName, methodNames) {

@@ -200,3 +198,3 @@ methodNames = defaultMethodNamesOrAssert(methodNames);

enumerable: false,
value: new Emittery()
value: new Emittery(),
});

@@ -208,3 +206,3 @@ return this[emitteryPropertyName];

enumerable: false,
get: getEmitteryProperty
get: getEmitteryProperty,
});

@@ -219,3 +217,3 @@

enumerable: false,
value: emitteryMethodCaller(methodName)
value: emitteryMethodCaller(methodName),
});

@@ -229,7 +227,9 @@ }

static get isDebugEnabled() {
if (typeof process !== 'object') {
// eslint-disable-next-line n/prefer-global/process
if (typeof globalThis.process !== 'object') {
return isGlobalDebugEnabled;
}
const {env} = process || {env: {}};
// eslint-disable-next-line n/prefer-global/process
const {env} = globalThis.process || {env: {}};
return env.DEBUG === 'emittery' || env.DEBUG === '*' || isGlobalDebugEnabled;

@@ -379,3 +379,3 @@ }

}
})
}),
]);

@@ -483,4 +483,4 @@ }

if (typeof eventName === 'string') {
count += anyMap.get(this).size + (getListeners(this, eventName) || new Set()).size +
(getEventProducers(this, eventName) || new Set()).size + (getEventProducers(this) || new Set()).size;
count += anyMap.get(this).size + (getListeners(this, eventName) || new Set()).size
+ (getEventProducers(this, eventName) || new Set()).size + (getEventProducers(this) || new Set()).size;
continue;

@@ -521,3 +521,3 @@ }

enumerable: false,
value: this[methodName].bind(this)
value: this[methodName].bind(this),
});

@@ -534,3 +534,3 @@ }

enumerable: true,
configurable: false
configurable: false,
});

@@ -541,5 +541,3 @@ Object.defineProperty(Emittery, 'listenerRemoved', {

enumerable: true,
configurable: false
configurable: false,
});
module.exports = Emittery;

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

const anyMap = new WeakMap();
const eventsMap = new WeakMap();
const producersMap = new WeakMap();
module.exports = {
anyMap,
eventsMap,
producersMap
};
export const anyMap = new WeakMap();
export const eventsMap = new WeakMap();
export const producersMap = new WeakMap();
{
"name": "emittery",
"version": "0.13.1",
"version": "1.0.0",
"description": "Simple and modern async event emitter",

@@ -13,4 +13,7 @@ "license": "MIT",

},
"type": "module",
"exports": "./index.js",
"types": "./index.d.ts",
"engines": {
"node": ">=12"
"node": ">=14.16"
},

@@ -53,9 +56,9 @@ "scripts": {

"devDependencies": {
"@types/node": "^15.6.1",
"ava": "^2.4.0",
"delay": "^4.3.0",
"nyc": "^15.0.0",
"p-event": "^4.1.0",
"tsd": "^0.19.1",
"xo": "^0.39.0"
"@types/node": "^18.7.15",
"ava": "^4.3.3",
"delay": "^5.0.0",
"nyc": "^15.1.0",
"p-event": "^5.0.1",
"tsd": "^0.23.0",
"xo": "^0.52.3"
},

@@ -62,0 +65,0 @@ "nyc": {

@@ -5,3 +5,3 @@ # <img src="media/header.png" width="1000">

[![Coverage Status](https://codecov.io/gh/sindresorhus/emittery/branch/main/graph/badge.svg)](https://codecov.io/gh/sindresorhus/emittery)
<!-- [![Coverage Status](https://codecov.io/gh/sindresorhus/emittery/branch/main/graph/badge.svg)](https://codecov.io/gh/sindresorhus/emittery) -->
[![](https://badgen.net/bundlephobia/minzip/emittery)](https://bundlephobia.com/result?p=emittery)

@@ -15,5 +15,5 @@

```sh
npm install emittery
```
$ npm install emittery
```

@@ -23,3 +23,3 @@ ## Usage

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -59,3 +59,3 @@ const emitter = new Emittery();

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -110,3 +110,3 @@ Emittery.isDebugEnabled = true;

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -136,3 +136,3 @@ Emittery.isDebugEnabled = true;

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -184,5 +184,7 @@ const emitter1 = new Emittery({debug: {name: 'emitter1', enabled: true}});

```js
const Emittery = require('emittery');
import Emittery from 'emittery';
const myLogger = (type, debugName, eventName, eventData) => console.log(`[${type}]: ${eventName}`);
const myLogger = (type, debugName, eventName, eventData) => {
console.log(`[${type}]: ${eventName}`);
};

@@ -214,3 +216,3 @@ const emitter = new Emittery({

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -239,3 +241,3 @@ const emitter = new Emittery();

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -271,19 +273,19 @@ const emitter = new Emittery();

```js
const Emittery = require('emittery');
import Emittery from 'emittery';
const emitter = new Emittery();
const listener = data => console.log(data);
const listener = data => {
console.log(data);
};
(async () => {
emitter.on(['🦄', '🐶', '🦊'], listener);
await emitter.emit('🦄', 'a');
await emitter.emit('🐶', 'b');
await emitter.emit('🦊', 'c');
emitter.off('🦄', listener);
emitter.off(['🐶', '🦊'], listener);
await emitter.emit('🦄', 'a'); // Nothing happens
await emitter.emit('🐶', 'b'); // Nothing happens
await emitter.emit('🦊', 'c'); // Nothing happens
})();
emitter.on(['🦄', '🐶', '🦊'], listener);
await emitter.emit('🦄', 'a');
await emitter.emit('🐶', 'b');
await emitter.emit('🦊', 'c');
emitter.off('🦄', listener);
emitter.off(['🐶', '🦊'], listener);
await emitter.emit('🦄', 'a'); // Nothing happens
await emitter.emit('🐶', 'b'); // Nothing happens
await emitter.emit('🦊', 'c'); // Nothing happens
```

@@ -300,3 +302,3 @@

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -325,3 +327,3 @@ const emitter = new Emittery();

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -355,3 +357,3 @@ const emitter = new Emittery();

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -375,3 +377,3 @@ const emitter = new Emittery();

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -433,3 +435,3 @@ const emitter = new Emittery();

```js
const Emittery = require('emittery');
import Emittery from 'emittery';

@@ -476,3 +478,3 @@ const emitter = new Emittery();

```js
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -491,3 +493,3 @@ const object = {};

```ts
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -521,3 +523,3 @@ const emitter = new Emittery<

```ts
import Emittery = require('emittery');
import Emittery from 'emittery';

@@ -542,3 +544,3 @@ @Emittery.mixin('emittery')

To enable this feature set the DEBUG environment variable to 'emittery' or '*'. Additionally you can set the static `isDebugEnabled` variable to true on the Emittery class, or `myEmitter.debug.enabled` on an instance of it for debugging a single instance.
To enable this feature set the DEBUG environment variable to `'emittery'` or `'*'`. Additionally you can set the static `isDebugEnabled` variable to true on the Emittery class, or `myEmitter.debug.enabled` on an instance of it for debugging a single instance.

@@ -545,0 +547,0 @@ See [API](#api) for more details on how debugging works.

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