From bbff7403fbf46f9ad92240ac213df8d30ef31b64 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Thu, 20 Sep 2018 02:56:13 +0200 Subject: update packages --- node_modules/webpack/lib/BannerPlugin.js | 190 +++++++++++++++++++------------ 1 file changed, 117 insertions(+), 73 deletions(-) (limited to 'node_modules/webpack/lib/BannerPlugin.js') diff --git a/node_modules/webpack/lib/BannerPlugin.js b/node_modules/webpack/lib/BannerPlugin.js index 342a30328..1e9aa343c 100644 --- a/node_modules/webpack/lib/BannerPlugin.js +++ b/node_modules/webpack/lib/BannerPlugin.js @@ -1,73 +1,117 @@ -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra - */ - -"use strict"; - -const ConcatSource = require("webpack-sources").ConcatSource; -const ModuleFilenameHelpers = require("./ModuleFilenameHelpers"); - -const wrapComment = (str) => { - if(!str.includes("\n")) return `/*! ${str} */`; - return `/*!\n * ${str.split("\n").join("\n * ")}\n */`; -}; - -class BannerPlugin { - constructor(options) { - if(arguments.length > 1) - throw new Error("BannerPlugin only takes one argument (pass an options object)"); - if(typeof options === "string") - options = { - banner: options - }; - this.options = options || {}; - this.banner = this.options.raw ? options.banner : wrapComment(options.banner); - } - - apply(compiler) { - const options = this.options; - const banner = this.banner; - - compiler.plugin("compilation", (compilation) => { - compilation.plugin("optimize-chunk-assets", (chunks, callback) => { - chunks.forEach((chunk) => { - if(options.entryOnly && !chunk.isInitial()) return; - chunk.files - .filter(ModuleFilenameHelpers.matchObject.bind(undefined, options)) - .forEach((file) => { - let basename; - let query = ""; - let filename = file; - const hash = compilation.hash; - const querySplit = filename.indexOf("?"); - - if(querySplit >= 0) { - query = filename.substr(querySplit); - filename = filename.substr(0, querySplit); - } - - if(filename.indexOf("/") < 0) { - basename = filename; - } else { - basename = filename.substr(filename.lastIndexOf("/") + 1); - } - - const comment = compilation.getPath(banner, { - hash, - chunk, - filename, - basename, - query, - }); - - return compilation.assets[file] = new ConcatSource(comment, "\n", compilation.assets[file]); - }); - }); - callback(); - }); - }); - } -} - -module.exports = BannerPlugin; +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra + */ + +"use strict"; + +const { ConcatSource } = require("webpack-sources"); +const ModuleFilenameHelpers = require("./ModuleFilenameHelpers"); +const Template = require("./Template"); + +const validateOptions = require("schema-utils"); +const schema = require("../schemas/plugins/BannerPlugin.json"); + +const wrapComment = str => { + if (!str.includes("\n")) { + return Template.toComment(str); + } + return `/*!\n * ${str + .replace(/\*\//g, "* /") + .split("\n") + .join("\n * ")}\n */`; +}; + +class BannerPlugin { + constructor(options) { + if (arguments.length > 1) { + throw new Error( + "BannerPlugin only takes one argument (pass an options object)" + ); + } + + validateOptions(schema, options, "Banner Plugin"); + + if (typeof options === "string" || typeof options === "function") { + options = { + banner: options + }; + } + + this.options = options || {}; + + if (typeof options.banner === "function") { + const getBanner = this.options.banner; + this.banner = this.options.raw + ? getBanner + : data => wrapComment(getBanner(data)); + } else { + const banner = this.options.raw + ? this.options.banner + : wrapComment(this.options.banner); + this.banner = () => banner; + } + } + + apply(compiler) { + const options = this.options; + const banner = this.banner; + const matchObject = ModuleFilenameHelpers.matchObject.bind( + undefined, + options + ); + + compiler.hooks.compilation.tap("BannerPlugin", compilation => { + compilation.hooks.optimizeChunkAssets.tap("BannerPlugin", chunks => { + for (const chunk of chunks) { + if (options.entryOnly && !chunk.canBeInitial()) { + continue; + } + + for (const file of chunk.files) { + if (!matchObject(file)) { + continue; + } + + let basename; + let query = ""; + let filename = file; + const hash = compilation.hash; + const querySplit = filename.indexOf("?"); + + if (querySplit >= 0) { + query = filename.substr(querySplit); + filename = filename.substr(0, querySplit); + } + + const lastSlashIndex = filename.lastIndexOf("/"); + + if (lastSlashIndex === -1) { + basename = filename; + } else { + basename = filename.substr(lastSlashIndex + 1); + } + + const data = { + hash, + chunk, + filename, + basename, + query + }; + + const comment = compilation.getPath(banner(data), data); + + compilation.assets[file] = new ConcatSource( + comment, + "\n", + compilation.assets[file] + ); + } + } + }); + }); + } +} + +module.exports = BannerPlugin; -- cgit v1.2.3