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

@quilted/events

Package Overview
Dependencies
Maintainers
1
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@quilted/events - npm Package Compare versions

Comparing version 0.0.0-fix-types-20220529011148 to 0.0.0-preview-20221213011017

8

build/typescript/abort.d.ts

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

export declare type AbortBehavior = 'throws' | 'returns';
export type AbortBehavior = 'throws' | 'returns';
export declare class NestedAbortController extends AbortController {

@@ -7,3 +7,9 @@ private readonly cleanup;

}
export declare function anyAbortSignal(...signals: readonly AbortSignal[]): AbortSignal;
export declare function raceAgainstAbortSignal<T>(race: () => Promise<T>, { signal, ifAborted, }: {
signal: AbortSignal;
ifAborted?(): void | Promise<void>;
}): Promise<T>;
export declare class AbortError extends Error {
static test(error: unknown): error is AbortError;
readonly code = "ABORT_ERR";

@@ -10,0 +16,0 @@ readonly name = "AbortError";

40

build/typescript/emitter.d.ts
import type { AbortBehavior } from './abort';
export declare type EmitterHandler<T = unknown> = (event: T) => void;
export type EmitterHandler<T = unknown> = (event: T) => void;
export interface Emitter<Events = {}> {
on<Event extends keyof Events>(type: Event, handler: EmitterHandler<Events[Event]>, options?: {
once?: boolean;
signal?: AbortSignal;
abort?: never;
}): void;
on<Event extends keyof Events>(type: Event, options?: {
once?: boolean;
signal?: AbortSignal;
abort?: AbortBehavior;
}): AsyncGenerator<Events[Event], void, void>;
on<Event extends keyof Events>(type: Event, options: {

@@ -24,6 +14,32 @@ once: true;

}): Promise<Abort extends 'returns' ? Events[Event] | undefined : Events[Event]>;
on<Event extends keyof Events>(type: Event, options?: {
once?: boolean;
signal?: AbortSignal;
abort?: AbortBehavior;
}): AsyncGenerator<Events[Event], void, void>;
on<Event extends keyof Events>(type: Event, handler: EmitterHandler<Events[Event]>, options?: {
once?: boolean;
signal?: AbortSignal;
abort?: never;
}): void;
emit<Event extends keyof Events>(type: Event, event: Events[Event]): void;
emit<Event extends keyof Events>(type: undefined extends Events[Event] ? Event : never): void;
}
export declare function createEmitter<Events = {}>(): Emitter<Events>;
export declare function createEmitter<Events = {}>(internal?: Emitter<EmitterInternalEvents<Events>>): Emitter<Events>;
export interface EmitterInternalEvents<Events = {}> {
add: {
event: keyof Events;
handler: EmitterHandler<unknown>;
all: Set<EmitterHandler<unknown>>;
};
remove: {
event: keyof Events;
handler: EmitterHandler<unknown>;
all: Set<EmitterHandler<unknown>>;
};
}
export interface EmitterWithInternals<Events = {}> extends Emitter<Events> {
readonly internal: Emitter<EmitterInternalEvents<Events>>;
}
export declare function createEmitterWithInternals<Events = {}>(): EmitterWithInternals<Events>;
//# sourceMappingURL=emitter.d.ts.map
export { on } from './on';
export { once } from './once';
export { AbortError, NestedAbortController } from './abort';
export type { AbortBehavior } from './abort';
export { createEmitter } from './emitter';
export type { Emitter, EmitterHandler } from './emitter';
export { AbortError, NestedAbortController, anyAbortSignal, raceAgainstAbortSignal, type AbortBehavior, } from './abort';
export { addListener } from './listeners';
export { createEmitter, createEmitterWithInternals } from './emitter';
export type { Emitter, EmitterHandler, EmitterInternalEvents, EmitterWithInternals, } from './emitter';
export type { EventTarget, EventTargetOn, EventTargetAddEventListener, EventTargetFunction, } from './types';
//# sourceMappingURL=index.d.ts.map

@@ -17,3 +17,3 @@ export interface EventTargetAddEventListener<EventMap = Record<string, unknown>> {

}
export declare type EventTarget<EventMap = Record<string, unknown>> = EventTargetAddEventListener<EventMap> | EventTargetOn<EventMap> | EventTargetFunction<EventMap>;
export type EventTarget<EventMap = Record<string, unknown>> = EventTargetAddEventListener<EventMap> | EventTargetOn<EventMap> | EventTargetFunction<EventMap>;
//# sourceMappingURL=types.d.ts.map
# @quilted/events
## 0.0.0-fix-types-20220529011148
## 0.0.0-preview-20221213011017
### Patch Changes
- [#331](https://github.com/lemonmade/quilt/pull/331) [`f356dc06`](https://github.com/lemonmade/quilt/commit/f356dc067628550114b8e2a06b6878a1506bbed2) Thanks [@lemonmade](https://github.com/lemonmade)! - Fix React types in stricter package managers
- Update all development dependencies to their latest versions
## 0.1.15
### Patch Changes
- [#429](https://github.com/lemonmade/quilt/pull/429) [`69a5d2a1`](https://github.com/lemonmade/quilt/commit/69a5d2a1f9c2fe8d93be3157eb33506b0b8f7df7) Thanks [@lemonmade](https://github.com/lemonmade)! - Update all development dependencies to their latest versions
## 0.1.14
### Patch Changes
- [`fc34575a`](https://github.com/lemonmade/quilt/commit/fc34575a565760c352d7417dc26bfc989828acdd) Thanks [@lemonmade](https://github.com/lemonmade)! - Fix types for emitter once events
## 0.1.13
### Patch Changes
- [`2128fbe4`](https://github.com/lemonmade/quilt/commit/2128fbe469abc5589544d59317577cdc4f876353) Thanks [@lemonmade](https://github.com/lemonmade)! - Add raceAgainstAbortSignal utility
## 0.1.12
### Patch Changes
- [`73c73555`](https://github.com/lemonmade/quilt/commit/73c735555b8feaaf19f7355fab87a4021925d099) Thanks [@lemonmade](https://github.com/lemonmade)! - Add reason to anyAbortController
## 0.1.11
### Patch Changes
- [`39544227`](https://github.com/lemonmade/quilt/commit/39544227abefed9185b500e3461ad4ec2e5f11cb) Thanks [@lemonmade](https://github.com/lemonmade)! - Add anyAbortSignal utility
## 0.1.10
### Patch Changes
- [`a419953a`](https://github.com/lemonmade/quilt/commit/a419953aff8c955aa8ca7ef2923869f051c3f24d) Thanks [@lemonmade](https://github.com/lemonmade)! - Add internal events for emitter
## 0.1.9
### Patch Changes
- [`ee630a83`](https://github.com/lemonmade/quilt/commit/ee630a832b2582a71398a720a2b0ac990eae027d) Thanks [@lemonmade](https://github.com/lemonmade)! - Export addListener utility
## 0.1.8
### Patch Changes
- [`a12c3576`](https://github.com/lemonmade/quilt/commit/a12c357693b173461f51a35fb7efdd0a9267e471) Thanks [@lemonmade](https://github.com/lemonmade)! - Fix more build issues
## 0.1.7
### Patch Changes
- [`0629288e`](https://github.com/lemonmade/quilt/commit/0629288ee4ba2e2ccfd73fbb216c3559e1a5c77e) Thanks [@lemonmade](https://github.com/lemonmade)! - Fix missing package builds
## 0.1.6
### Patch Changes
- [#364](https://github.com/lemonmade/quilt/pull/364) [`4dc1808a`](https://github.com/lemonmade/quilt/commit/4dc1808a86d15e821b218b528617430cbd8b5b48) Thanks [@lemonmade](https://github.com/lemonmade)! - Update to simplified Quilt config
## 0.1.5
### Patch Changes
- [#359](https://github.com/lemonmade/quilt/pull/359) [`2eceac54`](https://github.com/lemonmade/quilt/commit/2eceac546fa3ee3e2c4d2887ab4a6a021acb52cd) Thanks [@lemonmade](https://github.com/lemonmade)! - Update TypeScript and ESLint to latest versions
## 0.1.4
### Patch Changes
- [#338](https://github.com/lemonmade/quilt/pull/338) [`3e2993f5`](https://github.com/lemonmade/quilt/commit/3e2993f598be4aad1b16ef378d7cd449de81c3b5) Thanks [@lemonmade](https://github.com/lemonmade)! - Add full support for from-source export condition
## 0.1.3
### Patch Changes
- [#331](https://github.com/lemonmade/quilt/pull/331) [`efc54f75`](https://github.com/lemonmade/quilt/commit/efc54f75cb29ec4143a8e52f577edff518014a6b) Thanks [@lemonmade](https://github.com/lemonmade)! - Fix React types in stricter package managers
## 0.1.2

@@ -10,0 +88,0 @@

@@ -5,3 +5,3 @@ {

"type": "module",
"version": "0.0.0-fix-types-20220529011148",
"version": "0.0.0-preview-20221213011017",
"license": "MIT",

@@ -22,2 +22,4 @@ "engines": {

".": {
"types": "./build/typescript/index.d.ts",
"quilt:source": "./source/index.ts",
"quilt:esnext": "./build/esnext/index.esnext",

@@ -41,5 +43,5 @@ "import": "./build/esm/index.mjs",

"extends": [
"@quilted/eslint-config/package"
"@quilted/eslint-config/project"
]
}
}

@@ -1,6 +0,5 @@

import {createPackage, quiltPackage} from '@quilted/craft';
import {createProject, quiltPackage} from '@quilted/craft';
export default createPackage((pkg) => {
pkg.entry({source: './source/index.ts'});
pkg.use(quiltPackage());
export default createProject((project) => {
project.use(quiltPackage());
});

@@ -19,4 +19,73 @@ export type AbortBehavior = 'throws' | 'returns';

export function anyAbortSignal(...signals: readonly AbortSignal[]) {
const controller = new AbortController();
const abortedSignal = signals.find((signal) => signal.aborted);
if (abortedSignal) {
controller.abort(abortedSignal.reason);
} else {
for (const signal of signals) {
signal.addEventListener('abort', () => controller.abort(signal.reason), {
signal: controller.signal,
});
}
}
return controller.signal;
}
export async function raceAgainstAbortSignal<T>(
race: () => Promise<T>,
{
signal,
ifAborted,
}: {signal: AbortSignal; ifAborted?(): void | Promise<void>},
): Promise<T> {
const raceAbort = new AbortController();
const result = await Promise.race([racer(), abortRacer()]);
return result as T;
async function racer() {
try {
const result = await race();
return result;
} finally {
raceAbort.abort();
}
}
async function abortRacer() {
await new Promise<void>((resolve, reject) => {
signal.addEventListener(
'abort',
async () => {
try {
if (ifAborted) await ifAborted();
reject(new AbortError());
} catch (error) {
reject(error);
}
},
{signal: raceAbort.signal},
);
raceAbort.signal.addEventListener(
'abort',
() => {
resolve();
},
{signal},
);
});
}
}
// @see https://github.com/nodejs/node/blob/master/lib/internal/errors.js#L822-L834
export class AbortError extends Error {
static test(error: unknown): error is AbortError {
return error != null && (error as any).code === 'ABORT_ERR';
}
readonly code = 'ABORT_ERR';

@@ -23,0 +92,0 @@ readonly name = 'AbortError';

@@ -7,15 +7,5 @@ import {on as onEvent} from './on';

// eslint-disable-next-line @typescript-eslint/ban-types
export interface Emitter<Events = {}> {
on<Event extends keyof Events>(
type: Event,
handler: EmitterHandler<Events[Event]>,
options?: {once?: boolean; signal?: AbortSignal; abort?: never},
): void;
on<Event extends keyof Events>(
type: Event,
options?: {once?: boolean; signal?: AbortSignal; abort?: AbortBehavior},
): AsyncGenerator<Events[Event], void, void>;
on<Event extends keyof Events>(
type: Event,
options: {once: true; signal?: never; abort?: never},

@@ -29,2 +19,11 @@ ): Promise<Events[Event]>;

>;
on<Event extends keyof Events>(
type: Event,
options?: {once?: boolean; signal?: AbortSignal; abort?: AbortBehavior},
): AsyncGenerator<Events[Event], void, void>;
on<Event extends keyof Events>(
type: Event,
handler: EmitterHandler<Events[Event]>,
options?: {once?: boolean; signal?: AbortSignal; abort?: never},
): void;

@@ -37,4 +36,5 @@ emit<Event extends keyof Events>(type: Event, event: Events[Event]): void;

// eslint-disable-next-line @typescript-eslint/ban-types
export function createEmitter<Events = {}>(): Emitter<Events> {
export function createEmitter<Events = {}>(
internal?: Emitter<EmitterInternalEvents<Events>>,
): Emitter<Events> {
const handlerMap = new Map<keyof Events, Set<any>>();

@@ -79,3 +79,7 @@

signalAbort?.abort();
handlers!.delete(normalizedHandler);
if (handlers == null) return;
handlers.delete(normalizedHandler);
internal?.emit('remove', {event, handler: handler as any, all: handlers});
if (handlers!.size === 0) handlerMap.delete(event);
};

@@ -98,4 +102,34 @@

internal?.emit('add', {event, handler: handler as any, all: handlers});
signal?.addEventListener('abort', remove, {signal: signalAbort!.signal});
}
}
export interface EmitterInternalEvents<Events = {}> {
add: {
event: keyof Events;
handler: EmitterHandler<unknown>;
all: Set<EmitterHandler<unknown>>;
};
remove: {
event: keyof Events;
handler: EmitterHandler<unknown>;
all: Set<EmitterHandler<unknown>>;
};
}
export interface EmitterWithInternals<Events = {}> extends Emitter<Events> {
readonly internal: Emitter<EmitterInternalEvents<Events>>;
}
export function createEmitterWithInternals<
Events = {},
>(): EmitterWithInternals<Events> {
const internal = createEmitter<EmitterInternalEvents<Events>>();
const emitter = createEmitter(internal);
(emitter as any).internal = internal;
return emitter as any;
}
export {on} from './on';
export {once} from './once';
export {AbortError, NestedAbortController} from './abort';
export type {AbortBehavior} from './abort';
export {createEmitter} from './emitter';
export type {Emitter, EmitterHandler} from './emitter';
export {
AbortError,
NestedAbortController,
anyAbortSignal,
raceAgainstAbortSignal,
type AbortBehavior,
} from './abort';
export {addListener} from './listeners';
export {createEmitter, createEmitterWithInternals} from './emitter';
export type {
Emitter,
EmitterHandler,
EmitterInternalEvents,
EmitterWithInternals,
} from './emitter';
export type {
EventTarget,

@@ -9,0 +20,0 @@ EventTargetOn,

{
"extends": "@quilted/typescript/pkg.json",
"extends": "@quilted/typescript/project.json",
"compilerOptions": {

@@ -4,0 +4,0 @@ "rootDir": "source",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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