UNPKG

electron-builder-util

Version:

Part of [electron-builder](https://github.com/electron-userland/electron-builder).

186 lines (153 loc) 6.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.httpExecutor = exports.NodeHttpExecutor = undefined; var _bluebirdLst; function _load_bluebirdLst() { return _bluebirdLst = require("bluebird-lst"); } // only https proxy let proxyFromNpm = (() => { var _ref = (0, (_bluebirdLst || _load_bluebirdLst()).coroutine)(function* () { let data = ""; try { data = yield (0, (_fsExtraP || _load_fsExtraP()).readFile)(_path.join((0, (_os || _load_os()).homedir)(), ".npmrc"), "utf-8"); } catch (ignored) { return null; } if (!data) { return null; } try { const config = (0, (_ini || _load_ini()).parse)(data); return config["https-proxy"] || config.proxy; } catch (e) { // used in nsis auto-updater, do not use .util.warn here console.warn(e); return null; } }); return function proxyFromNpm() { return _ref.apply(this, arguments); }; })(); // only https url let createAgent = (() => { var _ref2 = (0, (_bluebirdLst || _load_bluebirdLst()).coroutine)(function* () { let proxyString = process.env.npm_config_https_proxy || process.env.HTTPS_PROXY || process.env.https_proxy || process.env.npm_config_proxy; if (!proxyString) { proxyString = yield proxyFromNpm(); if (!proxyString) { return null; } } const proxy = (0, (_url || _load_url()).parse)(proxyString); const proxyProtocol = proxy.protocol === "https:" ? "Https" : "Http"; return require("tunnel-agent")[`httpsOver${proxyProtocol}`]({ proxy: { port: proxy.port || (proxyProtocol === "Https" ? 443 : 80), host: proxy.hostname, proxyAuth: proxy.auth } }); }); return function createAgent() { return _ref2.apply(this, arguments); }; })(); //# sourceMappingURL=nodeHttpExecutor.js.map var _debug2; function _load_debug() { return _debug2 = _interopRequireDefault(require("debug")); } var _electronBuilderHttp; function _load_electronBuilderHttp() { return _electronBuilderHttp = require("electron-builder-http"); } var _fsExtraP; function _load_fsExtraP() { return _fsExtraP = require("fs-extra-p"); } var _http; function _load_http() { return _http = require("http"); } var _https; function _load_https() { return _https = _interopRequireWildcard(require("https")); } var _ini; function _load_ini() { return _ini = require("ini"); } var _os; function _load_os() { return _os = require("os"); } var _path = _interopRequireWildcard(require("path")); var _url; function _load_url() { return _url = require("url"); } var _util; function _load_util() { return _util = require("./util"); } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const debug = (0, (_debug2 || _load_debug()).default)("electron-builder"); class NodeHttpExecutor extends (_electronBuilderHttp || _load_electronBuilderHttp()).HttpExecutor { download(url, destination) { var _this = this; let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { cancellationToken: new (_electronBuilderHttp || _load_electronBuilderHttp()).CancellationToken() }; return (0, (_bluebirdLst || _load_bluebirdLst()).coroutine)(function* () { if (!options.skipDirCreation) { yield (0, (_fsExtraP || _load_fsExtraP()).ensureDir)(_path.dirname(destination)); } if (_this.httpsAgentPromise == null) { _this.httpsAgentPromise = createAgent(); } const agent = yield _this.httpsAgentPromise; return yield options.cancellationToken.createPromise(function (resolve, reject, onCancel) { const parsedUrl = (0, (_url || _load_url()).parse)(url); _this.doDownload((0, (_electronBuilderHttp || _load_electronBuilderHttp()).configureRequestOptions)({ hostname: parsedUrl.hostname, path: parsedUrl.path, headers: options.headers || undefined, agent }), destination, 0, options, function (error) { if (error == null) { resolve(destination); } else { reject(error); } }, onCancel); }); })(); } doApiRequest(options, cancellationToken, requestProcessor) { let redirectCount = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; if (debug.enabled) { debug(`HTTPS request: ${(0, (_util || _load_util()).safeStringifyJson)(options)}`); } return cancellationToken.createPromise((resolve, reject, onCancel) => { const request = (options.protocol === "http:" ? (_http || _load_http()).request : (_https || _load_https()).request)(options, response => { try { this.handleResponse(response, options, cancellationToken, resolve, reject, redirectCount, requestProcessor); } catch (e) { reject(e); } }); this.addTimeOutHandler(request, reject); request.on("error", reject); requestProcessor(request, reject); onCancel(() => request.abort()); }); } doRequest(options, callback) { return (_https || _load_https()).request(options, callback); } } exports.NodeHttpExecutor = NodeHttpExecutor; const httpExecutor = exports.httpExecutor = new NodeHttpExecutor();