docs: 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);
      }
    }
  }