@limrun/api 0.48.4 → 0.49.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.
Files changed (170) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/client.d.mts +6 -3
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +6 -3
  5. package/client.d.ts.map +1 -1
  6. package/client.js +4 -4
  7. package/client.js.map +1 -1
  8. package/client.mjs +2 -2
  9. package/client.mjs.map +1 -1
  10. package/destination-tunnel-dialer.d.mts +30 -2
  11. package/destination-tunnel-dialer.d.mts.map +1 -1
  12. package/destination-tunnel-dialer.d.ts +30 -2
  13. package/destination-tunnel-dialer.d.ts.map +1 -1
  14. package/destination-tunnel-dialer.js +349 -65
  15. package/destination-tunnel-dialer.js.map +1 -1
  16. package/destination-tunnel-dialer.mjs +345 -64
  17. package/destination-tunnel-dialer.mjs.map +1 -1
  18. package/destination-tunnel-har.d.mts +23 -0
  19. package/destination-tunnel-har.d.mts.map +1 -0
  20. package/destination-tunnel-har.d.ts +23 -0
  21. package/destination-tunnel-har.d.ts.map +1 -0
  22. package/destination-tunnel-har.js +164 -0
  23. package/destination-tunnel-har.js.map +1 -0
  24. package/destination-tunnel-har.mjs +160 -0
  25. package/destination-tunnel-har.mjs.map +1 -0
  26. package/destination-tunnel-inspection.d.mts +71 -0
  27. package/destination-tunnel-inspection.d.mts.map +1 -0
  28. package/destination-tunnel-inspection.d.ts +71 -0
  29. package/destination-tunnel-inspection.d.ts.map +1 -0
  30. package/destination-tunnel-inspection.js +267 -0
  31. package/destination-tunnel-inspection.js.map +1 -0
  32. package/destination-tunnel-inspection.mjs +261 -0
  33. package/destination-tunnel-inspection.mjs.map +1 -0
  34. package/destination-tunnel.d.mts +119 -14
  35. package/destination-tunnel.d.mts.map +1 -1
  36. package/destination-tunnel.d.ts +119 -14
  37. package/destination-tunnel.d.ts.map +1 -1
  38. package/destination-tunnel.js +407 -98
  39. package/destination-tunnel.js.map +1 -1
  40. package/destination-tunnel.mjs +374 -73
  41. package/destination-tunnel.mjs.map +1 -1
  42. package/index.d.mts +6 -0
  43. package/index.d.mts.map +1 -1
  44. package/index.d.ts +6 -0
  45. package/index.d.ts.map +1 -1
  46. package/index.js +23 -2
  47. package/index.js.map +1 -1
  48. package/index.mjs +5 -0
  49. package/index.mjs.map +1 -1
  50. package/instance-client.d.mts +105 -1
  51. package/instance-client.d.mts.map +1 -1
  52. package/instance-client.d.ts +105 -1
  53. package/instance-client.d.ts.map +1 -1
  54. package/instance-client.js +83 -1
  55. package/instance-client.js.map +1 -1
  56. package/instance-client.mjs +83 -1
  57. package/instance-client.mjs.map +1 -1
  58. package/internal/destination-tunnel-management.d.mts +4 -3
  59. package/internal/destination-tunnel-management.d.mts.map +1 -1
  60. package/internal/destination-tunnel-management.d.ts +4 -3
  61. package/internal/destination-tunnel-management.d.ts.map +1 -1
  62. package/internal/destination-tunnel-management.js +64 -46
  63. package/internal/destination-tunnel-management.js.map +1 -1
  64. package/internal/destination-tunnel-management.mjs +55 -37
  65. package/internal/destination-tunnel-management.mjs.map +1 -1
  66. package/internal/destination-tunnel-url.d.mts +2 -0
  67. package/internal/destination-tunnel-url.d.mts.map +1 -1
  68. package/internal/destination-tunnel-url.d.ts +2 -0
  69. package/internal/destination-tunnel-url.d.ts.map +1 -1
  70. package/internal/destination-tunnel-url.js +45 -5
  71. package/internal/destination-tunnel-url.js.map +1 -1
  72. package/internal/destination-tunnel-url.mjs +44 -5
  73. package/internal/destination-tunnel-url.mjs.map +1 -1
  74. package/internal/destination-tunnel-wire-reader.d.mts +23 -0
  75. package/internal/destination-tunnel-wire-reader.d.mts.map +1 -0
  76. package/internal/destination-tunnel-wire-reader.d.ts +23 -0
  77. package/internal/destination-tunnel-wire-reader.d.ts.map +1 -0
  78. package/internal/destination-tunnel-wire-reader.js +110 -0
  79. package/internal/destination-tunnel-wire-reader.js.map +1 -0
  80. package/internal/destination-tunnel-wire-reader.mjs +93 -0
  81. package/internal/destination-tunnel-wire-reader.mjs.map +1 -0
  82. package/internal/persist-option.d.mts +14 -0
  83. package/internal/persist-option.d.mts.map +1 -0
  84. package/internal/persist-option.d.ts +14 -0
  85. package/internal/persist-option.d.ts.map +1 -0
  86. package/internal/persist-option.js +18 -0
  87. package/internal/persist-option.js.map +1 -0
  88. package/internal/persist-option.mjs +15 -0
  89. package/internal/persist-option.mjs.map +1 -0
  90. package/internal/proxy-transport.d.mts +27 -0
  91. package/internal/proxy-transport.d.mts.map +1 -1
  92. package/internal/proxy-transport.d.ts +27 -0
  93. package/internal/proxy-transport.d.ts.map +1 -1
  94. package/internal/proxy-transport.js +206 -0
  95. package/internal/proxy-transport.js.map +1 -1
  96. package/internal/proxy-transport.mjs +205 -0
  97. package/internal/proxy-transport.mjs.map +1 -1
  98. package/internal/session-stream.d.mts +39 -0
  99. package/internal/session-stream.d.mts.map +1 -0
  100. package/internal/session-stream.d.ts +39 -0
  101. package/internal/session-stream.d.ts.map +1 -0
  102. package/internal/session-stream.js +144 -0
  103. package/internal/session-stream.js.map +1 -0
  104. package/internal/session-stream.mjs +139 -0
  105. package/internal/session-stream.mjs.map +1 -0
  106. package/internal/tslib.js +4 -4
  107. package/ios-client.d.mts +61 -4
  108. package/ios-client.d.mts.map +1 -1
  109. package/ios-client.d.ts +61 -4
  110. package/ios-client.d.ts.map +1 -1
  111. package/ios-client.js +48 -2
  112. package/ios-client.js.map +1 -1
  113. package/ios-client.mjs +48 -2
  114. package/ios-client.mjs.map +1 -1
  115. package/package.json +22 -1
  116. package/resources/android-instances-helpers.d.mts +25 -0
  117. package/resources/android-instances-helpers.d.mts.map +1 -0
  118. package/resources/android-instances-helpers.d.ts +25 -0
  119. package/resources/android-instances-helpers.d.ts.map +1 -0
  120. package/resources/android-instances-helpers.js +37 -0
  121. package/resources/android-instances-helpers.js.map +1 -0
  122. package/resources/android-instances-helpers.mjs +33 -0
  123. package/resources/android-instances-helpers.mjs.map +1 -0
  124. package/resources/index.d.mts +5 -2
  125. package/resources/index.d.mts.map +1 -1
  126. package/resources/index.d.ts +5 -2
  127. package/resources/index.d.ts.map +1 -1
  128. package/resources/index.js +5 -5
  129. package/resources/index.js.map +1 -1
  130. package/resources/index.mjs +2 -2
  131. package/resources/index.mjs.map +1 -1
  132. package/resources/ios-instances-helpers.d.mts +25 -0
  133. package/resources/ios-instances-helpers.d.mts.map +1 -0
  134. package/resources/ios-instances-helpers.d.ts +25 -0
  135. package/resources/ios-instances-helpers.d.ts.map +1 -0
  136. package/resources/ios-instances-helpers.js +37 -0
  137. package/resources/ios-instances-helpers.js.map +1 -0
  138. package/resources/ios-instances-helpers.mjs +33 -0
  139. package/resources/ios-instances-helpers.mjs.map +1 -0
  140. package/resources/session-artifacts.d.mts +70 -0
  141. package/resources/session-artifacts.d.mts.map +1 -0
  142. package/resources/session-artifacts.d.ts +70 -0
  143. package/resources/session-artifacts.d.ts.map +1 -0
  144. package/resources/session-artifacts.js +8 -0
  145. package/resources/session-artifacts.js.map +1 -0
  146. package/resources/session-artifacts.mjs +7 -0
  147. package/resources/session-artifacts.mjs.map +1 -0
  148. package/src/client.ts +4 -2
  149. package/src/destination-tunnel-dialer.ts +403 -64
  150. package/src/destination-tunnel-har.ts +200 -0
  151. package/src/destination-tunnel-inspection.ts +367 -0
  152. package/src/destination-tunnel.ts +510 -88
  153. package/src/index.ts +52 -0
  154. package/src/instance-client.ts +271 -5
  155. package/src/internal/destination-tunnel-management.ts +67 -43
  156. package/src/internal/destination-tunnel-url.ts +61 -5
  157. package/src/internal/destination-tunnel-wire-reader.ts +109 -0
  158. package/src/internal/persist-option.ts +26 -0
  159. package/src/internal/proxy-transport.ts +248 -0
  160. package/src/internal/session-stream.ts +157 -0
  161. package/src/ios-client.ts +127 -8
  162. package/src/resources/android-instances-helpers.ts +45 -0
  163. package/src/resources/index.ts +9 -2
  164. package/src/resources/ios-instances-helpers.ts +45 -0
  165. package/src/resources/session-artifacts.ts +95 -0
  166. package/src/version.ts +1 -1
  167. package/version.d.mts +1 -1
  168. package/version.d.ts +1 -1
  169. package/version.js +1 -1
  170. package/version.mjs +1 -1
@@ -3,12 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deriveDestinationTunnelURL = deriveDestinationTunnelURL;
4
4
  exports.deriveDestinationTunnelStatusURL = deriveDestinationTunnelStatusURL;
5
5
  exports.deriveDestinationTunnelStopURL = deriveDestinationTunnelStopURL;
6
+ exports.deriveDestinationTunnelInspectionURL = deriveDestinationTunnelInspectionURL;
6
7
  function deriveDestinationTunnelEndpointURL(apiUrl, suffix) {
7
8
  const url = new URL(apiUrl);
8
- if (url.protocol !== 'https:' && url.protocol !== 'http:') {
9
+ if (url.protocol !== 'https:' &&
10
+ url.protocol !== 'http:' &&
11
+ url.protocol !== 'wss:' &&
12
+ url.protocol !== 'ws:') {
9
13
  throw new Error(`Unsupported apiUrl protocol for tunnel: ${url.protocol}`);
10
14
  }
11
- const tunnelPath = `${url.pathname.replace(/\/+$/, '')}/tunnel`;
15
+ const tunnelPath = `${withoutTrailingSlashes(url.pathname)}/tunnel`;
12
16
  url.pathname = suffix === undefined ? tunnelPath : `${tunnelPath}/${suffix}`;
13
17
  url.search = '';
14
18
  url.hash = '';
@@ -16,13 +20,49 @@ function deriveDestinationTunnelEndpointURL(apiUrl, suffix) {
16
20
  }
17
21
  function deriveDestinationTunnelURL(apiUrl) {
18
22
  const url = deriveDestinationTunnelEndpointURL(apiUrl);
19
- url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:';
23
+ url.protocol = url.protocol === 'https:' || url.protocol === 'wss:' ? 'wss:' : 'ws:';
20
24
  return url.toString();
21
25
  }
22
26
  function deriveDestinationTunnelStatusURL(apiUrl) {
23
- return deriveDestinationTunnelEndpointURL(apiUrl, 'status');
27
+ const url = deriveDestinationTunnelEndpointURL(apiUrl, 'status');
28
+ url.protocol =
29
+ url.protocol === 'wss:' ? 'https:'
30
+ : url.protocol === 'ws:' ? 'http:'
31
+ : url.protocol;
32
+ return url;
24
33
  }
25
34
  function deriveDestinationTunnelStopURL(apiUrl, tunnelId) {
26
- return deriveDestinationTunnelEndpointURL(apiUrl, encodeURIComponent(tunnelId));
35
+ const url = deriveDestinationTunnelEndpointURL(apiUrl, encodeURIComponent(tunnelId));
36
+ url.protocol =
37
+ url.protocol === 'wss:' ? 'https:'
38
+ : url.protocol === 'ws:' ? 'http:'
39
+ : url.protocol;
40
+ return url;
41
+ }
42
+ function deriveDestinationTunnelInspectionURL(tunnelUrl, tunnelId, afterSequenceOrToken = 0, explicitToken) {
43
+ const afterSequence = typeof afterSequenceOrToken === 'number' ? afterSequenceOrToken : 0;
44
+ const token = typeof afterSequenceOrToken === 'string' ? afterSequenceOrToken : explicitToken;
45
+ if (!Number.isSafeInteger(afterSequence) || afterSequence < 0) {
46
+ throw new Error('afterSequence must be a safe non-negative integer');
47
+ }
48
+ const url = new URL(tunnelUrl);
49
+ url.protocol =
50
+ url.protocol === 'wss:' ? 'https:'
51
+ : url.protocol === 'ws:' ? 'http:'
52
+ : url.protocol;
53
+ url.pathname = `${withoutTrailingSlashes(url.pathname)}/${encodeURIComponent(tunnelId)}/inspection/events`;
54
+ url.search = '';
55
+ if (afterSequence > 0)
56
+ url.searchParams.set('after-sequence', String(afterSequence));
57
+ if (token !== undefined)
58
+ url.searchParams.set('token', token);
59
+ url.hash = '';
60
+ return url.toString();
61
+ }
62
+ function withoutTrailingSlashes(path) {
63
+ let end = path.length;
64
+ while (end > 0 && path.charCodeAt(end - 1) === 47)
65
+ end--;
66
+ return path.slice(0, end);
27
67
  }
28
68
  //# sourceMappingURL=destination-tunnel-url.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"destination-tunnel-url.js","sourceRoot":"","sources":["../src/internal/destination-tunnel-url.ts"],"names":[],"mappings":";;AAYA,gEAIC;AAED,4EAEC;AAED,wEAEC;AAxBD,SAAS,kCAAkC,CAAC,MAAc,EAAE,MAAe;IACzE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IAChE,GAAG,CAAC,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;IAC7E,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;IAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,0BAA0B,CAAC,MAAc;IACvD,MAAM,GAAG,GAAG,kCAAkC,CAAC,MAAM,CAAC,CAAC;IACvD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,SAAgB,gCAAgC,CAAC,MAAc;IAC7D,OAAO,kCAAkC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,8BAA8B,CAAC,MAAc,EAAE,QAAgB;IAC7E,OAAO,kCAAkC,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClF,CAAC"}
1
+ {"version":3,"file":"destination-tunnel-url.js","sourceRoot":"","sources":["../src/internal/destination-tunnel-url.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  function deriveDestinationTunnelEndpointURL(apiUrl, suffix) {
2
2
  const url = new URL(apiUrl);
3
- if (url.protocol !== 'https:' && url.protocol !== 'http:') {
3
+ if (url.protocol !== 'https:' &&
4
+ url.protocol !== 'http:' &&
5
+ url.protocol !== 'wss:' &&
6
+ url.protocol !== 'ws:') {
4
7
  throw new Error(`Unsupported apiUrl protocol for tunnel: ${url.protocol}`);
5
8
  }
6
- const tunnelPath = `${url.pathname.replace(/\/+$/, '')}/tunnel`;
9
+ const tunnelPath = `${withoutTrailingSlashes(url.pathname)}/tunnel`;
7
10
  url.pathname = suffix === undefined ? tunnelPath : `${tunnelPath}/${suffix}`;
8
11
  url.search = '';
9
12
  url.hash = '';
@@ -11,13 +14,49 @@ function deriveDestinationTunnelEndpointURL(apiUrl, suffix) {
11
14
  }
12
15
  export function deriveDestinationTunnelURL(apiUrl) {
13
16
  const url = deriveDestinationTunnelEndpointURL(apiUrl);
14
- url.protocol = url.protocol === 'https:' ? 'wss:' : 'ws:';
17
+ url.protocol = url.protocol === 'https:' || url.protocol === 'wss:' ? 'wss:' : 'ws:';
15
18
  return url.toString();
16
19
  }
17
20
  export function deriveDestinationTunnelStatusURL(apiUrl) {
18
- return deriveDestinationTunnelEndpointURL(apiUrl, 'status');
21
+ const url = deriveDestinationTunnelEndpointURL(apiUrl, 'status');
22
+ url.protocol =
23
+ url.protocol === 'wss:' ? 'https:'
24
+ : url.protocol === 'ws:' ? 'http:'
25
+ : url.protocol;
26
+ return url;
19
27
  }
20
28
  export function deriveDestinationTunnelStopURL(apiUrl, tunnelId) {
21
- return deriveDestinationTunnelEndpointURL(apiUrl, encodeURIComponent(tunnelId));
29
+ const url = deriveDestinationTunnelEndpointURL(apiUrl, encodeURIComponent(tunnelId));
30
+ url.protocol =
31
+ url.protocol === 'wss:' ? 'https:'
32
+ : url.protocol === 'ws:' ? 'http:'
33
+ : url.protocol;
34
+ return url;
35
+ }
36
+ export function deriveDestinationTunnelInspectionURL(tunnelUrl, tunnelId, afterSequenceOrToken = 0, explicitToken) {
37
+ const afterSequence = typeof afterSequenceOrToken === 'number' ? afterSequenceOrToken : 0;
38
+ const token = typeof afterSequenceOrToken === 'string' ? afterSequenceOrToken : explicitToken;
39
+ if (!Number.isSafeInteger(afterSequence) || afterSequence < 0) {
40
+ throw new Error('afterSequence must be a safe non-negative integer');
41
+ }
42
+ const url = new URL(tunnelUrl);
43
+ url.protocol =
44
+ url.protocol === 'wss:' ? 'https:'
45
+ : url.protocol === 'ws:' ? 'http:'
46
+ : url.protocol;
47
+ url.pathname = `${withoutTrailingSlashes(url.pathname)}/${encodeURIComponent(tunnelId)}/inspection/events`;
48
+ url.search = '';
49
+ if (afterSequence > 0)
50
+ url.searchParams.set('after-sequence', String(afterSequence));
51
+ if (token !== undefined)
52
+ url.searchParams.set('token', token);
53
+ url.hash = '';
54
+ return url.toString();
55
+ }
56
+ function withoutTrailingSlashes(path) {
57
+ let end = path.length;
58
+ while (end > 0 && path.charCodeAt(end - 1) === 47)
59
+ end--;
60
+ return path.slice(0, end);
22
61
  }
23
62
  //# sourceMappingURL=destination-tunnel-url.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"destination-tunnel-url.mjs","sourceRoot":"","sources":["../src/internal/destination-tunnel-url.ts"],"names":[],"mappings":"AAAA,SAAS,kCAAkC,CAAC,MAAc,EAAE,MAAe;IACzE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,UAAU,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IAChE,GAAG,CAAC,QAAQ,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,MAAM,EAAE,CAAC;IAC7E,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;IAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,MAAM,GAAG,GAAG,kCAAkC,CAAC,MAAM,CAAC,CAAC;IACvD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1D,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,MAAc;IAC7D,OAAO,kCAAkC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,MAAc,EAAE,QAAgB;IAC7E,OAAO,kCAAkC,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClF,CAAC"}
1
+ {"version":3,"file":"destination-tunnel-url.mjs","sourceRoot":"","sources":["../src/internal/destination-tunnel-url.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare class DestinationTunnelProtocolError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare function readRecord(value: unknown, name: string): Record<string, unknown>;
5
+ export declare function readArray(record: Record<string, unknown>, key: string): unknown[];
6
+ export declare function readString(record: Record<string, unknown>, key: string): string;
7
+ export declare function readNonEmptyString(record: Record<string, unknown>, key: string): string;
8
+ export declare function readBoolean(record: Record<string, unknown>, key: string): boolean;
9
+ export declare function readInteger(record: Record<string, unknown>, key: string): number;
10
+ export declare function readFiniteNumber(record: Record<string, unknown>, key: string): number;
11
+ export declare function readSafeNonNegativeInteger(value: unknown, name: string): number;
12
+ export declare function readOptionalString(record: Record<string, unknown>, key: string): {
13
+ [K in typeof key]?: string;
14
+ };
15
+ export declare function readOptionalBoolean(record: Record<string, unknown>, key: string): {
16
+ [K in typeof key]?: boolean;
17
+ };
18
+ export declare function readOptionalNonNegativeInteger(record: Record<string, unknown>, key: string): {
19
+ [K in typeof key]?: number;
20
+ };
21
+ export declare function decodeUtf8(value: Buffer, name: string): string;
22
+ export declare function toBuffer(data: Buffer | ArrayBuffer | Buffer[]): Buffer;
23
+ //# sourceMappingURL=destination-tunnel-wire-reader.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destination-tunnel-wire-reader.d.mts","sourceRoot":"","sources":["../src/internal/destination-tunnel-wire-reader.ts"],"names":[],"mappings":"AAAA,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKhF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAMjF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAMjF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMrF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV;KAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM;CAAE,CAEhC;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV;KAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,OAAO;CAAE,CAEjC;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV;KAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM;CAAE,CAOhC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,EAAE,GAAG,MAAM,CAKtE"}
@@ -0,0 +1,23 @@
1
+ export declare class DestinationTunnelProtocolError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare function readRecord(value: unknown, name: string): Record<string, unknown>;
5
+ export declare function readArray(record: Record<string, unknown>, key: string): unknown[];
6
+ export declare function readString(record: Record<string, unknown>, key: string): string;
7
+ export declare function readNonEmptyString(record: Record<string, unknown>, key: string): string;
8
+ export declare function readBoolean(record: Record<string, unknown>, key: string): boolean;
9
+ export declare function readInteger(record: Record<string, unknown>, key: string): number;
10
+ export declare function readFiniteNumber(record: Record<string, unknown>, key: string): number;
11
+ export declare function readSafeNonNegativeInteger(value: unknown, name: string): number;
12
+ export declare function readOptionalString(record: Record<string, unknown>, key: string): {
13
+ [K in typeof key]?: string;
14
+ };
15
+ export declare function readOptionalBoolean(record: Record<string, unknown>, key: string): {
16
+ [K in typeof key]?: boolean;
17
+ };
18
+ export declare function readOptionalNonNegativeInteger(record: Record<string, unknown>, key: string): {
19
+ [K in typeof key]?: number;
20
+ };
21
+ export declare function decodeUtf8(value: Buffer, name: string): string;
22
+ export declare function toBuffer(data: Buffer | ArrayBuffer | Buffer[]): Buffer;
23
+ //# sourceMappingURL=destination-tunnel-wire-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destination-tunnel-wire-reader.d.ts","sourceRoot":"","sources":["../src/internal/destination-tunnel-wire-reader.ts"],"names":[],"mappings":"AAAA,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKhF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAMjF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/E;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAMjF;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMrF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/E;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV;KAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM;CAAE,CAEhC;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV;KAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,OAAO;CAAE,CAEjC;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV;KAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,MAAM;CAAE,CAOhC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,EAAE,GAAG,MAAM,CAKtE"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DestinationTunnelProtocolError = void 0;
4
+ exports.readRecord = readRecord;
5
+ exports.readArray = readArray;
6
+ exports.readString = readString;
7
+ exports.readNonEmptyString = readNonEmptyString;
8
+ exports.readBoolean = readBoolean;
9
+ exports.readInteger = readInteger;
10
+ exports.readFiniteNumber = readFiniteNumber;
11
+ exports.readSafeNonNegativeInteger = readSafeNonNegativeInteger;
12
+ exports.readOptionalString = readOptionalString;
13
+ exports.readOptionalBoolean = readOptionalBoolean;
14
+ exports.readOptionalNonNegativeInteger = readOptionalNonNegativeInteger;
15
+ exports.decodeUtf8 = decodeUtf8;
16
+ exports.toBuffer = toBuffer;
17
+ class DestinationTunnelProtocolError extends Error {
18
+ constructor(message) {
19
+ super(message);
20
+ this.name = 'DestinationTunnelProtocolError';
21
+ }
22
+ }
23
+ exports.DestinationTunnelProtocolError = DestinationTunnelProtocolError;
24
+ function readRecord(value, name) {
25
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
26
+ throw new DestinationTunnelProtocolError(`${name} must be an object`);
27
+ }
28
+ return value;
29
+ }
30
+ function readArray(record, key) {
31
+ const value = record[key];
32
+ if (!Array.isArray(value)) {
33
+ throw new DestinationTunnelProtocolError(`${key} must be an array`);
34
+ }
35
+ return value;
36
+ }
37
+ function readString(record, key) {
38
+ const value = record[key];
39
+ if (typeof value !== 'string') {
40
+ throw new DestinationTunnelProtocolError(`${key} must be a string`);
41
+ }
42
+ return value;
43
+ }
44
+ function readNonEmptyString(record, key) {
45
+ const value = readString(record, key);
46
+ if (value.length === 0) {
47
+ throw new DestinationTunnelProtocolError(`${key} must not be empty`);
48
+ }
49
+ return value;
50
+ }
51
+ function readBoolean(record, key) {
52
+ const value = record[key];
53
+ if (typeof value !== 'boolean') {
54
+ throw new DestinationTunnelProtocolError(`${key} must be a boolean`);
55
+ }
56
+ return value;
57
+ }
58
+ function readInteger(record, key) {
59
+ const value = record[key];
60
+ if (!Number.isInteger(value)) {
61
+ throw new DestinationTunnelProtocolError(`${key} must be an integer`);
62
+ }
63
+ return value;
64
+ }
65
+ function readFiniteNumber(record, key) {
66
+ const value = record[key];
67
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
68
+ throw new DestinationTunnelProtocolError(`${key} must be a finite number`);
69
+ }
70
+ return value;
71
+ }
72
+ function readSafeNonNegativeInteger(value, name) {
73
+ if (!Number.isSafeInteger(value) || value < 0) {
74
+ throw new DestinationTunnelProtocolError(`${name} must be a safe non-negative integer`);
75
+ }
76
+ return value;
77
+ }
78
+ function readOptionalString(record, key) {
79
+ return record[key] === undefined ? {} : { [key]: readString(record, key) };
80
+ }
81
+ function readOptionalBoolean(record, key) {
82
+ return record[key] === undefined ? {} : { [key]: readBoolean(record, key) };
83
+ }
84
+ function readOptionalNonNegativeInteger(record, key) {
85
+ const value = record[key];
86
+ if (value === undefined)
87
+ return {};
88
+ if (!Number.isInteger(value) || value < 0) {
89
+ throw new DestinationTunnelProtocolError(`${key} must be a non-negative integer`);
90
+ }
91
+ return { [key]: value };
92
+ }
93
+ function decodeUtf8(value, name) {
94
+ try {
95
+ return new TextDecoder('utf-8', { fatal: true }).decode(value);
96
+ }
97
+ catch {
98
+ throw new DestinationTunnelProtocolError(`${name} must be valid UTF-8`);
99
+ }
100
+ }
101
+ function toBuffer(data) {
102
+ if (Buffer.isBuffer(data))
103
+ return data;
104
+ if (Array.isArray(data))
105
+ return Buffer.concat(data);
106
+ if (data instanceof ArrayBuffer)
107
+ return Buffer.from(data);
108
+ throw new DestinationTunnelProtocolError('unsupported WebSocket payload type');
109
+ }
110
+ //# sourceMappingURL=destination-tunnel-wire-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destination-tunnel-wire-reader.js","sourceRoot":"","sources":["../src/internal/destination-tunnel-wire-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ export class DestinationTunnelProtocolError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = 'DestinationTunnelProtocolError';
5
+ }
6
+ }
7
+ export function readRecord(value, name) {
8
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
9
+ throw new DestinationTunnelProtocolError(`${name} must be an object`);
10
+ }
11
+ return value;
12
+ }
13
+ export function readArray(record, key) {
14
+ const value = record[key];
15
+ if (!Array.isArray(value)) {
16
+ throw new DestinationTunnelProtocolError(`${key} must be an array`);
17
+ }
18
+ return value;
19
+ }
20
+ export function readString(record, key) {
21
+ const value = record[key];
22
+ if (typeof value !== 'string') {
23
+ throw new DestinationTunnelProtocolError(`${key} must be a string`);
24
+ }
25
+ return value;
26
+ }
27
+ export function readNonEmptyString(record, key) {
28
+ const value = readString(record, key);
29
+ if (value.length === 0) {
30
+ throw new DestinationTunnelProtocolError(`${key} must not be empty`);
31
+ }
32
+ return value;
33
+ }
34
+ export function readBoolean(record, key) {
35
+ const value = record[key];
36
+ if (typeof value !== 'boolean') {
37
+ throw new DestinationTunnelProtocolError(`${key} must be a boolean`);
38
+ }
39
+ return value;
40
+ }
41
+ export function readInteger(record, key) {
42
+ const value = record[key];
43
+ if (!Number.isInteger(value)) {
44
+ throw new DestinationTunnelProtocolError(`${key} must be an integer`);
45
+ }
46
+ return value;
47
+ }
48
+ export function readFiniteNumber(record, key) {
49
+ const value = record[key];
50
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
51
+ throw new DestinationTunnelProtocolError(`${key} must be a finite number`);
52
+ }
53
+ return value;
54
+ }
55
+ export function readSafeNonNegativeInteger(value, name) {
56
+ if (!Number.isSafeInteger(value) || value < 0) {
57
+ throw new DestinationTunnelProtocolError(`${name} must be a safe non-negative integer`);
58
+ }
59
+ return value;
60
+ }
61
+ export function readOptionalString(record, key) {
62
+ return record[key] === undefined ? {} : { [key]: readString(record, key) };
63
+ }
64
+ export function readOptionalBoolean(record, key) {
65
+ return record[key] === undefined ? {} : { [key]: readBoolean(record, key) };
66
+ }
67
+ export function readOptionalNonNegativeInteger(record, key) {
68
+ const value = record[key];
69
+ if (value === undefined)
70
+ return {};
71
+ if (!Number.isInteger(value) || value < 0) {
72
+ throw new DestinationTunnelProtocolError(`${key} must be a non-negative integer`);
73
+ }
74
+ return { [key]: value };
75
+ }
76
+ export function decodeUtf8(value, name) {
77
+ try {
78
+ return new TextDecoder('utf-8', { fatal: true }).decode(value);
79
+ }
80
+ catch {
81
+ throw new DestinationTunnelProtocolError(`${name} must be valid UTF-8`);
82
+ }
83
+ }
84
+ export function toBuffer(data) {
85
+ if (Buffer.isBuffer(data))
86
+ return data;
87
+ if (Array.isArray(data))
88
+ return Buffer.concat(data);
89
+ if (data instanceof ArrayBuffer)
90
+ return Buffer.from(data);
91
+ throw new DestinationTunnelProtocolError('unsupported WebSocket payload type');
92
+ }
93
+ //# sourceMappingURL=destination-tunnel-wire-reader.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destination-tunnel-wire-reader.mjs","sourceRoot":"","sources":["../src/internal/destination-tunnel-wire-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Whether a capture is persisted to Limrun's bucket after it stops.
3
+ * `true` persists with the server default TTL (72h); pass an object to set
4
+ * the TTL in seconds (capped server-side).
5
+ */
6
+ export type PersistOption = boolean | {
7
+ ttlSeconds?: number;
8
+ };
9
+ /** Wire fields a persist option turns into on a start-capture message. */
10
+ export declare function persistFields(persist: PersistOption | undefined): {
11
+ persist?: boolean;
12
+ ttlSeconds?: number;
13
+ };
14
+ //# sourceMappingURL=persist-option.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persist-option.d.mts","sourceRoot":"","sources":["../src/internal/persist-option.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAcA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Whether a capture is persisted to Limrun's bucket after it stops.
3
+ * `true` persists with the server default TTL (72h); pass an object to set
4
+ * the TTL in seconds (capped server-side).
5
+ */
6
+ export type PersistOption = boolean | {
7
+ ttlSeconds?: number;
8
+ };
9
+ /** Wire fields a persist option turns into on a start-capture message. */
10
+ export declare function persistFields(persist: PersistOption | undefined): {
11
+ persist?: boolean;
12
+ ttlSeconds?: number;
13
+ };
14
+ //# sourceMappingURL=persist-option.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persist-option.d.ts","sourceRoot":"","sources":["../src/internal/persist-option.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,GAAG;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAcA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.persistFields = persistFields;
4
+ /** Wire fields a persist option turns into on a start-capture message. */
5
+ function persistFields(persist) {
6
+ if (!persist) {
7
+ return {};
8
+ }
9
+ if (persist === true) {
10
+ return { persist: true };
11
+ }
12
+ if (persist.ttlSeconds !== undefined &&
13
+ (!Number.isInteger(persist.ttlSeconds) || persist.ttlSeconds <= 0)) {
14
+ throw new Error('ttlSeconds must be a positive integer');
15
+ }
16
+ return { persist: true, ...(persist.ttlSeconds !== undefined && { ttlSeconds: persist.ttlSeconds }) };
17
+ }
18
+ //# sourceMappingURL=persist-option.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persist-option.js","sourceRoot":"","sources":["../src/internal/persist-option.ts"],"names":[],"mappings":";;AAQA,sCAiBC;AAlBD,0EAA0E;AAC1E,SAAgB,aAAa,CAAC,OAAkC;IAI9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,IACE,OAAO,CAAC,UAAU,KAAK,SAAS;QAChC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,EAClE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AACxG,CAAC"}
@@ -0,0 +1,15 @@
1
+ /** Wire fields a persist option turns into on a start-capture message. */
2
+ export function persistFields(persist) {
3
+ if (!persist) {
4
+ return {};
5
+ }
6
+ if (persist === true) {
7
+ return { persist: true };
8
+ }
9
+ if (persist.ttlSeconds !== undefined &&
10
+ (!Number.isInteger(persist.ttlSeconds) || persist.ttlSeconds <= 0)) {
11
+ throw new Error('ttlSeconds must be a positive integer');
12
+ }
13
+ return { persist: true, ...(persist.ttlSeconds !== undefined && { ttlSeconds: persist.ttlSeconds }) };
14
+ }
15
+ //# sourceMappingURL=persist-option.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persist-option.mjs","sourceRoot":"","sources":["../src/internal/persist-option.ts"],"names":[],"mappings":"AAOA,0EAA0E;AAC1E,MAAM,UAAU,aAAa,CAAC,OAAkC;IAI9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IACD,IACE,OAAO,CAAC,UAAU,KAAK,SAAS;QAChC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,EAClE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;AACxG,CAAC"}
@@ -1,5 +1,26 @@
1
1
  import type { Agent as HttpAgent } from 'http';
2
+ import net from 'net';
2
3
  import type { Fetch } from "./builtin-types.mjs";
4
+ export interface TcpConnectOptions {
5
+ /** Host actually sent to connect(2), or in the CONNECT authority. */
6
+ host: string;
7
+ port: number;
8
+ /**
9
+ * Original destination used only for HTTP_PROXY/HTTPS_PROXY/NO_PROXY
10
+ * selection. This may differ from host when the caller resolved a domain
11
+ * locally before dialing it.
12
+ */
13
+ proxyLookupHost?: string;
14
+ proxyLookupProtocol: 'http:' | 'https:';
15
+ timeoutMs: number;
16
+ signal?: AbortSignal;
17
+ }
18
+ export interface TcpConnectResult {
19
+ socket: net.Socket;
20
+ connectMs: number;
21
+ /** Address of the destination, never the address of an HTTP proxy. */
22
+ remoteAddress?: string;
23
+ }
3
24
  declare class NodeProxyTransport {
4
25
  private envHttpProxyAgent;
5
26
  private longRequestDispatcher;
@@ -14,6 +35,12 @@ declare class NodeProxyTransport {
14
35
  */
15
36
  fetchLongRequest: Fetch;
16
37
  getWebSocketAgent(url: string): HttpAgent | undefined;
38
+ /**
39
+ * Opens a paused TCP stream to a destination, tunneling through the proxy
40
+ * selected by proxy-from-env when applicable. The caller owns the returned
41
+ * socket and must resume it after installing data/end/error handlers.
42
+ */
43
+ connectTcp(options: TcpConnectOptions): Promise<TcpConnectResult>;
17
44
  private getEnvHttpProxyAgent;
18
45
  private hasProxyEnv;
19
46
  private getWebSocketProxyLookupUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-transport.d.mts","sourceRoot":"","sources":["../src/internal/proxy-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAM/C,OAAO,KAAK,EAAE,KAAK,EAAE,4BAAwB;AAQ7C,cAAM,kBAAkB;IACtB,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,qBAAqB,CAAgC;IAC7D,OAAO,CAAC,eAAe,CAAgC;IAEvD,KAAK,EAAE,KAAK,CASV;IAEF;;;;;;OAMG;IACH,gBAAgB,EAAE,KAAK,CAMrB;IAEF,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAoBrD,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,0BAA0B;CASnC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
1
+ {"version":3,"file":"proxy-transport.d.mts","sourceRoot":"","sources":["../src/internal/proxy-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,OAAO,KAAK,EAAE,KAAK,EAAE,4BAAwB;AAS7C,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,cAAM,kBAAkB;IACtB,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,qBAAqB,CAAgC;IAC7D,OAAO,CAAC,eAAe,CAAgC;IAEvD,KAAK,EAAE,KAAK,CASV;IAEF;;;;;;OAMG;IACH,gBAAgB,EAAE,KAAK,CAMrB;IAEF,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAoBrD;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUjE,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,0BAA0B;CASnC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
@@ -1,5 +1,26 @@
1
1
  import type { Agent as HttpAgent } from 'http';
2
+ import net from 'net';
2
3
  import type { Fetch } from "./builtin-types.js";
4
+ export interface TcpConnectOptions {
5
+ /** Host actually sent to connect(2), or in the CONNECT authority. */
6
+ host: string;
7
+ port: number;
8
+ /**
9
+ * Original destination used only for HTTP_PROXY/HTTPS_PROXY/NO_PROXY
10
+ * selection. This may differ from host when the caller resolved a domain
11
+ * locally before dialing it.
12
+ */
13
+ proxyLookupHost?: string;
14
+ proxyLookupProtocol: 'http:' | 'https:';
15
+ timeoutMs: number;
16
+ signal?: AbortSignal;
17
+ }
18
+ export interface TcpConnectResult {
19
+ socket: net.Socket;
20
+ connectMs: number;
21
+ /** Address of the destination, never the address of an HTTP proxy. */
22
+ remoteAddress?: string;
23
+ }
3
24
  declare class NodeProxyTransport {
4
25
  private envHttpProxyAgent;
5
26
  private longRequestDispatcher;
@@ -14,6 +35,12 @@ declare class NodeProxyTransport {
14
35
  */
15
36
  fetchLongRequest: Fetch;
16
37
  getWebSocketAgent(url: string): HttpAgent | undefined;
38
+ /**
39
+ * Opens a paused TCP stream to a destination, tunneling through the proxy
40
+ * selected by proxy-from-env when applicable. The caller owns the returned
41
+ * socket and must resume it after installing data/end/error handlers.
42
+ */
43
+ connectTcp(options: TcpConnectOptions): Promise<TcpConnectResult>;
17
44
  private getEnvHttpProxyAgent;
18
45
  private hasProxyEnv;
19
46
  private getWebSocketProxyLookupUrl;
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-transport.d.ts","sourceRoot":"","sources":["../src/internal/proxy-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAM/C,OAAO,KAAK,EAAE,KAAK,EAAE,2BAAwB;AAQ7C,cAAM,kBAAkB;IACtB,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,qBAAqB,CAAgC;IAC7D,OAAO,CAAC,eAAe,CAAgC;IAEvD,KAAK,EAAE,KAAK,CASV;IAEF;;;;;;OAMG;IACH,gBAAgB,EAAE,KAAK,CAMrB;IAEF,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAoBrD,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,0BAA0B;CASnC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
1
+ {"version":3,"file":"proxy-transport.d.ts","sourceRoot":"","sources":["../src/internal/proxy-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,OAAO,KAAK,EAAE,KAAK,EAAE,2BAAwB;AAS7C,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,cAAM,kBAAkB;IACtB,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,qBAAqB,CAAgC;IAC7D,OAAO,CAAC,eAAe,CAAgC;IAEvD,KAAK,EAAE,KAAK,CASV;IAEF;;;;;;OAMG;IACH,gBAAgB,EAAE,KAAK,CAMrB;IAEF,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAoBrD;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUjE,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,0BAA0B;CASnC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}