@convex-dev/workpool 0.2.18-alpha.3 → 0.2.19-alpha.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.
@@ -8,42 +8,65 @@ import { boundScheduledTime, config, getNextSegment, max, onComplete, retryBehav
8
8
  import { recordEnqueued } from "./stats.js";
9
9
  const MAX_POSSIBLE_PARALLELISM = 100;
10
10
  const MAX_PARALLELISM_SOFT_LIMIT = 50;
11
+ const itemArgs = {
12
+ fnHandle: v.string(),
13
+ fnName: v.string(),
14
+ fnArgs: v.any(),
15
+ fnType,
16
+ runAt: v.number(),
17
+ // TODO: annotation?
18
+ onComplete: v.optional(onComplete),
19
+ retryBehavior: v.optional(retryBehavior),
20
+ };
21
+ const enqueueArgs = {
22
+ ...itemArgs,
23
+ config,
24
+ };
11
25
  export const enqueue = mutation({
26
+ args: enqueueArgs,
27
+ returns: v.id("work"),
28
+ handler: async (ctx, { config, ...itemArgs }) => {
29
+ validateConfig(config);
30
+ const console = createLogger(config.logLevel);
31
+ const kickSegment = await kickMainLoop(ctx, "enqueue", config);
32
+ return await enqueueHandler(ctx, console, kickSegment, itemArgs);
33
+ },
34
+ });
35
+ async function enqueueHandler(ctx, console, kickSegment, { runAt, ...workArgs }) {
36
+ runAt = boundScheduledTime(runAt, console);
37
+ const workId = await ctx.db.insert("work", {
38
+ ...workArgs,
39
+ attempts: 0,
40
+ });
41
+ await ctx.db.insert("pendingStart", {
42
+ workId,
43
+ segment: max(toSegment(runAt), kickSegment),
44
+ });
45
+ recordEnqueued(console, { workId, fnName: workArgs.fnName, runAt });
46
+ return workId;
47
+ }
48
+ function validateConfig(config) {
49
+ if (config.maxParallelism > MAX_POSSIBLE_PARALLELISM) {
50
+ throw new Error(`maxParallelism must be <= ${MAX_PARALLELISM_SOFT_LIMIT}`);
51
+ }
52
+ else if (config.maxParallelism > MAX_PARALLELISM_SOFT_LIMIT) {
53
+ createLogger(config.logLevel).warn(`maxParallelism should be <= ${MAX_PARALLELISM_SOFT_LIMIT}, but is set to ${config.maxParallelism}. This will be an error in a future version.`);
54
+ }
55
+ else if (config.maxParallelism < 1) {
56
+ throw new Error("maxParallelism must be >= 1");
57
+ }
58
+ }
59
+ export const enqueueBatch = mutation({
12
60
  args: {
13
- fnHandle: v.string(),
14
- fnName: v.string(),
15
- fnArgs: v.any(),
16
- fnType,
17
- runAt: v.number(),
18
- // TODO: annotation?
19
- onComplete: v.optional(onComplete),
20
- retryBehavior: v.optional(retryBehavior),
61
+ items: v.array(v.object(itemArgs)),
21
62
  config,
22
63
  },
23
- returns: v.id("work"),
24
- handler: async (ctx, { config, runAt, ...workArgs }) => {
64
+ returns: v.array(v.id("work")),
65
+ handler: async (ctx, { config, items }) => {
66
+ validateConfig(config);
25
67
  const console = createLogger(config.logLevel);
26
- if (config.maxParallelism > MAX_POSSIBLE_PARALLELISM) {
27
- throw new Error(`maxParallelism must be <= ${MAX_PARALLELISM_SOFT_LIMIT}`);
28
- }
29
- else if (config.maxParallelism > MAX_PARALLELISM_SOFT_LIMIT) {
30
- console.warn(`maxParallelism should be <= ${MAX_PARALLELISM_SOFT_LIMIT}, but is set to ${config.maxParallelism}. This will be an error in a future version.`);
31
- }
32
- else if (config.maxParallelism < 1) {
33
- throw new Error("maxParallelism must be >= 1");
34
- }
35
- runAt = boundScheduledTime(runAt, console);
36
- const workId = await ctx.db.insert("work", {
37
- ...workArgs,
38
- attempts: 0,
39
- });
40
- const limit = await kickMainLoop(ctx, "enqueue", config);
41
- await ctx.db.insert("pendingStart", {
42
- workId,
43
- segment: max(toSegment(runAt), limit),
44
- });
45
- recordEnqueued(console, { workId, fnName: workArgs.fnName, runAt });
46
- return workId;
68
+ const kickSegment = await kickMainLoop(ctx, "enqueue", config);
69
+ return Promise.all(items.map((item) => enqueueHandler(ctx, console, kickSegment, item)));
47
70
  },
48
71
  });
49
72
  export const cancel = mutation({
@@ -64,14 +87,19 @@ export const cancel = mutation({
64
87
  });
65
88
  const PAGE_SIZE = 64;
66
89
  export const cancelAll = mutation({
67
- args: { logLevel, before: v.optional(v.number()) },
68
- handler: async (ctx, { logLevel, before }) => {
90
+ args: {
91
+ logLevel,
92
+ before: v.optional(v.number()),
93
+ limit: v.optional(v.number()),
94
+ },
95
+ handler: async (ctx, { logLevel, before, limit }) => {
69
96
  const beforeTime = before ?? Date.now();
97
+ const pageSize = limit ?? PAGE_SIZE;
70
98
  const pageOfWork = await ctx.db
71
99
  .query("work")
72
100
  .withIndex("by_creation_time", (q) => q.lte("_creationTime", beforeTime))
73
101
  .order("desc")
74
- .take(PAGE_SIZE);
102
+ .take(pageSize);
75
103
  const shouldCancel = await Promise.all(pageOfWork.map(async ({ _id }) => shouldCancelWorkItem(ctx, _id, logLevel)));
76
104
  let segment = getNextSegment();
77
105
  if (shouldCancel.some((c) => c)) {
@@ -85,7 +113,7 @@ export const cancelAll = mutation({
85
113
  });
86
114
  }
87
115
  }));
88
- if (pageOfWork.length === PAGE_SIZE) {
116
+ if (pageOfWork.length === pageSize) {
89
117
  await ctx.scheduler.runAfter(0, api.lib.cancelAll, {
90
118
  logLevel,
91
119
  before: pageOfWork[pageOfWork.length - 1]._creationTime,
@@ -96,27 +124,35 @@ export const cancelAll = mutation({
96
124
  export const status = query({
97
125
  args: { id: v.id("work") },
98
126
  returns: statusValidator,
99
- handler: async (ctx, { id }) => {
100
- const work = await ctx.db.get(id);
101
- if (!work) {
102
- return { state: "finished" };
103
- }
104
- const pendingStart = await ctx.db
105
- .query("pendingStart")
106
- .withIndex("workId", (q) => q.eq("workId", id))
107
- .unique();
108
- if (pendingStart) {
109
- return { state: "pending", previousAttempts: work.attempts };
110
- }
111
- const pendingCompletion = await ctx.db
112
- .query("pendingCompletion")
113
- .withIndex("workId", (q) => q.eq("workId", id))
114
- .unique();
115
- if (pendingCompletion?.retry) {
116
- return { state: "pending", previousAttempts: work.attempts };
117
- }
118
- // Assume it's in progress. It could be pending cancelation
119
- return { state: "running", previousAttempts: work.attempts };
127
+ handler: statusHandler,
128
+ });
129
+ async function statusHandler(ctx, { id }) {
130
+ const work = await ctx.db.get(id);
131
+ if (!work) {
132
+ return { state: "finished" };
133
+ }
134
+ const pendingStart = await ctx.db
135
+ .query("pendingStart")
136
+ .withIndex("workId", (q) => q.eq("workId", id))
137
+ .unique();
138
+ if (pendingStart) {
139
+ return { state: "pending", previousAttempts: work.attempts };
140
+ }
141
+ const pendingCompletion = await ctx.db
142
+ .query("pendingCompletion")
143
+ .withIndex("workId", (q) => q.eq("workId", id))
144
+ .unique();
145
+ if (pendingCompletion?.retry) {
146
+ return { state: "pending", previousAttempts: work.attempts };
147
+ }
148
+ // Assume it's in progress. It could be pending cancelation
149
+ return { state: "running", previousAttempts: work.attempts };
150
+ }
151
+ export const statusBatch = query({
152
+ args: { ids: v.array(v.id("work")) },
153
+ returns: v.array(statusValidator),
154
+ handler: async (ctx, { ids }) => {
155
+ return await Promise.all(ids.map(async (id) => await statusHandler(ctx, { id })));
120
156
  },
121
157
  });
122
158
  async function shouldCancelWorkItem(ctx, workId, logLevel) {
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../src/component/lib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../src/component/lib.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.18-alpha.3",
10
+ "version": "0.2.19-alpha.0",
11
11
  "license": "Apache-2.0",
12
12
  "keywords": [
13
13
  "convex",
@@ -19,12 +19,17 @@
19
19
  ],
20
20
  "type": "module",
21
21
  "scripts": {
22
+ "example": "cd example && npm run dev",
23
+ "dev": "run-p -r 'example' 'build:watch'",
24
+ "dashboard": "cd example && npx convex dashboard",
25
+ "all": "run-p -r 'example' 'build:watch' 'test:watch' 'typecheck:watch'",
26
+ "setup": "npm i && npm run build && cd example && npm i && npx convex dev --once",
27
+ "build:watch": "cd src && npx chokidar -d 1000 '../tsconfig.json' '**/*.ts' -c 'npm run build' --initial",
22
28
  "build": "npm run build:esm && npm run build:cjs",
23
29
  "build:esm": "tsc --project ./esm.json && echo '{\\n \"type\": \"module\"\\n}' > dist/esm/package.json",
24
30
  "build:cjs": "tsc --project ./commonjs.json && echo '{\\n \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json",
25
- "dev": "cd example; npx convex dashboard; npm run dev",
26
- "dashboard": "cd example; npx convex dashboard",
27
31
  "typecheck": "tsc --noEmit",
32
+ "typecheck:watch": "tsc --noEmit --watch",
28
33
  "lint": "tsc --noEmit && eslint . && prettier --check .",
29
34
  "format": "prettier --write .",
30
35
  "test": "vitest run",
@@ -70,16 +75,16 @@
70
75
  },
71
76
  "devDependencies": {
72
77
  "@edge-runtime/vm": "5.0.0",
73
- "@eslint/js": "9.32.0",
74
- "@types/node": "22.16.5",
78
+ "@eslint/js": "9.35.0",
79
+ "@types/node": "22.18.4",
75
80
  "@vitest/coverage-v8": "3.2.4",
76
81
  "convex-test": "0.0.38",
77
- "eslint": "9.32.0",
78
- "globals": "16.3.0",
79
- "pkg-pr-new": "0.0.54",
82
+ "eslint": "9.35.0",
83
+ "globals": "16.4.0",
84
+ "pkg-pr-new": "0.0.60",
80
85
  "prettier": "3.6.2",
81
- "typescript": "5.8.3",
82
- "typescript-eslint": "8.38.0",
86
+ "typescript": "5.9.2",
87
+ "typescript-eslint": "8.40.0",
83
88
  "vitest": "3.2.4"
84
89
  },
85
90
  "main": "./dist/commonjs/client/index.js",