15815213711
2024-08-26 67b8b6731811983447e053d4396b3708c14dfe3c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// @flow
 
import {
  parse as parseUrl,
} from 'url';
import {
  UnexpectedStateError,
} from '../errors';
 
export default (url: string) => {
  const urlTokens = parseUrl(url);
 
  if (urlTokens.query !== null) {
    throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL must not have query.');
  }
 
  if (urlTokens.hash !== null) {
    throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL must not have hash.');
  }
 
  if (urlTokens.protocol !== 'http:') {
    throw new UnexpectedStateError('Unsupported `GLOBAL_AGENT.HTTP_PROXY` configuration value: URL protocol must be "http:".');
  }
 
  let port = 80;
 
  if (urlTokens.port) {
    port = Number.parseInt(urlTokens.port, 10);
  }
 
  return {
    authorization: urlTokens.auth || null,
    hostname: urlTokens.hostname,
    port,
  };
};