MCPcopy
hub / github.com/vitejs/vite / wrapEnvironmentHook

Function wrapEnvironmentHook

packages/vite/src/node/build.ts:1439–1475  ·  view source on GitHub ↗
(
  environment: Environment,
  chunkMetadataMap: ChunkMetadataMap,
  plugin: Plugin,
  hookName: HookName,
)

Source from the content-addressed store, hash-verified

1437}
1438
1439function wrapEnvironmentHook<HookName extends keyof Plugin>(
1440 environment: Environment,
1441 chunkMetadataMap: ChunkMetadataMap,
1442 plugin: Plugin,
1443 hookName: HookName,
1444): Plugin[HookName] {
1445 const hook = plugin[hookName]
1446 if (!hook) return
1447
1448 const fn = getHookHandler(hook)
1449 if (typeof fn !== 'function') return hook
1450
1451 const handler: Plugin[HookName] = function (
1452 this: PluginContext,
1453 ...args: any[]
1454 ) {
1455 if (hookName === 'renderChunk') {
1456 injectChunkMetadata(chunkMetadataMap, args[1], true)
1457 }
1458 if (hookName === 'augmentChunkHash') {
1459 injectChunkMetadata(chunkMetadataMap, args[0])
1460 }
1461 if (hookName === 'generateBundle' || hookName === 'writeBundle') {
1462 const bundle = args[1] as OutputBundle
1463 for (const chunk of Object.values(bundle)) {
1464 injectChunkMetadata(chunkMetadataMap, chunk)
1465 }
1466 }
1467 return fn.call(injectEnvironmentInContext(this, environment), ...args)
1468 }
1469
1470 if ('handler' in hook) {
1471 return wrapHookObject(hook, handler)
1472 } else {
1473 return handler
1474 }
1475}
1476
1477function injectChunkMetadata(
1478 chunkMetadataMap: ChunkMetadataMap,

Callers 1

injectEnvironmentToHooksFunction · 0.85

Calls 2

getHookHandlerFunction · 0.90
wrapHookObjectFunction · 0.85

Tested by

no test coverage detected