Skip to content

Commit a053137

Browse files
authored
Add event emitter abstraction (#1754)
1 parent 7e8fa5c commit a053137

File tree

5 files changed

+32
-1
lines changed

5 files changed

+32
-1
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { AppEventEmitter } from './events';
2+
3+
export interface App {
4+
createEventEmitter<T>(): AppEventEmitter<T>;
5+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Disposable } from '../pure/disposable-object';
2+
3+
export interface AppEvent<T> {
4+
(listener: (event: T) => void): Disposable;
5+
}
6+
7+
export interface AppEventEmitter<T> {
8+
event: AppEvent<T>;
9+
fire(data: T): void;
10+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import * as vscode from 'vscode';
2+
import { AppEventEmitter } from '../events';
3+
4+
export class VSCodeAppEventEmitter<T>
5+
extends vscode.EventEmitter<T>
6+
implements AppEventEmitter<T> {
7+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { App } from '../app';
2+
import { AppEventEmitter } from '../events';
3+
import { VSCodeAppEventEmitter } from './events';
4+
5+
export class ExtensionApp implements App {
6+
public createEventEmitter<T>(): AppEventEmitter<T> {
7+
return new VSCodeAppEventEmitter<T>();
8+
}
9+
}

extensions/ql-vscode/src/pure/disposable-object.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
// Avoid explicitly referencing Disposable type in vscode.
33
// This file cannot have dependencies on the vscode API.
4-
interface Disposable {
4+
export interface Disposable {
55
dispose(): any;
66
}
77

0 commit comments

Comments
 (0)