| Server IP : 217.160.0.212 / Your IP : 216.73.216.15 Web Server : Apache System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64 User : sws1073854427 ( 1073854427) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/share/nodejs/@tootallnate/once/src/ |
Upload File : |
import { EventEmitter } from 'events';
import { EventNames, EventListenerParameters, AbortSignal } from './types.js';
export interface OnceOptions {
signal?: AbortSignal;
}
export default function once<
Emitter extends EventEmitter,
Event extends EventNames<Emitter>
>(
emitter: Emitter,
name: Event,
{ signal }: OnceOptions = {}
): Promise<EventListenerParameters<Emitter, Event>> {
return new Promise((resolve, reject) => {
function cleanup() {
signal?.removeEventListener('abort', cleanup);
emitter.removeListener(name, onEvent);
emitter.removeListener('error', onError);
}
function onEvent(...args: EventListenerParameters<Emitter, Event>) {
cleanup();
resolve(args);
}
function onError(err: Error) {
cleanup();
reject(err);
}
signal?.addEventListener('abort', cleanup);
emitter.on(name, onEvent);
emitter.on('error', onError);
});
}