bunqueue 1.9.8 → 2.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.
Files changed (219) hide show
  1. package/dist/application/backgroundTasks.d.ts +10 -0
  2. package/dist/application/backgroundTasks.d.ts.map +1 -1
  3. package/dist/application/backgroundTasks.js +64 -13
  4. package/dist/application/backgroundTasks.js.map +1 -1
  5. package/dist/application/cleanupTasks.js +5 -1
  6. package/dist/application/cleanupTasks.js.map +1 -1
  7. package/dist/application/clientTracking.d.ts.map +1 -1
  8. package/dist/application/clientTracking.js +25 -16
  9. package/dist/application/clientTracking.js.map +1 -1
  10. package/dist/application/contextFactory.d.ts.map +1 -1
  11. package/dist/application/contextFactory.js +1 -0
  12. package/dist/application/contextFactory.js.map +1 -1
  13. package/dist/application/dependencyProcessor.d.ts.map +1 -1
  14. package/dist/application/dependencyProcessor.js +14 -13
  15. package/dist/application/dependencyProcessor.js.map +1 -1
  16. package/dist/application/eventsManager.d.ts.map +1 -1
  17. package/dist/application/eventsManager.js +16 -4
  18. package/dist/application/eventsManager.js.map +1 -1
  19. package/dist/application/jobLogsManager.d.ts +2 -2
  20. package/dist/application/jobLogsManager.d.ts.map +1 -1
  21. package/dist/application/jobLogsManager.js +13 -3
  22. package/dist/application/jobLogsManager.js.map +1 -1
  23. package/dist/application/lockManager.d.ts +1 -0
  24. package/dist/application/lockManager.d.ts.map +1 -1
  25. package/dist/application/lockManager.js +54 -36
  26. package/dist/application/lockManager.js.map +1 -1
  27. package/dist/application/operations/ack.d.ts +3 -1
  28. package/dist/application/operations/ack.d.ts.map +1 -1
  29. package/dist/application/operations/ack.js +25 -1
  30. package/dist/application/operations/ack.js.map +1 -1
  31. package/dist/application/operations/ackHelpers.d.ts +1 -0
  32. package/dist/application/operations/ackHelpers.d.ts.map +1 -1
  33. package/dist/application/operations/ackHelpers.js +12 -1
  34. package/dist/application/operations/ackHelpers.js.map +1 -1
  35. package/dist/application/operations/jobManagement.d.ts +1 -1
  36. package/dist/application/operations/jobManagement.d.ts.map +1 -1
  37. package/dist/application/operations/jobManagement.js +23 -3
  38. package/dist/application/operations/jobManagement.js.map +1 -1
  39. package/dist/application/operations/push.d.ts +1 -1
  40. package/dist/application/operations/push.d.ts.map +1 -1
  41. package/dist/application/operations/push.js +25 -9
  42. package/dist/application/operations/push.js.map +1 -1
  43. package/dist/application/operations/queryOperations.d.ts +3 -0
  44. package/dist/application/operations/queryOperations.d.ts.map +1 -1
  45. package/dist/application/operations/queryOperations.js +29 -0
  46. package/dist/application/operations/queryOperations.js.map +1 -1
  47. package/dist/application/queueManager.d.ts +15 -1
  48. package/dist/application/queueManager.d.ts.map +1 -1
  49. package/dist/application/queueManager.js +77 -3
  50. package/dist/application/queueManager.js.map +1 -1
  51. package/dist/application/stallDetection.js +27 -22
  52. package/dist/application/stallDetection.js.map +1 -1
  53. package/dist/application/types.js +1 -1
  54. package/dist/application/types.js.map +1 -1
  55. package/dist/application/webhookManager.d.ts.map +1 -1
  56. package/dist/application/webhookManager.js +18 -2
  57. package/dist/application/webhookManager.js.map +1 -1
  58. package/dist/application/workerManager.d.ts.map +1 -1
  59. package/dist/application/workerManager.js +4 -2
  60. package/dist/application/workerManager.js.map +1 -1
  61. package/dist/cli/client.d.ts +3 -5
  62. package/dist/cli/client.d.ts.map +1 -1
  63. package/dist/cli/client.js +31 -27
  64. package/dist/cli/client.js.map +1 -1
  65. package/dist/cli/commands/core.js +3 -3
  66. package/dist/cli/commands/core.js.map +1 -1
  67. package/dist/cli/commands/job.js +14 -14
  68. package/dist/cli/commands/job.js.map +1 -1
  69. package/dist/cli/commands/server.d.ts.map +1 -1
  70. package/dist/cli/commands/server.js +5 -29
  71. package/dist/cli/commands/server.js.map +1 -1
  72. package/dist/cli/index.d.ts.map +1 -1
  73. package/dist/cli/index.js +1 -9
  74. package/dist/cli/index.js.map +1 -1
  75. package/dist/client/events.d.ts +29 -1
  76. package/dist/client/events.d.ts.map +1 -1
  77. package/dist/client/events.js +96 -28
  78. package/dist/client/events.js.map +1 -1
  79. package/dist/client/flow.d.ts +144 -3
  80. package/dist/client/flow.d.ts.map +1 -1
  81. package/dist/client/flow.js +538 -68
  82. package/dist/client/flow.js.map +1 -1
  83. package/dist/client/index.d.ts +2 -2
  84. package/dist/client/index.d.ts.map +1 -1
  85. package/dist/client/queue/queue.d.ts +260 -1
  86. package/dist/client/queue/queue.d.ts.map +1 -1
  87. package/dist/client/queue/queue.js +1346 -17
  88. package/dist/client/queue/queue.js.map +1 -1
  89. package/dist/client/sandboxed/types.d.ts +1 -0
  90. package/dist/client/sandboxed/types.d.ts.map +1 -1
  91. package/dist/client/sandboxed/worker.d.ts +1 -0
  92. package/dist/client/sandboxed/worker.d.ts.map +1 -1
  93. package/dist/client/sandboxed/worker.js +31 -8
  94. package/dist/client/sandboxed/worker.js.map +1 -1
  95. package/dist/client/sandboxed/wrapper.d.ts.map +1 -1
  96. package/dist/client/sandboxed/wrapper.js +10 -1
  97. package/dist/client/sandboxed/wrapper.js.map +1 -1
  98. package/dist/client/tcp/client.d.ts +4 -1
  99. package/dist/client/tcp/client.d.ts.map +1 -1
  100. package/dist/client/tcp/client.js +26 -8
  101. package/dist/client/tcp/client.js.map +1 -1
  102. package/dist/client/tcp/connection.d.ts +6 -8
  103. package/dist/client/tcp/connection.d.ts.map +1 -1
  104. package/dist/client/tcp/connection.js +24 -22
  105. package/dist/client/tcp/connection.js.map +1 -1
  106. package/dist/client/tcp/index.d.ts +0 -1
  107. package/dist/client/tcp/index.d.ts.map +1 -1
  108. package/dist/client/tcp/index.js +0 -1
  109. package/dist/client/tcp/index.js.map +1 -1
  110. package/dist/client/tcp/types.d.ts +8 -13
  111. package/dist/client/tcp/types.d.ts.map +1 -1
  112. package/dist/client/tcp/types.js +0 -1
  113. package/dist/client/tcp/types.js.map +1 -1
  114. package/dist/client/tcpPool.d.ts.map +1 -1
  115. package/dist/client/tcpPool.js +19 -14
  116. package/dist/client/tcpPool.js.map +1 -1
  117. package/dist/client/types.d.ts +430 -13
  118. package/dist/client/types.d.ts.map +1 -1
  119. package/dist/client/types.js +346 -5
  120. package/dist/client/types.js.map +1 -1
  121. package/dist/client/worker/ackBatcher.d.ts +2 -1
  122. package/dist/client/worker/ackBatcher.d.ts.map +1 -1
  123. package/dist/client/worker/ackBatcher.js +29 -18
  124. package/dist/client/worker/ackBatcher.js.map +1 -1
  125. package/dist/client/worker/jobParser.d.ts.map +1 -1
  126. package/dist/client/worker/jobParser.js +8 -7
  127. package/dist/client/worker/jobParser.js.map +1 -1
  128. package/dist/client/worker/processor.d.ts.map +1 -1
  129. package/dist/client/worker/processor.js +15 -6
  130. package/dist/client/worker/processor.js.map +1 -1
  131. package/dist/client/worker/worker.d.ts +117 -0
  132. package/dist/client/worker/worker.d.ts.map +1 -1
  133. package/dist/client/worker/worker.js +375 -3
  134. package/dist/client/worker/worker.js.map +1 -1
  135. package/dist/domain/queue/dlqShard.d.ts +2 -0
  136. package/dist/domain/queue/dlqShard.d.ts.map +1 -1
  137. package/dist/domain/queue/dlqShard.js +12 -2
  138. package/dist/domain/queue/dlqShard.js.map +1 -1
  139. package/dist/domain/queue/priorityQueue.d.ts.map +1 -1
  140. package/dist/domain/queue/priorityQueue.js +24 -18
  141. package/dist/domain/queue/priorityQueue.js.map +1 -1
  142. package/dist/domain/queue/shard.d.ts +8 -2
  143. package/dist/domain/queue/shard.d.ts.map +1 -1
  144. package/dist/domain/queue/shard.js +27 -9
  145. package/dist/domain/queue/shard.js.map +1 -1
  146. package/dist/domain/queue/temporalManager.d.ts +1 -0
  147. package/dist/domain/queue/temporalManager.d.ts.map +1 -1
  148. package/dist/domain/queue/temporalManager.js +2 -1
  149. package/dist/domain/queue/temporalManager.js.map +1 -1
  150. package/dist/domain/queue/uniqueKeyManager.d.ts +2 -2
  151. package/dist/domain/queue/uniqueKeyManager.d.ts.map +1 -1
  152. package/dist/domain/queue/uniqueKeyManager.js +3 -3
  153. package/dist/domain/queue/uniqueKeyManager.js.map +1 -1
  154. package/dist/domain/types/command.d.ts +6 -0
  155. package/dist/domain/types/command.d.ts.map +1 -1
  156. package/dist/domain/types/job.d.ts +89 -2
  157. package/dist/domain/types/job.d.ts.map +1 -1
  158. package/dist/domain/types/job.js +94 -26
  159. package/dist/domain/types/job.js.map +1 -1
  160. package/dist/domain/types/queue.d.ts +11 -1
  161. package/dist/domain/types/queue.d.ts.map +1 -1
  162. package/dist/infrastructure/persistence/sqlite.d.ts +2 -0
  163. package/dist/infrastructure/persistence/sqlite.d.ts.map +1 -1
  164. package/dist/infrastructure/persistence/sqlite.js +5 -1
  165. package/dist/infrastructure/persistence/sqlite.js.map +1 -1
  166. package/dist/infrastructure/persistence/sqliteBatch.d.ts +9 -4
  167. package/dist/infrastructure/persistence/sqliteBatch.d.ts.map +1 -1
  168. package/dist/infrastructure/persistence/sqliteBatch.js +38 -21
  169. package/dist/infrastructure/persistence/sqliteBatch.js.map +1 -1
  170. package/dist/infrastructure/persistence/sqliteSerializer.d.ts.map +1 -1
  171. package/dist/infrastructure/persistence/sqliteSerializer.js +14 -0
  172. package/dist/infrastructure/persistence/sqliteSerializer.js.map +1 -1
  173. package/dist/infrastructure/persistence/statements.d.ts +1 -1
  174. package/dist/infrastructure/persistence/statements.d.ts.map +1 -1
  175. package/dist/infrastructure/persistence/statements.js +3 -2
  176. package/dist/infrastructure/persistence/statements.js.map +1 -1
  177. package/dist/infrastructure/scheduler/cronScheduler.d.ts +7 -0
  178. package/dist/infrastructure/scheduler/cronScheduler.d.ts.map +1 -1
  179. package/dist/infrastructure/scheduler/cronScheduler.js +46 -12
  180. package/dist/infrastructure/scheduler/cronScheduler.js.map +1 -1
  181. package/dist/infrastructure/server/handlers/core.d.ts.map +1 -1
  182. package/dist/infrastructure/server/handlers/core.js +26 -19
  183. package/dist/infrastructure/server/handlers/core.js.map +1 -1
  184. package/dist/infrastructure/server/handlers/query.d.ts.map +1 -1
  185. package/dist/infrastructure/server/handlers/query.js +1 -16
  186. package/dist/infrastructure/server/handlers/query.js.map +1 -1
  187. package/dist/infrastructure/server/http.d.ts.map +1 -1
  188. package/dist/infrastructure/server/http.js +27 -2
  189. package/dist/infrastructure/server/http.js.map +1 -1
  190. package/dist/infrastructure/server/protocol.d.ts +15 -1
  191. package/dist/infrastructure/server/protocol.d.ts.map +1 -1
  192. package/dist/infrastructure/server/protocol.js +37 -3
  193. package/dist/infrastructure/server/protocol.js.map +1 -1
  194. package/dist/infrastructure/server/rateLimiter.d.ts.map +1 -1
  195. package/dist/infrastructure/server/rateLimiter.js +5 -3
  196. package/dist/infrastructure/server/rateLimiter.js.map +1 -1
  197. package/dist/infrastructure/server/tcp.d.ts +8 -10
  198. package/dist/infrastructure/server/tcp.d.ts.map +1 -1
  199. package/dist/infrastructure/server/tcp.js +87 -46
  200. package/dist/infrastructure/server/tcp.js.map +1 -1
  201. package/dist/main.js +7 -6
  202. package/dist/main.js.map +1 -1
  203. package/dist/shared/lock.d.ts +1 -1
  204. package/dist/shared/lock.d.ts.map +1 -1
  205. package/dist/shared/lock.js +6 -4
  206. package/dist/shared/lock.js.map +1 -1
  207. package/dist/shared/lru.d.ts +51 -0
  208. package/dist/shared/lru.d.ts.map +1 -1
  209. package/dist/shared/lru.js +89 -3
  210. package/dist/shared/lru.js.map +1 -1
  211. package/dist/shared/skipList.d.ts +10 -2
  212. package/dist/shared/skipList.d.ts.map +1 -1
  213. package/dist/shared/skipList.js +22 -1
  214. package/dist/shared/skipList.js.map +1 -1
  215. package/package.json +1 -1
  216. package/dist/client/tcp/lineBuffer.d.ts +0 -17
  217. package/dist/client/tcp/lineBuffer.d.ts.map +0 -1
  218. package/dist/client/tcp/lineBuffer.js +0 -32
  219. package/dist/client/tcp/lineBuffer.js.map +0 -1
@@ -13,7 +13,15 @@ export async function processJob(internalJob, config) {
13
13
  const jobData = internalJob.data;
14
14
  const jobName = jobData?.name ?? 'default';
15
15
  const jobIdStr = String(internalJob.id);
16
- const job = createPublicJob(internalJob, jobName, createProgressHandler(embedded, tcp, emitter), createLogHandler(embedded, tcp));
16
+ // Use a holder to break the circular reference between job and progress handler
17
+ const jobHolder = { current: null };
18
+ const job = createPublicJob({
19
+ job: internalJob,
20
+ name: jobName,
21
+ updateProgress: createProgressHandler(embedded, tcp, emitter, jobHolder),
22
+ log: createLogHandler(embedded, tcp),
23
+ });
24
+ jobHolder.current = job;
17
25
  emitter.emit('active', job);
18
26
  try {
19
27
  const result = await processor(job);
@@ -24,7 +32,7 @@ export async function processJob(internalJob, config) {
24
32
  }
25
33
  else {
26
34
  // Queue with token for batch ACK
27
- ackBatcher.queue(jobIdStr, result, token ?? undefined);
35
+ void ackBatcher.queue(jobIdStr, result, token ?? undefined);
28
36
  }
29
37
  job.returnvalue = result;
30
38
  emitter.emit('completed', job, result);
@@ -33,7 +41,7 @@ export async function processJob(internalJob, config) {
33
41
  await handleJobFailure(internalJob, error, config, { job, jobIdStr, token });
34
42
  }
35
43
  }
36
- function createProgressHandler(embedded, tcp, emitter) {
44
+ function createProgressHandler(embedded, tcp, emitter, jobHolder) {
37
45
  return async (id, progress, message) => {
38
46
  if (embedded) {
39
47
  const manager = getSharedManager();
@@ -42,13 +50,14 @@ function createProgressHandler(embedded, tcp, emitter) {
42
50
  else if (tcp) {
43
51
  await tcp.send({ cmd: 'Progress', id, progress, message });
44
52
  }
45
- emitter.emit('progress', null, progress);
53
+ emitter.emit('progress', jobHolder.current, progress);
46
54
  };
47
55
  }
48
56
  function createLogHandler(embedded, tcp) {
49
57
  return async (id, message) => {
50
58
  if (embedded) {
51
59
  const manager = getSharedManager();
60
+ // addLog is synchronous (in-memory Map update)
52
61
  manager.addLog(jobId(id), message);
53
62
  }
54
63
  else if (tcp) {
@@ -67,12 +76,12 @@ async function handleJobFailure(internalJob, error, config, context) {
67
76
  await manager.fail(internalJob.id, err.message, token ?? undefined);
68
77
  }
69
78
  else if (tcp) {
70
- // Include token for lock verification
79
+ // Include token for lock verification (only if defined)
71
80
  await tcp.send({
72
81
  cmd: 'FAIL',
73
82
  id: internalJob.id,
74
83
  error: err.message,
75
- token: token ?? undefined,
84
+ ...(token ? { token } : {}),
76
85
  });
77
86
  }
78
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../src/client/worker/processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../../src/client/worker/processor.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { EventEmitter } from 'events';
6
6
  import type { WorkerOptions, Processor } from '../types';
7
+ import type { Job as InternalJob } from '../../domain/types/job';
7
8
  /**
8
9
  * Worker class for processing jobs
9
10
  */
@@ -16,25 +17,141 @@ export declare class Worker<T = unknown, R = unknown> extends EventEmitter {
16
17
  private readonly tcpPool;
17
18
  private readonly ackBatcher;
18
19
  private running;
20
+ private paused;
19
21
  private closing;
22
+ private closed;
20
23
  private activeJobs;
21
24
  private pollTimer;
22
25
  private consecutiveErrors;
23
26
  private readonly activeJobIds;
24
27
  private readonly pulledJobIds;
25
28
  private readonly jobTokens;
29
+ private readonly cancelledJobs;
26
30
  private heartbeatTimer;
27
31
  private readonly workerId;
28
32
  private pendingJobs;
29
33
  private pendingJobsHead;
30
34
  private processingScheduled;
35
+ private readonly limiter;
36
+ private limiterTokens;
37
+ private lastDrainedEmit;
38
+ private stalledUnsubscribe;
31
39
  constructor(name: string, processor: Processor<T, R>, opts?: WorkerOptions);
32
40
  /** Start processing */
33
41
  run(): void;
42
+ /** Subscribe to stalled events from QueueManager (BullMQ v5 compatible) */
43
+ private subscribeToStalledEvents;
34
44
  /** Pause processing */
35
45
  pause(): void;
36
46
  /** Resume processing */
37
47
  resume(): void;
48
+ /** Check if worker is currently running */
49
+ isRunning(): boolean;
50
+ /** Check if worker is paused */
51
+ isPaused(): boolean;
52
+ /** Check if worker is closed */
53
+ isClosed(): boolean;
54
+ /**
55
+ * Wait until the worker is ready (BullMQ v5 compatible).
56
+ * In embedded mode, resolves immediately.
57
+ * In TCP mode, waits for connection to be established.
58
+ */
59
+ waitUntilReady(): Promise<void>;
60
+ /**
61
+ * Mark a job for cancellation (BullMQ v5 compatible).
62
+ * The job will be failed with the given reason when it completes processing.
63
+ * Returns true if the job was found and marked for cancellation.
64
+ */
65
+ cancelJob(jobId: string, reason?: string): boolean;
66
+ /**
67
+ * Mark all active jobs for cancellation (BullMQ v5 compatible).
68
+ */
69
+ cancelAllJobs(reason?: string): void;
70
+ /**
71
+ * Check if a job has been marked for cancellation.
72
+ * Can be called from within a processor to check if the job should stop.
73
+ */
74
+ isJobCancelled(jobId: string): boolean;
75
+ /**
76
+ * Check if rate limiter allows processing another job.
77
+ * Returns true if we can process, false if rate limited.
78
+ */
79
+ private canProcessWithinLimit;
80
+ /**
81
+ * Record a job completion for rate limiting.
82
+ */
83
+ private recordJobForLimiter;
84
+ /**
85
+ * Get time until rate limiter allows next job (ms).
86
+ * Returns 0 if not rate limited.
87
+ */
88
+ private getTimeUntilNextSlot;
89
+ /**
90
+ * Get rate limiter info (for debugging/monitoring).
91
+ */
92
+ getRateLimiterInfo(): {
93
+ current: number;
94
+ max: number;
95
+ duration: number;
96
+ } | null;
97
+ /**
98
+ * Apply rate limiting to this worker (BullMQ v5 compatible).
99
+ * The worker will not process jobs until the rate limit expires.
100
+ *
101
+ * @param expireTimeMs - Time in milliseconds until rate limit expires
102
+ */
103
+ rateLimit(expireTimeMs: number): void;
104
+ /** Rate limit expiration timestamp (internal) */
105
+ private rateLimitExpiration;
106
+ /**
107
+ * Check if worker is currently rate limited.
108
+ */
109
+ isRateLimited(): boolean;
110
+ /**
111
+ * Manually start the stalled job check timer (BullMQ v5 compatible).
112
+ * The check will run once immediately and then every stalledInterval ms.
113
+ * In bunqueue, stall detection is handled automatically by the manager/server.
114
+ */
115
+ startStalledCheckTimer(): Promise<void>;
116
+ /**
117
+ * Delay processing for a specified time (BullMQ v5 compatible).
118
+ * The worker will not pick up new jobs during this delay.
119
+ *
120
+ * @param milliseconds - Time to delay in ms (default: 0)
121
+ * @param abortController - Optional AbortController to cancel the delay
122
+ */
123
+ delay(milliseconds?: number, abortController?: AbortController): Promise<void>;
124
+ /**
125
+ * Get the next job from the queue (BullMQ v5 compatible).
126
+ * This is for manual job processing - typically you'd use the processor callback instead.
127
+ *
128
+ * @param token - Lock token for job ownership
129
+ * @param opts - Options (currently unused, for API compatibility)
130
+ * @returns The next job or undefined if queue is empty
131
+ */
132
+ getNextJob(token?: string, _opts?: {
133
+ block?: boolean;
134
+ }): Promise<InternalJob | undefined>;
135
+ /**
136
+ * Manually process a job (BullMQ v5 compatible).
137
+ * This is for advanced use cases where you need manual control over job processing.
138
+ *
139
+ * @param job - The job to process
140
+ * @param token - Lock token for job ownership
141
+ * @param fetchNextCallback - Optional callback to fetch next job after completion
142
+ * @returns The processed job or void
143
+ */
144
+ processJobManually(job: InternalJob, token?: string, fetchNextCallback?: () => Promise<InternalJob | undefined>): Promise<InternalJob | undefined>;
145
+ /**
146
+ * Extend locks on multiple jobs (BullMQ v5 compatible).
147
+ * Used to prevent jobs from being considered stalled during long processing.
148
+ *
149
+ * @param jobIds - Array of job IDs to extend locks for
150
+ * @param tokens - Array of lock tokens corresponding to each job
151
+ * @param duration - Duration in milliseconds to extend the lock
152
+ * @returns Number of locks successfully extended
153
+ */
154
+ extendJobLocks(jobIds: string[], tokens: string[], duration: number): Promise<number>;
38
155
  /** Close worker gracefully */
39
156
  close(force?: boolean): Promise<void>;
40
157
  private startHeartbeat;
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/client/worker/worker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAqB,MAAM,UAAU,CAAC;AAQ5E;;GAEG;AACH,qBAAa,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAE,SAAQ,YAAY;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,iBAAiB,CAAK;IAI9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,OAAO,CAAC,cAAc,CAA+C;IAGrE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAGlC,OAAO,CAAC,WAAW,CAAyD;IAC5E,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,mBAAmB,CAAS;gBAExB,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,GAAE,aAAkB;IA+C9E,uBAAuB;IACvB,GAAG,IAAI,IAAI;IAYX,uBAAuB;IACvB,KAAK,IAAI,IAAI;IAQb,wBAAwB;IACxB,MAAM,IAAI,IAAI;IAId,8BAA8B;IACxB,KAAK,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCzC,OAAO,CAAC,cAAc;YAIR,aAAa;IAiC3B,OAAO,CAAC,IAAI;YAYE,UAAU;IAqCxB,kDAAkD;IAClD,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;YAWR,SAAS;YAQT,YAAY;YAwBZ,OAAO;IA2CrB,OAAO,CAAC,QAAQ;IA2ChB,OAAO,CAAC,eAAe;CAoBxB"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/client/worker/worker.ts"],"names":[],"mappings":"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"}