@dbos-inc/dbos-sdk 4.24.3-preview → 4.24.6-preview

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.
@@ -120,34 +120,36 @@ declare class WFQueueRunner {
120
120
  readonly wfQueuesByName: Map<string, WorkflowQueue>;
121
121
  private isRunning;
122
122
  private abortController?;
123
- private exec?;
124
123
  private listenQueueNames;
125
- private readonly activeLoops;
126
- private readonly runningQueueNames;
124
+ /** Per-queue scheduling state, keyed by queue name. */
125
+ private readonly states;
126
+ /** Names already warned about colliding with an in-memory queue (warn-once). */
127
+ private readonly conflictWarned;
127
128
  private static readonly defaultMinPollingIntervalMs;
128
129
  private static readonly defaultMaxPollingIntervalMs;
129
- private static readonly supervisorIntervalMs;
130
+ private static readonly reconcileIntervalMs;
131
+ private static readonly transitionIntervalMs;
130
132
  private readonly backoffFactor;
131
133
  private readonly scalebackFactor;
132
134
  private readonly jitterMin;
133
135
  private readonly jitterMax;
134
136
  stop(): void;
135
137
  clearRegistrations(): void;
136
- private launchQueueLoop;
137
138
  dispatchLoop(exec: DBOSExecutor, listenQueuesArg: (WorkflowQueue | string)[] | null): Promise<void>;
138
- /**
139
- * Emit a single log block describing every queue this process will dispatch
140
- * for. Called once at dispatcher startup, after discovery has completed.
141
- */
139
+ /** Resolve the listenQueues argument to the set of in-memory queues to dispatch for. */
140
+ private resolveInMemoryQueues;
141
+ /** Begin tracking a queue if it isn't already, scheduling its first poll one interval out. */
142
+ private ensureState;
143
+ /** Reconcile DB-backed queues against the queues table in one query: refresh, add, or drop them. */
144
+ private refreshDbQueues;
145
+ /** Log every queue this process will dispatch for, once at startup after discovery. */
142
146
  private logRunningQueues;
143
- /**
144
- * List the queues table and launch a worker for any database-backed queue
145
- * that isn't already running. Skips names that collide with an in-memory
146
- * queue (with a warn-once log) and respects the `listenQueues` filter.
147
- */
148
- private discoverAndLaunchDbQueues;
149
- private superviseLoop;
150
- private runQueue;
147
+ /** The single dispatcher loop: reconcile queues, transition delayed workflows once, poll due queues sequentially. */
148
+ private schedulerLoop;
149
+ /** Poll one queue once, starting ready workflows; returns true if DB contention was detected. */
150
+ private pollQueue;
151
+ /** After a poll, grow the interval on contention or shrink it toward the minimum, then schedule the next poll with jitter. */
152
+ private adjustInterval;
151
153
  }
152
154
  export declare const wfQueueRunner: WFQueueRunner;
153
155
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"wfqueue.d.ts","sourceRoot":"","sources":["../../src/wfqueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wfqueue.d.ts","sourceRoot":"","sources":["../../src/wfqueue.ts"],"names":[],"mappings":"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"}
@@ -256,13 +256,15 @@ class WFQueueRunner {
256
256
  wfQueuesByName = new Map();
257
257
  isRunning = false;
258
258
  abortController;
259
- exec;
260
259
  listenQueueNames = null;
261
- activeLoops = new Set();
262
- runningQueueNames = new Set();
260
+ /** Per-queue scheduling state, keyed by queue name. */
261
+ states = new Map();
262
+ /** Names already warned about colliding with an in-memory queue (warn-once). */
263
+ conflictWarned = new Set();
263
264
  static defaultMinPollingIntervalMs = 1000;
264
265
  static defaultMaxPollingIntervalMs = 120000;
265
- static supervisorIntervalMs = 1000;
266
+ static reconcileIntervalMs = 1000;
267
+ static transitionIntervalMs = 1000;
266
268
  backoffFactor = 2.0;
267
269
  scalebackFactor = 0.9;
268
270
  jitterMin = 0.95;
@@ -276,106 +278,57 @@ class WFQueueRunner {
276
278
  clearRegistrations() {
277
279
  this.wfQueuesByName.clear();
278
280
  }
279
- launchQueueLoop(queue) {
280
- if (this.runningQueueNames.has(queue.name))
281
- return;
282
- this.runningQueueNames.add(queue.name);
283
- const loop = this.runQueue(this.exec, queue);
284
- this.activeLoops.add(loop);
285
- void loop.finally(() => {
286
- this.activeLoops.delete(loop);
287
- this.runningQueueNames.delete(queue.name);
288
- });
289
- }
290
281
  async dispatchLoop(exec, listenQueuesArg) {
291
282
  this.isRunning = true;
292
- this.exec = exec;
283
+ this.states.clear();
284
+ this.conflictWarned.clear();
293
285
  this.listenQueueNames = listenQueuesArg
294
286
  ? new Set(listenQueuesArg.map((entry) => (typeof entry === 'string' ? entry : entry.name)))
295
287
  : null;
296
288
  this.abortController = new AbortController();
297
- // Always run the internal queue worker — it is process-private and not
298
- // subject to the user's listenQueues filter.
289
+ const startNow = Date.now();
290
+ // The internal queue is process-private and bypasses the listenQueues filter.
299
291
  const internal = this.wfQueuesByName.get(utils_1.INTERNAL_QUEUE_NAME);
300
292
  if (internal)
301
- this.launchQueueLoop(internal);
302
- // Resolve the user-supplied listen list against the in-memory registry.
303
- // String entries that don't match an in-memory queue are deferred — a
304
- // database-backed queue with that name will be picked up by the
305
- // supervisor below.
306
- let inMemoryToLaunch;
307
- if (listenQueuesArg !== null) {
308
- inMemoryToLaunch = [];
309
- for (const entry of listenQueuesArg) {
310
- if (typeof entry === 'string') {
311
- const q = this.wfQueuesByName.get(entry);
312
- if (q)
313
- inMemoryToLaunch.push(q);
314
- }
315
- else {
316
- inMemoryToLaunch.push(entry);
317
- }
318
- }
319
- }
320
- else {
321
- inMemoryToLaunch = Array.from(this.wfQueuesByName.values()).filter((q) => q.name !== utils_1.INTERNAL_QUEUE_NAME);
293
+ this.ensureState(internal, startNow);
294
+ // Unmatched string entries are deferred to refreshDbQueues as DB-backed queues.
295
+ for (const q of this.resolveInMemoryQueues(listenQueuesArg)) {
296
+ this.ensureState(q, startNow);
322
297
  }
323
- for (const q of inMemoryToLaunch) {
324
- this.launchQueueLoop(q);
325
- }
326
- // Discover any database-backed queues registered before launch and start
327
- // their workers synchronously so an immediate enqueue on a DB-backed
328
- // queue does not race the first supervisor cycle.
329
- await this.discoverAndLaunchDbQueues(exec);
330
- // Log everything we're now dispatching for, before the supervisor starts.
331
- await this.logRunningQueues(exec);
332
- // Periodic supervisor: picks up queues registered after launch.
333
- const supervisor = this.superviseLoop(exec);
334
- this.activeLoops.add(supervisor);
335
- void supervisor.finally(() => this.activeLoops.delete(supervisor));
336
- // Wait until stop() is called, then wait for all loops to drain
337
- await (0, utils_1.waitForAbort)(this.abortController.signal);
338
- await Promise.all(this.activeLoops);
298
+ // Add pre-launch DB-backed queues now so an immediate enqueue can't race the first reconcile.
299
+ await this.refreshDbQueues(exec, startNow);
300
+ // Log everything we're now dispatching for, before the loop starts.
301
+ this.logRunningQueues(exec);
302
+ // One loop drives every queue, so idle cost is O(1) not O(#queues); returns when stop() aborts.
303
+ await this.schedulerLoop(exec, startNow);
339
304
  }
340
- /**
341
- * Emit a single log block describing every queue this process will dispatch
342
- * for. Called once at dispatcher startup, after discovery has completed.
343
- */
344
- async logRunningQueues(exec) {
345
- const logger = exec.logger;
346
- const merged = new Map();
347
- for (const [qn, q] of this.wfQueuesByName) {
348
- merged.set(qn, q);
305
+ /** Resolve the listenQueues argument to the set of in-memory queues to dispatch for. */
306
+ resolveInMemoryQueues(listenQueuesArg) {
307
+ if (listenQueuesArg === null) {
308
+ return Array.from(this.wfQueuesByName.values()).filter((q) => q.name !== utils_1.INTERNAL_QUEUE_NAME);
349
309
  }
350
- try {
351
- const records = await exec.systemDatabase.listQueues();
352
- for (const record of records) {
353
- if (!merged.has(record.name)) {
354
- merged.set(record.name, WorkflowQueue._fromRecord(record));
355
- }
310
+ const result = [];
311
+ for (const entry of listenQueuesArg) {
312
+ if (typeof entry === 'string') {
313
+ const q = this.wfQueuesByName.get(entry);
314
+ if (q)
315
+ result.push(q);
356
316
  }
357
- }
358
- catch (e) {
359
- logger.warn(`Exception listing database-backed queues: ${e.message}`);
360
- }
361
- if (this.listenQueueNames !== null) {
362
- for (const name of Array.from(merged.keys())) {
363
- if (!this.listenQueueNames.has(name))
364
- merged.delete(name);
317
+ else {
318
+ result.push(entry);
365
319
  }
366
320
  }
367
- merged.delete(utils_1.INTERNAL_QUEUE_NAME);
368
- logger.info(`Listening to ${merged.size} queues:`);
369
- for (const q of merged.values()) {
370
- logQueue(logger, q);
371
- }
321
+ return result;
372
322
  }
373
- /**
374
- * List the queues table and launch a worker for any database-backed queue
375
- * that isn't already running. Skips names that collide with an in-memory
376
- * queue (with a warn-once log) and respects the `listenQueues` filter.
377
- */
378
- async discoverAndLaunchDbQueues(exec) {
323
+ /** Begin tracking a queue if it isn't already, scheduling its first poll one interval out. */
324
+ ensureState(queue, now) {
325
+ if (this.states.has(queue.name))
326
+ return;
327
+ const interval = queue.minPollingIntervalMs ?? WFQueueRunner.defaultMinPollingIntervalMs;
328
+ this.states.set(queue.name, { queue, currentPollingMs: interval, nextPollAt: now + interval });
329
+ }
330
+ /** Reconcile DB-backed queues against the queues table in one query: refresh, add, or drop them. */
331
+ async refreshDbQueues(exec, now) {
379
332
  let records;
380
333
  try {
381
334
  records = await exec.systemDatabase.listQueues();
@@ -384,129 +337,159 @@ class WFQueueRunner {
384
337
  exec.logger.warn(`Error listing database-backed queues: ${e.message}`);
385
338
  return;
386
339
  }
340
+ const present = new Set();
387
341
  for (const record of records) {
388
342
  if (record.name === utils_1.INTERNAL_QUEUE_NAME)
389
343
  continue;
390
344
  if (this.wfQueuesByName.has(record.name)) {
391
- exec.logger.warn(`Database-backed queue '${record.name}' has the same name as an in-memory queue. ` +
392
- `The in-memory queue's configuration is being used; the database-backed queue is ignored. ` +
393
- `Rename one of them to resolve the conflict.`);
345
+ if (!this.conflictWarned.has(record.name)) {
346
+ this.conflictWarned.add(record.name);
347
+ exec.logger.warn(`Database-backed queue '${record.name}' has the same name as an in-memory queue. ` +
348
+ `The in-memory queue's configuration is being used; the database-backed queue is ignored. ` +
349
+ `Rename one of them to resolve the conflict.`);
350
+ }
394
351
  continue;
395
352
  }
396
- if (this.runningQueueNames.has(record.name))
397
- continue;
398
353
  if (this.listenQueueNames !== null && !this.listenQueueNames.has(record.name))
399
354
  continue;
400
- this.launchQueueLoop(WorkflowQueue._fromRecord(record));
355
+ present.add(record.name);
356
+ const existing = this.states.get(record.name);
357
+ if (existing) {
358
+ // Refresh config in place, preserving this queue's polling/backoff state.
359
+ existing.queue = WorkflowQueue._fromRecord(record);
360
+ }
361
+ else {
362
+ this.ensureState(WorkflowQueue._fromRecord(record), now);
363
+ }
364
+ }
365
+ // A database-backed queue whose row is gone stops being dispatched.
366
+ for (const [name, state] of this.states) {
367
+ if (!state.queue.databaseBacked)
368
+ continue;
369
+ if (!present.has(name)) {
370
+ exec.logger.info(`Queue '${name}' has been deleted from the database; no longer dispatching it.`);
371
+ this.states.delete(name);
372
+ }
401
373
  }
402
374
  }
403
- async superviseLoop(exec) {
404
- const signal = this.abortController.signal;
405
- while (this.isRunning) {
406
- await (0, utils_1.interruptibleSleep)(WFQueueRunner.supervisorIntervalMs, signal);
407
- if (!this.isRunning)
408
- return;
409
- await this.discoverAndLaunchDbQueues(exec);
375
+ /** Log every queue this process will dispatch for, once at startup after discovery. */
376
+ logRunningQueues(exec) {
377
+ const names = Array.from(this.states.keys()).filter((n) => n !== utils_1.INTERNAL_QUEUE_NAME);
378
+ exec.logger.info(`Listening to ${names.length} queues:`);
379
+ for (const name of names) {
380
+ logQueue(exec.logger, this.states.get(name).queue);
410
381
  }
411
382
  }
412
- async runQueue(exec, initialQueue) {
413
- let queue = initialQueue;
414
- const maxPollingMs = WFQueueRunner.defaultMaxPollingIntervalMs;
415
- let currentPollingMs = queue.minPollingIntervalMs ?? WFQueueRunner.defaultMinPollingIntervalMs;
383
+ /** The single dispatcher loop: reconcile queues, transition delayed workflows once, poll due queues sequentially. */
384
+ async schedulerLoop(exec, startNow) {
416
385
  const signal = this.abortController.signal;
386
+ // Discovery already ran during setup; defer the next reconcile a full interval.
387
+ let lastReconcileAt = startNow;
388
+ // Global op: run on a fixed cadence, not once per wake (destaggered wakeups would push it to ~N/sec).
389
+ let lastTransitionAt = 0;
417
390
  while (this.isRunning) {
418
- // For database-backed queues, refresh config from the row each
419
- // iteration so changes to concurrency, polling interval, etc. take
420
- // effect without a restart. If the row is gone, this worker exits.
421
- if (queue.databaseBacked) {
391
+ const now = Date.now();
392
+ // Reconcile DB-backed queues with a single query, independent of queue count.
393
+ if (now - lastReconcileAt >= WFQueueRunner.reconcileIntervalMs) {
394
+ await this.refreshDbQueues(exec, now);
395
+ lastReconcileAt = now;
396
+ }
397
+ // Transition delayed workflows at most once per interval — it is global, so one call covers every queue.
398
+ if (now - lastTransitionAt >= WFQueueRunner.transitionIntervalMs) {
422
399
  try {
423
- const record = await exec.systemDatabase.getQueue(queue.name);
424
- if (record === null) {
425
- exec.logger.info(`Queue '${queue.name}' has been deleted from the database; stopping its worker.`);
426
- return;
427
- }
428
- queue = WorkflowQueue._fromRecord(record);
400
+ await exec.systemDatabase.transitionDelayedWorkflows();
429
401
  }
430
402
  catch (e) {
431
- exec.logger.warn(`Error reloading queue '${queue.name}' from the database: ${e.message}`);
403
+ exec.logger.warn(`Error transitioning delayed workflows: ${e.message}`);
432
404
  }
405
+ lastTransitionAt = now;
406
+ }
407
+ // Collect the queues due to poll this tick and dispatch them sequentially.
408
+ const due = [];
409
+ for (const state of this.states.values()) {
410
+ if (now >= state.nextPollAt)
411
+ due.push(state);
412
+ }
413
+ for (const state of due) {
414
+ if (!this.isRunning)
415
+ break;
416
+ const contentionDetected = await this.pollQueue(exec, state.queue);
417
+ this.adjustInterval(exec, state, contentionDetected);
433
418
  }
434
- // Recompute min/max each iteration so a setMinPollingIntervalMs takes
435
- // effect on the very next tick. Clamp the running value into the new
436
- // range to avoid sleeping longer than the configured maximum after a
437
- // shrink, or shorter than the minimum after a grow.
438
- const minPollingMs = queue.minPollingIntervalMs ?? WFQueueRunner.defaultMinPollingIntervalMs;
439
- currentPollingMs = Math.max(minPollingMs, Math.min(currentPollingMs, maxPollingMs));
440
- // Sleep with jitter, returning early on the stop signal
441
- const jitter = this.jitterMin + Math.random() * (this.jitterMax - this.jitterMin);
442
- const sleepMs = currentPollingMs * jitter;
443
- await (0, utils_1.interruptibleSleep)(sleepMs, signal);
444
419
  if (!this.isRunning)
445
420
  break;
446
- let contentionDetected = false;
447
- try {
448
- // Transition delayed workflows that are ready to execute
421
+ // Sleep until the earliest of the next scheduled poll, reconcile, or transition tick.
422
+ let wake = Math.min(lastReconcileAt + WFQueueRunner.reconcileIntervalMs, lastTransitionAt + WFQueueRunner.transitionIntervalMs);
423
+ for (const state of this.states.values()) {
424
+ if (state.nextPollAt < wake)
425
+ wake = state.nextPollAt;
426
+ }
427
+ const sleepMs = Math.max(0, wake - Date.now());
428
+ await (0, utils_1.interruptibleSleep)(sleepMs, signal);
429
+ }
430
+ }
431
+ /** Poll one queue once, starting ready workflows; returns true if DB contention was detected. */
432
+ async pollQueue(exec, queue) {
433
+ let contentionDetected = false;
434
+ // Helper function that starts dequeued workflows
435
+ const dispatch = async (wfids) => {
436
+ if (wfids.length > 0) {
437
+ await (0, debugpoint_1.debugTriggerPoint)(debugpoint_1.DEBUG_TRIGGER_WORKFLOW_QUEUE_START);
438
+ }
439
+ for (const wfid of wfids) {
449
440
  try {
450
- await exec.systemDatabase.transitionDelayedWorkflows();
441
+ await exec.executeWorkflowId(wfid, { isQueueDispatch: true });
451
442
  }
452
443
  catch (e) {
453
- exec.logger.warn(`Error transitioning delayed workflows: ${e.message}`);
454
- }
455
- // Helper function that starts dequeued workflows
456
- const dispatch = async (wfids) => {
457
- if (wfids.length > 0) {
458
- await (0, debugpoint_1.debugTriggerPoint)(debugpoint_1.DEBUG_TRIGGER_WORKFLOW_QUEUE_START);
459
- }
460
- for (const wfid of wfids) {
461
- try {
462
- await exec.executeWorkflowId(wfid, { isQueueDispatch: true });
463
- }
464
- catch (e) {
465
- exec.logger.warn(`Could not execute workflow with id ${wfid}: ${e.message}`);
466
- }
467
- }
468
- };
469
- // Dequeue workflows for this queue. If the queue is partitioned, successively dequeue and start
470
- // workflows from each active partition.
471
- try {
472
- if (queue.partitionQueue) {
473
- const partitionKeys = await exec.systemDatabase.getQueuePartitions(queue.name);
474
- for (const partitionKey of partitionKeys) {
475
- const partitionWfids = await exec.systemDatabase.findAndMarkStartableWorkflows(queue, exec.executorID, utils_1.globalParams.appVersion, partitionKey);
476
- await dispatch(partitionWfids);
477
- await (0, debugpoint_1.debugTriggerPoint)(debugpoint_1.DEBUG_TRIGGER_BETWEEN_PARTITION_DISPATCHES);
478
- }
479
- }
480
- else {
481
- const wfids = await exec.systemDatabase.findAndMarkStartableWorkflows(queue, exec.executorID, utils_1.globalParams.appVersion, undefined);
482
- await dispatch(wfids);
483
- }
444
+ exec.logger.warn(`Could not execute workflow with id ${wfid}: ${e.message}`);
484
445
  }
485
- catch (e) {
486
- const err = e;
487
- // Handle serialization errors and lock contention with backoff
488
- if ('code' in err && (err.code === '40001' || err.code === '55P03')) {
489
- // 40001: serialization_failure, 55P03: lock_not_available
490
- contentionDetected = true;
491
- exec.logger.warn(`Contention detected in queue ${queue.name}.`);
492
- }
493
- else {
494
- exec.logger.warn(`Error getting startable workflows for queue ${queue.name}: ${err.message}`);
495
- }
446
+ }
447
+ };
448
+ // Dequeue workflows for this queue. If the queue is partitioned, successively dequeue and start
449
+ // workflows from each active partition.
450
+ try {
451
+ if (queue.partitionQueue) {
452
+ const partitionKeys = await exec.systemDatabase.getQueuePartitions(queue.name);
453
+ for (const partitionKey of partitionKeys) {
454
+ const partitionWfids = await exec.systemDatabase.findAndMarkStartableWorkflows(queue, exec.executorID, utils_1.globalParams.appVersion, partitionKey);
455
+ await dispatch(partitionWfids);
456
+ await (0, debugpoint_1.debugTriggerPoint)(debugpoint_1.DEBUG_TRIGGER_BETWEEN_PARTITION_DISPATCHES);
496
457
  }
497
458
  }
498
- catch (e) {
499
- exec.logger.warn(`Error in queue ${queue.name} dispatch loop: ${e.message}`);
459
+ else {
460
+ const wfids = await exec.systemDatabase.findAndMarkStartableWorkflows(queue, exec.executorID, utils_1.globalParams.appVersion, undefined);
461
+ await dispatch(wfids);
500
462
  }
501
- // Adjust polling interval based on contention
502
- if (contentionDetected) {
503
- currentPollingMs = Math.min(maxPollingMs, currentPollingMs * this.backoffFactor);
504
- exec.logger.warn(`Increasing polling interval for queue ${queue.name} to ${(currentPollingMs / 1000).toFixed(2)}s due to contention.`);
463
+ }
464
+ catch (e) {
465
+ const err = e;
466
+ // Handle serialization errors and lock contention with backoff
467
+ if ('code' in err && (err.code === '40001' || err.code === '55P03')) {
468
+ // 40001: serialization_failure, 55P03: lock_not_available
469
+ contentionDetected = true;
470
+ exec.logger.warn(`Contention detected in queue ${queue.name}.`);
505
471
  }
506
472
  else {
507
- currentPollingMs = Math.max(minPollingMs, currentPollingMs * this.scalebackFactor);
473
+ exec.logger.warn(`Error getting startable workflows for queue ${queue.name}: ${err.message}`);
508
474
  }
509
475
  }
476
+ return contentionDetected;
477
+ }
478
+ /** After a poll, grow the interval on contention or shrink it toward the minimum, then schedule the next poll with jitter. */
479
+ adjustInterval(exec, state, contentionDetected) {
480
+ const minPollingMs = state.queue.minPollingIntervalMs ?? WFQueueRunner.defaultMinPollingIntervalMs;
481
+ const maxPollingMs = WFQueueRunner.defaultMaxPollingIntervalMs;
482
+ if (contentionDetected) {
483
+ state.currentPollingMs = Math.min(maxPollingMs, state.currentPollingMs * this.backoffFactor);
484
+ exec.logger.warn(`Increasing polling interval for queue ${state.queue.name} to ${(state.currentPollingMs / 1000).toFixed(2)}s due to contention.`);
485
+ }
486
+ else {
487
+ state.currentPollingMs = Math.max(minPollingMs, state.currentPollingMs * this.scalebackFactor);
488
+ }
489
+ // Clamp into the current [min, max] range in case config changed under us.
490
+ state.currentPollingMs = Math.max(minPollingMs, Math.min(state.currentPollingMs, maxPollingMs));
491
+ const jitter = this.jitterMin + Math.random() * (this.jitterMax - this.jitterMin);
492
+ state.nextPollAt = Date.now() + state.currentPollingMs * jitter;
510
493
  }
511
494
  }
512
495
  exports.wfQueueRunner = new WFQueueRunner();
@@ -1 +1 @@
1
- {"version":3,"file":"wfqueue.js","sourceRoot":"","sources":["../../src/wfqueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wfqueue.js","sourceRoot":"","sources":["../../src/wfqueue.ts"],"names":[],"mappings":"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"}