Initial commit
[yaffs-website] / node_modules / glob-watcher / index.js
1 var gaze = require('gaze');
2 var EventEmitter = require('events').EventEmitter;
3
4 module.exports = function(glob, opts, cb) {
5   var out = new EventEmitter();
6
7   if (typeof opts === 'function') {
8     cb = opts;
9     opts = {};
10   }
11
12   var watcher = gaze(glob, opts, function(err, rwatcher){
13     if (err) out.emit('error', err);
14     rwatcher.on('all', function(evt, path, old){
15       var outEvt = {type: evt, path: path};
16       if(old) outEvt.old = old;
17       out.emit('change', outEvt);
18       if(cb) cb(outEvt);
19     });
20   });
21
22   watcher.on('end', out.emit.bind(out, 'end'));
23   watcher.on('error', out.emit.bind(out, 'error'));
24   watcher.on('ready', out.emit.bind(out, 'ready'));
25   watcher.on('nomatch', out.emit.bind(out, 'nomatch'));
26
27   out.end = function(){
28     return watcher.close();
29   };
30   out.add = function(){
31     return watcher.add.apply(watcher, arguments);
32   };
33   out.remove = function(){
34     return watcher.remove();
35   };
36   out._watcher = watcher;
37
38   return out;
39 };