lim 0.30.3 → 0.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/base-command.d.ts +9 -0
  2. package/dist/base-command.d.ts.map +1 -1
  3. package/dist/base-command.js +68 -14
  4. package/dist/base-command.js.map +1 -1
  5. package/dist/commands/android/app-logs.d.ts +17 -0
  6. package/dist/commands/android/app-logs.d.ts.map +1 -0
  7. package/dist/commands/android/app-logs.js +35 -0
  8. package/dist/commands/android/app-logs.js.map +1 -0
  9. package/dist/commands/android/create.d.ts +4 -0
  10. package/dist/commands/android/create.d.ts.map +1 -1
  11. package/dist/commands/android/create.js +45 -0
  12. package/dist/commands/android/create.js.map +1 -1
  13. package/dist/commands/android/events.d.ts +17 -0
  14. package/dist/commands/android/events.d.ts.map +1 -0
  15. package/dist/commands/android/events.js +35 -0
  16. package/dist/commands/android/events.js.map +1 -0
  17. package/dist/commands/android/record.d.ts +2 -0
  18. package/dist/commands/android/record.d.ts.map +1 -1
  19. package/dist/commands/android/record.js +27 -3
  20. package/dist/commands/android/record.js.map +1 -1
  21. package/dist/commands/android/recordings.d.ts +17 -0
  22. package/dist/commands/android/recordings.d.ts.map +1 -0
  23. package/dist/commands/android/recordings.js +35 -0
  24. package/dist/commands/android/recordings.js.map +1 -0
  25. package/dist/commands/android/sync.d.ts.map +1 -1
  26. package/dist/commands/android/sync.js +3 -3
  27. package/dist/commands/android/sync.js.map +1 -1
  28. package/dist/commands/android/tunnel/index.d.ts +29 -0
  29. package/dist/commands/android/tunnel/index.d.ts.map +1 -0
  30. package/dist/commands/android/tunnel/index.js +170 -0
  31. package/dist/commands/android/tunnel/index.js.map +1 -0
  32. package/dist/commands/android/tunnel/index.test.d.ts +2 -0
  33. package/dist/commands/android/tunnel/index.test.d.ts.map +1 -0
  34. package/dist/commands/android/tunnel/index.test.js +66 -0
  35. package/dist/commands/android/tunnel/index.test.js.map +1 -0
  36. package/dist/commands/android/tunnel/status.d.ts +17 -0
  37. package/dist/commands/android/tunnel/status.d.ts.map +1 -0
  38. package/dist/commands/android/tunnel/status.js +61 -0
  39. package/dist/commands/android/tunnel/status.js.map +1 -0
  40. package/dist/commands/android/tunnel/stop.d.ts +17 -0
  41. package/dist/commands/android/tunnel/stop.d.ts.map +1 -0
  42. package/dist/commands/android/tunnel/stop.js +50 -0
  43. package/dist/commands/android/tunnel/stop.js.map +1 -0
  44. package/dist/commands/ios/app-logs.d.ts +17 -0
  45. package/dist/commands/ios/app-logs.d.ts.map +1 -0
  46. package/dist/commands/ios/app-logs.js +35 -0
  47. package/dist/commands/ios/app-logs.js.map +1 -0
  48. package/dist/commands/ios/create.d.ts +4 -0
  49. package/dist/commands/ios/create.d.ts.map +1 -1
  50. package/dist/commands/ios/create.js +45 -0
  51. package/dist/commands/ios/create.js.map +1 -1
  52. package/dist/commands/ios/events.d.ts +17 -0
  53. package/dist/commands/ios/events.d.ts.map +1 -0
  54. package/dist/commands/ios/events.js +35 -0
  55. package/dist/commands/ios/events.js.map +1 -0
  56. package/dist/commands/ios/launch-app.js +1 -1
  57. package/dist/commands/ios/launch-app.js.map +1 -1
  58. package/dist/commands/ios/record.d.ts +2 -0
  59. package/dist/commands/ios/record.d.ts.map +1 -1
  60. package/dist/commands/ios/record.js +27 -3
  61. package/dist/commands/ios/record.js.map +1 -1
  62. package/dist/commands/ios/recordings.d.ts +17 -0
  63. package/dist/commands/ios/recordings.d.ts.map +1 -0
  64. package/dist/commands/ios/recordings.js +35 -0
  65. package/dist/commands/ios/recordings.js.map +1 -0
  66. package/dist/commands/ios/sync.d.ts.map +1 -1
  67. package/dist/commands/ios/sync.js +3 -3
  68. package/dist/commands/ios/sync.js.map +1 -1
  69. package/dist/commands/ios/tunnel/index.d.ts +3 -9
  70. package/dist/commands/ios/tunnel/index.d.ts.map +1 -1
  71. package/dist/commands/ios/tunnel/index.js +33 -239
  72. package/dist/commands/ios/tunnel/index.js.map +1 -1
  73. package/dist/commands/ios/tunnel/status.d.ts.map +1 -1
  74. package/dist/commands/ios/tunnel/status.js +17 -41
  75. package/dist/commands/ios/tunnel/status.js.map +1 -1
  76. package/dist/commands/ios/tunnel/stop.d.ts +0 -4
  77. package/dist/commands/ios/tunnel/stop.d.ts.map +1 -1
  78. package/dist/commands/ios/tunnel/stop.js +13 -111
  79. package/dist/commands/ios/tunnel/stop.js.map +1 -1
  80. package/dist/lib/duration.d.ts +5 -0
  81. package/dist/lib/duration.d.ts.map +1 -1
  82. package/dist/lib/duration.js +21 -0
  83. package/dist/lib/duration.js.map +1 -1
  84. package/dist/lib/session-artifacts.d.ts +11 -0
  85. package/dist/lib/session-artifacts.d.ts.map +1 -0
  86. package/dist/lib/session-artifacts.js +30 -0
  87. package/dist/lib/session-artifacts.js.map +1 -0
  88. package/dist/lib/session-captures.d.ts +41 -0
  89. package/dist/lib/session-captures.d.ts.map +1 -0
  90. package/dist/lib/session-captures.js +55 -0
  91. package/dist/lib/session-captures.js.map +1 -0
  92. package/dist/lib/tunnel-command.d.ts +98 -0
  93. package/dist/lib/tunnel-command.d.ts.map +1 -0
  94. package/dist/lib/tunnel-command.js +542 -0
  95. package/dist/lib/tunnel-command.js.map +1 -0
  96. package/dist/lib/tunnel-command.test.d.ts +2 -0
  97. package/dist/lib/tunnel-command.test.d.ts.map +1 -0
  98. package/dist/lib/tunnel-command.test.js +91 -0
  99. package/dist/lib/tunnel-command.test.js.map +1 -0
  100. package/dist/lib/tunnel-har.d.ts +14 -0
  101. package/dist/lib/tunnel-har.d.ts.map +1 -0
  102. package/dist/lib/tunnel-har.js +150 -0
  103. package/dist/lib/tunnel-har.js.map +1 -0
  104. package/dist/lib/tunnel-har.test.d.ts +2 -0
  105. package/dist/lib/tunnel-har.test.d.ts.map +1 -0
  106. package/dist/lib/tunnel-har.test.js +164 -0
  107. package/dist/lib/tunnel-har.test.js.map +1 -0
  108. package/dist/lib/tunnel-process.d.ts +98 -0
  109. package/dist/lib/tunnel-process.d.ts.map +1 -0
  110. package/dist/lib/{ios-tunnel-process.js → tunnel-process.js} +87 -97
  111. package/dist/lib/tunnel-process.js.map +1 -0
  112. package/dist/lib/tunnel-process.test.d.ts +2 -0
  113. package/dist/lib/tunnel-process.test.d.ts.map +1 -0
  114. package/dist/lib/tunnel-process.test.js +428 -0
  115. package/dist/lib/tunnel-process.test.js.map +1 -0
  116. package/package.json +2 -2
  117. package/dist/lib/ios-tunnel-process.d.ts +0 -70
  118. package/dist/lib/ios-tunnel-process.d.ts.map +0 -1
  119. package/dist/lib/ios-tunnel-process.js.map +0 -1
  120. package/dist/lib/ios-tunnel-process.test.d.ts +0 -2
  121. package/dist/lib/ios-tunnel-process.test.d.ts.map +0 -1
  122. package/dist/lib/ios-tunnel-process.test.js +0 -339
  123. package/dist/lib/ios-tunnel-process.test.js.map +0 -1
@@ -3,10 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.IOS_TUNNELS_ROOT = void 0;
7
- exports.parseTunnelRoute = parseTunnelRoute;
6
+ exports.TUNNELS_ROOT = void 0;
7
+ exports.parseTunnelSelectors = parseTunnelSelectors;
8
8
  exports.newTunnelOwner = newTunnelOwner;
9
- exports.formatTunnelRoute = formatTunnelRoute;
9
+ exports.formatTunnelSelectors = formatTunnelSelectors;
10
10
  exports.formatTunnelDialFailure = formatTunnelDialFailure;
11
11
  exports.buildTunnelServeArgs = buildTunnelServeArgs;
12
12
  exports.tunnelChildEnvironment = tunnelChildEnvironment;
@@ -17,9 +17,10 @@ exports.updateTunnelProcess = updateTunnelProcess;
17
17
  exports.loadTunnelProcess = loadTunnelProcess;
18
18
  exports.listTunnelProcesses = listTunnelProcesses;
19
19
  exports.selectTunnelOwnersForStop = selectTunnelOwnersForStop;
20
- exports.tunnelOwnerRemainsSelectedForStop = tunnelOwnerRemainsSelectedForStop;
21
20
  exports.subscribeTunnelDisconnect = subscribeTunnelDisconnect;
22
21
  exports.stopTunnelErrorIsNotFound = stopTunnelErrorIsNotFound;
22
+ exports.markTunnelProcessCancelled = markTunnelProcessCancelled;
23
+ exports.isTunnelProcessCancelled = isTunnelProcessCancelled;
23
24
  exports.clearTunnelProcess = clearTunnelProcess;
24
25
  exports.pruneTunnelLogs = pruneTunnelLogs;
25
26
  exports.isProcessAlive = isProcessAlive;
@@ -33,46 +34,26 @@ exports.capTunnelLog = capTunnelLog;
33
34
  const child_process_1 = require("child_process");
34
35
  const crypto_1 = __importDefault(require("crypto"));
35
36
  const fs_1 = __importDefault(require("fs"));
36
- const net_1 = __importDefault(require("net"));
37
37
  const os_1 = __importDefault(require("os"));
38
38
  const path_1 = __importDefault(require("path"));
39
- exports.IOS_TUNNELS_ROOT = path_1.default.join(os_1.default.homedir(), '.lim', 'tunnels');
39
+ const api_1 = require("@limrun/api");
40
+ exports.TUNNELS_ROOT = path_1.default.join(os_1.default.homedir(), '.lim', 'tunnels');
40
41
  const OWNER_PATTERN = /^[0-9a-f]{32}$/;
41
- function parseTunnelRoute(value) {
42
- let host;
43
- let portText;
44
- if (value.startsWith('[')) {
45
- const match = /^\[([^\]]+)\]:(\d+)$/.exec(value);
46
- if (!match?.[1] || !match[2]) {
47
- throw new Error(`Invalid route "${value}"; use [IPv6]:port`);
48
- }
49
- host = match[1];
50
- portText = match[2];
51
- }
52
- else {
53
- const separator = value.lastIndexOf(':');
54
- if (separator <= 0 || value.indexOf(':') !== separator) {
55
- throw new Error(`Invalid route "${value}"; use host:port or [IPv6]:port`);
56
- }
57
- host = value.slice(0, separator);
58
- portText = value.slice(separator + 1);
59
- }
60
- const port = Number(portText);
61
- const route = canonicalizeTunnelRoute(host, port);
62
- if (route) {
63
- return route;
42
+ function parseTunnelSelectors(values, options = {}) {
43
+ const selectors = (0, api_1.validateDestinationTunnelSelectors)(values, options.minPort === undefined ? {} : { minRoutePort: options.minPort });
44
+ if (options.allowDomains === false && selectors.some((selector) => !selector.includes(':'))) {
45
+ throw new Error('This tunnel supports only localhost:port or literal IP:port selectors');
64
46
  }
65
- throw new Error(`Invalid route "${value}"; expected localhost or a literal IP with an allowed TCP port`);
47
+ return selectors;
66
48
  }
67
49
  function newTunnelOwner() {
68
50
  return crypto_1.default.randomBytes(16).toString('hex');
69
51
  }
70
- function formatTunnelRoute(route) {
71
- const host = route.host.includes(':') ? `[${route.host}]` : route.host;
72
- return `${host}:${route.port}`;
52
+ function formatTunnelSelectors(selectors) {
53
+ return [...selectors];
73
54
  }
74
55
  function formatTunnelDialFailure(failure) {
75
- const correlationIds = `tunnel ${failure.tunnelId}, connection ${failure.connectionId}, ${failure.routeId}`;
56
+ const correlationIds = `tunnel ${failure.tunnelId}, connection ${failure.connectionId}, ${failure.selectorId}`;
76
57
  const failureDetails = failure.osCode ? `${failure.reason}, ${failure.osCode}` : failure.reason;
77
58
  return `Last dial failure: ${correlationIds} (${failureDetails})`;
78
59
  }
@@ -80,14 +61,26 @@ function buildTunnelServeArgs(options) {
80
61
  assertOwner(options.owner);
81
62
  return [
82
63
  options.scriptPath,
83
- 'ios',
64
+ options.product,
84
65
  'tunnel',
85
66
  '--serve',
86
67
  '--no-create',
87
68
  '--id',
88
69
  options.instanceId,
89
70
  `--tunnel-owner=${options.owner}`,
90
- ...options.routes.flatMap((route) => ['--route', formatTunnelRoute(route)]),
71
+ ...(options.verbose ? ['--verbose'] : []),
72
+ ...(options.product === 'android' && options.inspect !== undefined ?
73
+ [options.inspect ? '--inspect' : '--no-inspect']
74
+ : []),
75
+ ...(options.product === 'android' && options.persist ? ['--persist'] : []),
76
+ ...(options.product === 'android' && options.ttlSeconds !== undefined ?
77
+ ['--ttl', String(options.ttlSeconds)]
78
+ : []),
79
+ ...(options.product === 'android' && options.harPath ? ['--har', options.harPath] : []),
80
+ ...(options.product === 'android' && options.harBodyLimit !== undefined ?
81
+ ['--har-body-limit', String(options.harBodyLimit)]
82
+ : []),
83
+ ...formatTunnelSelectors(options.selectors).flatMap((selector) => ['--selector', selector]),
91
84
  ];
92
85
  }
93
86
  function tunnelChildEnvironment(apiKey, environment = process.env) {
@@ -123,7 +116,7 @@ function tunnelProcessDirectory(instanceId, root) {
123
116
  const key = crypto_1.default.createHash('sha256').update(instanceId).digest('hex').slice(0, 12);
124
117
  return path_1.default.join(root, key);
125
118
  }
126
- function tunnelProcessPaths(instanceId, owner, root = exports.IOS_TUNNELS_ROOT) {
119
+ function tunnelProcessPaths(instanceId, owner, root = exports.TUNNELS_ROOT) {
127
120
  assertOwner(owner);
128
121
  const directory = tunnelProcessDirectory(instanceId, root);
129
122
  return {
@@ -133,7 +126,7 @@ function tunnelProcessPaths(instanceId, owner, root = exports.IOS_TUNNELS_ROOT)
133
126
  cancelled: path_1.default.join(directory, `${owner}.cancelled`),
134
127
  };
135
128
  }
136
- function claimTunnelProcess(state, root = exports.IOS_TUNNELS_ROOT) {
129
+ function claimTunnelProcess(state, root = exports.TUNNELS_ROOT) {
137
130
  const paths = tunnelProcessPaths(state.instanceId, state.owner, root);
138
131
  validateTunnelProcessState(state, state.instanceId, paths);
139
132
  if (fs_1.default.existsSync(paths.cancelled))
@@ -157,7 +150,7 @@ function claimTunnelProcess(state, root = exports.IOS_TUNNELS_ROOT) {
157
150
  fs_1.default.rmSync(temporary, { force: true });
158
151
  }
159
152
  }
160
- function updateTunnelProcess(state, expectedOwner, root = exports.IOS_TUNNELS_ROOT) {
153
+ function updateTunnelProcess(state, expectedOwner, root = exports.TUNNELS_ROOT) {
161
154
  if (state.owner !== expectedOwner) {
162
155
  throw new Error('Tunnel process ownership changed during startup');
163
156
  }
@@ -182,7 +175,7 @@ function updateTunnelProcess(state, expectedOwner, root = exports.IOS_TUNNELS_RO
182
175
  fs_1.default.rmSync(temporary, { force: true });
183
176
  }
184
177
  }
185
- function loadTunnelProcess(instanceId, owner, root = exports.IOS_TUNNELS_ROOT) {
178
+ function loadTunnelProcess(instanceId, owner, root = exports.TUNNELS_ROOT) {
186
179
  const paths = tunnelProcessPaths(instanceId, owner, root);
187
180
  try {
188
181
  const state = JSON.parse(fs_1.default.readFileSync(paths.state, 'utf8'));
@@ -193,7 +186,7 @@ function loadTunnelProcess(instanceId, owner, root = exports.IOS_TUNNELS_ROOT) {
193
186
  return undefined;
194
187
  }
195
188
  }
196
- function listTunnelProcesses(instanceId, root = exports.IOS_TUNNELS_ROOT) {
189
+ function listTunnelProcesses(instanceId, root = exports.TUNNELS_ROOT) {
197
190
  const directory = tunnelProcessDirectory(instanceId, root);
198
191
  let entries;
199
192
  try {
@@ -218,9 +211,6 @@ function selectTunnelOwnersForStop(owners, tunnelId) {
218
211
  return owners;
219
212
  return owners.filter((state) => state.status === 'starting' || state.tunnelId === tunnelId);
220
213
  }
221
- function tunnelOwnerRemainsSelectedForStop(snapshot, current, tunnelId) {
222
- return !tunnelId || snapshot.status === 'starting' || current.tunnelId === tunnelId;
223
- }
224
214
  function subscribeTunnelDisconnect(tunnel, onDisconnect) {
225
215
  let disconnected = false;
226
216
  let unsubscribe = () => { };
@@ -246,14 +236,15 @@ function subscribeTunnelDisconnect(tunnel, onDisconnect) {
246
236
  function stopTunnelErrorIsNotFound(error) {
247
237
  return error instanceof Error && error.message.startsWith('stopTunnel failed: 404 ');
248
238
  }
249
- function clearTunnelProcess(instanceId, owner, root = exports.IOS_TUNNELS_ROOT) {
239
+ /**
240
+ * Mark an owner as cancelled without removing its state. Cancellation is
241
+ * observed by the serving child before every reconnect attempt and by every
242
+ * state update, so a cancelled starting owner can never recreate the tunnel
243
+ * between our stop signal and its exit.
244
+ */
245
+ function markTunnelProcessCancelled(instanceId, owner, root = exports.TUNNELS_ROOT) {
250
246
  const paths = tunnelProcessPaths(instanceId, owner, root);
251
- const state = loadTunnelProcess(instanceId, owner, root);
252
- if (state && state.pid !== process.pid) {
253
- const identity = tunnelOwnerProcessIdentity(state);
254
- if (identity === 'match' || identity === 'unknown')
255
- return false;
256
- }
247
+ fs_1.default.mkdirSync(paths.directory, { recursive: true, mode: 0o700 });
257
248
  try {
258
249
  fs_1.default.writeFileSync(paths.cancelled, '', { flag: 'wx', mode: 0o600 });
259
250
  }
@@ -261,6 +252,19 @@ function clearTunnelProcess(instanceId, owner, root = exports.IOS_TUNNELS_ROOT)
261
252
  if (error.code !== 'EEXIST')
262
253
  throw error;
263
254
  }
255
+ }
256
+ function isTunnelProcessCancelled(instanceId, owner, root = exports.TUNNELS_ROOT) {
257
+ return fs_1.default.existsSync(tunnelProcessPaths(instanceId, owner, root).cancelled);
258
+ }
259
+ function clearTunnelProcess(instanceId, owner, root = exports.TUNNELS_ROOT) {
260
+ const paths = tunnelProcessPaths(instanceId, owner, root);
261
+ const state = loadTunnelProcess(instanceId, owner, root);
262
+ if (state && state.pid !== process.pid) {
263
+ const identity = tunnelOwnerProcessIdentity(state);
264
+ if (identity === 'match' || identity === 'unknown')
265
+ return false;
266
+ }
267
+ markTunnelProcessCancelled(instanceId, owner, root);
264
268
  try {
265
269
  fs_1.default.unlinkSync(paths.state);
266
270
  pruneTunnelLogs(instanceId, root);
@@ -272,7 +276,7 @@ function clearTunnelProcess(instanceId, owner, root = exports.IOS_TUNNELS_ROOT)
272
276
  throw error;
273
277
  }
274
278
  }
275
- function pruneTunnelLogs(instanceId, root = exports.IOS_TUNNELS_ROOT, retain = 5) {
279
+ function pruneTunnelLogs(instanceId, root = exports.TUNNELS_ROOT, retain = 5) {
276
280
  const directory = tunnelProcessDirectory(instanceId, root);
277
281
  let entries;
278
282
  try {
@@ -397,56 +401,21 @@ function capTunnelLog(logPath, maxBytes = 5 * 1024 * 1024) {
397
401
  throw error;
398
402
  }
399
403
  }
400
- function validateStoredRoutes(routes) {
401
- if (!Array.isArray(routes) || routes.length < 1 || routes.length > 10) {
402
- throw new Error('Invalid tunnel routes');
403
- }
404
- const seen = new Set();
405
- for (const route of routes) {
406
- const canonical = typeof route?.host === 'string' ? canonicalizeTunnelRoute(route.host, route.port) : undefined;
407
- const key = canonical ? `${canonical.host}\0${canonical.port}` : '';
408
- if (canonical?.host !== route.host || canonical.port !== route.port || seen.has(key)) {
409
- throw new Error('Invalid tunnel routes');
410
- }
411
- seen.add(key);
412
- }
413
- return routes;
414
- }
415
- function canonicalizeTunnelRoute(host, port) {
416
- if (!Number.isInteger(port) || port < 1 || port > 65535 || port === 53) {
417
- return undefined;
418
- }
419
- if (Buffer.byteLength(host, 'utf8') === host.length && host.toLowerCase() === 'localhost') {
420
- return { host: 'localhost', port };
421
- }
422
- const ipVersion = net_1.default.isIP(host);
423
- if (ipVersion === 4) {
424
- return { host, port };
425
- }
426
- if (ipVersion !== 6) {
427
- return undefined;
428
- }
429
- const canonical = new URL(`http://[${host}]/`).hostname.slice(1, -1);
430
- if (canonical !== '::1' && /^::(?:[0-9a-f]{1,4}:)?[0-9a-f]{1,4}$/.test(canonical)) {
431
- return undefined;
432
- }
433
- const mapped = /^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/.exec(canonical);
434
- if (!mapped?.[1] || !mapped[2]) {
435
- return { host: canonical, port };
404
+ function validateStoredSelectors(selectors) {
405
+ const canonical = (0, api_1.validateDestinationTunnelSelectors)(selectors);
406
+ // Persisted state must already be canonical; anything else was not
407
+ // written by us and is rejected rather than silently normalized.
408
+ if (JSON.stringify(selectors) !== JSON.stringify(canonical)) {
409
+ throw new Error('Invalid tunnel process state');
436
410
  }
437
- const high = Number.parseInt(mapped[1], 16);
438
- const low = Number.parseInt(mapped[2], 16);
439
- return {
440
- host: `${high >> 8}.${high & 0xff}.${low >> 8}.${low & 0xff}`,
441
- port,
442
- };
411
+ return canonical;
443
412
  }
444
413
  function validateTunnelProcessState(state, instanceId, paths) {
445
414
  const startedAt = typeof state.startedAt === 'string' ? Date.parse(state.startedAt) : Number.NaN;
446
415
  const startedAtValid = Number.isFinite(startedAt) && new Date(startedAt).toISOString() === state.startedAt;
447
416
  const age = Date.now() - startedAt;
448
417
  try {
449
- validateStoredRoutes(state.routes);
418
+ validateStoredSelectors(state.selectors);
450
419
  }
451
420
  catch {
452
421
  throw new Error('Invalid tunnel process state');
@@ -454,17 +423,38 @@ function validateTunnelProcessState(state, instanceId, paths) {
454
423
  const readyFieldsValid = state.status !== 'ready' ||
455
424
  (state.pid > 0 && typeof state.tunnelId === 'string' && state.tunnelId.length > 0);
456
425
  const startingFieldsValid = state.status !== 'starting' || state.tunnelId === undefined;
426
+ const inspectionFieldsValid = (state.inspect === undefined || typeof state.inspect === 'boolean') &&
427
+ (state.persist === undefined || typeof state.persist === 'boolean') &&
428
+ (state.ttlSeconds === undefined ||
429
+ (Number.isInteger(state.ttlSeconds) &&
430
+ state.ttlSeconds > 0 &&
431
+ state.ttlSeconds <= api_1.DESTINATION_TUNNEL_MAX_TTL_SECONDS)) &&
432
+ (state.harPath === undefined || (typeof state.harPath === 'string' && state.harPath.length > 0)) &&
433
+ (state.harBodyLimit === undefined ||
434
+ (Number.isInteger(state.harBodyLimit) &&
435
+ state.harBodyLimit > 0 &&
436
+ state.harBodyLimit <= api_1.DESTINATION_TUNNEL_MAX_BODY_BYTES)) &&
437
+ (state.harPath === undefined || state.inspect === true) &&
438
+ (state.persist !== true || state.inspect === true) &&
439
+ (state.ttlSeconds === undefined || state.persist === true) &&
440
+ (state.product === 'android' ||
441
+ (state.inspect === undefined &&
442
+ state.persist === undefined &&
443
+ state.ttlSeconds === undefined &&
444
+ state.harPath === undefined));
457
445
  if (typeof state.owner !== 'string' ||
458
446
  !OWNER_PATTERN.test(state.owner) ||
459
447
  !Number.isInteger(state.pid) ||
460
448
  state.pid < 0 ||
461
449
  state.instanceId !== instanceId ||
450
+ (state.product !== 'ios' && state.product !== 'android') ||
462
451
  (state.status !== 'starting' && state.status !== 'ready') ||
463
452
  !startedAtValid ||
464
453
  age < 0 ||
465
454
  state.logPath !== paths.log ||
466
455
  !readyFieldsValid ||
467
- !startingFieldsValid) {
456
+ !startingFieldsValid ||
457
+ !inspectionFieldsValid) {
468
458
  throw new Error('Invalid tunnel process state');
469
459
  }
470
460
  }
@@ -499,4 +489,4 @@ function readFileSuffix(filePath, maxBytes) {
499
489
  fs_1.default.closeSync(descriptor);
500
490
  }
501
491
  }
502
- //# sourceMappingURL=ios-tunnel-process.js.map
492
+ //# sourceMappingURL=tunnel-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel-process.js","sourceRoot":"","sources":["../../src/lib/tunnel-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tunnel-process.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel-process.test.d.ts","sourceRoot":"","sources":["../../src/lib/tunnel-process.test.ts"],"names":[],"mappings":""}