smartevent/ts/index.ts

32 lines
541 B
TypeScript
Raw Normal View History

import * as plugins from './smartevent.plugins';
2023-07-10 00:48:58 +00:00
import { EventEmitter } from 'events';
2017-04-29 19:23:26 +00:00
2023-07-10 00:48:58 +00:00
export {
};
export class SmartEventEmitter {
public eventSubject = new plugins.
public once () {
};
public emit () {
}
public on () {}
}
// instrument globalThis
2017-04-29 19:23:26 +00:00
2023-07-10 00:48:58 +00:00
export const once = async <T>(eventEmitter: SmartEventEmitter, eventName: string): Promise<T> => {
2018-12-10 22:41:41 +00:00
const done = plugins.smartpromise.defer<T>();
eventEmitter.once(eventName, eventPayload => {
done.resolve(eventPayload);
});
return await done.promise;
};