@trezor/connect
Version:
High-level javascript interface for Trezor hardware wallet.
32 lines • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBinaryForFirmwareUpgrade = void 0;
const utils_1 = require("@trezor/utils");
const getBinary_1 = require("./getBinary");
const firmwareInfo_1 = require("../../data/firmwareInfo");
const assets_1 = require("../../utils/assets");
const firmwareUtils_1 = require("../../utils/firmwareUtils");
const getBinaryForFirmwareUpgrade = ({ releases, baseUrl, version, btcOnly, intermediaryVersion, features, }) => {
if (!(0, firmwareUtils_1.isStrictFeatures)(features)) {
throw new Error('Features of unexpected shape provided');
}
if (intermediaryVersion) {
return (0, assets_1.httpRequest)(`${baseUrl}/firmware/t1b1/trezor-t1b1-inter-v${intermediaryVersion}.bin`, 'binary');
}
const infoByBootloader = (0, firmwareInfo_1.getInfo)({ features, releases });
const releaseByFirmware = releases.find(r => version &&
utils_1.versionUtils.isVersionArray(version) &&
utils_1.versionUtils.isEqual(r.version, version));
if (!infoByBootloader || !releaseByFirmware) {
throw new Error('no firmware found for this device');
}
if (btcOnly && !releaseByFirmware.url_bitcoinonly) {
throw new Error(`firmware version ${version} does not exist in btc only variant`);
}
if (!utils_1.versionUtils.isEqual(releaseByFirmware.version, infoByBootloader.release.version)) {
throw new Error(`version provided as param (${releaseByFirmware.version}) does not match firmware version found by features in bootloader (${infoByBootloader.release.version})`);
}
return (0, getBinary_1.getBinary)({ release: releaseByFirmware, baseUrl, btcOnly });
};
exports.getBinaryForFirmwareUpgrade = getBinaryForFirmwareUpgrade;
//# sourceMappingURL=getBinaryForFirmwareUpgrade.js.map