drishti-sdk 0.2.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.
@@ -0,0 +1,362 @@
1
+ import { DEFAULT_BASE_URL } from "./client.js";
2
+ import { MarketStackWebSocketError } from "./errors.js";
3
+ import { ALPHA_WS_PRODUCTS, } from "./websocket-types.js";
4
+ export { ALPHA_WS_PRODUCTS, } from "./websocket-types.js";
5
+ function normalizeSymbols(symbols) {
6
+ const seen = new Set();
7
+ for (const symbol of symbols ?? []) {
8
+ const token = String(symbol).trim().toUpperCase();
9
+ seen.add(token);
10
+ }
11
+ return Array.from(seen);
12
+ }
13
+ export function buildWebSocketUrl(baseUrl, apiKey) {
14
+ const base = baseUrl.replace(/\/+$/, "");
15
+ const wsBase = base.replace(/^https:/, "wss:").replace(/^http:/, "ws:");
16
+ const url = new URL(`${wsBase}/v1/ws`);
17
+ if (apiKey) {
18
+ url.searchParams.set("api_key", apiKey);
19
+ }
20
+ return url.toString();
21
+ }
22
+ export function parseWebSocketMessage(raw) {
23
+ let payload;
24
+ try {
25
+ payload = JSON.parse(raw);
26
+ }
27
+ catch {
28
+ return { kind: "error", message: "Invalid JSON" };
29
+ }
30
+ if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
31
+ return { kind: "error", message: "Expected a JSON object" };
32
+ }
33
+ const record = payload;
34
+ if (record.status === "subscribed") {
35
+ const symbols = Array.isArray(record.symbols)
36
+ ? record.symbols.map((item) => String(item))
37
+ : [];
38
+ return {
39
+ kind: "subscribed",
40
+ product: String(record.product ?? ""),
41
+ tier: String(record.tier ?? ""),
42
+ fullFeed: Boolean(record.full_feed),
43
+ symbols,
44
+ detailed: record.detailed !== false,
45
+ };
46
+ }
47
+ if (record.error !== undefined) {
48
+ return {
49
+ kind: "error",
50
+ message: String(record.error),
51
+ code: record.code === undefined || record.code === null ? undefined : String(record.code),
52
+ };
53
+ }
54
+ if (record.channel !== undefined) {
55
+ const channel = String(record.channel);
56
+ const data = record.data;
57
+ if (data && typeof data === "object" && !Array.isArray(data)) {
58
+ if (isAlphaWebSocketProduct(channel)) {
59
+ return {
60
+ kind: "data",
61
+ channel,
62
+ data: data,
63
+ };
64
+ }
65
+ return {
66
+ kind: "data",
67
+ channel,
68
+ data: data,
69
+ };
70
+ }
71
+ if (isAlphaWebSocketProduct(channel)) {
72
+ return {
73
+ kind: "data",
74
+ channel,
75
+ data: { raw: data },
76
+ };
77
+ }
78
+ return {
79
+ kind: "data",
80
+ channel,
81
+ data: { raw: data },
82
+ };
83
+ }
84
+ return { kind: "raw", payload: record };
85
+ }
86
+ function isAlphaWebSocketProduct(value) {
87
+ return ALPHA_WS_PRODUCTS.includes(value);
88
+ }
89
+ function subscribeMessage(options) {
90
+ return JSON.stringify({
91
+ op: "subscribe",
92
+ product: options.product,
93
+ symbols: normalizeSymbols(options.symbols),
94
+ detailed: options.detailed !== false,
95
+ });
96
+ }
97
+ export class AlphaWebSocketSession {
98
+ apiKey;
99
+ baseUrl;
100
+ headers;
101
+ webSocketImpl;
102
+ autoReconnect;
103
+ reconnectInitialDelayMs;
104
+ reconnectMaxDelayMs;
105
+ reconnectBackoffMultiplier;
106
+ reconnectJitterRatio;
107
+ onOpen;
108
+ onClose;
109
+ onReconnectAttempt;
110
+ handlers = new Map();
111
+ subscriptions = new Map();
112
+ socket = null;
113
+ queue = [];
114
+ waiters = [];
115
+ closed = false;
116
+ manuallyClosed = false;
117
+ reconnecting = false;
118
+ constructor(options) {
119
+ if (!options.apiKey || options.apiKey.trim().length === 0) {
120
+ throw new Error("AlphaWebSocketSession requires a non-empty apiKey");
121
+ }
122
+ this.apiKey = options.apiKey;
123
+ this.baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;
124
+ this.headers = { ...(options.headers ?? {}) };
125
+ this.webSocketImpl = options.webSocketImpl ?? WebSocket;
126
+ this.autoReconnect = options.autoReconnect ?? false;
127
+ this.reconnectInitialDelayMs = Math.max(100, options.reconnectInitialDelayMs ?? 1_000);
128
+ this.reconnectMaxDelayMs = Math.max(this.reconnectInitialDelayMs, options.reconnectMaxDelayMs ?? 30_000);
129
+ this.reconnectBackoffMultiplier = Math.max(1, options.reconnectBackoffMultiplier ?? 2);
130
+ this.reconnectJitterRatio = Math.min(1, Math.max(0, options.reconnectJitterRatio ?? 0.2));
131
+ this.onOpen = options.onOpen;
132
+ this.onClose = options.onClose;
133
+ this.onReconnectAttempt = options.onReconnectAttempt;
134
+ if (options.onSubscribed) {
135
+ this.on("subscribed", options.onSubscribed);
136
+ }
137
+ if (options.onData) {
138
+ this.on("data", options.onData);
139
+ }
140
+ if (options.onError) {
141
+ this.on("error", options.onError);
142
+ }
143
+ if (options.onMessage) {
144
+ this.on("message", options.onMessage);
145
+ }
146
+ }
147
+ get connected() {
148
+ return this.socket !== null && this.socket.readyState === this.webSocketImpl.OPEN;
149
+ }
150
+ on(eventName, handler) {
151
+ const existing = this.handlers.get(eventName) ?? [];
152
+ existing.push(handler);
153
+ this.handlers.set(eventName, existing);
154
+ }
155
+ async connect() {
156
+ if (this.connected) {
157
+ return;
158
+ }
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?.();
165
+ }
166
+ async openSocket() {
167
+ const url = buildWebSocketUrl(this.baseUrl);
168
+ const socket = this.createSocket(url);
169
+ await new Promise((resolve, reject) => {
170
+ const onOpen = () => {
171
+ cleanup();
172
+ resolve();
173
+ };
174
+ const onError = () => {
175
+ cleanup();
176
+ reject(new MarketStackWebSocketError("WebSocket connection failed"));
177
+ };
178
+ const cleanup = () => {
179
+ socket.removeEventListener("open", onOpen);
180
+ socket.removeEventListener("error", onError);
181
+ };
182
+ socket.addEventListener("open", onOpen);
183
+ socket.addEventListener("error", onError);
184
+ });
185
+ this.attachSocketHandlers(socket);
186
+ return socket;
187
+ }
188
+ attachSocketHandlers(socket) {
189
+ socket.addEventListener("message", (messageEvent) => {
190
+ const raw = typeof messageEvent.data === "string" ? messageEvent.data : String(messageEvent.data);
191
+ void this.handleIncoming(raw);
192
+ });
193
+ socket.addEventListener("close", () => {
194
+ this.socket = null;
195
+ void this.onClose?.("WebSocket closed");
196
+ if (this.manuallyClosed) {
197
+ this.closed = true;
198
+ this.rejectWaiters("WebSocket closed");
199
+ return;
200
+ }
201
+ if (!this.autoReconnect) {
202
+ this.closed = true;
203
+ this.rejectWaiters("WebSocket closed");
204
+ return;
205
+ }
206
+ void this.reconnectLoop("WebSocket closed");
207
+ });
208
+ }
209
+ createSocket(url) {
210
+ const impl = this.webSocketImpl;
211
+ const headers = { ...this.headers, "X-API-Key": this.apiKey };
212
+ try {
213
+ return new impl(url, undefined, { headers });
214
+ }
215
+ 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));
219
+ }
220
+ }
221
+ async close() {
222
+ this.manuallyClosed = true;
223
+ this.reconnecting = false;
224
+ if (this.socket === null) {
225
+ this.closed = true;
226
+ this.rejectWaiters("WebSocket closed");
227
+ return;
228
+ }
229
+ this.closed = true;
230
+ this.socket.close();
231
+ this.socket = null;
232
+ this.rejectWaiters("WebSocket closed");
233
+ }
234
+ async subscribe(options) {
235
+ this.subscriptions.set(options.product, {
236
+ product: options.product,
237
+ symbols: normalizeSymbols(options.symbols),
238
+ detailed: options.detailed !== false,
239
+ });
240
+ if (!this.connected || this.socket === null) {
241
+ throw new MarketStackWebSocketError("WebSocket is not connected; call connect() first");
242
+ }
243
+ this.socket.send(subscribeMessage(options));
244
+ }
245
+ async dispatch(event) {
246
+ const names = [event.kind, "message"];
247
+ for (const name of names) {
248
+ const handlers = this.handlers.get(name) ?? [];
249
+ for (const handler of handlers) {
250
+ await handler(event);
251
+ }
252
+ }
253
+ }
254
+ async handleIncoming(raw) {
255
+ const event = parseWebSocketMessage(raw);
256
+ await this.dispatch(event);
257
+ const waiter = this.waiters.shift();
258
+ if (waiter) {
259
+ waiter.resolve(event);
260
+ return;
261
+ }
262
+ this.queue.push(event);
263
+ }
264
+ rejectWaiters(message) {
265
+ const error = new MarketStackWebSocketError(message);
266
+ while (this.waiters.length > 0) {
267
+ this.waiters.shift()?.reject(error);
268
+ }
269
+ }
270
+ async resubscribeAll() {
271
+ if (!this.connected || this.socket === null) {
272
+ return;
273
+ }
274
+ for (const options of this.subscriptions.values()) {
275
+ this.socket.send(subscribeMessage(options));
276
+ }
277
+ }
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
+ withJitter(delayMs) {
305
+ if (this.reconnectJitterRatio <= 0) {
306
+ return delayMs;
307
+ }
308
+ const spread = Math.floor(delayMs * this.reconnectJitterRatio);
309
+ const offset = Math.floor(Math.random() * (spread * 2 + 1)) - spread;
310
+ return Math.max(0, delayMs + offset);
311
+ }
312
+ async nextEvent() {
313
+ const queued = this.queue.shift();
314
+ if (queued) {
315
+ return queued;
316
+ }
317
+ if (this.closed) {
318
+ throw new MarketStackWebSocketError("WebSocket closed");
319
+ }
320
+ return await new Promise((resolve, reject) => {
321
+ this.waiters.push({ resolve, reject });
322
+ });
323
+ }
324
+ async *events() {
325
+ if (!this.connected) {
326
+ throw new MarketStackWebSocketError("WebSocket is not connected; call connect() first");
327
+ }
328
+ while (!this.closed) {
329
+ yield await this.nextEvent();
330
+ }
331
+ }
332
+ async run() {
333
+ for await (const _event of this.events()) {
334
+ // Callbacks run during handleIncoming; keep the read loop alive.
335
+ }
336
+ }
337
+ }
338
+ export async function* streamProduct(options) {
339
+ const session = new AlphaWebSocketSession({
340
+ apiKey: options.apiKey,
341
+ baseUrl: options.baseUrl,
342
+ headers: options.headers,
343
+ webSocketImpl: options.webSocketImpl,
344
+ });
345
+ await session.connect();
346
+ try {
347
+ await session.subscribe({
348
+ product: options.product,
349
+ symbols: options.symbols,
350
+ detailed: options.detailed,
351
+ });
352
+ for await (const event of session.events()) {
353
+ if (event.kind === "data") {
354
+ yield event.data;
355
+ }
356
+ }
357
+ }
358
+ finally {
359
+ await session.close();
360
+ }
361
+ }
362
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "drishti-sdk",
3
+ "version": "0.2.0",
4
+ "description": "TypeScript/JavaScript client for the Alpha API (/v1)",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "sideEffects": false,
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js"
13
+ }
14
+ },
15
+ "keywords": [
16
+ "alpha-api",
17
+ "sdk",
18
+ "typescript",
19
+ "javascript",
20
+ "http-client"
21
+ ],
22
+ "author": "Manasija",
23
+ "files": [
24
+ "dist",
25
+ "README.md",
26
+ "LICENSE"
27
+ ],
28
+ "scripts": {
29
+ "build": "tsc",
30
+ "prepublishOnly": "npm run build"
31
+ },
32
+ "engines": {
33
+ "node": ">=18"
34
+ },
35
+ "devDependencies": {
36
+ "typescript": "~5.6.0"
37
+ },
38
+ "license": "MIT",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "git+https://github.com/manasijatech/Market-Stack-SDK.git"
42
+ }
43
+ }