| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Naoyuki Kanezawa @nkzawa*/"use strict";const EntryOptionPlugin = require("./EntryOptionPlugin");const EntryPlugin = require("./EntryPlugin");const EntryDependency = require("./dependencies/EntryDependency");/** @typedef {import("../declarations/WebpackOptions").EntryDynamicNormalized} EntryDynamic *//** @typedef {import("../declarations/WebpackOptions").EntryItem} EntryItem *//** @typedef {import("../declarations/WebpackOptions").EntryStaticNormalized} EntryStatic *//** @typedef {import("./Compiler")} Compiler */class DynamicEntryPlugin {	/**	 * @param {string} context the context path	 * @param {EntryDynamic} entry the entry value	 */	constructor(context, entry) {		this.context = context;		this.entry = entry;	}	/**	 * Apply the plugin	 * @param {Compiler} compiler the compiler instance	 * @returns {void}	 */	apply(compiler) {		compiler.hooks.compilation.tap(			"DynamicEntryPlugin",			(compilation, { normalModuleFactory }) => {				compilation.dependencyFactories.set(					EntryDependency,					normalModuleFactory				);			}		);		compiler.hooks.make.tapPromise(			"DynamicEntryPlugin",			(compilation, callback) =>				Promise.resolve(this.entry())					.then(entry => {						const promises = [];						for (const name of Object.keys(entry)) {							const desc = entry[name];							const options = EntryOptionPlugin.entryDescriptionToOptions(								compiler,								name,								desc							);							for (const entry of desc.import) {								promises.push(									new Promise((resolve, reject) => {										compilation.addEntry(											this.context,											EntryPlugin.createDependency(entry, options),											options,											err => {												if (err) return reject(err);												resolve();											}										);									})								);							}						}						return Promise.all(promises);					})					.then(x => {})		);	}}module.exports = DynamicEntryPlugin;
 |