mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-12 07:04:52 +09:00
Fix missing module declarations, broken lings, broken formating and incorrect scopes in the documentation. For modules split over several files it appears the only viable option is to use the memberof directive on each documented member and only declare the index file as a module.
46 lines
982 B
JavaScript
46 lines
982 B
JavaScript
/**
|
|
* Hashing functions
|
|
* @module
|
|
*/
|
|
const crypto = require('crypto');
|
|
const fs = require('fs');
|
|
|
|
|
|
/**
|
|
* Returns a promise that resolves to the SHA1 hash of the stream given
|
|
*
|
|
* @param stream - Node stream of the content to hash.
|
|
* @returns {Promise<string>} hash of the stream.
|
|
*/
|
|
function hashStream(stream) {
|
|
return new Promise(function(resolve, reject) {
|
|
let hasher = crypto.createHash('sha1')
|
|
hasher.setEncoding('hex')
|
|
hasher.on('finish', function() {
|
|
resolve(hasher.read());
|
|
});
|
|
|
|
stream.on('error', function(error) {
|
|
// the docs doesn't say anything about what's passed on error
|
|
reject(error);
|
|
});
|
|
|
|
stream.pipe(hasher);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Returns a promise that resolves to the SHA1 hash of the file given by path
|
|
*
|
|
* @param {string} path - Path to the file to hash.
|
|
* @returns {Promise<string>} hash of the file given.
|
|
*/
|
|
function hashFile(path) {
|
|
return hashStream(fs.createReadStream(path));
|
|
}
|
|
|
|
module.exports = {
|
|
hashStream,
|
|
hashFile,
|
|
}
|