@dudousxd/nestjs-diagnostics 0.8.1 → 0.9.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/CHANGELOG.md +16 -0
- package/README.md +29 -0
- package/dist/channel.d.ts +1 -1
- package/dist/channel.d.ts.map +1 -1
- package/dist/channel.js +3 -1
- package/dist/channel.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/nestjs/delivery.d.ts +92 -0
- package/dist/nestjs/delivery.d.ts.map +1 -0
- package/dist/nestjs/delivery.js +2 -0
- package/dist/nestjs/delivery.js.map +1 -0
- package/dist/nestjs/diagnostics.explorer.d.ts +51 -11
- package/dist/nestjs/diagnostics.explorer.d.ts.map +1 -1
- package/dist/nestjs/diagnostics.explorer.js +209 -53
- package/dist/nestjs/diagnostics.explorer.js.map +1 -1
- package/dist/nestjs/diagnostics.module.d.ts +9 -2
- package/dist/nestjs/diagnostics.module.d.ts.map +1 -1
- package/dist/nestjs/diagnostics.module.js +23 -3
- package/dist/nestjs/diagnostics.module.js.map +1 -1
- package/dist/nestjs/diagnostics.options.d.ts +31 -0
- package/dist/nestjs/diagnostics.options.d.ts.map +1 -0
- package/dist/nestjs/diagnostics.options.js +3 -0
- package/dist/nestjs/diagnostics.options.js.map +1 -0
- package/dist/nestjs/index.d.ts +6 -3
- package/dist/nestjs/index.d.ts.map +1 -1
- package/dist/nestjs/index.js +4 -2
- package/dist/nestjs/index.js.map +1 -1
- package/dist/nestjs/on-diagnostic.decorator.d.ts +33 -7
- package/dist/nestjs/on-diagnostic.decorator.d.ts.map +1 -1
- package/dist/nestjs/on-diagnostic.decorator.js +0 -9
- package/dist/nestjs/on-diagnostic.decorator.js.map +1 -1
- package/dist/nestjs/queue-transport.d.ts +47 -0
- package/dist/nestjs/queue-transport.d.ts.map +1 -0
- package/dist/nestjs/queue-transport.js +45 -0
- package/dist/nestjs/queue-transport.js.map +1 -0
- package/dist/nestjs/role.d.ts +13 -0
- package/dist/nestjs/role.d.ts.map +1 -0
- package/dist/nestjs/role.js +13 -0
- package/dist/nestjs/role.js.map +1 -0
- package/dist/nestjs/transports.d.ts +125 -0
- package/dist/nestjs/transports.d.ts.map +1 -0
- package/dist/nestjs/transports.js +127 -0
- package/dist/nestjs/transports.js.map +1 -0
- package/dist/redis-relay.d.ts +60 -0
- package/dist/redis-relay.d.ts.map +1 -0
- package/dist/redis-relay.js +170 -0
- package/dist/redis-relay.js.map +1 -0
- package/dist/relayed.d.ts +8 -0
- package/dist/relayed.d.ts.map +1 -0
- package/dist/relayed.js +31 -0
- package/dist/relayed.js.map +1 -0
- package/dist/trace.d.ts.map +1 -1
- package/dist/trace.js +2 -0
- package/dist/trace.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +14 -6
- package/skills/emit-diagnostics/SKILL.md +5 -2
- package/skills/react-with-on-diagnostic/SKILL.md +41 -13
- package/skills/trace-spans/SKILL.md +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.explorer.js","sourceRoot":"","sources":["../../src/nestjs/diagnostics.explorer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EACL,MAAM,EACN,UAAU,EACV,MAAM,
|
|
1
|
+
{"version":3,"file":"diagnostics.explorer.js","sourceRoot":"","sources":["../../src/nestjs/diagnostics.explorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { type DynamicModule } from '@nestjs/common';
|
|
2
|
+
import { type DiagnosticsModuleAsyncOptions, type DiagnosticsModuleOptions } from './diagnostics.options.js';
|
|
3
|
+
import type { TransportProvider } from './transports.js';
|
|
2
4
|
export declare class DiagnosticsModule {
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Register once at the app root; enables `@OnDiagnostic` on any provider. Pick a `default`
|
|
7
|
+
* transport to run listeners across processes.
|
|
8
|
+
*/
|
|
9
|
+
static forRoot<TTransports extends Record<string, TransportProvider>>(options?: DiagnosticsModuleOptions<TTransports>): DynamicModule;
|
|
10
|
+
/** Like {@link forRoot}, with options built from injected providers. */
|
|
11
|
+
static forRootAsync(options: DiagnosticsModuleAsyncOptions): DynamicModule;
|
|
5
12
|
}
|
|
6
13
|
//# sourceMappingURL=diagnostics.module.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.module.d.ts","sourceRoot":"","sources":["../../src/nestjs/diagnostics.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAU,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.module.d.ts","sourceRoot":"","sources":["../../src/nestjs/diagnostics.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAG5D,OAAO,EAEL,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,qBACa,iBAAiB;IAC5B;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAClE,OAAO,GAAE,wBAAwB,CAAC,WAAW,CAAM,GAClD,aAAa;IAShB,wEAAwE;IACxE,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,6BAA6B,GAAG,aAAa;CAe3E"}
|
|
@@ -8,14 +8,34 @@ var DiagnosticsModule_1;
|
|
|
8
8
|
import { Module } from '@nestjs/common';
|
|
9
9
|
import { DiscoveryModule } from '@nestjs/core';
|
|
10
10
|
import { DiagnosticsExplorer } from './diagnostics.explorer.js';
|
|
11
|
+
import { DIAGNOSTICS_OPTIONS, } from './diagnostics.options.js';
|
|
11
12
|
let DiagnosticsModule = DiagnosticsModule_1 = class DiagnosticsModule {
|
|
12
|
-
/**
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Register once at the app root; enables `@OnDiagnostic` on any provider. Pick a `default`
|
|
15
|
+
* transport to run listeners across processes.
|
|
16
|
+
*/
|
|
17
|
+
static forRoot(options = {}) {
|
|
14
18
|
return {
|
|
15
19
|
module: DiagnosticsModule_1,
|
|
16
20
|
global: true,
|
|
17
21
|
imports: [DiscoveryModule],
|
|
18
|
-
providers: [DiagnosticsExplorer],
|
|
22
|
+
providers: [{ provide: DIAGNOSTICS_OPTIONS, useValue: options }, DiagnosticsExplorer],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** Like {@link forRoot}, with options built from injected providers. */
|
|
26
|
+
static forRootAsync(options) {
|
|
27
|
+
return {
|
|
28
|
+
module: DiagnosticsModule_1,
|
|
29
|
+
global: true,
|
|
30
|
+
imports: [DiscoveryModule, ...(options.imports ?? [])],
|
|
31
|
+
providers: [
|
|
32
|
+
{
|
|
33
|
+
provide: DIAGNOSTICS_OPTIONS,
|
|
34
|
+
useFactory: options.useFactory,
|
|
35
|
+
inject: (options.inject ?? []),
|
|
36
|
+
},
|
|
37
|
+
DiagnosticsExplorer,
|
|
38
|
+
],
|
|
19
39
|
};
|
|
20
40
|
}
|
|
21
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.module.js","sourceRoot":"","sources":["../../src/nestjs/diagnostics.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAsB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.module.js","sourceRoot":"","sources":["../../src/nestjs/diagnostics.module.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAsB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAI3B,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAC5B;;;OAGG;IACH,MAAM,CAAC,OAAO,CACZ,UAAiD,EAAE;QAEnD,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,eAAe,CAAC;YAC1B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,mBAAmB,CAAC;SACtF,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,MAAM,CAAC,YAAY,CAAC,OAAsC;QACxD,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACtD,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,mBAAmB;oBAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAU;iBACxC;gBACD,mBAAmB;aACpB;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAhCY,iBAAiB;IAD7B,MAAM,CAAC,EAAE,CAAC;GACE,iBAAiB,CAgC7B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DynamicModule } from '@nestjs/common';
|
|
2
|
+
import type { DiagnosticsRole } from './role.js';
|
|
3
|
+
import type { TransportProvider } from './transports.js';
|
|
4
|
+
/** Injection token of the {@link DiagnosticsModuleOptions}. */
|
|
5
|
+
export declare const DIAGNOSTICS_OPTIONS: unique symbol;
|
|
6
|
+
/**
|
|
7
|
+
* Options of `DiagnosticsModule.forRoot()`. Without a `default` transport, listeners run in the
|
|
8
|
+
* emitting process (local).
|
|
9
|
+
*/
|
|
10
|
+
export interface DiagnosticsModuleOptions<TTransports extends Record<string, TransportProvider> = Record<string, TransportProvider>> {
|
|
11
|
+
/**
|
|
12
|
+
* Which half of a split deployment this process is: `'all'` (default), `'api'` (emits and hands
|
|
13
|
+
* work to the transport, never consumes or runs listeners) or `'worker'` (consumes and runs
|
|
14
|
+
* listeners). `'api'` and `'worker'` need a `default` transport.
|
|
15
|
+
*/
|
|
16
|
+
role?: DiagnosticsRole;
|
|
17
|
+
/** Name of the transport (a key of `transports`) that starts at bootstrap. */
|
|
18
|
+
default?: keyof TTransports & string;
|
|
19
|
+
/** Named transports, built with the `transports` factory. Only `default` starts. */
|
|
20
|
+
transports?: TTransports;
|
|
21
|
+
/** Unique id of THIS process, for echo suppression. Default a random id. */
|
|
22
|
+
nodeId?: string;
|
|
23
|
+
}
|
|
24
|
+
/** Async configuration: build the options (and your Redis clients) from DI. */
|
|
25
|
+
export interface DiagnosticsModuleAsyncOptions {
|
|
26
|
+
/** Modules whose exported providers the factory injects. */
|
|
27
|
+
imports?: DynamicModule['imports'];
|
|
28
|
+
inject?: unknown[];
|
|
29
|
+
useFactory: (...args: never[]) => Promise<DiagnosticsModuleOptions> | DiagnosticsModuleOptions;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=diagnostics.options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.options.d.ts","sourceRoot":"","sources":["../../src/nestjs/diagnostics.options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,eAAqD,CAAC;AAEtF;;;GAGG;AACH,MAAM,WAAW,wBAAwB,CACvC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAEzF;;;;OAIG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC;IACrC,oFAAoF;IACpF,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+EAA+E;AAC/E,MAAM,WAAW,6BAA6B;IAC5C,4DAA4D;IAC5D,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,wBAAwB,CAAC,GAAG,wBAAwB,CAAC;CAChG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.options.js","sourceRoot":"","sources":["../../src/nestjs/diagnostics.options.ts"],"names":[],"mappings":"AAIA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC"}
|
package/dist/nestjs/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
export { ON_DIAGNOSTIC_META, OnDiagnostic } from './on-diagnostic.decorator.js';
|
|
2
|
-
export type { OnDiagnosticMeta } from './on-diagnostic.decorator.js';
|
|
1
|
+
export { type DiagnosticEventOf, type ListenerEventMatcher, type ListenerMethodDecorator, ON_DIAGNOSTIC_META, OnDiagnostic, type OnDiagnosticMeta, } from './on-diagnostic.decorator.js';
|
|
3
2
|
export { DiagnosticsModule } from './diagnostics.module.js';
|
|
4
|
-
export {
|
|
3
|
+
export { DIAGNOSTICS_OPTIONS, type DiagnosticsModuleAsyncOptions, type DiagnosticsModuleOptions, } from './diagnostics.options.js';
|
|
4
|
+
export { DiagnosticsExplorer, type RegisteredListener, UnknownDiagnosticListenerError, } from './diagnostics.explorer.js';
|
|
5
|
+
export type { DiagnosticsRole } from './role.js';
|
|
6
|
+
export type { DeliveredEvent, DeliveryTransportContext, DurableDiagnosticsDeliveryModule, DurableTransportConfig, ListenerDelivery, ListenerDeliveryTransport, ListenerInvoker, } from './delivery.js';
|
|
7
|
+
export { type QueueTransportConfig, type RedisTransportConfig, type TransportContext, type TransportHandle, type TransportProvider, transports, } from './transports.js';
|
|
5
8
|
export { InjectCapability } from '../inject-capability.js';
|
|
6
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nestjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/nestjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,kBAAkB,EAClB,YAAY,EACZ,KAAK,gBAAgB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,mBAAmB,EACnB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,GAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,YAAY,EACV,cAAc,EACd,wBAAwB,EACxB,gCAAgC,EAChC,sBAAsB,EACtB,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/nestjs/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
export { ON_DIAGNOSTIC_META, OnDiagnostic } from './on-diagnostic.decorator.js';
|
|
1
|
+
export { ON_DIAGNOSTIC_META, OnDiagnostic, } from './on-diagnostic.decorator.js';
|
|
2
2
|
export { DiagnosticsModule } from './diagnostics.module.js';
|
|
3
|
-
export {
|
|
3
|
+
export { DIAGNOSTICS_OPTIONS, } from './diagnostics.options.js';
|
|
4
|
+
export { DiagnosticsExplorer, UnknownDiagnosticListenerError, } from './diagnostics.explorer.js';
|
|
5
|
+
export { transports, } from './transports.js';
|
|
4
6
|
export { InjectCapability } from '../inject-capability.js';
|
|
5
7
|
//# sourceMappingURL=index.js.map
|
package/dist/nestjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nestjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nestjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAClB,YAAY,GAEb,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EACL,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EAEnB,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AAWnC,OAAO,EAML,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1,18 +1,44 @@
|
|
|
1
|
+
import type { DiagnosticEvent, EventOf, LibOf, PayloadOf } from '../types.js';
|
|
1
2
|
/** Metadata key under which a method's @OnDiagnostic subscriptions accumulate. */
|
|
2
3
|
export declare const ON_DIAGNOSTIC_META: unique symbol;
|
|
4
|
+
/** Which events of a lib a listener receives: one exact name, a pattern, or every event. */
|
|
5
|
+
export type ListenerEventMatcher = string | RegExp | undefined;
|
|
3
6
|
/** One subscription declared on a method. `event` omitted = every event of `lib`. */
|
|
4
7
|
export interface OnDiagnosticMeta {
|
|
5
8
|
lib: string;
|
|
6
|
-
event?: string;
|
|
9
|
+
event?: string | RegExp;
|
|
7
10
|
}
|
|
11
|
+
/** The envelope a listener for `(TLib, TEvent)` receives, typed from the `ChannelRegistry`. */
|
|
12
|
+
export type DiagnosticEventOf<TLib extends string, TEvent extends string> = DiagnosticEvent<PayloadOf<TLib, TEvent>>;
|
|
8
13
|
/**
|
|
9
|
-
*
|
|
10
|
-
* `
|
|
14
|
+
* What a listener's parameter must accept: the registered envelope for a channel declared in the
|
|
15
|
+
* `ChannelRegistry`; any envelope otherwise, so handlers on untyped channels keep annotating their
|
|
16
|
+
* own payload type.
|
|
17
|
+
*/
|
|
18
|
+
type AnyEvent = DiagnosticEvent<any>;
|
|
19
|
+
type ListenerEventOf<TLib extends string, TEvent extends string> = unknown extends PayloadOf<TLib, TEvent> ? AnyEvent : DiagnosticEventOf<TLib, TEvent>;
|
|
20
|
+
type ListenerMethod<TEvent> = (event: TEvent) => unknown;
|
|
21
|
+
/**
|
|
22
|
+
* The decorator {@link OnDiagnostic} returns. The decorated method's parameter must accept
|
|
23
|
+
* `TEvent`, so a channel declared in the `ChannelRegistry` checks the handler's payload type.
|
|
24
|
+
*/
|
|
25
|
+
export type ListenerMethodDecorator<TEvent> = <M extends ListenerMethod<TEvent>>(target: object, key: string | symbol, descriptor: TypedPropertyDescriptor<M>) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Make a provider method a diagnostics listener. Requires `DiagnosticsModule.forRoot()`.
|
|
28
|
+
*
|
|
29
|
+
* - `@OnDiagnostic('resilience', 'circuit-opened')`: the exact channel.
|
|
30
|
+
* - `@OnDiagnostic('durable', /^run\./)`: every event of the lib whose name matches.
|
|
31
|
+
* - `@OnDiagnostic('resilience')`: every `aviary:resilience:*` channel (current and future).
|
|
11
32
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
33
|
+
* The listener id is `<ClassName>#<method>`. Delivering transports route work by it, so keep it
|
|
34
|
+
* stable while deliveries may be pending. Stackable: one method can listen to several channels
|
|
35
|
+
* and keeps one id.
|
|
14
36
|
*
|
|
15
|
-
*
|
|
37
|
+
* For a channel declared in the `ChannelRegistry`, the handler's parameter is checked against
|
|
38
|
+
* {@link DiagnosticEventOf}.
|
|
16
39
|
*/
|
|
17
|
-
export declare function OnDiagnostic(lib:
|
|
40
|
+
export declare function OnDiagnostic<TLib extends LibOf>(lib: TLib): ListenerMethodDecorator<AnyEvent>;
|
|
41
|
+
export declare function OnDiagnostic<TLib extends LibOf, TEvent extends EventOf<TLib>>(lib: TLib, event: TEvent): ListenerMethodDecorator<ListenerEventOf<TLib, TEvent>>;
|
|
42
|
+
export declare function OnDiagnostic<TLib extends LibOf>(lib: TLib, event: RegExp): ListenerMethodDecorator<AnyEvent>;
|
|
43
|
+
export {};
|
|
18
44
|
//# sourceMappingURL=on-diagnostic.decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-diagnostic.decorator.d.ts","sourceRoot":"","sources":["../../src/nestjs/on-diagnostic.decorator.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,eAA2B,CAAC;AAE3D,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"on-diagnostic.decorator.d.ts","sourceRoot":"","sources":["../../src/nestjs/on-diagnostic.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE9E,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,eAA2B,CAAC;AAE3D,4FAA4F;AAC5F,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/D,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AAED,+FAA+F;AAC/F,MAAM,MAAM,iBAAiB,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IAAI,eAAe,CACzF,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CACxB,CAAC;AAEF;;;;GAIG;AAEH,KAAK,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;AACrC,KAAK,eAAe,CAAC,IAAI,SAAS,MAAM,EAAE,MAAM,SAAS,MAAM,IAAI,OAAO,SAAS,SAAS,CAC1F,IAAI,EACJ,MAAM,CACP,GACG,QAAQ,GACR,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAEpC,KAAK,cAAc,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,uBAAuB,CAAC,MAAM,IAAI,CAAC,CAAC,SAAS,cAAc,CAAC,MAAM,CAAC,EAC7E,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,UAAU,EAAE,uBAAuB,CAAC,CAAC,CAAC,KACnC,IAAI,CAAC;AAEV;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,SAAS,KAAK,EAAE,GAAG,EAAE,IAAI,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;AAC/F,wBAAgB,YAAY,CAAC,IAAI,SAAS,KAAK,EAAE,MAAM,SAAS,OAAO,CAAC,IAAI,CAAC,EAC3E,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,MAAM,GACZ,uBAAuB,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1D,wBAAgB,YAAY,CAAC,IAAI,SAAS,KAAK,EAC7C,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,MAAM,GACZ,uBAAuB,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
/** Metadata key under which a method's @OnDiagnostic subscriptions accumulate. */
|
|
2
2
|
export const ON_DIAGNOSTIC_META = Symbol('diagnostics:on');
|
|
3
|
-
/**
|
|
4
|
-
* Subscribe a provider method to a diagnostics channel. Requires
|
|
5
|
-
* `DiagnosticsModule.forRoot()` to be imported so the explorer wires it up.
|
|
6
|
-
*
|
|
7
|
-
* - `@OnDiagnostic('resilience', 'circuit-opened')` — the exact channel.
|
|
8
|
-
* - `@OnDiagnostic('resilience')` — every `aviary:resilience:*` channel (current + future).
|
|
9
|
-
*
|
|
10
|
-
* Stackable: apply more than once to react to several channels with one method.
|
|
11
|
-
*/
|
|
12
3
|
export function OnDiagnostic(lib, event) {
|
|
13
4
|
return (target, key) => {
|
|
14
5
|
const existing = Reflect.getMetadata(ON_DIAGNOSTIC_META, target, key) ??
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-diagnostic.decorator.js","sourceRoot":"","sources":["../../src/nestjs/on-diagnostic.decorator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"on-diagnostic.decorator.js","sourceRoot":"","sources":["../../src/nestjs/on-diagnostic.decorator.ts"],"names":[],"mappings":"AAEA,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAiE3D,MAAM,UAAU,YAAY,CAC1B,GAAW,EACX,KAAuB;IAEvB,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;QACrB,MAAM,QAAQ,GACX,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,EAAE,GAAG,CAAoC;YACxF,EAAE,CAAC;QACL,MAAM,IAAI,GAAqB,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAClF,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/E,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { DeliveredEvent, ListenerDelivery } from './delivery.js';
|
|
2
|
+
import type { QueueTransportConfig, TransportContext, TransportHandle } from './transports.js';
|
|
3
|
+
/** Data of one listener job. */
|
|
4
|
+
export interface DiagnosticsListenerJobData {
|
|
5
|
+
listenerId: string;
|
|
6
|
+
envelope: DeliveredEvent;
|
|
7
|
+
}
|
|
8
|
+
interface JobOptionsLike {
|
|
9
|
+
jobId: string;
|
|
10
|
+
attempts: number;
|
|
11
|
+
backoff: {
|
|
12
|
+
type: 'fixed' | 'exponential';
|
|
13
|
+
delay: number;
|
|
14
|
+
};
|
|
15
|
+
removeOnComplete: boolean | number;
|
|
16
|
+
removeOnFail: boolean | number;
|
|
17
|
+
}
|
|
18
|
+
interface QueueLike {
|
|
19
|
+
addBulk(jobs: Array<{
|
|
20
|
+
name: string;
|
|
21
|
+
data: DiagnosticsListenerJobData;
|
|
22
|
+
opts: JobOptionsLike;
|
|
23
|
+
}>): Promise<unknown>;
|
|
24
|
+
on(event: 'error', listener: (error: Error) => void): unknown;
|
|
25
|
+
close(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
interface WorkerLike {
|
|
28
|
+
on(event: 'error', listener: (error: Error) => void): unknown;
|
|
29
|
+
on(event: 'failed', listener: (job: {
|
|
30
|
+
data: DiagnosticsListenerJobData;
|
|
31
|
+
} | undefined, error: Error) => void): unknown;
|
|
32
|
+
close(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
/** The slice of the `bullmq` module this transport uses. */
|
|
35
|
+
export interface BullmqModuleLike {
|
|
36
|
+
Queue: new (name: string, opts: Record<string, unknown>) => QueueLike;
|
|
37
|
+
Worker: new (name: string, processor: (job: {
|
|
38
|
+
data: DiagnosticsListenerJobData;
|
|
39
|
+
}) => Promise<void>, opts: Record<string, unknown>) => WorkerLike;
|
|
40
|
+
}
|
|
41
|
+
export declare const DEFAULT_QUEUE = "aviary-diagnostics";
|
|
42
|
+
export declare const LISTENER_JOB_NAME = "aviary.diagnostics.listener";
|
|
43
|
+
/** BullMQ job id of a delivery: unique per `(event id, listener)`, so re-adding is a no-op. */
|
|
44
|
+
export declare function deliveryJobId(delivery: ListenerDelivery): string;
|
|
45
|
+
export declare function createQueueTransport(bullmq: BullmqModuleLike, config: QueueTransportConfig, ctx: TransportContext): TransportHandle;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=queue-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-transport.d.ts","sourceRoot":"","sources":["../../src/nestjs/queue-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE/F,gCAAgC;AAChC,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,aAAa,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,gBAAgB,EAAE,OAAO,GAAG,MAAM,CAAC;IACnC,YAAY,EAAE,OAAO,GAAG,MAAM,CAAC;CAChC;AAED,UAAU,SAAS;IACjB,OAAO,CACL,IAAI,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,0BAA0B,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,GACpF,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC;IAC9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,UAAU,UAAU;IAClB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC;IAC9D,EAAE,CACA,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,0BAA0B,CAAA;KAAE,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GACtF,OAAO,CAAC;IACX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;IACtE,MAAM,EAAE,KACN,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,0BAA0B,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,EACvE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,UAAU,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAClD,eAAO,MAAM,iBAAiB,gCAAgC,CAAC;AAE/D,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAGhE;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,oBAAoB,EAC5B,GAAG,EAAE,gBAAgB,GACpB,eAAe,CA8CjB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const DEFAULT_QUEUE = 'aviary-diagnostics';
|
|
2
|
+
export const LISTENER_JOB_NAME = 'aviary.diagnostics.listener';
|
|
3
|
+
/** BullMQ job id of a delivery: unique per `(event id, listener)`, so re-adding is a no-op. */
|
|
4
|
+
export function deliveryJobId(delivery) {
|
|
5
|
+
// BullMQ refuses custom ids containing ':'.
|
|
6
|
+
return `diag.${delivery.envelope.id}.${delivery.listenerId}`.replaceAll(':', '.');
|
|
7
|
+
}
|
|
8
|
+
export function createQueueTransport(bullmq, config, ctx) {
|
|
9
|
+
const name = config.queue ?? DEFAULT_QUEUE;
|
|
10
|
+
const base = {
|
|
11
|
+
connection: config.connection,
|
|
12
|
+
...(config.prefix !== undefined ? { prefix: config.prefix } : {}),
|
|
13
|
+
};
|
|
14
|
+
const jobOptions = {
|
|
15
|
+
attempts: (config.retries ?? 3) + 1,
|
|
16
|
+
backoff: config.backoff ?? { type: 'exponential', delay: 1000 },
|
|
17
|
+
removeOnComplete: config.removeOnComplete ?? true,
|
|
18
|
+
removeOnFail: config.removeOnFail ?? false,
|
|
19
|
+
};
|
|
20
|
+
const queue = new bullmq.Queue(name, base);
|
|
21
|
+
queue.on('error', (error) => ctx.logger.error(`diagnostics queue error: ${error.message}`));
|
|
22
|
+
// An 'api' process enqueues only: no worker, so listeners never run here.
|
|
23
|
+
const worker = ctx.role === 'api'
|
|
24
|
+
? null
|
|
25
|
+
: new bullmq.Worker(name, (job) => ctx.invoke(job.data.listenerId, job.data.envelope), {
|
|
26
|
+
...base,
|
|
27
|
+
concurrency: config.concurrency ?? 1,
|
|
28
|
+
});
|
|
29
|
+
worker?.on('error', (error) => ctx.logger.error(`diagnostics worker error: ${error.message}`));
|
|
30
|
+
worker?.on('failed', (job, error) => ctx.logger.error(`diagnostics listener ${job?.data.listenerId ?? '?'} failed for event ${job?.data.envelope.id ?? '?'}: ${error.message}`));
|
|
31
|
+
return {
|
|
32
|
+
async deliver(deliveries) {
|
|
33
|
+
await queue.addBulk(deliveries.map((delivery) => ({
|
|
34
|
+
name: LISTENER_JOB_NAME,
|
|
35
|
+
data: { listenerId: delivery.listenerId, envelope: delivery.envelope },
|
|
36
|
+
opts: { ...jobOptions, jobId: deliveryJobId(delivery) },
|
|
37
|
+
})));
|
|
38
|
+
},
|
|
39
|
+
async stop() {
|
|
40
|
+
await worker?.close();
|
|
41
|
+
await queue.close();
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=queue-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-transport.js","sourceRoot":"","sources":["../../src/nestjs/queue-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which half of a split deployment this process is:
|
|
3
|
+
*
|
|
4
|
+
* - `'all'` (default): emit, forward, consume and run listeners. One process does everything.
|
|
5
|
+
* - `'api'`: emit and forward through the selected transport, and hand listener work to it;
|
|
6
|
+
* never consume what other processes forward, never run a listener.
|
|
7
|
+
* - `'worker'`: consume and run listeners. Diagnostics mounts no HTTP surface, so a worker does
|
|
8
|
+
* everything `'all'` does; the role exists so one setting drives every library of the app.
|
|
9
|
+
*/
|
|
10
|
+
export type DiagnosticsRole = 'all' | 'api' | 'worker';
|
|
11
|
+
/** Validate `role` (default `'all'`) and refuse combinations that cannot work. */
|
|
12
|
+
export declare function resolveRole(role: DiagnosticsRole | undefined, transport: string | undefined): DiagnosticsRole;
|
|
13
|
+
//# sourceMappingURL=role.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/nestjs/role.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;AAIvD,kFAAkF;AAClF,wBAAgB,WAAW,CACzB,IAAI,EAAE,eAAe,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,eAAe,CAajB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const ROLES = ['all', 'api', 'worker'];
|
|
2
|
+
/** Validate `role` (default `'all'`) and refuse combinations that cannot work. */
|
|
3
|
+
export function resolveRole(role, transport) {
|
|
4
|
+
const resolved = role ?? 'all';
|
|
5
|
+
if (!ROLES.includes(resolved)) {
|
|
6
|
+
throw new Error(`@dudousxd/nestjs-diagnostics: role must be 'all', 'api' or 'worker' (got ${JSON.stringify(role)})`);
|
|
7
|
+
}
|
|
8
|
+
if (resolved !== 'all' && !transport) {
|
|
9
|
+
throw new Error(`@dudousxd/nestjs-diagnostics: role is "${resolved}", which splits emitting from consuming, but no \`default\` transport is selected, so nothing carries events between the two halves. Select a transport with \`default\`, or drop \`role\`.`);
|
|
10
|
+
}
|
|
11
|
+
return resolved;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/nestjs/role.ts"],"names":[],"mappings":"AAWA,MAAM,KAAK,GAA+B,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AAEnE,kFAAkF;AAClF,MAAM,UAAU,WAAW,CACzB,IAAiC,EACjC,SAA6B;IAE7B,MAAM,QAAQ,GAAG,IAAI,IAAI,KAAK,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,4EAA4E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CACpG,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,0CAA0C,QAAQ,6LAA6L,CAChP,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { LoggerService } from '@nestjs/common';
|
|
2
|
+
import type { ModuleRef } from '@nestjs/core';
|
|
3
|
+
import { type ChannelRef, type RedisLike } from '../redis-relay.js';
|
|
4
|
+
import type { DurableTransportConfig, ListenerDelivery, ListenerInvoker } from './delivery.js';
|
|
5
|
+
import type { DiagnosticsRole } from './role.js';
|
|
6
|
+
/** What a {@link TransportProvider} receives when `DiagnosticsModule` starts it at bootstrap. */
|
|
7
|
+
export interface TransportContext {
|
|
8
|
+
/** The application's module ref, to resolve providers. */
|
|
9
|
+
moduleRef: ModuleRef;
|
|
10
|
+
/** Which half of a split deployment this process is. On `'api'`, never consume or run listeners. */
|
|
11
|
+
role: DiagnosticsRole;
|
|
12
|
+
/** Unique id of THIS process, for echo suppression. */
|
|
13
|
+
nodeId: string;
|
|
14
|
+
/** The libs that have listeners in this process. A broadcasting transport relays them. */
|
|
15
|
+
listenerLibs: readonly string[];
|
|
16
|
+
/** Ids of the listeners registered in this process. */
|
|
17
|
+
listenerIds: readonly string[];
|
|
18
|
+
/** Runs a registered listener in this process; rejects with the handler's error. */
|
|
19
|
+
invoke: ListenerInvoker;
|
|
20
|
+
/** Logger for transport failures. */
|
|
21
|
+
logger: LoggerService;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A started transport: `stop` for shutdown and, for a delivering transport, `deliver`, which
|
|
25
|
+
* takes over listener execution (see `ListenerDeliveryTransport`).
|
|
26
|
+
*/
|
|
27
|
+
export interface TransportHandle {
|
|
28
|
+
stop?(): void | Promise<void>;
|
|
29
|
+
deliver?(deliveries: readonly ListenerDelivery[]): void | Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A configured transport: a thunk `DiagnosticsModule` calls at bootstrap when it is the `default`.
|
|
33
|
+
* Optional dependencies (`bullmq`, durable) are imported inside the thunk, so listing a transport
|
|
34
|
+
* you don't select costs nothing.
|
|
35
|
+
*/
|
|
36
|
+
export type TransportProvider = (ctx: TransportContext) => Promise<TransportHandle>;
|
|
37
|
+
/** Options of `transports.redis()`: Redis pub/sub broadcast. */
|
|
38
|
+
export interface RedisTransportConfig {
|
|
39
|
+
/** Publisher connection (an ioredis client). */
|
|
40
|
+
pub: RedisLike;
|
|
41
|
+
/**
|
|
42
|
+
* Subscriber connection, separate from `pub` (for ioredis: `pub.duplicate()`). Required unless
|
|
43
|
+
* `role` is `'api'`, which publishes and never subscribes.
|
|
44
|
+
*/
|
|
45
|
+
sub?: RedisLike;
|
|
46
|
+
/** Also forward every event of these libs, for observers in other processes. */
|
|
47
|
+
libs?: string[];
|
|
48
|
+
/** Also forward these exact channels. */
|
|
49
|
+
channels?: ChannelRef[];
|
|
50
|
+
/** Forward every aviary channel. */
|
|
51
|
+
all?: boolean;
|
|
52
|
+
/** Redis channel to relay on. Default `aviary:diagnostics:relay`. */
|
|
53
|
+
redisChannel?: string;
|
|
54
|
+
}
|
|
55
|
+
/** Options of `transports.queue()`: one BullMQ job per `(listener, event)`. */
|
|
56
|
+
export interface QueueTransportConfig {
|
|
57
|
+
/**
|
|
58
|
+
* BullMQ connection: `ConnectionOptions` (`{ host, port }`) or an ioredis client created with
|
|
59
|
+
* `maxRetriesPerRequest: null`.
|
|
60
|
+
*/
|
|
61
|
+
connection: object;
|
|
62
|
+
/** Queue name. Default `aviary-diagnostics`. */
|
|
63
|
+
queue?: string;
|
|
64
|
+
/** BullMQ key prefix. Default BullMQ's (`bull`). */
|
|
65
|
+
prefix?: string;
|
|
66
|
+
/** How many times a job is retried after its handler throws. Default `3`. */
|
|
67
|
+
retries?: number;
|
|
68
|
+
/** Delay between attempts. Default `{ type: 'exponential', delay: 1000 }`. */
|
|
69
|
+
backoff?: {
|
|
70
|
+
type: 'fixed' | 'exponential';
|
|
71
|
+
delay: number;
|
|
72
|
+
};
|
|
73
|
+
/** Jobs a worker process runs at once. Default `1`. */
|
|
74
|
+
concurrency?: number;
|
|
75
|
+
/** BullMQ `removeOnComplete`. Default `true`. */
|
|
76
|
+
removeOnComplete?: boolean | number;
|
|
77
|
+
/** BullMQ `removeOnFail`. Default `false` (failed jobs stay for inspection). */
|
|
78
|
+
removeOnFail?: boolean | number;
|
|
79
|
+
}
|
|
80
|
+
export type { DurableTransportConfig };
|
|
81
|
+
export declare const DURABLE_DELIVERY_MODULE = "@dudousxd/nestjs-durable-diagnostics/delivery";
|
|
82
|
+
export declare const DURABLE_NOT_INSTALLED = "`transports.durable()` requires @dudousxd/nestjs-durable-diagnostics. Install it and import DurableModule in your app, or pick another transport.";
|
|
83
|
+
export declare const DURABLE_OUTDATED = "`transports.durable()` requires a version of @dudousxd/nestjs-durable-diagnostics that exports `@dudousxd/nestjs-durable-diagnostics/delivery`. Upgrade it, or pick another transport.";
|
|
84
|
+
export declare const DURABLE_NOT_CONFIGURED = "`transports.durable()` requires durable to be configured: no durable engine resolves in this app. Import DurableModule, or pick another transport.";
|
|
85
|
+
export declare const BULLMQ_NOT_INSTALLED = "`transports.queue()` requires bullmq. Install it (`pnpm add bullmq`), or pick another transport.";
|
|
86
|
+
/** Replace how optional modules are imported. Internal, for tests. */
|
|
87
|
+
export declare function setTransportModuleLoader(name: 'durable' | 'bullmq', loader: (() => Promise<unknown>) | null): void;
|
|
88
|
+
/**
|
|
89
|
+
* The transport factories for `DiagnosticsModule.forRoot({ default, transports })`:
|
|
90
|
+
*
|
|
91
|
+
* ```ts
|
|
92
|
+
* DiagnosticsModule.forRoot({
|
|
93
|
+
* default: 'queue',
|
|
94
|
+
* transports: {
|
|
95
|
+
* redis: transports.redis({ pub, sub }),
|
|
96
|
+
* queue: transports.queue({ connection: { host: 'localhost', port: 6379 } }),
|
|
97
|
+
* durable: transports.durable({ retries: 5 }),
|
|
98
|
+
* },
|
|
99
|
+
* })
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* Each factory returns a lazy {@link TransportProvider}: only the selected `default` starts, and
|
|
103
|
+
* only it imports its optional dependency.
|
|
104
|
+
*/
|
|
105
|
+
export declare const transports: {
|
|
106
|
+
/**
|
|
107
|
+
* Broadcast over Redis pub/sub, best-effort: listeners run in every process the event reaches.
|
|
108
|
+
* Events of libs with listeners are forwarded automatically; `libs`/`channels`/`all` forward more.
|
|
109
|
+
*/
|
|
110
|
+
redis(config: RedisTransportConfig): TransportProvider;
|
|
111
|
+
/**
|
|
112
|
+
* Run listeners through BullMQ: one job per `(listener, event)`, retried when the handler throws
|
|
113
|
+
* (at-least-once). Every process that is not `role: 'api'` runs a worker for the queue.
|
|
114
|
+
* Requires the optional peer `bullmq`.
|
|
115
|
+
*/
|
|
116
|
+
queue(config: QueueTransportConfig): TransportProvider;
|
|
117
|
+
/**
|
|
118
|
+
* Run listeners as durable runs: one run per `(listener, event)`, retried with backoff and
|
|
119
|
+
* idempotent per event id. Imports `@dudousxd/nestjs-durable-diagnostics/delivery` only when this
|
|
120
|
+
* transport is the selected `default`; bootstrap fails with a clear error when it is missing or
|
|
121
|
+
* durable is not configured.
|
|
122
|
+
*/
|
|
123
|
+
durable(config?: DurableTransportConfig): TransportProvider;
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=transports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../../src/nestjs/transports.ts"],"names":[],"mappings":"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"}
|