mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Merge vscode source through 1.62 release (#19981)
* Build breaks 1 * Build breaks * Build breaks * Build breaks * More build breaks * Build breaks (#2512) * Runtime breaks * Build breaks * Fix dialog location break * Update typescript * Fix ASAR break issue * Unit test breaks * Update distro * Fix breaks in ADO builds (#2513) * Bump to node 16 * Fix hygiene errors * Bump distro * Remove reference to node type * Delete vscode specific extension * Bump to node 16 in CI yaml * Skip integration tests in CI builds (while fixing) * yarn.lock update * Bump moment dependency in remote yarn * Fix drop-down chevron style * Bump to node 16 * Remove playwrite from ci.yaml * Skip building build scripts in hygine check
This commit is contained in:
@@ -732,6 +732,33 @@ export class DebounceEmitter<T> extends PauseableEmitter<T> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* An emitter which queue all events and then process them at the
|
||||
* end of the event loop.
|
||||
*/
|
||||
export class MicrotaskEmitter<T> extends Emitter<T> {
|
||||
private _queuedEvents: T[] = [];
|
||||
private _mergeFn?: (input: T[]) => T;
|
||||
|
||||
constructor(options?: EmitterOptions & { merge?: (input: T[]) => T }) {
|
||||
super(options);
|
||||
this._mergeFn = options?.merge;
|
||||
}
|
||||
override fire(event: T): void {
|
||||
this._queuedEvents.push(event);
|
||||
if (this._queuedEvents.length === 1) {
|
||||
queueMicrotask(() => {
|
||||
if (this._mergeFn) {
|
||||
super.fire(this._mergeFn(this._queuedEvents));
|
||||
} else {
|
||||
this._queuedEvents.forEach(e => super.fire(e));
|
||||
}
|
||||
this._queuedEvents = [];
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export class EventMultiplexer<T> implements IDisposable {
|
||||
|
||||
private readonly emitter: Emitter<T>;
|
||||
|
||||
Reference in New Issue
Block a user