index.js
function processFileBySha1Hash(stream, firstPass, basePath, file, cache) {
  // null cannot be hashed
  if (file.contents === null) {
    // if element is really a file, something weird happened, but it's safer
    // to assume it was changed (because we cannot said that it wasn't)
    // if it's not a file, we don't care, do we? does anybody transform directories?
    if (file.stat.isFile()) {
      stream.push(file);
    }
  } else {
    var newHash = crypto.createHash('sha1').update(file.contents).digest('hex');
    var filePath = basePath ? path.relative(basePath, file.path) : file.path;
    var currentHash = cache[filePath];

    cache[filePath] = newHash;

    if ((!currentHash && firstPass) || (currentHash && currentHash !== newHash)) {
      stream.push(file);
    }
  }
}
function processFileBySha1Hash(stream, firstPass, basePath, file, cache) {
  // null cannot be hashed
  if (file.contents === null) {
    // if element is really a file, something weird happened, but it's safer
    // to assume it was changed (because we cannot said that it wasn't)
    // if it's not a file, we don't care, do we? does anybody transform directories?
    if (file.stat.isFile()) {
      stream.push(file);
    }
  } else {
    var newHash = crypto.createHash('sha1').update(file.contents).digest('hex');
    var filePath = basePath ? path.relative(basePath, file.path) : file.path;
    var currentHash = cache[filePath];

    cache[filePath] = newHash;

    if ((!currentHash && firstPass) || (currentHash && currentHash !== newHash)) {
      stream.push(file);
    }
  }
}
function processFileBySha1Hash ( stream , firstPass , basePath , file , cache ) { // null cannot be hashed if ( file . contents === null ) { // if element is really a file, something weird happened, but it's safer // to assume it was changed (because we cannot said that it wasn't) // if it's not a file, we don't care, do we? does anybody transform directories? if ( file . stat . isFile ( ) ) { stream . push ( file ) ; } } else { var newHash = crypto . createHash ( 'sha1' ) . update ( file . contents ) . digest ( 'hex' ) ; var filePath = basePath ? path . relative ( basePath , file . path ) : file . path ; var currentHash = cache [ filePath ] ; cache [ filePath ] = newHash ; if ( ( ! currentHash && firstPass ) || ( currentHash && currentHash !== newHash ) ) { stream . push ( file ) ; } } }
look for changes by sha1 hash
look for changes by sha1 hash