(module, source, runtime, blockModulesMap)
| 253 | * @param {BlockModulesMap} blockModulesMap block modules map to fill |
| 254 | */ |
| 255 | const deriveBlockModules = (module, source, runtime, blockModulesMap) => { |
| 256 | /** @type {DependenciesBlock[]} */ |
| 257 | const queue = [module]; |
| 258 | while (queue.length > 0) { |
| 259 | const block = /** @type {DependenciesBlock} */ (queue.pop()); |
| 260 | const sourceModules = |
| 261 | /** @type {BlockModulesInFlattenTuples} */ |
| 262 | (source.get(block)); |
| 263 | let target = sourceModules; |
| 264 | for (let i = 0, len = sourceModules.length; i < len; i += 3) { |
| 265 | const state = getActiveStateOfConnections( |
| 266 | /** @type {ModuleGraphConnection[]} */ (sourceModules[i + 2]), |
| 267 | runtime |
| 268 | ); |
| 269 | if (target === sourceModules) { |
| 270 | if (state === sourceModules[i + 1]) continue; |
| 271 | // states diverged, copy (states before i are identical) |
| 272 | target = [...sourceModules]; |
| 273 | } |
| 274 | target[i + 1] = state; |
| 275 | } |
| 276 | blockModulesMap.set(block, target); |
| 277 | for (const b of block.blocks) { |
| 278 | queue.push(b); |
| 279 | } |
| 280 | } |
| 281 | }; |
| 282 | |
| 283 | /** |
| 284 | * Processes the provided logger. |
no test coverage detected