@limrun/api 0.61.0 → 0.63.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 +62 -0
- package/destination-tunnel-dialer.d.mts +1 -1
- package/destination-tunnel-dialer.d.mts.map +1 -1
- package/destination-tunnel-dialer.d.ts +1 -1
- package/destination-tunnel-dialer.d.ts.map +1 -1
- package/destination-tunnel.d.mts +2 -2
- package/destination-tunnel.d.mts.map +1 -1
- package/destination-tunnel.d.ts +2 -2
- package/destination-tunnel.d.ts.map +1 -1
- package/internal/destination-tunnel-management.d.mts +1 -1
- package/internal/destination-tunnel-management.d.mts.map +1 -1
- package/internal/destination-tunnel-management.d.ts +1 -1
- package/internal/destination-tunnel-management.d.ts.map +1 -1
- package/internal/destination-tunnel-url.d.mts +1 -1
- package/internal/destination-tunnel-url.d.mts.map +1 -1
- package/internal/destination-tunnel-url.d.ts +1 -1
- package/internal/destination-tunnel-url.d.ts.map +1 -1
- package/internal/destination-tunnel-url.js +1 -1
- package/internal/destination-tunnel-url.js.map +1 -1
- package/internal/destination-tunnel-url.mjs +1 -1
- package/internal/destination-tunnel-url.mjs.map +1 -1
- package/ios-client.d.mts +5 -1
- package/ios-client.d.mts.map +1 -1
- package/ios-client.d.ts +5 -1
- package/ios-client.d.ts.map +1 -1
- package/ios-client.js +7 -7
- package/ios-client.js.map +1 -1
- package/ios-client.mjs +7 -7
- package/ios-client.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/android-instances.d.mts +6 -6
- package/resources/android-instances.d.ts +6 -6
- package/resources/ios-instances.d.mts +14 -8
- package/resources/ios-instances.d.mts.map +1 -1
- package/resources/ios-instances.d.ts +14 -8
- package/resources/ios-instances.d.ts.map +1 -1
- package/src/destination-tunnel-dialer.ts +1 -1
- package/src/destination-tunnel.ts +2 -2
- package/src/internal/destination-tunnel-management.ts +1 -1
- package/src/internal/destination-tunnel-url.ts +1 -1
- package/src/ios-client.ts +14 -17
- package/src/resources/android-instances.ts +6 -6
- package/src/resources/ios-instances.ts +15 -8
- package/src/tunnel-connector.ts +19 -19
- package/src/version.ts +1 -1
- package/tunnel-connector.d.mts +5 -5
- package/tunnel-connector.d.mts.map +1 -1
- package/tunnel-connector.d.ts +5 -5
- package/tunnel-connector.d.ts.map +1 -1
- package/tunnel-connector.js +14 -14
- package/tunnel-connector.js.map +1 -1
- package/tunnel-connector.mjs +14 -14
- package/tunnel-connector.mjs.map +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -55,9 +55,9 @@ export declare namespace AndroidInstance {
|
|
|
55
55
|
*/
|
|
56
56
|
hardTimeout?: string;
|
|
57
57
|
/**
|
|
58
|
-
* Names a
|
|
59
|
-
* instance. Creation fails while
|
|
60
|
-
* becomes ready only after the tunnel attaches.
|
|
58
|
+
* Names a private tunnel, created in the console (Network) or the API, that
|
|
59
|
+
* serves this instance. Creation fails while no connector (`lim tunnel run`)
|
|
60
|
+
* holds it, and the instance becomes ready only after the tunnel attaches.
|
|
61
61
|
*/
|
|
62
62
|
tunnel?: string;
|
|
63
63
|
}
|
|
@@ -188,9 +188,9 @@ export declare namespace AndroidInstanceCreateParams {
|
|
|
188
188
|
region?: string;
|
|
189
189
|
sandbox?: Spec.Sandbox;
|
|
190
190
|
/**
|
|
191
|
-
* Names a
|
|
192
|
-
* instance. Creation fails while
|
|
193
|
-
* becomes ready only after the tunnel attaches.
|
|
191
|
+
* Names a private tunnel, created in the console (Network) or the API, that
|
|
192
|
+
* serves this instance. Creation fails while no connector (`lim tunnel run`)
|
|
193
|
+
* holds it, and the instance becomes ready only after the tunnel attaches.
|
|
194
194
|
*/
|
|
195
195
|
tunnel?: string;
|
|
196
196
|
}
|
|
@@ -55,9 +55,9 @@ export declare namespace IosInstance {
|
|
|
55
55
|
*/
|
|
56
56
|
hardTimeout?: string;
|
|
57
57
|
/**
|
|
58
|
-
* Names a
|
|
59
|
-
* instance. Creation fails while
|
|
60
|
-
* becomes ready only after the tunnel attaches.
|
|
58
|
+
* Names a private tunnel, created in the console (Network) or the API, that
|
|
59
|
+
* serves this instance. Creation fails while no connector (`lim tunnel run`)
|
|
60
|
+
* holds it, and the instance becomes ready only after the tunnel attaches.
|
|
61
61
|
*/
|
|
62
62
|
tunnel?: string;
|
|
63
63
|
}
|
|
@@ -157,7 +157,8 @@ export declare namespace IosInstanceCreateParams {
|
|
|
157
157
|
*/
|
|
158
158
|
jurisdiction?: 'us' | 'eu' | 'as';
|
|
159
159
|
/**
|
|
160
|
-
* The Apple Simulator model. iPhone Duo requires Xcode 27.1 and iOS 27
|
|
160
|
+
* The Apple Simulator model. iPhone Duo requires Xcode 27.1 and runs iOS 27, see
|
|
161
|
+
* the OSVersion clue. Default is iphone.
|
|
161
162
|
*/
|
|
162
163
|
model?: 'iphone' | 'iphone-duo' | 'ipad' | 'watch';
|
|
163
164
|
/**
|
|
@@ -181,21 +182,26 @@ export declare namespace IosInstanceCreateParams {
|
|
|
181
182
|
*/
|
|
182
183
|
region?: string;
|
|
183
184
|
/**
|
|
184
|
-
* Names a
|
|
185
|
-
* instance. Creation fails while
|
|
186
|
-
* becomes ready only after the tunnel attaches.
|
|
185
|
+
* Names a private tunnel, created in the console (Network) or the API, that
|
|
186
|
+
* serves this instance. Creation fails while no connector (`lim tunnel run`)
|
|
187
|
+
* holds it, and the instance becomes ready only after the tunnel attaches.
|
|
187
188
|
*/
|
|
188
189
|
tunnel?: string;
|
|
189
190
|
}
|
|
190
191
|
namespace Spec {
|
|
191
192
|
interface Clue {
|
|
192
|
-
kind: 'ClientIP' | 'ClientLocation';
|
|
193
|
+
kind: 'ClientIP' | 'ClientLocation' | 'OSVersion';
|
|
193
194
|
clientIp?: string;
|
|
194
195
|
/**
|
|
195
196
|
* Required for ClientLocation. Both coordinates must be finite and within their
|
|
196
197
|
* ranges. This location takes precedence over ClientIP.
|
|
197
198
|
*/
|
|
198
199
|
clientLocation?: Clue.ClientLocation;
|
|
200
|
+
/**
|
|
201
|
+
* The major version of iOS, "26" or "27". iphone runs both, iphone-duo runs 27,
|
|
202
|
+
* ipad and watch run 26. Default is 26, or 27 on iphone-duo.
|
|
203
|
+
*/
|
|
204
|
+
osVersion?: string;
|
|
199
205
|
}
|
|
200
206
|
namespace Clue {
|
|
201
207
|
interface ClientLocation {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios-instances.d.mts","sourceRoot":"","sources":["../src/resources/ios-instances.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ios-instances.d.mts","sourceRoot":"","sources":["../src/resources/ios-instances.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,9 +55,9 @@ export declare namespace IosInstance {
|
|
|
55
55
|
*/
|
|
56
56
|
hardTimeout?: string;
|
|
57
57
|
/**
|
|
58
|
-
* Names a
|
|
59
|
-
* instance. Creation fails while
|
|
60
|
-
* becomes ready only after the tunnel attaches.
|
|
58
|
+
* Names a private tunnel, created in the console (Network) or the API, that
|
|
59
|
+
* serves this instance. Creation fails while no connector (`lim tunnel run`)
|
|
60
|
+
* holds it, and the instance becomes ready only after the tunnel attaches.
|
|
61
61
|
*/
|
|
62
62
|
tunnel?: string;
|
|
63
63
|
}
|
|
@@ -157,7 +157,8 @@ export declare namespace IosInstanceCreateParams {
|
|
|
157
157
|
*/
|
|
158
158
|
jurisdiction?: 'us' | 'eu' | 'as';
|
|
159
159
|
/**
|
|
160
|
-
* The Apple Simulator model. iPhone Duo requires Xcode 27.1 and iOS 27
|
|
160
|
+
* The Apple Simulator model. iPhone Duo requires Xcode 27.1 and runs iOS 27, see
|
|
161
|
+
* the OSVersion clue. Default is iphone.
|
|
161
162
|
*/
|
|
162
163
|
model?: 'iphone' | 'iphone-duo' | 'ipad' | 'watch';
|
|
163
164
|
/**
|
|
@@ -181,21 +182,26 @@ export declare namespace IosInstanceCreateParams {
|
|
|
181
182
|
*/
|
|
182
183
|
region?: string;
|
|
183
184
|
/**
|
|
184
|
-
* Names a
|
|
185
|
-
* instance. Creation fails while
|
|
186
|
-
* becomes ready only after the tunnel attaches.
|
|
185
|
+
* Names a private tunnel, created in the console (Network) or the API, that
|
|
186
|
+
* serves this instance. Creation fails while no connector (`lim tunnel run`)
|
|
187
|
+
* holds it, and the instance becomes ready only after the tunnel attaches.
|
|
187
188
|
*/
|
|
188
189
|
tunnel?: string;
|
|
189
190
|
}
|
|
190
191
|
namespace Spec {
|
|
191
192
|
interface Clue {
|
|
192
|
-
kind: 'ClientIP' | 'ClientLocation';
|
|
193
|
+
kind: 'ClientIP' | 'ClientLocation' | 'OSVersion';
|
|
193
194
|
clientIp?: string;
|
|
194
195
|
/**
|
|
195
196
|
* Required for ClientLocation. Both coordinates must be finite and within their
|
|
196
197
|
* ranges. This location takes precedence over ClientIP.
|
|
197
198
|
*/
|
|
198
199
|
clientLocation?: Clue.ClientLocation;
|
|
200
|
+
/**
|
|
201
|
+
* The major version of iOS, "26" or "27". iphone runs both, iphone-duo runs 27,
|
|
202
|
+
* ipad and watch run 26. Default is 26, or 27 on iphone-duo.
|
|
203
|
+
*/
|
|
204
|
+
osVersion?: string;
|
|
199
205
|
}
|
|
200
206
|
namespace Clue {
|
|
201
207
|
interface ClientLocation {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios-instances.d.ts","sourceRoot":"","sources":["../src/resources/ios-instances.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ios-instances.d.ts","sourceRoot":"","sources":["../src/resources/ios-instances.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,7 +70,7 @@ export interface DestinationTcpTunnelOptions {
|
|
|
70
70
|
onInspectionError?: DestinationTunnelInspectionErrorCallback;
|
|
71
71
|
/** Per-flow receive window in bytes. Defaults to 1 MiB. */
|
|
72
72
|
window?: number;
|
|
73
|
-
/**
|
|
73
|
+
/** Private tunnel this session serves; the instance reports it in tunnel status. */
|
|
74
74
|
name?: string;
|
|
75
75
|
logLevel?: LogLevel;
|
|
76
76
|
maxConnections?: number;
|
|
@@ -136,7 +136,7 @@ export type DestinationTunnelClientMessage =
|
|
|
136
136
|
inspection: DestinationTunnelInspectionConfig;
|
|
137
137
|
/** Default per-flow receive window this client grants. */
|
|
138
138
|
window: number;
|
|
139
|
-
/**
|
|
139
|
+
/** Private tunnel this session serves. The instance only echoes it in status. */
|
|
140
140
|
name?: string;
|
|
141
141
|
}
|
|
142
142
|
| {
|
|
@@ -162,7 +162,7 @@ export type DestinationTunnelServerMessage =
|
|
|
162
162
|
tunnelId: string;
|
|
163
163
|
selectors: DestinationTunnelSelectorReport[];
|
|
164
164
|
configHash: string;
|
|
165
|
-
/** The
|
|
165
|
+
/** The private tunnel name the client sent in start, echoed back. */
|
|
166
166
|
name?: string;
|
|
167
167
|
}
|
|
168
168
|
| {
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
export interface DestinationTunnelStatus {
|
|
18
18
|
active?: {
|
|
19
19
|
tunnelId: string;
|
|
20
|
-
/**
|
|
20
|
+
/** Private tunnel the session serves, absent for a one-instance tunnel. */
|
|
21
21
|
name?: string;
|
|
22
22
|
state: 'starting' | 'ready' | 'stopping';
|
|
23
23
|
selectors: DestinationTunnelSelectorReport[];
|
|
@@ -29,7 +29,7 @@ export function deriveDestinationTunnelURL(apiUrl: string): string {
|
|
|
29
29
|
return webSocketURL(deriveEndpointURL(apiUrl, 'tunnel'));
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
/** The control WebSocket of a
|
|
32
|
+
/** The control WebSocket of a private tunnel, under the Limrun API base URL. */
|
|
33
33
|
export function deriveTunnelConnectURL(baseURL: string, organizationId: string, name: string): string {
|
|
34
34
|
return webSocketURL(
|
|
35
35
|
deriveEndpointURL(
|
package/src/ios-client.ts
CHANGED
|
@@ -287,6 +287,8 @@ export type DeviceInfo = {
|
|
|
287
287
|
screenHeight: number;
|
|
288
288
|
/** Device model name */
|
|
289
289
|
model: string;
|
|
290
|
+
/** Simulator OS version, e.g. "26.4" */
|
|
291
|
+
osVersion?: string;
|
|
290
292
|
};
|
|
291
293
|
|
|
292
294
|
export type AppInstallationResult = {
|
|
@@ -895,7 +897,8 @@ export type InstanceClient = {
|
|
|
895
897
|
* On Duo, follows native display activity and fits each panel into the initial
|
|
896
898
|
* canvas without stretching. Pass display to keep recording one panel.
|
|
897
899
|
* When provided, `quality` must be one of `5`, `6`, `7`, `8`, `9`, or `10`.
|
|
898
|
-
* The server default is `5`.
|
|
900
|
+
* The server default is `5`. Touch ripples and drag trails are enabled while
|
|
901
|
+
* recording by default. Set `touchIndicators: false` to omit them.
|
|
899
902
|
* With `persist`, the completed recording is uploaded to Limrun's bucket
|
|
900
903
|
* when the recording stops or the instance terminates; list it with
|
|
901
904
|
* `iosInstances.listRecordings`.
|
|
@@ -904,6 +907,7 @@ export type InstanceClient = {
|
|
|
904
907
|
quality?: RecordingQuality;
|
|
905
908
|
persist?: PersistOption;
|
|
906
909
|
display?: DuoDisplay;
|
|
910
|
+
touchIndicators?: boolean;
|
|
907
911
|
}) => Promise<void>;
|
|
908
912
|
|
|
909
913
|
/**
|
|
@@ -1419,6 +1423,7 @@ type ServerResponse = {
|
|
|
1419
1423
|
screenWidth?: number;
|
|
1420
1424
|
screenHeight?: number;
|
|
1421
1425
|
model?: string;
|
|
1426
|
+
osVersion?: string;
|
|
1422
1427
|
// Simctl streaming fields
|
|
1423
1428
|
stdout?: string;
|
|
1424
1429
|
stderr?: string;
|
|
@@ -1936,6 +1941,7 @@ export async function createInstanceClient(options: InstanceClientOptions): Prom
|
|
|
1936
1941
|
screenWidth: msg.screenWidth!,
|
|
1937
1942
|
screenHeight: msg.screenHeight!,
|
|
1938
1943
|
model: msg.model!,
|
|
1944
|
+
osVersion: msg.osVersion,
|
|
1939
1945
|
}),
|
|
1940
1946
|
openUrlResult: () => undefined,
|
|
1941
1947
|
appInstallationResult: (msg) => ({
|
|
@@ -2559,27 +2565,18 @@ export async function createInstanceClient(options: InstanceClientOptions): Prom
|
|
|
2559
2565
|
);
|
|
2560
2566
|
};
|
|
2561
2567
|
|
|
2562
|
-
const startRecording = async (opts
|
|
2563
|
-
quality?: RecordingQuality;
|
|
2564
|
-
persist?: PersistOption;
|
|
2565
|
-
display?: DuoDisplay;
|
|
2566
|
-
}): Promise<void> => {
|
|
2567
|
-
const request: {
|
|
2568
|
-
quality?: RecordingQuality;
|
|
2569
|
-
persist?: boolean;
|
|
2570
|
-
ttlSeconds?: number;
|
|
2571
|
-
display?: DuoDisplay;
|
|
2572
|
-
} = {
|
|
2573
|
-
...persistFields(opts?.persist),
|
|
2574
|
-
};
|
|
2568
|
+
const startRecording: InstanceClient['startRecording'] = async (opts) => {
|
|
2575
2569
|
if (opts?.quality !== undefined) {
|
|
2576
2570
|
if (!Number.isInteger(opts.quality) || opts.quality < 5 || opts.quality > 10) {
|
|
2577
2571
|
throw new Error('quality must be one of: 5, 6, 7, 8, 9, 10');
|
|
2578
2572
|
}
|
|
2579
|
-
request.quality = opts.quality;
|
|
2580
2573
|
}
|
|
2581
|
-
|
|
2582
|
-
|
|
2574
|
+
await sendRequest<void>('startVideoRecording', {
|
|
2575
|
+
...persistFields(opts?.persist),
|
|
2576
|
+
quality: opts?.quality,
|
|
2577
|
+
display: opts?.display,
|
|
2578
|
+
touchIndicators: opts?.touchIndicators,
|
|
2579
|
+
});
|
|
2583
2580
|
};
|
|
2584
2581
|
|
|
2585
2582
|
const startAppLogCapture = async (opts: { bundleId: string; persist?: PersistOption }): Promise<void> => {
|
|
@@ -90,9 +90,9 @@ export namespace AndroidInstance {
|
|
|
90
90
|
hardTimeout?: string;
|
|
91
91
|
|
|
92
92
|
/**
|
|
93
|
-
* Names a
|
|
94
|
-
* instance. Creation fails while
|
|
95
|
-
* becomes ready only after the tunnel attaches.
|
|
93
|
+
* Names a private tunnel, created in the console (Network) or the API, that
|
|
94
|
+
* serves this instance. Creation fails while no connector (`lim tunnel run`)
|
|
95
|
+
* holds it, and the instance becomes ready only after the tunnel attaches.
|
|
96
96
|
*/
|
|
97
97
|
tunnel?: string;
|
|
98
98
|
}
|
|
@@ -250,9 +250,9 @@ export namespace AndroidInstanceCreateParams {
|
|
|
250
250
|
sandbox?: Spec.Sandbox;
|
|
251
251
|
|
|
252
252
|
/**
|
|
253
|
-
* Names a
|
|
254
|
-
* instance. Creation fails while
|
|
255
|
-
* becomes ready only after the tunnel attaches.
|
|
253
|
+
* Names a private tunnel, created in the console (Network) or the API, that
|
|
254
|
+
* serves this instance. Creation fails while no connector (`lim tunnel run`)
|
|
255
|
+
* holds it, and the instance becomes ready only after the tunnel attaches.
|
|
256
256
|
*/
|
|
257
257
|
tunnel?: string;
|
|
258
258
|
}
|
|
@@ -90,9 +90,9 @@ export namespace IosInstance {
|
|
|
90
90
|
hardTimeout?: string;
|
|
91
91
|
|
|
92
92
|
/**
|
|
93
|
-
* Names a
|
|
94
|
-
* instance. Creation fails while
|
|
95
|
-
* becomes ready only after the tunnel attaches.
|
|
93
|
+
* Names a private tunnel, created in the console (Network) or the API, that
|
|
94
|
+
* serves this instance. Creation fails while no connector (`lim tunnel run`)
|
|
95
|
+
* holds it, and the instance becomes ready only after the tunnel attaches.
|
|
96
96
|
*/
|
|
97
97
|
tunnel?: string;
|
|
98
98
|
}
|
|
@@ -213,7 +213,8 @@ export namespace IosInstanceCreateParams {
|
|
|
213
213
|
jurisdiction?: 'us' | 'eu' | 'as';
|
|
214
214
|
|
|
215
215
|
/**
|
|
216
|
-
* The Apple Simulator model. iPhone Duo requires Xcode 27.1 and iOS 27
|
|
216
|
+
* The Apple Simulator model. iPhone Duo requires Xcode 27.1 and runs iOS 27, see
|
|
217
|
+
* the OSVersion clue. Default is iphone.
|
|
217
218
|
*/
|
|
218
219
|
model?: 'iphone' | 'iphone-duo' | 'ipad' | 'watch';
|
|
219
220
|
|
|
@@ -239,16 +240,16 @@ export namespace IosInstanceCreateParams {
|
|
|
239
240
|
region?: string;
|
|
240
241
|
|
|
241
242
|
/**
|
|
242
|
-
* Names a
|
|
243
|
-
* instance. Creation fails while
|
|
244
|
-
* becomes ready only after the tunnel attaches.
|
|
243
|
+
* Names a private tunnel, created in the console (Network) or the API, that
|
|
244
|
+
* serves this instance. Creation fails while no connector (`lim tunnel run`)
|
|
245
|
+
* holds it, and the instance becomes ready only after the tunnel attaches.
|
|
245
246
|
*/
|
|
246
247
|
tunnel?: string;
|
|
247
248
|
}
|
|
248
249
|
|
|
249
250
|
export namespace Spec {
|
|
250
251
|
export interface Clue {
|
|
251
|
-
kind: 'ClientIP' | 'ClientLocation';
|
|
252
|
+
kind: 'ClientIP' | 'ClientLocation' | 'OSVersion';
|
|
252
253
|
|
|
253
254
|
clientIp?: string;
|
|
254
255
|
|
|
@@ -257,6 +258,12 @@ export namespace IosInstanceCreateParams {
|
|
|
257
258
|
* ranges. This location takes precedence over ClientIP.
|
|
258
259
|
*/
|
|
259
260
|
clientLocation?: Clue.ClientLocation;
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* The major version of iOS, "26" or "27". iphone runs both, iphone-duo runs 27,
|
|
264
|
+
* ipad and watch run 26. Default is 26, or 27 on iphone-duo.
|
|
265
|
+
*/
|
|
266
|
+
osVersion?: string;
|
|
260
267
|
}
|
|
261
268
|
|
|
262
269
|
export namespace Clue {
|
package/src/tunnel-connector.ts
CHANGED
|
@@ -51,13 +51,13 @@ const ATTACH_GIVE_UP_MS = 5 * 60_000;
|
|
|
51
51
|
const TAKEN_OVER_MESSAGE = 'another connector for this tunnel took the instance over';
|
|
52
52
|
/** A token this close to its expiry is not dialed with; the hub refreshes it at half its life. */
|
|
53
53
|
const TOKEN_EXPIRY_MARGIN_MS = 5_000;
|
|
54
|
-
/** How long before its
|
|
55
|
-
const
|
|
56
|
-
const
|
|
54
|
+
/** How long before its token expires the connector starts warning, and how often. */
|
|
55
|
+
const TOKEN_WARNING_WINDOW_MS = 14 * 24 * 60 * 60_000;
|
|
56
|
+
const TOKEN_WARNING_EVERY_MS = 24 * 60 * 60_000;
|
|
57
57
|
|
|
58
58
|
export interface TunnelConnectorOptions {
|
|
59
|
-
/** The tunnel's
|
|
60
|
-
|
|
59
|
+
/** The tunnel's token; no other credential connects. */
|
|
60
|
+
token: string;
|
|
61
61
|
/** Limrun API base URL, such as https://api.limrun.com. */
|
|
62
62
|
baseURL: string;
|
|
63
63
|
organizationId: string;
|
|
@@ -82,8 +82,8 @@ export interface TunnelConnectorOptions {
|
|
|
82
82
|
export type TunnelConnectorEvent =
|
|
83
83
|
/** This connector holds the tunnel; emitted once per session and control connection. */
|
|
84
84
|
| { type: 'active'; sessionId: string; name: string }
|
|
85
|
-
/** The connector's
|
|
86
|
-
| { type: '
|
|
85
|
+
/** The connector's tunnel token expires within two weeks; emitted once a day until it does. */
|
|
86
|
+
| { type: 'tokenExpiring'; expiresAt: string }
|
|
87
87
|
/** Another connector holds the name; emitted once per holder. */
|
|
88
88
|
| { type: 'standby'; holder: { hostname: string; since?: string } }
|
|
89
89
|
| { type: 'attached'; instanceId: string; tunnelId: string }
|
|
@@ -115,7 +115,7 @@ type ControlClientMessage =
|
|
|
115
115
|
| { type: 'bye' };
|
|
116
116
|
|
|
117
117
|
type ControlServerMessage =
|
|
118
|
-
| { type: 'active'; sessionId: string; leaseSeconds: number; name: string;
|
|
118
|
+
| { type: 'active'; sessionId: string; leaseSeconds: number; name: string; tokenExpiresAt?: string }
|
|
119
119
|
| { type: 'standby'; holder: { hostname: string; since?: string } }
|
|
120
120
|
| {
|
|
121
121
|
type: 'attach';
|
|
@@ -152,7 +152,7 @@ interface InstanceAttachment {
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
/**
|
|
155
|
-
* Serve a
|
|
155
|
+
* Serve a private tunnel: hold it through one control WebSocket to the
|
|
156
156
|
* Limrun API and open a destination tunnel to every instance created with
|
|
157
157
|
* `spec.tunnel` set to its name, with a short-lived token the API hands out
|
|
158
158
|
* for each. Instance tunnels stay up while the control channel reconnects,
|
|
@@ -181,7 +181,7 @@ export function runTunnel(options: TunnelConnectorOptions): TunnelConnector {
|
|
|
181
181
|
let leaseExpiresAt = 0;
|
|
182
182
|
// The tunnel's name, from the first active; instances set it in spec.tunnel.
|
|
183
183
|
let tunnelName: string | undefined;
|
|
184
|
-
let
|
|
184
|
+
let lastTokenWarning = 0;
|
|
185
185
|
let announcedSession: string | undefined;
|
|
186
186
|
let announcedHolder: string | undefined;
|
|
187
187
|
|
|
@@ -362,7 +362,7 @@ export function runTunnel(options: TunnelConnectorOptions): TunnelConnector {
|
|
|
362
362
|
// A token past its life is refused; the API sends a fresh one at half
|
|
363
363
|
// life, so this only waits while the control channel is down.
|
|
364
364
|
if (!tokenUsable(attachment)) {
|
|
365
|
-
retryAfterFailure(instanceId, attachment, 'token_expired', 'waiting for a fresh
|
|
365
|
+
retryAfterFailure(instanceId, attachment, 'token_expired', 'waiting for a fresh attach token');
|
|
366
366
|
return;
|
|
367
367
|
}
|
|
368
368
|
let tunnel: DestinationTcpTunnel;
|
|
@@ -443,12 +443,12 @@ export function runTunnel(options: TunnelConnectorOptions): TunnelConnector {
|
|
|
443
443
|
}
|
|
444
444
|
const now = Date.now();
|
|
445
445
|
if (
|
|
446
|
-
message.
|
|
447
|
-
Date.parse(message.
|
|
448
|
-
now -
|
|
446
|
+
message.tokenExpiresAt !== undefined &&
|
|
447
|
+
Date.parse(message.tokenExpiresAt) - now < TOKEN_WARNING_WINDOW_MS &&
|
|
448
|
+
now - lastTokenWarning >= TOKEN_WARNING_EVERY_MS
|
|
449
449
|
) {
|
|
450
|
-
|
|
451
|
-
emit({ type: '
|
|
450
|
+
lastTokenWarning = now;
|
|
451
|
+
emit({ type: 'tokenExpiring', expiresAt: message.tokenExpiresAt });
|
|
452
452
|
}
|
|
453
453
|
return;
|
|
454
454
|
}
|
|
@@ -565,7 +565,7 @@ export function runTunnel(options: TunnelConnectorOptions): TunnelConnector {
|
|
|
565
565
|
if (stopped) return;
|
|
566
566
|
const proxyAgent = nodeProxyTransport.getWebSocketAgent(controlURL);
|
|
567
567
|
const socket = new WebSocket(controlURL, {
|
|
568
|
-
headers: { Authorization: `Bearer ${options.
|
|
568
|
+
headers: { Authorization: `Bearer ${options.token}` },
|
|
569
569
|
...(proxyAgent ? { agent: proxyAgent } : {}),
|
|
570
570
|
perMessageDeflate: false,
|
|
571
571
|
// A stalled upgrade, such as after a laptop wakes, would otherwise
|
|
@@ -698,7 +698,7 @@ function decodeControlServerMessage(value: unknown): ControlServerMessage | unde
|
|
|
698
698
|
sessionId: readNonEmptyString(message, 'sessionId'),
|
|
699
699
|
leaseSeconds: readPositiveInteger(message, 'leaseSeconds'),
|
|
700
700
|
name: readNonEmptyString(message, 'name'),
|
|
701
|
-
...readOptionalString(message, '
|
|
701
|
+
...readOptionalString(message, 'tokenExpiresAt'),
|
|
702
702
|
};
|
|
703
703
|
}
|
|
704
704
|
case 'standby': {
|
|
@@ -752,7 +752,7 @@ function revokedMessage(reason: string): string {
|
|
|
752
752
|
case 'deleted':
|
|
753
753
|
return 'the tunnel was deleted';
|
|
754
754
|
case 'credential':
|
|
755
|
-
return '
|
|
755
|
+
return 'its tunnel token was rotated, revoked or has expired';
|
|
756
756
|
default:
|
|
757
757
|
return `the tunnel was revoked (${reason})`;
|
|
758
758
|
}
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = '0.
|
|
1
|
+
export const VERSION = '0.63.0'; // x-release-please-version
|
package/tunnel-connector.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type DestinationTunnelInspectionConfig } from "./destination-tunnel.mjs";
|
|
2
2
|
import { type LogLevel } from "./tunnel.mjs";
|
|
3
3
|
export interface TunnelConnectorOptions {
|
|
4
|
-
/** The tunnel's
|
|
5
|
-
|
|
4
|
+
/** The tunnel's token; no other credential connects. */
|
|
5
|
+
token: string;
|
|
6
6
|
/** Limrun API base URL, such as https://api.limrun.com. */
|
|
7
7
|
baseURL: string;
|
|
8
8
|
organizationId: string;
|
|
@@ -30,9 +30,9 @@ export type TunnelConnectorEvent =
|
|
|
30
30
|
sessionId: string;
|
|
31
31
|
name: string;
|
|
32
32
|
}
|
|
33
|
-
/** The connector's
|
|
33
|
+
/** The connector's tunnel token expires within two weeks; emitted once a day until it does. */
|
|
34
34
|
| {
|
|
35
|
-
type: '
|
|
35
|
+
type: 'tokenExpiring';
|
|
36
36
|
expiresAt: string;
|
|
37
37
|
}
|
|
38
38
|
/** Another connector holds the name; emitted once per holder. */
|
|
@@ -77,7 +77,7 @@ export interface TunnelConnector {
|
|
|
77
77
|
close: () => Promise<void>;
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
|
-
* Serve a
|
|
80
|
+
* Serve a private tunnel: hold it through one control WebSocket to the
|
|
81
81
|
* Limrun API and open a destination tunnel to every instance created with
|
|
82
82
|
* `spec.tunnel` set to its name, with a short-lived token the API hands out
|
|
83
83
|
* for each. Instance tunnels stay up while the control channel reconnects,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-connector.d.mts","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"AA0BA,OAAO,EAGL,KAAK,iCAAiC,EAEvC,iCAA6B;AAC9B,OAAO,EAAiB,KAAK,QAAQ,EAAE,qBAAiB;AAyBxD,MAAM,WAAW,sBAAsB;IACrC,
|
|
1
|
+
{"version":3,"file":"tunnel-connector.d.mts","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"AA0BA,OAAO,EAGL,KAAK,iCAAiC,EAEvC,iCAA6B;AAC9B,OAAO,EAAiB,KAAK,QAAQ,EAAE,qBAAiB;AAyBxD,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACxD,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,MAAM,oBAAoB;AAC9B,wFAAwF;AACtF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACrD,+FAA+F;GAC7F;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC9C,iEAAiE;GAC/D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC5D,6CAA6C;GAC3C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AACxE,mFAAmF;GACjF;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,uFAAuF;IACvF,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAoDD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CA+gB1E"}
|
package/tunnel-connector.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type DestinationTunnelInspectionConfig } from "./destination-tunnel.js";
|
|
2
2
|
import { type LogLevel } from "./tunnel.js";
|
|
3
3
|
export interface TunnelConnectorOptions {
|
|
4
|
-
/** The tunnel's
|
|
5
|
-
|
|
4
|
+
/** The tunnel's token; no other credential connects. */
|
|
5
|
+
token: string;
|
|
6
6
|
/** Limrun API base URL, such as https://api.limrun.com. */
|
|
7
7
|
baseURL: string;
|
|
8
8
|
organizationId: string;
|
|
@@ -30,9 +30,9 @@ export type TunnelConnectorEvent =
|
|
|
30
30
|
sessionId: string;
|
|
31
31
|
name: string;
|
|
32
32
|
}
|
|
33
|
-
/** The connector's
|
|
33
|
+
/** The connector's tunnel token expires within two weeks; emitted once a day until it does. */
|
|
34
34
|
| {
|
|
35
|
-
type: '
|
|
35
|
+
type: 'tokenExpiring';
|
|
36
36
|
expiresAt: string;
|
|
37
37
|
}
|
|
38
38
|
/** Another connector holds the name; emitted once per holder. */
|
|
@@ -77,7 +77,7 @@ export interface TunnelConnector {
|
|
|
77
77
|
close: () => Promise<void>;
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
|
-
* Serve a
|
|
80
|
+
* Serve a private tunnel: hold it through one control WebSocket to the
|
|
81
81
|
* Limrun API and open a destination tunnel to every instance created with
|
|
82
82
|
* `spec.tunnel` set to its name, with a short-lived token the API hands out
|
|
83
83
|
* for each. Instance tunnels stay up while the control channel reconnects,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel-connector.d.ts","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"AA0BA,OAAO,EAGL,KAAK,iCAAiC,EAEvC,gCAA6B;AAC9B,OAAO,EAAiB,KAAK,QAAQ,EAAE,oBAAiB;AAyBxD,MAAM,WAAW,sBAAsB;IACrC,
|
|
1
|
+
{"version":3,"file":"tunnel-connector.d.ts","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"AA0BA,OAAO,EAGL,KAAK,iCAAiC,EAEvC,gCAA6B;AAC9B,OAAO,EAAiB,KAAK,QAAQ,EAAE,oBAAiB;AAyBxD,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACxD,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACjD;AAED,MAAM,MAAM,oBAAoB;AAC9B,wFAAwF;AACtF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACrD,+FAA+F;GAC7F;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AAC9C,iEAAiE;GAC/D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC5D,6CAA6C;GAC3C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AACxE,mFAAmF;GACjF;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,uFAAuF;IACvF,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAoDD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CA+gB1E"}
|