1.0.0 • Published 8 years ago

readstream-watcher v1.0.0

Weekly downloads
1
License
MIT
Repository
-
Last release
8 years ago

ReadStream-Watcher

We got that fs.ReadStream, we got that FSWatcher, we got that combination fs.ReadStream and FSWatcher. (If the joke is lost on you, see this video.)

Installation

npm install [--save] readstream-watcher

Usage

A simple example, which prints the file's contents (entirely, unlike tail -f or similar) once every time the file changes.

var createReadStreamWatcher = require('readstream-watcher');

function printWaitLoop() {
  createReadStreamWatcher('./some-file')
    .once('change', function () {
      this.close();
      this.unpipe(process.stdout);
      printWaitLoop();
    })
    .pipe(process.stdout);
}

printWaitLoop();

ReadStreamWatcher interface

As it turns out, there are a lot of undocumented methods on ReadStream and FSWatcher instances. As a result, and to avoid confusing collisions, only a subset of their API is supported:

PropertyOriginDescription
pathReadStreamThe path to the file the stream is reading from.
pipe(destination, [options])ReadStreamWrites all the data to the supplied destination.
read([size])ReadStreamReturns size bytes of available data, returning null otherwise.
close()FSWatcherStop watching for changes on the given FSWatcher. No changes are made to the stream.
EventOriginDescription
openReadStreamEmitted when the ReadStream's file is opened with the now-open file descriptor.
closeReadStreamEmitted when the stream and any of its underlying resources have been closed.
dataReadStreamEmitted when data is available, setting the stream into flowing mode.
endReadStreamEmitted when there will be no more data to read.
readableReadStreamEmitted when a chunk of data can be read from the stream.
changeFSWatcherEmitted when something changes in the watched file.
errorReadStream/FSWatcherEmitted when an error occurs, passing along that Error instance.

Finally, the constructor itself, returned when require-ing the module, accepts two arguments: the filename to watch, and options to pass into both the ReadStream and the FSWatcher. The supported options, then, are the sum of those two constructors. The most common options are:

OptionOriginDescription
encodingReadStreamIf specified, data read will be in the specified format in lieu of Buffers. Defaults to null.
persistentFSWatcherIf true, the process should continue to run as long as files are being watched. Defaults to true.

Relevant Links