Home / Class/ Disposables Class — tailwindcss Architecture

Disposables Class — tailwindcss Architecture

Architecture documentation for the Disposables class in disposables.ts from the tailwindcss codebase.

Entity Profile

Dependency Diagram

graph TD
  78599ee8_ca9d_f845_6806_f63c1544e170["Disposables"]
  675a1c73_1746_0f04_37da_eb3d16bfe48b["disposables.ts"]
  78599ee8_ca9d_f845_6806_f63c1544e170 -->|defined in| 675a1c73_1746_0f04_37da_eb3d16bfe48b
  71eea928_0638_6924_6f18_480969e7c46c["queueMacrotask()"]
  78599ee8_ca9d_f845_6806_f63c1544e170 -->|method| 71eea928_0638_6924_6f18_480969e7c46c
  69a905e1_e6b8_8060_96fd_96d89eeba051["add()"]
  78599ee8_ca9d_f845_6806_f63c1544e170 -->|method| 69a905e1_e6b8_8060_96fd_96d89eeba051
  e57d791f_2027_ea05_ce81_8d3409a1e39b["dispose()"]
  78599ee8_ca9d_f845_6806_f63c1544e170 -->|method| e57d791f_2027_ea05_ce81_8d3409a1e39b

Relationship Graph

Source Code

packages/@tailwindcss-cli/src/utils/disposables.ts lines 7–45

export class Disposables {
  // Track all disposables
  #disposables = new Set<Function>([])

  /**
   * Enqueue a callback in the macrotasks queue.
   */
  queueMacrotask(cb: () => void) {
    let timer = setTimeout(cb, 0)

    return this.add(() => {
      clearTimeout(timer)
    })
  }

  /**
   * General purpose disposable function that can be cleaned up.
   */
  add(dispose: () => void) {
    this.#disposables.add(dispose)

    return () => {
      this.#disposables.delete(dispose)

      dispose()
    }
  }

  /**
   * Dispose all disposables at once.
   */
  async dispose() {
    for (let dispose of this.#disposables) {
      await dispose()
    }

    this.#disposables.clear()
  }
}

Frequently Asked Questions

What is the Disposables class?
Disposables is a class in the tailwindcss codebase, defined in packages/@tailwindcss-cli/src/utils/disposables.ts.
Where is Disposables defined?
Disposables is defined in packages/@tailwindcss-cli/src/utils/disposables.ts at line 7.

Analyze Your Own Codebase

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

Try Supermodel Free