@btravstack/amqp-worker 0.31.0 → 0.33.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.
- package/README.md +7 -4
- package/dist/index.cjs +12 -7
- package/dist/index.d.cts +6 -15
- package/dist/index.d.mts +7 -16
- package/dist/index.mjs +13 -7
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -183,10 +183,9 @@ workspace reuses. Nothing else here does.
|
|
|
183
183
|
|
|
184
184
|
## Options
|
|
185
185
|
|
|
186
|
-
`AmqpModule(name)({...})` takes
|
|
187
|
-
module lists (`imports`, `provides`, `exports`, `needs`).
|
|
188
|
-
|
|
189
|
-
provider on its own port, which is how the composition root supplies it:
|
|
186
|
+
`AmqpModule(name)({...})` takes the starter's options plus `handlers` and the
|
|
187
|
+
module lists (`imports`, `provides`, `exports`, `needs`). It is the only way to
|
|
188
|
+
compose the starter, which is not exported:
|
|
190
189
|
|
|
191
190
|
| Option | What it is |
|
|
192
191
|
| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -215,6 +214,10 @@ there is no second timeout in the process to keep in step. Each delivery is one
|
|
|
215
214
|
unit, `traceId` the publisher's `messageId`. The rest is on the
|
|
216
215
|
[documentation site](https://btravstack.github.io/btravstack/reference/amqp-worker).
|
|
217
216
|
|
|
217
|
+
`AmqpModule` automatically exports publicly available `Logger` and `HealthChecks`
|
|
218
|
+
ports, including whole-module re-exports and providers declared at the root.
|
|
219
|
+
It keeps private infrastructure hidden and business exports explicit.
|
|
220
|
+
|
|
218
221
|
## License
|
|
219
222
|
|
|
220
223
|
[MIT](./LICENSE) © Benoit TRAVERS
|
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
let _btravstack_core = require("@btravstack/core");
|
|
2
3
|
let _btravstack_di = require("@btravstack/di");
|
|
3
4
|
let _amqp_contract_worker = require("@amqp-contract/worker");
|
|
4
5
|
let _btravstack_config = require("@btravstack/config");
|
|
5
|
-
let _btravstack_core = require("@btravstack/core");
|
|
6
6
|
let unthrown = require("unthrown");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
//#region src/broker-log.ts
|
|
@@ -173,7 +173,7 @@ const metaFor = (raw) => {
|
|
|
173
173
|
//#endregion
|
|
174
174
|
//#region src/amqp-runtime.ts
|
|
175
175
|
/**
|
|
176
|
-
* The broker, as a service:
|
|
176
|
+
* The broker, as a service: the starter binds it from `AMQP_URL` (default
|
|
177
177
|
* `amqp://127.0.0.1:5672`) and `AMQP_CONNECT_TIMEOUT_MS` (default `5_000`)
|
|
178
178
|
* unless pinned, and anything else in the graph may read it — a publisher
|
|
179
179
|
* sharing the consumer's broker, say.
|
|
@@ -185,7 +185,7 @@ var AmqpConfig = class extends (0, _btravstack_di.Port)("AmqpConfig") {};
|
|
|
185
185
|
* be reported, not sat on.
|
|
186
186
|
*/
|
|
187
187
|
const DEFAULT_CONNECT_TIMEOUT_MS = 5e3;
|
|
188
|
-
/** The runtime's port: what
|
|
188
|
+
/** The runtime's port: what the starter provides, and what `AmqpModule` exports for `start` to boot. */
|
|
189
189
|
var AmqpRuntime = class extends _btravstack_core.RuntimePort {};
|
|
190
190
|
/**
|
|
191
191
|
* The handlers' port — one id, the starter's own, which an application never
|
|
@@ -313,10 +313,16 @@ const AmqpModule = (name) => (options) => {
|
|
|
313
313
|
const provides = options.provides ?? [];
|
|
314
314
|
const exports = options.exports ?? [];
|
|
315
315
|
const starter = amqp(options);
|
|
316
|
+
const rootImports = [...imports, starter];
|
|
317
|
+
const rootProvides = [handlers, ...provides];
|
|
316
318
|
return (0, _btravstack_di.Module)(name)({
|
|
317
|
-
imports:
|
|
318
|
-
provides:
|
|
319
|
-
exports: [
|
|
319
|
+
imports: rootImports,
|
|
320
|
+
provides: rootProvides,
|
|
321
|
+
exports: [
|
|
322
|
+
AmqpRuntime,
|
|
323
|
+
...(0, _btravstack_core.infrastructureExports)(rootImports, rootProvides),
|
|
324
|
+
...exports
|
|
325
|
+
],
|
|
320
326
|
needs: options.needs ?? []
|
|
321
327
|
});
|
|
322
328
|
};
|
|
@@ -327,4 +333,3 @@ exports.AmqpHandlers = AmqpHandlers;
|
|
|
327
333
|
exports.AmqpMessage = AmqpMessage;
|
|
328
334
|
exports.AmqpModule = AmqpModule;
|
|
329
335
|
exports.AmqpRuntime = AmqpRuntime;
|
|
330
|
-
exports.amqp = amqp;
|
package/dist/index.d.cts
CHANGED
|
@@ -88,7 +88,7 @@ type AmqpInfo = {
|
|
|
88
88
|
};
|
|
89
89
|
declare const AmqpConfig_base: import("@btravstack/di").PortClass<"AmqpConfig">;
|
|
90
90
|
/**
|
|
91
|
-
* The broker, as a service:
|
|
91
|
+
* The broker, as a service: the starter binds it from `AMQP_URL` (default
|
|
92
92
|
* `amqp://127.0.0.1:5672`) and `AMQP_CONNECT_TIMEOUT_MS` (default `5_000`)
|
|
93
93
|
* unless pinned, and anything else in the graph may read it — a publisher
|
|
94
94
|
* sharing the consumer's broker, say.
|
|
@@ -98,7 +98,7 @@ export declare class AmqpConfig extends AmqpConfig_base<{
|
|
|
98
98
|
/** How long `create` waits for the connection and topology setup before failing. */
|
|
99
99
|
readonly connectTimeoutMs: number;
|
|
100
100
|
}> {}
|
|
101
|
-
/** The runtime's port: what
|
|
101
|
+
/** The runtime's port: what the starter provides, and what `AmqpModule` exports for `start` to boot. */
|
|
102
102
|
export declare class AmqpRuntime extends RuntimePort<Runtime<never, AmqpInfo>> {}
|
|
103
103
|
/** The needs a bound `unit.message` module still owes, less the delivery the fork's seed discharges. */
|
|
104
104
|
type UnitNeedsOf$1<Unit> = UnitNeedsOf<Unit, AmqpMessageInstance>;
|
|
@@ -127,7 +127,7 @@ type AmqpOptions<TContract extends AnyAmqpContract, Unit extends AnyUnitModule |
|
|
|
127
127
|
readonly contract: TContract;
|
|
128
128
|
} & AmqpTuning<Unit>;
|
|
129
129
|
/**
|
|
130
|
-
* What an AMQP deployment tunes, shared verbatim by
|
|
130
|
+
* What an AMQP deployment tunes, shared verbatim by the starter and `AmqpModule` —
|
|
131
131
|
* spelled once so the two cannot drift, which is what a second copy of an
|
|
132
132
|
* option list always eventually does.
|
|
133
133
|
*/
|
|
@@ -156,15 +156,6 @@ type AmqpTuning<Unit extends AnyUnitModule | undefined = undefined> = {
|
|
|
156
156
|
readonly message?: Unit;
|
|
157
157
|
};
|
|
158
158
|
};
|
|
159
|
-
/**
|
|
160
|
-
* The AMQP starter: a module providing the runtime and its configuration (bound
|
|
161
|
-
* from `AMQP_URL` unless pinned), built over the handlers the application
|
|
162
|
-
* provides on the starter's own handlers port — the module's one need. Import
|
|
163
|
-
* it next to the application, provide the handlers, export `AmqpRuntime`.
|
|
164
|
-
*
|
|
165
|
-
* With `url` pinned the module reads nothing from the environment.
|
|
166
|
-
*/
|
|
167
|
-
export declare const amqp: <TContract extends AnyAmqpContract, Unit extends AnyUnitModule | undefined = undefined>(options: AmqpOptions<TContract, Unit>) => Module<AmqpRuntime | AmqpConfig, ConfigInvalid, EnvReading<never, "AMQP_URL" | "AMQP_CONNECT_TIMEOUT_MS"> | HandlersInstanceOf<TContract> | UnitNeedsOf$1<Unit>>;
|
|
168
159
|
/** One piece of the handlers record — what `AmqpHandler(contract, key)(…)` returns, as the composing form consumes it. */
|
|
169
160
|
type PieceOf<C extends AnyAmqpContract> = { readonly [K in HandlerKeyOf<C>]: {
|
|
170
161
|
readonly port: HandlerPortOf<C, K>;
|
|
@@ -246,7 +237,7 @@ type AmqpStarter<TContract extends AnyAmqpContract, Unit extends AnyUnitModule |
|
|
|
246
237
|
type Imports<I extends readonly AnyModule[], TContract extends AnyAmqpContract, Unit extends AnyUnitModule | undefined> = readonly [...I, AmqpStarter<TContract, Unit>];
|
|
247
238
|
/** The handlers provider plus the application's own — the tuple `Module(name)` is handed. */
|
|
248
239
|
type Provides<P extends readonly AnyProvider[], TContract extends AnyAmqpContract, HandlersError, HandlersNeeds> = readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P];
|
|
249
|
-
type AmqpModuleOptions<TContract extends AnyAmqpContract, HandlersError, HandlersNeeds, Declared, Unit extends AnyUnitModule | undefined, I extends readonly AnyModule[], P extends readonly AnyProvider[], X extends readonly Exportable<Imports<I, TContract, Unit>, Provides<P, TContract, HandlersError, HandlersNeeds>>[], N extends readonly AnyPort[]> = AmqpTuning<Unit> & {
|
|
240
|
+
type AmqpModuleOptions<TContract extends AnyAmqpContract, HandlersError, HandlersNeeds, Declared, Unit extends AnyUnitModule | undefined, I extends readonly AnyModule[], P extends readonly AnyProvider[], X extends readonly Exportable<Imports<I, TContract, Unit>, Provides<P, TContract, HandlersError, HandlersNeeds>>[], N extends readonly AnyPort[] | undefined> = AmqpTuning<Unit> & {
|
|
250
241
|
readonly contract: TContract;
|
|
251
242
|
/**
|
|
252
243
|
* The application's handlers — what `AmqpHandlers(contract)(…)` returns for
|
|
@@ -259,7 +250,7 @@ type AmqpModuleOptions<TContract extends AnyAmqpContract, HandlersError, Handler
|
|
|
259
250
|
};
|
|
260
251
|
readonly imports?: I;
|
|
261
252
|
readonly provides?: P;
|
|
262
|
-
/** The application's own exports; `AmqpRuntime`
|
|
253
|
+
/** The application's own exports; `AmqpRuntime` and visible kernel infrastructure are added. */
|
|
263
254
|
readonly exports?: X;
|
|
264
255
|
/**
|
|
265
256
|
* What this root's OWN providers expect from outside. di's gate is re-stated
|
|
@@ -283,6 +274,6 @@ type AmqpModuleOptions<TContract extends AnyAmqpContract, HandlersError, Handler
|
|
|
283
274
|
* await runMain(OrderAmqpWorker);
|
|
284
275
|
* ```
|
|
285
276
|
*/
|
|
286
|
-
export declare const AmqpModule: <const Name extends string>(name: Name) => <TContract extends AnyAmqpContract, HandlersError, HandlersNeeds, Declared = never, Unit extends AnyUnitModule | undefined = undefined, const I extends readonly AnyModule[] = [], const P extends readonly AnyProvider[] = [], const X extends readonly Exportable<Imports<I, TContract, Unit>, Provides<P, TContract, HandlersError, HandlersNeeds>>[] = [], const N extends readonly AnyPort[] =
|
|
277
|
+
export declare const AmqpModule: <const Name extends string>(name: Name) => <TContract extends AnyAmqpContract, HandlersError, HandlersNeeds, Declared = never, Unit extends AnyUnitModule | undefined = undefined, const I extends readonly AnyModule[] = [], const P extends readonly AnyProvider[] = [], const X extends readonly Exportable<Imports<I, TContract, Unit>, Provides<P, TContract, HandlersError, HandlersNeeds>>[] = [], const N extends readonly AnyPort[] | undefined = undefined>(options: AmqpModuleOptions<TContract, HandlersError, HandlersNeeds, Declared, Unit, I, P, X, N>) => Module<(Extract<(readonly [typeof AmqpRuntime, ...((import("@btravstack/core").HealthChecks extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").HealthChecks : never) | (import("@btravstack/core").Logger extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").Logger : never))[], ...X])[number], AnyModule> extends (infer T_2) ? T_2 extends Extract<(readonly [typeof AmqpRuntime, ...((import("@btravstack/core").HealthChecks extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").HealthChecks : never) | (import("@btravstack/core").Logger extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").Logger : never))[], ...X])[number], AnyModule> ? T_2 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[0] | ((readonly [typeof AmqpRuntime, ...((import("@btravstack/core").HealthChecks extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").HealthChecks : never) | (import("@btravstack/core").Logger extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").Logger : never))[], ...X])[number] extends (infer E_1) ? E_1 extends AnyPort ? InstanceType<E_1> : E_1 extends AnyProvider ? InstanceType<E_1["port"]> : never : never), ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_3) ? T_3 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_3 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[1] | ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T_4) ? T_4 extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T_4 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[1], Exclude<((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_5) ? T_5 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_5 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[2], ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T_6) ? T_6 extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T_6 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[0] | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_5) ? T_5 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_5 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[0]> | Exclude<((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T_6) ? T_6 extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T_6 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[2], ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T_6) ? T_6 extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T_6 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[0] | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_5) ? T_5 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_5 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[0]>>;
|
|
287
278
|
//#endregion
|
|
288
279
|
export type { AmqpConnectionOptions, AmqpInfo, AmqpMessageOf, AmqpMessagePortOf, AmqpModuleOptions, AmqpOptions, HandlerPortOf, HandlersInstanceOf, HandlersPortOf };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { AnyUnitModule, Refuse, Runtime, RuntimePort, UnitGate, UnitNeedsOf, UnitRecordOf } from "@btravstack/core";
|
|
1
2
|
import { AnyModule, AnyPort, AnyProvider, Exportable, Module, NeedsGate, PortClassOf, PortInstance, Provider, ServiceOf } from "@btravstack/di";
|
|
2
3
|
import { ConsumerOptions, TypedAmqpWorker, WorkerInferHandlers } from "@amqp-contract/worker";
|
|
3
4
|
import { ConfigInvalid, EnvReading } from "@btravstack/config";
|
|
4
|
-
import { AnyUnitModule, Refuse, Runtime, RuntimePort, UnitGate, UnitNeedsOf, UnitRecordOf } from "@btravstack/core";
|
|
5
5
|
//#region src/handler.d.ts
|
|
6
6
|
/** The consumer and rpc names `C` declares — the keys of its handlers record. */
|
|
7
7
|
type HandlerKeyOf<C extends AnyAmqpContract> = keyof WorkerInferHandlers<C> & string;
|
|
@@ -88,7 +88,7 @@ type AmqpInfo = {
|
|
|
88
88
|
};
|
|
89
89
|
declare const AmqpConfig_base: import("@btravstack/di").PortClass<"AmqpConfig">;
|
|
90
90
|
/**
|
|
91
|
-
* The broker, as a service:
|
|
91
|
+
* The broker, as a service: the starter binds it from `AMQP_URL` (default
|
|
92
92
|
* `amqp://127.0.0.1:5672`) and `AMQP_CONNECT_TIMEOUT_MS` (default `5_000`)
|
|
93
93
|
* unless pinned, and anything else in the graph may read it — a publisher
|
|
94
94
|
* sharing the consumer's broker, say.
|
|
@@ -98,7 +98,7 @@ export declare class AmqpConfig extends AmqpConfig_base<{
|
|
|
98
98
|
/** How long `create` waits for the connection and topology setup before failing. */
|
|
99
99
|
readonly connectTimeoutMs: number;
|
|
100
100
|
}> {}
|
|
101
|
-
/** The runtime's port: what
|
|
101
|
+
/** The runtime's port: what the starter provides, and what `AmqpModule` exports for `start` to boot. */
|
|
102
102
|
export declare class AmqpRuntime extends RuntimePort<Runtime<never, AmqpInfo>> {}
|
|
103
103
|
/** The needs a bound `unit.message` module still owes, less the delivery the fork's seed discharges. */
|
|
104
104
|
type UnitNeedsOf$1<Unit> = UnitNeedsOf<Unit, AmqpMessageInstance>;
|
|
@@ -127,7 +127,7 @@ type AmqpOptions<TContract extends AnyAmqpContract, Unit extends AnyUnitModule |
|
|
|
127
127
|
readonly contract: TContract;
|
|
128
128
|
} & AmqpTuning<Unit>;
|
|
129
129
|
/**
|
|
130
|
-
* What an AMQP deployment tunes, shared verbatim by
|
|
130
|
+
* What an AMQP deployment tunes, shared verbatim by the starter and `AmqpModule` —
|
|
131
131
|
* spelled once so the two cannot drift, which is what a second copy of an
|
|
132
132
|
* option list always eventually does.
|
|
133
133
|
*/
|
|
@@ -156,15 +156,6 @@ type AmqpTuning<Unit extends AnyUnitModule | undefined = undefined> = {
|
|
|
156
156
|
readonly message?: Unit;
|
|
157
157
|
};
|
|
158
158
|
};
|
|
159
|
-
/**
|
|
160
|
-
* The AMQP starter: a module providing the runtime and its configuration (bound
|
|
161
|
-
* from `AMQP_URL` unless pinned), built over the handlers the application
|
|
162
|
-
* provides on the starter's own handlers port — the module's one need. Import
|
|
163
|
-
* it next to the application, provide the handlers, export `AmqpRuntime`.
|
|
164
|
-
*
|
|
165
|
-
* With `url` pinned the module reads nothing from the environment.
|
|
166
|
-
*/
|
|
167
|
-
export declare const amqp: <TContract extends AnyAmqpContract, Unit extends AnyUnitModule | undefined = undefined>(options: AmqpOptions<TContract, Unit>) => Module<AmqpRuntime | AmqpConfig, ConfigInvalid, EnvReading<never, "AMQP_URL" | "AMQP_CONNECT_TIMEOUT_MS"> | HandlersInstanceOf<TContract> | UnitNeedsOf$1<Unit>>;
|
|
168
159
|
/** One piece of the handlers record — what `AmqpHandler(contract, key)(…)` returns, as the composing form consumes it. */
|
|
169
160
|
type PieceOf<C extends AnyAmqpContract> = { readonly [K in HandlerKeyOf<C>]: {
|
|
170
161
|
readonly port: HandlerPortOf<C, K>;
|
|
@@ -246,7 +237,7 @@ type AmqpStarter<TContract extends AnyAmqpContract, Unit extends AnyUnitModule |
|
|
|
246
237
|
type Imports<I extends readonly AnyModule[], TContract extends AnyAmqpContract, Unit extends AnyUnitModule | undefined> = readonly [...I, AmqpStarter<TContract, Unit>];
|
|
247
238
|
/** The handlers provider plus the application's own — the tuple `Module(name)` is handed. */
|
|
248
239
|
type Provides<P extends readonly AnyProvider[], TContract extends AnyAmqpContract, HandlersError, HandlersNeeds> = readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P];
|
|
249
|
-
type AmqpModuleOptions<TContract extends AnyAmqpContract, HandlersError, HandlersNeeds, Declared, Unit extends AnyUnitModule | undefined, I extends readonly AnyModule[], P extends readonly AnyProvider[], X extends readonly Exportable<Imports<I, TContract, Unit>, Provides<P, TContract, HandlersError, HandlersNeeds>>[], N extends readonly AnyPort[]> = AmqpTuning<Unit> & {
|
|
240
|
+
type AmqpModuleOptions<TContract extends AnyAmqpContract, HandlersError, HandlersNeeds, Declared, Unit extends AnyUnitModule | undefined, I extends readonly AnyModule[], P extends readonly AnyProvider[], X extends readonly Exportable<Imports<I, TContract, Unit>, Provides<P, TContract, HandlersError, HandlersNeeds>>[], N extends readonly AnyPort[] | undefined> = AmqpTuning<Unit> & {
|
|
250
241
|
readonly contract: TContract;
|
|
251
242
|
/**
|
|
252
243
|
* The application's handlers — what `AmqpHandlers(contract)(…)` returns for
|
|
@@ -259,7 +250,7 @@ type AmqpModuleOptions<TContract extends AnyAmqpContract, HandlersError, Handler
|
|
|
259
250
|
};
|
|
260
251
|
readonly imports?: I;
|
|
261
252
|
readonly provides?: P;
|
|
262
|
-
/** The application's own exports; `AmqpRuntime`
|
|
253
|
+
/** The application's own exports; `AmqpRuntime` and visible kernel infrastructure are added. */
|
|
263
254
|
readonly exports?: X;
|
|
264
255
|
/**
|
|
265
256
|
* What this root's OWN providers expect from outside. di's gate is re-stated
|
|
@@ -283,6 +274,6 @@ type AmqpModuleOptions<TContract extends AnyAmqpContract, HandlersError, Handler
|
|
|
283
274
|
* await runMain(OrderAmqpWorker);
|
|
284
275
|
* ```
|
|
285
276
|
*/
|
|
286
|
-
export declare const AmqpModule: <const Name extends string>(name: Name) => <TContract extends AnyAmqpContract, HandlersError, HandlersNeeds, Declared = never, Unit extends AnyUnitModule | undefined = undefined, const I extends readonly AnyModule[] = [], const P extends readonly AnyProvider[] = [], const X extends readonly Exportable<Imports<I, TContract, Unit>, Provides<P, TContract, HandlersError, HandlersNeeds>>[] = [], const N extends readonly AnyPort[] =
|
|
277
|
+
export declare const AmqpModule: <const Name extends string>(name: Name) => <TContract extends AnyAmqpContract, HandlersError, HandlersNeeds, Declared = never, Unit extends AnyUnitModule | undefined = undefined, const I extends readonly AnyModule[] = [], const P extends readonly AnyProvider[] = [], const X extends readonly Exportable<Imports<I, TContract, Unit>, Provides<P, TContract, HandlersError, HandlersNeeds>>[] = [], const N extends readonly AnyPort[] | undefined = undefined>(options: AmqpModuleOptions<TContract, HandlersError, HandlersNeeds, Declared, Unit, I, P, X, N>) => Module<(Extract<(readonly [typeof AmqpRuntime, ...((import("@btravstack/core").HealthChecks extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").HealthChecks : never) | (import("@btravstack/core").Logger extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").Logger : never))[], ...X])[number], AnyModule> extends (infer T_2) ? T_2 extends Extract<(readonly [typeof AmqpRuntime, ...((import("@btravstack/core").HealthChecks extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").HealthChecks : never) | (import("@btravstack/core").Logger extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").Logger : never))[], ...X])[number], AnyModule> ? T_2 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[0] | ((readonly [typeof AmqpRuntime, ...((import("@btravstack/core").HealthChecks extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").HealthChecks : never) | (import("@btravstack/core").Logger extends ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T) ? T extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T extends Module<infer X_1, infer _E, infer _N> ? X_1 : never : never : never) | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_1) ? T_1 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_1 extends Provider<infer X_2, infer _E_1, infer _N_1> ? X_2 : never : never : never) ? typeof import("@btravstack/core").Logger : never))[], ...X])[number] extends (infer E_1) ? E_1 extends AnyPort ? InstanceType<E_1> : E_1 extends AnyProvider ? InstanceType<E_1["port"]> : never : never), ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_3) ? T_3 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_3 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[1] | ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T_4) ? T_4 extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T_4 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[1], Exclude<((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_5) ? T_5 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_5 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[2], ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T_6) ? T_6 extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T_6 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[0] | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_5) ? T_5 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_5 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[0]> | Exclude<((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T_6) ? T_6 extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T_6 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[2], ((readonly [...I, AmqpStarter<TContract, Unit>])[number] extends (infer T_6) ? T_6 extends (readonly [...I, AmqpStarter<TContract, Unit>])[number] ? T_6 extends Module<infer X_3, infer E, infer N_1> ? readonly [X_3, E, N_1] : never : never : never)[0] | ((readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] extends (infer T_5) ? T_5 extends (readonly [Provider<HandlersInstanceOf<TContract>, HandlersError, HandlersNeeds>, ...P])[number] ? T_5 extends Provider<infer P_1, infer E_2, infer N_2> ? readonly [P_1, E_2, N_2] : never : never : never)[0]>>;
|
|
287
278
|
//#endregion
|
|
288
279
|
export type { AmqpConnectionOptions, AmqpInfo, AmqpMessageOf, AmqpMessagePortOf, AmqpModuleOptions, AmqpOptions, HandlerPortOf, HandlersInstanceOf, HandlersPortOf };
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { Observers, RuntimePort, RuntimeStartFailed, composeByPrefix, dispatchUnit, infrastructureExports, mintPiece, noObserverMember, observe, releasedBy, traceIdOfTraceparent, withUnitRecord } from "@btravstack/core";
|
|
1
2
|
import { Module, Port, Provider } from "@btravstack/di";
|
|
2
3
|
import { TypedAmqpWorker } from "@amqp-contract/worker";
|
|
3
4
|
import { Config, Env } from "@btravstack/config";
|
|
4
|
-
import { Observers, RuntimePort, RuntimeStartFailed, composeByPrefix, dispatchUnit, mintPiece, noObserverMember, observe, releasedBy, traceIdOfTraceparent, withUnitRecord } from "@btravstack/core";
|
|
5
5
|
import { P } from "unthrown";
|
|
6
6
|
import { randomUUID } from "node:crypto";
|
|
7
7
|
//#region src/broker-log.ts
|
|
@@ -172,7 +172,7 @@ const metaFor = (raw) => {
|
|
|
172
172
|
//#endregion
|
|
173
173
|
//#region src/amqp-runtime.ts
|
|
174
174
|
/**
|
|
175
|
-
* The broker, as a service:
|
|
175
|
+
* The broker, as a service: the starter binds it from `AMQP_URL` (default
|
|
176
176
|
* `amqp://127.0.0.1:5672`) and `AMQP_CONNECT_TIMEOUT_MS` (default `5_000`)
|
|
177
177
|
* unless pinned, and anything else in the graph may read it — a publisher
|
|
178
178
|
* sharing the consumer's broker, say.
|
|
@@ -184,7 +184,7 @@ var AmqpConfig = class extends Port("AmqpConfig") {};
|
|
|
184
184
|
* be reported, not sat on.
|
|
185
185
|
*/
|
|
186
186
|
const DEFAULT_CONNECT_TIMEOUT_MS = 5e3;
|
|
187
|
-
/** The runtime's port: what
|
|
187
|
+
/** The runtime's port: what the starter provides, and what `AmqpModule` exports for `start` to boot. */
|
|
188
188
|
var AmqpRuntime = class extends RuntimePort {};
|
|
189
189
|
/**
|
|
190
190
|
* The handlers' port — one id, the starter's own, which an application never
|
|
@@ -312,12 +312,18 @@ const AmqpModule = (name) => (options) => {
|
|
|
312
312
|
const provides = options.provides ?? [];
|
|
313
313
|
const exports = options.exports ?? [];
|
|
314
314
|
const starter = amqp(options);
|
|
315
|
+
const rootImports = [...imports, starter];
|
|
316
|
+
const rootProvides = [handlers, ...provides];
|
|
315
317
|
return Module(name)({
|
|
316
|
-
imports:
|
|
317
|
-
provides:
|
|
318
|
-
exports: [
|
|
318
|
+
imports: rootImports,
|
|
319
|
+
provides: rootProvides,
|
|
320
|
+
exports: [
|
|
321
|
+
AmqpRuntime,
|
|
322
|
+
...infrastructureExports(rootImports, rootProvides),
|
|
323
|
+
...exports
|
|
324
|
+
],
|
|
319
325
|
needs: options.needs ?? []
|
|
320
326
|
});
|
|
321
327
|
};
|
|
322
328
|
//#endregion
|
|
323
|
-
export { AmqpConfig, AmqpHandler, AmqpHandlers, AmqpMessage, AmqpModule, AmqpRuntime
|
|
329
|
+
export { AmqpConfig, AmqpHandler, AmqpHandlers, AmqpMessage, AmqpModule, AmqpRuntime };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@btravstack/amqp-worker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.0",
|
|
4
4
|
"description": "The AMQP starter for @btravstack/core: the handlers as a port, one unit per delivery, and a drain the kernel's deadline releases",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"amqp",
|
|
@@ -47,11 +47,11 @@
|
|
|
47
47
|
"@amqp-contract/contract": "3.0.0-beta.11",
|
|
48
48
|
"@amqp-contract/testing": "3.0.0-beta.11",
|
|
49
49
|
"@amqp-contract/worker": "3.0.0-beta.11",
|
|
50
|
-
"@btravstack/config": "0.
|
|
51
|
-
"@btravstack/core": "0.
|
|
52
|
-
"@btravstack/di": "0.
|
|
50
|
+
"@btravstack/config": "0.33.0",
|
|
51
|
+
"@btravstack/core": "0.33.0",
|
|
52
|
+
"@btravstack/di": "0.33.0",
|
|
53
53
|
"@btravstack/internal-test-infra": "0.0.0",
|
|
54
|
-
"@btravstack/testing": "0.
|
|
54
|
+
"@btravstack/testing": "0.33.0",
|
|
55
55
|
"@btravstack/tsconfig": "0.4.0",
|
|
56
56
|
"@opentelemetry/api": "1.9.1",
|
|
57
57
|
"@types/node": "26.6.4",
|
|
@@ -66,9 +66,9 @@
|
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
68
|
"@amqp-contract/worker": "^3.0.0-beta.7",
|
|
69
|
-
"@btravstack/config": "^0.
|
|
70
|
-
"@btravstack/core": "^0.
|
|
71
|
-
"@btravstack/di": "^0.
|
|
69
|
+
"@btravstack/config": "^0.33.0",
|
|
70
|
+
"@btravstack/core": "^0.33.0",
|
|
71
|
+
"@btravstack/di": "^0.33.0",
|
|
72
72
|
"@opentelemetry/api": "^1",
|
|
73
73
|
"unthrown": "^5.7.0"
|
|
74
74
|
},
|