drishti-sdk 0.2.13 → 1.0.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/README.md CHANGED
@@ -159,7 +159,6 @@ import { DrishtiClient } from "drishti-sdk";
159
159
  const client = new DrishtiClient({ apiKey: process.env.DRISHTI_API_KEY! });
160
160
  const ws = client.websocket();
161
161
 
162
- await ws.connect();
163
162
  await ws.subscribe({ product: "announcements", symbols: ["RELIANCE"], detailed: false });
164
163
 
165
164
  for await (const event of ws.events()) {
@@ -173,7 +172,7 @@ for await (const event of ws.events()) {
173
172
  }
174
173
  ```
175
174
 
176
- ### Callback style with reconnect
175
+ ### Callback style
177
176
 
178
177
  ```ts
179
178
  import { DrishtiClient } from "drishti-sdk";
@@ -181,7 +180,6 @@ import { DrishtiClient } from "drishti-sdk";
181
180
  const client = new DrishtiClient({ apiKey: process.env.DRISHTI_API_KEY! });
182
181
 
183
182
  const ws = client.websocket({
184
- autoReconnect: true,
185
183
  reconnectInitialDelayMs: 1000,
186
184
  reconnectMaxDelayMs: 30000,
187
185
  onReconnectAttempt: (attempt, delayMs, reason) => {
@@ -190,13 +188,32 @@ const ws = client.websocket({
190
188
  onData: (event) => {
191
189
  if (event.kind === "data") console.log(event.channel, event.data);
192
190
  },
191
+ onAnnouncements: (announcement) => {
192
+ console.log("announcement", announcement);
193
+ },
194
+ onAlerts: (alert) => {
195
+ console.log("alert", alert);
196
+ },
193
197
  });
194
198
 
195
- await ws.connect();
196
199
  await ws.subscribe({ product: "alerts", symbols: ["RELIANCE"] });
197
- await ws.run();
200
+ // callbacks fire as events arrive; the session reconnects automatically
198
201
  ```
199
202
 
203
+ Channel-specific listeners can be registered after connect:
204
+
205
+ ```ts
206
+ const onAnnouncement = (announcement: Record<string, unknown>) => {
207
+ console.log("announcement", announcement);
208
+ };
209
+
210
+ ws.onAnnouncements(onAnnouncement);
211
+ ws.off("announcements", onAnnouncement);
212
+ ```
213
+
214
+ The same channels are also available via `ws.on("announcements", handler)`.
215
+ `onData` still receives every data event across all channels.
216
+
200
217
  Direct import is also supported:
201
218
 
202
219
  ```ts
@@ -221,23 +238,34 @@ Supported subscription products:
221
238
 
222
239
  Useful session options:
223
240
 
224
- - `autoReconnect`
225
241
  - `reconnectInitialDelayMs`
226
242
  - `reconnectMaxDelayMs`
227
243
  - `reconnectBackoffMultiplier`
228
244
  - `reconnectJitterRatio`
245
+ - `reconnectWarnAfterAttempts`
229
246
  - `onSubscribed`
230
247
  - `onData`
248
+ - `onNews`
249
+ - `onAnnouncements`
250
+ - `onEarnings`
251
+ - `onConcalls`
252
+ - `onAlerts`
231
253
  - `onError`
232
254
  - `onMessage`
233
255
  - `onOpen`
234
256
  - `onClose`
235
257
  - `onReconnectAttempt`
258
+ - `onReconnectWarning`
259
+
260
+ The session connects automatically when created and keeps retrying in the
261
+ background after disconnects. Connection failures are retried with backoff; a
262
+ warning is logged (or `onReconnectWarning` is called) after repeated failures,
263
+ then retries continue indefinitely until `close()` is called.
236
264
 
237
265
  Subscription messages accept an object shaped like
238
266
  `{ product, symbols?, detailed? }`. Symbols are normalized to uppercase and
239
- de-duplicated before the message is sent. When auto reconnect is enabled, the
240
- session re-subscribes after reconnecting.
267
+ de-duplicated before the message is sent. Subscriptions are replayed after
268
+ every reconnect.
241
269
 
242
270
  Event shapes:
243
271
 
package/dist/index.d.ts CHANGED
@@ -6,5 +6,5 @@ export { serializeAnnouncementsQueryParams, serializeQueryParams } from "./param
6
6
  export { DrishtiApiError, DrishtiWebSocketError } from "./errors.js";
7
7
  export type { ApiErrorBody } from "./errors.js";
8
8
  export { DRISHTI_WS_PRODUCTS, DrishtiWebSocketSession, buildWebSocketUrl, parseWebSocketMessage, streamProduct, } from "./websocket.js";
9
- export type { DrishtiWebSocketProduct, DrishtiWebSocketSessionOptions, DataEvent, DataPayloadByChannel, ErrorEvent, KnownDataEvent, RawEvent, SubscribeOptions, SubscribedEvent, UnknownDataEvent, WebSocketEvent, WebSocketHandler, } from "./websocket.js";
9
+ export type { ChannelDataHandler, DrishtiWebSocketProduct, DrishtiWebSocketSessionOptions, DataEvent, DataPayloadByChannel, ErrorEvent, KnownDataEvent, RawEvent, SubscribeOptions, SubscribedEvent, UnknownDataEvent, WebSocketEvent, WebSocketHandler, } from "./websocket.js";
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,mBAAmB,YAAY,CAAC;AAChC,mBAAmB,aAAa,CAAC;AACjC,OAAO,EAAE,iCAAiC,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,uBAAuB,EACvB,8BAA8B,EAC9B,SAAS,EACT,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,mBAAmB,YAAY,CAAC;AAChC,mBAAmB,aAAa,CAAC;AACjC,OAAO,EAAE,iCAAiC,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,8BAA8B,EAC9B,SAAS,EACT,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GACjB,MAAM,gBAAgB,CAAC"}
@@ -45,4 +45,5 @@ export type RawEvent = Readonly<{
45
45
  }>;
46
46
  export type WebSocketEvent = SubscribedEvent | DataEvent | ErrorEvent | RawEvent;
47
47
  export type WebSocketHandler = (event: WebSocketEvent) => void | Promise<void>;
48
+ export type ChannelDataHandler<K extends DrishtiWebSocketProduct> = (data: DataPayloadByChannel[K]) => void | Promise<void>;
48
49
  //# sourceMappingURL=websocket-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"websocket-types.d.ts","sourceRoot":"","sources":["../src/websocket-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,EACP,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,mBAAmB,sEAMtB,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,kBAAkB,GAAG,oBAAoB,CAAC;IACzD,QAAQ,EAAE,cAAc,GAAG,gBAAgB,CAAC;IAC5C,QAAQ,EAAE,OAAO,GAAG,eAAe,CAAC;IACpC,MAAM,EAAE,KAAK,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,uBAAuB,GAAG,QAAQ,CAAC;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;KAC/B,CAAC;CACH,CAAC,uBAAuB,CAAC,CAAC;AAE3B,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAC9B,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEjF,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"websocket-types.d.ts","sourceRoot":"","sources":["../src/websocket-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,kBAAkB,EAClB,oBAAoB,EACpB,OAAO,EACP,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,mBAAmB,sEAMtB,CAAC;AAEX,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3E,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,kBAAkB,GAAG,oBAAoB,CAAC;IACzD,QAAQ,EAAE,cAAc,GAAG,gBAAgB,CAAC;IAC5C,QAAQ,EAAE,OAAO,GAAG,eAAe,CAAC;IACpC,MAAM,EAAE,KAAK,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,uBAAuB,GAAG,QAAQ,CAAC;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;KAC/B,CAAC;CACH,CAAC,uBAAuB,CAAC,CAAC;AAE3B,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,QAAQ,CAAC;IAC9B,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEjF,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/E,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,uBAAuB,IAAI,CAClE,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,KAC1B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -1,22 +1,28 @@
1
- import type { DrishtiWebSocketProduct, SubscribeOptions, WebSocketEvent, WebSocketHandler } from "./websocket-types.js";
2
- export { DRISHTI_WS_PRODUCTS, type DrishtiWebSocketProduct, type DataEvent, type DataPayloadByChannel, type ErrorEvent, type KnownDataEvent, type RawEvent, type SubscribeOptions, type SubscribedEvent, type UnknownDataEvent, type WebSocketEvent, type WebSocketHandler, } from "./websocket-types.js";
1
+ import type { ChannelDataHandler, DrishtiWebSocketProduct, SubscribeOptions, WebSocketEvent, WebSocketHandler } from "./websocket-types.js";
2
+ export { DRISHTI_WS_PRODUCTS, type DrishtiWebSocketProduct, type DataEvent, type DataPayloadByChannel, type ErrorEvent, type KnownDataEvent, type RawEvent, type SubscribeOptions, type SubscribedEvent, type UnknownDataEvent, type ChannelDataHandler, type WebSocketEvent, type WebSocketHandler, } from "./websocket-types.js";
3
3
  export type DrishtiWebSocketSessionOptions = Readonly<{
4
4
  apiKey: string;
5
5
  baseUrl?: string;
6
6
  headers?: Record<string, string>;
7
7
  webSocketImpl?: typeof WebSocket;
8
- autoReconnect?: boolean;
9
8
  reconnectInitialDelayMs?: number;
10
9
  reconnectMaxDelayMs?: number;
11
10
  reconnectBackoffMultiplier?: number;
12
11
  reconnectJitterRatio?: number;
12
+ reconnectWarnAfterAttempts?: number;
13
13
  onSubscribed?: WebSocketHandler;
14
14
  onData?: WebSocketHandler;
15
+ onNews?: ChannelDataHandler<"news">;
16
+ onAnnouncements?: ChannelDataHandler<"announcements">;
17
+ onEarnings?: ChannelDataHandler<"earnings">;
18
+ onConcalls?: ChannelDataHandler<"concalls">;
19
+ onAlerts?: ChannelDataHandler<"alerts">;
15
20
  onError?: WebSocketHandler;
16
21
  onMessage?: WebSocketHandler;
17
22
  onOpen?: () => void | Promise<void>;
18
23
  onClose?: (reason: string) => void | Promise<void>;
19
24
  onReconnectAttempt?: (attempt: number, delayMs: number, reason: string) => void | Promise<void>;
25
+ onReconnectWarning?: (attempt: number, reason: string) => void | Promise<void>;
20
26
  }>;
21
27
  export declare function buildWebSocketUrl(baseUrl: string, apiKey?: string): string;
22
28
  export declare function parseWebSocketMessage(raw: string): WebSocketEvent;
@@ -25,26 +31,41 @@ export declare class DrishtiWebSocketSession {
25
31
  private readonly baseUrl;
26
32
  private readonly headers;
27
33
  private readonly webSocketImpl;
28
- private readonly autoReconnect;
29
34
  private readonly reconnectInitialDelayMs;
30
35
  private readonly reconnectMaxDelayMs;
31
36
  private readonly reconnectBackoffMultiplier;
32
37
  private readonly reconnectJitterRatio;
38
+ private readonly reconnectWarnAfterAttempts;
33
39
  private readonly onOpen?;
34
40
  private readonly onClose?;
35
41
  private readonly onReconnectAttempt?;
42
+ private readonly onReconnectWarning?;
36
43
  private readonly handlers;
44
+ private readonly channelHandlers;
37
45
  private readonly subscriptions;
38
46
  private socket;
39
47
  private readonly queue;
40
48
  private readonly waiters;
41
- private closed;
42
49
  private manuallyClosed;
43
- private reconnecting;
50
+ private maintainingConnection;
44
51
  constructor(options: DrishtiWebSocketSessionOptions);
45
52
  get connected(): boolean;
46
- on(eventName: string, handler: WebSocketHandler): void;
47
- connect(): Promise<void>;
53
+ on(eventName: "data" | "subscribed" | "error" | "message" | "raw", handler: WebSocketHandler): void;
54
+ on<K extends DrishtiWebSocketProduct>(channel: K, handler: ChannelDataHandler<K>): void;
55
+ off(eventName: "data" | "subscribed" | "error" | "message" | "raw", handler: WebSocketHandler): void;
56
+ off<K extends DrishtiWebSocketProduct>(channel: K, handler: ChannelDataHandler<K>): void;
57
+ onNews(handler: ChannelDataHandler<"news">): void;
58
+ onAnnouncements(handler: ChannelDataHandler<"announcements">): void;
59
+ onEarnings(handler: ChannelDataHandler<"earnings">): void;
60
+ onConcalls(handler: ChannelDataHandler<"concalls">): void;
61
+ onAlerts(handler: ChannelDataHandler<"alerts">): void;
62
+ private addEventListener;
63
+ private removeEventListener;
64
+ private addChannelListener;
65
+ private removeChannelListener;
66
+ private startConnectionMaintenance;
67
+ private maintainConnection;
68
+ private emitReconnectWarning;
48
69
  private openSocket;
49
70
  private attachSocketHandlers;
50
71
  private createSocket;
@@ -54,11 +75,9 @@ export declare class DrishtiWebSocketSession {
54
75
  private handleIncoming;
55
76
  private rejectWaiters;
56
77
  private resubscribeAll;
57
- private reconnectLoop;
58
78
  private withJitter;
59
79
  private nextEvent;
60
80
  events(): AsyncGenerator<WebSocketEvent>;
61
- run(): Promise<void>;
62
81
  }
63
82
  export declare function streamProduct(options: {
64
83
  apiKey: string;
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,uBAAuB,EAEvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjG,CAAC,CAAC;AAWH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA8DjE;AAeD,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAS;IACpD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAA6E;IACjH,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;IAClE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwD;IACtF,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGhB;IACR,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,EAAE,8BAA8B;IA8BnD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAMhD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAYhB,UAAU;IAuBxB,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,YAAY;IAcd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAY3C,QAAQ;YAUR,cAAc;IAW5B,OAAO,CAAC,aAAa;YAOP,cAAc;YASd,aAAa;IA6B3B,OAAO,CAAC,UAAU;YASJ,SAAS;IAahB,MAAM,IAAI,cAAc,CAAC,cAAc,CAAC;IASzC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAK3B;AAED,wBAAuB,aAAa,CAAC,OAAO,EAAE;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;CAClC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsB1C"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EAEvB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,KAAK,uBAAuB,EAC5B,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;IACjC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC5C,UAAU,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChF,CAAC,CAAC;AAWH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ1E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CA8DjE;AAeD,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmB;IACjD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAS;IACpD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAS;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA2C;IACpE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAA6E;IACjH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAA4D;IAChG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;IAClE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqF;IACrH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwD;IACtF,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGhB;IACR,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,qBAAqB,CAAS;gBAE1B,OAAO,EAAE,8BAA8B;IA+CnD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IACnG,EAAE,CAAC,CAAC,SAAS,uBAAuB,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IASvF,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IACpG,GAAG,CAAC,CAAC,SAAS,uBAAuB,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IASxF,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,IAAI;IAIjD,eAAe,CAAC,OAAO,EAAE,kBAAkB,CAAC,eAAe,CAAC,GAAG,IAAI;IAInE,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAAG,IAAI;IAIzD,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAAG,IAAI;IAIzD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAIrD,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,0BAA0B;YAOpB,kBAAkB;YAmClB,oBAAoB;YAUpB,UAAU;IA6BxB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,YAAY;IAad,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAc3C,QAAQ;YAkBR,cAAc;IAW5B,OAAO,CAAC,aAAa;YAOP,cAAc;IAS5B,OAAO,CAAC,UAAU;YASJ,SAAS;IAahB,MAAM,IAAI,cAAc,CAAC,cAAc,CAAC;CAMhD;AAED,wBAAuB,aAAa,CAAC,OAAO,EAAE;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,SAAS,CAAC;CAClC,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqB1C"}
package/dist/websocket.js CHANGED
@@ -99,22 +99,23 @@ export class DrishtiWebSocketSession {
99
99
  baseUrl;
100
100
  headers;
101
101
  webSocketImpl;
102
- autoReconnect;
103
102
  reconnectInitialDelayMs;
104
103
  reconnectMaxDelayMs;
105
104
  reconnectBackoffMultiplier;
106
105
  reconnectJitterRatio;
106
+ reconnectWarnAfterAttempts;
107
107
  onOpen;
108
108
  onClose;
109
109
  onReconnectAttempt;
110
+ onReconnectWarning;
110
111
  handlers = new Map();
112
+ channelHandlers = new Map();
111
113
  subscriptions = new Map();
112
114
  socket = null;
113
115
  queue = [];
114
116
  waiters = [];
115
- closed = false;
116
117
  manuallyClosed = false;
117
- reconnecting = false;
118
+ maintainingConnection = false;
118
119
  constructor(options) {
119
120
  if (!options.apiKey || options.apiKey.trim().length === 0) {
120
121
  throw new Error("DrishtiWebSocketSession requires a non-empty apiKey");
@@ -123,49 +124,151 @@ export class DrishtiWebSocketSession {
123
124
  this.baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;
124
125
  this.headers = { ...(options.headers ?? {}) };
125
126
  this.webSocketImpl = options.webSocketImpl ?? WebSocket;
126
- this.autoReconnect = options.autoReconnect ?? false;
127
127
  this.reconnectInitialDelayMs = Math.max(100, options.reconnectInitialDelayMs ?? 1_000);
128
128
  this.reconnectMaxDelayMs = Math.max(this.reconnectInitialDelayMs, options.reconnectMaxDelayMs ?? 30_000);
129
129
  this.reconnectBackoffMultiplier = Math.max(1, options.reconnectBackoffMultiplier ?? 2);
130
130
  this.reconnectJitterRatio = Math.min(1, Math.max(0, options.reconnectJitterRatio ?? 0.2));
131
+ this.reconnectWarnAfterAttempts = Math.max(1, options.reconnectWarnAfterAttempts ?? 10);
131
132
  this.onOpen = options.onOpen;
132
133
  this.onClose = options.onClose;
133
134
  this.onReconnectAttempt = options.onReconnectAttempt;
135
+ this.onReconnectWarning = options.onReconnectWarning;
134
136
  if (options.onSubscribed) {
135
137
  this.on("subscribed", options.onSubscribed);
136
138
  }
137
139
  if (options.onData) {
138
140
  this.on("data", options.onData);
139
141
  }
142
+ if (options.onNews) {
143
+ this.on("news", options.onNews);
144
+ }
145
+ if (options.onAnnouncements) {
146
+ this.on("announcements", options.onAnnouncements);
147
+ }
148
+ if (options.onEarnings) {
149
+ this.on("earnings", options.onEarnings);
150
+ }
151
+ if (options.onConcalls) {
152
+ this.on("concalls", options.onConcalls);
153
+ }
154
+ if (options.onAlerts) {
155
+ this.on("alerts", options.onAlerts);
156
+ }
140
157
  if (options.onError) {
141
158
  this.on("error", options.onError);
142
159
  }
143
160
  if (options.onMessage) {
144
161
  this.on("message", options.onMessage);
145
162
  }
163
+ this.startConnectionMaintenance("initial");
146
164
  }
147
165
  get connected() {
148
166
  return this.socket !== null && this.socket.readyState === this.webSocketImpl.OPEN;
149
167
  }
150
168
  on(eventName, handler) {
169
+ if (isDrishtiWebSocketProduct(eventName)) {
170
+ this.addChannelListener(eventName, handler);
171
+ return;
172
+ }
173
+ this.addEventListener(eventName, handler);
174
+ }
175
+ off(eventName, handler) {
176
+ if (isDrishtiWebSocketProduct(eventName)) {
177
+ this.removeChannelListener(eventName, handler);
178
+ return;
179
+ }
180
+ this.removeEventListener(eventName, handler);
181
+ }
182
+ onNews(handler) {
183
+ this.addChannelListener("news", handler);
184
+ }
185
+ onAnnouncements(handler) {
186
+ this.addChannelListener("announcements", handler);
187
+ }
188
+ onEarnings(handler) {
189
+ this.addChannelListener("earnings", handler);
190
+ }
191
+ onConcalls(handler) {
192
+ this.addChannelListener("concalls", handler);
193
+ }
194
+ onAlerts(handler) {
195
+ this.addChannelListener("alerts", handler);
196
+ }
197
+ addEventListener(eventName, handler) {
151
198
  const existing = this.handlers.get(eventName) ?? [];
152
199
  existing.push(handler);
153
200
  this.handlers.set(eventName, existing);
154
201
  }
155
- async connect() {
156
- if (this.connected) {
202
+ removeEventListener(eventName, handler) {
203
+ const existing = this.handlers.get(eventName) ?? [];
204
+ const next = existing.filter((item) => item !== handler);
205
+ if (next.length === 0) {
206
+ this.handlers.delete(eventName);
207
+ return;
208
+ }
209
+ this.handlers.set(eventName, next);
210
+ }
211
+ addChannelListener(channel, handler) {
212
+ const existing = this.channelHandlers.get(channel) ?? [];
213
+ existing.push(handler);
214
+ this.channelHandlers.set(channel, existing);
215
+ }
216
+ removeChannelListener(channel, handler) {
217
+ const existing = this.channelHandlers.get(channel) ?? [];
218
+ const next = existing.filter((item) => item !== handler);
219
+ if (next.length === 0) {
220
+ this.channelHandlers.delete(channel);
221
+ return;
222
+ }
223
+ this.channelHandlers.set(channel, next);
224
+ }
225
+ startConnectionMaintenance(reason) {
226
+ if (this.manuallyClosed || this.maintainingConnection || this.connected) {
227
+ return;
228
+ }
229
+ void this.maintainConnection(reason);
230
+ }
231
+ async maintainConnection(reason) {
232
+ if (this.manuallyClosed || this.maintainingConnection || this.connected) {
233
+ return;
234
+ }
235
+ this.maintainingConnection = true;
236
+ let attempt = 0;
237
+ let delay = this.reconnectInitialDelayMs;
238
+ while (!this.manuallyClosed && !this.connected) {
239
+ attempt += 1;
240
+ if (attempt > 1) {
241
+ await this.onReconnectAttempt?.(attempt - 1, delay, reason);
242
+ await new Promise((resolve) => setTimeout(resolve, this.withJitter(delay)));
243
+ }
244
+ try {
245
+ const socket = await this.openSocket();
246
+ this.socket = socket;
247
+ await this.resubscribeAll();
248
+ await this.onOpen?.();
249
+ attempt = 0;
250
+ delay = this.reconnectInitialDelayMs;
251
+ break;
252
+ }
253
+ catch {
254
+ if (delay >= this.reconnectMaxDelayMs && attempt >= this.reconnectWarnAfterAttempts) {
255
+ await this.emitReconnectWarning(attempt, reason);
256
+ attempt = 0;
257
+ }
258
+ delay = Math.min(Math.floor(delay * this.reconnectBackoffMultiplier), this.reconnectMaxDelayMs);
259
+ }
260
+ }
261
+ this.maintainingConnection = false;
262
+ }
263
+ async emitReconnectWarning(attempt, reason) {
264
+ if (this.onReconnectWarning) {
265
+ await this.onReconnectWarning(attempt, reason);
157
266
  return;
158
267
  }
159
- this.manuallyClosed = false;
160
- this.closed = false;
161
- const socket = await this.openSocket();
162
- this.socket = socket;
163
- await this.resubscribeAll();
164
- await this.onOpen?.();
268
+ console.warn(`[drishti-sdk] WebSocket still unable to connect after ${attempt} attempts (${reason}); retrying`);
165
269
  }
166
270
  async openSocket() {
167
- const url = buildWebSocketUrl(this.baseUrl);
168
- const socket = this.createSocket(url);
271
+ const socket = this.createSocket();
169
272
  await new Promise((resolve, reject) => {
170
273
  const onOpen = () => {
171
274
  cleanup();
@@ -175,12 +278,19 @@ export class DrishtiWebSocketSession {
175
278
  cleanup();
176
279
  reject(new DrishtiWebSocketError("WebSocket connection failed"));
177
280
  };
281
+ const onClose = (event) => {
282
+ cleanup();
283
+ const code = "code" in event ? event.code : 0;
284
+ reject(new DrishtiWebSocketError(`WebSocket closed before open (code ${code})`));
285
+ };
178
286
  const cleanup = () => {
179
287
  socket.removeEventListener("open", onOpen);
180
288
  socket.removeEventListener("error", onError);
289
+ socket.removeEventListener("close", onClose);
181
290
  };
182
291
  socket.addEventListener("open", onOpen);
183
292
  socket.addEventListener("error", onError);
293
+ socket.addEventListener("close", onClose);
184
294
  });
185
295
  this.attachSocketHandlers(socket);
186
296
  return socket;
@@ -194,53 +304,46 @@ export class DrishtiWebSocketSession {
194
304
  this.socket = null;
195
305
  void this.onClose?.("WebSocket closed");
196
306
  if (this.manuallyClosed) {
197
- this.closed = true;
198
- this.rejectWaiters("WebSocket closed");
199
- return;
200
- }
201
- if (!this.autoReconnect) {
202
- this.closed = true;
203
307
  this.rejectWaiters("WebSocket closed");
204
308
  return;
205
309
  }
206
- void this.reconnectLoop("WebSocket closed");
310
+ this.startConnectionMaintenance("WebSocket closed");
207
311
  });
208
312
  }
209
- createSocket(url) {
313
+ createSocket() {
314
+ const url = buildWebSocketUrl(this.baseUrl, this.apiKey);
210
315
  const impl = this.webSocketImpl;
211
316
  const headers = { ...this.headers, "X-API-Key": this.apiKey };
212
317
  try {
213
318
  return new impl(url, undefined, { headers });
214
319
  }
215
320
  catch {
216
- // Browser-compatible constructor does not support custom headers.
217
- // Fallback to query-param auth for compatibility.
218
- return new this.webSocketImpl(buildWebSocketUrl(this.baseUrl, this.apiKey));
321
+ return new this.webSocketImpl(url);
219
322
  }
220
323
  }
221
324
  async close() {
222
325
  this.manuallyClosed = true;
223
- this.reconnecting = false;
326
+ this.maintainingConnection = false;
224
327
  if (this.socket === null) {
225
- this.closed = true;
226
328
  this.rejectWaiters("WebSocket closed");
227
329
  return;
228
330
  }
229
- this.closed = true;
230
331
  this.socket.close();
231
332
  this.socket = null;
232
333
  this.rejectWaiters("WebSocket closed");
233
334
  }
234
335
  async subscribe(options) {
235
- this.subscriptions.set(options.product, {
336
+ const normalized = {
236
337
  product: options.product,
237
338
  symbols: normalizeSymbols(options.symbols),
238
339
  detailed: options.detailed !== false,
239
- });
340
+ };
341
+ this.subscriptions.set(options.product, normalized);
342
+ this.startConnectionMaintenance("subscribe");
240
343
  if (!this.connected || this.socket === null) {
241
- throw new DrishtiWebSocketError("WebSocket is not connected; call connect() first");
344
+ return;
242
345
  }
243
- this.socket.send(subscribeMessage(options));
346
+ this.socket.send(subscribeMessage(normalized));
244
347
  }
245
348
  async dispatch(event) {
246
349
  const names = [event.kind, "message"];
@@ -250,6 +353,14 @@ export class DrishtiWebSocketSession {
250
353
  await handler(event);
251
354
  }
252
355
  }
356
+ if (event.kind !== "data" || !isDrishtiWebSocketProduct(event.channel)) {
357
+ return;
358
+ }
359
+ const channelHandlers = this.channelHandlers.get(event.channel) ?? [];
360
+ const payload = event.data;
361
+ for (const handler of channelHandlers) {
362
+ await handler(payload);
363
+ }
253
364
  }
254
365
  async handleIncoming(raw) {
255
366
  const event = parseWebSocketMessage(raw);
@@ -275,32 +386,6 @@ export class DrishtiWebSocketSession {
275
386
  this.socket.send(subscribeMessage(options));
276
387
  }
277
388
  }
278
- async reconnectLoop(reason) {
279
- if (this.reconnecting || this.manuallyClosed) {
280
- return;
281
- }
282
- this.reconnecting = true;
283
- let attempt = 0;
284
- let delay = this.reconnectInitialDelayMs;
285
- while (!this.manuallyClosed) {
286
- attempt += 1;
287
- await this.onReconnectAttempt?.(attempt, delay, reason);
288
- await new Promise((resolve) => setTimeout(resolve, this.withJitter(delay)));
289
- try {
290
- const socket = await this.openSocket();
291
- this.socket = socket;
292
- this.closed = false;
293
- await this.resubscribeAll();
294
- await this.onOpen?.();
295
- this.reconnecting = false;
296
- return;
297
- }
298
- catch {
299
- delay = Math.min(Math.floor(delay * this.reconnectBackoffMultiplier), this.reconnectMaxDelayMs);
300
- }
301
- }
302
- this.reconnecting = false;
303
- }
304
389
  withJitter(delayMs) {
305
390
  if (this.reconnectJitterRatio <= 0) {
306
391
  return delayMs;
@@ -314,7 +399,7 @@ export class DrishtiWebSocketSession {
314
399
  if (queued) {
315
400
  return queued;
316
401
  }
317
- if (this.closed) {
402
+ if (this.manuallyClosed) {
318
403
  throw new DrishtiWebSocketError("WebSocket closed");
319
404
  }
320
405
  return await new Promise((resolve, reject) => {
@@ -322,18 +407,11 @@ export class DrishtiWebSocketSession {
322
407
  });
323
408
  }
324
409
  async *events() {
325
- if (!this.connected) {
326
- throw new DrishtiWebSocketError("WebSocket is not connected; call connect() first");
327
- }
328
- while (!this.closed) {
410
+ this.startConnectionMaintenance("events");
411
+ while (!this.manuallyClosed) {
329
412
  yield await this.nextEvent();
330
413
  }
331
414
  }
332
- async run() {
333
- for await (const _event of this.events()) {
334
- // Callbacks run during handleIncoming; keep the read loop alive.
335
- }
336
- }
337
415
  }
338
416
  export async function* streamProduct(options) {
339
417
  const session = new DrishtiWebSocketSession({
@@ -342,7 +420,6 @@ export async function* streamProduct(options) {
342
420
  headers: options.headers,
343
421
  webSocketImpl: options.webSocketImpl,
344
422
  });
345
- await session.connect();
346
423
  try {
347
424
  await session.subscribe({
348
425
  product: options.product,
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EACL,mBAAmB,GAYpB,MAAM,sBAAsB,CAAC;AAqB9B,SAAS,gBAAgB,CAAC,OAAsC;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,MAAe;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,MAAM,QAAQ,CAAC,CAAC;IACvC,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IAC9D,CAAC;IACD,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC,CAAC,EAAE,CAAC;QACP,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACrC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;YACnC,OAAO;YACP,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,KAAK;SACpC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7B,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;SAC1F,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,OAAO;oBACP,IAAI,EAAE,IAA4C;iBACnD,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,OAAO;gBACP,IAAI,EAAE,IAA+B;aACtC,CAAC;QACJ,CAAC;QACD,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,OAAO;gBACP,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAqD;aACvE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,OAAO;YACP,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;SACpB,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAa;IAC9C,OAAQ,mBAAyC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAyB;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,EAAE,EAAE,WAAW;QACf,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,KAAK;KACrC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,uBAAuB;IACjB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,OAAO,CAAyB;IAChC,aAAa,CAAmB;IAChC,aAAa,CAAU;IACvB,uBAAuB,CAAS;IAChC,mBAAmB,CAAS;IAC5B,0BAA0B,CAAS;IACnC,oBAAoB,CAAS;IAC7B,MAAM,CAA8B;IACpC,OAAO,CAA4C;IACnD,kBAAkB,CAA8E;IAChG,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IACjD,aAAa,GAAG,IAAI,GAAG,EAA6C,CAAC;IAC9E,MAAM,GAAqB,IAAI,CAAC;IACvB,KAAK,GAAqB,EAAE,CAAC;IAC7B,OAAO,GAGnB,EAAE,CAAC;IACA,MAAM,GAAG,KAAK,CAAC;IACf,cAAc,GAAG,KAAK,CAAC;IACvB,YAAY,GAAG,KAAK,CAAC;IAE7B,YAAY,OAAuC;QACjD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;QACpD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,uBAAuB,IAAI,KAAK,CAAC,CAAC;QACvF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,mBAAmB,IAAI,MAAM,CAAC,CAAC;QACzG,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,0BAA0B,IAAI,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,oBAAoB,IAAI,GAAG,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;QACrD,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IACpF,CAAC;IAED,EAAE,CAAC,SAAiB,EAAE,OAAyB;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,MAAM,GAAG,GAAS,EAAE;gBACxB,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,qBAAqB,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC;YACF,MAAM,OAAO,GAAG,GAAS,EAAE;gBACzB,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC3C,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC;YACF,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,oBAAoB,CAAC,MAAiB;QAC5C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,EAAE;YAClD,MAAM,GAAG,GAAG,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAClG,KAAK,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,KAAK,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,GAAW;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,aAEjB,CAAC;QACF,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,kDAAkD;YAClD,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAyB;QACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE;YACtC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;YAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,KAAK;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5C,MAAM,IAAI,qBAAqB,CAAC,kDAAkD,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,KAAqB;QAC1C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,GAAW;QACtC,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAEO,aAAa,CAAC,OAAe;QACnC,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO;QACT,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,MAAc;QACxC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,CAAC;YACb,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YACxD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,OAAO;YACT,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,GAAG,IAAI,CAAC,GAAG,CACd,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,EACnD,IAAI,CAAC,mBAAmB,CACzB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,UAAU,CAAC,OAAe;QAChC,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,EAAE,CAAC;YACnC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,CAAC,MAAM;QACX,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,qBAAqB,CAAC,kDAAkD,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,MAAM,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG;QACP,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACzC,iEAAiE;QACnE,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,aAAa,CAAC,OAQpC;IACC,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC;QAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,SAAS,CAAC;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,MAAM,KAAK,CAAC,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drishti-sdk",
3
- "version": "0.2.13",
3
+ "version": "1.0.0",
4
4
  "description": "TypeScript/JavaScript client for the Drishti API (/v1)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -27,13 +27,15 @@
27
27
  ],
28
28
  "scripts": {
29
29
  "build": "tsc",
30
- "prepublishOnly": "npm run build"
30
+ "prepublishOnly": "npm run build",
31
+ "ws:listen-all": "node scripts/ws-listen-all.mjs"
31
32
  },
32
33
  "engines": {
33
34
  "node": ">=18"
34
35
  },
35
36
  "devDependencies": {
36
- "typescript": "~5.6.0"
37
+ "typescript": "~5.6.0",
38
+ "ws": "^8.21.0"
37
39
  },
38
40
  "license": "MIT",
39
41
  "repository": {