@limrun/api 0.60.0 → 0.62.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 (40) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/destination-tunnel-dialer.d.mts +8 -0
  3. package/destination-tunnel-dialer.d.mts.map +1 -1
  4. package/destination-tunnel-dialer.d.ts +8 -0
  5. package/destination-tunnel-dialer.d.ts.map +1 -1
  6. package/destination-tunnel-dialer.js +6 -5
  7. package/destination-tunnel-dialer.js.map +1 -1
  8. package/destination-tunnel-dialer.mjs +5 -5
  9. package/destination-tunnel-dialer.mjs.map +1 -1
  10. package/internal/destination-tunnel-wire-reader.d.mts +2 -0
  11. package/internal/destination-tunnel-wire-reader.d.mts.map +1 -1
  12. package/internal/destination-tunnel-wire-reader.d.ts +2 -0
  13. package/internal/destination-tunnel-wire-reader.d.ts.map +1 -1
  14. package/internal/destination-tunnel-wire-reader.js +17 -0
  15. package/internal/destination-tunnel-wire-reader.js.map +1 -1
  16. package/internal/destination-tunnel-wire-reader.mjs +15 -0
  17. package/internal/destination-tunnel-wire-reader.mjs.map +1 -1
  18. package/package.json +1 -1
  19. package/resources/android-instances.d.mts +6 -6
  20. package/resources/android-instances.d.ts +6 -6
  21. package/resources/ios-instances.d.mts +6 -6
  22. package/resources/ios-instances.d.ts +6 -6
  23. package/src/destination-tunnel-dialer.ts +6 -5
  24. package/src/internal/destination-tunnel-wire-reader.ts +17 -0
  25. package/src/resources/android-instances.ts +6 -6
  26. package/src/resources/ios-instances.ts +6 -6
  27. package/src/tunnel-connector.ts +132 -42
  28. package/src/version.ts +1 -1
  29. package/tunnel-connector.d.mts +21 -10
  30. package/tunnel-connector.d.mts.map +1 -1
  31. package/tunnel-connector.d.ts +21 -10
  32. package/tunnel-connector.d.ts.map +1 -1
  33. package/tunnel-connector.js +96 -29
  34. package/tunnel-connector.js.map +1 -1
  35. package/tunnel-connector.mjs +98 -31
  36. package/tunnel-connector.mjs.map +1 -1
  37. package/version.d.mts +1 -1
  38. package/version.d.ts +1 -1
  39. package/version.js +1 -1
  40. package/version.mjs +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-connector.d.mts","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"AAwBA,OAAO,EAGL,KAAK,iCAAiC,EACtC,KAAK,0BAA0B,EAChC,iCAA6B;AAC9B,OAAO,EAAiB,KAAK,QAAQ,EAAE,qBAAiB;AAoBxD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,0BAA0B,CAAC;IACtC,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,sFAAsF;AACpF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AACvC,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;AAyCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAyd1E"}
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"}
@@ -1,13 +1,16 @@
1
- import { type DestinationTunnelInspectionConfig, type DestinationTunnelSelectors } from "./destination-tunnel.js";
1
+ import { type DestinationTunnelInspectionConfig } from "./destination-tunnel.js";
2
2
  import { type LogLevel } from "./tunnel.js";
3
3
  export interface TunnelConnectorOptions {
4
- apiKey: string;
4
+ /** The tunnel's token; no other credential connects. */
5
+ token: string;
5
6
  /** Limrun API base URL, such as https://api.limrun.com. */
6
7
  baseURL: string;
7
8
  organizationId: string;
8
- /** The name instances set in `spec.tunnel` to attach to this connector. */
9
- name: string;
10
- selectors: DestinationTunnelSelectors;
9
+ /**
10
+ * The ID of a tunnel created in the console or the API. Its name, which
11
+ * instances set in `spec.tunnel`, and its selectors come from the platform.
12
+ */
13
+ tunnelId: string;
11
14
  /** Inspection for every instance tunnel. Defaults to enabled without bodies. */
12
15
  inspection?: Partial<DestinationTunnelInspectionConfig>;
13
16
  /** Take the name over from the connector that holds it now. */
@@ -21,10 +24,16 @@ export interface TunnelConnectorOptions {
21
24
  onEvent?: (event: TunnelConnectorEvent) => void;
22
25
  }
23
26
  export type TunnelConnectorEvent =
24
- /** This connector holds the name; emitted once per session and control connection. */
27
+ /** This connector holds the tunnel; emitted once per session and control connection. */
25
28
  {
26
29
  type: 'active';
27
30
  sessionId: string;
31
+ name: string;
32
+ }
33
+ /** The connector's tunnel token expires within two weeks; emitted once a day until it does. */
34
+ | {
35
+ type: 'tokenExpiring';
36
+ expiresAt: string;
28
37
  }
29
38
  /** Another connector holds the name; emitted once per holder. */
30
39
  | {
@@ -68,10 +77,12 @@ export interface TunnelConnector {
68
77
  close: () => Promise<void>;
69
78
  }
70
79
  /**
71
- * Serve a persistent tunnel: hold the name through one control WebSocket to
72
- * the Limrun API and open a destination tunnel to every instance created
73
- * with `spec.tunnel` set to it. Instance tunnels stay up while the control
74
- * channel reconnects, so an API outage never becomes a tunnel outage.
80
+ * Serve a persistent tunnel: hold it through one control WebSocket to the
81
+ * Limrun API and open a destination tunnel to every instance created with
82
+ * `spec.tunnel` set to its name, with a short-lived token the API hands out
83
+ * for each. Instance tunnels stay up while the control channel reconnects,
84
+ * so an API outage never becomes a tunnel outage; one that drops re-dials
85
+ * once the API sends a fresh token.
75
86
  */
76
87
  export declare function runTunnel(options: TunnelConnectorOptions): TunnelConnector;
77
88
  //# sourceMappingURL=tunnel-connector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-connector.d.ts","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"AAwBA,OAAO,EAGL,KAAK,iCAAiC,EACtC,KAAK,0BAA0B,EAChC,gCAA6B;AAC9B,OAAO,EAAiB,KAAK,QAAQ,EAAE,oBAAiB;AAoBxD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,0BAA0B,CAAC;IACtC,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,sFAAsF;AACpF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AACvC,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;AAyCD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAyd1E"}
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"}
@@ -12,7 +12,7 @@ const destination_tunnel_dialer_1 = require("./destination-tunnel-dialer.js");
12
12
  const destination_tunnel_1 = require("./destination-tunnel.js");
13
13
  const tunnel_1 = require("./tunnel.js");
14
14
  const version_1 = require("./version.js");
15
- const CONTROL_PROTOCOL_VERSION = 1;
15
+ const CONTROL_PROTOCOL_VERSION = 2;
16
16
  const CONTROL_HANDSHAKE_TIMEOUT_MS = 15000;
17
17
  const CONTROL_PING_INTERVAL_MS = 15000;
18
18
  const CONTROL_DEAD_PEER_MS = 45000;
@@ -28,21 +28,23 @@ const MAX_REJECTION_REASON_CHARS = 200;
28
28
  /** Every tunnel WebSocket counts as instance activity, so retries must end. */
29
29
  const ATTACH_GIVE_UP_MS = 5 * 60000;
30
30
  const TAKEN_OVER_MESSAGE = 'another connector for this tunnel took the instance over';
31
+ /** A token this close to its expiry is not dialed with; the hub refreshes it at half its life. */
32
+ const TOKEN_EXPIRY_MARGIN_MS = 5000;
33
+ /** How long before its token expires the connector starts warning, and how often. */
34
+ const TOKEN_WARNING_WINDOW_MS = 14 * 24 * 60 * 60000;
35
+ const TOKEN_WARNING_EVERY_MS = 24 * 60 * 60000;
31
36
  /**
32
- * Serve a persistent tunnel: hold the name through one control WebSocket to
33
- * the Limrun API and open a destination tunnel to every instance created
34
- * with `spec.tunnel` set to it. Instance tunnels stay up while the control
35
- * channel reconnects, so an API outage never becomes a tunnel outage.
37
+ * Serve a persistent tunnel: hold it through one control WebSocket to the
38
+ * Limrun API and open a destination tunnel to every instance created with
39
+ * `spec.tunnel` set to its name, with a short-lived token the API hands out
40
+ * for each. Instance tunnels stay up while the control channel reconnects,
41
+ * so an API outage never becomes a tunnel outage; one that drops re-dials
42
+ * once the API sends a fresh token.
36
43
  */
37
44
  function runTunnel(options) {
38
- const selectors = (0, destination_tunnel_1.validateDestinationTunnelSelectors)(options.selectors);
39
- const dialOptions = {
40
- ...(0, destination_tunnel_dialer_1.destinationTunnelDialOptions)({ selectors, ...(options.inspection ? { inspection: options.inspection } : {}) }, options.logLevel ?? 'warn'),
41
- name: options.name,
42
- };
43
45
  // Reject a bad inspection config now rather than on every attach.
44
- (0, destination_tunnel_1.normalizeDestinationTunnelInspection)(dialOptions.inspection ?? {});
45
- const controlURL = (0, destination_tunnel_url_1.deriveTunnelConnectURL)(options.baseURL, options.organizationId, options.name);
46
+ (0, destination_tunnel_1.normalizeDestinationTunnelInspection)((0, destination_tunnel_dialer_1.destinationTunnelInspection)(options.inspection));
47
+ const controlURL = (0, destination_tunnel_url_1.deriveTunnelConnectURL)(options.baseURL, options.organizationId, options.tunnelId);
46
48
  const client = {
47
49
  hostname: options.hostname ?? os_1.default.hostname(),
48
50
  version: options.clientVersion ?? version_1.VERSION,
@@ -58,6 +60,9 @@ function runTunnel(options) {
58
60
  let replace = options.replace ?? false;
59
61
  // When the last confirmed lease runs out; zero while on standby.
60
62
  let leaseExpiresAt = 0;
63
+ // The tunnel's name, from the first active; instances set it in spec.tunnel.
64
+ let tunnelName;
65
+ let lastTokenWarning = 0;
61
66
  let announcedSession;
62
67
  let announcedHolder;
63
68
  let resolveClosed;
@@ -106,13 +111,22 @@ function runTunnel(options) {
106
111
  if (!shutdown())
107
112
  return;
108
113
  ws?.terminate();
109
- rejectClosed(new Error(`tunnel ${options.name}: ${detail}`));
114
+ rejectClosed(new Error(`tunnel ${tunnelName ?? options.tunnelId}: ${detail}`));
110
115
  };
111
- const giveUp = (instanceId, attachment, code, message) => {
112
- forget(instanceId, attachment);
116
+ const dialOptions = (attachment) => ({
117
+ ...(0, destination_tunnel_dialer_1.destinationTunnelDialOptions)({ selectors: attachment.selectors, ...(options.inspection ? { inspection: options.inspection } : {}) }, options.logLevel ?? 'warn'),
118
+ ...(tunnelName === undefined ? {} : { name: tunnelName }),
119
+ });
120
+ const tokenUsable = (attachment) => Date.now() < attachment.tokenExpiresAt - TOKEN_EXPIRY_MARGIN_MS;
121
+ // Tells the platform and the caller that the connector gave up on an instance.
122
+ const reportGivenUp = (instanceId, code, message) => {
113
123
  send({ type: 'attachFailed', instanceId, code, message, terminal: true });
114
124
  emit({ type: 'attachFailed', instanceId, code, message });
115
125
  };
126
+ const giveUp = (instanceId, attachment, code, message) => {
127
+ forget(instanceId, attachment);
128
+ reportGivenUp(instanceId, code, message);
129
+ };
116
130
  const scheduleAttachRetry = (instanceId, attachment, reason) => {
117
131
  const delayMs = jittered(attachment.backoffMs);
118
132
  const maxMs = attachment.lastTunnelId === undefined ? ATTACH_FIRST_MAX_BACKOFF_MS : ATTACH_MAX_BACKOFF_MS;
@@ -134,7 +148,8 @@ function runTunnel(options) {
134
148
  const takenOver = async (attachment) => {
135
149
  try {
136
150
  const active = (await (0, destination_tunnel_management_1.getDestinationTunnelStatus)(attachment.url, attachment.token)).active;
137
- return (active?.name === options.name &&
151
+ return (active !== undefined &&
152
+ active.name === tunnelName &&
138
153
  active.state !== 'stopping' &&
139
154
  active.tunnelId !== attachment.lastTunnelId);
140
155
  }
@@ -170,7 +185,7 @@ function runTunnel(options) {
170
185
  retryAfterFailure(instanceId, attachment, 'already_active', 'the previous tunnel is still stopping');
171
186
  return;
172
187
  }
173
- if (active.name !== options.name) {
188
+ if (active.name !== tunnelName) {
174
189
  giveUp(instanceId, attachment, 'instance_busy', 'the instance already has another tunnel');
175
190
  return;
176
191
  }
@@ -204,6 +219,12 @@ function runTunnel(options) {
204
219
  retryAfterFailure(instanceId, attachment, 'not_holder', 'this connector does not hold the tunnel');
205
220
  return;
206
221
  }
222
+ // A token past its life is refused; the API sends a fresh one at half
223
+ // life, so this only waits while the control channel is down.
224
+ if (!tokenUsable(attachment)) {
225
+ retryAfterFailure(instanceId, attachment, 'token_expired', 'waiting for a fresh attach token');
226
+ return;
227
+ }
207
228
  let tunnel;
208
229
  try {
209
230
  if (attachment.lastTunnelId !== undefined && (await takenOver(attachment))) {
@@ -214,7 +235,7 @@ function runTunnel(options) {
214
235
  }
215
236
  if (attachment.done)
216
237
  return;
217
- tunnel = await (0, destination_tunnel_dialer_1.startDestinationTcpTunnel)((0, destination_tunnel_url_1.deriveDestinationTunnelURL)(attachment.url), attachment.token, dialOptions);
238
+ tunnel = await (0, destination_tunnel_dialer_1.startDestinationTcpTunnel)((0, destination_tunnel_url_1.deriveDestinationTunnelURL)(attachment.url), attachment.token, dialOptions(attachment));
218
239
  }
219
240
  catch (error) {
220
241
  if (attachment.done)
@@ -268,17 +289,26 @@ function runTunnel(options) {
268
289
  if (stopped)
269
290
  return;
270
291
  switch (message.type) {
271
- case 'active':
292
+ case 'active': {
272
293
  replace = false;
273
294
  leaseExpiresAt = Date.now() + message.leaseSeconds * 1000;
274
295
  controlBackoffMs = CONTROL_INITIAL_BACKOFF_MS;
275
296
  sessionId = message.sessionId;
297
+ tunnelName = message.name;
276
298
  announcedHolder = undefined;
277
299
  if (announcedSession !== message.sessionId) {
278
300
  announcedSession = message.sessionId;
279
- emit({ type: 'active', sessionId: message.sessionId });
301
+ emit({ type: 'active', sessionId: message.sessionId, name: message.name });
302
+ }
303
+ const now = Date.now();
304
+ if (message.tokenExpiresAt !== undefined &&
305
+ Date.parse(message.tokenExpiresAt) - now < TOKEN_WARNING_WINDOW_MS &&
306
+ now - lastTokenWarning >= TOKEN_WARNING_EVERY_MS) {
307
+ lastTokenWarning = now;
308
+ emit({ type: 'tokenExpiring', expiresAt: message.tokenExpiresAt });
280
309
  }
281
310
  return;
311
+ }
282
312
  case 'standby': {
283
313
  leaseExpiresAt = 0;
284
314
  controlBackoffMs = CONTROL_INITIAL_BACKOFF_MS;
@@ -291,20 +321,47 @@ function runTunnel(options) {
291
321
  }
292
322
  return;
293
323
  }
324
+ case 'token': {
325
+ // A fresh token at half its life, or after a resume. An instance this
326
+ // connector gave up on stays given up.
327
+ const attachment = instances.get(message.instanceId);
328
+ if (attachment) {
329
+ attachment.token = message.token;
330
+ attachment.tokenExpiresAt = Date.now() + message.expiresInSeconds * 1000;
331
+ }
332
+ return;
333
+ }
294
334
  case 'attach': {
335
+ // Expiry is relative, so this host's clock never matters.
336
+ const tokenExpiresAt = Date.now() + message.expiresInSeconds * 1000;
295
337
  const existing = instances.get(message.instanceId);
296
338
  if (existing) {
297
- // Resume replays attaches; a live tunnel only needs confirming.
339
+ // A new holder session re-attaches every instance, including ones
340
+ // this connector still serves; a live tunnel only needs confirming.
341
+ // The instance keeps the selectors it first got.
298
342
  existing.url = message.url;
299
343
  existing.token = message.token;
344
+ existing.tokenExpiresAt = tokenExpiresAt;
300
345
  if (existing.tunnel) {
301
346
  send({ type: 'attached', instanceId: message.instanceId, tunnelId: existing.tunnel.tunnelId });
302
347
  }
303
348
  return;
304
349
  }
350
+ // The instance itself refuses what its platform cannot route, such
351
+ // as Android routes below port 1024.
352
+ let selectors;
353
+ try {
354
+ selectors = (0, destination_tunnel_1.validateDestinationTunnelSelectors)(message.selectors);
355
+ }
356
+ catch (error) {
357
+ reportGivenUp(message.instanceId, 'invalid_selectors', errorMessage(error));
358
+ return;
359
+ }
305
360
  const attachment = {
306
361
  url: message.url,
307
362
  token: message.token,
363
+ tokenExpiresAt,
364
+ selectors,
308
365
  mayReclaim: true,
309
366
  failingSince: Date.now(),
310
367
  backoffMs: ATTACH_INITIAL_BACKOFF_MS,
@@ -367,7 +424,7 @@ function runTunnel(options) {
367
424
  return;
368
425
  const proxyAgent = proxy_transport_1.nodeProxyTransport.getWebSocketAgent(controlURL);
369
426
  const socket = new ws_1.WebSocket(controlURL, {
370
- headers: { Authorization: `Bearer ${options.apiKey}` },
427
+ headers: { Authorization: `Bearer ${options.token}` },
371
428
  ...(proxyAgent ? { agent: proxyAgent } : {}),
372
429
  perMessageDeflate: false,
373
430
  // A stalled upgrade, such as after a laptop wakes, would otherwise
@@ -399,7 +456,6 @@ function runTunnel(options) {
399
456
  send({
400
457
  type: 'hello',
401
458
  version: CONTROL_PROTOCOL_VERSION,
402
- selectors,
403
459
  replace,
404
460
  ...(sessionId === undefined ? {} : { sessionId }),
405
461
  attached: Array.from(instances)
@@ -500,11 +556,13 @@ function decodeControlServerMessage(value) {
500
556
  const type = (0, destination_tunnel_wire_reader_1.readString)(message, 'type');
501
557
  switch (type) {
502
558
  case 'active': {
503
- const leaseSeconds = (0, destination_tunnel_wire_reader_1.readInteger)(message, 'leaseSeconds');
504
- if (leaseSeconds < 1) {
505
- throw new destination_tunnel_wire_reader_1.DestinationTunnelProtocolError('leaseSeconds must be positive');
506
- }
507
- return { type, sessionId: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'sessionId'), leaseSeconds };
559
+ return {
560
+ type,
561
+ sessionId: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'sessionId'),
562
+ leaseSeconds: (0, destination_tunnel_wire_reader_1.readPositiveInteger)(message, 'leaseSeconds'),
563
+ name: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'name'),
564
+ ...(0, destination_tunnel_wire_reader_1.readOptionalString)(message, 'tokenExpiresAt'),
565
+ };
508
566
  }
509
567
  case 'standby': {
510
568
  const holder = (0, destination_tunnel_wire_reader_1.readRecord)(message['holder'], 'holder');
@@ -518,7 +576,16 @@ function decodeControlServerMessage(value) {
518
576
  type,
519
577
  instanceId: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'instanceId'),
520
578
  url: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'url'),
579
+ selectors: (0, destination_tunnel_wire_reader_1.readStringArray)(message, 'selectors'),
580
+ token: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'token'),
581
+ expiresInSeconds: (0, destination_tunnel_wire_reader_1.readPositiveInteger)(message, 'expiresInSeconds'),
582
+ };
583
+ case 'token':
584
+ return {
585
+ type,
586
+ instanceId: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'instanceId'),
521
587
  token: (0, destination_tunnel_wire_reader_1.readNonEmptyString)(message, 'token'),
588
+ expiresInSeconds: (0, destination_tunnel_wire_reader_1.readPositiveInteger)(message, 'expiresInSeconds'),
522
589
  };
523
590
  case 'detach':
524
591
  return {
@@ -547,7 +614,7 @@ function revokedMessage(reason) {
547
614
  case 'deleted':
548
615
  return 'the tunnel was deleted';
549
616
  case 'credential':
550
- return 'the API key was revoked';
617
+ return 'its tunnel token was rotated, revoked or has expired';
551
618
  default:
552
619
  return `the tunnel was revoked (${reason})`;
553
620
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel-connector.js","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tunnel-connector.js","sourceRoot":"","sources":["src/tunnel-connector.ts"],"names":[],"mappings":"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"}