Home / Function/ setupOnCrawlEnd() — vite Function Reference

setupOnCrawlEnd() — vite Function Reference

Architecture documentation for the setupOnCrawlEnd() function in environment.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  c7599009_1b74_ff3f_37a1_c8cb945418f8["setupOnCrawlEnd()"]
  7916c84f_5621_2b3b_d220_a171ebce997f["environment.ts"]
  c7599009_1b74_ff3f_37a1_c8cb945418f8 -->|defined in| 7916c84f_5621_2b3b_d220_a171ebce997f
  6ea66dc7_258c_4d4e_457c_a36e57776e88["constructor()"]
  6ea66dc7_258c_4d4e_457c_a36e57776e88 -->|calls| c7599009_1b74_ff3f_37a1_c8cb945418f8
  b6ef989d_5a20_eb85_097b_a92459d6c1e0["waitForRequestsIdle()"]
  c7599009_1b74_ff3f_37a1_c8cb945418f8 -->|calls| b6ef989d_5a20_eb85_097b_a92459d6c1e0
  dfa2b928_25a4_a78f_1e11_1e7e643cae09["resolve()"]
  c7599009_1b74_ff3f_37a1_c8cb945418f8 -->|calls| dfa2b928_25a4_a78f_1e11_1e7e643cae09
  style c7599009_1b74_ff3f_37a1_c8cb945418f8 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/server/environment.ts lines 342–401

function setupOnCrawlEnd(): CrawlEndFinder {
  const registeredIds = new Set<string>()
  const seenIds = new Set<string>()
  const onCrawlEndPromiseWithResolvers = promiseWithResolvers<void>()

  let timeoutHandle: NodeJS.Timeout | undefined

  let cancelled = false
  function cancel() {
    cancelled = true
  }

  function registerRequestProcessing(
    id: string,
    done: () => Promise<any>,
  ): void {
    if (!seenIds.has(id)) {
      seenIds.add(id)
      registeredIds.add(id)
      done()
        .catch(() => {})
        .finally(() => markIdAsDone(id))
    }
  }

  function waitForRequestsIdle(ignoredId?: string): Promise<void> {
    if (ignoredId) {
      seenIds.add(ignoredId)
      markIdAsDone(ignoredId)
    } else {
      checkIfCrawlEndAfterTimeout()
    }
    return onCrawlEndPromiseWithResolvers.promise
  }

  function markIdAsDone(id: string): void {
    registeredIds.delete(id)
    checkIfCrawlEndAfterTimeout()
  }

  function checkIfCrawlEndAfterTimeout() {
    if (cancelled || registeredIds.size > 0) return

    if (timeoutHandle) clearTimeout(timeoutHandle)
    timeoutHandle = setTimeout(
      callOnCrawlEndWhenIdle,
      callCrawlEndIfIdleAfterMs,
    )
  }
  async function callOnCrawlEndWhenIdle() {
    if (cancelled || registeredIds.size > 0) return
    onCrawlEndPromiseWithResolvers.resolve()
  }

  return {
    registerRequestProcessing,
    waitForRequestsIdle,
    cancel,
  }
}

Domain

Subdomains

Called By

Frequently Asked Questions

What does setupOnCrawlEnd() do?
setupOnCrawlEnd() is a function in the vite codebase, defined in packages/vite/src/node/server/environment.ts.
Where is setupOnCrawlEnd() defined?
setupOnCrawlEnd() is defined in packages/vite/src/node/server/environment.ts at line 342.
What does setupOnCrawlEnd() call?
setupOnCrawlEnd() calls 2 function(s): resolve, waitForRequestsIdle.
What calls setupOnCrawlEnd()?
setupOnCrawlEnd() is called by 1 function(s): constructor.

Analyze Your Own Codebase

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

Try Supermodel Free