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
  8b5fae9e_909c_9c8c_abb3_1a89c85ddf20["Disposables"]
  636eff43_df39_0f34_51c3_1a953de44937["disposables.ts"]
  8b5fae9e_909c_9c8c_abb3_1a89c85ddf20 -->|defined in| 636eff43_df39_0f34_51c3_1a953de44937
  1f447913_7838_c0a4_e02c_4c6668d2cbf1["queueMacrotask()"]
  8b5fae9e_909c_9c8c_abb3_1a89c85ddf20 -->|method| 1f447913_7838_c0a4_e02c_4c6668d2cbf1
  cc3d0030_51a1_57c4_f1b2_07ed55351877["add()"]
  8b5fae9e_909c_9c8c_abb3_1a89c85ddf20 -->|method| cc3d0030_51a1_57c4_f1b2_07ed55351877
  c8bf05c2_8aff_e8da_8aa4_59b378c5f12b["dispose()"]
  8b5fae9e_909c_9c8c_abb3_1a89c85ddf20 -->|method| c8bf05c2_8aff_e8da_8aa4_59b378c5f12b

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