bunqueue 1.9.1 → 1.9.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.
Files changed (153) hide show
  1. package/dist/application/operations/queueControl.d.ts.map +1 -1
  2. package/dist/application/operations/queueControl.js +6 -1
  3. package/dist/application/operations/queueControl.js.map +1 -1
  4. package/dist/application/queueManager.d.ts +115 -9
  5. package/dist/application/queueManager.d.ts.map +1 -1
  6. package/dist/application/queueManager.js +535 -26
  7. package/dist/application/queueManager.js.map +1 -1
  8. package/dist/cli/commands/server.d.ts.map +1 -1
  9. package/dist/cli/commands/server.js +4 -9
  10. package/dist/cli/commands/server.js.map +1 -1
  11. package/dist/client/queue/dlqOps.d.ts +24 -0
  12. package/dist/client/queue/dlqOps.d.ts.map +1 -0
  13. package/dist/client/queue/dlqOps.js +73 -0
  14. package/dist/client/queue/dlqOps.js.map +1 -0
  15. package/dist/client/queue/helpers.d.ts +20 -0
  16. package/dist/client/queue/helpers.d.ts.map +1 -0
  17. package/dist/client/queue/helpers.js +34 -0
  18. package/dist/client/queue/helpers.js.map +1 -0
  19. package/dist/client/queue/index.d.ts +8 -0
  20. package/dist/client/queue/index.d.ts.map +1 -0
  21. package/dist/client/queue/index.js +8 -0
  22. package/dist/client/queue/index.js.map +1 -0
  23. package/dist/client/queue/queue.d.ts +60 -0
  24. package/dist/client/queue/queue.d.ts.map +1 -0
  25. package/dist/client/queue/queue.js +322 -0
  26. package/dist/client/queue/queue.js.map +1 -0
  27. package/dist/client/queue.d.ts +3 -78
  28. package/dist/client/queue.d.ts.map +1 -1
  29. package/dist/client/queue.js +3 -463
  30. package/dist/client/queue.js.map +1 -1
  31. package/dist/client/sandboxed/index.d.ts +8 -0
  32. package/dist/client/sandboxed/index.d.ts.map +1 -0
  33. package/dist/client/sandboxed/index.js +7 -0
  34. package/dist/client/sandboxed/index.js.map +1 -0
  35. package/dist/client/sandboxed/types.d.ts +62 -0
  36. package/dist/client/sandboxed/types.d.ts.map +1 -0
  37. package/dist/client/sandboxed/types.js +6 -0
  38. package/dist/client/sandboxed/types.js.map +1 -0
  39. package/dist/client/sandboxed/worker.d.ts +38 -0
  40. package/dist/client/sandboxed/worker.d.ts.map +1 -0
  41. package/dist/client/sandboxed/worker.js +176 -0
  42. package/dist/client/sandboxed/worker.js.map +1 -0
  43. package/dist/client/sandboxed/wrapper.d.ts +13 -0
  44. package/dist/client/sandboxed/wrapper.d.ts.map +1 -0
  45. package/dist/client/sandboxed/wrapper.js +65 -0
  46. package/dist/client/sandboxed/wrapper.js.map +1 -0
  47. package/dist/client/sandboxedWorker.d.ts +4 -87
  48. package/dist/client/sandboxedWorker.d.ts.map +1 -1
  49. package/dist/client/sandboxedWorker.js +3 -296
  50. package/dist/client/sandboxedWorker.js.map +1 -1
  51. package/dist/client/tcp/client.d.ts +43 -0
  52. package/dist/client/tcp/client.d.ts.map +1 -0
  53. package/dist/client/tcp/client.js +288 -0
  54. package/dist/client/tcp/client.js.map +1 -0
  55. package/dist/client/tcp/connection.d.ts +48 -0
  56. package/dist/client/tcp/connection.d.ts.map +1 -0
  57. package/dist/client/tcp/connection.js +150 -0
  58. package/dist/client/tcp/connection.js.map +1 -0
  59. package/dist/client/tcp/health.d.ts +47 -0
  60. package/dist/client/tcp/health.d.ts.map +1 -0
  61. package/dist/client/tcp/health.js +95 -0
  62. package/dist/client/tcp/health.js.map +1 -0
  63. package/dist/client/tcp/index.d.ts +13 -0
  64. package/dist/client/tcp/index.d.ts.map +1 -0
  65. package/dist/client/tcp/index.js +12 -0
  66. package/dist/client/tcp/index.js.map +1 -0
  67. package/dist/client/tcp/lineBuffer.d.ts +17 -0
  68. package/dist/client/tcp/lineBuffer.d.ts.map +1 -0
  69. package/dist/client/tcp/lineBuffer.js +32 -0
  70. package/dist/client/tcp/lineBuffer.js.map +1 -0
  71. package/dist/client/tcp/reconnect.d.ts +38 -0
  72. package/dist/client/tcp/reconnect.d.ts.map +1 -0
  73. package/dist/client/tcp/reconnect.js +70 -0
  74. package/dist/client/tcp/reconnect.js.map +1 -0
  75. package/dist/client/tcp/shared.d.ts +11 -0
  76. package/dist/client/tcp/shared.d.ts.map +1 -0
  77. package/dist/client/tcp/shared.js +20 -0
  78. package/dist/client/tcp/shared.js.map +1 -0
  79. package/dist/client/tcp/types.d.ts +69 -0
  80. package/dist/client/tcp/types.d.ts.map +1 -0
  81. package/dist/client/tcp/types.js +19 -0
  82. package/dist/client/tcp/types.js.map +1 -0
  83. package/dist/client/tcpClient.d.ts +4 -110
  84. package/dist/client/tcpClient.d.ts.map +1 -1
  85. package/dist/client/tcpClient.js +3 -523
  86. package/dist/client/tcpClient.js.map +1 -1
  87. package/dist/client/tcpPool.d.ts +3 -0
  88. package/dist/client/tcpPool.d.ts.map +1 -1
  89. package/dist/client/tcpPool.js +15 -2
  90. package/dist/client/tcpPool.js.map +1 -1
  91. package/dist/client/types.d.ts +7 -0
  92. package/dist/client/types.d.ts.map +1 -1
  93. package/dist/client/types.js.map +1 -1
  94. package/dist/client/worker/ackBatcher.d.ts +40 -0
  95. package/dist/client/worker/ackBatcher.d.ts.map +1 -0
  96. package/dist/client/worker/ackBatcher.js +137 -0
  97. package/dist/client/worker/ackBatcher.js.map +1 -0
  98. package/dist/client/worker/index.d.ts +11 -0
  99. package/dist/client/worker/index.d.ts.map +1 -0
  100. package/dist/client/worker/index.js +10 -0
  101. package/dist/client/worker/index.js.map +1 -0
  102. package/dist/client/worker/jobParser.d.ts +10 -0
  103. package/dist/client/worker/jobParser.d.ts.map +1 -0
  104. package/dist/client/worker/jobParser.js +43 -0
  105. package/dist/client/worker/jobParser.js.map +1 -0
  106. package/dist/client/worker/processor.d.ts +24 -0
  107. package/dist/client/worker/processor.d.ts.map +1 -0
  108. package/dist/client/worker/processor.js +86 -0
  109. package/dist/client/worker/processor.js.map +1 -0
  110. package/dist/client/worker/types.d.ts +38 -0
  111. package/dist/client/worker/types.d.ts.map +1 -0
  112. package/dist/client/worker/types.js +14 -0
  113. package/dist/client/worker/types.js.map +1 -0
  114. package/dist/client/worker/worker.d.ts +53 -0
  115. package/dist/client/worker/worker.d.ts.map +1 -0
  116. package/dist/client/worker/worker.js +367 -0
  117. package/dist/client/worker/worker.js.map +1 -0
  118. package/dist/client/worker.d.ts +3 -69
  119. package/dist/client/worker.d.ts.map +1 -1
  120. package/dist/client/worker.js +3 -472
  121. package/dist/client/worker.js.map +1 -1
  122. package/dist/domain/queue/shard.d.ts +19 -2
  123. package/dist/domain/queue/shard.d.ts.map +1 -1
  124. package/dist/domain/queue/shard.js +36 -4
  125. package/dist/domain/queue/shard.js.map +1 -1
  126. package/dist/domain/types/command.d.ts +9 -0
  127. package/dist/domain/types/command.d.ts.map +1 -1
  128. package/dist/domain/types/job.d.ts +27 -0
  129. package/dist/domain/types/job.d.ts.map +1 -1
  130. package/dist/domain/types/job.js +34 -0
  131. package/dist/domain/types/job.js.map +1 -1
  132. package/dist/domain/types/response.d.ts +15 -1
  133. package/dist/domain/types/response.d.ts.map +1 -1
  134. package/dist/domain/types/response.js +16 -0
  135. package/dist/domain/types/response.js.map +1 -1
  136. package/dist/infrastructure/server/handlers/core.d.ts +1 -1
  137. package/dist/infrastructure/server/handlers/core.d.ts.map +1 -1
  138. package/dist/infrastructure/server/handlers/core.js +74 -15
  139. package/dist/infrastructure/server/handlers/core.js.map +1 -1
  140. package/dist/infrastructure/server/handlers/monitoring.d.ts.map +1 -1
  141. package/dist/infrastructure/server/handlers/monitoring.js +6 -4
  142. package/dist/infrastructure/server/handlers/monitoring.js.map +1 -1
  143. package/dist/infrastructure/server/http.d.ts.map +1 -1
  144. package/dist/infrastructure/server/http.js +67 -0
  145. package/dist/infrastructure/server/http.js.map +1 -1
  146. package/dist/infrastructure/server/tcp.d.ts.map +1 -1
  147. package/dist/infrastructure/server/tcp.js +9 -1
  148. package/dist/infrastructure/server/tcp.js.map +1 -1
  149. package/dist/infrastructure/server/types.d.ts +2 -0
  150. package/dist/infrastructure/server/types.d.ts.map +1 -1
  151. package/dist/main.js +8 -0
  152. package/dist/main.js.map +1 -1
  153. package/package.json +1 -1
@@ -1,526 +1,6 @@
1
1
  /**
2
- * TCP Client for SDK - Production Ready
3
- * Connects to bunqueue server via TCP with auto-reconnection
2
+ * TCP Client - Re-exports from tcp module
3
+ * @deprecated Import from './tcp' instead
4
4
  */
5
- import { EventEmitter } from 'events';
6
- /** Default connection */
7
- export const DEFAULT_CONNECTION = {
8
- host: 'localhost',
9
- port: 6789,
10
- token: '',
11
- maxReconnectAttempts: Infinity,
12
- reconnectDelay: 100,
13
- maxReconnectDelay: 30000,
14
- connectTimeout: 5000,
15
- commandTimeout: 30000,
16
- autoReconnect: true,
17
- pingInterval: 30000, // 30s health check
18
- maxPingFailures: 3, // Force reconnect after 3 failed pings
19
- };
20
- /** Line buffer for efficient parsing */
21
- class LineBuffer {
22
- partial = '';
23
- /** Add data and return complete lines */
24
- addData(data) {
25
- const combined = this.partial + data;
26
- const lines = [];
27
- let start = 0;
28
- let idx;
29
- while ((idx = combined.indexOf('\n', start)) !== -1) {
30
- const line = combined.slice(start, idx);
31
- if (line.length > 0) {
32
- lines.push(line);
33
- }
34
- start = idx + 1;
35
- }
36
- this.partial = start < combined.length ? combined.slice(start) : '';
37
- return lines;
38
- }
39
- clear() {
40
- this.partial = '';
41
- }
42
- }
43
- /**
44
- * TCP Client - manages connection to bunqueue server
45
- * Production-ready with auto-reconnection and exponential backoff
46
- */
47
- export class TcpClient extends EventEmitter {
48
- socket = null;
49
- connected = false;
50
- connecting = false;
51
- closed = false;
52
- reconnectAttempts = 0;
53
- reconnectTimer = null;
54
- pingTimer = null;
55
- options;
56
- pendingCommands = new Map();
57
- pendingQueue = []; // FIFO queue of command IDs
58
- currentCommand = null;
59
- commandIdCounter = 0;
60
- // Health tracking
61
- consecutivePingFailures = 0;
62
- lastSuccessAt = null;
63
- lastErrorAt = null;
64
- connectedAt = null;
65
- totalCommands = 0;
66
- totalErrors = 0;
67
- latencyHistory = []; // Last 10 latencies
68
- static MAX_LATENCY_HISTORY = 10;
69
- constructor(options = {}) {
70
- super();
71
- this.options = { ...DEFAULT_CONNECTION, ...options };
72
- }
73
- /** Connect to server */
74
- async connect() {
75
- if (this.connected)
76
- return;
77
- if (this.connecting) {
78
- // Wait for current connection attempt
79
- return new Promise((resolve, reject) => {
80
- const onConnect = () => {
81
- this.off('error', onError);
82
- resolve();
83
- };
84
- const onError = (err) => {
85
- this.off('connected', onConnect);
86
- reject(err);
87
- };
88
- this.once('connected', onConnect);
89
- this.once('error', onError);
90
- });
91
- }
92
- this.connecting = true;
93
- this.closed = false;
94
- try {
95
- await this.doConnect();
96
- this.reconnectAttempts = 0;
97
- this.emit('connected');
98
- // Start health check ping
99
- this.startPing();
100
- // Process any pending commands
101
- this.processNextCommand();
102
- }
103
- catch (err) {
104
- this.connecting = false;
105
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- user can set to false
106
- if (this.options.autoReconnect && !this.closed) {
107
- this.scheduleReconnect();
108
- }
109
- throw err;
110
- }
111
- }
112
- async doConnect() {
113
- return new Promise((resolve, reject) => {
114
- const socketData = {
115
- write: () => { },
116
- end: () => { },
117
- lineBuffer: new LineBuffer(),
118
- };
119
- let connectionResolved = false;
120
- let timeoutId = null;
121
- const cleanup = () => {
122
- if (timeoutId) {
123
- clearTimeout(timeoutId);
124
- timeoutId = null;
125
- }
126
- };
127
- void Bun.connect({
128
- hostname: this.options.host,
129
- port: this.options.port,
130
- socket: {
131
- data: (_sock, data) => {
132
- const lines = socketData.lineBuffer.addData(data.toString());
133
- for (const line of lines) {
134
- if (this.currentCommand) {
135
- try {
136
- const response = JSON.parse(line);
137
- clearTimeout(this.currentCommand.timeout);
138
- this.currentCommand.resolve(response);
139
- this.currentCommand = null;
140
- this.processNextCommand();
141
- }
142
- catch {
143
- if (this.currentCommand) {
144
- clearTimeout(this.currentCommand.timeout);
145
- this.currentCommand.reject(new Error('Invalid response from server'));
146
- this.currentCommand = null;
147
- this.processNextCommand();
148
- }
149
- }
150
- }
151
- }
152
- },
153
- open: async (sock) => {
154
- cleanup();
155
- socketData.write = (data) => sock.write(data);
156
- socketData.end = () => sock.end();
157
- this.socket = socketData;
158
- this.connected = true;
159
- this.connecting = false;
160
- this.connectedAt = Date.now();
161
- this.consecutivePingFailures = 0;
162
- // Authenticate if token provided
163
- if (this.options.token) {
164
- try {
165
- const authResponse = await this.sendInternal({
166
- cmd: 'Auth',
167
- token: this.options.token,
168
- });
169
- if (!authResponse.ok) {
170
- connectionResolved = true;
171
- reject(new Error('Authentication failed'));
172
- return;
173
- }
174
- }
175
- catch (err) {
176
- connectionResolved = true;
177
- reject(err instanceof Error ? err : new Error(String(err)));
178
- return;
179
- }
180
- }
181
- connectionResolved = true;
182
- resolve();
183
- },
184
- close: () => {
185
- const wasConnected = this.connected;
186
- this.connected = false;
187
- this.connecting = false;
188
- this.socket = null;
189
- this.stopPing();
190
- // Reject current command
191
- if (this.currentCommand) {
192
- clearTimeout(this.currentCommand.timeout);
193
- this.currentCommand.reject(new Error('Connection closed'));
194
- this.currentCommand = null;
195
- }
196
- if (wasConnected) {
197
- this.emit('disconnected');
198
- if (this.options.autoReconnect && !this.closed) {
199
- this.scheduleReconnect();
200
- }
201
- }
202
- if (!connectionResolved) {
203
- connectionResolved = true;
204
- cleanup();
205
- reject(new Error('Connection closed'));
206
- }
207
- },
208
- error: (_sock, error) => {
209
- if (!connectionResolved) {
210
- connectionResolved = true;
211
- cleanup();
212
- reject(new Error(`Connection error: ${error.message}`));
213
- }
214
- this.emit('error', error);
215
- },
216
- connectError: (_sock, error) => {
217
- if (!connectionResolved) {
218
- connectionResolved = true;
219
- cleanup();
220
- reject(new Error(`Failed to connect to ${this.options.host}:${this.options.port}: ${error.message}`));
221
- }
222
- },
223
- },
224
- });
225
- // Connection timeout
226
- timeoutId = setTimeout(() => {
227
- if (!connectionResolved) {
228
- connectionResolved = true;
229
- reject(new Error(`Connection timeout to ${this.options.host}:${this.options.port}`));
230
- }
231
- }, this.options.connectTimeout);
232
- });
233
- }
234
- /** Start periodic health check ping */
235
- startPing() {
236
- if (this.options.pingInterval <= 0)
237
- return;
238
- this.stopPing();
239
- this.pingTimer = setInterval(() => {
240
- void this.ping();
241
- }, this.options.pingInterval);
242
- }
243
- /** Stop health check ping */
244
- stopPing() {
245
- if (this.pingTimer) {
246
- clearInterval(this.pingTimer);
247
- this.pingTimer = null;
248
- }
249
- }
250
- /** Send ping to check connection health */
251
- async ping() {
252
- if (!this.connected)
253
- return false;
254
- try {
255
- const start = Date.now();
256
- const response = await this.send({ cmd: 'Ping' });
257
- const success = response.pong === true;
258
- if (success) {
259
- this.consecutivePingFailures = 0;
260
- this.recordLatency(Date.now() - start);
261
- this.emit('health', { type: 'ping_success', latency: Date.now() - start });
262
- }
263
- else {
264
- this.handlePingFailure();
265
- }
266
- return success;
267
- }
268
- catch {
269
- this.handlePingFailure();
270
- return false;
271
- }
272
- }
273
- /** Handle ping failure - force reconnect if too many failures */
274
- handlePingFailure() {
275
- this.consecutivePingFailures++;
276
- this.lastErrorAt = Date.now();
277
- this.totalErrors++;
278
- this.emit('health', {
279
- type: 'ping_failed',
280
- consecutiveFailures: this.consecutivePingFailures,
281
- });
282
- // Force reconnect if too many consecutive failures
283
- if (this.consecutivePingFailures >= this.options.maxPingFailures) {
284
- this.emit('health', { type: 'unhealthy', reason: 'max_ping_failures' });
285
- this.forceReconnect();
286
- }
287
- }
288
- /** Force reconnection */
289
- forceReconnect() {
290
- if (this.closed)
291
- return;
292
- // Close current connection
293
- if (this.socket) {
294
- this.socket.end();
295
- this.socket = null;
296
- }
297
- this.connected = false;
298
- this.stopPing();
299
- // Trigger reconnect
300
- if (this.options.autoReconnect) {
301
- this.scheduleReconnect();
302
- }
303
- }
304
- /** Record command latency for health metrics */
305
- recordLatency(latencyMs) {
306
- this.latencyHistory.push(latencyMs);
307
- if (this.latencyHistory.length > TcpClient.MAX_LATENCY_HISTORY) {
308
- this.latencyHistory.shift();
309
- }
310
- }
311
- /** Get connection health metrics */
312
- getHealth() {
313
- const avgLatency = this.latencyHistory.length > 0
314
- ? this.latencyHistory.reduce((a, b) => a + b, 0) / this.latencyHistory.length
315
- : 0;
316
- return {
317
- healthy: this.connected && this.consecutivePingFailures < this.options.maxPingFailures,
318
- state: this.getState(),
319
- lastSuccessAt: this.lastSuccessAt,
320
- lastErrorAt: this.lastErrorAt,
321
- avgLatencyMs: Math.round(avgLatency * 100) / 100,
322
- consecutivePingFailures: this.consecutivePingFailures,
323
- totalCommands: this.totalCommands,
324
- totalErrors: this.totalErrors,
325
- uptimeMs: this.connectedAt ? Date.now() - this.connectedAt : 0,
326
- };
327
- }
328
- /** Schedule reconnection with exponential backoff */
329
- scheduleReconnect() {
330
- if (this.reconnectTimer || this.closed)
331
- return;
332
- this.reconnectAttempts++;
333
- if (this.reconnectAttempts > this.options.maxReconnectAttempts) {
334
- this.emit('maxReconnectAttemptsReached');
335
- // Reject all pending commands
336
- for (const cmd of this.pendingCommands.values()) {
337
- clearTimeout(cmd.timeout);
338
- cmd.reject(new Error('Max reconnection attempts reached'));
339
- }
340
- this.pendingCommands.clear();
341
- this.pendingQueue = [];
342
- return;
343
- }
344
- // Exponential backoff with jitter
345
- const baseDelay = Math.min(this.options.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1), this.options.maxReconnectDelay);
346
- const jitter = Math.random() * 0.3 * baseDelay; // 0-30% jitter
347
- const delay = baseDelay + jitter;
348
- this.emit('reconnecting', { attempt: this.reconnectAttempts, delay });
349
- this.reconnectTimer = setTimeout(() => {
350
- this.reconnectTimer = null;
351
- this.connect()
352
- .then(() => {
353
- // Process queued commands after reconnection
354
- this.processNextCommand();
355
- })
356
- .catch(() => {
357
- // connect() will schedule another reconnect if needed
358
- });
359
- }, delay);
360
- }
361
- /** Internal send without auto-connect */
362
- async sendInternal(command) {
363
- if (!this.socket) {
364
- throw new Error('Not connected');
365
- }
366
- const startTime = Date.now();
367
- this.totalCommands++;
368
- return new Promise((resolve, reject) => {
369
- const timeout = setTimeout(() => {
370
- if (this.currentCommand?.command === command) {
371
- this.currentCommand = null;
372
- this.lastErrorAt = Date.now();
373
- this.totalErrors++;
374
- reject(new Error('Command timeout'));
375
- this.processNextCommand();
376
- }
377
- }, this.options.commandTimeout);
378
- const wrappedResolve = (result) => {
379
- this.lastSuccessAt = Date.now();
380
- this.recordLatency(Date.now() - startTime);
381
- resolve(result);
382
- };
383
- const wrappedReject = (err) => {
384
- this.lastErrorAt = Date.now();
385
- this.totalErrors++;
386
- reject(err);
387
- };
388
- this.currentCommand = {
389
- id: 0,
390
- command,
391
- resolve: wrappedResolve,
392
- reject: wrappedReject,
393
- timeout,
394
- };
395
- if (this.socket) {
396
- this.socket.write(JSON.stringify(command) + '\n');
397
- }
398
- });
399
- }
400
- /** Process next pending command */
401
- processNextCommand() {
402
- if (this.currentCommand || !this.connected || this.pendingQueue.length === 0) {
403
- return;
404
- }
405
- const nextId = this.pendingQueue.shift();
406
- if (nextId === undefined)
407
- return;
408
- const next = this.pendingCommands.get(nextId);
409
- if (!next || !this.socket) {
410
- this.pendingCommands.delete(nextId);
411
- return;
412
- }
413
- this.pendingCommands.delete(nextId);
414
- this.currentCommand = next;
415
- this.socket.write(JSON.stringify(next.command) + '\n');
416
- }
417
- /** Send command and wait for response */
418
- async send(command) {
419
- // If connected and no pending commands, send immediately
420
- if (this.connected && this.pendingCommands.size === 0 && !this.currentCommand) {
421
- return this.sendInternal(command);
422
- }
423
- // Otherwise queue the command
424
- const startTime = Date.now();
425
- this.totalCommands++;
426
- return new Promise((resolve, reject) => {
427
- const id = ++this.commandIdCounter;
428
- const timeout = setTimeout(() => {
429
- // O(1) lookup and delete with Map
430
- if (this.pendingCommands.has(id)) {
431
- this.pendingCommands.delete(id);
432
- // Remove from queue (still O(n) but timeout is rare)
433
- const queueIdx = this.pendingQueue.indexOf(id);
434
- if (queueIdx !== -1) {
435
- this.pendingQueue.splice(queueIdx, 1);
436
- }
437
- this.lastErrorAt = Date.now();
438
- this.totalErrors++;
439
- reject(new Error('Command timeout'));
440
- }
441
- }, this.options.commandTimeout);
442
- const wrappedResolve = (result) => {
443
- this.lastSuccessAt = Date.now();
444
- this.recordLatency(Date.now() - startTime);
445
- resolve(result);
446
- };
447
- const wrappedReject = (err) => {
448
- this.lastErrorAt = Date.now();
449
- this.totalErrors++;
450
- reject(err);
451
- };
452
- this.pendingCommands.set(id, {
453
- id,
454
- command,
455
- resolve: wrappedResolve,
456
- reject: wrappedReject,
457
- timeout,
458
- });
459
- this.pendingQueue.push(id);
460
- // Try to connect if not connected
461
- if (!this.connected && !this.connecting) {
462
- this.connect().catch(() => {
463
- // Error handled by reconnect logic
464
- });
465
- }
466
- else if (this.connected) {
467
- this.processNextCommand();
468
- }
469
- });
470
- }
471
- /** Close connection */
472
- close() {
473
- this.closed = true;
474
- this.stopPing();
475
- if (this.reconnectTimer) {
476
- clearTimeout(this.reconnectTimer);
477
- this.reconnectTimer = null;
478
- }
479
- // Reject all pending commands
480
- for (const cmd of this.pendingCommands.values()) {
481
- clearTimeout(cmd.timeout);
482
- cmd.reject(new Error('Client closed'));
483
- }
484
- this.pendingCommands.clear();
485
- this.pendingQueue = [];
486
- if (this.currentCommand) {
487
- clearTimeout(this.currentCommand.timeout);
488
- this.currentCommand.reject(new Error('Client closed'));
489
- this.currentCommand = null;
490
- }
491
- if (this.socket) {
492
- this.socket.end();
493
- this.socket = null;
494
- this.connected = false;
495
- }
496
- }
497
- /** Check if connected */
498
- isConnected() {
499
- return this.connected;
500
- }
501
- /** Get connection state */
502
- getState() {
503
- if (this.closed)
504
- return 'closed';
505
- if (this.connected)
506
- return 'connected';
507
- if (this.connecting)
508
- return 'connecting';
509
- return 'disconnected';
510
- }
511
- }
512
- /** Shared client instance */
513
- let sharedClient = null;
514
- /** Get shared TCP client */
515
- export function getSharedTcpClient(options) {
516
- sharedClient ??= new TcpClient(options);
517
- return sharedClient;
518
- }
519
- /** Close shared client */
520
- export function closeSharedTcpClient() {
521
- if (sharedClient) {
522
- sharedClient.close();
523
- sharedClient = null;
524
- }
525
- }
5
+ export { DEFAULT_CONNECTION, TcpClient, getSharedTcpClient, closeSharedTcpClient } from './tcp';
526
6
  //# sourceMappingURL=tcpClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tcpClient.js","sourceRoot":"","sources":["../../src/client/tcpClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tcpClient.js","sourceRoot":"","sources":["../../src/client/tcpClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC"}
@@ -17,6 +17,7 @@ export declare class TcpConnectionPool {
17
17
  private currentIndex;
18
18
  private closed;
19
19
  private refCount;
20
+ private poolKey;
20
21
  constructor(options?: PoolOptions);
21
22
  /** Connect all clients in pool */
22
23
  connect(): Promise<void>;
@@ -36,6 +37,8 @@ export declare class TcpConnectionPool {
36
37
  addRef(): void;
37
38
  /** Decrement reference count and close if zero */
38
39
  release(): void;
40
+ /** Set pool key for shared pool cleanup */
41
+ setPoolKey(key: string): void;
39
42
  /** Close all connections */
40
43
  close(): void;
41
44
  /** Check if pool is closed */
@@ -1 +1 @@
1
- {"version":3,"file":"tcpPool.d.ts","sourceRoot":"","sources":["../../src/client/tcpPool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAa,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvF,MAAM,WAAW,WAAY,SAAQ,OAAO,CAAC,iBAAiB,CAAC;IAC7D,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAK;gBAET,OAAO,GAAE,WAAgB;IAmCrC,kCAAkC;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,gDAAgD;IAChD,OAAO,CAAC,aAAa;IAmBrB,mDAAmD;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAO9E,qDAAqD;IAC/C,YAAY,CAChB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACvC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAc1C,uCAAuC;IACvC,WAAW,IAAI,OAAO;IAItB,sCAAsC;IACtC,iBAAiB,IAAI,MAAM;IAI3B,oBAAoB;IACpB,WAAW,IAAI,MAAM;IAIrB,mDAAmD;IACnD,MAAM,IAAI,IAAI;IAId,kDAAkD;IAClD,OAAO,IAAI,IAAI;IAOf,4BAA4B;IAC5B,KAAK,IAAI,IAAI;IASb,8BAA8B;IAC9B,QAAQ,IAAI,OAAO;IAInB,iDAAiD;IACjD,SAAS,IAAI;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB;CAuBF;AAYD,2CAA2C;AAC3C,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAStE;AAED,oCAAoC;AACpC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAE/D;AAED,6BAA6B;AAC7B,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C"}
1
+ {"version":3,"file":"tcpPool.d.ts","sourceRoot":"","sources":["../../src/client/tcpPool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAa,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEvF,MAAM,WAAW,WAAY,SAAQ,OAAO,CAAC,iBAAiB,CAAC;IAC7D,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,OAAO,CAAuB;gBAE1B,OAAO,GAAE,WAAgB;IAoCrC,kCAAkC;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,gDAAgD;IAChD,OAAO,CAAC,aAAa;IAmBrB,mDAAmD;IAC7C,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAO9E,qDAAqD;IAC/C,YAAY,CAChB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACvC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAc1C,uCAAuC;IACvC,WAAW,IAAI,OAAO;IAItB,sCAAsC;IACtC,iBAAiB,IAAI,MAAM;IAI3B,oBAAoB;IACpB,WAAW,IAAI,MAAM;IAIrB,mDAAmD;IACnD,MAAM,IAAI,IAAI;IAId,kDAAkD;IAClD,OAAO,IAAI,IAAI;IAOf,2CAA2C;IAC3C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,4BAA4B;IAC5B,KAAK,IAAI,IAAI;IAcb,8BAA8B;IAC9B,QAAQ,IAAI,OAAO;IAInB,iDAAiD;IACjD,SAAS,IAAI;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB;CAuBF;AAYD,2CAA2C;AAC3C,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAWtE;AAED,oCAAoC;AACpC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAE/D;AAED,6BAA6B;AAC7B,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C"}
@@ -13,12 +13,14 @@ export class TcpConnectionPool {
13
13
  currentIndex = 0;
14
14
  closed = false;
15
15
  refCount = 0; // Reference counting for shared pools
16
+ poolKey = null; // Track key for cleanup from sharedPools
16
17
  constructor(options = {}) {
18
+ const poolSize = Math.max(1, options.poolSize ?? 4); // Validate: at least 1
17
19
  this.options = {
18
20
  host: options.host ?? 'localhost',
19
21
  port: options.port ?? 6789,
20
22
  token: options.token ?? '',
21
- poolSize: options.poolSize ?? 4,
23
+ poolSize,
22
24
  maxReconnectAttempts: options.maxReconnectAttempts ?? Infinity,
23
25
  reconnectDelay: options.reconnectDelay ?? 100,
24
26
  maxReconnectDelay: options.maxReconnectDelay ?? 30000,
@@ -109,11 +111,20 @@ export class TcpConnectionPool {
109
111
  this.close();
110
112
  }
111
113
  }
114
+ /** Set pool key for shared pool cleanup */
115
+ setPoolKey(key) {
116
+ this.poolKey = key;
117
+ }
112
118
  /** Close all connections */
113
119
  close() {
114
120
  if (this.closed)
115
121
  return;
116
122
  this.closed = true;
123
+ // Remove from shared pools map if this was a shared pool
124
+ if (this.poolKey) {
125
+ sharedPools.delete(this.poolKey);
126
+ this.poolKey = null;
127
+ }
117
128
  for (const client of this.clients) {
118
129
  client.close();
119
130
  }
@@ -156,8 +167,10 @@ function getPoolKey(options) {
156
167
  export function getSharedPool(options) {
157
168
  const key = getPoolKey(options);
158
169
  let pool = sharedPools.get(key);
159
- if (!pool) {
170
+ // Also check if existing pool is closed (defensive check)
171
+ if (!pool || pool.isClosed()) {
160
172
  pool = new TcpConnectionPool(options);
173
+ pool.setPoolKey(key); // Track key for cleanup on close
161
174
  sharedPools.set(key, pool);
162
175
  }
163
176
  pool.addRef();
@@ -1 +1 @@
1
- {"version":3,"file":"tcpPool.js","sourceRoot":"","sources":["../../src/client/tcpPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tcpPool.js","sourceRoot":"","sources":["../../src/client/tcpPool.ts"],"names":[],"mappings":"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"}