From de98e0b232509d5f40c135d540a70e415272ff85 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 3 May 2017 15:35:00 +0200 Subject: node_modules --- node_modules/webpack/lib/CachePlugin.js | 79 +++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 node_modules/webpack/lib/CachePlugin.js (limited to 'node_modules/webpack/lib/CachePlugin.js') diff --git a/node_modules/webpack/lib/CachePlugin.js b/node_modules/webpack/lib/CachePlugin.js new file mode 100644 index 000000000..1b8d6a30e --- /dev/null +++ b/node_modules/webpack/lib/CachePlugin.js @@ -0,0 +1,79 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +"use strict"; + +const asyncLib = require("async"); + +class CachePlugin { + constructor(cache) { + this.cache = cache || {}; + this.FS_ACCURENCY = 2000; + } + + apply(compiler) { + if(Array.isArray(compiler.compilers)) { + compiler.compilers.forEach((c, idx) => { + c.apply(new CachePlugin(this.cache[idx] = this.cache[idx] || {})); + }); + } else { + compiler.plugin("compilation", compilation => { + if(!compilation.notCacheable) { + compilation.cache = this.cache; + } else if(this.watching) { + compilation.warnings.push( + new Error(`CachePlugin - Cache cannot be used because of: ${compilation.notCacheable}`) + ); + } + }); + compiler.plugin("watch-run", (compiler, callback) => { + this.watching = true; + callback(); + }); + compiler.plugin("run", (compiler, callback) => { + if(!compiler._lastCompilationFileDependencies) return callback(); + const fs = compiler.inputFileSystem; + const fileTs = compiler.fileTimestamps = {}; + asyncLib.forEach(compiler._lastCompilationFileDependencies, (file, callback) => { + fs.stat(file, (err, stat) => { + if(err) { + if(err.code === "ENOENT") return callback(); + return callback(err); + } + + if(stat.mtime) + this.applyMtime(+stat.mtime); + + fileTs[file] = +stat.mtime || Infinity; + callback(); + }); + }, err => { + if(err) return callback(err); + Object.keys(fileTs).forEach(key => { + fileTs[key] += this.FS_ACCURENCY; + }); + callback(); + }); + }); + compiler.plugin("after-compile", function(compilation, callback) { + compilation.compiler._lastCompilationFileDependencies = compilation.fileDependencies; + compilation.compiler._lastCompilationContextDependencies = compilation.contextDependencies; + callback(); + }); + } + } + + /* istanbul ignore next */ + applyMtime(mtime) { + if(this.FS_ACCURENCY > 1 && mtime % 2 !== 0) + this.FS_ACCURENCY = 1; + else if(this.FS_ACCURENCY > 10 && mtime % 20 !== 0) + this.FS_ACCURENCY = 10; + else if(this.FS_ACCURENCY > 100 && mtime % 200 !== 0) + this.FS_ACCURENCY = 100; + else if(this.FS_ACCURENCY > 1000 && mtime % 2000 !== 0) + this.FS_ACCURENCY = 1000; + } +} +module.exports = CachePlugin; -- cgit v1.2.3