@aerostack/sdk-node 0.8.3 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +2 -2
  2. package/dist/commonjs/__tests__/realtime.test.d.ts +2 -0
  3. package/dist/commonjs/__tests__/realtime.test.d.ts.map +1 -0
  4. package/dist/commonjs/__tests__/realtime.test.js +364 -0
  5. package/dist/commonjs/__tests__/realtime.test.js.map +1 -0
  6. package/dist/commonjs/__tests__/sdk.test.d.ts +2 -0
  7. package/dist/commonjs/__tests__/sdk.test.d.ts.map +1 -0
  8. package/dist/commonjs/__tests__/sdk.test.js +356 -0
  9. package/dist/commonjs/__tests__/sdk.test.js.map +1 -0
  10. package/dist/commonjs/_generated/runtime.d.ts.map +1 -1
  11. package/dist/commonjs/_generated/runtime.js +1 -1
  12. package/dist/commonjs/_generated/runtime.js.map +1 -1
  13. package/dist/commonjs/realtime.d.ts +2 -0
  14. package/dist/commonjs/realtime.d.ts.map +1 -1
  15. package/dist/commonjs/realtime.js +19 -5
  16. package/dist/commonjs/realtime.js.map +1 -1
  17. package/dist/commonjs/sdk.js +1 -1
  18. package/dist/commonjs/sdk.js.map +1 -1
  19. package/dist/esm/__tests__/realtime.test.d.ts +2 -0
  20. package/dist/esm/__tests__/realtime.test.d.ts.map +1 -0
  21. package/dist/esm/__tests__/realtime.test.js +362 -0
  22. package/dist/esm/__tests__/realtime.test.js.map +1 -0
  23. package/dist/esm/__tests__/sdk.test.d.ts +2 -0
  24. package/dist/esm/__tests__/sdk.test.d.ts.map +1 -0
  25. package/dist/esm/__tests__/sdk.test.js +354 -0
  26. package/dist/esm/__tests__/sdk.test.js.map +1 -0
  27. package/dist/esm/_generated/runtime.d.ts.map +1 -1
  28. package/dist/esm/_generated/runtime.js +1 -1
  29. package/dist/esm/_generated/runtime.js.map +1 -1
  30. package/dist/esm/realtime.d.ts +2 -0
  31. package/dist/esm/realtime.d.ts.map +1 -1
  32. package/dist/esm/realtime.js +19 -5
  33. package/dist/esm/realtime.js.map +1 -1
  34. package/dist/esm/sdk.js +1 -1
  35. package/dist/esm/sdk.js.map +1 -1
  36. package/examples/e2e/__tests__/e2e.test.ts +118 -0
  37. package/examples/e2e/package.json +15 -0
  38. package/examples/e2e/vitest.config.ts +8 -0
  39. package/package.json +2 -2
  40. package/src/__tests__/realtime.test.ts +430 -0
  41. package/src/__tests__/sdk.test.ts +412 -0
  42. package/src/_generated/runtime.ts +1 -1
  43. package/src/realtime.ts +17 -3
  44. package/src/sdk.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Node SDK E2E Tests
3
+ *
4
+ * Verifies SDK initialization, facade methods, and streaming.
5
+ * Imports from source since tshy build may not be available.
6
+ */
7
+ import { describe, it, expect, vi } from 'vitest';
8
+
9
+ // Mock the generated SDK APIs that the Node SDK depends on
10
+ vi.mock('../../../src/generated/api.js', () => {
11
+ const makeApi = () => ({
12
+ _serverURL: '',
13
+ _client: { _baseURL: '' },
14
+ listProducts: vi.fn(),
15
+ createProduct: vi.fn(),
16
+ });
17
+ return {
18
+ Auth: vi.fn().mockImplementation(() => makeApi()),
19
+ Ai: vi.fn().mockImplementation(() => makeApi()),
20
+ Database: vi.fn().mockImplementation(() => makeApi()),
21
+ Storage: vi.fn().mockImplementation(() => makeApi()),
22
+ Queue: vi.fn().mockImplementation(() => makeApi()),
23
+ Services: vi.fn().mockImplementation(() => makeApi()),
24
+ Cache: vi.fn().mockImplementation(() => ({
25
+ ...makeApi(),
26
+ cacheGet: vi.fn().mockResolvedValue({ result: '{}' }),
27
+ cacheSet: vi.fn().mockResolvedValue({}),
28
+ cacheDelete: vi.fn().mockResolvedValue({}),
29
+ cacheClear: vi.fn().mockResolvedValue({}),
30
+ cacheList: vi.fn().mockResolvedValue({ result: '[]' }),
31
+ cacheHas: vi.fn().mockResolvedValue({ result: 'true' }),
32
+ cacheIncrement: vi.fn().mockResolvedValue({ result: '1' }),
33
+ cacheDecrement: vi.fn().mockResolvedValue({ result: '0' }),
34
+ cacheTtl: vi.fn().mockResolvedValue({ result: '3600' }),
35
+ cacheExpire: vi.fn().mockResolvedValue({}),
36
+ cachePersist: vi.fn().mockResolvedValue({}),
37
+ cacheSetAdd: vi.fn().mockResolvedValue({}),
38
+ })),
39
+ SDKConfig: vi.fn().mockImplementation(() => ({
40
+ _serverURL: '',
41
+ _client: { _baseURL: '' },
42
+ })),
43
+ };
44
+ });
45
+
46
+ vi.mock('../../../src/generated/models/operations/index.js', () => ({}));
47
+
48
+ const { SDK, Aerostack, createClient } = await import('../../../src/sdk');
49
+ const { NodeRealtimeClient } = await import('../../../src/realtime');
50
+
51
+ describe('Node SDK E2E', () => {
52
+ describe('SDK initialization', () => {
53
+ it('should create SDK instance with default options', () => {
54
+ const sdk = new SDK();
55
+ expect(sdk).toBeDefined();
56
+ expect(sdk.database).toBeDefined();
57
+ expect(sdk.auth).toBeDefined();
58
+ expect(sdk.cache).toBeDefined();
59
+ expect(sdk.queue).toBeDefined();
60
+ expect(sdk.storage).toBeDefined();
61
+ expect(sdk.ai).toBeDefined();
62
+ expect(sdk.services).toBeDefined();
63
+ expect(sdk.gateway).toBeDefined();
64
+ expect(sdk.realtime).toBeDefined();
65
+ expect(sdk.rpc).toBeDefined();
66
+ });
67
+
68
+ it('should create SDK with api key and custom server', () => {
69
+ const sdk = new SDK({
70
+ apiKey: 'ac_secret_test_key',
71
+ serverUrl: 'https://custom.api.com/v1',
72
+ projectId: 'proj-test',
73
+ });
74
+ expect(sdk).toBeDefined();
75
+ });
76
+
77
+ it('should support backward-compat aliases', () => {
78
+ const sdk = new SDK({
79
+ apiKeyAuth: 'ac_secret_test_key',
80
+ serverURL: 'https://custom.api.com/v1',
81
+ });
82
+ expect(sdk).toBeDefined();
83
+ });
84
+
85
+ it('should export Aerostack as deprecated alias', () => {
86
+ expect(Aerostack).toBe(SDK);
87
+ });
88
+
89
+ it('should export createClient factory', () => {
90
+ const sdk = createClient({ apiKey: 'key' });
91
+ expect(sdk).toBeInstanceOf(SDK);
92
+ });
93
+ });
94
+
95
+ describe('setApiKey', () => {
96
+ it('should update API key and recreate services', () => {
97
+ const sdk = new SDK({ apiKey: 'old-key' });
98
+ sdk.setApiKey('new-key');
99
+ expect(sdk.auth).toBeDefined();
100
+ });
101
+ });
102
+
103
+ describe('NodeRealtimeClient export', () => {
104
+ it('should export NodeRealtimeClient', () => {
105
+ expect(NodeRealtimeClient).toBeDefined();
106
+ expect(typeof NodeRealtimeClient).toBe('function');
107
+ });
108
+
109
+ it('should create realtime client', () => {
110
+ const client = new NodeRealtimeClient({
111
+ serverUrl: 'https://api.test.com/v1',
112
+ projectId: 'proj-1',
113
+ });
114
+ expect(client.status).toBe('idle');
115
+ expect(client.connected).toBe(false);
116
+ });
117
+ });
118
+ });
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@aerostack/node-e2e",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "test": "vitest run"
8
+ },
9
+ "dependencies": {
10
+ "@aerostack/sdk-node": "file:../../"
11
+ },
12
+ "devDependencies": {
13
+ "vitest": "^1.0.0"
14
+ }
15
+ }
@@ -0,0 +1,8 @@
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ globals: true,
6
+ environment: 'node',
7
+ },
8
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aerostack/sdk-node",
3
- "version": "0.8.3",
3
+ "version": "0.8.5",
4
4
  "author": "Aerostack",
5
5
  "type": "module",
6
6
  "tshy": {
@@ -31,7 +31,7 @@
31
31
  "ws": "^8.19.0"
32
32
  },
33
33
  "dependencies": {
34
- "@aerostack/core": "^0.8.3",
34
+ "@aerostack/core": "^0.8.5",
35
35
  "zod": "^3.25.0 || ^4.0.0"
36
36
  },
37
37
  "exports": {
@@ -0,0 +1,430 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import { NodeRealtimeClient, RealtimeSubscription } from '../realtime.js';
3
+
4
+ // ─── Mock WebSocket ───────────────────────────────────────────
5
+
6
+ class MockWebSocket {
7
+ static OPEN = 1;
8
+ static CLOSED = 3;
9
+
10
+ url: string;
11
+ readyState = MockWebSocket.OPEN;
12
+ onopen: (() => void) | null = null;
13
+ onmessage: ((event: any) => void) | null = null;
14
+ onclose: (() => void) | null = null;
15
+ onerror: ((err: any) => void) | null = null;
16
+ sent: any[] = [];
17
+
18
+ constructor(url: string) {
19
+ this.url = url;
20
+ setTimeout(() => this.onopen?.(), 0);
21
+ }
22
+
23
+ send(data: string) {
24
+ this.sent.push(JSON.parse(data));
25
+ }
26
+
27
+ close() {
28
+ this.readyState = MockWebSocket.CLOSED;
29
+ setTimeout(() => this.onclose?.(), 0);
30
+ }
31
+ }
32
+
33
+ beforeEach(() => {
34
+ vi.stubGlobal('WebSocket', MockWebSocket);
35
+ vi.stubGlobal('fetch', vi.fn());
36
+ vi.useFakeTimers();
37
+ });
38
+
39
+ afterEach(() => {
40
+ vi.restoreAllMocks();
41
+ vi.useRealTimers();
42
+ });
43
+
44
+ // ─── RealtimeSubscription ─────────────────────────────────────
45
+
46
+ describe('RealtimeSubscription', () => {
47
+ function createSub() {
48
+ const client = new NodeRealtimeClient({
49
+ serverUrl: 'https://api.test.com/v1',
50
+ projectId: 'proj-1',
51
+ });
52
+ const sub = client.channel('users');
53
+ return { client, sub };
54
+ }
55
+
56
+ it('should register and fire callbacks', () => {
57
+ const { sub } = createSub();
58
+ const cb = vi.fn();
59
+ sub.on('INSERT', cb);
60
+
61
+ sub._emit({
62
+ type: 'db_change',
63
+ topic: sub.topic,
64
+ operation: 'INSERT',
65
+ data: { id: 1 },
66
+ });
67
+
68
+ expect(cb).toHaveBeenCalledOnce();
69
+ });
70
+
71
+ it('should support wildcard listener', () => {
72
+ const { sub } = createSub();
73
+ const cb = vi.fn();
74
+ sub.on('*', cb);
75
+
76
+ sub._emit({
77
+ type: 'db_change',
78
+ topic: sub.topic,
79
+ operation: 'DELETE',
80
+ data: { id: 1 },
81
+ });
82
+
83
+ expect(cb).toHaveBeenCalledOnce();
84
+ });
85
+
86
+ it('should support custom event names', () => {
87
+ const { sub } = createSub();
88
+ const cb = vi.fn();
89
+ sub.on('player-moved', cb);
90
+
91
+ sub._emit({
92
+ type: 'event',
93
+ topic: sub.topic,
94
+ event: 'player-moved',
95
+ data: { x: 10 },
96
+ });
97
+
98
+ expect(cb).toHaveBeenCalledOnce();
99
+ });
100
+
101
+ it('should remove callbacks with off()', () => {
102
+ const { sub } = createSub();
103
+ const cb = vi.fn();
104
+ sub.on('INSERT', cb);
105
+ sub.off('INSERT', cb);
106
+
107
+ sub._emit({
108
+ type: 'db_change',
109
+ topic: sub.topic,
110
+ operation: 'INSERT',
111
+ data: {},
112
+ });
113
+
114
+ expect(cb).not.toHaveBeenCalled();
115
+ });
116
+
117
+ it('should be chainable', () => {
118
+ const { sub } = createSub();
119
+ const result = sub.on('INSERT', vi.fn()).on('UPDATE', vi.fn());
120
+ expect(result).toBe(sub);
121
+ });
122
+
123
+ it('should track isSubscribed state', () => {
124
+ const { sub } = createSub();
125
+ expect(sub.isSubscribed).toBe(false);
126
+ sub.subscribe();
127
+ expect(sub.isSubscribed).toBe(true);
128
+ sub.unsubscribe();
129
+ expect(sub.isSubscribed).toBe(false);
130
+ });
131
+
132
+ it('should not send duplicate subscribe', () => {
133
+ const { sub } = createSub();
134
+ sub.subscribe();
135
+ sub.subscribe(); // Should be no-op
136
+ expect(sub.isSubscribed).toBe(true);
137
+ });
138
+
139
+ it('should clear callbacks on unsubscribe', () => {
140
+ const { sub } = createSub();
141
+ const cb = vi.fn();
142
+ sub.on('INSERT', cb);
143
+ sub.subscribe();
144
+ sub.unsubscribe();
145
+
146
+ sub._emit({
147
+ type: 'db_change',
148
+ topic: sub.topic,
149
+ operation: 'INSERT',
150
+ data: {},
151
+ });
152
+
153
+ expect(cb).not.toHaveBeenCalled();
154
+ });
155
+
156
+ it('should publish events', () => {
157
+ const { sub } = createSub();
158
+ sub.publish('custom-event', { key: 'value' }, { persist: true });
159
+ // Should not throw
160
+ });
161
+
162
+ it('should track presence', () => {
163
+ const { sub } = createSub();
164
+ sub.track({ online: true });
165
+ sub.untrack();
166
+ // Should not throw
167
+ });
168
+
169
+ it('should fetch history', async () => {
170
+ const mockFetch = vi.fn().mockResolvedValue({
171
+ json: async () => ({ messages: [{ id: '1' }] }),
172
+ });
173
+ vi.stubGlobal('fetch', mockFetch);
174
+
175
+ const { sub } = createSub();
176
+ const history = await sub.getHistory(10);
177
+ expect(history).toEqual([{ id: '1' }]);
178
+ });
179
+ });
180
+
181
+ // ─── NodeRealtimeClient ───────────────────────────────────────
182
+
183
+ describe('NodeRealtimeClient', () => {
184
+ describe('constructor', () => {
185
+ it('should convert https to wss URL', () => {
186
+ const client = new NodeRealtimeClient({
187
+ serverUrl: 'https://api.test.com/v1',
188
+ projectId: 'proj-1',
189
+ });
190
+ expect(client.status).toBe('idle');
191
+ });
192
+
193
+ it('should start as idle', () => {
194
+ const client = new NodeRealtimeClient({
195
+ serverUrl: 'https://api.test.com/v1',
196
+ projectId: 'proj-1',
197
+ });
198
+ expect(client.status).toBe('idle');
199
+ expect(client.connected).toBe(false);
200
+ });
201
+ });
202
+
203
+ describe('connect', () => {
204
+ it('should connect and set status to connected', async () => {
205
+ const client = new NodeRealtimeClient({
206
+ serverUrl: 'https://api.test.com/v1',
207
+ projectId: 'proj-1',
208
+ });
209
+
210
+ const connectPromise = client.connect();
211
+ await vi.advanceTimersByTimeAsync(10);
212
+ await connectPromise;
213
+
214
+ expect(client.status).toBe('connected');
215
+ expect(client.connected).toBe(true);
216
+ });
217
+
218
+ it('should pass apiKey in URL query params', async () => {
219
+ const client = new NodeRealtimeClient({
220
+ serverUrl: 'https://api.test.com/v1',
221
+ projectId: 'proj-1',
222
+ apiKey: 'my-key',
223
+ token: 'my-token',
224
+ });
225
+
226
+ const connectPromise = client.connect();
227
+ await vi.advanceTimersByTimeAsync(10);
228
+ await connectPromise;
229
+
230
+ expect(client.status).toBe('connected');
231
+ });
232
+
233
+ it('should not create duplicate connections', async () => {
234
+ const client = new NodeRealtimeClient({
235
+ serverUrl: 'https://api.test.com/v1',
236
+ projectId: 'proj-1',
237
+ });
238
+
239
+ const p1 = client.connect();
240
+ const p2 = client.connect();
241
+ await vi.advanceTimersByTimeAsync(10);
242
+ await Promise.all([p1, p2]);
243
+
244
+ expect(client.status).toBe('connected');
245
+ });
246
+ });
247
+
248
+ describe('disconnect', () => {
249
+ it('should disconnect and set status', async () => {
250
+ const client = new NodeRealtimeClient({
251
+ serverUrl: 'https://api.test.com/v1',
252
+ projectId: 'proj-1',
253
+ });
254
+
255
+ const connectPromise = client.connect();
256
+ await vi.advanceTimersByTimeAsync(10);
257
+ await connectPromise;
258
+
259
+ client.disconnect();
260
+ expect(client.status).toBe('disconnected');
261
+ });
262
+
263
+ it('should be safe when not connected', () => {
264
+ const client = new NodeRealtimeClient({
265
+ serverUrl: 'https://api.test.com/v1',
266
+ projectId: 'proj-1',
267
+ });
268
+ client.disconnect();
269
+ expect(client.status).toBe('disconnected');
270
+ });
271
+ });
272
+
273
+ describe('channel', () => {
274
+ it('should qualify topic with projectId', () => {
275
+ const client = new NodeRealtimeClient({
276
+ serverUrl: 'https://api.test.com/v1',
277
+ projectId: 'proj-1',
278
+ });
279
+ const sub = client.channel('users');
280
+ expect(sub.topic).toBe('table/users/proj-1');
281
+ });
282
+
283
+ it('should append projectId to topic with path', () => {
284
+ const client = new NodeRealtimeClient({
285
+ serverUrl: 'https://api.test.com/v1',
286
+ projectId: 'proj-1',
287
+ });
288
+ const sub = client.channel('table/orders');
289
+ expect(sub.topic).toBe('table/orders/proj-1');
290
+ });
291
+
292
+ it('should not double-qualify topics', () => {
293
+ const client = new NodeRealtimeClient({
294
+ serverUrl: 'https://api.test.com/v1',
295
+ projectId: 'proj-1',
296
+ });
297
+ const sub = client.channel('table/users/proj-1');
298
+ expect(sub.topic).toBe('table/users/proj-1');
299
+ });
300
+
301
+ it('should reuse subscriptions for same topic', () => {
302
+ const client = new NodeRealtimeClient({
303
+ serverUrl: 'https://api.test.com/v1',
304
+ projectId: 'proj-1',
305
+ });
306
+ const sub1 = client.channel('users');
307
+ const sub2 = client.channel('users');
308
+ expect(sub1).toBe(sub2);
309
+ });
310
+ });
311
+
312
+ describe('status listeners', () => {
313
+ it('should notify status change listeners', async () => {
314
+ const client = new NodeRealtimeClient({
315
+ serverUrl: 'https://api.test.com/v1',
316
+ projectId: 'proj-1',
317
+ });
318
+ const statuses: string[] = [];
319
+ client.onStatusChange((s: string) => statuses.push(s));
320
+
321
+ const connectPromise = client.connect();
322
+ await vi.advanceTimersByTimeAsync(10);
323
+ await connectPromise;
324
+
325
+ expect(statuses).toContain('connecting');
326
+ expect(statuses).toContain('connected');
327
+ });
328
+
329
+ it('should allow unsubscribing', () => {
330
+ const client = new NodeRealtimeClient({
331
+ serverUrl: 'https://api.test.com/v1',
332
+ projectId: 'proj-1',
333
+ });
334
+ const cb = vi.fn();
335
+ const unsub = client.onStatusChange(cb);
336
+ unsub();
337
+ client.disconnect();
338
+ expect(cb).not.toHaveBeenCalled();
339
+ });
340
+ });
341
+
342
+ describe('setToken', () => {
343
+ it('should send auth message', async () => {
344
+ const client = new NodeRealtimeClient({
345
+ serverUrl: 'https://api.test.com/v1',
346
+ projectId: 'proj-1',
347
+ });
348
+
349
+ const connectPromise = client.connect();
350
+ await vi.advanceTimersByTimeAsync(10);
351
+ await connectPromise;
352
+
353
+ client.setToken('new-token');
354
+ });
355
+ });
356
+
357
+ describe('sendChat', () => {
358
+ it('should send chat message', () => {
359
+ const client = new NodeRealtimeClient({
360
+ serverUrl: 'https://api.test.com/v1',
361
+ projectId: 'proj-1',
362
+ });
363
+ client.sendChat('room-1', 'Hello!');
364
+ // Message queued since not connected
365
+ });
366
+ });
367
+
368
+ describe('_generateId', () => {
369
+ it('should return unique strings', () => {
370
+ const client = new NodeRealtimeClient({
371
+ serverUrl: 'https://api.test.com/v1',
372
+ projectId: 'proj-1',
373
+ });
374
+ const ids = new Set(Array.from({ length: 50 }, () => client._generateId()));
375
+ expect(ids.size).toBe(50);
376
+ });
377
+ });
378
+
379
+ describe('_fetchHistory', () => {
380
+ it('should fetch from REST API with auth headers', async () => {
381
+ const mockFetch = vi.fn().mockResolvedValue({
382
+ json: async () => ({ messages: [{ id: '1' }] }),
383
+ });
384
+ vi.stubGlobal('fetch', mockFetch);
385
+
386
+ const client = new NodeRealtimeClient({
387
+ serverUrl: 'https://api.test.com/v1',
388
+ projectId: 'proj-1',
389
+ apiKey: 'my-key',
390
+ token: 'my-token',
391
+ });
392
+
393
+ const result = await client._fetchHistory('room/test', 25, 9999);
394
+ expect(result).toEqual([{ id: '1' }]);
395
+
396
+ const url = new URL(mockFetch.mock.calls[0][0]);
397
+ expect(url.pathname).toBe('/api/v1/public/realtime/history');
398
+ expect(url.searchParams.get('room')).toBe('room/test');
399
+ expect(url.searchParams.get('limit')).toBe('25');
400
+ expect(url.searchParams.get('before')).toBe('9999');
401
+
402
+ const headers = mockFetch.mock.calls[0][1].headers;
403
+ expect(headers['X-Aerostack-Key']).toBe('my-key');
404
+ expect(headers['Authorization']).toBe('Bearer my-token');
405
+ });
406
+ });
407
+
408
+ describe('maxReconnectAttempts', () => {
409
+ it('should accept maxReconnectAttempts option', () => {
410
+ const client = new NodeRealtimeClient({
411
+ serverUrl: 'https://api.test.com/v1',
412
+ projectId: 'proj-1',
413
+ maxReconnectAttempts: 3,
414
+ });
415
+ expect(client.status).toBe('idle');
416
+ });
417
+
418
+ it('should allow onMaxRetriesExceeded listener', () => {
419
+ const client = new NodeRealtimeClient({
420
+ serverUrl: 'https://api.test.com/v1',
421
+ projectId: 'proj-1',
422
+ maxReconnectAttempts: 0,
423
+ });
424
+ const cb = vi.fn();
425
+ const unsub = client.onMaxRetriesExceeded(cb);
426
+ expect(typeof unsub).toBe('function');
427
+ unsub();
428
+ });
429
+ });
430
+ });