@dudousxd/nestjs-diagnostics 0.8.0 → 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.
Files changed (64) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +31 -1
  3. package/dist/channel.d.ts +1 -1
  4. package/dist/channel.d.ts.map +1 -1
  5. package/dist/channel.js +3 -1
  6. package/dist/channel.js.map +1 -1
  7. package/dist/index.d.ts +2 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +2 -0
  10. package/dist/index.js.map +1 -1
  11. package/dist/nestjs/delivery.d.ts +92 -0
  12. package/dist/nestjs/delivery.d.ts.map +1 -0
  13. package/dist/nestjs/delivery.js +2 -0
  14. package/dist/nestjs/delivery.js.map +1 -0
  15. package/dist/nestjs/diagnostics.explorer.d.ts +51 -11
  16. package/dist/nestjs/diagnostics.explorer.d.ts.map +1 -1
  17. package/dist/nestjs/diagnostics.explorer.js +209 -53
  18. package/dist/nestjs/diagnostics.explorer.js.map +1 -1
  19. package/dist/nestjs/diagnostics.module.d.ts +9 -2
  20. package/dist/nestjs/diagnostics.module.d.ts.map +1 -1
  21. package/dist/nestjs/diagnostics.module.js +23 -3
  22. package/dist/nestjs/diagnostics.module.js.map +1 -1
  23. package/dist/nestjs/diagnostics.options.d.ts +31 -0
  24. package/dist/nestjs/diagnostics.options.d.ts.map +1 -0
  25. package/dist/nestjs/diagnostics.options.js +3 -0
  26. package/dist/nestjs/diagnostics.options.js.map +1 -0
  27. package/dist/nestjs/index.d.ts +6 -3
  28. package/dist/nestjs/index.d.ts.map +1 -1
  29. package/dist/nestjs/index.js +4 -2
  30. package/dist/nestjs/index.js.map +1 -1
  31. package/dist/nestjs/on-diagnostic.decorator.d.ts +33 -7
  32. package/dist/nestjs/on-diagnostic.decorator.d.ts.map +1 -1
  33. package/dist/nestjs/on-diagnostic.decorator.js +0 -9
  34. package/dist/nestjs/on-diagnostic.decorator.js.map +1 -1
  35. package/dist/nestjs/queue-transport.d.ts +47 -0
  36. package/dist/nestjs/queue-transport.d.ts.map +1 -0
  37. package/dist/nestjs/queue-transport.js +45 -0
  38. package/dist/nestjs/queue-transport.js.map +1 -0
  39. package/dist/nestjs/role.d.ts +13 -0
  40. package/dist/nestjs/role.d.ts.map +1 -0
  41. package/dist/nestjs/role.js +13 -0
  42. package/dist/nestjs/role.js.map +1 -0
  43. package/dist/nestjs/transports.d.ts +125 -0
  44. package/dist/nestjs/transports.d.ts.map +1 -0
  45. package/dist/nestjs/transports.js +127 -0
  46. package/dist/nestjs/transports.js.map +1 -0
  47. package/dist/official.d.ts +2 -2
  48. package/dist/redis-relay.d.ts +60 -0
  49. package/dist/redis-relay.d.ts.map +1 -0
  50. package/dist/redis-relay.js +170 -0
  51. package/dist/redis-relay.js.map +1 -0
  52. package/dist/relayed.d.ts +8 -0
  53. package/dist/relayed.d.ts.map +1 -0
  54. package/dist/relayed.js +31 -0
  55. package/dist/relayed.js.map +1 -0
  56. package/dist/trace.d.ts.map +1 -1
  57. package/dist/trace.js +2 -0
  58. package/dist/trace.js.map +1 -1
  59. package/dist/types.d.ts +9 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +14 -6
  62. package/skills/emit-diagnostics/SKILL.md +5 -2
  63. package/skills/react-with-on-diagnostic/SKILL.md +41 -13
  64. package/skills/trace-spans/SKILL.md +2 -1
@@ -10,96 +10,252 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  var __param = (this && this.__param) || function (paramIndex, decorator) {
11
11
  return function (target, key) { decorator(target, key, paramIndex); }
12
12
  };
13
+ import { randomUUID } from 'node:crypto';
13
14
  import diagnostics_channel from 'node:diagnostics_channel';
14
- import { Inject, Injectable, Logger, } from '@nestjs/common';
15
- import { DiscoveryService, MetadataScanner } from '@nestjs/core';
15
+ import { Inject, Injectable, Logger, Optional, } from '@nestjs/common';
16
+ import { DiscoveryService, MetadataScanner, ModuleRef } from '@nestjs/core';
16
17
  import { CHANNEL_PREFIX, channelName } from '../channel.js';
17
18
  import { onChannelRegistered, registeredChannels } from '../registry.js';
19
+ import { isRelayed } from '../relayed.js';
20
+ import { DIAGNOSTICS_OPTIONS } from './diagnostics.options.js';
18
21
  import { ON_DIAGNOSTIC_META } from './on-diagnostic.decorator.js';
22
+ import { resolveRole } from './role.js';
23
+ /** Thrown by the listener invoker for a listener id this process does not know. */
24
+ export class UnknownDiagnosticListenerError extends Error {
25
+ listenerId;
26
+ code = 'E_UNKNOWN_DIAGNOSTICS_LISTENER';
27
+ constructor(listenerId) {
28
+ super(`@dudousxd/nestjs-diagnostics: no listener "${listenerId}" is registered in this process. Every process that runs deliveries must register the same listeners.`);
29
+ this.listenerId = listenerId;
30
+ }
31
+ }
32
+ function matches(meta, lib, event) {
33
+ if (meta.lib !== lib)
34
+ return false;
35
+ const matcher = meta.event;
36
+ if (matcher === undefined)
37
+ return true;
38
+ if (typeof matcher === 'string')
39
+ return matcher === event;
40
+ matcher.lastIndex = 0;
41
+ return matcher.test(event);
42
+ }
43
+ /** A diagnostics POINT event (from `emit`). Span phase events from `trace` are never dispatched. */
44
+ function isPointEvent(msg) {
45
+ if (typeof msg !== 'object' || msg === null)
46
+ return false;
47
+ const env = msg;
48
+ if (typeof env.lib !== 'string' || typeof env.event !== 'string')
49
+ return false;
50
+ return env.phase === undefined || env.spanId === undefined;
51
+ }
52
+ function libOf(name) {
53
+ if (!name.startsWith(`${CHANNEL_PREFIX}:`))
54
+ return undefined;
55
+ const rest = name.slice(CHANNEL_PREFIX.length + 1);
56
+ const idx = rest.indexOf(':');
57
+ return idx > 0 ? rest.slice(0, idx) : undefined;
58
+ }
59
+ /**
60
+ * Discovers `@OnDiagnostic` methods, starts the `default` transport and routes every matching
61
+ * event: to the delivering transport (only in the emitting process), or straight to the handler.
62
+ */
19
63
  let DiagnosticsExplorer = class DiagnosticsExplorer {
20
64
  discovery;
21
65
  scanner;
66
+ moduleRef;
22
67
  logger = new Logger('DiagnosticsExplorer');
23
- subscriptions = [];
24
- wildcards = [];
68
+ listeners = new Map();
69
+ matchCache = new Map();
70
+ subscribed = new Set();
71
+ wildcardLibs = new Set();
72
+ pending = [];
73
+ scheduled = null;
25
74
  offChannelRegistered = null;
26
- constructor(discovery, scanner) {
75
+ transport = null;
76
+ deliver = null;
77
+ role = 'all';
78
+ options;
79
+ constructor(discovery, scanner, moduleRef, options) {
27
80
  this.discovery = discovery;
28
81
  this.scanner = scanner;
82
+ this.moduleRef = moduleRef;
83
+ this.options = options ?? {};
84
+ }
85
+ /**
86
+ * Run listener `listenerId` for `envelope` in this process. The handler is called synchronously;
87
+ * the promise rejects with its error.
88
+ */
89
+ invoke = (listenerId, envelope) => {
90
+ const listener = this.listeners.get(listenerId);
91
+ if (!listener)
92
+ return Promise.reject(new UnknownDiagnosticListenerError(listenerId));
93
+ try {
94
+ const fn = listener.instance[listener.method];
95
+ return Promise.resolve(fn.call(listener.instance, envelope)).then(() => undefined);
96
+ }
97
+ catch (error) {
98
+ return Promise.reject(error);
99
+ }
100
+ };
101
+ /** Every listener discovered in this process. */
102
+ registeredListeners() {
103
+ return [...this.listeners.values()];
104
+ }
105
+ async onApplicationBootstrap() {
106
+ this.role = resolveRole(this.options.role, this.options.default);
107
+ this.discover();
108
+ const name = this.options.default;
109
+ if (name) {
110
+ const provider = this.options.transports?.[name];
111
+ if (!provider) {
112
+ throw new Error(`@dudousxd/nestjs-diagnostics: default is "${name}", but transports.${name} is not defined`);
113
+ }
114
+ const listeners = this.registeredListeners();
115
+ this.transport = await provider({
116
+ moduleRef: this.moduleRef,
117
+ role: this.role,
118
+ nodeId: this.options.nodeId ?? randomUUID(),
119
+ listenerLibs: [...new Set(listeners.flatMap((l) => l.matchers.map((m) => m.lib)))],
120
+ listenerIds: listeners.map((l) => l.id),
121
+ invoke: this.invoke,
122
+ logger: this.logger,
123
+ });
124
+ this.deliver = this.transport.deliver?.bind(this.transport) ?? null;
125
+ }
126
+ // An 'api' process without a delivering transport has nothing to do with its listeners.
127
+ if (this.role === 'api' && !this.deliver)
128
+ return;
129
+ this.subscribeListeners();
29
130
  }
30
- onApplicationBootstrap() {
131
+ async onApplicationShutdown() {
132
+ await this.flush();
133
+ this.offChannelRegistered?.();
134
+ this.offChannelRegistered = null;
135
+ for (const name of this.subscribed)
136
+ diagnostics_channel.channel(name).unsubscribe(this.onEvent);
137
+ this.subscribed.clear();
138
+ this.wildcardLibs.clear();
139
+ const transport = this.transport;
140
+ this.transport = null;
141
+ this.deliver = null;
142
+ try {
143
+ await transport?.stop?.();
144
+ }
145
+ catch (error) {
146
+ this.logger.error(`failed to stop the diagnostics transport: ${messageOf(error)}`);
147
+ }
148
+ }
149
+ discover() {
31
150
  for (const wrapper of this.discovery.getProviders()) {
32
151
  const instance = wrapper.instance;
33
152
  if (!instance || typeof instance !== 'object')
34
153
  continue;
35
154
  const proto = Object.getPrototypeOf(instance);
36
- for (const methodName of this.scanner.getAllMethodNames(proto)) {
37
- const metas = Reflect.getMetadata(ON_DIAGNOSTIC_META, proto, methodName);
155
+ for (const method of this.scanner.getAllMethodNames(proto)) {
156
+ const metas = Reflect.getMetadata(ON_DIAGNOSTIC_META, proto, method);
38
157
  if (!metas?.length)
39
158
  continue;
40
- for (const meta of metas) {
41
- const invoke = (event) => this.safeInvoke(instance, methodName, event);
42
- if (meta.event !== undefined) {
43
- this.subscribe(channelName(meta.lib, meta.event), invoke);
44
- }
45
- else {
46
- const prefix = `${CHANNEL_PREFIX}:${meta.lib}:`;
47
- this.wildcards.push({ prefix, invoke });
48
- for (const name of registeredChannels()) {
49
- if (name.startsWith(prefix))
50
- this.subscribe(name, invoke);
51
- }
159
+ const id = `${instance.constructor.name}#${method}`;
160
+ const existing = this.listeners.get(id);
161
+ if (existing) {
162
+ if (existing.instance.constructor === instance.constructor)
163
+ continue;
164
+ throw new Error(`@dudousxd/nestjs-diagnostics: two listeners share the id "${id}". Listener ids are <ClassName>#<method> and must be unique; rename one class.`);
165
+ }
166
+ this.listeners.set(id, { id, matchers: metas, instance, method });
167
+ }
168
+ }
169
+ this.matchCache.clear();
170
+ }
171
+ /** The listeners that receive an event on `aviary:<lib>:<event>`. */
172
+ listenersFor(lib, event) {
173
+ const key = `${lib}\0${event}`;
174
+ let hit = this.matchCache.get(key);
175
+ if (hit === undefined) {
176
+ hit = this.registeredListeners().filter((l) => l.matchers.some((m) => matches(m, lib, event)));
177
+ this.matchCache.set(key, hit);
178
+ }
179
+ return hit;
180
+ }
181
+ subscribeListeners() {
182
+ for (const listener of this.listeners.values()) {
183
+ for (const meta of listener.matchers) {
184
+ if (typeof meta.event === 'string') {
185
+ this.subscribe(channelName(meta.lib, meta.event));
186
+ }
187
+ else if (!this.wildcardLibs.has(meta.lib)) {
188
+ this.wildcardLibs.add(meta.lib);
189
+ for (const name of registeredChannels()) {
190
+ if (libOf(name) === meta.lib)
191
+ this.subscribe(name);
52
192
  }
53
193
  }
54
194
  }
55
195
  }
56
196
  this.offChannelRegistered = onChannelRegistered((name) => {
57
- for (const w of this.wildcards) {
58
- if (name.startsWith(w.prefix))
59
- this.subscribe(name, w.invoke);
60
- }
197
+ const lib = libOf(name);
198
+ if (lib !== undefined && this.wildcardLibs.has(lib))
199
+ this.subscribe(name);
61
200
  });
62
201
  }
63
- onApplicationShutdown() {
64
- this.offChannelRegistered?.();
65
- this.offChannelRegistered = null;
66
- for (const { name, listener } of this.subscriptions) {
67
- diagnostics_channel.channel(name).unsubscribe(listener);
68
- }
69
- this.subscriptions.length = 0;
70
- this.wildcards.length = 0;
71
- }
72
- /** Subscribe once to `name`; the listener fans the envelope into `invoke`. */
73
- subscribe(name, invoke) {
74
- const listener = (msg) => invoke(msg);
75
- diagnostics_channel.channel(name).subscribe(listener);
76
- this.subscriptions.push({ name, listener });
202
+ subscribe(name) {
203
+ if (this.subscribed.has(name))
204
+ return;
205
+ diagnostics_channel.channel(name).subscribe(this.onEvent);
206
+ this.subscribed.add(name);
77
207
  }
78
- /** Invoke a handler, swallowing sync throws and async rejections so a buggy
79
- * reaction can never break the synchronous `emit()` that triggered it. */
80
- safeInvoke(instance, methodName, event) {
208
+ onEvent = (msg) => {
209
+ if (!isPointEvent(msg))
210
+ return;
211
+ const matched = this.listenersFor(msg.lib, msg.event);
212
+ if (matched.length === 0)
213
+ return;
214
+ if (this.deliver) {
215
+ // Delivery happens once, at the origin. A relayed copy was already handed over there.
216
+ if (isRelayed(msg))
217
+ return;
218
+ const envelope = (typeof msg.id === 'string' ? msg : { ...msg, id: randomUUID() });
219
+ for (const listener of matched)
220
+ this.pending.push({ listenerId: listener.id, envelope });
221
+ this.scheduled ??= setImmediate(() => void this.flush());
222
+ return;
223
+ }
224
+ for (const listener of matched) {
225
+ this.invoke(listener.id, msg).catch((error) => this.logger.error(`@OnDiagnostic ${listener.id} handler failed: ${messageOf(error)}`));
226
+ }
227
+ };
228
+ /** Hand this turn's deliveries to the transport, in emit order. Settles once they are handed over. */
229
+ async flush() {
230
+ if (this.scheduled !== null) {
231
+ clearImmediate(this.scheduled);
232
+ this.scheduled = null;
233
+ }
234
+ if (this.pending.length === 0 || !this.deliver)
235
+ return;
236
+ const deliveries = this.pending.splice(0);
237
+ const report = (error) => this.logger.error(`failed to hand ${deliveries.length} diagnostics deliveries to the transport: ${messageOf(error)}`);
81
238
  try {
82
- const fn = instance[methodName];
83
- const result = fn.call(instance, event);
84
- if (result != null && typeof result.then === 'function') {
85
- result.catch((err) => this.logError(methodName, err));
86
- }
239
+ await this.deliver(deliveries);
87
240
  }
88
- catch (err) {
89
- this.logError(methodName, err);
241
+ catch (error) {
242
+ report(error);
90
243
  }
91
244
  }
92
- logError(methodName, err) {
93
- const message = err instanceof Error ? err.message : String(err);
94
- this.logger.error(`@OnDiagnostic ${methodName} handler failed: ${message}`);
95
- }
96
245
  };
97
246
  DiagnosticsExplorer = __decorate([
98
247
  Injectable(),
99
248
  __param(0, Inject(DiscoveryService)),
100
249
  __param(1, Inject(MetadataScanner)),
250
+ __param(2, Inject(ModuleRef)),
251
+ __param(3, Optional()),
252
+ __param(3, Inject(DIAGNOSTICS_OPTIONS)),
101
253
  __metadata("design:paramtypes", [DiscoveryService,
102
- MetadataScanner])
254
+ MetadataScanner,
255
+ ModuleRef, Object])
103
256
  ], DiagnosticsExplorer);
104
257
  export { DiagnosticsExplorer };
258
+ function messageOf(error) {
259
+ return error instanceof Error ? error.message : String(error);
260
+ }
105
261
  //# sourceMappingURL=diagnostics.explorer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.explorer.js","sourceRoot":"","sources":["../../src/nestjs/diagnostics.explorer.ts"],"names":[],"mappings":"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"}
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
- /** Register once at the app root; enables `@OnDiagnostic` on any provider. */
4
- static forRoot(): DynamicModule;
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;AAI5D,qBACa,iBAAiB;IAC5B,8EAA8E;IAC9E,MAAM,CAAC,OAAO,IAAI,aAAa;CAQhC"}
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
- /** Register once at the app root; enables `@OnDiagnostic` on any provider. */
13
- static forRoot() {
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;AAGzD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAC5B,8EAA8E;IAC9E,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,CAAC,eAAe,CAAC;YAC1B,SAAS,EAAE,CAAC,mBAAmB,CAAC;SACjC,CAAC;IACJ,CAAC;CACF,CAAA;AAVY,iBAAiB;IAD7B,MAAM,CAAC,EAAE,CAAC;GACE,iBAAiB,CAU7B"}
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,3 @@
1
+ /** Injection token of the {@link DiagnosticsModuleOptions}. */
2
+ export const DIAGNOSTICS_OPTIONS = Symbol.for('@dudousxd/nestjs-diagnostics:options');
3
+ //# sourceMappingURL=diagnostics.options.js.map
@@ -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"}
@@ -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 { DiagnosticsExplorer } from './diagnostics.explorer.js';
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,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAChF,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
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"}
@@ -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 { DiagnosticsExplorer } from './diagnostics.explorer.js';
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nestjs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
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
- * Subscribe a provider method to a diagnostics channel. Requires
10
- * `DiagnosticsModule.forRoot()` to be imported so the explorer wires it up.
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
- * - `@OnDiagnostic('resilience', 'circuit-opened')` — the exact channel.
13
- * - `@OnDiagnostic('resilience')` — every `aviary:resilience:*` channel (current + future).
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
- * Stackable: apply more than once to react to several channels with one method.
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: string, event?: string): MethodDecorator;
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;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,eAAe,CAQzE"}
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":"AAAA,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAQ3D;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,KAAc;IACtD,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"}
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"}