in src/providers/fs.js [44:73]
function _fetchEtag(pathname, stat) {
return new Promise((resolve, reject) => {
const cached = etagCache[pathname];
if (cached && cached.timestamp === stat.mtime) {
return resolve(cached.value);
}
// the file you want to get the hash
const fd = fs.createReadStream(pathname);
const hash = crypto.createHash("md5");
hash.setEncoding("hex");
fd.on("error", (err) => {
reject(err);
});
fd.on("end", () => {
hash.end();
const etag = hash.read();
etagCache[pathname] = {
timestamp: stat.mtime,
value: etag
};
resolve(etag);
});
// read all file and pipe it (write it) to the hash object
return fd.pipe(hash);
});
}