( environment: Environment, chunkMetadataMap: ChunkMetadataMap, plugin: Plugin, hookName: HookName, )
| 1437 | } |
| 1438 | |
| 1439 | function 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 | |
| 1477 | function injectChunkMetadata( |
| 1478 | chunkMetadataMap: ChunkMetadataMap, |
no test coverage detected