File tree Expand file tree Collapse file tree 4 files changed +51
-46
lines changed
Expand file tree Collapse file tree 4 files changed +51
-46
lines changed Original file line number Diff line number Diff line change @@ -87,7 +87,7 @@ export class EventEmitterWrapper implements EventEmitter {
8787}
8888
8989
90- type Handler = ( ...args : any [ ] ) => void ;
90+ export type Handler = ( ...args : any [ ] ) => void ;
9191interface EventMap {
9292 [ k : string ] : Handler | Handler [ ] | undefined ;
9393}
Original file line number Diff line number Diff line change 1- export interface Listener < T > {
2- ( event : T ) : any ;
3- }
4-
5- export interface Disposable {
6- dispose ( ) ;
7- }
8-
9- /** passes through events as they happen. You will not get events from before you start listening */
10- export class TypedEvent < T > {
11- private listeners : Listener < T > [ ] = [ ] ;
12- private listenersOncer : Listener < T > [ ] = [ ] ;
13-
14- on = ( listener : Listener < T > ) : Disposable => {
15- this . listeners . push ( listener ) ;
16- return {
17- dispose : ( ) => this . off ( listener )
18- } ;
19- }
20-
21- once = ( listener : Listener < T > ) : void => {
22- this . listenersOncer . push ( listener ) ;
23- }
24-
25- off = ( listener : Listener < T > ) => {
26- var callbackIndex = this . listeners . indexOf ( listener ) ;
27- if ( callbackIndex > - 1 ) this . listeners . splice ( callbackIndex , 1 ) ;
28- }
29-
30- emit = ( event : T ) => {
31- /** Update any general listeners */
32- this . listeners . forEach ( ( listener ) => listener ( event ) ) ;
33-
34- /** Clear the `once` queue */
35- if ( this . listenersOncer . length > 0 ) {
36- const toCall = this . listenersOncer ;
37- this . listenersOncer = [ ] ;
38- toCall . forEach ( ( listener ) => listener ( event ) ) ;
39- }
40- }
41-
42- pipe = ( te : TypedEvent < T > ) : Disposable => {
43- return this . on ( ( e ) => te . emit ( e ) ) ;
44- }
45- }
1+ export * from './typed' ;
Original file line number Diff line number Diff line change 1+ export interface Listener < T > {
2+ ( event : T ) : any ;
3+ }
4+
5+ export interface Disposable {
6+ dispose ( ) ;
7+ }
8+
9+ /** passes through events as they happen. You will not get events from before you start listening */
10+ export class TypedEvent < T > {
11+ private listeners : Listener < T > [ ] = [ ] ;
12+ private listenersOncer : Listener < T > [ ] = [ ] ;
13+
14+ on = ( listener : Listener < T > ) : Disposable => {
15+ this . listeners . push ( listener ) ;
16+ return {
17+ dispose : ( ) => this . off ( listener )
18+ } ;
19+ }
20+
21+ once = ( listener : Listener < T > ) : void => {
22+ this . listenersOncer . push ( listener ) ;
23+ }
24+
25+ off = ( listener : Listener < T > ) => {
26+ var callbackIndex = this . listeners . indexOf ( listener ) ;
27+ if ( callbackIndex > - 1 ) this . listeners . splice ( callbackIndex , 1 ) ;
28+ }
29+
30+ emit = ( event : T ) => {
31+ /** Update any general listeners */
32+ this . listeners . forEach ( ( listener ) => listener ( event ) ) ;
33+
34+ /** Clear the `once` queue */
35+ if ( this . listenersOncer . length > 0 ) {
36+ const toCall = this . listenersOncer ;
37+ this . listenersOncer = [ ] ;
38+ toCall . forEach ( ( listener ) => listener ( event ) ) ;
39+ }
40+ }
41+
42+ pipe = ( te : TypedEvent < T > ) : Disposable => {
43+ return this . on ( ( e ) => te . emit ( e ) ) ;
44+ }
45+ }
Original file line number Diff line number Diff line change 11// export * from './events';
22export { EventEmitterWrapper } from './events' ;
3+ export { SafeEventEmitter } from './events' ;
4+ export type { Handler } from './events' ;
5+ // TypedEvent , Disposable , Listener
6+ export * from './events/interface' ;
37// both styles of export have no impact on output of dist
48// However we should Prefer Named Exports as opposed to defaults, see README for more info
You can’t perform that action at this time.
0 commit comments