@blokjs/trigger-worker 0.2.1 → 0.6.1
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.
- package/__tests__/integration/nats-adapter.real-nats.test.ts +116 -0
- package/__tests__/integration/pgboss-adapter.real-pg.test.ts +164 -0
- package/__tests__/integration/rabbitmq-adapter.real-rabbitmq.test.ts +179 -0
- package/__tests__/integration/sqs-adapter.real-sqs.test.ts +228 -0
- package/dist/WorkerTrigger.d.ts +40 -4
- package/dist/WorkerTrigger.js +272 -40
- package/dist/adapters/BullMQAdapter.d.ts +1 -1
- package/dist/adapters/BullMQAdapter.js +5 -42
- package/dist/adapters/InMemoryAdapter.d.ts +1 -1
- package/dist/adapters/InMemoryAdapter.js +13 -12
- package/dist/adapters/KafkaAdapter.d.ts +62 -0
- package/dist/adapters/KafkaAdapter.js +236 -0
- package/dist/adapters/NATSAdapter.d.ts +110 -0
- package/dist/adapters/NATSAdapter.js +394 -0
- package/dist/adapters/PgBossAdapter.d.ts +56 -0
- package/dist/adapters/PgBossAdapter.js +251 -0
- package/dist/adapters/RabbitMQAdapter.d.ts +51 -0
- package/dist/adapters/RabbitMQAdapter.js +241 -0
- package/dist/adapters/RedisStreamsAdapter.d.ts +64 -0
- package/dist/adapters/RedisStreamsAdapter.js +240 -0
- package/dist/adapters/SQSAdapter.d.ts +61 -0
- package/dist/adapters/SQSAdapter.js +269 -0
- package/dist/adapters/factory.d.ts +34 -0
- package/dist/adapters/factory.js +103 -0
- package/dist/index.d.ts +25 -7
- package/dist/index.js +31 -16
- package/package.json +27 -5
- package/src/WorkerTrigger.test.ts +44 -14
- package/src/WorkerTrigger.ts +299 -27
- package/src/adapters/InMemoryAdapter.ts +9 -5
- package/src/adapters/KafkaAdapter.ts +277 -0
- package/src/adapters/NATSAdapter.ts +454 -0
- package/src/adapters/PgBossAdapter.ts +293 -0
- package/src/adapters/RabbitMQAdapter.ts +285 -0
- package/src/adapters/RedisStreamsAdapter.ts +286 -0
- package/src/adapters/SQSAdapter.ts +306 -0
- package/src/adapters/factory.test.ts +89 -0
- package/src/adapters/factory.ts +111 -0
- package/src/adapters/new-adapters.test.ts +130 -0
- package/src/index.ts +31 -4
- package/template/.env.example +13 -0
- package/template/package.json +45 -0
- package/template/src/Nodes.ts +10 -0
- package/template/src/Workflows.ts +8 -0
- package/template/src/index.ts +41 -0
- package/template/src/runner/WorkerServer.ts +34 -0
- package/template/src/runner/types/Workflows.ts +7 -0
- package/template/src/workflows/jobs/process-job.ts +47 -0
- package/template/tsconfig.json +31 -0
- package/template/vitest.config.ts +39 -0
package/dist/WorkerTrigger.d.ts
CHANGED
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
* - Execute workflow via this.run(ctx)
|
|
19
19
|
* - Ack on success, retry or DLQ on failure
|
|
20
20
|
*/
|
|
21
|
-
import type
|
|
22
|
-
import { DefaultLogger, type GlobalOptions,
|
|
23
|
-
import type { Context } from "@
|
|
21
|
+
import { type HelperResponse, type WorkerTriggerOpts } from "@blokjs/helper";
|
|
22
|
+
import { type BlokService, DefaultLogger, type GlobalOptions, TriggerBase, type TriggerResponse } from "@blokjs/runner";
|
|
23
|
+
import type { Context } from "@blokjs/shared";
|
|
24
24
|
/**
|
|
25
25
|
* Job received from worker queue
|
|
26
26
|
*/
|
|
@@ -135,9 +135,28 @@ export declare abstract class WorkerTrigger extends TriggerBase {
|
|
|
135
135
|
protected nodeMap: GlobalOptions;
|
|
136
136
|
protected readonly tracer: import("@opentelemetry/api").Tracer;
|
|
137
137
|
protected readonly logger: DefaultLogger;
|
|
138
|
-
|
|
138
|
+
/**
|
|
139
|
+
* v0.7 PR 5 — the "default" adapter, used when a workflow's
|
|
140
|
+
* `trigger.worker.provider` field is omitted AND the
|
|
141
|
+
* `BLOK_WORKER_ADAPTER` env var is unset. Subclasses MAY set this
|
|
142
|
+
* for back-compat with the pre-v0.7 single-adapter pattern
|
|
143
|
+
* (`class WorkerServer extends WorkerTrigger { protected adapter = new NATSWorkerAdapter() }`).
|
|
144
|
+
*
|
|
145
|
+
* When unset AND no per-workflow provider is specified, the factory
|
|
146
|
+
* falls back to `in-memory`. The factory pool (`adapters/factory.ts`)
|
|
147
|
+
* tracks one connected adapter per provider so multiple workflows
|
|
148
|
+
* with the same provider share a single broker connection.
|
|
149
|
+
*/
|
|
150
|
+
protected adapter?: WorkerAdapter;
|
|
139
151
|
/** Active queues being processed */
|
|
140
152
|
protected activeQueues: Set<string>;
|
|
153
|
+
/**
|
|
154
|
+
* v0.7 PR 5 — adapter pool, keyed by provider name. Populated lazily
|
|
155
|
+
* inside `listen()` as workflows are matched to providers. Each
|
|
156
|
+
* adapter is connected once and reused across workflows that share
|
|
157
|
+
* its provider. Drained in `stop()`.
|
|
158
|
+
*/
|
|
159
|
+
protected adapterPool: Map<string, WorkerAdapter>;
|
|
141
160
|
protected abstract nodes: Record<string, BlokService<unknown>>;
|
|
142
161
|
protected abstract workflows: Record<string, HelperResponse>;
|
|
143
162
|
constructor();
|
|
@@ -176,6 +195,23 @@ export declare abstract class WorkerTrigger extends TriggerBase {
|
|
|
176
195
|
* Get list of active queues
|
|
177
196
|
*/
|
|
178
197
|
getActiveQueues(): string[];
|
|
198
|
+
/**
|
|
199
|
+
* v0.7 PR 5 — pick the adapter for a workflow's `provider` field.
|
|
200
|
+
*
|
|
201
|
+
* Resolution order:
|
|
202
|
+
* 1. Subclass-set `this.adapter` (back-compat: pre-v0.7 pattern
|
|
203
|
+
* where one process binds to one adapter at construction time).
|
|
204
|
+
* 2. Per-workflow `provider` field, looked up via the factory.
|
|
205
|
+
* 3. `BLOK_WORKER_ADAPTER` env var.
|
|
206
|
+
* 4. `in-memory` fallback.
|
|
207
|
+
*
|
|
208
|
+
* Adapters are connected on first use and pooled per provider so
|
|
209
|
+
* multiple workflows sharing a provider share one broker
|
|
210
|
+
* connection. Health-dependency registration also happens here so
|
|
211
|
+
* each provider is tracked individually in `/health`.
|
|
212
|
+
*/
|
|
213
|
+
protected resolveAdapterForWorkflow(config: WorkerTriggerOpts): Promise<WorkerAdapter>;
|
|
214
|
+
private registerAdapterHealth;
|
|
179
215
|
/**
|
|
180
216
|
* Get all workflows that have worker triggers
|
|
181
217
|
*/
|