diff --git a/lib/compilation-queue.js b/lib/compilation-queue.ts similarity index 91% rename from lib/compilation-queue.js rename to lib/compilation-queue.ts index f8e017632e3..933afb67b07 100644 --- a/lib/compilation-queue.js +++ b/lib/compilation-queue.ts @@ -42,9 +42,13 @@ const queueCompleted = new PromClient.Counter({ help: 'Total number of jobs completed', }); +type Job = () => PromiseLike; + export class CompilationQueue { - constructor(concurrency, timeout) { - this._running = new Set(); + private readonly _running: Set = new Set(); + private readonly _queue: Queue; + + constructor(concurrency: number, timeout: number) { this._queue = new Queue({ concurrency, timeout, @@ -56,7 +60,7 @@ export class CompilationQueue { return new CompilationQueue(ceProps('maxConcurrentCompiles', 1), ceProps('compilationEnvTimeoutMs')); } - enqueue(job) { + enqueue(job: Job): PromiseLike { const enqueueAsyncId = executionAsyncId(); // If we're asked to enqueue a job when we're already in a async queued job context, just run it. // This prevents a deadlock. @@ -76,7 +80,7 @@ export class CompilationQueue { }); } - status() { + status(): {busy: boolean; pending: number; size: number} { const pending = this._queue.pending; const size = this._queue.size; return {