@convex-dev/workpool 0.2.0-alpha.0 → 0.2.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 (70) hide show
  1. package/README.md +1 -1
  2. package/dist/commonjs/client/index.d.ts +3 -3
  3. package/dist/commonjs/client/index.d.ts.map +1 -1
  4. package/dist/commonjs/client/index.js +10 -5
  5. package/dist/commonjs/client/index.js.map +1 -1
  6. package/dist/commonjs/component/complete.js +1 -1
  7. package/dist/commonjs/component/complete.js.map +1 -1
  8. package/dist/commonjs/component/kick.d.ts +0 -1
  9. package/dist/commonjs/component/kick.d.ts.map +1 -1
  10. package/dist/commonjs/component/kick.js +6 -4
  11. package/dist/commonjs/component/kick.js.map +1 -1
  12. package/dist/commonjs/component/lib.d.ts.map +1 -1
  13. package/dist/commonjs/component/lib.js +4 -3
  14. package/dist/commonjs/component/lib.js.map +1 -1
  15. package/dist/commonjs/component/logging.d.ts.map +1 -1
  16. package/dist/commonjs/component/logging.js +1 -2
  17. package/dist/commonjs/component/logging.js.map +1 -1
  18. package/dist/commonjs/component/loop.d.ts.map +1 -1
  19. package/dist/commonjs/component/loop.js +46 -38
  20. package/dist/commonjs/component/loop.js.map +1 -1
  21. package/dist/commonjs/component/shared.d.ts +1 -0
  22. package/dist/commonjs/component/shared.d.ts.map +1 -1
  23. package/dist/commonjs/component/shared.js +1 -0
  24. package/dist/commonjs/component/shared.js.map +1 -1
  25. package/dist/commonjs/component/stats.d.ts +19 -13
  26. package/dist/commonjs/component/stats.d.ts.map +1 -1
  27. package/dist/commonjs/component/stats.js +26 -21
  28. package/dist/commonjs/component/stats.js.map +1 -1
  29. package/dist/esm/client/index.d.ts +3 -3
  30. package/dist/esm/client/index.d.ts.map +1 -1
  31. package/dist/esm/client/index.js +10 -5
  32. package/dist/esm/client/index.js.map +1 -1
  33. package/dist/esm/component/complete.js +1 -1
  34. package/dist/esm/component/complete.js.map +1 -1
  35. package/dist/esm/component/kick.d.ts +0 -1
  36. package/dist/esm/component/kick.d.ts.map +1 -1
  37. package/dist/esm/component/kick.js +6 -4
  38. package/dist/esm/component/kick.js.map +1 -1
  39. package/dist/esm/component/lib.d.ts.map +1 -1
  40. package/dist/esm/component/lib.js +4 -3
  41. package/dist/esm/component/lib.js.map +1 -1
  42. package/dist/esm/component/logging.d.ts.map +1 -1
  43. package/dist/esm/component/logging.js +1 -2
  44. package/dist/esm/component/logging.js.map +1 -1
  45. package/dist/esm/component/loop.d.ts.map +1 -1
  46. package/dist/esm/component/loop.js +46 -38
  47. package/dist/esm/component/loop.js.map +1 -1
  48. package/dist/esm/component/shared.d.ts +1 -0
  49. package/dist/esm/component/shared.d.ts.map +1 -1
  50. package/dist/esm/component/shared.js +1 -0
  51. package/dist/esm/component/shared.js.map +1 -1
  52. package/dist/esm/component/stats.d.ts +19 -13
  53. package/dist/esm/component/stats.d.ts.map +1 -1
  54. package/dist/esm/component/stats.js +26 -21
  55. package/dist/esm/component/stats.js.map +1 -1
  56. package/package.json +7 -6
  57. package/src/client/index.ts +18 -8
  58. package/src/component/_generated/api.d.ts +3 -0
  59. package/src/component/complete.test.ts +10 -10
  60. package/src/component/complete.ts +1 -1
  61. package/src/component/kick.test.ts +10 -9
  62. package/src/component/kick.ts +11 -6
  63. package/src/component/lib.test.ts +20 -20
  64. package/src/component/lib.ts +4 -2
  65. package/src/component/logging.ts +1 -2
  66. package/src/component/loop.test.ts +101 -147
  67. package/src/component/loop.ts +49 -39
  68. package/src/component/recovery.test.ts +7 -7
  69. package/src/component/shared.ts +1 -0
  70. package/src/component/stats.ts +41 -22
@@ -1,9 +1,8 @@
1
1
  import { v } from "convex/values";
2
2
  import { internal } from "./_generated/api.js";
3
3
  import { internalMutation } from "./_generated/server.js";
4
- import { DEFAULT_MAX_PARALLELISM } from "./kick.js";
5
4
  import { createLogger, DEFAULT_LOG_LEVEL, } from "./logging.js";
6
- import { boundScheduledTime, currentSegment, fromSegment, max, nextSegment, toSegment, } from "./shared.js";
5
+ import { boundScheduledTime, currentSegment, DEFAULT_MAX_PARALLELISM, fromSegment, max, nextSegment, toSegment, } from "./shared.js";
7
6
  import { recordCompleted, recordReport, recordStarted } from "./stats.js";
8
7
  const CANCELLATION_BATCH_SIZE = 64; // the only queue that can get unbounded.
9
8
  const SECOND = 1000;
@@ -28,35 +27,43 @@ export const INITIAL_STATE = {
28
27
  // There should only ever be at most one of these scheduled or running.
29
28
  export const main = internalMutation({
30
29
  args: { generation: v.int64(), segment: v.int64() },
31
- handler: async (ctx, args) => {
30
+ handler: async (ctx, { generation, segment }) => {
32
31
  // State will be modified and patched at the end of the function.
33
32
  const state = await getOrCreateState(ctx);
34
- if (args.generation !== state.generation) {
35
- throw new Error(`generation mismatch: ${args.generation} !== ${state.generation}`);
33
+ if (generation !== state.generation) {
34
+ throw new Error(`generation mismatch: ${generation} !== ${state.generation}`);
36
35
  }
37
36
  state.generation++;
37
+ const runStatus = await getOrCreateRunningStatus(ctx);
38
+ if (runStatus.state.kind !== "running") {
39
+ await ctx.db.patch(runStatus._id, {
40
+ state: { kind: "running" },
41
+ });
42
+ }
38
43
  const globals = await getGlobals(ctx);
39
44
  const console = createLogger(globals.logLevel);
45
+ const delayMs = Date.now() - fromSegment(segment);
46
+ console.debug(`[main] generation ${generation} behind: ${delayMs}ms`);
40
47
  // Read pendingCompletions, including retry handling.
41
48
  console.time("[main] pendingCompletion");
42
- const toCancel = await handleCompletions(ctx, state, args.segment, console);
49
+ const toCancel = await handleCompletions(ctx, state, segment, console);
43
50
  console.timeEnd("[main] pendingCompletion");
44
51
  // Read pendingCancelation, deleting from pendingStart. If it's still running, queue to cancel.
45
52
  console.time("[main] pendingCancelation");
46
- await handleCancelation(ctx, state, args.segment, console, toCancel);
53
+ await handleCancelation(ctx, state, segment, console, toCancel);
47
54
  console.timeEnd("[main] pendingCancelation");
48
55
  if (state.running.length === 0) {
49
56
  // If there's nothing active, reset lastRecovery.
50
- state.lastRecovery = args.segment;
57
+ state.lastRecovery = segment;
51
58
  }
52
- else if (args.segment - state.lastRecovery >= RECOVERY_PERIOD_SEGMENTS) {
59
+ else if (segment - state.lastRecovery >= RECOVERY_PERIOD_SEGMENTS) {
53
60
  // Otherwise schedule recovery for any old jobs.
54
61
  await handleRecovery(ctx, state, console);
55
- state.lastRecovery = args.segment;
62
+ state.lastRecovery = segment;
56
63
  }
57
64
  // Read pendingStart up to max capacity. Update the config, and incomingSegmentCursor.
58
65
  console.time("[main] pendingStart");
59
- await handleStart(ctx, state, args.segment, console, globals);
66
+ await handleStart(ctx, state, segment, console, globals);
60
67
  console.timeEnd("[main] pendingStart");
61
68
  if (Date.now() - state.report.lastReportTs >= MINUTE) {
62
69
  // If minute rollover since last report, log report.
@@ -66,7 +73,7 @@ export const main = internalMutation({
66
73
  // It's been a while, let's start fresh.
67
74
  lastReportTs = Date.now();
68
75
  }
69
- console.info(recordReport(state));
76
+ recordReport(console, state);
70
77
  state.report = {
71
78
  completed: 0,
72
79
  succeeded: 0,
@@ -79,41 +86,42 @@ export const main = internalMutation({
79
86
  await ctx.db.replace(state._id, state);
80
87
  await ctx.scheduler.runAfter(0, internal.loop.updateRunStatus, {
81
88
  generation: state.generation,
82
- segment: args.segment,
89
+ segment,
83
90
  });
91
+ // TODO: if there were more cancellations, schedule main directly.
84
92
  },
85
93
  });
86
94
  export const updateRunStatus = internalMutation({
87
95
  args: { generation: v.int64(), segment: v.int64() },
88
- handler: async (ctx, args) => {
96
+ handler: async (ctx, { generation, segment }) => {
89
97
  const globals = await getGlobals(ctx);
90
98
  const console = createLogger(globals.logLevel);
91
99
  const maxParallelism = globals.maxParallelism;
92
100
  const state = await getOrCreateState(ctx);
93
- if (args.generation !== state.generation) {
94
- throw new Error(`generation mismatch: ${args.generation} !== ${state.generation}`);
101
+ if (generation !== state.generation) {
102
+ throw new Error(`generation mismatch: ${generation} !== ${state.generation}`);
95
103
  }
96
104
  console.time("[updateRunStatus] outstandingCancelations");
97
105
  const outstandingCancelations = await getNextUp(ctx, "pendingCancelation", {
98
106
  start: state.segmentCursors.cancelation,
99
- end: args.segment,
107
+ end: segment,
100
108
  });
101
109
  console.timeEnd("[updateRunStatus] outstandingCancelations");
102
110
  if (outstandingCancelations) {
103
111
  await ctx.scheduler.runAfter(0, internal.loop.main, {
104
- generation: args.generation,
105
- segment: args.segment,
112
+ generation,
113
+ segment,
106
114
  });
107
115
  return;
108
116
  }
109
117
  // TODO: check for current segment (or from args) first, to avoid OCCs.
110
118
  console.time("[updateRunStatus] nextSegmentIsActionable");
111
- const next = max(args.segment + 1n, currentSegment());
119
+ const next = max(segment + 1n, currentSegment());
112
120
  const nextIsActionable = await nextSegmentIsActionable(ctx, state, maxParallelism, next);
113
121
  console.timeEnd("[updateRunStatus] nextSegmentIsActionable");
114
122
  if (nextIsActionable) {
115
123
  await ctx.scheduler.runAt(boundScheduledTime(fromSegment(next), console), internal.loop.main, {
116
- generation: args.generation,
124
+ generation,
117
125
  segment: next,
118
126
  });
119
127
  return;
@@ -129,7 +137,7 @@ export const updateRunStatus = internalMutation({
129
137
  },
130
138
  });
131
139
  await ctx.scheduler.runAfter(0, internal.loop.main, {
132
- generation: args.generation,
140
+ generation,
133
141
  segment: currentSegment(),
134
142
  });
135
143
  return;
@@ -142,25 +150,25 @@ export const updateRunStatus = internalMutation({
142
150
  }
143
151
  const docs = await Promise.all(actionableTables.map(async (tableName) => getNextUp(ctx, tableName, { start: next })));
144
152
  console.timeEnd("[updateRunStatus] findNextSegment");
145
- let segment = docs.map((d) => d?.segment).sort()[0];
153
+ let targetSegment = docs.map((d) => d?.segment).sort()[0];
146
154
  const runStatus = await getOrCreateRunningStatus(ctx);
147
155
  const saturated = state.running.length >= maxParallelism;
148
- if (segment !== undefined || state.running.length > 0) {
156
+ if (targetSegment !== undefined || state.running.length > 0) {
149
157
  // If there's something to do, schedule for next actionable segment.
150
158
  // Or the next recovery, whichever comes first.
151
159
  const nextRecoverySegment = state.lastRecovery + RECOVERY_PERIOD_SEGMENTS;
152
- if (!segment || segment > nextRecoverySegment) {
153
- segment = nextRecoverySegment;
160
+ if (!targetSegment || targetSegment > nextRecoverySegment) {
161
+ targetSegment = nextRecoverySegment;
154
162
  }
155
- const scheduledId = await ctx.scheduler.runAt(boundScheduledTime(fromSegment(segment), console), internal.loop.main, { generation: args.generation, segment });
156
- if (segment > nextSegment()) {
163
+ const scheduledId = await ctx.scheduler.runAt(boundScheduledTime(fromSegment(targetSegment), console), internal.loop.main, { generation, segment: targetSegment });
164
+ if (targetSegment > nextSegment()) {
157
165
  await ctx.db.patch(runStatus._id, {
158
166
  state: {
159
167
  kind: "scheduled",
160
168
  scheduledId,
161
169
  saturated,
162
- generation: args.generation,
163
- segment,
170
+ generation,
171
+ segment: targetSegment,
164
172
  },
165
173
  });
166
174
  }
@@ -171,7 +179,7 @@ export const updateRunStatus = internalMutation({
171
179
  }
172
180
  // There seems to be nothing in the future to do, so go idle.
173
181
  await ctx.db.patch(runStatus._id, {
174
- state: { kind: "idle", generation: args.generation },
182
+ state: { kind: "idle", generation },
175
183
  });
176
184
  },
177
185
  });
@@ -270,7 +278,7 @@ async function handleCompletions(ctx, state, segment, console) {
270
278
  const retried = await rescheduleJob(ctx, work, console);
271
279
  if (retried) {
272
280
  state.report.retries++;
273
- console.info(recordCompleted(work, "retrying"));
281
+ recordCompleted(console, work, "retrying");
274
282
  }
275
283
  else {
276
284
  // We don't retry if it's been canceled in the mean time.
@@ -362,8 +370,7 @@ async function handleRecovery(ctx, state, console) {
362
370
  await ctx.scheduler.runAfter(0, internal.recovery.recover, { jobs });
363
371
  }
364
372
  }
365
- async function handleStart(ctx, state, segment, console, globals) {
366
- const maxParallelism = globals.maxParallelism;
373
+ async function handleStart(ctx, state, segment, console, { maxParallelism, logLevel }) {
367
374
  // Schedule as many as needed to reach maxParallelism.
368
375
  const toSchedule = maxParallelism - state.running.length;
369
376
  const pending = await ctx.db
@@ -375,23 +382,24 @@ async function handleStart(ctx, state, segment, console, globals) {
375
382
  state.segmentCursors.incoming = pending.at(-1)?.segment ?? segment;
376
383
  console.debug(`[main] scheduling ${pending.length} pending work`);
377
384
  // Start new work.
378
- state.running.push(...(await Promise.all(pending.map(async ({ _id, workId }) => {
385
+ state.running.push(...(await Promise.all(pending.map(async ({ _id, workId, segment }) => {
379
386
  if (state.running.some((r) => r.workId === workId)) {
380
387
  console.error(`[main] ${workId} already running (skipping start)`);
381
388
  return null;
382
389
  }
383
- const scheduledId = await beginWork(ctx, workId, globals.logLevel);
390
+ const lagMs = Date.now() - fromSegment(segment);
391
+ const scheduledId = await beginWork(ctx, workId, logLevel, lagMs);
384
392
  await ctx.db.delete(_id);
385
393
  return { scheduledId, workId, started: Date.now() };
386
394
  }))).flatMap((r) => (r ? [r] : [])));
387
395
  }
388
- async function beginWork(ctx, workId, logLevel) {
396
+ async function beginWork(ctx, workId, logLevel, lagMs) {
389
397
  const console = createLogger(logLevel);
390
398
  const work = await ctx.db.get(workId);
391
399
  if (!work) {
392
400
  throw new Error("work not found");
393
401
  }
394
- console.info(recordStarted(work));
402
+ recordStarted(console, work, lagMs);
395
403
  const { attempts: attempt, fnHandle, fnArgs } = work;
396
404
  const args = { workId, fnHandle, fnArgs, logLevel, attempt };
397
405
  if (work.fnType === "action") {
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/component/loop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAe,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,iBAAiB,GAGlB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAElB,cAAc,EACd,WAAW,EACX,GAAG,EACH,WAAW,EAEX,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1E,MAAM,uBAAuB,GAAG,EAAE,CAAC,CAAC,yCAAyC;AAC7E,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,MAAM,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;AAC3B,MAAM,qBAAqB,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,oCAAoC;AAC9E,MAAM,wBAAwB,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,sBAAsB;AAC9E,MAAM,sBAAsB,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,6BAA6B;AACnF,MAAM,CAAC,MAAM,aAAa,GAA8C;IACtE,UAAU,EAAE,EAAE;IACd,cAAc,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;IACjE,YAAY,EAAE,EAAE;IAChB,MAAM,EAAE;QACN,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,YAAY,EAAE,CAAC;KAChB;IACD,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,IAAI,GAAG,gBAAgB,CAAC;IACnC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;IACnD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,iEAAiE;QACjE,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE;YACxC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,CAAC,UAAU,QAAQ,KAAK,CAAC,UAAU,EAAE,CAClE,CAAC;SACH;QACD,KAAK,CAAC,UAAU,EAAE,CAAC;QAEnB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE/C,qDAAqD;QACrD,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5E,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QAE5C,+FAA+F;QAC/F,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC1C,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrE,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAE7C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,iDAAiD;YACjD,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;SACnC;aAAM,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,YAAY,IAAI,wBAAwB,EAAE;YACxE,gDAAgD;YAChD,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1C,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;SACnC;QAED,sFAAsF;QACtF,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpC,MAAM,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,EAAE;YACpD,oDAAoD;YACpD,mDAAmD;YACnD,IAAI,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC;YACtD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,GAAG,MAAM,GAAG,CAAC,EAAE;gBAC1C,wCAAwC;gBACxC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;aAC3B;YACD,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,KAAK,CAAC,MAAM,GAAG;gBACb,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,CAAC;gBACX,YAAY;aACb,CAAC;SACH;QAED,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE;YAC7D,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC;IAC9C,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE;IACnD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EAAE;YACxC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,CAAC,UAAU,QAAQ,KAAK,CAAC,UAAU,EAAE,CAClE,CAAC;SACH;QAED,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,MAAM,uBAAuB,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE;YACzE,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW;YACvC,GAAG,EAAE,IAAI,CAAC,OAAO;SAClB,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;QAC7D,IAAI,uBAAuB,EAAE;YAC3B,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClD,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,OAAO;SACR;QAED,uEAAuE;QACvE,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,MAAM,uBAAuB,CACpD,GAAG,EACH,KAAK,EACL,cAAc,EACd,IAAI,CACL,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;QAE7D,IAAI,gBAAgB,EAAE;YACpB,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,CACvB,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAC9C,QAAQ,CAAC,IAAI,CAAC,IAAI,EAClB;gBACE,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI;aACd,CACF,CAAC;YACF,OAAO;SACR;QAED,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,MAAM,sBAAsB,CAC7D,GAAG,EACH,KAAK,EACL,cAAc,CACf,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;QAE5D,IAAI,eAAe,EAAE;YACnB,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC5B,cAAc,EAAE;oBACd,GAAG,KAAK,CAAC,cAAc;oBACvB,GAAG,OAAO;iBACX;aACF,CAAC,CAAC;YACH,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClD,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,cAAc,EAAE;aAC1B,CAAC,CAAC;YACH,OAAO;SACR;QAED,oDAAoD;QACpD,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAIhB,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,EAAE;YACzC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACvC;QACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CACvC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAC3C,CACF,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QACrD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC;QACzD,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,oEAAoE;YACpE,+CAA+C;YAC/C,MAAM,mBAAmB,GAAG,KAAK,CAAC,YAAY,GAAG,wBAAwB,CAAC;YAC1E,IAAI,CAAC,OAAO,IAAI,OAAO,GAAG,mBAAmB,EAAE;gBAC7C,OAAO,GAAG,mBAAmB,CAAC;aAC/B;YACD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,CAC3C,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EACjD,QAAQ,CAAC,IAAI,CAAC,IAAI,EAClB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CACzC,CAAC;YACF,IAAI,OAAO,GAAG,WAAW,EAAE,EAAE;gBAC3B,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;oBAChC,KAAK,EAAE;wBACL,IAAI,EAAE,WAAW;wBACjB,WAAW;wBACX,SAAS;wBACT,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,OAAO;qBACR;iBACF,CAAC,CAAC;aACJ;iBAAM;gBACL,OAAO,CAAC,KAAK,CACX,iEAAiE,CAClE,CAAC;aACH;YACD,OAAO;SACR;QACD,6DAA6D;QAC7D,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;YAChC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SACrD,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,KAAK,UAAU,uBAAuB,CACpC,GAAgB,EAChB,KAA2B,EAC3B,cAAsB,EACtB,GAAW;IAEX,+CAA+C;IAC/C,IACE,MAAM,SAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE;QACzC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW;QACvC,GAAG;KACJ,CAAC,EACF;QACA,OAAO,IAAI,CAAC;KACb;IACD,IACE,MAAM,SAAS,CAAC,GAAG,EAAE,mBAAmB,EAAE;QACxC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU;QACtC,GAAG;KACJ,CAAC,EACF;QACA,OAAO,IAAI,CAAC;KACb;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,EAAE;QACzC,IACE,MAAM,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE;YACnC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ;YACpC,GAAG;SACJ,CAAC,EACF;YACA,OAAO,IAAI,CAAC;SACb;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,GAAgB,EAChB,KAA2B,EAC3B,cAAsB;IAItB,+DAA+D;IAC/D,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,mBAAmB,EAAE;QAC9D,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU;KACrC,CAAC,CAAC;IACH,IAAI,aAAa,EAAE;QACjB,OAAO,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;KACtD;IACD,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,oBAAoB,EAAE;QAChE,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW;KACtC,CAAC,CAAC;IACH,IAAI,cAAc,EAAE;QAClB,OAAO,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;KACxD;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,cAAc,EAAE;QACzC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE;YACpD,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ;SACnC,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE;YACZ,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;SAC/C;KACF;IACD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACrB,CAAC;AAED,gFAAgF;AAChF,KAAK,UAAU,SAAS,CACtB,GAAgB,EAChB,KAAkE,EAClE,KAAuC;IAEvC,OAAO,GAAG,CAAC,EAAE;SACV,KAAK,CAAC,KAAK,CAAC;SACZ,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAC1B,KAAK,CAAC,KAAK,KAAK,SAAS;QACvB,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS;YACvB,CAAC,CAAC,CAAC;iBACE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,GAAG,sBAAsB,CAAC;iBACpD,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC;YAC9B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,GAAG,sBAAsB,CAAC;QACzD,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS;YACvB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC;YAC5B,CAAC,CAAC,CAAC,CACR;SACA,KAAK,EAAE,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAC9B,GAAgB,EAChB,KAA2B,EAC3B,OAAe,EACf,OAAe;IAEf,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,GAAG,sBAAsB,CAAC;IAC9E,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE;SAC3B,KAAK,CAAC,mBAAmB,CAAC;SAC1B,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAC1B,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CACvD;SACA,OAAO,EAAE,CAAC;IACb,KAAK,CAAC,cAAc,CAAC,UAAU,GAAG,OAAO,CAAC;IAC1C,0EAA0E;IAC1E,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,OAAO,CAAC,GAAG,CACf,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACxB,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,CAAC,KAAK,CACX,qBAAqB,CAAC,CAAC,MAAM,4BAA4B,CAC1D,CAAC;YACF,OAAO;SACR;QACD,IAAI,CAAC,CAAC,KAAK,EAAE;YACX,mDAAmD;YACnD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,kCAAkC,CAAC,CAAC;gBACnE,OAAO;aACR;YACD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,OAAO,EAAE;gBACX,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;aACjD;iBAAM;gBACL,yDAAyD;gBACzD,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CAAC;oBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;oBAC/B,OAAO,EAAE,IAAI,CAAC,QAAQ;iBACvB,CAAC,CAAC;aACJ;SACF;aAAM;YACL,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE;gBAClC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;aAC1B;iBAAM,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACxC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aACvB;SACF;IACH,CAAC,CAAC,CACH,CAAC;IACF,kEAAkE;IAClE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CACrD,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IACnD,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,YAAY,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,oBAAoB,YAAY,OAAO,CAAC,CAAC;IACvD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,GAAgB,EAChB,KAA2B,EAC3B,OAAe,EACf,OAAe,EACf,QAAuB;IAEvB,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,GAAG,sBAAsB,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE;SAC1B,KAAK,CAAC,oBAAoB,CAAC;SAC3B,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAC1B,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAChD;SACA,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACjC,KAAK,CAAC,cAAc,CAAC,WAAW,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC;IACvE,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;KACjE;IACD,MAAM,YAAY,GAAoB,IAAI,GAAG,EAAE,CAAC;IAChD,MAAM,SAAS,GAAc,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAC1B,GAAG,CACD,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE;QACpD,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC5B,qEAAqE;YACrE,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,mBAAmB,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;SACb;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,CAAC,IAAI,CAAC,UAAU,MAAM,gCAAgC,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC;SACb;QACD,2BAA2B;QAC3B,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,2BAA2B;QAC3B,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,EAAE;aAC9B,KAAK,CAAC,cAAc,CAAC;aACrB,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aAClD,MAAM,EAAE,CAAC;QACZ,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC7C,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACtC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;SACtD;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CACH,CACF,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACjC,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;KACvE;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,GAAgB,EAChB,KAA2B,EAC3B,OAAe;IAEf,MAAM,OAAO,GAAG,IAAI,GAAG,EAAc,CAAC;IACtC,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,qBAAqB,CAAC;IAC/D,MAAM,IAAI,GAAG,CACX,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5B,IAAI,CAAC,CAAC,OAAO,IAAI,mBAAmB,EAAE;YACpC,OAAO,IAAI,CAAC;SACb;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,mCAAmC,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;SACb;QACD,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC,CAAC,CACH,CACF,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;KACtE;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,GAAgB,EAChB,KAA2B,EAC3B,OAAe,EACf,OAAe,EACf,OAAe;IAEf,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC9C,sDAAsD;IACtD,MAAM,UAAU,GAAG,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IAEzD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE;SACzB,KAAK,CAAC,cAAc,CAAC;SACrB,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAC1B,CAAC;SACE,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,GAAG,sBAAsB,CAAC;SACtE,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAC3B;SACA,IAAI,CAAC,UAAU,CAAC,CAAC;IAEpB,KAAK,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC;IACnE,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,CAAC,MAAM,eAAe,CAAC,CAAC;IAClE,kBAAkB;IAClB,KAAK,CAAC,OAAO,CAAC,IAAI,CAChB,GAAG,CACD,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE;YAClD,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,mCAAmC,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;SACb;QACD,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACtD,CAAC,CAAC,CACH,CACF,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACjC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,GAAgB,EAChB,MAAkB,EAClB,QAAkB;IAElB,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;KACnC;IACD,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACrD,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;QAC5B,OAAO,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;KAC1E;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;QACrC,OAAO,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;KAC5E;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KACrD;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAC1B,GAAgB,EAChB,IAAiB,EACjB,OAAe;IAEf,MAAM,kBAAkB,GAAG,MAAM,GAAG,CAAC,EAAE;SACpC,KAAK,CAAC,oBAAoB,CAAC;SAC3B,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SACpD,MAAM,EAAE,CAAC;IACZ,IAAI,kBAAkB,EAAE;QACtB,+DAA+D;QAC/D,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,wCAAwC,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC;KACd;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjB,OAAO,KAAK,CAAC;KACd;IACD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;QACvB,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,GAAG,uCAAuC,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;KACd;IACD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE;SAC1B,KAAK,CAAC,cAAc,CAAC;SACrB,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;SACpD,KAAK,EAAE,CAAC;IACX,IAAI,QAAQ,EAAE;QACZ,yEAAyE;QACzE,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,GAAG,0CAA0C,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC;KACd;IACD,MAAM,SAAS,GACb,IAAI,CAAC,aAAa,CAAC,gBAAgB;QACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE;QAClC,MAAM,EAAE,IAAI,CAAC,GAAG;QAChB,OAAO;KACR,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAgB;IACxC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO;YACL,cAAc,EAAE,uBAAuB;YACvC,QAAQ,EAAE,iBAAiB;SAC5B,CAAC;KACH;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,GAAgB;IAC9C,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3D,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAC5E,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CACtB,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,CACpD,CAAE,CAAC;AACN,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,GAAgB;IACtD,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3D,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAClE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CACtB,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CACjE,CAAE,CAAC;AACN,CAAC;AACD,6DAA6D;AAC7D,MAAM,OAAO,GAAG,wCAAwC,CAAC"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../../src/component/loop.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Infer } from "convex/values";
2
2
  import { Logger } from "./logging.js";
3
+ export declare const DEFAULT_MAX_PARALLELISM = 10;
3
4
  export declare const SECOND = 1000;
4
5
  export declare const MINUTE: number;
5
6
  export declare const HOUR: number;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/component/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAY,MAAM,cAAc,CAAC;AAGhD,eAAO,MAAM,MAAM,OAAO,CAAC;AAC3B,eAAO,MAAM,MAAM,QAAc,CAAC;AAClC,eAAO,MAAM,IAAI,QAAc,CAAC;AAChC,eAAO,MAAM,GAAG,QAAY,CAAC;AAC7B,eAAO,MAAM,IAAI,QAAY,CAAC;AAE9B,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,eAAO,MAAM,MAAM;;;;;;6CAGjB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAE1C,eAAO,MAAM,aAAa;;;;;;;;2DAIxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;gGAYrB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAEhD,eAAO,MAAM,UAAU;;;;;;4DAGrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+GAclB,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAE1C,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAatE;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAEnD;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAEnD"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/component/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAY,MAAM,cAAc,CAAC;AAEhD,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,eAAO,MAAM,MAAM,OAAO,CAAC;AAC3B,eAAO,MAAM,MAAM,QAAc,CAAC;AAClC,eAAO,MAAM,IAAI,QAAc,CAAC;AAChC,eAAO,MAAM,GAAG,QAAY,CAAC;AAC7B,eAAO,MAAM,IAAI,QAAY,CAAC;AAE9B,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,eAAO,MAAM,MAAM;;;;;;6CAGjB,CAAC;AACH,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAE1C,eAAO,MAAM,aAAa;;;;;;;;2DAIxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAIF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;gGAYrB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAEhD,eAAO,MAAM,UAAU;;;;;;4DAGrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+GAclB,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;AAE1C,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAatE;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAEnD;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAEnD"}
@@ -1,5 +1,6 @@
1
1
  import { v } from "convex/values";
2
2
  import { logLevel } from "./logging.js";
3
+ export const DEFAULT_MAX_PARALLELISM = 10;
3
4
  const SEGMENT_MS = 100;
4
5
  export const SECOND = 1000;
5
6
  export const MINUTE = 60 * SECOND;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/component/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/component/shared.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { Doc } from "./_generated/dataModel.js";
1
+ import { Doc, Id } from "./_generated/dataModel.js";
2
+ import { Logger } from "./logging.js";
2
3
  /**
3
4
  * Record stats about work execution. Intended to be queried by Axiom or Datadog.
4
5
  */
@@ -11,29 +12,34 @@ workpool
11
12
  parse_json(trim("'", tostring(["data.message"]))),
12
13
  parse_json('{}')
13
14
  )
14
- | extend lagSinceEnqueued = parsed_message["lagSinceEnqueued"]
15
+ | extend startLag = parsed_message["startLag"]
15
16
  | extend fnName = parsed_message["fnName"]
16
- | summarize avg(todouble(lagSinceEnqueued)) by bin_auto(_time), tostring(fnName)
17
+ | summarize avg(todouble(startLag)) by bin_auto(_time), tostring(fnName)
17
18
 
18
19
  */
19
- export declare function recordStarted(work: Doc<"work">): string;
20
- export declare function recordCompleted(work: Doc<"work">, status: "success" | "failed" | "canceled" | "retrying"): string;
21
- export declare function recordReport(state: Doc<"internalState">): string;
20
+ export declare function recordEnqueued(console: Logger, data: {
21
+ workId: Id<"work">;
22
+ fnName: string;
23
+ runAt: number;
24
+ }): void;
25
+ export declare function recordStarted(console: Logger, work: Doc<"work">, lagMs: number): void;
26
+ export declare function recordCompleted(console: Logger, work: Doc<"work">, status: "success" | "failed" | "canceled" | "retrying"): void;
27
+ export declare function recordReport(console: Logger, state: Doc<"internalState">): void;
22
28
  /**
23
29
  * Warning: this should not be used from a mutation, as it will cause conflicts.
24
30
  * Use this to debug or diagnose your queue length when it's backed up.
25
31
  */
26
- export declare const queueLength: import("convex/server").RegisteredQuery<"internal", {}, Promise<any>>;
32
+ export declare const queueLength: import("convex/server").RegisteredQuery<"public", {}, Promise<any>>;
27
33
  /**
28
34
  * Warning: this should not be used from a mutation, as it will cause conflicts.
29
35
  * Use this while developing to see the state of the queue.
30
36
  */
31
- export declare const debugCounts: import("convex/server").RegisteredQuery<"internal", {}, Promise<{
32
- pendingStart: any;
33
- inProgressWork: number;
34
- pendingCompletion: any;
35
- pendingCancelation: any;
36
- active: number;
37
+ export declare const diagnostic: import("convex/server").RegisteredQuery<"internal", {}, Promise<{
38
+ canceling: any;
39
+ waiting: any;
40
+ running: number;
41
+ completing: any;
42
+ spareCapacity: number;
37
43
  runStatus: "running" | "scheduled" | "idle" | undefined;
38
44
  generation: bigint | undefined;
39
45
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/component/stats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAGhD;;GAEG;AAEH;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CASvD;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GACrD,MAAM,CAUR;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,MAAM,CAahE;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,uEAOtB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;GA0BtB,CAAC"}
1
+ {"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/component/stats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,2BAA2B,CAAC;AAGpD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;GAEG;AAEH;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,QAMF;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,KAAK,EAAE,MAAM,QASd;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EACjB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,QASvD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,QAYxE;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,qEAOtB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;GA4BrB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { v } from "convex/values";
2
- import { internalQuery } from "./_generated/server.js";
2
+ import { internalQuery, query } from "./_generated/server.js";
3
+ import { DEFAULT_MAX_PARALLELISM } from "./shared.js";
3
4
  /**
4
5
  * Record stats about work execution. Intended to be queried by Axiom or Datadog.
5
6
  */
@@ -12,37 +13,39 @@ workpool
12
13
  parse_json(trim("'", tostring(["data.message"]))),
13
14
  parse_json('{}')
14
15
  )
15
- | extend lagSinceEnqueued = parsed_message["lagSinceEnqueued"]
16
+ | extend startLag = parsed_message["startLag"]
16
17
  | extend fnName = parsed_message["fnName"]
17
- | summarize avg(todouble(lagSinceEnqueued)) by bin_auto(_time), tostring(fnName)
18
+ | summarize avg(todouble(startLag)) by bin_auto(_time), tostring(fnName)
18
19
 
19
20
  */
20
- export function recordStarted(work) {
21
- return JSON.stringify({
21
+ export function recordEnqueued(console, data) {
22
+ console.event("enqueued", {
23
+ ...data,
24
+ enqueuedAt: Date.now(),
25
+ });
26
+ }
27
+ export function recordStarted(console, work, lagMs) {
28
+ console.event("started", {
22
29
  workId: work._id,
23
- event: "started",
24
30
  fnName: work.fnName,
25
31
  enqueuedAt: work._creationTime,
26
32
  startedAt: Date.now(),
27
- lagSinceEnqueued: Date.now() - work._creationTime,
33
+ startLag: lagMs,
28
34
  });
29
35
  }
30
- export function recordCompleted(work, status) {
31
- return JSON.stringify({
36
+ export function recordCompleted(console, work, status) {
37
+ console.event("completed", {
32
38
  workId: work._id,
33
- event: "completed",
34
39
  fnName: work.fnName,
35
40
  completedAt: Date.now(),
36
41
  attempts: work.attempts,
37
42
  status,
38
- lagSinceEnqueued: Date.now() - work._creationTime,
39
43
  });
40
44
  }
41
- export function recordReport(state) {
45
+ export function recordReport(console, state) {
42
46
  const { completed, succeeded, failed, retries, canceled } = state.report;
43
47
  const withoutRetries = completed - retries;
44
- return JSON.stringify({
45
- event: "report",
48
+ console.event("report", {
46
49
  completed,
47
50
  succeeded,
48
51
  failed,
@@ -56,7 +59,7 @@ export function recordReport(state) {
56
59
  * Warning: this should not be used from a mutation, as it will cause conflicts.
57
60
  * Use this to debug or diagnose your queue length when it's backed up.
58
61
  */
59
- export const queueLength = internalQuery({
62
+ export const queueLength = query({
60
63
  args: {},
61
64
  returns: v.number(),
62
65
  handler: async (ctx) => {
@@ -68,12 +71,14 @@ export const queueLength = internalQuery({
68
71
  * Warning: this should not be used from a mutation, as it will cause conflicts.
69
72
  * Use this while developing to see the state of the queue.
70
73
  */
71
- export const debugCounts = internalQuery({
74
+ export const diagnostic = internalQuery({
72
75
  args: {},
73
76
  returns: v.any(),
74
77
  handler: async (ctx) => {
78
+ const global = await ctx.db.query("globals").unique();
75
79
  const internalState = await ctx.db.query("internalState").unique();
76
80
  const inProgressWork = internalState?.running.length ?? 0;
81
+ const maxParallelism = global?.maxParallelism ?? DEFAULT_MAX_PARALLELISM;
77
82
  /* eslint-disable @typescript-eslint/no-explicit-any */
78
83
  const pendingStart = await ctx.db.query("pendingStart").count();
79
84
  const pendingCompletion = await ctx.db.query("pendingCompletion").count();
@@ -81,11 +86,11 @@ export const debugCounts = internalQuery({
81
86
  const runStatus = await ctx.db.query("runStatus").unique();
82
87
  /* eslint-enable @typescript-eslint/no-explicit-any */
83
88
  return {
84
- pendingStart,
85
- inProgressWork,
86
- pendingCompletion,
87
- pendingCancelation,
88
- active: inProgressWork - pendingCompletion,
89
+ canceling: pendingCancelation,
90
+ waiting: pendingStart,
91
+ running: inProgressWork - pendingCompletion,
92
+ completing: pendingCompletion,
93
+ spareCapacity: maxParallelism - inProgressWork,
89
94
  runStatus: runStatus?.state.kind,
90
95
  generation: internalState?.generation,
91
96
  };
@@ -1 +1 @@
1
- {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/component/stats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/component/stats.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "email": "support@convex.dev",
8
8
  "url": "https://github.com/get-convex/workpool/issues"
9
9
  },
10
- "version": "0.2.0-alpha.0",
10
+ "version": "0.2.0",
11
11
  "license": "Apache-2.0",
12
12
  "keywords": [
13
13
  "convex",
@@ -24,14 +24,15 @@
24
24
  "build:cjs": "tsc --project ./commonjs.json && echo '{\\n \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json",
25
25
  "dev": "cd example; npm run dev",
26
26
  "typecheck": "tsc --noEmit",
27
- "prepare": "npm run build",
28
- "prepack": "node node10stubs.mjs",
29
- "postpack": "node node10stubs.mjs --cleanup",
30
- "test": "vitest",
31
27
  "lint": "tsc --noEmit && eslint . && prettier --check .",
32
28
  "format": "prettier --write .",
29
+ "test": "vitest run",
30
+ "test:watch": "vitest",
33
31
  "test:debug": "vitest --inspect-brk --no-file-parallelism",
34
- "test:coverage": "vitest run --coverage --coverage.reporter=text"
32
+ "test:coverage": "vitest run --coverage --coverage.reporter=text",
33
+ "prepare": "npm run build",
34
+ "prepack": "node node10stubs.mjs",
35
+ "postpack": "node node10stubs.mjs --cleanup"
35
36
  },
36
37
  "files": [
37
38
  "dist",
@@ -8,19 +8,22 @@ import {
8
8
  import { v, VString } from "convex/values";
9
9
  import { Mounts } from "../component/_generated/api.js";
10
10
  import {
11
+ DEFAULT_LOG_LEVEL,
12
+ type LogLevel,
13
+ logLevel,
14
+ } from "../component/logging.js";
15
+ import {
16
+ Config,
17
+ DEFAULT_MAX_PARALLELISM,
11
18
  OnComplete,
12
- runResult as runResultValidator,
13
- RunResult,
19
+ runResult as resultValidator,
14
20
  type RetryBehavior,
21
+ RunResult,
15
22
  OnCompleteArgs as SharedOnCompleteArgs,
16
23
  Status,
17
- Config,
18
24
  } from "../component/shared.js";
19
- import { type LogLevel, logLevel } from "../component/logging.js";
20
25
  import { RunMutationCtx, RunQueryCtx, UseApi } from "./utils.js";
21
- import { DEFAULT_LOG_LEVEL } from "../component/logging.js";
22
- import { DEFAULT_MAX_PARALLELISM } from "../component/kick.js";
23
- export { runResultValidator, type RunResult };
26
+ export { resultValidator, type RunResult };
24
27
 
25
28
  // Attempts will run with delay [0, 250, 500, 1000, 2000] (ms)
26
29
  export const DEFAULT_RETRY_BEHAVIOR: RetryBehavior = {
@@ -133,11 +136,18 @@ export class Workpool {
133
136
  fnArgs: Args,
134
137
  options?: CallbackOptions & SchedulerOptions
135
138
  ): Promise<WorkId> {
139
+ const onComplete: OnComplete | undefined = options?.onComplete
140
+ ? {
141
+ fnHandle: await createFunctionHandle(options.onComplete),
142
+ context: options.context,
143
+ }
144
+ : undefined;
136
145
  const id = await ctx.runMutation(this.component.lib.enqueue, {
137
146
  ...(await defaultEnqueueArgs(fn, this.options)),
138
147
  fnArgs,
139
148
  fnType: "mutation",
140
149
  runAt: getRunAt(options),
150
+ onComplete,
141
151
  });
142
152
  return id as WorkId;
143
153
  }
@@ -215,7 +225,7 @@ export type CallbackOptions = {
215
225
  * args: {
216
226
  * workId: workIdValidator,
217
227
  * context: v.any(),
218
- * result: runResult,
228
+ * result: resultValidator,
219
229
  * },
220
230
  * handler: async (ctx, args) => {
221
231
  * console.log(args.result, "Got Context back -> ", args.context, Date.now() - args.context);
@@ -87,6 +87,9 @@ export type Mounts = {
87
87
  | { state: "finished" }
88
88
  >;
89
89
  };
90
+ stats: {
91
+ queueLength: FunctionReference<"query", "public", {}, number>;
92
+ };
90
93
  };
91
94
  // For now fullApiWithMounts is only fullApi which provides
92
95
  // jump-to-definition in component client code.