LarpixClient/electron/node_modules/electron-updater/out/differentialDownloader/FileWithEmbeddedBlockMapDifferentialDownloader.js
2026-05-10 14:02:17 +02:00

37 lines
No EOL
1.8 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileWithEmbeddedBlockMapDifferentialDownloader = void 0;
const fs_extra_1 = require("fs-extra");
const DifferentialDownloader_1 = require("./DifferentialDownloader");
const zlib_1 = require("zlib");
class FileWithEmbeddedBlockMapDifferentialDownloader extends DifferentialDownloader_1.DifferentialDownloader {
async download() {
const packageInfo = this.blockAwareFileInfo;
const fileSize = packageInfo.size;
const offset = fileSize - (packageInfo.blockMapSize + 4);
this.fileMetadataBuffer = await this.readRemoteBytes(offset, fileSize - 1);
const newBlockMap = readBlockMap(this.fileMetadataBuffer.slice(0, this.fileMetadataBuffer.length - 4));
await this.doDownload(await readEmbeddedBlockMapData(this.options.oldFile), newBlockMap);
}
}
exports.FileWithEmbeddedBlockMapDifferentialDownloader = FileWithEmbeddedBlockMapDifferentialDownloader;
function readBlockMap(data) {
return JSON.parse(zlib_1.inflateRawSync(data).toString());
}
async function readEmbeddedBlockMapData(file) {
const fd = await fs_extra_1.open(file, "r");
try {
const fileSize = (await fs_extra_1.fstat(fd)).size;
const sizeBuffer = Buffer.allocUnsafe(4);
await fs_extra_1.read(fd, sizeBuffer, 0, sizeBuffer.length, fileSize - sizeBuffer.length);
const dataBuffer = Buffer.allocUnsafe(sizeBuffer.readUInt32BE(0));
await fs_extra_1.read(fd, dataBuffer, 0, dataBuffer.length, fileSize - sizeBuffer.length - dataBuffer.length);
await fs_extra_1.close(fd);
return readBlockMap(dataBuffer);
}
catch (e) {
await fs_extra_1.close(fd);
throw e;
}
}
//# sourceMappingURL=FileWithEmbeddedBlockMapDifferentialDownloader.js.map