@ironflow/browser 0.1.0-test.2
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/README.md +70 -0
- package/dist/client.d.ts +171 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +443 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +87 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +53 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/subscription.d.ts +85 -0
- package/dist/subscription.d.ts.map +1 -0
- package/dist/subscription.js +263 -0
- package/dist/subscription.js.map +1 -0
- package/dist/transport/connectrpc.d.ts +60 -0
- package/dist/transport/connectrpc.d.ts.map +1 -0
- package/dist/transport/connectrpc.js +298 -0
- package/dist/transport/connectrpc.js.map +1 -0
- package/dist/transport/index.d.ts +7 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +6 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/types.d.ts +65 -0
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/transport/types.js +5 -0
- package/dist/transport/types.js.map +1 -0
- package/dist/transport/websocket.d.ts +38 -0
- package/dist/transport/websocket.d.ts.map +1 -0
- package/dist/transport/websocket.js +240 -0
- package/dist/transport/websocket.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConnectRPC transport implementation for browser
|
|
3
|
+
*
|
|
4
|
+
* Uses @connectrpc/connect-web for browser-compatible gRPC communication.
|
|
5
|
+
*/
|
|
6
|
+
import type { ConnectionState, SubscribeOptions as CoreSubscribeOptions, AckType } from "@ironflow/core";
|
|
7
|
+
import type { Transport, TransportCallbacks, TransportOptions } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* ConnectRPC-based transport for browser subscriptions
|
|
10
|
+
*
|
|
11
|
+
* Uses server streaming for auto-ack mode subscriptions.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ConnectRPCTransport implements Transport {
|
|
14
|
+
private readonly serverUrl;
|
|
15
|
+
private readonly options;
|
|
16
|
+
private callbacks?;
|
|
17
|
+
private webTransport;
|
|
18
|
+
private client;
|
|
19
|
+
private _connectionState;
|
|
20
|
+
private reconnectAttempt;
|
|
21
|
+
private reconnectTimer;
|
|
22
|
+
private paused;
|
|
23
|
+
private activeSubscriptions;
|
|
24
|
+
private subscriptionIdCounter;
|
|
25
|
+
constructor(serverUrl: string, options: TransportOptions);
|
|
26
|
+
get connectionState(): ConnectionState;
|
|
27
|
+
setCallbacks(callbacks: TransportCallbacks): void;
|
|
28
|
+
connect(): Promise<void>;
|
|
29
|
+
disconnect(): void;
|
|
30
|
+
subscribe(pattern: string, options?: CoreSubscribeOptions): void;
|
|
31
|
+
unsubscribe(subscriptionId: string): void;
|
|
32
|
+
ack(eventId: string, type: AckType, _delay?: number): Promise<void>;
|
|
33
|
+
pause(): void;
|
|
34
|
+
resume(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Start the subscription stream for a given subscription
|
|
37
|
+
*/
|
|
38
|
+
private startSubscriptionStream;
|
|
39
|
+
/**
|
|
40
|
+
* Convert protobuf event to SDK event
|
|
41
|
+
*/
|
|
42
|
+
private convertProtoEvent;
|
|
43
|
+
/**
|
|
44
|
+
* Handle disconnection
|
|
45
|
+
*/
|
|
46
|
+
private handleDisconnect;
|
|
47
|
+
/**
|
|
48
|
+
* Schedule a reconnection attempt
|
|
49
|
+
*/
|
|
50
|
+
private scheduleReconnect;
|
|
51
|
+
/**
|
|
52
|
+
* Clear the reconnect timer
|
|
53
|
+
*/
|
|
54
|
+
private clearReconnectTimer;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create a ConnectRPC transport for browser
|
|
58
|
+
*/
|
|
59
|
+
export declare function createConnectRPCTransport(serverUrl: string, options: TransportOptions): Transport;
|
|
60
|
+
//# sourceMappingURL=connectrpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectrpc.d.ts","sourceRoot":"","sources":["../../src/transport/connectrpc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,IAAI,oBAAoB,EACxC,OAAO,EAER,MAAM,gBAAgB,CAAC;AAqBxB,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAwClF;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,SAAS,CAAC,CAAqB;IACvC,OAAO,CAAC,YAAY,CAAsD;IAC1E,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,MAAM,CAAS;IAGvB,OAAO,CAAC,mBAAmB,CAA8C;IACzE,OAAO,CAAC,qBAAqB,CAAK;gBAEtB,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB;IAKxD,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAI3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC9B,UAAU,IAAI,IAAI;IAgBlB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAqBhE,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAQnC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzE,KAAK,IAAI,IAAI;IAeb,MAAM,IAAI,IAAI;IAOd;;OAEG;YACW,uBAAuB;IAqErC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAM5B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GACxB,SAAS,CAEX"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConnectRPC transport implementation for browser
|
|
3
|
+
*
|
|
4
|
+
* Uses @connectrpc/connect-web for browser-compatible gRPC communication.
|
|
5
|
+
*/
|
|
6
|
+
import { createClient } from "@connectrpc/connect";
|
|
7
|
+
import { createConnectTransport as createWebTransport } from "@connectrpc/connect-web";
|
|
8
|
+
import { create } from "@bufbuild/protobuf";
|
|
9
|
+
import { PubSubService, calculateBackoff, } from "@ironflow/core";
|
|
10
|
+
import { SubscribeRequestSchema, SubscribeOptionsSchema, AckMode as ProtoAckMode, BackpressureMode as ProtoBackpressureMode, } from "@ironflow/core/gen";
|
|
11
|
+
/**
|
|
12
|
+
* Convert SDK ack mode to protobuf enum
|
|
13
|
+
*/
|
|
14
|
+
function toProtoAckMode(mode) {
|
|
15
|
+
switch (mode) {
|
|
16
|
+
case "manual":
|
|
17
|
+
return ProtoAckMode.MANUAL;
|
|
18
|
+
case "auto":
|
|
19
|
+
default:
|
|
20
|
+
return ProtoAckMode.AUTO;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Convert SDK backpressure mode to protobuf enum
|
|
25
|
+
*/
|
|
26
|
+
function toProtoBackpressureMode(mode) {
|
|
27
|
+
switch (mode) {
|
|
28
|
+
case "drop":
|
|
29
|
+
return ProtoBackpressureMode.DROP;
|
|
30
|
+
case "block":
|
|
31
|
+
return ProtoBackpressureMode.BLOCK;
|
|
32
|
+
case "buffer":
|
|
33
|
+
default:
|
|
34
|
+
return ProtoBackpressureMode.BUFFER;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* ConnectRPC-based transport for browser subscriptions
|
|
39
|
+
*
|
|
40
|
+
* Uses server streaming for auto-ack mode subscriptions.
|
|
41
|
+
*/
|
|
42
|
+
export class ConnectRPCTransport {
|
|
43
|
+
serverUrl;
|
|
44
|
+
options;
|
|
45
|
+
callbacks;
|
|
46
|
+
webTransport = null;
|
|
47
|
+
client = null;
|
|
48
|
+
_connectionState = "disconnected";
|
|
49
|
+
reconnectAttempt = 0;
|
|
50
|
+
reconnectTimer = null;
|
|
51
|
+
paused = false;
|
|
52
|
+
// Subscription tracking
|
|
53
|
+
activeSubscriptions = new Map();
|
|
54
|
+
subscriptionIdCounter = 0;
|
|
55
|
+
constructor(serverUrl, options) {
|
|
56
|
+
this.serverUrl = serverUrl;
|
|
57
|
+
this.options = options;
|
|
58
|
+
}
|
|
59
|
+
get connectionState() {
|
|
60
|
+
return this._connectionState;
|
|
61
|
+
}
|
|
62
|
+
setCallbacks(callbacks) {
|
|
63
|
+
this.callbacks = callbacks;
|
|
64
|
+
}
|
|
65
|
+
async connect() {
|
|
66
|
+
if (this._connectionState === "connected") {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (this.paused) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this._connectionState = "connecting";
|
|
73
|
+
this.callbacks?.onConnectionChange("connecting");
|
|
74
|
+
try {
|
|
75
|
+
// Create ConnectRPC transport for web
|
|
76
|
+
this.webTransport = createWebTransport({
|
|
77
|
+
baseUrl: this.serverUrl,
|
|
78
|
+
});
|
|
79
|
+
// Create the PubSub client
|
|
80
|
+
// Type assertion needed due to connect-es v1/v2 type mismatch
|
|
81
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
82
|
+
this.client = createClient(PubSubService, this.webTransport);
|
|
83
|
+
// Mark as connected
|
|
84
|
+
this._connectionState = "connected";
|
|
85
|
+
this.reconnectAttempt = 0;
|
|
86
|
+
this.callbacks?.onConnectionChange("connected");
|
|
87
|
+
// Resubscribe all pending subscriptions
|
|
88
|
+
for (const [id, sub] of this.activeSubscriptions) {
|
|
89
|
+
this.startSubscriptionStream(id, sub);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
this._connectionState = "disconnected";
|
|
94
|
+
this.callbacks?.onConnectionChange("disconnected");
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
disconnect() {
|
|
99
|
+
this.clearReconnectTimer();
|
|
100
|
+
this.paused = false;
|
|
101
|
+
// Abort all active subscriptions
|
|
102
|
+
for (const sub of this.activeSubscriptions.values()) {
|
|
103
|
+
sub.abortController.abort();
|
|
104
|
+
}
|
|
105
|
+
this.webTransport = null;
|
|
106
|
+
this.client = null;
|
|
107
|
+
this._connectionState = "disconnected";
|
|
108
|
+
this.activeSubscriptions.clear();
|
|
109
|
+
this.callbacks?.onConnectionChange("disconnected");
|
|
110
|
+
}
|
|
111
|
+
subscribe(pattern, options) {
|
|
112
|
+
const subscriptionId = `crpc-sub-${++this.subscriptionIdCounter}`;
|
|
113
|
+
// Create abort controller for this subscription
|
|
114
|
+
const abortController = new AbortController();
|
|
115
|
+
// Track the subscription
|
|
116
|
+
const activeSub = {
|
|
117
|
+
pattern,
|
|
118
|
+
options,
|
|
119
|
+
abortController,
|
|
120
|
+
};
|
|
121
|
+
this.activeSubscriptions.set(subscriptionId, activeSub);
|
|
122
|
+
// Start streaming if connected
|
|
123
|
+
if (this._connectionState === "connected") {
|
|
124
|
+
this.startSubscriptionStream(subscriptionId, activeSub);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
unsubscribe(subscriptionId) {
|
|
128
|
+
const sub = this.activeSubscriptions.get(subscriptionId);
|
|
129
|
+
if (sub) {
|
|
130
|
+
sub.abortController.abort();
|
|
131
|
+
this.activeSubscriptions.delete(subscriptionId);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async ack(eventId, type, _delay) {
|
|
135
|
+
// Manual acks are not yet supported in the browser transport
|
|
136
|
+
// The server streaming only supports auto-ack mode
|
|
137
|
+
// Bidirectional streaming would be needed for manual acks
|
|
138
|
+
throw new Error(`Manual acknowledgments are not yet supported in the browser transport. ` +
|
|
139
|
+
`Cannot send ${type} for event ${eventId}. ` +
|
|
140
|
+
`Use ackMode: "auto" (default) or use WebSocket transport for manual acks.`);
|
|
141
|
+
}
|
|
142
|
+
pause() {
|
|
143
|
+
this.paused = true;
|
|
144
|
+
this.clearReconnectTimer();
|
|
145
|
+
// Abort all active streams
|
|
146
|
+
for (const sub of this.activeSubscriptions.values()) {
|
|
147
|
+
sub.abortController.abort();
|
|
148
|
+
// Create new abort controller for resume
|
|
149
|
+
sub.abortController = new AbortController();
|
|
150
|
+
}
|
|
151
|
+
this._connectionState = "disconnected";
|
|
152
|
+
this.callbacks?.onConnectionChange("disconnected");
|
|
153
|
+
}
|
|
154
|
+
resume() {
|
|
155
|
+
this.paused = false;
|
|
156
|
+
this.connect().catch(() => {
|
|
157
|
+
// Will retry via reconnect logic
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Start the subscription stream for a given subscription
|
|
162
|
+
*/
|
|
163
|
+
async startSubscriptionStream(subscriptionId, sub) {
|
|
164
|
+
if (!this.client)
|
|
165
|
+
return;
|
|
166
|
+
try {
|
|
167
|
+
// Build subscribe request using protobuf create()
|
|
168
|
+
const request = create(SubscribeRequestSchema, {
|
|
169
|
+
pattern: sub.pattern,
|
|
170
|
+
options: create(SubscribeOptionsSchema, {
|
|
171
|
+
replay: sub.options?.replay ?? 0,
|
|
172
|
+
includeMetadata: sub.options?.includeMetadata ?? false,
|
|
173
|
+
filter: sub.options?.filter ?? "",
|
|
174
|
+
namespace: sub.options?.namespace ?? "default",
|
|
175
|
+
consumerGroup: sub.options?.consumerGroup ?? "",
|
|
176
|
+
ackMode: toProtoAckMode(sub.options?.ackMode),
|
|
177
|
+
backpressure: toProtoBackpressureMode(sub.options?.backpressure),
|
|
178
|
+
}),
|
|
179
|
+
});
|
|
180
|
+
// Notify subscription started
|
|
181
|
+
sub.subscriptionId = subscriptionId;
|
|
182
|
+
this.callbacks?.onSubscribed(sub.pattern, subscriptionId);
|
|
183
|
+
// Start server streaming
|
|
184
|
+
const stream = this.client.subscribe(request, {
|
|
185
|
+
signal: sub.abortController.signal,
|
|
186
|
+
});
|
|
187
|
+
// Process events from the stream
|
|
188
|
+
for await (const event of stream) {
|
|
189
|
+
// Check if subscription was cancelled
|
|
190
|
+
if (!this.activeSubscriptions.has(subscriptionId)) {
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
// Convert protobuf event to SDK event
|
|
194
|
+
const subscriptionEvent = this.convertProtoEvent(event);
|
|
195
|
+
// Invoke callback
|
|
196
|
+
this.callbacks?.onEvent(subscriptionId, subscriptionEvent);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
// Ignore abort errors
|
|
201
|
+
if (error.name === "AbortError") {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
// Check if subscription still exists
|
|
205
|
+
if (!this.activeSubscriptions.has(subscriptionId)) {
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
// Handle connection errors
|
|
209
|
+
this.callbacks?.onError(subscriptionId, {
|
|
210
|
+
subscriptionId,
|
|
211
|
+
code: "STREAM_ERROR",
|
|
212
|
+
message: error.message,
|
|
213
|
+
retrying: this.options.autoReconnect,
|
|
214
|
+
});
|
|
215
|
+
// Trigger reconnect if enabled
|
|
216
|
+
if (this.options.autoReconnect && this._connectionState === "connected") {
|
|
217
|
+
this.handleDisconnect();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Convert protobuf event to SDK event
|
|
223
|
+
*/
|
|
224
|
+
convertProtoEvent(event) {
|
|
225
|
+
// Convert timestamp - protobuf Timestamp has seconds and nanos fields
|
|
226
|
+
let timestamp = new Date().toISOString();
|
|
227
|
+
if (event.metadata?.timestamp) {
|
|
228
|
+
const ts = event.metadata.timestamp;
|
|
229
|
+
// Timestamp has seconds (bigint) and nanos (number)
|
|
230
|
+
const ms = Number(ts.seconds) * 1000 + Math.floor(ts.nanos / 1000000);
|
|
231
|
+
timestamp = new Date(ms).toISOString();
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
topic: event.topic,
|
|
235
|
+
data: (event.data ?? {}),
|
|
236
|
+
meta: event.metadata
|
|
237
|
+
? {
|
|
238
|
+
timestamp,
|
|
239
|
+
sequence: Number(event.sequence),
|
|
240
|
+
}
|
|
241
|
+
: undefined,
|
|
242
|
+
eventId: event.eventId,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Handle disconnection
|
|
247
|
+
*/
|
|
248
|
+
handleDisconnect() {
|
|
249
|
+
const wasConnected = this._connectionState === "connected";
|
|
250
|
+
this._connectionState = "disconnected";
|
|
251
|
+
if (wasConnected) {
|
|
252
|
+
this.callbacks?.onConnectionChange("disconnected");
|
|
253
|
+
}
|
|
254
|
+
// Schedule reconnection if enabled
|
|
255
|
+
if (this.options.autoReconnect && !this.paused) {
|
|
256
|
+
this.scheduleReconnect();
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Schedule a reconnection attempt
|
|
261
|
+
*/
|
|
262
|
+
scheduleReconnect() {
|
|
263
|
+
if (this.reconnectTimer || this.paused) {
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
this._connectionState = "reconnecting";
|
|
267
|
+
this.callbacks?.onConnectionChange("reconnecting");
|
|
268
|
+
this.reconnectAttempt++;
|
|
269
|
+
const delay = calculateBackoff(this.reconnectAttempt, this.options.reconnectDelay, this.options.maxReconnectDelay, this.options.reconnectBackoff);
|
|
270
|
+
this.reconnectTimer = setTimeout(() => {
|
|
271
|
+
this.reconnectTimer = null;
|
|
272
|
+
// Reset abort controllers for reconnect
|
|
273
|
+
for (const sub of this.activeSubscriptions.values()) {
|
|
274
|
+
sub.abortController = new AbortController();
|
|
275
|
+
}
|
|
276
|
+
this.connect().catch(() => {
|
|
277
|
+
// Will trigger another reconnect via handleDisconnect
|
|
278
|
+
this.handleDisconnect();
|
|
279
|
+
});
|
|
280
|
+
}, delay);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Clear the reconnect timer
|
|
284
|
+
*/
|
|
285
|
+
clearReconnectTimer() {
|
|
286
|
+
if (this.reconnectTimer) {
|
|
287
|
+
clearTimeout(this.reconnectTimer);
|
|
288
|
+
this.reconnectTimer = null;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Create a ConnectRPC transport for browser
|
|
294
|
+
*/
|
|
295
|
+
export function createConnectRPCTransport(serverUrl, options) {
|
|
296
|
+
return new ConnectRPCTransport(serverUrl, options);
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=connectrpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectrpc.js","sourceRoot":"","sources":["../../src/transport/connectrpc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport layer exports
|
|
3
|
+
*/
|
|
4
|
+
export type { Transport, TransportCallbacks, TransportFactory, TransportOptions, } from "./types.js";
|
|
5
|
+
export { WebSocketTransport, createWebSocketTransport } from "./websocket.js";
|
|
6
|
+
export { ConnectRPCTransport, createConnectRPCTransport } from "./connectrpc.js";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport layer type definitions
|
|
3
|
+
*/
|
|
4
|
+
import type { SubscriptionEvent, SubscriptionErrorInfo, ConnectionState, SubscribeOptions, AckType } from "@ironflow/core";
|
|
5
|
+
/**
|
|
6
|
+
* Transport callbacks
|
|
7
|
+
*/
|
|
8
|
+
export interface TransportCallbacks {
|
|
9
|
+
/** Called when an event is received */
|
|
10
|
+
onEvent: (subscriptionId: string, event: SubscriptionEvent) => void;
|
|
11
|
+
/** Called when a subscription error occurs */
|
|
12
|
+
onError: (subscriptionId: string, error: SubscriptionErrorInfo) => void;
|
|
13
|
+
/** Called when connection state changes */
|
|
14
|
+
onConnectionChange: (state: ConnectionState) => void;
|
|
15
|
+
/** Called when a subscription is confirmed */
|
|
16
|
+
onSubscribed: (pattern: string, subscriptionId: string) => void;
|
|
17
|
+
/** Called when a subscription fails */
|
|
18
|
+
onSubscribeFailed: (pattern: string, error: Error) => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Transport interface for subscription connections
|
|
22
|
+
*/
|
|
23
|
+
export interface Transport {
|
|
24
|
+
/** Current connection state */
|
|
25
|
+
readonly connectionState: ConnectionState;
|
|
26
|
+
/** Connect to the server */
|
|
27
|
+
connect(): Promise<void>;
|
|
28
|
+
/** Disconnect from the server */
|
|
29
|
+
disconnect(): void;
|
|
30
|
+
/** Subscribe to a pattern */
|
|
31
|
+
subscribe(pattern: string, options?: SubscribeOptions): void;
|
|
32
|
+
/** Unsubscribe from a subscription */
|
|
33
|
+
unsubscribe(subscriptionId: string): void;
|
|
34
|
+
/** Send acknowledgment for an event */
|
|
35
|
+
ack(eventId: string, type: AckType, delay?: number): Promise<void>;
|
|
36
|
+
/** Set callbacks */
|
|
37
|
+
setCallbacks(callbacks: TransportCallbacks): void;
|
|
38
|
+
/** Pause the connection (for tab visibility) */
|
|
39
|
+
pause(): void;
|
|
40
|
+
/** Resume the connection */
|
|
41
|
+
resume(): void;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Transport factory function type
|
|
45
|
+
*/
|
|
46
|
+
export type TransportFactory = (serverUrl: string, options: TransportOptions) => Transport;
|
|
47
|
+
/**
|
|
48
|
+
* Transport options
|
|
49
|
+
*/
|
|
50
|
+
export interface TransportOptions {
|
|
51
|
+
/** Authentication headers */
|
|
52
|
+
auth?: {
|
|
53
|
+
apiKey?: string;
|
|
54
|
+
token?: string;
|
|
55
|
+
};
|
|
56
|
+
/** Auto-reconnect enabled */
|
|
57
|
+
autoReconnect: boolean;
|
|
58
|
+
/** Initial reconnect delay */
|
|
59
|
+
reconnectDelay: number;
|
|
60
|
+
/** Max reconnect delay */
|
|
61
|
+
maxReconnectDelay: number;
|
|
62
|
+
/** Reconnect backoff multiplier */
|
|
63
|
+
reconnectBackoff: number;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transport/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,OAAO,EACR,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpE,8CAA8C;IAC9C,OAAO,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACxE,2CAA2C;IAC3C,kBAAkB,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACrD,8CAA8C;IAC9C,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,uCAAuC;IACvC,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,+BAA+B;IAC/B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE1C,4BAA4B;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB,iCAAiC;IACjC,UAAU,IAAI,IAAI,CAAC;IAEnB,6BAA6B;IAC7B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAE7D,sCAAsC;IACtC,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1C,uCAAuC;IACvC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE,oBAAoB;IACpB,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAElD,gDAAgD;IAChD,KAAK,IAAI,IAAI,CAAC;IAEd,4BAA4B;IAC5B,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,KACtB,SAAS,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,6BAA6B;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mCAAmC;IACnC,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/transport/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocket transport implementation
|
|
3
|
+
*/
|
|
4
|
+
import type { ConnectionState, SubscribeOptions, AckType } from "@ironflow/core";
|
|
5
|
+
import type { Transport, TransportCallbacks, TransportOptions } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* WebSocket-based transport for subscriptions
|
|
8
|
+
*/
|
|
9
|
+
export declare class WebSocketTransport implements Transport {
|
|
10
|
+
private readonly wsUrl;
|
|
11
|
+
private readonly options;
|
|
12
|
+
private callbacks?;
|
|
13
|
+
private ws;
|
|
14
|
+
private _connectionState;
|
|
15
|
+
private reconnectAttempt;
|
|
16
|
+
private reconnectTimer;
|
|
17
|
+
private paused;
|
|
18
|
+
private pendingSubscriptions;
|
|
19
|
+
constructor(serverUrl: string, options: TransportOptions);
|
|
20
|
+
get connectionState(): ConnectionState;
|
|
21
|
+
setCallbacks(callbacks: TransportCallbacks): void;
|
|
22
|
+
connect(): Promise<void>;
|
|
23
|
+
disconnect(): void;
|
|
24
|
+
subscribe(pattern: string, options?: SubscribeOptions): void;
|
|
25
|
+
unsubscribe(subscriptionId: string): void;
|
|
26
|
+
ack(eventId: string, type: AckType, delay?: number): Promise<void>;
|
|
27
|
+
pause(): void;
|
|
28
|
+
resume(): void;
|
|
29
|
+
private sendSubscribe;
|
|
30
|
+
private handleMessage;
|
|
31
|
+
private scheduleReconnect;
|
|
32
|
+
private clearReconnectTimer;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a WebSocket transport
|
|
36
|
+
*/
|
|
37
|
+
export declare function createWebSocketTransport(serverUrl: string, options: TransportOptions): Transport;
|
|
38
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,OAAO,EAER,MAAM,gBAAgB,CAAC;AASxB,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElF;;GAEG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,SAAS,CAAC,CAAqB;IACvC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,oBAAoB,CAAwD;gBAExE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB;IAKxD,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI;IAI3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgE9B,UAAU,IAAI,IAAI;IAclB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAQ5D,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAYnC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxE,KAAK,IAAI,IAAI;IAab,MAAM,IAAI,IAAI;IAOd,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,aAAa;IA4DrB,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,mBAAmB;CAM5B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GACxB,SAAS,CAEX"}
|