X-Git-Url: https://git.josue.xyz/?p=VSoRC%2F.git;a=blobdiff_plain;f=node_modules%2Fnode-pty%2Fsrc%2FeventEmitter2.ts;fp=node_modules%2Fnode-pty%2Fsrc%2FeventEmitter2.ts;h=6779d0cceae2ccc66cddf9bc2547f745e84a7fe1;hp=0000000000000000000000000000000000000000;hb=e79e4a5a87f3e84f7c1777f10a954453a69bf540;hpb=4339da12467b75fb8b6ca831f4bf0081c485ed2c diff --git a/node_modules/node-pty/src/eventEmitter2.ts b/node_modules/node-pty/src/eventEmitter2.ts new file mode 100644 index 0000000..6779d0c --- /dev/null +++ b/node_modules/node-pty/src/eventEmitter2.ts @@ -0,0 +1,48 @@ +/** + * Copyright (c) 2019, Microsoft Corporation (MIT License). + */ + +import { IDisposable } from './types'; + +interface IListener { + (e: T): void; +} + +export interface IEvent { + (listener: (e: T) => any): IDisposable; +} + +export class EventEmitter2 { + private _listeners: IListener[] = []; + private _event?: IEvent; + + public get event(): IEvent { + if (!this._event) { + this._event = (listener: (e: T) => any) => { + this._listeners.push(listener); + const disposable = { + dispose: () => { + for (let i = 0; i < this._listeners.length; i++) { + if (this._listeners[i] === listener) { + this._listeners.splice(i, 1); + return; + } + } + } + }; + return disposable; + }; + } + return this._event; + } + + public fire(data: T): void { + const queue: IListener[] = []; + for (let i = 0; i < this._listeners.length; i++) { + queue.push(this._listeners[i]); + } + for (let i = 0; i < queue.length; i++) { + queue[i].call(undefined, data); + } + } +}