aboutsummaryrefslogtreecommitdiff
path: root/node_modules/jest-haste-map/build/watchers/common.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/jest-haste-map/build/watchers/common.js')
-rw-r--r--node_modules/jest-haste-map/build/watchers/common.js114
1 files changed, 114 insertions, 0 deletions
diff --git a/node_modules/jest-haste-map/build/watchers/common.js b/node_modules/jest-haste-map/build/watchers/common.js
new file mode 100644
index 0000000..6372744
--- /dev/null
+++ b/node_modules/jest-haste-map/build/watchers/common.js
@@ -0,0 +1,114 @@
+// vendored from https://github.com/amasad/sane/blob/64ff3a870c42e84f744086884bf55a4f9c22d376/src/common.js
+'use strict';
+
+const platform = require('os').platform();
+
+const path = require('path');
+
+const anymatch = require('anymatch');
+
+const micromatch = require('micromatch');
+
+const walker = require('walker');
+/**
+ * Constants
+ */
+
+exports.DEFAULT_DELAY = 100;
+exports.CHANGE_EVENT = 'change';
+exports.DELETE_EVENT = 'delete';
+exports.ADD_EVENT = 'add';
+exports.ALL_EVENT = 'all';
+/**
+ * Assigns options to the watcher.
+ *
+ * @param {NodeWatcher|PollWatcher|WatchmanWatcher} watcher
+ * @param {?object} opts
+ * @return {boolean}
+ * @public
+ */
+
+exports.assignOptions = function (watcher, opts) {
+ opts = opts || {};
+ watcher.globs = opts.glob || [];
+ watcher.dot = opts.dot || false;
+ watcher.ignored = opts.ignored || false;
+
+ if (!Array.isArray(watcher.globs)) {
+ watcher.globs = [watcher.globs];
+ }
+
+ watcher.hasIgnore =
+ Boolean(opts.ignored) && !(Array.isArray(opts) && opts.length > 0);
+ watcher.doIgnore = opts.ignored ? anymatch(opts.ignored) : () => false;
+
+ if (opts.watchman && opts.watchmanPath) {
+ watcher.watchmanPath = opts.watchmanPath;
+ }
+
+ return opts;
+};
+/**
+ * Checks a file relative path against the globs array.
+ *
+ * @param {array} globs
+ * @param {string} relativePath
+ * @return {boolean}
+ * @public
+ */
+
+exports.isFileIncluded = function (globs, dot, doIgnore, relativePath) {
+ if (doIgnore(relativePath)) {
+ return false;
+ }
+
+ return globs.length
+ ? micromatch.some(relativePath, globs, {
+ dot
+ })
+ : dot || micromatch.some(relativePath, '**/*');
+};
+/**
+ * Traverse a directory recursively calling `callback` on every directory.
+ *
+ * @param {string} dir
+ * @param {function} dirCallback
+ * @param {function} fileCallback
+ * @param {function} endCallback
+ * @param {*} ignored
+ * @public
+ */
+
+exports.recReaddir = function (
+ dir,
+ dirCallback,
+ fileCallback,
+ endCallback,
+ errorCallback,
+ ignored
+) {
+ walker(dir)
+ .filterDir(currentDir => !anymatch(ignored, currentDir))
+ .on('dir', normalizeProxy(dirCallback))
+ .on('file', normalizeProxy(fileCallback))
+ .on('error', errorCallback)
+ .on('end', () => {
+ if (platform === 'win32') {
+ setTimeout(endCallback, 1000);
+ } else {
+ endCallback();
+ }
+ });
+};
+/**
+ * Returns a callback that when called will normalize a path and call the
+ * original callback
+ *
+ * @param {function} callback
+ * @return {function}
+ * @private
+ */
+
+function normalizeProxy(callback) {
+ return (filepath, stats) => callback(path.normalize(filepath), stats);
+}