proxy-chain 2.7.1 → 3.0.0-beta.1

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.
Files changed (83) hide show
  1. package/README.md +53 -62
  2. package/dist/anonymize_proxy.d.ts +2 -6
  3. package/dist/anonymize_proxy.d.ts.map +1 -1
  4. package/dist/anonymize_proxy.js +27 -44
  5. package/dist/anonymize_proxy.js.map +1 -1
  6. package/dist/chain.d.ts +1 -8
  7. package/dist/chain.d.ts.map +1 -1
  8. package/dist/chain.js +15 -21
  9. package/dist/chain.js.map +1 -1
  10. package/dist/chain_socks.d.ts +1 -6
  11. package/dist/chain_socks.d.ts.map +1 -1
  12. package/dist/chain_socks.js +9 -13
  13. package/dist/chain_socks.js.map +1 -1
  14. package/dist/custom_connect.d.ts.map +1 -1
  15. package/dist/custom_connect.js +3 -7
  16. package/dist/custom_connect.js.map +1 -1
  17. package/dist/custom_response.d.ts +0 -2
  18. package/dist/custom_response.d.ts.map +1 -1
  19. package/dist/custom_response.js +1 -5
  20. package/dist/custom_response.js.map +1 -1
  21. package/dist/direct.d.ts +1 -5
  22. package/dist/direct.d.ts.map +1 -1
  23. package/dist/direct.js +7 -12
  24. package/dist/direct.js.map +1 -1
  25. package/dist/forward.d.ts +0 -4
  26. package/dist/forward.d.ts.map +1 -1
  27. package/dist/forward.js +17 -25
  28. package/dist/forward.js.map +1 -1
  29. package/dist/forward_socks.d.ts +0 -1
  30. package/dist/forward_socks.d.ts.map +1 -1
  31. package/dist/forward_socks.js +15 -23
  32. package/dist/forward_socks.js.map +1 -1
  33. package/dist/index.d.ts +6 -6
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +5 -8
  36. package/dist/index.js.map +1 -1
  37. package/dist/request_error.d.ts.map +1 -1
  38. package/dist/request_error.js +5 -17
  39. package/dist/request_error.js.map +1 -1
  40. package/dist/server.d.ts +4 -12
  41. package/dist/server.d.ts.map +1 -1
  42. package/dist/server.js +68 -133
  43. package/dist/server.js.map +1 -1
  44. package/dist/socket.d.ts +0 -2
  45. package/dist/socket.d.ts.map +1 -1
  46. package/dist/socket.js +1 -2
  47. package/dist/statuses.d.ts.map +1 -1
  48. package/dist/statuses.js +22 -27
  49. package/dist/statuses.js.map +1 -1
  50. package/dist/tcp_tunnel_tools.d.ts +2 -2
  51. package/dist/tcp_tunnel_tools.d.ts.map +1 -1
  52. package/dist/tcp_tunnel_tools.js +23 -41
  53. package/dist/tcp_tunnel_tools.js.map +1 -1
  54. package/dist/utils/count_target_bytes.d.ts +2 -3
  55. package/dist/utils/count_target_bytes.d.ts.map +1 -1
  56. package/dist/utils/count_target_bytes.js +4 -12
  57. package/dist/utils/count_target_bytes.js.map +1 -1
  58. package/dist/utils/decode_uri_component_safe.d.ts.map +1 -1
  59. package/dist/utils/decode_uri_component_safe.js +1 -5
  60. package/dist/utils/decode_uri_component_safe.js.map +1 -1
  61. package/dist/utils/get_basic.d.ts.map +1 -1
  62. package/dist/utils/get_basic.js +4 -8
  63. package/dist/utils/get_basic.js.map +1 -1
  64. package/dist/utils/is_hop_by_hop_header.d.ts.map +1 -1
  65. package/dist/utils/is_hop_by_hop_header.js +1 -5
  66. package/dist/utils/is_hop_by_hop_header.js.map +1 -1
  67. package/dist/utils/normalize_url_port.d.ts.map +1 -1
  68. package/dist/utils/normalize_url_port.js +1 -5
  69. package/dist/utils/normalize_url_port.js.map +1 -1
  70. package/dist/utils/parse_authorization_header.d.ts.map +1 -1
  71. package/dist/utils/parse_authorization_header.js +3 -7
  72. package/dist/utils/parse_authorization_header.js.map +1 -1
  73. package/dist/utils/redact_url.d.ts.map +1 -1
  74. package/dist/utils/redact_url.js +3 -7
  75. package/dist/utils/redact_url.js.map +1 -1
  76. package/dist/utils/valid_headers_only.d.ts.map +1 -1
  77. package/dist/utils/valid_headers_only.js +6 -10
  78. package/dist/utils/valid_headers_only.js.map +1 -1
  79. package/package.json +102 -93
  80. package/dist/utils/nodeify.d.ts +0 -2
  81. package/dist/utils/nodeify.d.ts.map +0 -1
  82. package/dist/utils/nodeify.js +0 -17
  83. package/dist/utils/nodeify.js.map +0 -1
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.chainSocks = void 0;
4
- const node_url_1 = require("node:url");
5
- const socks_1 = require("socks");
6
- const statuses_1 = require("./statuses");
7
- const count_target_bytes_1 = require("./utils/count_target_bytes");
1
+ import { URL } from 'node:url';
2
+ import { SocksClient } from 'socks';
3
+ import { createCustomStatusHttpResponse, socksErrorMessageToStatusCode } from './statuses.js';
4
+ import { countTargetBytes } from './utils/count_target_bytes.js';
8
5
  const socksProtocolToVersionNumber = (protocol) => {
9
6
  switch (protocol) {
10
7
  case 'socks4:':
@@ -24,7 +21,7 @@ const socksProtocolToVersionNumber = (protocol) => {
24
21
  * Client -> Apify (CONNECT) -> Upstream (SOCKS) -> Web
25
22
  * Client <- Apify (CONNECT) <- Upstream (SOCKS) <- Web
26
23
  */
27
- const chainSocks = async ({ request, sourceSocket, head, server, handlerOpts, }) => {
24
+ export const chainSocks = async ({ request, sourceSocket, head, server, handlerOpts, }) => {
28
25
  const { proxyChainId } = sourceSocket;
29
26
  const { hostname, port, username, password } = handlerOpts.upstreamProxyUrlParsed;
30
27
  const proxy = {
@@ -44,14 +41,14 @@ const chainSocks = async ({ request, sourceSocket, head, server, handlerOpts, })
44
41
  // Beware of upstream proxy servers that send out valid CONNECT responses with diagnostic data such as IPs!
45
42
  sourceSocket.unshift(head);
46
43
  }
47
- const url = new node_url_1.URL(`connect://${request.url}`);
44
+ const url = new URL(`connect://${request.url}`);
48
45
  const destination = {
49
46
  port: Number(url.port),
50
47
  host: url.hostname,
51
48
  };
52
49
  let targetSocket;
53
50
  try {
54
- const client = await socks_1.SocksClient.createConnection({
51
+ const client = await SocksClient.createConnection({
55
52
  proxy,
56
53
  command: 'connect',
57
54
  destination,
@@ -62,10 +59,10 @@ const chainSocks = async ({ request, sourceSocket, head, server, handlerOpts, })
62
59
  catch (error) {
63
60
  const socksError = error;
64
61
  server.log(proxyChainId, `Failed to connect to upstream SOCKS proxy ${socksError.stack}`);
65
- sourceSocket.end((0, statuses_1.createCustomStatusHttpResponse)((0, statuses_1.socksErrorMessageToStatusCode)(socksError.message), socksError.message));
62
+ sourceSocket.end(createCustomStatusHttpResponse(socksErrorMessageToStatusCode(socksError.message), socksError.message));
66
63
  return;
67
64
  }
68
- (0, count_target_bytes_1.countTargetBytes)(sourceSocket, targetSocket);
65
+ countTargetBytes(sourceSocket, targetSocket);
69
66
  sourceSocket.pipe(targetSocket);
70
67
  targetSocket.pipe(sourceSocket);
71
68
  // Once target socket closes forcibly, the source socket gets paused.
@@ -93,5 +90,4 @@ const chainSocks = async ({ request, sourceSocket, head, server, handlerOpts, })
93
90
  targetSocket.destroy();
94
91
  });
95
92
  };
96
- exports.chainSocks = chainSocks;
97
93
  //# sourceMappingURL=chain_socks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chain_socks.js","sourceRoot":"","sources":["../src/chain_socks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chain_socks.js","sourceRoot":"","sources":["../src/chain_socks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"custom_connect.d.ts","sourceRoot":"","sources":["../src/custom_connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAGhC,eAAO,MAAM,aAAa,WAAkB,IAAI,MAAM,UAAU,KAAK,MAAM,KAAG,QAAQ,IAAI,CAqBzF,CAAC"}
1
+ {"version":3,"file":"custom_connect.d.ts","sourceRoot":"","sources":["../src/custom_connect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAGhC,eAAO,MAAM,aAAa,GAAU,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,MAAM,KAAG,OAAO,CAAC,IAAI,CAqBzF,CAAC"}
@@ -1,14 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.customConnect = void 0;
4
- const node_util_1 = require("node:util");
5
- const customConnect = async (socket, server) => {
1
+ import { promisify } from 'node:util';
2
+ export const customConnect = async (socket, server) => {
6
3
  // `countTargetBytes(socket, socket)` is incorrect here since `socket` is not a target.
7
4
  // We would have to create a new stream and pipe traffic through that,
8
5
  // however this would also increase CPU usage.
9
6
  // Also, counting bytes here is not correct since we don't know how the response is generated
10
7
  // (whether any additional sockets are used).
11
- const asyncWrite = (0, node_util_1.promisify)(socket.write).bind(socket);
8
+ const asyncWrite = promisify(socket.write).bind(socket);
12
9
  await asyncWrite('HTTP/1.1 200 Connection Established\r\n\r\n');
13
10
  server.emit('connection', socket);
14
11
  return new Promise((resolve) => {
@@ -21,5 +18,4 @@ const customConnect = async (socket, server) => {
21
18
  });
22
19
  });
23
20
  };
24
- exports.customConnect = customConnect;
25
21
  //# sourceMappingURL=custom_connect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom_connect.js","sourceRoot":"","sources":["../src/custom_connect.ts"],"names":[],"mappings":";;;AAEA,yCAAsC;AAE/B,MAAM,aAAa,GAAG,KAAK,EAAE,MAAkB,EAAE,MAAmB,EAAiB,EAAE;IAC1F,uFAAuF;IACvF,sEAAsE;IACtE,8CAA8C;IAC9C,6FAA6F;IAC7F,6CAA6C;IAE7C,MAAM,UAAU,GAAG,IAAA,qBAAS,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,UAAU,CAAC,6CAA6C,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAElC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,MAAM,CAAC,SAAS,EAAE;YAClB,OAAO,EAAE,CAAC;YACV,OAAO;SACV;QAED,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AArBW,QAAA,aAAa,iBAqBxB"}
1
+ {"version":3,"file":"custom_connect.js","sourceRoot":"","sources":["../src/custom_connect.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,MAAkB,EAAE,MAAmB,EAAiB,EAAE;IAC1F,uFAAuF;IACvF,sEAAsE;IACtE,8CAA8C;IAC9C,6FAA6F;IAC7F,6CAA6C;IAE7C,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,UAAU,CAAC,6CAA6C,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAElC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import type { Buffer } from 'node:buffer';
4
2
  import type http from 'node:http';
5
3
  export interface CustomResponse {
@@ -1 +1 @@
1
- {"version":3,"file":"custom_response.d.ts","sourceRoot":"","sources":["../src/custom_response.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,WAAW,cAAc;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IACxB,sBAAsB,EAAE,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC1E;AAED,eAAO,MAAM,oBAAoB,aACnB,KAAK,eAAe,YACpB,KAAK,cAAc,eAChB,WAAW,KACzB,QAAQ,IAAI,CAqBd,CAAC"}
1
+ {"version":3,"file":"custom_response.d.ts","sourceRoot":"","sources":["../src/custom_response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,WAAW,cAAc;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IACxB,sBAAsB,EAAE,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC1E;AAED,eAAO,MAAM,oBAAoB,GAC7B,UAAU,IAAI,CAAC,eAAe,EAC9B,UAAU,IAAI,CAAC,cAAc,EAC7B,aAAa,WAAW,KACzB,OAAO,CAAC,IAAI,CAqBd,CAAC"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleCustomResponse = void 0;
4
- const handleCustomResponse = async (_request, response, handlerOpts) => {
1
+ export const handleCustomResponse = async (_request, response, handlerOpts) => {
5
2
  const { customResponseFunction } = handlerOpts;
6
3
  if (!customResponseFunction) {
7
4
  throw new Error('The "customResponseFunction" option is required');
@@ -18,5 +15,4 @@ const handleCustomResponse = async (_request, response, handlerOpts) => {
18
15
  }
19
16
  response.end(customResponse.body, customResponse.encoding);
20
17
  };
21
- exports.handleCustomResponse = handleCustomResponse;
22
18
  //# sourceMappingURL=custom_response.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"custom_response.js","sourceRoot":"","sources":["../src/custom_response.ts"],"names":[],"mappings":";;;AAcO,MAAM,oBAAoB,GAAG,KAAK,EACrC,QAA8B,EAC9B,QAA6B,EAC7B,WAAwB,EACX,EAAE;IACf,MAAM,EAAE,sBAAsB,EAAE,GAAG,WAAW,CAAC;IAC/C,IAAI,CAAC,sBAAsB,EAAE;QACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;KACtE;IAED,MAAM,cAAc,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAEtD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;KACxF;IAED,QAAQ,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,IAAI,GAAG,CAAC;IAEvD,IAAI,cAAc,CAAC,OAAO,EAAE;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YAC/D,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,KAAe,CAAC,CAAC;SAC5C;KACJ;IAED,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,QAAS,CAAC,CAAC;AAChE,CAAC,CAAC;AAzBW,QAAA,oBAAoB,wBAyB/B"}
1
+ {"version":3,"file":"custom_response.js","sourceRoot":"","sources":["../src/custom_response.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACrC,QAA8B,EAC9B,QAA6B,EAC7B,WAAwB,EACX,EAAE;IACf,MAAM,EAAE,sBAAsB,EAAE,GAAG,WAAW,CAAC;IAC/C,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAEtD,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACzF,CAAC;IAED,QAAQ,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,IAAI,GAAG,CAAC;IAEvD,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YAChE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,KAAe,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,QAAS,CAAC,CAAC;AAChE,CAAC,CAAC"}
package/dist/direct.d.ts CHANGED
@@ -1,11 +1,7 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
1
  import type { Buffer } from 'node:buffer';
6
2
  import type dns from 'node:dns';
7
3
  import type { EventEmitter } from 'node:events';
8
- import type { Socket } from './socket';
4
+ import type { Socket } from './socket.js';
9
5
  export interface HandlerOpts {
10
6
  localAddress?: string;
11
7
  ipFamily?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"direct.d.ts","sourceRoot":"","sources":["../src/direct.ts"],"names":[],"mappings":";;;;AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,WAAW,WAAW;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;CACpC;AAED,UAAU,UAAU;IAChB,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,GAAG;QAAE,GAAG,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IAC7E,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,0DAOZ,UAAU,KACd,IA0EF,CAAC"}
1
+ {"version":3,"file":"direct.d.ts","sourceRoot":"","sources":["../src/direct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,WAAW;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;CACpC;AAED,UAAU,UAAU;IAChB,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,GAAG;QAAE,GAAG,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IAC7E,WAAW,EAAE,WAAW,CAAC;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,GACf,uDAMG,UAAU,KACd,IA0EF,CAAC"}
package/dist/direct.js CHANGED
@@ -1,17 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.direct = void 0;
4
- const tslib_1 = require("tslib");
5
- const node_net_1 = tslib_1.__importDefault(require("node:net"));
6
- const node_url_1 = require("node:url");
7
- const count_target_bytes_1 = require("./utils/count_target_bytes");
1
+ import net from 'node:net';
2
+ import { URL } from 'node:url';
3
+ import { countTargetBytes } from './utils/count_target_bytes.js';
8
4
  /**
9
5
  * Directly connects to the target.
10
6
  * Client -> Apify (CONNECT) -> Web
11
7
  * Client <- Apify (CONNECT) <- Web
12
8
  */
13
- const direct = ({ request, sourceSocket, head, server, handlerOpts, }) => {
14
- const url = new node_url_1.URL(`connect://${request.url}`);
9
+ export const direct = ({ request, sourceSocket, head, server, handlerOpts, }) => {
10
+ const url = new URL(`connect://${request.url}`);
15
11
  if (!url.hostname) {
16
12
  throw new Error('Missing CONNECT hostname');
17
13
  }
@@ -32,7 +28,7 @@ const direct = ({ request, sourceSocket, head, server, handlerOpts, }) => {
32
28
  if (options.host[0] === '[') {
33
29
  options.host = options.host.slice(1, -1);
34
30
  }
35
- const targetSocket = node_net_1.default.createConnection(options, () => {
31
+ const targetSocket = net.createConnection(options, () => {
36
32
  try {
37
33
  sourceSocket.write(`HTTP/1.1 200 Connection Established\r\n\r\n`);
38
34
  }
@@ -40,7 +36,7 @@ const direct = ({ request, sourceSocket, head, server, handlerOpts, }) => {
40
36
  sourceSocket.destroy(error);
41
37
  }
42
38
  });
43
- (0, count_target_bytes_1.countTargetBytes)(sourceSocket, targetSocket);
39
+ countTargetBytes(sourceSocket, targetSocket);
44
40
  sourceSocket.pipe(targetSocket);
45
41
  targetSocket.pipe(sourceSocket);
46
42
  // Once target socket closes forcibly, the source socket gets paused.
@@ -69,5 +65,4 @@ const direct = ({ request, sourceSocket, head, server, handlerOpts, }) => {
69
65
  targetSocket.destroy();
70
66
  });
71
67
  };
72
- exports.direct = direct;
73
68
  //# sourceMappingURL=direct.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"direct.js","sourceRoot":"","sources":["../src/direct.ts"],"names":[],"mappings":";;;;AAGA,gEAA2B;AAC3B,uCAA+B;AAG/B,mEAA8D;AAgB9D;;;;GAIG;AACI,MAAM,MAAM,GAAG,CAClB,EACI,OAAO,EACP,YAAY,EACZ,IAAI,EACJ,MAAM,EACN,WAAW,GACF,EACT,EAAE;IACN,MAAM,GAAG,GAAG,IAAI,cAAG,CAAC,aAAa,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEhD,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;KAC/C;IAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;KAC3C;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACjB,0BAA0B;QAC1B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,MAAM,OAAO,GAAG;QACZ,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,GAAG,CAAC,QAAQ;QAClB,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,MAAM,EAAE,WAAW,CAAC,QAAQ;QAC5B,MAAM,EAAE,WAAW,CAAC,SAAS;KAChC,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACzB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5C;IAED,MAAM,YAAY,GAAG,kBAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACpD,IAAI;YACA,YAAY,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;SACrE;QAAC,OAAO,KAAK,EAAE;YACZ,YAAY,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;SACxC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,qCAAgB,EAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAE7C,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAChC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEhC,qEAAqE;IACrE,kFAAkF;IAClF,oEAAoE;IACpE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAC1B,YAAY,CAAC,MAAM,EAAE,CAAC;QAEtB,IAAI,YAAY,CAAC,QAAQ,EAAE;YACvB,YAAY,CAAC,GAAG,EAAE,CAAC;SACtB;IACL,CAAC,CAAC,CAAC;IAEH,aAAa;IACb,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAC1B,YAAY,CAAC,MAAM,EAAE,CAAC;QAEtB,IAAI,YAAY,CAAC,QAAQ,EAAE;YACvB,YAAY,CAAC,GAAG,EAAE,CAAC;SACtB;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;IAEtC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC/B,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,oCAAoC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAE5E,YAAY,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QAC/B,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,+BAA+B,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvE,YAAY,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAlFW,QAAA,MAAM,UAkFjB"}
1
+ {"version":3,"file":"direct.js","sourceRoot":"","sources":["../src/direct.ts"],"names":[],"mappings":"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"}
package/dist/forward.d.ts CHANGED
@@ -1,7 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
1
  import type dns from 'node:dns';
6
2
  import http from 'node:http';
7
3
  import https from 'node:https';
@@ -1 +1 @@
1
- {"version":3,"file":"forward.d.ts","sourceRoot":"","sources":["../src/forward.ts"],"names":[],"mappings":";;;;AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAqBpC,MAAM,WAAW,WAAW;IACxB,sBAAsB,EAAE,GAAG,CAAC;IAC5B,8BAA8B,EAAE,OAAO,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;IACvB,UAAU,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,OAAO,YACP,KAAK,eAAe,YACnB,KAAK,cAAc,eAChB,WAAW,KAEzB,QAAQ,IAAI,CAiGb,CAAC"}
1
+ {"version":3,"file":"forward.d.ts","sourceRoot":"","sources":["../src/forward.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAE/B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAkBpC,MAAM,WAAW,WAAW;IACxB,sBAAsB,EAAE,GAAG,CAAC;IAC5B,8BAA8B,EAAE,OAAO,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;IACvB,UAAU,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,OAAO,GAChB,SAAS,IAAI,CAAC,eAAe,EAC7B,UAAU,IAAI,CAAC,cAAc,EAC7B,aAAa,WAAW,KAEzB,OAAO,CAAC,IAAI,CAiGb,CAAC"}
package/dist/forward.js CHANGED
@@ -1,16 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.forward = void 0;
4
- const tslib_1 = require("tslib");
5
- const node_http_1 = tslib_1.__importDefault(require("node:http"));
6
- const node_https_1 = tslib_1.__importDefault(require("node:https"));
7
- const node_stream_1 = tslib_1.__importDefault(require("node:stream"));
8
- const node_util_1 = tslib_1.__importDefault(require("node:util"));
9
- const statuses_1 = require("./statuses");
10
- const count_target_bytes_1 = require("./utils/count_target_bytes");
11
- const get_basic_1 = require("./utils/get_basic");
12
- const valid_headers_only_1 = require("./utils/valid_headers_only");
13
- const pipeline = node_util_1.default.promisify(node_stream_1.default.pipeline);
1
+ import http from 'node:http';
2
+ import https from 'node:https';
3
+ import { pipeline } from 'node:stream/promises';
4
+ import { badGatewayStatusCodes, errorCodeToStatusCode } from './statuses.js';
5
+ import { countTargetBytes } from './utils/count_target_bytes.js';
6
+ import { getBasicAuthorizationHeader } from './utils/get_basic.js';
7
+ import { validHeadersOnly } from './utils/valid_headers_only.js';
14
8
  /**
15
9
  * The request is read from the client and is resent.
16
10
  * This is similar to Direct / Chain, however it uses the CONNECT protocol instead.
@@ -28,12 +22,12 @@ const pipeline = node_util_1.default.promisify(node_stream_1.default.pipeline);
28
22
  * Client <- Apify (HTTP) <- Upstream (HTTP) <- Web
29
23
  * ```
30
24
  */
31
- const forward = async (request, response, handlerOpts) => new Promise(async (resolve, reject) => {
25
+ export const forward = async (request, response, handlerOpts) => new Promise(async (resolve, reject) => {
32
26
  const proxy = handlerOpts.upstreamProxyUrlParsed;
33
27
  const origin = proxy ? proxy.origin : request.url;
34
28
  const options = {
35
29
  method: request.method,
36
- headers: (0, valid_headers_only_1.validHeadersOnly)(request.rawHeaders),
30
+ headers: validHeadersOnly(request.rawHeaders),
37
31
  insecureHTTPParser: true,
38
32
  localAddress: handlerOpts.localAddress,
39
33
  family: handlerOpts.ipFamily,
@@ -44,7 +38,7 @@ const forward = async (request, response, handlerOpts) => new Promise(async (res
44
38
  options.path = request.url;
45
39
  try {
46
40
  if (proxy.username || proxy.password) {
47
- options.headers.push('proxy-authorization', (0, get_basic_1.getBasicAuthorizationHeader)(proxy));
41
+ options.headers.push('proxy-authorization', getBasicAuthorizationHeader(proxy));
48
42
  }
49
43
  }
50
44
  catch (error) {
@@ -57,14 +51,14 @@ const forward = async (request, response, handlerOpts) => new Promise(async (res
57
51
  // This is necessary to prevent Node.js throwing an error
58
52
  let statusCode = clientResponse.statusCode;
59
53
  if (statusCode < 100 || statusCode > 999) {
60
- statusCode = statuses_1.badGatewayStatusCodes.STATUS_CODE_OUT_OF_RANGE;
54
+ statusCode = badGatewayStatusCodes.STATUS_CODE_OUT_OF_RANGE;
61
55
  }
62
56
  // 407 is handled separately
63
57
  if (clientResponse.statusCode === 407) {
64
58
  reject(new Error('407 Proxy Authentication Required'));
65
59
  return;
66
60
  }
67
- response.writeHead(statusCode, clientResponse.statusMessage, (0, valid_headers_only_1.validHeadersOnly)(clientResponse.rawHeaders));
61
+ response.writeHead(statusCode, clientResponse.statusMessage, validHeadersOnly(clientResponse.rawHeaders));
68
62
  // `pipeline` automatically handles all the events and data
69
63
  await pipeline(clientResponse, response);
70
64
  resolve();
@@ -76,12 +70,12 @@ const forward = async (request, response, handlerOpts) => new Promise(async (res
76
70
  };
77
71
  // We have to force cast `options` because @types/node doesn't support an array.
78
72
  const client = origin.startsWith('https:')
79
- ? node_https_1.default.request(origin, {
73
+ ? https.request(origin, {
80
74
  ...options,
81
75
  rejectUnauthorized: handlerOpts.upstreamProxyUrlParsed ? !handlerOpts.ignoreUpstreamProxyCertificate : undefined,
82
76
  agent: handlerOpts.httpsAgent,
83
77
  }, requestCallback)
84
- : node_http_1.default.request(origin, {
78
+ : http.request(origin, {
85
79
  ...options,
86
80
  agent: handlerOpts.httpAgent,
87
81
  }, requestCallback);
@@ -90,22 +84,20 @@ const forward = async (request, response, handlerOpts) => new Promise(async (res
90
84
  // That's why we need to track the previous stats.
91
85
  socket.previousBytesRead = socket.bytesRead;
92
86
  socket.previousBytesWritten = socket.bytesWritten;
93
- (0, count_target_bytes_1.countTargetBytes)(request.socket, socket, (handler) => response.once('close', handler));
87
+ countTargetBytes(request.socket, socket, (handler) => response.once('close', handler));
94
88
  });
95
89
  // Can't use pipeline here as it automatically destroys the streams
96
90
  request.pipe(client);
97
91
  client.on('error', (error) => {
98
- var _a;
99
92
  if (response.headersSent) {
100
93
  resolve();
101
94
  return;
102
95
  }
103
- const statusCode = (_a = statuses_1.errorCodeToStatusCode[error.code]) !== null && _a !== void 0 ? _a : statuses_1.badGatewayStatusCodes.GENERIC_ERROR;
96
+ const statusCode = errorCodeToStatusCode[error.code] ?? badGatewayStatusCodes.GENERIC_ERROR;
104
97
  response.statusCode = !proxy && error.code === 'ENOTFOUND' ? 404 : statusCode;
105
98
  response.setHeader('content-type', 'text/plain; charset=utf-8');
106
- response.end(node_http_1.default.STATUS_CODES[response.statusCode]);
99
+ response.end(http.STATUS_CODES[response.statusCode]);
107
100
  resolve();
108
101
  });
109
102
  });
110
- exports.forward = forward;
111
103
  //# sourceMappingURL=forward.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"forward.js","sourceRoot":"","sources":["../src/forward.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forward.js","sourceRoot":"","sources":["../src/forward.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import http from 'node:http';
3
2
  import type { URL } from 'node:url';
4
3
  export interface HandlerOpts {
@@ -1 +1 @@
1
- {"version":3,"file":"forward_socks.d.ts","sourceRoot":"","sources":["../src/forward_socks.ts"],"names":[],"mappings":";AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAoBpC,MAAM,WAAW,WAAW;IACxB,sBAAsB,EAAE,GAAG,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,YACZ,KAAK,eAAe,YACnB,KAAK,cAAc,eAChB,WAAW,KAEzB,QAAQ,IAAI,CAkEb,CAAC"}
1
+ {"version":3,"file":"forward_socks.d.ts","sourceRoot":"","sources":["../src/forward_socks.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAiBpC,MAAM,WAAW,WAAW;IACxB,sBAAsB,EAAE,GAAG,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,YAAY,GACrB,SAAS,IAAI,CAAC,eAAe,EAC7B,UAAU,IAAI,CAAC,cAAc,EAC7B,aAAa,WAAW,KAEzB,OAAO,CAAC,IAAI,CAkEb,CAAC"}
@@ -1,15 +1,9 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.forwardSocks = void 0;
4
- const tslib_1 = require("tslib");
5
- const node_http_1 = tslib_1.__importDefault(require("node:http"));
6
- const node_stream_1 = tslib_1.__importDefault(require("node:stream"));
7
- const node_util_1 = tslib_1.__importDefault(require("node:util"));
8
- const socks_proxy_agent_1 = require("socks-proxy-agent");
9
- const statuses_1 = require("./statuses");
10
- const count_target_bytes_1 = require("./utils/count_target_bytes");
11
- const valid_headers_only_1 = require("./utils/valid_headers_only");
12
- const pipeline = node_util_1.default.promisify(node_stream_1.default.pipeline);
1
+ import http from 'node:http';
2
+ import { pipeline } from 'node:stream/promises';
3
+ import { SocksProxyAgent } from 'socks-proxy-agent';
4
+ import { badGatewayStatusCodes, errorCodeToStatusCode } from './statuses.js';
5
+ import { countTargetBytes } from './utils/count_target_bytes.js';
6
+ import { validHeadersOnly } from './utils/valid_headers_only.js';
13
7
  /**
14
8
  * Forwards HTTP requests through a SOCKS upstream proxy.
15
9
  *
@@ -22,30 +16,30 @@ const pipeline = node_util_1.default.promisify(node_stream_1.default.pipeline);
22
16
  * Client <- Apify (HTTP) <- Upstream (SOCKS) <- Web
23
17
  * ```
24
18
  */
25
- const forwardSocks = async (request, response, handlerOpts) => new Promise(async (resolve, reject) => {
26
- const agent = new socks_proxy_agent_1.SocksProxyAgent(handlerOpts.upstreamProxyUrlParsed);
19
+ export const forwardSocks = async (request, response, handlerOpts) => new Promise(async (resolve, reject) => {
20
+ const agent = new SocksProxyAgent(handlerOpts.upstreamProxyUrlParsed);
27
21
  const options = {
28
22
  method: request.method,
29
- headers: (0, valid_headers_only_1.validHeadersOnly)(request.rawHeaders),
23
+ headers: validHeadersOnly(request.rawHeaders),
30
24
  insecureHTTPParser: true,
31
25
  localAddress: handlerOpts.localAddress,
32
26
  agent,
33
27
  };
34
28
  // Only handling "http" here - since everything else is handeled by tunnelSocks.
35
29
  // We have to force cast `options` because @types/node doesn't support an array.
36
- const client = node_http_1.default.request(request.url, options, async (clientResponse) => {
30
+ const client = http.request(request.url, options, async (clientResponse) => {
37
31
  try {
38
32
  // This is necessary to prevent Node.js throwing an error
39
33
  let statusCode = clientResponse.statusCode;
40
34
  if (statusCode < 100 || statusCode > 999) {
41
- statusCode = statuses_1.badGatewayStatusCodes.STATUS_CODE_OUT_OF_RANGE;
35
+ statusCode = badGatewayStatusCodes.STATUS_CODE_OUT_OF_RANGE;
42
36
  }
43
37
  // 407 is handled separately
44
38
  if (clientResponse.statusCode === 407) {
45
39
  reject(new Error('407 Proxy Authentication Required'));
46
40
  return;
47
41
  }
48
- response.writeHead(statusCode, clientResponse.statusMessage, (0, valid_headers_only_1.validHeadersOnly)(clientResponse.rawHeaders));
42
+ response.writeHead(statusCode, clientResponse.statusMessage, validHeadersOnly(clientResponse.rawHeaders));
49
43
  // `pipeline` automatically handles all the events and data
50
44
  await pipeline(clientResponse, response);
51
45
  resolve();
@@ -56,22 +50,20 @@ const forwardSocks = async (request, response, handlerOpts) => new Promise(async
56
50
  }
57
51
  });
58
52
  client.once('socket', (socket) => {
59
- (0, count_target_bytes_1.countTargetBytes)(request.socket, socket);
53
+ countTargetBytes(request.socket, socket);
60
54
  });
61
55
  // Can't use pipeline here as it automatically destroys the streams
62
56
  request.pipe(client);
63
57
  client.on('error', (error) => {
64
- var _a;
65
58
  if (response.headersSent) {
66
59
  resolve();
67
60
  return;
68
61
  }
69
- const statusCode = (_a = statuses_1.errorCodeToStatusCode[error.code]) !== null && _a !== void 0 ? _a : statuses_1.badGatewayStatusCodes.GENERIC_ERROR;
62
+ const statusCode = errorCodeToStatusCode[error.code] ?? badGatewayStatusCodes.GENERIC_ERROR;
70
63
  response.statusCode = statusCode;
71
64
  response.setHeader('content-type', 'text/plain; charset=utf-8');
72
- response.end(node_http_1.default.STATUS_CODES[response.statusCode]);
65
+ response.end(http.STATUS_CODES[response.statusCode]);
73
66
  resolve();
74
67
  });
75
68
  });
76
- exports.forwardSocks = forwardSocks;
77
69
  //# sourceMappingURL=forward_socks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"forward_socks.js","sourceRoot":"","sources":["../src/forward_socks.ts"],"names":[],"mappings":";;;;AAAA,kEAA6B;AAC7B,sEAAiC;AAEjC,kEAA6B;AAE7B,yDAAoD;AAEpD,yCAA0E;AAC1E,mEAA8D;AAC9D,mEAA8D;AAE9D,MAAM,QAAQ,GAAG,mBAAI,CAAC,SAAS,CAAC,qBAAM,CAAC,QAAQ,CAAC,CAAC;AAgBjD;;;;;;;;;;;GAWG;AACI,MAAM,YAAY,GAAG,KAAK,EAC7B,OAA6B,EAC7B,QAA6B,EAC7B,WAAwB,EAEX,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACtD,MAAM,KAAK,GAAG,IAAI,mCAAe,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAY;QACrB,MAAM,EAAE,OAAO,CAAC,MAAO;QACvB,OAAO,EAAE,IAAA,qCAAgB,EAAC,OAAO,CAAC,UAAU,CAAC;QAC7C,kBAAkB,EAAE,IAAI;QACxB,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,KAAK;KACR,CAAC;IAEF,gFAAgF;IAChF,gFAAgF;IAChF,MAAM,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAI,EAAE,OAA4C,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;QAC7G,IAAI;YACA,yDAAyD;YACzD,IAAI,UAAU,GAAG,cAAc,CAAC,UAAW,CAAC;YAC5C,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE;gBACtC,UAAU,GAAG,gCAAqB,CAAC,wBAAwB,CAAC;aAC/D;YAED,4BAA4B;YAC5B,IAAI,cAAc,CAAC,UAAU,KAAK,GAAG,EAAE;gBACnC,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;gBACvD,OAAO;aACV;YAED,QAAQ,CAAC,SAAS,CACd,UAAU,EACV,cAAc,CAAC,aAAa,EAC5B,IAAA,qCAAgB,EAAC,cAAc,CAAC,UAAU,CAAC,CAC9C,CAAC;YAEF,2DAA2D;YAC3D,MAAM,QAAQ,CACV,cAAc,EACd,QAAQ,CACX,CAAC;YAEF,OAAO,EAAE,CAAC;SACb;QAAC,MAAM;YACJ,+DAA+D;YAC/D,OAAO,EAAE,CAAC;SACb;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;QAC7B,IAAA,qCAAgB,EAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;;QAChD,IAAI,QAAQ,CAAC,WAAW,EAAE;YACtB,OAAO,EAAE,CAAC;YACV,OAAO;SACV;QAED,MAAM,UAAU,GAAG,MAAA,gCAAqB,CAAC,KAAK,CAAC,IAAK,CAAC,mCAAI,gCAAqB,CAAC,aAAa,CAAC;QAE7F,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;QAChE,QAAQ,CAAC,GAAG,CAAC,mBAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAErD,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAvEU,QAAA,YAAY,gBAuEtB"}
1
+ {"version":3,"file":"forward_socks.js","sourceRoot":"","sources":["../src/forward_socks.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAgBjE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC7B,OAA6B,EAC7B,QAA6B,EAC7B,WAAwB,EAEX,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACtD,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAY;QACrB,MAAM,EAAE,OAAO,CAAC,MAAO;QACvB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;QAC7C,kBAAkB,EAAE,IAAI;QACxB,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,KAAK;KACR,CAAC;IAEF,gFAAgF;IAChF,gFAAgF;IAChF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAI,EAAE,OAA4C,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;QAC7G,IAAI,CAAC;YACD,yDAAyD;YACzD,IAAI,UAAU,GAAG,cAAc,CAAC,UAAW,CAAC;YAC5C,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;gBACvC,UAAU,GAAG,qBAAqB,CAAC,wBAAwB,CAAC;YAChE,CAAC;YAED,4BAA4B;YAC5B,IAAI,cAAc,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;gBACvD,OAAO;YACX,CAAC;YAED,QAAQ,CAAC,SAAS,CACd,UAAU,EACV,cAAc,CAAC,aAAa,EAC5B,gBAAgB,CAAC,cAAc,CAAC,UAAU,CAAC,CAC9C,CAAC;YAEF,2DAA2D;YAC3D,MAAM,QAAQ,CACV,cAAc,EACd,QAAQ,CACX,CAAC;YAEF,OAAO,EAAE,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACL,+DAA+D;YAC/D,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;QAC7B,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;QAChD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;YACV,OAAO;QACX,CAAC;QAED,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAK,CAAC,IAAI,qBAAqB,CAAC,aAAa,CAAC;QAE7F,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;QACjC,QAAQ,CAAC,SAAS,CAAC,cAAc,EAAE,2BAA2B,CAAC,CAAC;QAChE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAErD,OAAO,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export * from './request_error';
2
- export * from './server';
3
- export * from './utils/redact_url';
4
- export * from './anonymize_proxy';
5
- export * from './tcp_tunnel_tools';
6
- export { CustomResponse } from './custom_response';
1
+ export * from './request_error.js';
2
+ export * from './server.js';
3
+ export * from './utils/redact_url.js';
4
+ export * from './anonymize_proxy.js';
5
+ export * from './tcp_tunnel_tools.js';
6
+ export type { CustomResponse } from './custom_response.js';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AAEtC,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./request_error"), exports);
5
- tslib_1.__exportStar(require("./server"), exports);
6
- tslib_1.__exportStar(require("./utils/redact_url"), exports);
7
- tslib_1.__exportStar(require("./anonymize_proxy"), exports);
8
- tslib_1.__exportStar(require("./tcp_tunnel_tools"), exports);
1
+ export * from './request_error.js';
2
+ export * from './server.js';
3
+ export * from './utils/redact_url.js';
4
+ export * from './anonymize_proxy.js';
5
+ export * from './tcp_tunnel_tools.js';
9
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,0DAAgC;AAChC,mDAAyB;AACzB,6DAAmC;AACnC,4DAAkC;AAClC,6DAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"request_error.d.ts","sourceRoot":"","sources":["../src/request_error.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAGxB,UAAU,EAAE,MAAM;IAClB,OAAO,CAAC;gBAFf,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,oCAAwB;CAO9C"}
1
+ {"version":3,"file":"request_error.d.ts","sourceRoot":"","sources":["../src/request_error.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAGxB,UAAU,EAAE,MAAM;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;gBAFvC,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAA;CAO9C"}
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RequestError = void 0;
4
1
  /**
5
2
  * Represents custom request error. The message is emitted as HTTP response
6
3
  * with a specific HTTP code and headers.
@@ -9,24 +6,15 @@ exports.RequestError = void 0;
9
6
  * By default, the response will have Content-Type: text/plain
10
7
  * and for the 407 status the Proxy-Authenticate header will be added.
11
8
  */
12
- class RequestError extends Error {
9
+ export class RequestError extends Error {
10
+ statusCode;
11
+ headers;
13
12
  constructor(message, statusCode, headers) {
14
13
  super(message);
15
- Object.defineProperty(this, "statusCode", {
16
- enumerable: true,
17
- configurable: true,
18
- writable: true,
19
- value: statusCode
20
- });
21
- Object.defineProperty(this, "headers", {
22
- enumerable: true,
23
- configurable: true,
24
- writable: true,
25
- value: headers
26
- });
14
+ this.statusCode = statusCode;
15
+ this.headers = headers;
27
16
  this.name = RequestError.name;
28
17
  Error.captureStackTrace(this, RequestError);
29
18
  }
30
19
  }
31
- exports.RequestError = RequestError;
32
20
  //# sourceMappingURL=request_error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request_error.js","sourceRoot":"","sources":["../src/request_error.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACH,MAAa,YAAa,SAAQ,KAAK;IACnC,YACI,OAAe,EACR,UAAkB,EAClB,OAAgC;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAC;;;;;mBAHR;;;;;;mBACA;;QAGP,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAE9B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;CACJ;AAXD,oCAWC"}
1
+ {"version":3,"file":"request_error.js","sourceRoot":"","sources":["../src/request_error.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAGxB;IACA;IAHX,YACI,OAAe,EACR,UAAkB,EAClB,OAAgC;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAyB;QAGvC,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAE9B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;CACJ"}