Skip to content

Changelog

Version v0.11.0

What’s Changed

Features

  • Public in-process adapters. createInProcessStateAdapter and createInProcessNotifyAdapter moved from queuert/internal to the main queuert entry. The in-process state adapter was rewritten around per-type sorted sets and a journal-based rollback log.
  • New queuert/conformance subpath export. Framework-agnostic conformance runner (runStateAdapterConformance, runNotifyAdapterConformance, ConformanceError, ConformanceReport) with a built-in expect shim, for users authoring custom adapters. Documented under Advanced → Custom Adapters.
  • client.deleteJobChain(id, …) — new singular API, symmetric to deleteJobChains. Returns the deleted chain or undefined if missing; throws BlockerReferenceError if external jobs depend on it; supports cascade.
  • client.triggerJobs(ids, …) — new plural API. Atomic validation: throws JobNotFoundError / JobNotTriggerableError for the first invalid job before any job is triggered; returns jobs in input order; empty input returns [].
  • Redis Cluster support (@queuert/redis). SET+PUBLISH Lua script passes the pub/sub channel via ARGV instead of KEYS, avoiding CROSSSLOT rejection on Redis Cluster. New examples for ioredis and node-redis cluster clients.
  • Optional withSavepoint hook on PgStateProvider and SqliteStateProvider — drivers that track transaction state client-side (e.g. postgres.js) can override the default SAVEPOINT / RELEASE / ROLLBACK TO SQL path with native savepoint support.
  • Job<…> gained a TOutput generic parameter — the completed variant now carries output.
  • New guides and examples: Prioritization guide (with showcase-multiworker-prioritization example) and Processing Reliability / error recovery guide (with showcase-error-recovery example).

Breaking Changes

  • runInTransaction renamed to withTransaction on StateAdapter, PgStateProvider, SqliteStateProvider.
  • HookDef renamed to HookDefinition.
  • createPgNotifyAdapter / createRedisNotifyAdapter: option provider renamed to notifyProvider.
  • createInProcessStateAdapter and createInProcessNotifyAdapter are now async and must be await-ed.
  • In-process adapters moved from queuert/internal to queuert.
  • client.deleteJobChain no longer throws JobChainNotFoundError for missing chains — it returns undefined instead.
  • StateAdapter contract: triggerJob replaced by triggerJobs (bucketed triggered / notFound / notTriggerable result); deleteJobChains returns { deleted, blockerRefs }; the adapter enforces blocker validation in one all-or-nothing statement.
  • executeSql in PgStateProvider / SqliteStateProvider now takes typed SQL hints (paramTypes, columnTypes) instead of a boolean returns flag. Custom providers must update accordingly.
  • pgLiteral removed from @queuert/postgres entry; sqliteLiteral removed from @queuert/sqlite entry.

Packages

All packages released at 0.11.0: queuert, @queuert/postgres, @queuert/sqlite, @queuert/redis, @queuert/nats, @queuert/otel, @queuert/dashboard.