* Run code generation jobs. * @private * @param {CodeGenerationJobs} jobs code generation jobs * @param {Callback} callback callback * @returns {void}
(jobs, callback)
| 3972 | * @returns {void} |
| 3973 | */ |
| 3974 | _runCodeGenerationJobs(jobs, callback) { |
| 3975 | if (jobs.length === 0) { |
| 3976 | return callback(); |
| 3977 | } |
| 3978 | let statModulesFromCache = 0; |
| 3979 | let statModulesGenerated = 0; |
| 3980 | const { chunkGraph, moduleGraph, dependencyTemplates, runtimeTemplate } = |
| 3981 | this; |
| 3982 | const results = |
| 3983 | /** @type {CodeGenerationResults} */ |
| 3984 | (this.codeGenerationResults); |
| 3985 | /** @type {WebpackError[]} */ |
| 3986 | const errors = []; |
| 3987 | /** @type {NotCodeGeneratedModules | undefined} */ |
| 3988 | let notCodeGeneratedModules; |
| 3989 | const runIteration = () => { |
| 3990 | /** @type {CodeGenerationJobs} */ |
| 3991 | let delayedJobs = []; |
| 3992 | /** @type {Set<Module>} */ |
| 3993 | let delayedModules = new Set(); |
| 3994 | asyncLib.eachLimit( |
| 3995 | jobs, |
| 3996 | this.options.parallelism, |
| 3997 | (job, callback) => { |
| 3998 | const { module } = job; |
| 3999 | const { codeGenerationDependencies } = module; |
| 4000 | if ( |
| 4001 | codeGenerationDependencies !== undefined && |
| 4002 | (notCodeGeneratedModules === undefined || |
| 4003 | codeGenerationDependencies.some((dep) => { |
| 4004 | const referencedModule = /** @type {Module} */ ( |
| 4005 | moduleGraph.getModule(dep) |
| 4006 | ); |
| 4007 | return /** @type {NotCodeGeneratedModules} */ ( |
| 4008 | notCodeGeneratedModules |
| 4009 | ).has(referencedModule); |
| 4010 | })) |
| 4011 | ) { |
| 4012 | delayedJobs.push(job); |
| 4013 | delayedModules.add(module); |
| 4014 | return callback(); |
| 4015 | } |
| 4016 | const { hash, runtime, runtimes } = job; |
| 4017 | this._codeGenerationModule( |
| 4018 | module, |
| 4019 | runtime, |
| 4020 | runtimes, |
| 4021 | hash, |
| 4022 | dependencyTemplates, |
| 4023 | chunkGraph, |
| 4024 | moduleGraph, |
| 4025 | runtimeTemplate, |
| 4026 | errors, |
| 4027 | results, |
| 4028 | (err, codeGenerated) => { |
| 4029 | if (codeGenerated) statModulesGenerated++; |
| 4030 | else statModulesFromCache++; |
| 4031 | callback(err); |
no test coverage detected