{"size": 1630, "ext": "js", "max_stars_repo_path": "node_modules/webpack/lib/LibraryTemplatePlugin.js", "max_stars_repo_name": "ericdmoore/vfile", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "node_modules/webpack/lib/LibraryTemplatePlugin.js", "max_issues_repo_name": "ericdmoore/vfile", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "node_modules/webpack/lib/LibraryTemplatePlugin.js", "max_forks_repo_name": "ericdmoore/vfile", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 33.2653061224, "max_line_length": 92, "alphanum_fraction": 0.7104294479}
/*
	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;
