text: /*
  	MIT License http://www.opensource.org/licenses/mit-license.php
  	Author Tobias Koppers @sokra
  */
  
  "use strict";
  
  const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
  
  /** @typedef {import("../declarations/WebpackOptions").AuxiliaryComment} AuxiliaryComment */
  /** @typedef {import("../declarations/WebpackOptions").LibraryExport} LibraryExport */
  /** @typedef {import("../declarations/WebpackOptions").LibraryName} LibraryName */
  /** @typedef {import("../declarations/WebpackOptions").LibraryType} LibraryType */
  /** @typedef {import("../declarations/WebpackOptions").UmdNamedDefine} UmdNamedDefine */
  /** @typedef {import("./Compiler")} Compiler */
  
  // TODO webpack 6 remove
  class LibraryTemplatePlugin {
  	/**
  	 * @param {LibraryName} name name of library
  	 * @param {LibraryType} target type of library
  	 * @param {UmdNamedDefine} umdNamedDefine setting this to true will name the UMD module
  	 * @param {AuxiliaryComment} auxiliaryComment comment in the UMD wrapper
  	 * @param {LibraryExport} exportProperty which export should be exposed as library
  	 */
  	constructor(name, target, umdNamedDefine, auxiliaryComment, exportProperty) {
  		this.library = {
  			type: target || "var",
  			name,
  			umdNamedDefine,
  			auxiliaryComment,
  			export: exportProperty
  		};
  	}
  
  	/**
  	 * Apply the plugin
  	 * @param {Compiler} compiler the compiler instance
  	 * @returns {void}
  	 */
  	apply(compiler) {
  		const { output } = compiler.options;
  		output.library = this.library;
  		new EnableLibraryPlugin(this.library.type).apply(compiler);
  	}
  }
  
  module.exports = LibraryTemplatePlugin;
  