Home / File/ hmrHandler.ts — vite Source File

hmrHandler.ts — vite Source File

Architecture documentation for hmrHandler.ts, a typescript file in the vite codebase. 9 imports, 1 dependents.

File typescript ModuleRunner SSRRuntime 9 imports 1 dependents 4 functions

Entity Profile

Dependency Diagram

graph LR
  569b12a9_015e_564e_efd3_205cedee54dd["hmrHandler.ts"]
  abfc9e70_3c15_b3f0_a595_3cf27afb7e64["utils.ts"]
  569b12a9_015e_564e_efd3_205cedee54dd --> abfc9e70_3c15_b3f0_a595_3cf27afb7e64
  f094d39d_cd97_2548_86c3_38902c2f3301["slash"]
  569b12a9_015e_564e_efd3_205cedee54dd --> f094d39d_cd97_2548_86c3_38902c2f3301
  795dec35_22f9_80f5_ccab_9c2d170af0d3["unwrapId"]
  569b12a9_015e_564e_efd3_205cedee54dd --> 795dec35_22f9_80f5_ccab_9c2d170af0d3
  ffe942a0_fdea_ef58_0f68_6f1fec25f285["constants.ts"]
  569b12a9_015e_564e_efd3_205cedee54dd --> ffe942a0_fdea_ef58_0f68_6f1fec25f285
  028d7bbe_154e_0f3f_836a_0c92f8021168["hmrHandler.ts"]
  569b12a9_015e_564e_efd3_205cedee54dd --> 028d7bbe_154e_0f3f_836a_0c92f8021168
  78565810_c101_62d5_659a_9f46c4ad9d97["createHMRHandler"]
  569b12a9_015e_564e_efd3_205cedee54dd --> 78565810_c101_62d5_659a_9f46c4ad9d97
  29e248d2_9983_1037_00e6_8bcd9ee87840["runner.ts"]
  569b12a9_015e_564e_efd3_205cedee54dd --> 29e248d2_9983_1037_00e6_8bcd9ee87840
  1d3ff778_7ac6_0038_640f_997e968c3c8f["ModuleRunner"]
  569b12a9_015e_564e_efd3_205cedee54dd --> 1d3ff778_7ac6_0038_640f_997e968c3c8f
  ccb8a028_b1ec_3743_cfbe_0ac5315bc7c3["hmrPayload"]
  569b12a9_015e_564e_efd3_205cedee54dd --> ccb8a028_b1ec_3743_cfbe_0ac5315bc7c3
  29e248d2_9983_1037_00e6_8bcd9ee87840["runner.ts"]
  29e248d2_9983_1037_00e6_8bcd9ee87840 --> 569b12a9_015e_564e_efd3_205cedee54dd
  style 569b12a9_015e_564e_efd3_205cedee54dd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { HotPayload } from '#types/hmrPayload'
import { slash, unwrapId } from '../shared/utils'
import { ERR_OUTDATED_OPTIMIZED_DEP } from '../shared/constants'
import { createHMRHandler } from '../shared/hmrHandler'
import type { ModuleRunner } from './runner'

export function createHMRHandlerForRunner(
  runner: ModuleRunner,
): (payload: HotPayload) => Promise<void> {
  return createHMRHandler(async (payload) => {
    const hmrClient = runner.hmrClient
    if (!hmrClient || runner.isClosed()) return
    switch (payload.type) {
      case 'connected':
        hmrClient.logger.debug(`connected.`)
        break
      case 'update':
        await hmrClient.notifyListeners('vite:beforeUpdate', payload)
        await Promise.all(
          payload.updates.map(async (update): Promise<void> => {
            if (update.type === 'js-update') {
              // runner always caches modules by their full path without /@id/ prefix
              update.acceptedPath = unwrapId(update.acceptedPath)
              update.path = unwrapId(update.path)
              return hmrClient.queueUpdate(update)
            }

            hmrClient.logger.error('css hmr is not supported in runner mode.')
          }),
        )
        await hmrClient.notifyListeners('vite:afterUpdate', payload)
        break
      case 'custom': {
        await hmrClient.notifyListeners(payload.event, payload.data)
        break
      }
      case 'full-reload': {
        const { triggeredBy } = payload
        const clearEntrypointUrls = triggeredBy
          ? getModulesEntrypoints(
              runner,
              getModulesByFile(runner, slash(triggeredBy)),
            )
          : findAllEntrypoints(runner)

        if (!clearEntrypointUrls.size) break

        hmrClient.logger.debug(`program reload`)
        await hmrClient.notifyListeners('vite:beforeFullReload', payload)
        runner.evaluatedModules.clear()

        for (const url of clearEntrypointUrls) {
          try {
            await runner.import(url)
          } catch (err) {
            if (err.code !== ERR_OUTDATED_OPTIMIZED_DEP) {
              hmrClient.logger.error(
                `An error happened during full reload\n${err.message}\n${err.stack}`,
              )
            }
// ... (70 more lines)

Domain

Subdomains

Frequently Asked Questions

What does hmrHandler.ts do?
hmrHandler.ts is a source file in the vite codebase, written in typescript. It belongs to the ModuleRunner domain, SSRRuntime subdomain.
What functions are defined in hmrHandler.ts?
hmrHandler.ts defines 4 function(s): createHMRHandlerForRunner, findAllEntrypoints, getModulesByFile, getModulesEntrypoints.
What does hmrHandler.ts depend on?
hmrHandler.ts imports 9 module(s): ModuleRunner, constants.ts, createHMRHandler, hmrHandler.ts, hmrPayload, runner.ts, slash, unwrapId, and 1 more.
What files import hmrHandler.ts?
hmrHandler.ts is imported by 1 file(s): runner.ts.
Where is hmrHandler.ts in the architecture?
hmrHandler.ts is located at packages/vite/src/module-runner/hmrHandler.ts (domain: ModuleRunner, subdomain: SSRRuntime, directory: packages/vite/src/module-runner).

Analyze Your Own Codebase

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

Try Supermodel Free