aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/WatchIgnorePlugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/WatchIgnorePlugin.js')
-rw-r--r--node_modules/webpack/lib/WatchIgnorePlugin.js149
1 files changed, 100 insertions, 49 deletions
diff --git a/node_modules/webpack/lib/WatchIgnorePlugin.js b/node_modules/webpack/lib/WatchIgnorePlugin.js
index 9b74b3c20..2f81ee839 100644
--- a/node_modules/webpack/lib/WatchIgnorePlugin.js
+++ b/node_modules/webpack/lib/WatchIgnorePlugin.js
@@ -1,49 +1,100 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-"use strict";
-
-class WatchIgnorePlugin {
- constructor(paths) {
- this.paths = paths;
- }
-
- apply(compiler) {
- compiler.plugin("after-environment", () => {
- compiler.watchFileSystem = new IgnoringWatchFileSystem(compiler.watchFileSystem, this.paths);
- });
- }
-}
-
-module.exports = WatchIgnorePlugin;
-
-class IgnoringWatchFileSystem {
- constructor(wfs, paths) {
- this.wfs = wfs;
- this.paths = paths;
- }
-
- watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
- const ignored = path => this.paths.some(p => p instanceof RegExp ? p.test(path) : path.indexOf(p) === 0);
-
- const notIgnored = path => !ignored(path);
-
- const ignoredFiles = files.filter(ignored);
- const ignoredDirs = dirs.filter(ignored);
-
- this.wfs.watch(files.filter(notIgnored), dirs.filter(notIgnored), missing, startTime, options, (err, filesModified, dirsModified, missingModified, fileTimestamps, dirTimestamps) => {
- if(err) return callback(err);
-
- ignoredFiles.forEach(path => {
- fileTimestamps[path] = 1;
- });
-
- ignoredDirs.forEach(path => {
- dirTimestamps[path] = 1;
- });
-
- callback(err, filesModified, dirsModified, missingModified, fileTimestamps, dirTimestamps);
- }, callbackUndelayed);
- }
-}
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const validateOptions = require("schema-utils");
+const schema = require("../schemas/plugins/WatchIgnorePlugin.json");
+
+class IgnoringWatchFileSystem {
+ constructor(wfs, paths) {
+ this.wfs = wfs;
+ this.paths = paths;
+ }
+
+ watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
+ const ignored = path =>
+ this.paths.some(
+ p => (p instanceof RegExp ? p.test(path) : path.indexOf(p) === 0)
+ );
+
+ const notIgnored = path => !ignored(path);
+
+ const ignoredFiles = files.filter(ignored);
+ const ignoredDirs = dirs.filter(ignored);
+
+ const watcher = this.wfs.watch(
+ files.filter(notIgnored),
+ dirs.filter(notIgnored),
+ missing,
+ startTime,
+ options,
+ (
+ err,
+ filesModified,
+ dirsModified,
+ missingModified,
+ fileTimestamps,
+ dirTimestamps
+ ) => {
+ if (err) return callback(err);
+
+ for (const path of ignoredFiles) {
+ fileTimestamps.set(path, 1);
+ }
+
+ for (const path of ignoredDirs) {
+ dirTimestamps.set(path, 1);
+ }
+
+ callback(
+ err,
+ filesModified,
+ dirsModified,
+ missingModified,
+ fileTimestamps,
+ dirTimestamps
+ );
+ },
+ callbackUndelayed
+ );
+
+ return {
+ close: () => watcher.close(),
+ pause: () => watcher.pause(),
+ getContextTimestamps: () => {
+ const dirTimestamps = watcher.getContextTimestamps();
+ for (const path of ignoredDirs) {
+ dirTimestamps.set(path, 1);
+ }
+ return dirTimestamps;
+ },
+ getFileTimestamps: () => {
+ const fileTimestamps = watcher.getFileTimestamps();
+ for (const path of ignoredFiles) {
+ fileTimestamps.set(path, 1);
+ }
+ return fileTimestamps;
+ }
+ };
+ }
+}
+
+class WatchIgnorePlugin {
+ constructor(paths) {
+ validateOptions(schema, paths, "Watch Ignore Plugin");
+ this.paths = paths;
+ }
+
+ apply(compiler) {
+ compiler.hooks.afterEnvironment.tap("WatchIgnorePlugin", () => {
+ compiler.watchFileSystem = new IgnoringWatchFileSystem(
+ compiler.watchFileSystem,
+ this.paths
+ );
+ });
+ }
+}
+
+module.exports = WatchIgnorePlugin;