@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.
- package/CHANGELOG.md +4 -0
- package/client.d.mts +6 -3
- package/client.d.mts.map +1 -1
- package/client.d.ts +6 -3
- package/client.d.ts.map +1 -1
- package/client.js +4 -4
- package/client.js.map +1 -1
- package/client.mjs +2 -2
- package/client.mjs.map +1 -1
- package/destination-tunnel-dialer.d.mts +30 -2
- package/destination-tunnel-dialer.d.mts.map +1 -1
- package/destination-tunnel-dialer.d.ts +30 -2
- package/destination-tunnel-dialer.d.ts.map +1 -1
- package/destination-tunnel-dialer.js +349 -65
- package/destination-tunnel-dialer.js.map +1 -1
- package/destination-tunnel-dialer.mjs +345 -64
- package/destination-tunnel-dialer.mjs.map +1 -1
- package/destination-tunnel-har.d.mts +23 -0
- package/destination-tunnel-har.d.mts.map +1 -0
- package/destination-tunnel-har.d.ts +23 -0
- package/destination-tunnel-har.d.ts.map +1 -0
- package/destination-tunnel-har.js +164 -0
- package/destination-tunnel-har.js.map +1 -0
- package/destination-tunnel-har.mjs +160 -0
- package/destination-tunnel-har.mjs.map +1 -0
- package/destination-tunnel-inspection.d.mts +71 -0
- package/destination-tunnel-inspection.d.mts.map +1 -0
- package/destination-tunnel-inspection.d.ts +71 -0
- package/destination-tunnel-inspection.d.ts.map +1 -0
- package/destination-tunnel-inspection.js +267 -0
- package/destination-tunnel-inspection.js.map +1 -0
- package/destination-tunnel-inspection.mjs +261 -0
- package/destination-tunnel-inspection.mjs.map +1 -0
- package/destination-tunnel.d.mts +119 -14
- package/destination-tunnel.d.mts.map +1 -1
- package/destination-tunnel.d.ts +119 -14
- package/destination-tunnel.d.ts.map +1 -1
- package/destination-tunnel.js +407 -98
- package/destination-tunnel.js.map +1 -1
- package/destination-tunnel.mjs +374 -73
- package/destination-tunnel.mjs.map +1 -1
- package/index.d.mts +6 -0
- package/index.d.mts.map +1 -1
- package/index.d.ts +6 -0
- package/index.d.ts.map +1 -1
- package/index.js +23 -2
- package/index.js.map +1 -1
- package/index.mjs +5 -0
- package/index.mjs.map +1 -1
- package/instance-client.d.mts +105 -1
- package/instance-client.d.mts.map +1 -1
- package/instance-client.d.ts +105 -1
- package/instance-client.d.ts.map +1 -1
- package/instance-client.js +83 -1
- package/instance-client.js.map +1 -1
- package/instance-client.mjs +83 -1
- package/instance-client.mjs.map +1 -1
- package/internal/destination-tunnel-management.d.mts +4 -3
- package/internal/destination-tunnel-management.d.mts.map +1 -1
- package/internal/destination-tunnel-management.d.ts +4 -3
- package/internal/destination-tunnel-management.d.ts.map +1 -1
- package/internal/destination-tunnel-management.js +64 -46
- package/internal/destination-tunnel-management.js.map +1 -1
- package/internal/destination-tunnel-management.mjs +55 -37
- package/internal/destination-tunnel-management.mjs.map +1 -1
- package/internal/destination-tunnel-url.d.mts +2 -0
- package/internal/destination-tunnel-url.d.mts.map +1 -1
- package/internal/destination-tunnel-url.d.ts +2 -0
- package/internal/destination-tunnel-url.d.ts.map +1 -1
- package/internal/destination-tunnel-url.js +45 -5
- package/internal/destination-tunnel-url.js.map +1 -1
- package/internal/destination-tunnel-url.mjs +44 -5
- package/internal/destination-tunnel-url.mjs.map +1 -1
- package/internal/destination-tunnel-wire-reader.d.mts +23 -0
- package/internal/destination-tunnel-wire-reader.d.mts.map +1 -0
- package/internal/destination-tunnel-wire-reader.d.ts +23 -0
- package/internal/destination-tunnel-wire-reader.d.ts.map +1 -0
- package/internal/destination-tunnel-wire-reader.js +110 -0
- package/internal/destination-tunnel-wire-reader.js.map +1 -0
- package/internal/destination-tunnel-wire-reader.mjs +93 -0
- package/internal/destination-tunnel-wire-reader.mjs.map +1 -0
- package/internal/persist-option.d.mts +14 -0
- package/internal/persist-option.d.mts.map +1 -0
- package/internal/persist-option.d.ts +14 -0
- package/internal/persist-option.d.ts.map +1 -0
- package/internal/persist-option.js +18 -0
- package/internal/persist-option.js.map +1 -0
- package/internal/persist-option.mjs +15 -0
- package/internal/persist-option.mjs.map +1 -0
- package/internal/proxy-transport.d.mts +27 -0
- package/internal/proxy-transport.d.mts.map +1 -1
- package/internal/proxy-transport.d.ts +27 -0
- package/internal/proxy-transport.d.ts.map +1 -1
- package/internal/proxy-transport.js +206 -0
- package/internal/proxy-transport.js.map +1 -1
- package/internal/proxy-transport.mjs +205 -0
- package/internal/proxy-transport.mjs.map +1 -1
- package/internal/session-stream.d.mts +39 -0
- package/internal/session-stream.d.mts.map +1 -0
- package/internal/session-stream.d.ts +39 -0
- package/internal/session-stream.d.ts.map +1 -0
- package/internal/session-stream.js +144 -0
- package/internal/session-stream.js.map +1 -0
- package/internal/session-stream.mjs +139 -0
- package/internal/session-stream.mjs.map +1 -0
- package/internal/tslib.js +4 -4
- package/ios-client.d.mts +61 -4
- package/ios-client.d.mts.map +1 -1
- package/ios-client.d.ts +61 -4
- package/ios-client.d.ts.map +1 -1
- package/ios-client.js +48 -2
- package/ios-client.js.map +1 -1
- package/ios-client.mjs +48 -2
- package/ios-client.mjs.map +1 -1
- package/package.json +22 -1
- package/resources/android-instances-helpers.d.mts +25 -0
- package/resources/android-instances-helpers.d.mts.map +1 -0
- package/resources/android-instances-helpers.d.ts +25 -0
- package/resources/android-instances-helpers.d.ts.map +1 -0
- package/resources/android-instances-helpers.js +37 -0
- package/resources/android-instances-helpers.js.map +1 -0
- package/resources/android-instances-helpers.mjs +33 -0
- package/resources/android-instances-helpers.mjs.map +1 -0
- package/resources/index.d.mts +5 -2
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +5 -2
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js +5 -5
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +2 -2
- package/resources/index.mjs.map +1 -1
- package/resources/ios-instances-helpers.d.mts +25 -0
- package/resources/ios-instances-helpers.d.mts.map +1 -0
- package/resources/ios-instances-helpers.d.ts +25 -0
- package/resources/ios-instances-helpers.d.ts.map +1 -0
- package/resources/ios-instances-helpers.js +37 -0
- package/resources/ios-instances-helpers.js.map +1 -0
- package/resources/ios-instances-helpers.mjs +33 -0
- package/resources/ios-instances-helpers.mjs.map +1 -0
- package/resources/session-artifacts.d.mts +70 -0
- package/resources/session-artifacts.d.mts.map +1 -0
- package/resources/session-artifacts.d.ts +70 -0
- package/resources/session-artifacts.d.ts.map +1 -0
- package/resources/session-artifacts.js +8 -0
- package/resources/session-artifacts.js.map +1 -0
- package/resources/session-artifacts.mjs +7 -0
- package/resources/session-artifacts.mjs.map +1 -0
- package/src/client.ts +4 -2
- package/src/destination-tunnel-dialer.ts +403 -64
- package/src/destination-tunnel-har.ts +200 -0
- package/src/destination-tunnel-inspection.ts +367 -0
- package/src/destination-tunnel.ts +510 -88
- package/src/index.ts +52 -0
- package/src/instance-client.ts +271 -5
- package/src/internal/destination-tunnel-management.ts +67 -43
- package/src/internal/destination-tunnel-url.ts +61 -5
- package/src/internal/destination-tunnel-wire-reader.ts +109 -0
- package/src/internal/persist-option.ts +26 -0
- package/src/internal/proxy-transport.ts +248 -0
- package/src/internal/session-stream.ts +157 -0
- package/src/ios-client.ts +127 -8
- package/src/resources/android-instances-helpers.ts +45 -0
- package/src/resources/index.ts +9 -2
- package/src/resources/ios-instances-helpers.ts +45 -0
- package/src/resources/session-artifacts.ts +95 -0
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
package/destination-tunnel.d.mts
CHANGED
|
@@ -1,20 +1,87 @@
|
|
|
1
|
+
export { DestinationTunnelProtocolError } from "./internal/destination-tunnel-wire-reader.mjs";
|
|
1
2
|
export declare const DESTINATION_TUNNEL_VERSION = 1;
|
|
2
3
|
export declare const DESTINATION_TUNNEL_MAX_ROUTES = 10;
|
|
4
|
+
export declare const DESTINATION_TUNNEL_MAX_DOMAINS = 64;
|
|
3
5
|
export declare const DESTINATION_TUNNEL_CONN_ID_HEADER_BYTES = 4;
|
|
6
|
+
/**
|
|
7
|
+
* IPv4 range used by the device side for synthetic (fake) DNS answers of
|
|
8
|
+
* matched domain selectors.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DESTINATION_TUNNEL_FAKE_RANGE = "198.18.0.0/15";
|
|
11
|
+
/** Upper bound for per-flow receive windows advertised in open/openOk. */
|
|
12
|
+
export declare const DESTINATION_TUNNEL_MAX_WINDOW: number;
|
|
13
|
+
/** Default receive window advertised by generic SDK tunnel clients. */
|
|
14
|
+
export declare const DESTINATION_TUNNEL_DEFAULT_WINDOW: number;
|
|
15
|
+
/** Upper bound for a single windowUpdate increment. */
|
|
16
|
+
export declare const DESTINATION_TUNNEL_MAX_WINDOW_INCREMENT = 2147483647;
|
|
17
|
+
export declare const DESTINATION_TUNNEL_DEFAULT_MAX_BODY_BYTES: number;
|
|
18
|
+
export declare const DESTINATION_TUNNEL_MAX_BODY_BYTES: number;
|
|
19
|
+
export declare const DESTINATION_TUNNEL_DEFAULT_TTL_SECONDS: number;
|
|
20
|
+
export declare const DESTINATION_TUNNEL_MAX_TTL_SECONDS: number;
|
|
4
21
|
export interface DestinationTunnelRoute {
|
|
5
22
|
host: string;
|
|
6
23
|
port: number;
|
|
7
24
|
}
|
|
8
|
-
|
|
25
|
+
/** Canonical selector values carried by the public protocol. */
|
|
26
|
+
export type DestinationTunnelSelectors = string[];
|
|
27
|
+
/** Internal classification used to enforce and dial canonical selectors. */
|
|
28
|
+
export interface DestinationTunnelSelectorCatalog {
|
|
29
|
+
routes?: DestinationTunnelRoute[];
|
|
30
|
+
domains?: string[];
|
|
31
|
+
}
|
|
32
|
+
export interface DestinationTunnelInspectionConfig {
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
captureBodies: boolean;
|
|
35
|
+
maxBodyBytes: number;
|
|
36
|
+
persist: boolean;
|
|
37
|
+
ttlSeconds: number;
|
|
38
|
+
}
|
|
39
|
+
export type DestinationTunnelTransportType = 'tcp' | 'tls';
|
|
40
|
+
export type DestinationTunnelTransportRequest = {
|
|
41
|
+
type: 'tcp';
|
|
42
|
+
} | {
|
|
43
|
+
type: 'tls';
|
|
44
|
+
serverName: string;
|
|
45
|
+
alpnProtocols: string[];
|
|
46
|
+
};
|
|
47
|
+
export interface DestinationTunnelTransportResult {
|
|
48
|
+
type: DestinationTunnelTransportType;
|
|
49
|
+
alpnProtocol?: string;
|
|
50
|
+
remoteAddress?: string;
|
|
51
|
+
dnsMs?: number;
|
|
52
|
+
connectMs?: number;
|
|
53
|
+
tlsMs?: number;
|
|
54
|
+
}
|
|
55
|
+
export type DestinationTunnelSelectorKind = 'route' | 'domain';
|
|
56
|
+
export type DestinationTunnelBindStatus = 'ok' | 'conflict' | 'error';
|
|
57
|
+
/** Per-address bind outcome the device server reports for exact routes. */
|
|
58
|
+
export interface DestinationTunnelBindReport {
|
|
59
|
+
address: string;
|
|
60
|
+
status: DestinationTunnelBindStatus;
|
|
61
|
+
osCode?: string;
|
|
62
|
+
}
|
|
63
|
+
/** Normalized selector the server acknowledges in `ready` and status. */
|
|
64
|
+
export interface DestinationTunnelSelectorReport {
|
|
65
|
+
id: string;
|
|
66
|
+
kind: DestinationTunnelSelectorKind;
|
|
67
|
+
value: string;
|
|
68
|
+
binds?: DestinationTunnelBindReport[];
|
|
69
|
+
}
|
|
70
|
+
export type DestinationTunnelOpenFailureReason = 'dns_not_found' | 'dns_temporary_failure' | 'connection_refused' | 'connection_reset' | 'connection_timed_out' | 'unreachable' | 'permission_denied' | 'resource_exhausted' | 'selector_not_allowed' | 'tls_handshake_failed' | 'tls_validation_failed' | 'tls_protocol_error' | 'cancelled' | 'internal' | (string & {});
|
|
9
71
|
export type DestinationTunnelResetReason = 'cancelled' | 'connection_error' | 'protocol_error' | 'resource_exhausted' | 'internal' | (string & {});
|
|
10
|
-
export type DestinationTunnelSessionErrorCode = 'unsupported_version' | 'invalid_message' | '
|
|
72
|
+
export type DestinationTunnelSessionErrorCode = 'unsupported_version' | 'invalid_message' | 'invalid_selector' | 'already_active' | 'unavailable' | 'internal' | (string & {});
|
|
11
73
|
export type DestinationTunnelClientMessage = {
|
|
12
74
|
type: 'start';
|
|
13
75
|
version: number;
|
|
14
|
-
|
|
76
|
+
selectors: DestinationTunnelSelectors;
|
|
77
|
+
inspection: DestinationTunnelInspectionConfig;
|
|
78
|
+
/** Default per-flow receive window this client grants. */
|
|
79
|
+
window: number;
|
|
15
80
|
} | {
|
|
16
81
|
type: 'openOk';
|
|
17
82
|
connId: number;
|
|
83
|
+
transport: DestinationTunnelTransportResult;
|
|
84
|
+
window: number;
|
|
18
85
|
} | {
|
|
19
86
|
type: 'openFail';
|
|
20
87
|
connId: number;
|
|
@@ -28,18 +95,26 @@ export type DestinationTunnelClientMessage = {
|
|
|
28
95
|
connId: number;
|
|
29
96
|
reason: DestinationTunnelResetReason;
|
|
30
97
|
osCode?: string;
|
|
98
|
+
} | {
|
|
99
|
+
type: 'windowUpdate';
|
|
100
|
+
connId: number;
|
|
101
|
+
increment: number;
|
|
31
102
|
};
|
|
32
103
|
export type DestinationTunnelServerMessage = {
|
|
33
104
|
type: 'ready';
|
|
34
105
|
version: number;
|
|
35
106
|
tunnelId: string;
|
|
107
|
+
selectors: DestinationTunnelSelectorReport[];
|
|
108
|
+
configHash: string;
|
|
36
109
|
} | {
|
|
37
110
|
type: 'open';
|
|
38
111
|
connId: number;
|
|
39
|
-
|
|
112
|
+
selectorId: string;
|
|
40
113
|
host: string;
|
|
41
114
|
port: number;
|
|
42
|
-
|
|
115
|
+
transport: DestinationTunnelTransportRequest;
|
|
116
|
+
/** Server's receive window for this flow. */
|
|
117
|
+
window: number;
|
|
43
118
|
} | {
|
|
44
119
|
type: 'fin';
|
|
45
120
|
connId: number;
|
|
@@ -48,27 +123,57 @@ export type DestinationTunnelServerMessage = {
|
|
|
48
123
|
connId: number;
|
|
49
124
|
reason: DestinationTunnelResetReason;
|
|
50
125
|
osCode?: string;
|
|
126
|
+
} | {
|
|
127
|
+
type: 'windowUpdate';
|
|
128
|
+
connId: number;
|
|
129
|
+
increment: number;
|
|
51
130
|
} | {
|
|
52
131
|
type: 'error';
|
|
53
132
|
code: DestinationTunnelSessionErrorCode;
|
|
54
133
|
};
|
|
55
|
-
export type
|
|
56
|
-
export declare class
|
|
57
|
-
readonly code:
|
|
58
|
-
constructor(code:
|
|
59
|
-
}
|
|
60
|
-
export declare class DestinationTunnelProtocolError extends Error {
|
|
61
|
-
constructor(message: string);
|
|
134
|
+
export type DestinationTunnelSelectorErrorCode = 'empty' | 'too_many' | 'invalid_host' | 'invalid_port' | 'invalid_domain' | 'duplicate';
|
|
135
|
+
export declare class DestinationTunnelSelectorError extends Error {
|
|
136
|
+
readonly code: DestinationTunnelSelectorErrorCode;
|
|
137
|
+
constructor(code: DestinationTunnelSelectorErrorCode, message: string);
|
|
62
138
|
}
|
|
63
139
|
export declare function encodeDestinationTunnelDataFrame(connId: number, payload: Buffer): Buffer;
|
|
64
140
|
export declare function decodeDestinationTunnelDataFrame(frame: Buffer): {
|
|
65
141
|
connId: number;
|
|
66
142
|
payload: Buffer;
|
|
67
143
|
};
|
|
68
|
-
export declare function validateDestinationTunnelRoutes(routes: readonly DestinationTunnelRoute[]
|
|
144
|
+
export declare function validateDestinationTunnelRoutes(routes: readonly DestinationTunnelRoute[], options?: {
|
|
145
|
+
minPort?: number;
|
|
146
|
+
}): DestinationTunnelRoute[];
|
|
147
|
+
/**
|
|
148
|
+
* Validate and canonicalize a full selector set. Selector policy specific to
|
|
149
|
+
* one product (such as the Android bind-listener minimum route port) is
|
|
150
|
+
* expressed via options rather than separate message shapes.
|
|
151
|
+
*/
|
|
152
|
+
export declare function validateDestinationTunnelSelectors(selectors: readonly string[], options?: {
|
|
153
|
+
minRoutePort?: number;
|
|
154
|
+
}): DestinationTunnelSelectors;
|
|
155
|
+
export declare function classifyDestinationTunnelSelectors(selectors: readonly string[], options?: {
|
|
156
|
+
minRoutePort?: number;
|
|
157
|
+
}): DestinationTunnelSelectorCatalog;
|
|
158
|
+
export declare function validateDestinationTunnelDomains(domains: readonly string[]): string[];
|
|
159
|
+
/**
|
|
160
|
+
* Deterministic hash of the canonical selector configuration. Servers echo it
|
|
161
|
+
* in `ready` so clients can detect config mismatches across reconnects. The
|
|
162
|
+
* hashed JSON has fixed key order.
|
|
163
|
+
*/
|
|
164
|
+
export declare function destinationTunnelConfigHash(selectors: DestinationTunnelSelectors, inspection?: DestinationTunnelInspectionConfig): string;
|
|
165
|
+
export declare function normalizeDestinationTunnelInspection(inspection: Partial<DestinationTunnelInspectionConfig>): DestinationTunnelInspectionConfig;
|
|
166
|
+
export declare function disabledDestinationTunnelInspection(): DestinationTunnelInspectionConfig;
|
|
167
|
+
/** Selector IDs are one-based positions in the canonical selector array. */
|
|
168
|
+
export declare function destinationTunnelSelectorIds(selectors: DestinationTunnelSelectors): string[];
|
|
169
|
+
export declare function destinationTunnelDomainMatches(pattern: string, host: string): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Verify a server OPEN against the negotiated selectors. Every OPEN must name
|
|
172
|
+
* a known selector ID and a target that the selector actually covers.
|
|
173
|
+
*/
|
|
69
174
|
export declare function assertDestinationTunnelOpenAllowed(message: Extract<DestinationTunnelServerMessage, {
|
|
70
175
|
type: 'open';
|
|
71
|
-
}>,
|
|
176
|
+
}>, selectors: DestinationTunnelSelectors): DestinationTunnelSelectorKind;
|
|
72
177
|
export declare function assertDestinationTunnelReady(message: Extract<DestinationTunnelServerMessage, {
|
|
73
178
|
type: 'ready';
|
|
74
179
|
}>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destination-tunnel.d.mts","sourceRoot":"","sources":["src/destination-tunnel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"destination-tunnel.d.mts","sourceRoot":"","sources":["src/destination-tunnel.ts"],"names":[],"mappings":"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"}
|
package/destination-tunnel.d.ts
CHANGED
|
@@ -1,20 +1,87 @@
|
|
|
1
|
+
export { DestinationTunnelProtocolError } from "./internal/destination-tunnel-wire-reader.js";
|
|
1
2
|
export declare const DESTINATION_TUNNEL_VERSION = 1;
|
|
2
3
|
export declare const DESTINATION_TUNNEL_MAX_ROUTES = 10;
|
|
4
|
+
export declare const DESTINATION_TUNNEL_MAX_DOMAINS = 64;
|
|
3
5
|
export declare const DESTINATION_TUNNEL_CONN_ID_HEADER_BYTES = 4;
|
|
6
|
+
/**
|
|
7
|
+
* IPv4 range used by the device side for synthetic (fake) DNS answers of
|
|
8
|
+
* matched domain selectors.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DESTINATION_TUNNEL_FAKE_RANGE = "198.18.0.0/15";
|
|
11
|
+
/** Upper bound for per-flow receive windows advertised in open/openOk. */
|
|
12
|
+
export declare const DESTINATION_TUNNEL_MAX_WINDOW: number;
|
|
13
|
+
/** Default receive window advertised by generic SDK tunnel clients. */
|
|
14
|
+
export declare const DESTINATION_TUNNEL_DEFAULT_WINDOW: number;
|
|
15
|
+
/** Upper bound for a single windowUpdate increment. */
|
|
16
|
+
export declare const DESTINATION_TUNNEL_MAX_WINDOW_INCREMENT = 2147483647;
|
|
17
|
+
export declare const DESTINATION_TUNNEL_DEFAULT_MAX_BODY_BYTES: number;
|
|
18
|
+
export declare const DESTINATION_TUNNEL_MAX_BODY_BYTES: number;
|
|
19
|
+
export declare const DESTINATION_TUNNEL_DEFAULT_TTL_SECONDS: number;
|
|
20
|
+
export declare const DESTINATION_TUNNEL_MAX_TTL_SECONDS: number;
|
|
4
21
|
export interface DestinationTunnelRoute {
|
|
5
22
|
host: string;
|
|
6
23
|
port: number;
|
|
7
24
|
}
|
|
8
|
-
|
|
25
|
+
/** Canonical selector values carried by the public protocol. */
|
|
26
|
+
export type DestinationTunnelSelectors = string[];
|
|
27
|
+
/** Internal classification used to enforce and dial canonical selectors. */
|
|
28
|
+
export interface DestinationTunnelSelectorCatalog {
|
|
29
|
+
routes?: DestinationTunnelRoute[];
|
|
30
|
+
domains?: string[];
|
|
31
|
+
}
|
|
32
|
+
export interface DestinationTunnelInspectionConfig {
|
|
33
|
+
enabled: boolean;
|
|
34
|
+
captureBodies: boolean;
|
|
35
|
+
maxBodyBytes: number;
|
|
36
|
+
persist: boolean;
|
|
37
|
+
ttlSeconds: number;
|
|
38
|
+
}
|
|
39
|
+
export type DestinationTunnelTransportType = 'tcp' | 'tls';
|
|
40
|
+
export type DestinationTunnelTransportRequest = {
|
|
41
|
+
type: 'tcp';
|
|
42
|
+
} | {
|
|
43
|
+
type: 'tls';
|
|
44
|
+
serverName: string;
|
|
45
|
+
alpnProtocols: string[];
|
|
46
|
+
};
|
|
47
|
+
export interface DestinationTunnelTransportResult {
|
|
48
|
+
type: DestinationTunnelTransportType;
|
|
49
|
+
alpnProtocol?: string;
|
|
50
|
+
remoteAddress?: string;
|
|
51
|
+
dnsMs?: number;
|
|
52
|
+
connectMs?: number;
|
|
53
|
+
tlsMs?: number;
|
|
54
|
+
}
|
|
55
|
+
export type DestinationTunnelSelectorKind = 'route' | 'domain';
|
|
56
|
+
export type DestinationTunnelBindStatus = 'ok' | 'conflict' | 'error';
|
|
57
|
+
/** Per-address bind outcome the device server reports for exact routes. */
|
|
58
|
+
export interface DestinationTunnelBindReport {
|
|
59
|
+
address: string;
|
|
60
|
+
status: DestinationTunnelBindStatus;
|
|
61
|
+
osCode?: string;
|
|
62
|
+
}
|
|
63
|
+
/** Normalized selector the server acknowledges in `ready` and status. */
|
|
64
|
+
export interface DestinationTunnelSelectorReport {
|
|
65
|
+
id: string;
|
|
66
|
+
kind: DestinationTunnelSelectorKind;
|
|
67
|
+
value: string;
|
|
68
|
+
binds?: DestinationTunnelBindReport[];
|
|
69
|
+
}
|
|
70
|
+
export type DestinationTunnelOpenFailureReason = 'dns_not_found' | 'dns_temporary_failure' | 'connection_refused' | 'connection_reset' | 'connection_timed_out' | 'unreachable' | 'permission_denied' | 'resource_exhausted' | 'selector_not_allowed' | 'tls_handshake_failed' | 'tls_validation_failed' | 'tls_protocol_error' | 'cancelled' | 'internal' | (string & {});
|
|
9
71
|
export type DestinationTunnelResetReason = 'cancelled' | 'connection_error' | 'protocol_error' | 'resource_exhausted' | 'internal' | (string & {});
|
|
10
|
-
export type DestinationTunnelSessionErrorCode = 'unsupported_version' | 'invalid_message' | '
|
|
72
|
+
export type DestinationTunnelSessionErrorCode = 'unsupported_version' | 'invalid_message' | 'invalid_selector' | 'already_active' | 'unavailable' | 'internal' | (string & {});
|
|
11
73
|
export type DestinationTunnelClientMessage = {
|
|
12
74
|
type: 'start';
|
|
13
75
|
version: number;
|
|
14
|
-
|
|
76
|
+
selectors: DestinationTunnelSelectors;
|
|
77
|
+
inspection: DestinationTunnelInspectionConfig;
|
|
78
|
+
/** Default per-flow receive window this client grants. */
|
|
79
|
+
window: number;
|
|
15
80
|
} | {
|
|
16
81
|
type: 'openOk';
|
|
17
82
|
connId: number;
|
|
83
|
+
transport: DestinationTunnelTransportResult;
|
|
84
|
+
window: number;
|
|
18
85
|
} | {
|
|
19
86
|
type: 'openFail';
|
|
20
87
|
connId: number;
|
|
@@ -28,18 +95,26 @@ export type DestinationTunnelClientMessage = {
|
|
|
28
95
|
connId: number;
|
|
29
96
|
reason: DestinationTunnelResetReason;
|
|
30
97
|
osCode?: string;
|
|
98
|
+
} | {
|
|
99
|
+
type: 'windowUpdate';
|
|
100
|
+
connId: number;
|
|
101
|
+
increment: number;
|
|
31
102
|
};
|
|
32
103
|
export type DestinationTunnelServerMessage = {
|
|
33
104
|
type: 'ready';
|
|
34
105
|
version: number;
|
|
35
106
|
tunnelId: string;
|
|
107
|
+
selectors: DestinationTunnelSelectorReport[];
|
|
108
|
+
configHash: string;
|
|
36
109
|
} | {
|
|
37
110
|
type: 'open';
|
|
38
111
|
connId: number;
|
|
39
|
-
|
|
112
|
+
selectorId: string;
|
|
40
113
|
host: string;
|
|
41
114
|
port: number;
|
|
42
|
-
|
|
115
|
+
transport: DestinationTunnelTransportRequest;
|
|
116
|
+
/** Server's receive window for this flow. */
|
|
117
|
+
window: number;
|
|
43
118
|
} | {
|
|
44
119
|
type: 'fin';
|
|
45
120
|
connId: number;
|
|
@@ -48,27 +123,57 @@ export type DestinationTunnelServerMessage = {
|
|
|
48
123
|
connId: number;
|
|
49
124
|
reason: DestinationTunnelResetReason;
|
|
50
125
|
osCode?: string;
|
|
126
|
+
} | {
|
|
127
|
+
type: 'windowUpdate';
|
|
128
|
+
connId: number;
|
|
129
|
+
increment: number;
|
|
51
130
|
} | {
|
|
52
131
|
type: 'error';
|
|
53
132
|
code: DestinationTunnelSessionErrorCode;
|
|
54
133
|
};
|
|
55
|
-
export type
|
|
56
|
-
export declare class
|
|
57
|
-
readonly code:
|
|
58
|
-
constructor(code:
|
|
59
|
-
}
|
|
60
|
-
export declare class DestinationTunnelProtocolError extends Error {
|
|
61
|
-
constructor(message: string);
|
|
134
|
+
export type DestinationTunnelSelectorErrorCode = 'empty' | 'too_many' | 'invalid_host' | 'invalid_port' | 'invalid_domain' | 'duplicate';
|
|
135
|
+
export declare class DestinationTunnelSelectorError extends Error {
|
|
136
|
+
readonly code: DestinationTunnelSelectorErrorCode;
|
|
137
|
+
constructor(code: DestinationTunnelSelectorErrorCode, message: string);
|
|
62
138
|
}
|
|
63
139
|
export declare function encodeDestinationTunnelDataFrame(connId: number, payload: Buffer): Buffer;
|
|
64
140
|
export declare function decodeDestinationTunnelDataFrame(frame: Buffer): {
|
|
65
141
|
connId: number;
|
|
66
142
|
payload: Buffer;
|
|
67
143
|
};
|
|
68
|
-
export declare function validateDestinationTunnelRoutes(routes: readonly DestinationTunnelRoute[]
|
|
144
|
+
export declare function validateDestinationTunnelRoutes(routes: readonly DestinationTunnelRoute[], options?: {
|
|
145
|
+
minPort?: number;
|
|
146
|
+
}): DestinationTunnelRoute[];
|
|
147
|
+
/**
|
|
148
|
+
* Validate and canonicalize a full selector set. Selector policy specific to
|
|
149
|
+
* one product (such as the Android bind-listener minimum route port) is
|
|
150
|
+
* expressed via options rather than separate message shapes.
|
|
151
|
+
*/
|
|
152
|
+
export declare function validateDestinationTunnelSelectors(selectors: readonly string[], options?: {
|
|
153
|
+
minRoutePort?: number;
|
|
154
|
+
}): DestinationTunnelSelectors;
|
|
155
|
+
export declare function classifyDestinationTunnelSelectors(selectors: readonly string[], options?: {
|
|
156
|
+
minRoutePort?: number;
|
|
157
|
+
}): DestinationTunnelSelectorCatalog;
|
|
158
|
+
export declare function validateDestinationTunnelDomains(domains: readonly string[]): string[];
|
|
159
|
+
/**
|
|
160
|
+
* Deterministic hash of the canonical selector configuration. Servers echo it
|
|
161
|
+
* in `ready` so clients can detect config mismatches across reconnects. The
|
|
162
|
+
* hashed JSON has fixed key order.
|
|
163
|
+
*/
|
|
164
|
+
export declare function destinationTunnelConfigHash(selectors: DestinationTunnelSelectors, inspection?: DestinationTunnelInspectionConfig): string;
|
|
165
|
+
export declare function normalizeDestinationTunnelInspection(inspection: Partial<DestinationTunnelInspectionConfig>): DestinationTunnelInspectionConfig;
|
|
166
|
+
export declare function disabledDestinationTunnelInspection(): DestinationTunnelInspectionConfig;
|
|
167
|
+
/** Selector IDs are one-based positions in the canonical selector array. */
|
|
168
|
+
export declare function destinationTunnelSelectorIds(selectors: DestinationTunnelSelectors): string[];
|
|
169
|
+
export declare function destinationTunnelDomainMatches(pattern: string, host: string): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Verify a server OPEN against the negotiated selectors. Every OPEN must name
|
|
172
|
+
* a known selector ID and a target that the selector actually covers.
|
|
173
|
+
*/
|
|
69
174
|
export declare function assertDestinationTunnelOpenAllowed(message: Extract<DestinationTunnelServerMessage, {
|
|
70
175
|
type: 'open';
|
|
71
|
-
}>,
|
|
176
|
+
}>, selectors: DestinationTunnelSelectors): DestinationTunnelSelectorKind;
|
|
72
177
|
export declare function assertDestinationTunnelReady(message: Extract<DestinationTunnelServerMessage, {
|
|
73
178
|
type: 'ready';
|
|
74
179
|
}>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destination-tunnel.d.ts","sourceRoot":"","sources":["src/destination-tunnel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"destination-tunnel.d.ts","sourceRoot":"","sources":["src/destination-tunnel.ts"],"names":[],"mappings":"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"}
|