mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
5ef889addd
Summary: This moves enough server material into core to run a home server. The data engine is not yet incorporated (though in manual testing it works when ported). Test Plan: existing tests pass Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D2552
22 lines
693 B
TypeScript
22 lines
693 B
TypeScript
import {createHash} from 'crypto';
|
|
import * as fs from 'fs';
|
|
|
|
/**
|
|
* Computes hash of the file at the given path, using 'sha1' by default, or any algorithm
|
|
* supported by crypto.createHash().
|
|
*/
|
|
export async function checksumFile(filePath: string, algorithm: string = 'sha1'): Promise<string> {
|
|
const shaSum = createHash(algorithm);
|
|
const stream = fs.createReadStream(filePath);
|
|
try {
|
|
stream.on('data', (data) => shaSum.update(data));
|
|
await new Promise<void>((resolve, reject) => {
|
|
stream.on('end', resolve);
|
|
stream.on('error', reject);
|
|
});
|
|
return shaSum.digest('hex');
|
|
} finally {
|
|
stream.removeAllListeners(); // Isn't strictly necessary.
|
|
}
|
|
}
|