Move tracker to telemetry extension (#1092)

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen authored and GitHub committed 2020-10-19 11:56:08 +03:00
1 parent a478143423
commit c566c85351
27 files changed
+472 -117

No files matched your search

-40
View File
@@ -1,40 +0,0 @@
// Custom event emitter
interface Options {
once?: boolean; // call once and remove
prepend?: boolean; // put listener to the beginning
}
type Callback<D extends [...any[]]> = (...data: D) => void | boolean;
export class EventEmitter<D extends [...any[]]> {
protected listeners = new Map<Callback<D>, Options>();
addListener(callback: Callback<D>, options: Options = {}) {
if (options.prepend) {
const listeners = [...this.listeners];
listeners.unshift([callback, options]);
this.listeners = new Map(listeners);
}
else {
this.listeners.set(callback, options);
}
}
removeListener(callback: Callback<D>) {
this.listeners.delete(callback);
}
removeAllListeners() {
this.listeners.clear();
}
emit(...data: D) {
[...this.listeners].every(([callback, options]) => {
if (options.once) this.removeListener(callback);
const result = callback(...data);
if (result === false) return; // break cycle
return true;
})
}
}
+1 -1
View File
@@ -7,7 +7,7 @@ export * from "../../common/utils"
export * from "./cssVar"
export * from "./cssNames"
export * from "./eventEmitter"
export * from "../../common/event-emitter"
export * from "./downloadFile"
export * from "./prevDefault"
export * from "./createStorage"