hmrHandler.ts — vite Source File
Architecture documentation for hmrHandler.ts, a typescript file in the vite codebase. 9 imports, 1 dependents.
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
Dependencies
Imported By
Source
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