UNPKG

5.99 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.httpExecutor = exports.NodeHttpExecutor = undefined;
7
8var _bluebirdLst;
9
10function _load_bluebirdLst() {
11 return _bluebirdLst = require("bluebird-lst");
12}
13
14// only https proxy
15let proxyFromNpm = (() => {
16 var _ref = (0, (_bluebirdLst || _load_bluebirdLst()).coroutine)(function* () {
17 let data = "";
18 try {
19 data = yield (0, (_fsExtraP || _load_fsExtraP()).readFile)(_path.join((0, (_os || _load_os()).homedir)(), ".npmrc"), "utf-8");
20 } catch (ignored) {
21 return null;
22 }
23 if (!data) {
24 return null;
25 }
26 try {
27 const config = (0, (_ini || _load_ini()).parse)(data);
28 return config["https-proxy"] || config.proxy;
29 } catch (e) {
30 // used in nsis auto-updater, do not use .util.warn here
31 console.warn(e);
32 return null;
33 }
34 });
35
36 return function proxyFromNpm() {
37 return _ref.apply(this, arguments);
38 };
39})();
40// only https url
41
42
43let createAgent = (() => {
44 var _ref2 = (0, (_bluebirdLst || _load_bluebirdLst()).coroutine)(function* () {
45 let proxyString = process.env.npm_config_https_proxy || process.env.HTTPS_PROXY || process.env.https_proxy || process.env.npm_config_proxy;
46 if (!proxyString) {
47 proxyString = yield proxyFromNpm();
48 if (!proxyString) {
49 return null;
50 }
51 }
52 const proxy = (0, (_url || _load_url()).parse)(proxyString);
53 const proxyProtocol = proxy.protocol === "https:" ? "Https" : "Http";
54 return require("tunnel-agent")[`httpsOver${proxyProtocol}`]({
55 proxy: {
56 port: proxy.port || (proxyProtocol === "Https" ? 443 : 80),
57 host: proxy.hostname,
58 proxyAuth: proxy.auth
59 }
60 });
61 });
62
63 return function createAgent() {
64 return _ref2.apply(this, arguments);
65 };
66})();
67//# sourceMappingURL=nodeHttpExecutor.js.map
68
69
70var _debug2;
71
72function _load_debug() {
73 return _debug2 = _interopRequireDefault(require("debug"));
74}
75
76var _electronBuilderHttp;
77
78function _load_electronBuilderHttp() {
79 return _electronBuilderHttp = require("electron-builder-http");
80}
81
82var _fsExtraP;
83
84function _load_fsExtraP() {
85 return _fsExtraP = require("fs-extra-p");
86}
87
88var _https;
89
90function _load_https() {
91 return _https = _interopRequireWildcard(require("https"));
92}
93
94var _ini;
95
96function _load_ini() {
97 return _ini = require("ini");
98}
99
100var _os;
101
102function _load_os() {
103 return _os = require("os");
104}
105
106var _path = _interopRequireWildcard(require("path"));
107
108var _url;
109
110function _load_url() {
111 return _url = require("url");
112}
113
114var _util;
115
116function _load_util() {
117 return _util = require("./util");
118}
119
120function _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; } }
121
122function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
123
124const debug = (0, (_debug2 || _load_debug()).default)("electron-builder");
125class NodeHttpExecutor extends (_electronBuilderHttp || _load_electronBuilderHttp()).HttpExecutor {
126 download(url, destination) {
127 var _this = this;
128
129 let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { cancellationToken: new (_electronBuilderHttp || _load_electronBuilderHttp()).CancellationToken() };
130 return (0, (_bluebirdLst || _load_bluebirdLst()).coroutine)(function* () {
131 if (!options.skipDirCreation) {
132 yield (0, (_fsExtraP || _load_fsExtraP()).ensureDir)(_path.dirname(destination));
133 }
134 if (_this.httpsAgentPromise == null) {
135 _this.httpsAgentPromise = createAgent();
136 }
137 const agent = yield _this.httpsAgentPromise;
138 return yield options.cancellationToken.createPromise(function (resolve, reject, onCancel) {
139 const parsedUrl = (0, (_url || _load_url()).parse)(url);
140 _this.doDownload((0, (_electronBuilderHttp || _load_electronBuilderHttp()).configureRequestOptions)({
141 hostname: parsedUrl.hostname,
142 path: parsedUrl.path,
143 headers: options.headers || undefined,
144 agent
145 }), destination, 0, options, function (error) {
146 if (error == null) {
147 resolve(destination);
148 } else {
149 reject(error);
150 }
151 }, onCancel);
152 });
153 })();
154 }
155 doApiRequest(options, cancellationToken, requestProcessor) {
156 let redirectCount = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
157
158 if (debug.enabled) {
159 debug(`HTTPS request: ${(0, (_util || _load_util()).safeStringifyJson)(options)}`);
160 }
161 return cancellationToken.createPromise((resolve, reject, onCancel) => {
162 const request = (_https || _load_https()).request(options, response => {
163 try {
164 this.handleResponse(response, options, cancellationToken, resolve, reject, redirectCount, requestProcessor);
165 } catch (e) {
166 reject(e);
167 }
168 });
169 this.addTimeOutHandler(request, reject);
170 request.on("error", reject);
171 requestProcessor(request, reject);
172 onCancel(() => request.abort());
173 });
174 }
175 doRequest(options, callback) {
176 return (_https || _load_https()).request(options, callback);
177 }
178}
179exports.NodeHttpExecutor = NodeHttpExecutor;
180const httpExecutor = exports.httpExecutor = new NodeHttpExecutor();
\No newline at end of file