@bian-womp/spark-remote 0.2.82 → 0.2.84

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.
@@ -1,6 +1,7 @@
1
1
  import type { GraphDefinition, RegistryDescriptor, RuntimeSnapshot, RuntimeSnapshotFull, Envelope, RunnerOptions, RuntimeHistoryInfo, Viewport } from "@bian-womp/spark-protocol";
2
2
  import { RemoteEngine } from "./RemoteEngine";
3
3
  import type { TransportConnectOptions } from "./transport/Transport";
4
+ import { WebSocketTransportConnectOptions } from "./transport/WebSocketTransport";
4
5
  export type RemoteClientConfig = {
5
6
  kind: "remote-http";
6
7
  baseUrl: string;
@@ -8,7 +9,7 @@ export type RemoteClientConfig = {
8
9
  } | {
9
10
  kind: "remote-ws";
10
11
  url: string;
11
- connectOptions?: TransportConnectOptions;
12
+ connectOptions?: WebSocketTransportConnectOptions;
12
13
  } | {
13
14
  kind: "remote-unix";
14
15
  socketPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeApiClient.d.ts","sourceRoot":"","sources":["../../../src/RuntimeApiClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RuntimeApiClient.d.ts","sourceRoot":"","sources":["../../../src/RuntimeApiClient.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export * from "./transport/Transport";
2
2
  export * from "./transport/WebSocketTransport";
3
+ export * from "./transport/WebSocketConnector";
3
4
  export * from "./transport/HttpPollingTransport";
4
5
  export * from "./server/errors";
5
6
  export * from "./server/runtime";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/Transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,CACzC,MAAM,EACN,MAAM,GAAG,MAAM,GAAG,SAAS,CAC5B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EACpC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
1
+ {"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/Transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,CACzC,MAAM,EACN,MAAM,GAAG,MAAM,GAAG,SAAS,CAC5B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EACpC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC1D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * WebSocket event handlers for connection lifecycle events.
3
+ */
4
+ export interface WebSocketHandlers {
5
+ onopen?: (ev: Event) => void;
6
+ onmessage?: (ev: MessageEvent) => void;
7
+ onerror?: (ev: Event) => void;
8
+ onclose?: (ev: CloseEvent) => void;
9
+ }
10
+ /**
11
+ * Parameters for establishing a WebSocket connection.
12
+ */
13
+ export interface WebSocketConnectParams {
14
+ /**
15
+ * WebSocket URL (ws:// or wss://)
16
+ */
17
+ url: string;
18
+ /**
19
+ * Query parameters to append to the URL.
20
+ * Values are converted to strings; undefined/null values are filtered out.
21
+ */
22
+ params?: Record<string, string | number | boolean | null | undefined>;
23
+ /**
24
+ * If true, skip authentication (don't append token to URL).
25
+ */
26
+ noAuth?: boolean;
27
+ }
28
+ /**
29
+ * Generic WebSocket type that can be either browser WebSocket or Node.js WebSocket.
30
+ * This allows the connector to work in both environments.
31
+ */
32
+ export type GenericWebSocket = WebSocket | {
33
+ readyState: number;
34
+ send(data: string | ArrayBuffer | Blob): void;
35
+ close(code?: number, reason?: string): void;
36
+ onopen: ((ev: Event) => void) | null;
37
+ onmessage: ((ev: MessageEvent) => void) | null;
38
+ onerror: ((ev: Event) => void) | null;
39
+ onclose: ((ev: CloseEvent) => void) | null;
40
+ on?(event: string, handler: () => void): void;
41
+ off?(event: string, handler: () => void): void;
42
+ ping?(): void;
43
+ terminate?(): void;
44
+ };
45
+ /**
46
+ * Interface for establishing WebSocket connections with optional authentication handling.
47
+ *
48
+ * This allows transports to delegate connection establishment to external systems
49
+ * that handle authentication, token refresh, and retry logic (e.g., runSocket in swan-frontend).
50
+ *
51
+ * The connector should:
52
+ * 1. Build the final URL with query parameters
53
+ * 2. Establish the WebSocket connection
54
+ * 3. Set up the provided event handlers
55
+ * 4. Return the WebSocket instance once connected
56
+ * 5. Handle authentication errors (e.g., 4401) and retry with refreshed tokens
57
+ *
58
+ * @param params Connection parameters (URL, query params, auth flag)
59
+ * @param handlers Event handlers to attach to the WebSocket
60
+ * @returns Promise resolving to the connected WebSocket instance
61
+ */
62
+ export type WebSocketConnector = (params: WebSocketConnectParams, handlers: WebSocketHandlers) => Promise<GenericWebSocket>;
63
+ //# sourceMappingURL=WebSocketConnector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketConnector.d.ts","sourceRoot":"","sources":["../../../../src/transport/WebSocketConnector.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACtE;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT;IACE,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC9C,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC/C,IAAI,CAAC,IAAI,IAAI,CAAC;IACd,SAAS,CAAC,IAAI,IAAI,CAAC;CACpB,CAAC;AAEN;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAC/B,MAAM,EAAE,sBAAsB,EAC9B,QAAQ,EAAE,iBAAiB,KACxB,OAAO,CAAC,gBAAgB,CAAC,CAAC"}
@@ -1,5 +1,19 @@
1
1
  import type { Envelope } from "@bian-womp/spark-protocol";
2
2
  import type { Transport, TransportConnectOptions } from "./Transport";
3
+ import type { WebSocketConnector } from "./WebSocketConnector";
4
+ /**
5
+ * WebSocket transport connection options.
6
+ * Allows extensions to pass domain-specific parameters (e.g., flowId).
7
+ */
8
+ export interface WebSocketTransportConnectOptions extends TransportConnectOptions {
9
+ /**
10
+ * Optional WebSocket connector for WebSocketTransport.
11
+ * If provided, WebSocketTransport will use this connector instead of
12
+ * creating WebSocket connections directly. This allows external systems
13
+ * to handle authentication, token refresh, and retry logic.
14
+ */
15
+ connector?: WebSocketConnector;
16
+ }
3
17
  export declare class WebSocketTransport implements Transport {
4
18
  private ws?;
5
19
  private listeners;
@@ -12,10 +26,14 @@ export declare class WebSocketTransport implements Transport {
12
26
  private readonly PONG_TIMEOUT_MS;
13
27
  private onConnectionLost?;
14
28
  private pongHandler?;
29
+ private connector?;
15
30
  constructor(url: string, options?: {
16
31
  onConnectionLost?: () => void;
32
+ connector?: WebSocketConnector;
17
33
  });
18
- connect(options?: TransportConnectOptions): Promise<void>;
34
+ connect(options?: WebSocketTransportConnectOptions): Promise<void>;
35
+ private connectWithConnector;
36
+ private connectDirect;
19
37
  private startHeartbeat;
20
38
  private stopHeartbeat;
21
39
  request<TReq = unknown, TRes = unknown>(msg: Envelope<TReq>): Promise<Envelope<TRes>>;
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocketTransport.d.ts","sourceRoot":"","sources":["../../../../src/transport/WebSocketTransport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAQtE,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,GAAG,CAAsB;IAEjC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,gBAAgB,CAAC,CAAa;IACtC,OAAO,CAAC,WAAW,CAAC,CAAa;gBAErB,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE;IAK9D,OAAO,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8C/D,OAAO,CAAC,cAAc;IAmDtB,OAAO,CAAC,aAAa;IAgBf,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EAC1C,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAe1B,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI;IAK/C,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAKnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
1
+ {"version":3,"file":"WebSocketTransport.d.ts","sourceRoot":"","sources":["../../../../src/transport/WebSocketTransport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D;;;GAGG;AACH,MAAM,WAAW,gCACf,SAAQ,uBAAuB;IAC/B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAOD,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,GAAG,CAAsB;IAEjC,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,gBAAgB,CAAC,CAAa;IACtC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,SAAS,CAAC,CAAqB;gBAGrC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QACR,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;QAC9B,SAAS,CAAC,EAAE,kBAAkB,CAAC;KAChC;IAOG,OAAO,CAAC,OAAO,CAAC,EAAE,gCAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;YAa1D,oBAAoB;YAkEpB,aAAa;IA+C3B,OAAO,CAAC,cAAc;IAmDtB,OAAO,CAAC,aAAa;IAgBf,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EAC1C,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAClB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAe1B,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI;IAK/C,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAKnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
package/lib/esm/index.js CHANGED
@@ -29,10 +29,78 @@ class WebSocketTransport {
29
29
  this.PONG_TIMEOUT_MS = 10000;
30
30
  this.baseUrl = url;
31
31
  this.onConnectionLost = options?.onConnectionLost;
32
+ this.connector = options?.connector;
32
33
  }
33
34
  async connect(options) {
34
35
  if (this.ws && this.ws.readyState === OPEN)
35
36
  return;
37
+ // Use connector if provided (e.g., from runSocket), otherwise use direct connection
38
+ const connector = options?.connector || this.connector;
39
+ if (connector) {
40
+ await this.connectWithConnector(connector, options);
41
+ }
42
+ else {
43
+ await this.connectDirect(options);
44
+ }
45
+ }
46
+ async connectWithConnector(connector, options) {
47
+ // Build base URL
48
+ let url;
49
+ if (this.baseUrl.startsWith("ws://") || this.baseUrl.startsWith("wss://")) {
50
+ url = new URL(this.baseUrl);
51
+ }
52
+ else {
53
+ const wsBaseUrl = this.baseUrl.replace(/^http/, "ws");
54
+ url = new URL(wsBaseUrl);
55
+ }
56
+ // Convert params to the format expected by WebSocketConnector
57
+ const params = {};
58
+ if (options?.params) {
59
+ for (const [key, value] of Object.entries(options.params)) {
60
+ if (value !== undefined && value !== null) {
61
+ params[key] = value;
62
+ }
63
+ }
64
+ }
65
+ // Use connector to establish connection
66
+ // The connector handles auth, token refresh, and retries
67
+ const connectedWs = await connector({
68
+ url: url.toString(),
69
+ params,
70
+ noAuth: false,
71
+ }, {
72
+ onopen: () => {
73
+ // Heartbeat will be started after connection is established
74
+ this.startHeartbeat();
75
+ },
76
+ onmessage: (ev) => {
77
+ // Forward messages to listeners
78
+ try {
79
+ const env = JSON.parse(String(ev.data));
80
+ for (const l of Array.from(this.listeners))
81
+ l(env);
82
+ }
83
+ catch { }
84
+ },
85
+ onerror: () => {
86
+ // Errors are handled by the connector (retry logic, etc.)
87
+ },
88
+ onclose: () => {
89
+ // Stop heartbeat on close
90
+ this.stopHeartbeat();
91
+ },
92
+ });
93
+ if (!connectedWs) {
94
+ throw new Error("Connector did not return a WebSocket instance");
95
+ }
96
+ this.ws = connectedWs;
97
+ // Ensure heartbeat is started (in case onopen wasn't called)
98
+ if (this.ws && this.ws.readyState === OPEN) {
99
+ this.startHeartbeat();
100
+ }
101
+ }
102
+ async connectDirect(options) {
103
+ // Original direct connection logic (fallback when no connector provided)
36
104
  let url;
37
105
  if (this.baseUrl.startsWith("ws://") || this.baseUrl.startsWith("wss://")) {
38
106
  url = new URL(this.baseUrl);
@@ -909,6 +977,7 @@ class RuntimeApiClient {
909
977
  console.warn("[RuntimeApiClient] Error disposing on connection loss:", err);
910
978
  });
911
979
  },
980
+ connector: this.config.connectOptions?.connector,
912
981
  });
913
982
  }
914
983
  else if (kind === "remote-unix") {