Home / Class/ Queue Class — vite Architecture

Queue Class — vite Architecture

Architecture documentation for the Queue class in hmrHandler.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  2c0ee59c_0949_33f8_4516_15bcd71cd015["Queue"]
  028d7bbe_154e_0f3f_836a_0c92f8021168["hmrHandler.ts"]
  2c0ee59c_0949_33f8_4516_15bcd71cd015 -->|defined in| 028d7bbe_154e_0f3f_836a_0c92f8021168
  77b1c63f_56d0_0f53_e7e7_44217eae26f7["enqueue()"]
  2c0ee59c_0949_33f8_4516_15bcd71cd015 -->|method| 77b1c63f_56d0_0f53_e7e7_44217eae26f7
  be980069_d600_05ad_3041_135b7720cc3c["dequeue()"]
  2c0ee59c_0949_33f8_4516_15bcd71cd015 -->|method| be980069_d600_05ad_3041_135b7720cc3c

Relationship Graph

Source Code

packages/vite/src/shared/hmrHandler.ts lines 11–49

class Queue {
  private queue: {
    promise: () => Promise<void>
    resolve: (value?: unknown) => void
    reject: (err?: unknown) => void
  }[] = []
  private pending = false

  enqueue(promise: () => Promise<void>): Promise<void> {
    return new Promise<any>((resolve, reject) => {
      this.queue.push({
        promise,
        resolve,
        reject,
      })
      this.dequeue()
    })
  }

  dequeue(): boolean {
    if (this.pending) {
      return false
    }
    const item = this.queue.shift()
    if (!item) {
      return false
    }
    this.pending = true
    item
      .promise()
      .then(item.resolve)
      .catch(item.reject)
      .finally(() => {
        this.pending = false
        this.dequeue()
      })
    return true
  }
}

Domain

Frequently Asked Questions

What is the Queue class?
Queue is a class in the vite codebase, defined in packages/vite/src/shared/hmrHandler.ts.
Where is Queue defined?
Queue is defined in packages/vite/src/shared/hmrHandler.ts at line 11.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free