Closed
Description
package.json
{
"dependencies": {
"node-fetch": "^3.3.2"
}
}
main.mjs
import crypto from "node:crypto";
import fs from "node:fs";
import zlib from "node:zlib";
import { pipeline } from 'node:stream';
import { promisify } from 'node:util'
import fetch from "node-fetch";
const streamPipeline = promisify(pipeline);
try {
fs.unlinkSync("./schema-engine.exe");
} catch {}
const response = await fetch('https://binaries.prisma.sh/all_commits/2804dc98259d2ea960602aca6b8e7fdc03c1758f/windows/schema-engine.exe.gz');
const gunzip = zlib.createGunzip();
gunzip.on("error", (err) => console.log(err));
streamPipeline(response.body, gunzip);
const output = fs.createWriteStream("./schema-engine.exe");
const writeStream = gunzip.pipe(output);
writeStream.on("close", () => {
console.log("Done");
getHash("./schema-engine.exe").then((hash) => {
console.log("Expected: d71565ea5e98b3cbbced66f4220d62bd221fa5cebd038d2875d66c83b29643c6")
console.log("Actual: " + hash);
});
});
function getHash(filePath) {
const hash = crypto.createHash("sha256");
const input = fs.createReadStream(filePath);
return new Promise((resolve) => {
input.on("readable", () => {
const data = input.read();
if (data) {
hash.update(data);
} else {
resolve(hash.digest("hex"));
}
});
});
}
> deno run -A main.mjs
Done
Expected: d71565ea5e98b3cbbced66f4220d62bd221fa5cebd038d2875d66c83b29643c6
Actual: cdc7fc9c9202eddad3ef16dabddc8f7be2876456baef268f4d32c6042fdfe8e8 <-- this changes between runs
> node main.mjs
Done
Expected: d71565ea5e98b3cbbced66f4220d62bd221fa5cebd038d2875d66c83b29643c6
Actual: d71565ea5e98b3cbbced66f4220d62bd221fa5cebd038d2875d66c83b29643c6