UNPKG

6.13 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 _http;
89
90function _load_http() {
91 return _http = require("http");
92}
93
94var _https;
95
96function _load_https() {
97 return _https = _interopRequireWildcard(require("https"));
98}
99
100var _ini;
101
102function _load_ini() {
103 return _ini = require("ini");
104}
105
106var _os;
107
108function _load_os() {
109 return _os = require("os");
110}
111
112var _path = _interopRequireWildcard(require("path"));
113
114var _url;
115
116function _load_url() {
117 return _url = require("url");
118}
119
120var _util;
121
122function _load_util() {
123 return _util = require("./util");
124}
125
126function _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; } }
127
128function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
129
130const debug = (0, (_debug2 || _load_debug()).default)("electron-builder");
131class NodeHttpExecutor extends (_electronBuilderHttp || _load_electronBuilderHttp()).HttpExecutor {
132 download(url, destination) {
133 var _this = this;
134
135 let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { cancellationToken: new (_electronBuilderHttp || _load_electronBuilderHttp()).CancellationToken() };
136 return (0, (_bluebirdLst || _load_bluebirdLst()).coroutine)(function* () {
137 if (!options.skipDirCreation) {
138 yield (0, (_fsExtraP || _load_fsExtraP()).ensureDir)(_path.dirname(destination));
139 }
140 if (_this.httpsAgentPromise == null) {
141 _this.httpsAgentPromise = createAgent();
142 }
143 const agent = yield _this.httpsAgentPromise;
144 return yield options.cancellationToken.createPromise(function (resolve, reject, onCancel) {
145 const parsedUrl = (0, (_url || _load_url()).parse)(url);
146 _this.doDownload((0, (_electronBuilderHttp || _load_electronBuilderHttp()).configureRequestOptions)({
147 hostname: parsedUrl.hostname,
148 path: parsedUrl.path,
149 headers: options.headers || undefined,
150 agent
151 }), destination, 0, options, function (error) {
152 if (error == null) {
153 resolve(destination);
154 } else {
155 reject(error);
156 }
157 }, onCancel);
158 });
159 })();
160 }
161 doApiRequest(options, cancellationToken, requestProcessor) {
162 let redirectCount = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
163
164 if (debug.enabled) {
165 debug(`HTTPS request: ${(0, (_util || _load_util()).safeStringifyJson)(options)}`);
166 }
167 return cancellationToken.createPromise((resolve, reject, onCancel) => {
168 const request = (options.protocol === "http:" ? (_http || _load_http()).request : (_https || _load_https()).request)(options, response => {
169 try {
170 this.handleResponse(response, options, cancellationToken, resolve, reject, redirectCount, requestProcessor);
171 } catch (e) {
172 reject(e);
173 }
174 });
175 this.addTimeOutHandler(request, reject);
176 request.on("error", reject);
177 requestProcessor(request, reject);
178 onCancel(() => request.abort());
179 });
180 }
181 doRequest(options, callback) {
182 return (_https || _load_https()).request(options, callback);
183 }
184}
185exports.NodeHttpExecutor = NodeHttpExecutor;
186const httpExecutor = exports.httpExecutor = new NodeHttpExecutor();
\No newline at end of file