@naandalist/patch-package
Version:
Fix broken node modules with no fuss
27 lines • 3.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.hashFile = void 0;
const crypto_1 = require("crypto");
const fs_1 = require("fs");
const bufferSize = 1024;
const buffer = Buffer.alloc(bufferSize);
function hashFile(filePath) {
const sha = (0, crypto_1.createHash)("sha256");
const fileDescriptor = (0, fs_1.openSync)(filePath, "r");
const size = (0, fs_1.statSync)(filePath).size;
let totalBytesRead = 0;
while (totalBytesRead < size) {
const bytesRead = (0, fs_1.readSync)(fileDescriptor, buffer, 0, Math.min(size - totalBytesRead, bufferSize), totalBytesRead);
if (bytesRead < bufferSize) {
sha.update(buffer.slice(0, bytesRead));
}
else {
sha.update(buffer);
}
totalBytesRead += bytesRead;
}
(0, fs_1.closeSync)(fileDescriptor);
return sha.digest("hex");
}
exports.hashFile = hashFile;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oYXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFtQztBQUNuQywyQkFBNEQ7QUFFNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFBO0FBRXZCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7QUFFdkMsU0FBZ0IsUUFBUSxDQUFDLFFBQWdCO0lBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUEsbUJBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQTtJQUNoQyxNQUFNLGNBQWMsR0FBRyxJQUFBLGFBQVEsRUFBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBQSxhQUFRLEVBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQ3BDLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQTtJQUN0QixPQUFPLGNBQWMsR0FBRyxJQUFJLEVBQUU7UUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBQSxhQUFRLEVBQ3hCLGNBQWMsRUFDZCxNQUFNLEVBQ04sQ0FBQyxFQUNELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLGNBQWMsRUFBRSxVQUFVLENBQUMsRUFDM0MsY0FBYyxDQUNmLENBQUE7UUFDRCxJQUFJLFNBQVMsR0FBRyxVQUFVLEVBQUU7WUFDMUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFBO1NBQ3ZDO2FBQU07WUFDTCxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQ25CO1FBQ0QsY0FBYyxJQUFJLFNBQVMsQ0FBQTtLQUM1QjtJQUNELElBQUEsY0FBUyxFQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3pCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUMxQixDQUFDO0FBdEJELDRCQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCJcbmltcG9ydCB7IG9wZW5TeW5jLCByZWFkU3luYywgY2xvc2VTeW5jLCBzdGF0U3luYyB9IGZyb20gXCJmc1wiXG5cbmNvbnN0IGJ1ZmZlclNpemUgPSAxMDI0XG5cbmNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyhidWZmZXJTaXplKVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaEZpbGUoZmlsZVBhdGg6IHN0cmluZykge1xuICBjb25zdCBzaGEgPSBjcmVhdGVIYXNoKFwic2hhMjU2XCIpXG4gIGNvbnN0IGZpbGVEZXNjcmlwdG9yID0gb3BlblN5bmMoZmlsZVBhdGgsIFwiclwiKVxuICBjb25zdCBzaXplID0gc3RhdFN5bmMoZmlsZVBhdGgpLnNpemVcbiAgbGV0IHRvdGFsQnl0ZXNSZWFkID0gMFxuICB3aGlsZSAodG90YWxCeXRlc1JlYWQgPCBzaXplKSB7XG4gICAgY29uc3QgYnl0ZXNSZWFkID0gcmVhZFN5bmMoXG4gICAgICBmaWxlRGVzY3JpcHRvcixcbiAgICAgIGJ1ZmZlcixcbiAgICAgIDAsXG4gICAgICBNYXRoLm1pbihzaXplIC0gdG90YWxCeXRlc1JlYWQsIGJ1ZmZlclNpemUpLFxuICAgICAgdG90YWxCeXRlc1JlYWQsXG4gICAgKVxuICAgIGlmIChieXRlc1JlYWQgPCBidWZmZXJTaXplKSB7XG4gICAgICBzaGEudXBkYXRlKGJ1ZmZlci5zbGljZSgwLCBieXRlc1JlYWQpKVxuICAgIH0gZWxzZSB7XG4gICAgICBzaGEudXBkYXRlKGJ1ZmZlcilcbiAgICB9XG4gICAgdG90YWxCeXRlc1JlYWQgKz0gYnl0ZXNSZWFkXG4gIH1cbiAgY2xvc2VTeW5jKGZpbGVEZXNjcmlwdG9yKVxuICByZXR1cm4gc2hhLmRpZ2VzdChcImhleFwiKVxufVxuIl19