(core) move home server into core

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
This commit is contained in:
Paul Fitzpatrick
2020-07-21 09:20:51 -04:00
parent c756f663ee
commit 5ef889addd
218 changed files with 33640 additions and 38 deletions

View File

@@ -0,0 +1,21 @@
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.
}
}