bunqueue 1.6.8 → 1.8.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.
Files changed (58) hide show
  1. package/dist/application/queueManager.d.ts +4 -0
  2. package/dist/application/queueManager.d.ts.map +1 -1
  3. package/dist/application/queueManager.js +24 -2
  4. package/dist/application/queueManager.js.map +1 -1
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +1 -3
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/client/index.d.ts +3 -1
  9. package/dist/client/index.d.ts.map +1 -1
  10. package/dist/client/index.js +2 -0
  11. package/dist/client/index.js.map +1 -1
  12. package/dist/client/queue.d.ts +25 -5
  13. package/dist/client/queue.d.ts.map +1 -1
  14. package/dist/client/queue.js +285 -41
  15. package/dist/client/queue.js.map +1 -1
  16. package/dist/client/tcpClient.d.ts +72 -0
  17. package/dist/client/tcpClient.d.ts.map +1 -0
  18. package/dist/client/tcpClient.js +371 -0
  19. package/dist/client/tcpClient.js.map +1 -0
  20. package/dist/client/tcpPool.d.ts +41 -0
  21. package/dist/client/tcpPool.d.ts.map +1 -0
  22. package/dist/client/tcpPool.js +110 -0
  23. package/dist/client/tcpPool.js.map +1 -0
  24. package/dist/client/types.d.ts +24 -1
  25. package/dist/client/types.d.ts.map +1 -1
  26. package/dist/client/types.js.map +1 -1
  27. package/dist/client/worker.d.ts +37 -5
  28. package/dist/client/worker.d.ts.map +1 -1
  29. package/dist/client/worker.js +320 -45
  30. package/dist/client/worker.js.map +1 -1
  31. package/dist/domain/types/command.d.ts +16 -1
  32. package/dist/domain/types/command.d.ts.map +1 -1
  33. package/dist/infrastructure/backup/s3Backup.d.ts.map +1 -1
  34. package/dist/infrastructure/backup/s3Backup.js +2 -1
  35. package/dist/infrastructure/backup/s3Backup.js.map +1 -1
  36. package/dist/infrastructure/server/handler.d.ts.map +1 -1
  37. package/dist/infrastructure/server/handler.js +7 -1
  38. package/dist/infrastructure/server/handler.js.map +1 -1
  39. package/dist/infrastructure/server/handlers/core.d.ts +1 -1
  40. package/dist/infrastructure/server/handlers/core.d.ts.map +1 -1
  41. package/dist/infrastructure/server/handlers/core.js +12 -3
  42. package/dist/infrastructure/server/handlers/core.js.map +1 -1
  43. package/dist/infrastructure/server/handlers/monitoring.d.ts +4 -1
  44. package/dist/infrastructure/server/handlers/monitoring.d.ts.map +1 -1
  45. package/dist/infrastructure/server/handlers/monitoring.js +18 -0
  46. package/dist/infrastructure/server/handlers/monitoring.js.map +1 -1
  47. package/dist/infrastructure/server/http.d.ts.map +1 -1
  48. package/dist/infrastructure/server/http.js +2 -1
  49. package/dist/infrastructure/server/http.js.map +1 -1
  50. package/dist/infrastructure/server/rateLimiter.js +1 -1
  51. package/dist/infrastructure/server/rateLimiter.js.map +1 -1
  52. package/dist/mcp/index.js +2 -1
  53. package/dist/mcp/index.js.map +1 -1
  54. package/dist/shared/version.d.ts +1 -1
  55. package/dist/shared/version.d.ts.map +1 -1
  56. package/dist/shared/version.js +3 -27
  57. package/dist/shared/version.js.map +1 -1
  58. package/package.json +2 -2
@@ -1,18 +1,20 @@
1
1
  /**
2
2
  * Queue - BullMQ-style API
3
+ * Default: TCP connection to localhost:6789
4
+ * Optional: embedded mode with { embedded: true }
3
5
  */
4
6
  import { getSharedManager } from './manager';
7
+ import { TcpConnectionPool } from './tcpPool';
5
8
  import { toPublicJob, toDlqEntry } from './types';
6
9
  import { jobId } from '../domain/types/job';
7
10
  import { shardIndex } from '../shared/hash';
8
11
  import * as dlqOps from '../application/dlqManager';
9
- /** Helper to get shard from manager */
12
+ /** Helper to get shard from manager (embedded mode only) */
10
13
  function getShard(manager, queue) {
11
14
  const idx = shardIndex(queue);
12
- // Access internal shards array (safe cast for embedded mode)
13
15
  return manager.shards[idx];
14
16
  }
15
- /** Helper to create DLQ context */
17
+ /** Helper to create DLQ context (embedded mode only) */
16
18
  function getDlqContext(manager) {
17
19
  return {
18
20
  shards: manager.shards,
@@ -25,31 +27,111 @@ function toDomainFilter(filter) {
25
27
  return undefined;
26
28
  return filter;
27
29
  }
30
+ /** Check if embedded mode should be forced (for tests) */
31
+ const FORCE_EMBEDDED = process.env.BUNQUEUE_EMBEDDED === '1';
28
32
  /**
29
33
  * Queue class for adding and managing jobs
34
+ * Default: connects to bunqueue server via TCP
35
+ * Use { embedded: true } for in-process mode
36
+ * Set BUNQUEUE_EMBEDDED=1 env var to force embedded mode
30
37
  */
31
38
  export class Queue {
32
39
  name;
33
40
  opts;
41
+ embedded;
42
+ tcpPool;
34
43
  constructor(name, opts = {}) {
35
44
  this.name = name;
36
45
  this.opts = opts;
46
+ this.embedded = opts.embedded ?? FORCE_EMBEDDED;
47
+ if (this.embedded) {
48
+ this.tcpPool = null;
49
+ }
50
+ else {
51
+ const connOpts = opts.connection ?? {};
52
+ // Always use pool - default poolSize = 4, user can override
53
+ const poolSize = connOpts.poolSize ?? 4;
54
+ // Use connection pool (always enabled for TCP mode)
55
+ this.tcpPool = new TcpConnectionPool({
56
+ host: connOpts.host ?? 'localhost',
57
+ port: connOpts.port ?? 6789,
58
+ token: connOpts.token,
59
+ poolSize,
60
+ });
61
+ }
62
+ }
63
+ /** Get TCP connection pool */
64
+ get tcp() {
65
+ if (!this.tcpPool) {
66
+ throw new Error('No TCP connection available');
67
+ }
68
+ return this.tcpPool;
37
69
  }
38
70
  /** Add a job to the queue */
39
71
  async add(name, data, opts = {}) {
40
72
  const merged = { ...this.opts.defaultJobOptions, ...opts };
73
+ if (this.embedded) {
74
+ return this.addEmbedded(name, data, merged);
75
+ }
76
+ return this.addTcp(name, data, merged);
77
+ }
78
+ async addTcp(name, data, opts) {
79
+ const response = await this.tcp.send({
80
+ cmd: 'PUSH',
81
+ queue: this.name,
82
+ data: { name, ...data },
83
+ priority: opts.priority,
84
+ delay: opts.delay,
85
+ maxAttempts: opts.attempts,
86
+ backoff: opts.backoff,
87
+ timeout: opts.timeout,
88
+ customId: opts.jobId,
89
+ removeOnComplete: opts.removeOnComplete,
90
+ removeOnFail: opts.removeOnFail,
91
+ });
92
+ if (!response.ok) {
93
+ const errorMsg = response.error;
94
+ throw new Error(errorMsg ?? 'Failed to add job');
95
+ }
96
+ const jobId = response.id;
97
+ return {
98
+ id: jobId,
99
+ name,
100
+ data,
101
+ queueName: this.name,
102
+ attemptsMade: 0,
103
+ timestamp: Date.now(),
104
+ progress: 0,
105
+ updateProgress: async (progress, message) => {
106
+ await this.tcp.send({
107
+ cmd: 'Progress',
108
+ id: jobId,
109
+ progress,
110
+ message,
111
+ });
112
+ },
113
+ log: async (message) => {
114
+ await this.tcp.send({
115
+ cmd: 'AddLog',
116
+ id: jobId,
117
+ message,
118
+ });
119
+ },
120
+ };
121
+ }
122
+ async addEmbedded(name, data, opts) {
41
123
  const manager = getSharedManager();
42
124
  const job = await manager.push(this.name, {
43
125
  data: { name, ...data },
44
- priority: merged.priority,
45
- delay: merged.delay,
46
- maxAttempts: merged.attempts,
47
- backoff: merged.backoff,
48
- timeout: merged.timeout,
49
- customId: merged.jobId,
50
- removeOnComplete: merged.removeOnComplete,
51
- removeOnFail: merged.removeOnFail,
52
- repeat: merged.repeat,
126
+ priority: opts.priority,
127
+ delay: opts.delay,
128
+ maxAttempts: opts.attempts,
129
+ backoff: opts.backoff,
130
+ timeout: opts.timeout,
131
+ customId: opts.jobId,
132
+ removeOnComplete: opts.removeOnComplete,
133
+ removeOnFail: opts.removeOnFail,
134
+ repeat: opts.repeat,
53
135
  });
54
136
  return toPublicJob(job, name);
55
137
  }
@@ -57,9 +139,52 @@ export class Queue {
57
139
  async addBulk(jobs) {
58
140
  if (jobs.length === 0)
59
141
  return [];
142
+ if (this.embedded) {
143
+ return this.addBulkEmbedded(jobs);
144
+ }
145
+ return this.addBulkTcp(jobs);
146
+ }
147
+ async addBulkTcp(jobs) {
148
+ const now = Date.now();
149
+ const jobInputs = jobs.map(({ name, data, opts }) => {
150
+ const merged = { ...this.opts.defaultJobOptions, ...opts };
151
+ return {
152
+ data: { name, ...data },
153
+ priority: merged.priority,
154
+ delay: merged.delay,
155
+ maxAttempts: merged.attempts,
156
+ backoff: merged.backoff,
157
+ timeout: merged.timeout,
158
+ customId: merged.jobId,
159
+ removeOnComplete: merged.removeOnComplete,
160
+ removeOnFail: merged.removeOnFail,
161
+ };
162
+ });
163
+ const response = await this.tcp.send({
164
+ cmd: 'PUSHB',
165
+ queue: this.name,
166
+ jobs: jobInputs,
167
+ });
168
+ if (!response.ok) {
169
+ const errorMsg = response.error;
170
+ throw new Error(errorMsg ?? 'Failed to add jobs');
171
+ }
172
+ const ids = response.ids;
173
+ return ids.map((id, i) => ({
174
+ id,
175
+ name: jobs[i].name,
176
+ data: jobs[i].data,
177
+ queueName: this.name,
178
+ attemptsMade: 0,
179
+ timestamp: now,
180
+ progress: 0,
181
+ updateProgress: async () => { },
182
+ log: async () => { },
183
+ }));
184
+ }
185
+ async addBulkEmbedded(jobs) {
60
186
  const manager = getSharedManager();
61
187
  const now = Date.now();
62
- // Map to JobInput format
63
188
  const inputs = jobs.map(({ name, data, opts }) => {
64
189
  const merged = { ...this.opts.defaultJobOptions, ...opts };
65
190
  return {
@@ -75,9 +200,7 @@ export class Queue {
75
200
  repeat: merged.repeat,
76
201
  };
77
202
  });
78
- // Single batch push (optimized: single lock, batch INSERT)
79
203
  const jobIds = await manager.pushBatch(this.name, inputs);
80
- // Create public job objects
81
204
  return jobIds.map((id, i) => ({
82
205
  id: String(id),
83
206
  name: jobs[i].name,
@@ -92,79 +215,184 @@ export class Queue {
92
215
  }
93
216
  /** Get a job by ID */
94
217
  async getJob(id) {
95
- const manager = getSharedManager();
96
- const job = await manager.getJob(jobId(id));
97
- if (!job)
218
+ if (this.embedded) {
219
+ const manager = getSharedManager();
220
+ const job = await manager.getJob(jobId(id));
221
+ if (!job)
222
+ return null;
223
+ const jobData = job.data;
224
+ return toPublicJob(job, jobData?.name ?? 'default');
225
+ }
226
+ const response = await this.tcp.send({
227
+ cmd: 'GetJob',
228
+ id,
229
+ });
230
+ if (!response.ok || !response.job)
98
231
  return null;
99
- const jobData = job.data;
100
- return toPublicJob(job, jobData?.name ?? 'default');
232
+ const jobData = response.job;
233
+ const data = jobData.data;
234
+ const attempts = jobData.attempts;
235
+ const createdAt = jobData.createdAt;
236
+ const progress = jobData.progress;
237
+ return {
238
+ id: String(jobData.id),
239
+ name: data?.name ?? 'default',
240
+ data: jobData.data,
241
+ queueName: this.name,
242
+ attemptsMade: attempts ?? 0,
243
+ timestamp: createdAt ?? Date.now(),
244
+ progress: progress ?? 0,
245
+ updateProgress: async () => { },
246
+ log: async () => { },
247
+ };
101
248
  }
102
249
  /** Remove a job by ID */
103
250
  remove(id) {
104
- const manager = getSharedManager();
105
- void manager.cancel(jobId(id));
251
+ if (this.embedded) {
252
+ const manager = getSharedManager();
253
+ void manager.cancel(jobId(id));
254
+ }
255
+ else {
256
+ void this.tcp.send({ cmd: 'Cancel', id });
257
+ }
106
258
  }
107
259
  /** Get job counts by state */
108
260
  getJobCounts() {
109
- const stats = getSharedManager().getStats();
261
+ if (this.embedded) {
262
+ const stats = getSharedManager().getStats();
263
+ return {
264
+ waiting: stats.waiting,
265
+ active: stats.active,
266
+ completed: stats.completed,
267
+ failed: stats.dlq,
268
+ };
269
+ }
270
+ // TCP mode - sync call not ideal, return zeros
271
+ // For accurate counts, use getJobCountsAsync
272
+ return { waiting: 0, active: 0, completed: 0, failed: 0 };
273
+ }
274
+ /** Get job counts (async, works with TCP) */
275
+ async getJobCountsAsync() {
276
+ if (this.embedded) {
277
+ return this.getJobCounts();
278
+ }
279
+ const response = await this.tcp.send({ cmd: 'Stats' });
280
+ if (!response.ok) {
281
+ return { waiting: 0, active: 0, completed: 0, failed: 0 };
282
+ }
283
+ const stats = response.stats;
284
+ if (!stats) {
285
+ return { waiting: 0, active: 0, completed: 0, failed: 0 };
286
+ }
110
287
  return {
111
- waiting: stats.waiting,
112
- active: stats.active,
113
- completed: stats.completed,
114
- failed: stats.dlq,
288
+ waiting: stats.queued ?? 0,
289
+ active: stats.processing ?? 0,
290
+ completed: stats.completed ?? 0,
291
+ failed: stats.dlq ?? 0,
115
292
  };
116
293
  }
117
294
  /** Pause the queue */
118
295
  pause() {
119
- getSharedManager().pause(this.name);
296
+ if (this.embedded) {
297
+ getSharedManager().pause(this.name);
298
+ }
299
+ else {
300
+ void this.tcp.send({ cmd: 'Pause', queue: this.name });
301
+ }
120
302
  }
121
303
  /** Resume the queue */
122
304
  resume() {
123
- getSharedManager().resume(this.name);
305
+ if (this.embedded) {
306
+ getSharedManager().resume(this.name);
307
+ }
308
+ else {
309
+ void this.tcp.send({ cmd: 'Resume', queue: this.name });
310
+ }
124
311
  }
125
312
  /** Remove all waiting jobs */
126
313
  drain() {
127
- getSharedManager().drain(this.name);
314
+ if (this.embedded) {
315
+ getSharedManager().drain(this.name);
316
+ }
317
+ else {
318
+ void this.tcp.send({ cmd: 'Drain', queue: this.name });
319
+ }
128
320
  }
129
321
  /** Remove all queue data (waiting, active, completed, failed) */
130
322
  obliterate() {
131
- getSharedManager().obliterate(this.name);
323
+ if (this.embedded) {
324
+ getSharedManager().obliterate(this.name);
325
+ }
326
+ else {
327
+ void this.tcp.send({ cmd: 'Obliterate', queue: this.name });
328
+ }
132
329
  }
133
- // ============ Stall Detection ============
330
+ // ============ Stall Detection (embedded only for now) ============
134
331
  /** Configure stall detection for this queue */
135
332
  setStallConfig(config) {
333
+ if (!this.embedded) {
334
+ console.warn('setStallConfig is only supported in embedded mode');
335
+ return;
336
+ }
136
337
  const manager = getSharedManager();
137
338
  const shard = getShard(manager, this.name);
138
339
  shard.setStallConfig(this.name, config);
139
340
  }
140
341
  /** Get stall detection configuration */
141
342
  getStallConfig() {
343
+ if (!this.embedded) {
344
+ console.warn('getStallConfig is only supported in embedded mode');
345
+ return { enabled: true, stallInterval: 30000, maxStalls: 3, gracePeriod: 5000 };
346
+ }
142
347
  const manager = getSharedManager();
143
348
  const shard = getShard(manager, this.name);
144
349
  return shard.getStallConfig(this.name);
145
350
  }
146
351
  // ============ DLQ Operations ============
147
- /** Configure DLQ for this queue */
352
+ /** Configure DLQ for this queue (embedded only) */
148
353
  setDlqConfig(config) {
354
+ if (!this.embedded) {
355
+ console.warn('setDlqConfig is only supported in embedded mode');
356
+ return;
357
+ }
149
358
  const manager = getSharedManager();
150
359
  const ctx = getDlqContext(manager);
151
360
  dlqOps.configureDlq(this.name, ctx, config);
152
361
  }
153
- /** Get DLQ configuration */
362
+ /** Get DLQ configuration (embedded only) */
154
363
  getDlqConfig() {
364
+ if (!this.embedded) {
365
+ console.warn('getDlqConfig is only supported in embedded mode');
366
+ return {};
367
+ }
155
368
  const manager = getSharedManager();
156
369
  const ctx = getDlqContext(manager);
157
370
  return dlqOps.getDlqConfig(this.name, ctx);
158
371
  }
159
372
  /** Get DLQ entries with optional filter */
160
373
  getDlq(filter) {
374
+ if (!this.embedded) {
375
+ console.warn('getDlq is only supported in embedded mode, use getDlqAsync for TCP');
376
+ return [];
377
+ }
161
378
  const manager = getSharedManager();
162
379
  const ctx = getDlqContext(manager);
163
380
  const entries = dlqOps.getDlqEntries(this.name, ctx, toDomainFilter(filter));
164
381
  return entries.map((entry) => toDlqEntry(entry));
165
382
  }
166
- /** Get DLQ statistics */
383
+ /** Get DLQ statistics (embedded only) */
167
384
  getDlqStats() {
385
+ if (!this.embedded) {
386
+ console.warn('getDlqStats is only supported in embedded mode');
387
+ return {
388
+ total: 0,
389
+ byReason: {},
390
+ pendingRetry: 0,
391
+ expired: 0,
392
+ oldestEntry: null,
393
+ newestEntry: null,
394
+ };
395
+ }
168
396
  const manager = getSharedManager();
169
397
  const ctx = getDlqContext(manager);
170
398
  const stats = dlqOps.getDlqStats(this.name, ctx);
@@ -179,11 +407,19 @@ export class Queue {
179
407
  }
180
408
  /** Retry jobs from DLQ */
181
409
  retryDlq(id) {
182
- const manager = getSharedManager();
183
- return manager.retryDlq(this.name, id ? jobId(id) : undefined);
410
+ if (this.embedded) {
411
+ const manager = getSharedManager();
412
+ return manager.retryDlq(this.name, id ? jobId(id) : undefined);
413
+ }
414
+ void this.tcp.send({ cmd: 'RetryDlq', queue: this.name, id });
415
+ return 0; // TCP doesn't return count synchronously
184
416
  }
185
- /** Retry DLQ jobs by filter */
417
+ /** Retry DLQ jobs by filter (embedded only) */
186
418
  retryDlqByFilter(filter) {
419
+ if (!this.embedded) {
420
+ console.warn('retryDlqByFilter is only supported in embedded mode');
421
+ return 0;
422
+ }
187
423
  const manager = getSharedManager();
188
424
  const ctx = getDlqContext(manager);
189
425
  const domainFilter = toDomainFilter(filter);
@@ -193,11 +429,19 @@ export class Queue {
193
429
  }
194
430
  /** Purge all jobs from DLQ */
195
431
  purgeDlq() {
196
- return getSharedManager().purgeDlq(this.name);
432
+ if (this.embedded) {
433
+ return getSharedManager().purgeDlq(this.name);
434
+ }
435
+ void this.tcp.send({ cmd: 'PurgeDlq', queue: this.name });
436
+ return 0;
197
437
  }
198
438
  /** Close the queue */
199
- async close() {
200
- // No-op for embedded mode
439
+ close() {
440
+ // Close pool if using pooled connections (not shared)
441
+ if (this.tcpPool) {
442
+ this.tcpPool.close();
443
+ }
444
+ // Shared client is managed globally, don't close
201
445
  }
202
446
  }
203
447
  //# sourceMappingURL=queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/client/queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/client/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * TCP Client for SDK - Production Ready
3
+ * Connects to bunqueue server via TCP with auto-reconnection
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ /** Connection options */
7
+ export interface ConnectionOptions {
8
+ host: string;
9
+ port: number;
10
+ token?: string;
11
+ /** Max reconnection attempts (default: Infinity) */
12
+ maxReconnectAttempts?: number;
13
+ /** Initial reconnect delay in ms (default: 100) */
14
+ reconnectDelay?: number;
15
+ /** Max reconnect delay in ms (default: 30000) */
16
+ maxReconnectDelay?: number;
17
+ /** Connection timeout in ms (default: 5000) */
18
+ connectTimeout?: number;
19
+ /** Command timeout in ms (default: 30000) */
20
+ commandTimeout?: number;
21
+ /** Enable auto-reconnect (default: true) */
22
+ autoReconnect?: boolean;
23
+ /** Health check ping interval in ms (default: 30000, 0 to disable) */
24
+ pingInterval?: number;
25
+ }
26
+ /** Default connection */
27
+ export declare const DEFAULT_CONNECTION: Required<ConnectionOptions>;
28
+ /**
29
+ * TCP Client - manages connection to bunqueue server
30
+ * Production-ready with auto-reconnection and exponential backoff
31
+ */
32
+ export declare class TcpClient extends EventEmitter {
33
+ private socket;
34
+ private connected;
35
+ private connecting;
36
+ private closed;
37
+ private reconnectAttempts;
38
+ private reconnectTimer;
39
+ private pingTimer;
40
+ private readonly options;
41
+ private pendingCommands;
42
+ private currentCommand;
43
+ constructor(options?: Partial<ConnectionOptions>);
44
+ /** Connect to server */
45
+ connect(): Promise<void>;
46
+ private doConnect;
47
+ /** Start periodic health check ping */
48
+ private startPing;
49
+ /** Stop health check ping */
50
+ private stopPing;
51
+ /** Send ping to check connection health */
52
+ ping(): Promise<boolean>;
53
+ /** Schedule reconnection with exponential backoff */
54
+ private scheduleReconnect;
55
+ /** Internal send without auto-connect */
56
+ private sendInternal;
57
+ /** Process next pending command */
58
+ private processNextCommand;
59
+ /** Send command and wait for response */
60
+ send(command: Record<string, unknown>): Promise<Record<string, unknown>>;
61
+ /** Close connection */
62
+ close(): void;
63
+ /** Check if connected */
64
+ isConnected(): boolean;
65
+ /** Get connection state */
66
+ getState(): 'connected' | 'connecting' | 'disconnected' | 'closed';
67
+ }
68
+ /** Get shared TCP client */
69
+ export declare function getSharedTcpClient(options?: Partial<ConnectionOptions>): TcpClient;
70
+ /** Close shared client */
71
+ export declare function closeSharedTcpClient(): void;
72
+ //# sourceMappingURL=tcpClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcpClient.d.ts","sourceRoot":"","sources":["../../src/client/tcpClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,yBAAyB;AACzB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,yBAAyB;AACzB,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,iBAAiB,CAW1D,CAAC;AAiBF;;;GAGG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,cAAc,CAA+B;gBAEzC,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAKpD,wBAAwB;IAClB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAuChB,SAAS;IAyIvB,uCAAuC;IACvC,OAAO,CAAC,SAAS;IAQjB,6BAA6B;IAC7B,OAAO,CAAC,QAAQ;IAOhB,2CAA2C;IACrC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAU9B,qDAAqD;IACrD,OAAO,CAAC,iBAAiB;IAuCzB,yCAAyC;YAC3B,YAAY;IAqB1B,mCAAmC;IACnC,OAAO,CAAC,kBAAkB;IAW1B,yCAAyC;IACnC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA6B9E,uBAAuB;IACvB,KAAK,IAAI,IAAI;IA6Bb,yBAAyB;IACzB,WAAW,IAAI,OAAO;IAItB,2BAA2B;IAC3B,QAAQ,IAAI,WAAW,GAAG,YAAY,GAAG,cAAc,GAAG,QAAQ;CAMnE;AAKD,4BAA4B;AAC5B,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAGlF;AAED,0BAA0B;AAC1B,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C"}