| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 | 
							- // 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);
 
- }
 
 
  |