diff --git a/.changeset/fine-taxes-drive.md b/.changeset/fine-taxes-drive.md deleted file mode 100644 index 59b14a1..0000000 --- a/.changeset/fine-taxes-drive.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@vorsteh-queue/adapter-drizzle": minor -"@vorsteh-queue/adapter-kysely": minor -"@vorsteh-queue/adapter-prisma": minor ---- - -Added support for batch processing diff --git a/.changeset/sweet-oranges-cut.md b/.changeset/sweet-oranges-cut.md deleted file mode 100644 index 54932e8..0000000 --- a/.changeset/sweet-oranges-cut.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -"@vorsteh-queue/core": minor ---- - -### Added - -- Batch processing support: You can now register batch handlers via `queue.registerBatch`, allowing the queue to process multiple jobs at once according to configurable batch sizes and timing. -- New `batch` configuration options: `minSize`, `maxSize`, and `waitFor` allow fine-grained control over when and how batches are processed. -- Type-safe batch jobs: Batch jobs are strictly separated from scheduled/single jobs and **do not support** cron, delay, or repeat options. -- Adapter API extended: All core adapters now support efficient batch operations. -- Events for batch lifecycle: The queue emits `batch:processing`, `batch:completed`, and `batch:failed` events for batch jobs. - -**Handler exclusivity:** A queue can handle only batch jobs or single jobs — not both. Attempting to register both handler types in the same queue will throw an error. This ensures clear and predictable processing. - -#### Example - -```ts -import { MemoryQueueAdapter, Queue } from "@vorsteh-queue/core" - -type EmailPayload = { to: string; body: string } -type EmailResult = { ok: boolean } - -const adapter = new MemoryQueueAdapter() -const queue = new Queue(adapter, { - name: "batch-demo", - batch: { minSize: 5, maxSize: 20, waitFor: 1000 }, -}) - -queue.registerBatch("send-emails", async (jobs) => { - // jobs is an array of up to 20 jobs - await sendBulkEmails(jobs.map((j) => j.payload)) - return jobs.map(() => ({ ok: true })) -}) - -// Add jobs as usual -await queue.addJobs("send-emails", [ - { to: "a@example.com", body: "Hi A" }, - { to: "b@example.com", body: "Hi B" }, - // ... -]) - -queue.start() -``` diff --git a/.changeset/wet-sites-juggle.md b/.changeset/wet-sites-juggle.md deleted file mode 100644 index db46975..0000000 --- a/.changeset/wet-sites-juggle.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"create-vorsteh-queue": patch -"@vorsteh-queue/adapter-drizzle": patch -"@vorsteh-queue/adapter-kysely": patch -"@vorsteh-queue/adapter-prisma": patch -"@vorsteh-queue/core": patch ---- - -update dependencies diff --git a/packages/adapter-drizzle/CHANGELOG.md b/packages/adapter-drizzle/CHANGELOG.md index 1e5a7c0..5a7ce0e 100644 --- a/packages/adapter-drizzle/CHANGELOG.md +++ b/packages/adapter-drizzle/CHANGELOG.md @@ -1,5 +1,18 @@ # @vorsteh-queue/adapter-drizzle +## 0.4.0 + +### Minor Changes + +- b18ec50: Added support for batch processing + +### Patch Changes + +- 35f7171: update dependencies +- Updated dependencies [66c4848] +- Updated dependencies [35f7171] + - @vorsteh-queue/core@0.4.0 + ## 0.3.3 ### Patch Changes diff --git a/packages/adapter-drizzle/package.json b/packages/adapter-drizzle/package.json index 318d8d1..0fb82c5 100644 --- a/packages/adapter-drizzle/package.json +++ b/packages/adapter-drizzle/package.json @@ -1,6 +1,6 @@ { "name": "@vorsteh-queue/adapter-drizzle", - "version": "0.3.3", + "version": "0.4.0", "description": "Drizzle ORM adapter for Vorsteh Queue with PostgreSQL support", "keywords": [ "queue", diff --git a/packages/adapter-kysely/CHANGELOG.md b/packages/adapter-kysely/CHANGELOG.md index edd839e..5308c51 100644 --- a/packages/adapter-kysely/CHANGELOG.md +++ b/packages/adapter-kysely/CHANGELOG.md @@ -1,5 +1,18 @@ # @vorsteh-queue/adapter-kysely +## 0.2.0 + +### Minor Changes + +- b18ec50: Added support for batch processing + +### Patch Changes + +- 35f7171: update dependencies +- Updated dependencies [66c4848] +- Updated dependencies [35f7171] + - @vorsteh-queue/core@0.4.0 + ## 0.1.1 ### Patch Changes diff --git a/packages/adapter-kysely/package.json b/packages/adapter-kysely/package.json index 5fd861d..c90b30d 100644 --- a/packages/adapter-kysely/package.json +++ b/packages/adapter-kysely/package.json @@ -1,6 +1,6 @@ { "name": "@vorsteh-queue/adapter-kysely", - "version": "0.1.1", + "version": "0.2.0", "description": "Kysely adapter for Vorsteh Queue with PostgreSQL support", "keywords": [ "queue", diff --git a/packages/adapter-prisma/CHANGELOG.md b/packages/adapter-prisma/CHANGELOG.md index 4eaa9a4..ec02f33 100644 --- a/packages/adapter-prisma/CHANGELOG.md +++ b/packages/adapter-prisma/CHANGELOG.md @@ -1,5 +1,18 @@ # @vorsteh-queue/adapter-prisma +## 0.3.0 + +### Minor Changes + +- b18ec50: Added support for batch processing + +### Patch Changes + +- 35f7171: update dependencies +- Updated dependencies [66c4848] +- Updated dependencies [35f7171] + - @vorsteh-queue/core@0.4.0 + ## 0.2.3 ### Patch Changes diff --git a/packages/adapter-prisma/package.json b/packages/adapter-prisma/package.json index b992f9d..7236e88 100644 --- a/packages/adapter-prisma/package.json +++ b/packages/adapter-prisma/package.json @@ -1,6 +1,6 @@ { "name": "@vorsteh-queue/adapter-prisma", - "version": "0.2.3", + "version": "0.3.0", "description": "Prisma ORM adapter for Vorsteh Queue with PostgreSQL support", "keywords": [ "queue", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 1b6ff62..dbf0ccf 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,52 @@ # @vorsteh-queue/core +## 0.4.0 + +### Minor Changes + +- 66c4848: ### Added + - Batch processing support: You can now register batch handlers via `queue.registerBatch`, allowing the queue to process multiple jobs at once according to configurable batch sizes and timing. + - New `batch` configuration options: `minSize`, `maxSize`, and `waitFor` allow fine-grained control over when and how batches are processed. + - Type-safe batch jobs: Batch jobs are strictly separated from scheduled/single jobs and **do not support** cron, delay, or repeat options. + - Adapter API extended: All core adapters now support efficient batch operations. + - Events for batch lifecycle: The queue emits `batch:processing`, `batch:completed`, and `batch:failed` events for batch jobs. + + **Handler exclusivity:** A queue can handle only batch jobs or single jobs — not both. Attempting to register both handler types in the same queue will throw an error. This ensures clear and predictable processing. + + #### Example + + ```ts + import { MemoryQueueAdapter, Queue } from "@vorsteh-queue/core" + + type EmailPayload = { to: string; body: string } + type EmailResult = { ok: boolean } + + const adapter = new MemoryQueueAdapter() + const queue = new Queue(adapter, { + name: "batch-demo", + batch: { minSize: 5, maxSize: 20, waitFor: 1000 }, + }) + + queue.registerBatch("send-emails", async (jobs) => { + // jobs is an array of up to 20 jobs + await sendBulkEmails(jobs.map((j) => j.payload)) + return jobs.map(() => ({ ok: true })) + }) + + // Add jobs as usual + await queue.addJobs("send-emails", [ + { to: "a@example.com", body: "Hi A" }, + { to: "b@example.com", body: "Hi B" }, + // ... + ]) + + queue.start() + ``` + +### Patch Changes + +- 35f7171: update dependencies + ## 0.3.2 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 3b96bec..c92cebe 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@vorsteh-queue/core", - "version": "0.3.2", + "version": "0.4.0", "description": "Core queue engine for Vorsteh Queue with TypeScript support, job scheduling, and event system", "keywords": [ "queue", diff --git a/packages/create-vorsteh-queue/CHANGELOG.md b/packages/create-vorsteh-queue/CHANGELOG.md index e76391f..47154dd 100644 --- a/packages/create-vorsteh-queue/CHANGELOG.md +++ b/packages/create-vorsteh-queue/CHANGELOG.md @@ -1,5 +1,11 @@ # create-vorsteh-queue +## 0.1.5 + +### Patch Changes + +- 35f7171: update dependencies + ## 0.1.4 ### Patch Changes diff --git a/packages/create-vorsteh-queue/package.json b/packages/create-vorsteh-queue/package.json index 3e89bd1..287db1f 100644 --- a/packages/create-vorsteh-queue/package.json +++ b/packages/create-vorsteh-queue/package.json @@ -1,6 +1,6 @@ { "name": "create-vorsteh-queue", - "version": "0.1.4", + "version": "0.1.5", "description": "Create Vorsteh Queue applications with one command", "keywords": [ "vorsteh-queue",