@theia/request 1.77.0-next.99 → 1.78.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,6 +26,11 @@ export declare class NodeRequestService implements RequestService {
26
26
  protected getProxyUrl(url: string): Promise<string | undefined>;
27
27
  configure(config: RequestConfiguration): Promise<void>;
28
28
  protected processOptions(options: NodeRequestOptions): Promise<NodeRequestOptions>;
29
+ /**
30
+ * Removes a `Proxy-Authorization` header from the request options and returns its value.
31
+ * The header must not be sent: undici's `ProxyAgent` rejects it, and without a proxy it would reach the target server.
32
+ */
33
+ protected takeProxyAuthorizationHeader(options: NodeRequestOptions): string | undefined;
29
34
  request(options: NodeRequestOptions, token?: CancellationToken): Promise<RequestContext>;
30
35
  resolveProxy(url: string): Promise<string | undefined>;
31
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"node-request-service.d.ts","sourceRoot":"","sources":["../src/node-request-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAW,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE5I,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACrD,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;cAEjB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/D,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;cAY5C,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqBlF,OAAO,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAoExF,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAG/D"}
1
+ {"version":3,"file":"node-request-service.d.ts","sourceRoot":"","sources":["../src/node-request-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,EAAW,oBAAoB,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE5I,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED,qBAAa,kBAAmB,YAAW,cAAc;IACrD,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;cAEjB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI/D,SAAS,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;cAY5C,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgBxF;;;OAGG;IACH,SAAS,CAAC,4BAA4B,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS;IAiBjF,OAAO,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAoExF,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAG/D"}
@@ -35,21 +35,38 @@ class NodeRequestService {
35
35
  async processOptions(options) {
36
36
  const { strictSSL } = this;
37
37
  options.strictSSL = options.strictSSL ?? strictSSL;
38
+ const headerAuthorization = this.takeProxyAuthorizationHeader(options);
38
39
  if (!options.dispatcher) {
40
+ // undici's ProxyAgent rejects a Proxy-Authorization request header, so the authorization goes to the agent
39
41
  options.dispatcher = (0, proxy_1.getProxyAgent)(options.url || '', process.env, {
40
42
  proxyUrl: await this.getProxyUrl(options.url),
41
- strictSSL: options.strictSSL
43
+ strictSSL: options.strictSSL,
44
+ proxyAuthorization: options.proxyAuthorization || headerAuthorization || this.authorization
42
45
  });
43
46
  }
44
- const authorization = options.proxyAuthorization || this.authorization;
45
- if (authorization) {
46
- options.headers = {
47
- ...(options.headers || {}),
48
- 'Proxy-Authorization': authorization
49
- };
50
- }
51
47
  return options;
52
48
  }
49
+ /**
50
+ * Removes a `Proxy-Authorization` header from the request options and returns its value.
51
+ * The header must not be sent: undici's `ProxyAgent` rejects it, and without a proxy it would reach the target server.
52
+ */
53
+ takeProxyAuthorizationHeader(options) {
54
+ if (!options.headers) {
55
+ return undefined;
56
+ }
57
+ let authorization;
58
+ const headers = {};
59
+ for (const [name, value] of Object.entries(options.headers)) {
60
+ if (name.toLowerCase() === 'proxy-authorization') {
61
+ authorization = value;
62
+ }
63
+ else {
64
+ headers[name] = value;
65
+ }
66
+ }
67
+ options.headers = headers;
68
+ return authorization;
69
+ }
53
70
  async request(options, token) {
54
71
  options = await this.processOptions(options);
55
72
  const headers = { ...(options.headers || {}) };
@@ -1 +1 @@
1
- {"version":3,"file":"node-request-service.js","sourceRoot":"","sources":["../src/node-request-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-request-service.js","sourceRoot":"","sources":["../src/node-request-service.ts"],"names":[],"mappings":"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"}
@@ -197,14 +197,76 @@ describe('NodeRequestService', () => {
197
197
  });
198
198
  // Just verify configuration doesn't throw
199
199
  });
200
- it('should inject Proxy-Authorization header when authorization is configured', async () => {
200
+ it('should not send the proxy authorization to the server when no proxy is used', async () => {
201
201
  const configuredService = new node_request_service_1.NodeRequestService();
202
202
  await configuredService.configure({
203
203
  proxyAuthorization: 'Basic dGVzdDp0ZXN0'
204
204
  });
205
205
  const result = await configuredService.request({ url: url('/echo-headers') });
206
206
  const headers = common_request_service_1.RequestContext.asJson(result);
207
- (0, chai_1.expect)(headers['proxy-authorization']).to.equal('Basic dGVzdDp0ZXN0');
207
+ (0, chai_1.expect)(headers['proxy-authorization']).to.be.undefined;
208
+ });
209
+ it('should not send a Proxy-Authorization request header to the server', async () => {
210
+ const result = await service.request({ url: url('/echo-headers'), headers: { 'Proxy-Authorization': 'Basic dGVzdDp0ZXN0', 'X-Custom': 'kept' } });
211
+ const headers = common_request_service_1.RequestContext.asJson(result);
212
+ (0, chai_1.expect)(headers['proxy-authorization']).to.be.undefined;
213
+ (0, chai_1.expect)(headers['x-custom']).to.equal('kept');
214
+ });
215
+ });
216
+ describe('proxy authorization', () => {
217
+ let proxy;
218
+ let proxyUrl;
219
+ let tunnelAuthorizations;
220
+ before(done => {
221
+ // a proxy that refuses every tunnel, recording the authorization it was offered
222
+ proxy = http.createServer();
223
+ proxy.on('connect', (req, socket) => {
224
+ tunnelAuthorizations.push(req.headers['proxy-authorization']);
225
+ socket.end('HTTP/1.1 407 Proxy Authentication Required\r\n\r\n');
226
+ });
227
+ proxy.listen(0, () => {
228
+ proxyUrl = `http://localhost:${proxy.address().port}`;
229
+ done();
230
+ });
231
+ });
232
+ after(done => {
233
+ proxy.close(done);
234
+ });
235
+ beforeEach(() => {
236
+ tunnelAuthorizations = [];
237
+ });
238
+ async function requestThroughProxy(configuredService, options = {}) {
239
+ try {
240
+ await configuredService.request({ url: 'https://example.com/', ...options });
241
+ }
242
+ catch {
243
+ return;
244
+ }
245
+ throw new Error('expected the proxy to refuse the tunnel');
246
+ }
247
+ it('should send the configured authorization to the proxy', async () => {
248
+ const configuredService = new node_request_service_1.NodeRequestService();
249
+ await configuredService.configure({ proxyUrl, proxyAuthorization: 'Basic dGVzdDp0ZXN0' });
250
+ await requestThroughProxy(configuredService);
251
+ (0, chai_1.expect)(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
252
+ });
253
+ it('should send the authorization of the request options to the proxy', async () => {
254
+ const configuredService = new node_request_service_1.NodeRequestService();
255
+ await configuredService.configure({ proxyUrl });
256
+ await requestThroughProxy(configuredService, { proxyAuthorization: 'Basic dGVzdDp0ZXN0' });
257
+ (0, chai_1.expect)(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
258
+ });
259
+ it('should send the authorization of a Proxy-Authorization request header to the proxy', async () => {
260
+ const configuredService = new node_request_service_1.NodeRequestService();
261
+ await configuredService.configure({ proxyUrl, proxyAuthorization: 'Basic configured' });
262
+ await requestThroughProxy(configuredService, { headers: { 'proxy-authorization': 'Basic dGVzdDp0ZXN0' } });
263
+ (0, chai_1.expect)(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
264
+ });
265
+ it('should prefer credentials in the proxy URL', async () => {
266
+ const configuredService = new node_request_service_1.NodeRequestService();
267
+ await configuredService.configure({ proxyUrl: proxyUrl.replace('http://', 'http://user:pass@'), proxyAuthorization: 'Basic ignored' });
268
+ await requestThroughProxy(configuredService);
269
+ (0, chai_1.expect)(tunnelAuthorizations).to.deep.equal([`Basic ${Buffer.from('user:pass').toString('base64')}`]);
208
270
  });
209
271
  });
210
272
  describe('redirect handling', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"node-request-service.spec.js","sourceRoot":"","sources":["../src/node-request-service.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-request-service.spec.js","sourceRoot":"","sources":["../src/node-request-service.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;;AAElF,+BAA8B;AAC9B,mDAA6B;AAC7B,iEAAgF;AAChF,qEAA6E;AAE7E,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,IAAI,OAA2B,CAAC;IAChC,IAAI,MAAmB,CAAC;IACxB,IAAI,UAAkB,CAAC;IAEvB,MAAM,CAAC,IAAI,CAAC,EAAE;QACV,OAAO,GAAG,IAAI,yCAAkB,EAAE,CAAC;QACnC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACpC,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACtB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAClD,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,eAAe,EAAE,CAAC;gBACrC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,cAAc,EAAE,CAAC;gBACpC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAa,EAAE,CAAC;gBAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACf,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;oBACrD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC;gBACnC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC;gBACnC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC7B,UAAU,CAAC,GAAG,EAAE;oBACZ,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;oBACrD,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,CAAC,EAAE,IAAI,CAAC,CAAC;YACb,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;gBACjC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC5C,GAAG,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;iBAAM,IAAI,GAAG,CAAC,GAAG,KAAK,iBAAiB,EAAE,CAAC;gBACvC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;gBAChD,GAAG,CAAC,GAAG,EAAE,CAAC;YACd,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;YAClB,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;YAC3B,CAAC;YACD,IAAI,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,EAAE;QACT,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,SAAS,GAAG,CAAC,IAAY;QACrB,OAAO,oBAAoB,UAAU,GAAG,IAAI,EAAE,CAAC;IACnD,CAAC;IAED,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,uCAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,uCAAc,CAAC,MAAM,CAAsB,MAAM,CAAC,CAAC;QAChE,IAAA,aAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAClE,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAClE,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAA,aAAM,EAAC,uCAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACjC,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC;YACzB,OAAO,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE;SACxC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,uCAAc,CAAC,MAAM,CAAyB,MAAM,CAAC,CAAC;QACtE,IAAA,aAAM,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACjC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC;YACxB,IAAI,EAAE,MAAM;SACf,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,uCAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACjC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC;YACtB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,mBAAmB;SAC5B,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,uCAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QACxD,IAAI,CAAC;YACD,MAAM,OAAO,CAAC,OAAO,CAAC;gBAClB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;gBACjB,OAAO,EAAE,GAAG;aACf,CAAC,CAAC;YACH,aAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAA,aAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,SAAS,GAAsB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAsB;YAC7B,uBAAuB,EAAE,KAAK;YAC9B,uBAAuB,EAAE,CAAC,QAAoB,EAAE,EAAE;gBAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;SACJ,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC5B,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;SACpB,EAAE,KAAK,CAAC,CAAC;QAEV,wDAAwD;QACxD,UAAU,CAAC,GAAG,EAAE;YACZ,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,IAAI,CAAC;YACD,MAAM,OAAO,CAAC;YACd,aAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAA,aAAM,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1D,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,iBAAiB,GAAG,IAAI,yCAAkB,EAAE,CAAC;YACnD,MAAM,iBAAiB,CAAC,SAAS,CAAC;gBAC9B,QAAQ,EAAE,+BAA+B;gBACzC,SAAS,EAAE,KAAK;gBAChB,kBAAkB,EAAE,oBAAoB;aAC3C,CAAC,CAAC;YACH,0CAA0C;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YACzF,MAAM,iBAAiB,GAAG,IAAI,yCAAkB,EAAE,CAAC;YACnD,MAAM,iBAAiB,CAAC,SAAS,CAAC;gBAC9B,kBAAkB,EAAE,oBAAoB;aAC3C,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC9E,MAAM,OAAO,GAAG,uCAAc,CAAC,MAAM,CAAyB,MAAM,CAAC,CAAC;YACtE,IAAA,aAAM,EAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAClJ,MAAM,OAAO,GAAG,uCAAc,CAAC,MAAM,CAAyB,MAAM,CAAC,CAAC;YACtE,IAAA,aAAM,EAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACvD,IAAA,aAAM,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACjC,IAAI,KAAkB,CAAC;QACvB,IAAI,QAAgB,CAAC;QACrB,IAAI,oBAA4C,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC,EAAE;YACV,gFAAgF;YAChF,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5B,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAyB,EAAE,MAAM,EAAE,EAAE;gBACtD,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAC9D,MAAM,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;gBACjB,QAAQ,GAAG,oBAAqB,KAAK,CAAC,OAAO,EAAuB,CAAC,IAAI,EAAE,CAAC;gBAC5E,IAAI,EAAE,CAAC;YACX,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,EAAE;YACT,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,EAAE;YACZ,oBAAoB,GAAG,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,KAAK,UAAU,mBAAmB,CAAC,iBAAqC,EAAE,UAAuC,EAAE;YAC/G,IAAI,CAAC;gBACD,MAAM,iBAAiB,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;YACjF,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO;YACX,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC/D,CAAC;QAED,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,iBAAiB,GAAG,IAAI,yCAAkB,EAAE,CAAC;YACnD,MAAM,iBAAiB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAC1F,MAAM,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YAC7C,IAAA,aAAM,EAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,iBAAiB,GAAG,IAAI,yCAAkB,EAAE,CAAC;YACnD,MAAM,iBAAiB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChD,MAAM,mBAAmB,CAAC,iBAAiB,EAAE,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,CAAC,CAAC;YAC3F,IAAA,aAAM,EAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;YAChG,MAAM,iBAAiB,GAAG,IAAI,yCAAkB,EAAE,CAAC;YACnD,MAAM,iBAAiB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACxF,MAAM,mBAAmB,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;YAC3G,IAAA,aAAM,EAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,iBAAiB,GAAG,IAAI,yCAAkB,EAAE,CAAC;YACnD,MAAM,iBAAiB,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC,CAAC;YACvI,MAAM,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YAC7C,IAAA,aAAM,EAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAChE,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAA,aAAM,EAAC,uCAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC;YACpF,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACtE,IAAA,aAAM,EAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAA,aAAM,EAAC,uCAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;YAChE,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
package/lib/proxy.d.ts CHANGED
@@ -17,6 +17,8 @@ import { Dispatcher } from 'undici';
17
17
  export interface ProxySettings {
18
18
  proxyUrl?: string;
19
19
  strictSSL?: boolean;
20
+ /** Sent as `Proxy-Authorization` when the proxy URL carries no credentials of its own. */
21
+ proxyAuthorization?: string;
20
22
  }
21
23
  export declare function getProxyAgent(rawRequestURL: string, env: typeof process.env, options?: ProxySettings): Dispatcher | undefined;
22
24
  //# sourceMappingURL=proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAqB,UAAU,EAAE,MAAM,QAAQ,CAAC;AAYvD,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,GAAE,aAAkB,GAAG,UAAU,GAAG,SAAS,CA0CjI"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;kFAckF;AAElF,OAAO,EAAqB,UAAU,EAAE,MAAM,QAAQ,CAAC;AAYvD,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,GAAE,aAAkB,GAAG,UAAU,GAAG,SAAS,CA0CjI"}
package/lib/proxy.js CHANGED
@@ -57,7 +57,7 @@ function getProxyAgent(rawRequestURL, env, options = {}) {
57
57
  uri: proxyURL,
58
58
  token: proxyEndpoint.username
59
59
  ? `Basic ${Buffer.from(`${decodeURIComponent(proxyEndpoint.username)}:${decodeURIComponent(proxyEndpoint.password)}`).toString('base64')}`
60
- : undefined,
60
+ : options.proxyAuthorization,
61
61
  };
62
62
  if (options.strictSSL === false) {
63
63
  proxyAgentOptions.requestTls = { rejectUnauthorized: false };
package/lib/proxy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;AAmBlF,sCA0CC;AA3DD,mCAAuD;AAEvD,SAAS,iBAAiB,CAAC,UAAe,EAAE,GAAuB;IAC/D,IAAI,UAAU,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC;IAC5C,CAAC;SAAM,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC;IAClF,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAOD,SAAgB,aAAa,CAAC,aAAqB,EAAE,GAAuB,EAAE,UAAyB,EAAE;IACrG,IAAI,UAAe,CAAC;IACpB,IAAI,CAAC;QACD,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,IAAI,cAAK,CAAC;gBACb,OAAO,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE;aACzC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,aAAkB,CAAC;IACvB,IAAI,CAAC;QACD,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,iBAAiB,GAAuB;QAC1C,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,aAAa,CAAC,QAAQ;YACzB,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC1I,CAAC,CAAC,SAAS;KAClB,CAAC;IAEF,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC9B,iBAAiB,CAAC,UAAU,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IAED,OAAO,IAAI,mBAAU,CAAC,iBAAiB,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;kFAckF;;AAqBlF,sCA0CC;AA7DD,mCAAuD;AAEvD,SAAS,iBAAiB,CAAC,UAAe,EAAE,GAAuB;IAC/D,IAAI,UAAU,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC;IAC5C,CAAC;SAAM,IAAI,UAAU,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC;IAClF,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AASD,SAAgB,aAAa,CAAC,aAAqB,EAAE,GAAuB,EAAE,UAAyB,EAAE;IACrG,IAAI,UAAe,CAAC;IACpB,IAAI,CAAC;QACD,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,IAAI,cAAK,CAAC;gBACb,OAAO,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE;aACzC,CAAC,CAAC;QACP,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,aAAkB,CAAC;IACvB,IAAI,CAAC;QACD,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,MAAM,iBAAiB,GAAuB;QAC1C,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,aAAa,CAAC,QAAQ;YACzB,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC1I,CAAC,CAAC,OAAO,CAAC,kBAAkB;KACnC,CAAC;IAEF,IAAI,OAAO,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC9B,iBAAiB,CAAC,UAAU,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC;IAED,OAAO,IAAI,mBAAU,CAAC,iBAAiB,CAAC,CAAC;AAC7C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/request",
3
- "version": "1.77.0-next.99+2a7305415",
3
+ "version": "1.78.0-next.0+b0e3080cb",
4
4
  "description": "Theia Proxy-Aware Request Service",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -20,6 +20,14 @@
20
20
  ],
21
21
  "main": "lib/index.js",
22
22
  "typings": "lib/index.d.ts",
23
+ "exports": {
24
+ ".": "./lib/index.js",
25
+ "./package.json": "./package.json",
26
+ "./lib/*.json": "./lib/*.json",
27
+ "./lib/*.js": "./lib/*.js",
28
+ "./lib/*": "./lib/*.js",
29
+ "./*": "./*"
30
+ },
23
31
  "scripts": {
24
32
  "build": "theiaext build",
25
33
  "clean": "theiaext clean",
@@ -32,5 +40,5 @@
32
40
  "tslib": "^2.8.1",
33
41
  "undici": "^7.29.1"
34
42
  },
35
- "gitHead": "2a73054157f8bf0d3969a98d6292f15f6c45404a"
43
+ "gitHead": "b0e3080cb1b1fff5616555f1bf679834129da171"
36
44
  }
@@ -16,7 +16,7 @@
16
16
 
17
17
  import { expect } from 'chai';
18
18
  import * as http from 'http';
19
- import { NodeRequestService } from './node-request-service';
19
+ import { NodeRequestOptions, NodeRequestService } from './node-request-service';
20
20
  import { CancellationToken, RequestContext } from './common-request-service';
21
21
 
22
22
  describe('NodeRequestService', () => {
@@ -203,14 +203,85 @@ describe('NodeRequestService', () => {
203
203
  // Just verify configuration doesn't throw
204
204
  });
205
205
 
206
- it('should inject Proxy-Authorization header when authorization is configured', async () => {
206
+ it('should not send the proxy authorization to the server when no proxy is used', async () => {
207
207
  const configuredService = new NodeRequestService();
208
208
  await configuredService.configure({
209
209
  proxyAuthorization: 'Basic dGVzdDp0ZXN0'
210
210
  });
211
211
  const result = await configuredService.request({ url: url('/echo-headers') });
212
212
  const headers = RequestContext.asJson<Record<string, string>>(result);
213
- expect(headers['proxy-authorization']).to.equal('Basic dGVzdDp0ZXN0');
213
+ expect(headers['proxy-authorization']).to.be.undefined;
214
+ });
215
+
216
+ it('should not send a Proxy-Authorization request header to the server', async () => {
217
+ const result = await service.request({ url: url('/echo-headers'), headers: { 'Proxy-Authorization': 'Basic dGVzdDp0ZXN0', 'X-Custom': 'kept' } });
218
+ const headers = RequestContext.asJson<Record<string, string>>(result);
219
+ expect(headers['proxy-authorization']).to.be.undefined;
220
+ expect(headers['x-custom']).to.equal('kept');
221
+ });
222
+ });
223
+
224
+ describe('proxy authorization', () => {
225
+ let proxy: http.Server;
226
+ let proxyUrl: string;
227
+ let tunnelAuthorizations: (string | undefined)[];
228
+
229
+ before(done => {
230
+ // a proxy that refuses every tunnel, recording the authorization it was offered
231
+ proxy = http.createServer();
232
+ proxy.on('connect', (req: http.IncomingMessage, socket) => {
233
+ tunnelAuthorizations.push(req.headers['proxy-authorization']);
234
+ socket.end('HTTP/1.1 407 Proxy Authentication Required\r\n\r\n');
235
+ });
236
+ proxy.listen(0, () => {
237
+ proxyUrl = `http://localhost:${(proxy.address() as { port: number }).port}`;
238
+ done();
239
+ });
240
+ });
241
+
242
+ after(done => {
243
+ proxy.close(done);
244
+ });
245
+
246
+ beforeEach(() => {
247
+ tunnelAuthorizations = [];
248
+ });
249
+
250
+ async function requestThroughProxy(configuredService: NodeRequestService, options: Partial<NodeRequestOptions> = {}): Promise<void> {
251
+ try {
252
+ await configuredService.request({ url: 'https://example.com/', ...options });
253
+ } catch {
254
+ return;
255
+ }
256
+ throw new Error('expected the proxy to refuse the tunnel');
257
+ }
258
+
259
+ it('should send the configured authorization to the proxy', async () => {
260
+ const configuredService = new NodeRequestService();
261
+ await configuredService.configure({ proxyUrl, proxyAuthorization: 'Basic dGVzdDp0ZXN0' });
262
+ await requestThroughProxy(configuredService);
263
+ expect(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
264
+ });
265
+
266
+ it('should send the authorization of the request options to the proxy', async () => {
267
+ const configuredService = new NodeRequestService();
268
+ await configuredService.configure({ proxyUrl });
269
+ await requestThroughProxy(configuredService, { proxyAuthorization: 'Basic dGVzdDp0ZXN0' });
270
+ expect(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
271
+ });
272
+
273
+ it('should send the authorization of a Proxy-Authorization request header to the proxy', async () => {
274
+ const configuredService = new NodeRequestService();
275
+ await configuredService.configure({ proxyUrl, proxyAuthorization: 'Basic configured' });
276
+ await requestThroughProxy(configuredService, { headers: { 'proxy-authorization': 'Basic dGVzdDp0ZXN0' } });
277
+ expect(tunnelAuthorizations).to.deep.equal(['Basic dGVzdDp0ZXN0']);
278
+ });
279
+
280
+ it('should prefer credentials in the proxy URL', async () => {
281
+ const configuredService = new NodeRequestService();
282
+ await configuredService.configure({ proxyUrl: proxyUrl.replace('http://', 'http://user:pass@'), proxyAuthorization: 'Basic ignored' });
283
+ await requestThroughProxy(configuredService);
284
+ expect(tunnelAuthorizations).to.deep.equal([`Basic ${Buffer.from('user:pass').toString('base64')}`]);
214
285
  });
215
286
  });
216
287
 
@@ -47,24 +47,40 @@ export class NodeRequestService implements RequestService {
47
47
  protected async processOptions(options: NodeRequestOptions): Promise<NodeRequestOptions> {
48
48
  const { strictSSL } = this;
49
49
  options.strictSSL = options.strictSSL ?? strictSSL;
50
+ const headerAuthorization = this.takeProxyAuthorizationHeader(options);
50
51
  if (!options.dispatcher) {
52
+ // undici's ProxyAgent rejects a Proxy-Authorization request header, so the authorization goes to the agent
51
53
  options.dispatcher = getProxyAgent(options.url || '', process.env, {
52
54
  proxyUrl: await this.getProxyUrl(options.url),
53
- strictSSL: options.strictSSL
55
+ strictSSL: options.strictSSL,
56
+ proxyAuthorization: options.proxyAuthorization || headerAuthorization || this.authorization
54
57
  });
55
58
  }
56
59
 
57
- const authorization = options.proxyAuthorization || this.authorization;
58
- if (authorization) {
59
- options.headers = {
60
- ...(options.headers || {}),
61
- 'Proxy-Authorization': authorization
62
- };
63
- }
64
-
65
60
  return options;
66
61
  }
67
62
 
63
+ /**
64
+ * Removes a `Proxy-Authorization` header from the request options and returns its value.
65
+ * The header must not be sent: undici's `ProxyAgent` rejects it, and without a proxy it would reach the target server.
66
+ */
67
+ protected takeProxyAuthorizationHeader(options: NodeRequestOptions): string | undefined {
68
+ if (!options.headers) {
69
+ return undefined;
70
+ }
71
+ let authorization: string | undefined;
72
+ const headers: Headers = {};
73
+ for (const [name, value] of Object.entries(options.headers)) {
74
+ if (name.toLowerCase() === 'proxy-authorization') {
75
+ authorization = value;
76
+ } else {
77
+ headers[name] = value;
78
+ }
79
+ }
80
+ options.headers = headers;
81
+ return authorization;
82
+ }
83
+
68
84
  async request(options: NodeRequestOptions, token?: CancellationToken): Promise<RequestContext> {
69
85
  options = await this.processOptions(options);
70
86
 
package/src/proxy.ts CHANGED
@@ -29,6 +29,8 @@ function getSystemProxyURI(requestURL: URL, env: typeof process.env): string | u
29
29
  export interface ProxySettings {
30
30
  proxyUrl?: string;
31
31
  strictSSL?: boolean;
32
+ /** Sent as `Proxy-Authorization` when the proxy URL carries no credentials of its own. */
33
+ proxyAuthorization?: string;
32
34
  }
33
35
 
34
36
  export function getProxyAgent(rawRequestURL: string, env: typeof process.env, options: ProxySettings = {}): Dispatcher | undefined {
@@ -65,7 +67,7 @@ export function getProxyAgent(rawRequestURL: string, env: typeof process.env, op
65
67
  uri: proxyURL,
66
68
  token: proxyEndpoint.username
67
69
  ? `Basic ${Buffer.from(`${decodeURIComponent(proxyEndpoint.username)}:${decodeURIComponent(proxyEndpoint.password)}`).toString('base64')}`
68
- : undefined,
70
+ : options.proxyAuthorization,
69
71
  };
70
72
 
71
73
  if (options.strictSSL === false) {