"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findFile = findFile; exports.parseUpdateInfo = parseUpdateInfo; exports.getFileList = getFileList; exports.resolveFiles = resolveFiles; exports.Provider = void 0; function _builderUtilRuntime() { const data = require("builder-util-runtime"); _builderUtilRuntime = function () { return data; }; return data; } function _jsYaml() { const data = require("js-yaml"); _jsYaml = function () { return data; }; return data; } function _main() { const data = require("./main"); _main = function () { return data; }; return data; } class Provider { constructor(executor, useMultipleRangeRequest = true) { this.executor = executor; this.useMultipleRangeRequest = useMultipleRangeRequest; this.requestHeaders = null; } get fileExtraDownloadHeaders() { return null; } setRequestHeaders(value) { this.requestHeaders = value; } httpRequest(url, headers, cancellationToken) { return this.executor.request(this.createRequestOptions(url, headers), cancellationToken); } createRequestOptions(url, headers) { const result = {}; if (this.requestHeaders == null) { if (headers != null) { result.headers = headers; } } else { result.headers = headers == null ? this.requestHeaders : Object.assign({}, this.requestHeaders, headers); } result.protocol = url.protocol; result.hostname = url.hostname; if (url.port) { result.port = url.port; } result.path = url.pathname + url.search; return result; } } exports.Provider = Provider; function findFile(files, extension, not) { if (files.length === 0) { throw (0, _builderUtilRuntime().newError)("No files provided", "ERR_UPDATER_NO_FILES_PROVIDED"); } const result = files.find(it => it.url.pathname.toLowerCase().endsWith(`.${extension}`)); if (result != null) { return result; } else if (not == null) { return files[0]; } else { return files.find(fileInfo => !not.some(ext => fileInfo.url.pathname.toLowerCase().endsWith(`.${ext}`))); } } function parseUpdateInfo(rawData, channelFile, channelFileUrl) { if (rawData == null) { throw (0, _builderUtilRuntime().newError)(`Cannot parse update info from ${channelFile} in the latest release artifacts (${channelFileUrl}): rawData: null`, "ERR_UPDATER_INVALID_UPDATE_INFO"); } let result; try { result = (0, _jsYaml().safeLoad)(rawData); } catch (e) { throw (0, _builderUtilRuntime().newError)(`Cannot parse update info from ${channelFile} in the latest release artifacts (${channelFileUrl}): ${e.stack || e.message}, rawData: ${rawData}`, "ERR_UPDATER_INVALID_UPDATE_INFO"); } return result; } function getFileList(updateInfo) { const files = updateInfo.files; if (files != null && files.length > 0) { return files; } if (updateInfo.path != null) { return [{ url: updateInfo.path, sha512: updateInfo.sha512 }]; } else { throw (0, _builderUtilRuntime().newError)(`No files provided: ${(0, _builderUtilRuntime().safeStringifyJson)(updateInfo)}`, "ERR_UPDATER_NO_FILES_PROVIDED"); } } function resolveFiles(updateInfo, baseUrl, pathTransformer = p => p) { const files = getFileList(updateInfo); const result = files.map(fileInfo => { if (fileInfo.sha2 == null && fileInfo.sha512 == null) { throw (0, _builderUtilRuntime().newError)(`Update info doesn't contain nor sha256 neither sha512 checksum: ${(0, _builderUtilRuntime().safeStringifyJson)(fileInfo)}`, "ERR_UPDATER_NO_CHECKSUM"); } return { url: (0, _main().newUrlFromBase)(pathTransformer(fileInfo.url), baseUrl), info: fileInfo }; }); const packages = updateInfo.packages; const packageInfo = packages == null ? null : packages[process.arch] || packages.ia32; if (packageInfo != null) { result[0].packageInfo = Object.assign({}, packageInfo, { path: (0, _main().newUrlFromBase)(pathTransformer(packageInfo.path), baseUrl).href }); } return result; } //# sourceMappingURL=Provider.js.map