@ddd-ts-kit/tracing 0.9.0 → 0.11.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 +1 -0
- package/dist/application/trace-application.d.ts +8 -2
- package/dist/application/trace-application.d.ts.map +1 -1
- package/dist/application/trace-application.js +5 -1
- package/dist/application/trace-application.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/jobs/traced-background-job.d.ts +11 -0
- package/dist/jobs/traced-background-job.d.ts.map +1 -0
- package/dist/jobs/traced-background-job.js +32 -0
- package/dist/jobs/traced-background-job.js.map +1 -0
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -153,6 +153,7 @@ This tree is asserted by `test/unit-of-work-phases.spec.ts`.
|
|
|
153
153
|
| `publish <type>` | PRODUCER | `tracedPublisher()` around a bus | `messaging.system`, `messaging.operation.name` (`publish`), `messaging.operation.type` (`send`), `messaging.destination.name`, `messaging.message.id` |
|
|
154
154
|
| `process <consumer>` | CONSUMER | `tracedConsumer()`, one per delivery | `messaging.system`, `messaging.operation.*` (`process`), `messaging.destination.name`, `messaging.message.id`, `messaging.consumer.group.name`, `app.messaging.source`, `app.messaging.attempt`, `app.messaging.redelivered`, `app.context`, `app.correlation_id`, `app.origin`, `app.outcome` |
|
|
155
155
|
| `job <name>` | INTERNAL, always a root | `tracedJob()` | `app.job.name`, `app.job.scheduled_at`, `app.job.attempt`, `app.context`, `app.correlation_id`, `app.origin`, `app.outcome` |
|
|
156
|
+
| `job <name>` of a background job | CONSUMER, child of the span that enqueued it | `tracedBackgroundJob()`, one per attempt; `traceparent()` (`captureTraceparent`) is stored with the job when it is enqueued | `app.job.name`, `app.job.id`, `app.job.attempt`, `app.context`, `app.correlation_id`, `app.origin` (`queue`), `app.outcome` |
|
|
156
157
|
|
|
157
158
|
- Names are stable and of low cardinality: a route template, never a URL; a class, a port, an
|
|
158
159
|
event type or a consumer name, never an identifier.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BusMiddleware, DomainEventDispatcher, ErrorReporter, ExecutionScope, IntegrationEventCallback, IntegrationEventPublisher, JobExecution } from '@ddd-ts-kit/kernel';
|
|
1
|
+
import type { BackgroundJobExecution, BusMiddleware, DomainEventDispatcher, ErrorReporter, ExecutionScope, IntegrationEventCallback, IntegrationEventPublisher, JobExecution } from '@ddd-ts-kit/kernel';
|
|
2
2
|
import { type TracedBinding } from '../dependency/trace-bindings.js';
|
|
3
3
|
import type { ConsumerTrace } from '../events/consumer-trace.js';
|
|
4
4
|
export interface TraceApplicationOptions {
|
|
@@ -10,6 +10,7 @@ export interface TraceApplicationOptions {
|
|
|
10
10
|
readonly consumers?: ConsumerTrace;
|
|
11
11
|
}
|
|
12
12
|
type JobRun = (execution: JobExecution) => Promise<void>;
|
|
13
|
+
type BackgroundJobRun = (payload: unknown, execution: BackgroundJobExecution) => Promise<void>;
|
|
13
14
|
/** The wrappers `kernelModule({ instrumentation })` of `@ddd-ts-kit/di` applies, one per kind of span. */
|
|
14
15
|
export interface TracedApplication {
|
|
15
16
|
readonly binding: <T>(instance: T, binding: TracedBinding) => T;
|
|
@@ -24,13 +25,18 @@ export interface TracedApplication {
|
|
|
24
25
|
readonly name: string;
|
|
25
26
|
readonly context: string;
|
|
26
27
|
}) => JobRun;
|
|
28
|
+
readonly backgroundJob: (run: BackgroundJobRun, job: {
|
|
29
|
+
readonly name: string;
|
|
30
|
+
readonly context: string;
|
|
31
|
+
}) => BackgroundJobRun;
|
|
32
|
+
readonly traceparent: () => string | undefined;
|
|
27
33
|
readonly errorReporter: (reporter: ErrorReporter) => ErrorReporter;
|
|
28
34
|
readonly executionScope: (scope: ExecutionScope) => void;
|
|
29
35
|
}
|
|
30
36
|
/**
|
|
31
37
|
* Everything that traces an application, in one value: `kernelModule({ instrumentation:
|
|
32
38
|
* traceApplication() })`. Use cases, repositories and adapters, the dispatch of domain events
|
|
33
|
-
* and their handlers, the outbox, the publications, the consumers and the jobs each get their
|
|
39
|
+
* and their handlers, the outbox, the publications, the consumers, the jobs and the background jobs each get their
|
|
34
40
|
* span; error reports carry the trace id, and the execution scope of the application is given
|
|
35
41
|
* to `configureTracing`, so spans and log fields carry the correlation id.
|
|
36
42
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-application.d.ts","sourceRoot":"","sources":["../../src/application/trace-application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,YAAY,EACb,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"trace-application.d.ts","sourceRoot":"","sources":["../../src/application/trace-application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,YAAY,EACb,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAQjE,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;CACpC;AAED,KAAK,MAAM,GAAG,CAAC,SAAS,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzD,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/F,0GAA0G;AAC1G,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,KAAK,CAAC,CAAC;IAChE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,yBAAyB,KAAK,yBAAyB,CAAC;IACxF,QAAQ,CAAC,QAAQ,EAAE,CACjB,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAC9D,wBAAwB,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,qBAAqB,KAAK,qBAAqB,CAAC;IACpF,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IAChG,QAAQ,CAAC,aAAa,EAAE,CACtB,GAAG,EAAE,gBAAgB,EACrB,GAAG,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KACrD,gBAAgB,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,aAAa,CAAC;IACnE,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAC1D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,iBAAiB,CAiBzF"}
|
|
@@ -4,12 +4,14 @@ import { traceBindings } from '../dependency/trace-bindings.js';
|
|
|
4
4
|
import { tracedDomainEvents } from '../domain-events/traced-domain-events.js';
|
|
5
5
|
import { tracedConsumer } from '../events/traced-consumer.js';
|
|
6
6
|
import { tracedPublisher } from '../events/traced-publisher.js';
|
|
7
|
+
import { tracedBackgroundJob } from '../jobs/traced-background-job.js';
|
|
7
8
|
import { tracedJob } from '../jobs/traced-job.js';
|
|
9
|
+
import { captureTraceparent } from '../propagation/capture-traceparent.js';
|
|
8
10
|
import { traceUseCases } from '../use-case/trace-use-cases.js';
|
|
9
11
|
/**
|
|
10
12
|
* Everything that traces an application, in one value: `kernelModule({ instrumentation:
|
|
11
13
|
* traceApplication() })`. Use cases, repositories and adapters, the dispatch of domain events
|
|
12
|
-
* and their handlers, the outbox, the publications, the consumers and the jobs each get their
|
|
14
|
+
* and their handlers, the outbox, the publications, the consumers, the jobs and the background jobs each get their
|
|
13
15
|
* span; error reports carry the trace id, and the execution scope of the application is given
|
|
14
16
|
* to `configureTracing`, so spans and log fields carry the correlation id.
|
|
15
17
|
*/
|
|
@@ -22,6 +24,8 @@ export function traceApplication(options = {}) {
|
|
|
22
24
|
consumer: (handler, { consumer, context }) => tracedConsumer(handler, { consumer, context, trace }),
|
|
23
25
|
domainEvents: tracedDomainEvents,
|
|
24
26
|
job: tracedJob,
|
|
27
|
+
backgroundJob: tracedBackgroundJob,
|
|
28
|
+
traceparent: captureTraceparent,
|
|
25
29
|
errorReporter: tracedErrorReporter,
|
|
26
30
|
executionScope: (executionScope) => {
|
|
27
31
|
configureTracing({ executionScope });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-application.js","sourceRoot":"","sources":["../../src/application/trace-application.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace-application.js","sourceRoot":"","sources":["../../src/application/trace-application.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAsB,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAmC/D;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAO,GAA4B,EAAE;IACpE,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC;IAE9C,OAAO;QACL,OAAO,EAAE,aAAa,EAAE;QACxB,OAAO,EAAE,aAAa,EAAE;QACxB,SAAS,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC;QACpD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACnG,YAAY,EAAE,kBAAkB;QAChC,GAAG,EAAE,SAAS;QACd,aAAa,EAAE,mBAAmB;QAClC,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,mBAAmB;QAClC,cAAc,EAAE,CAAC,cAAc,EAAE,EAAE;YACjC,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;QACvC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { isNoiseRoute } from './http/is-noise-route.js';
|
|
|
18
18
|
export { NOISE_PATHS } from './http/noise-paths.js';
|
|
19
19
|
export { tracedRoutes, type TracedResponse, type TracedRoute, type TracedRoutesOptions } from './http/traced-routes.js';
|
|
20
20
|
export { tracedJob, type TracedJobOptions } from './jobs/traced-job.js';
|
|
21
|
+
export { tracedBackgroundJob } from './jobs/traced-background-job.js';
|
|
21
22
|
export { DROPPED_SPANS_ATTRIBUTE } from './local-root/admit-dependency-span.js';
|
|
22
23
|
export { CORRELATION_ID_ATTRIBUTE, ORIGIN_ATTRIBUTE } from './local-root/correlate.js';
|
|
23
24
|
export { LocalRootTracker } from './local-root/local-root-tracker.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,YAAY,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACxH,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAC1G,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,YAAY,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC5G,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACxH,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAC1G,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,YAAY,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ export { isNoiseRoute } from './http/is-noise-route.js';
|
|
|
15
15
|
export { NOISE_PATHS } from './http/noise-paths.js';
|
|
16
16
|
export { tracedRoutes } from './http/traced-routes.js';
|
|
17
17
|
export { tracedJob } from './jobs/traced-job.js';
|
|
18
|
+
export { tracedBackgroundJob } from './jobs/traced-background-job.js';
|
|
18
19
|
export { DROPPED_SPANS_ATTRIBUTE } from './local-root/admit-dependency-span.js';
|
|
19
20
|
export { CORRELATION_ID_ATTRIBUTE, ORIGIN_ATTRIBUTE } from './local-root/correlate.js';
|
|
20
21
|
export { LocalRootTracker } from './local-root/local-root-tracker.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,GAGjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAuB,MAAM,mCAAmC,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAsB,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,eAAe,EAA+B,MAAM,kCAAkC,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAA8B,MAAM,6BAA6B,CAAC;AAC5G,OAAO,EAAE,eAAe,EAA+B,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAgC,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAmE,MAAM,yBAAyB,CAAC;AACxH,OAAO,EAAE,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAkC,MAAM,sCAAsC,CAAC;AAC1G,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,GAGjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAuB,MAAM,mCAAmC,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAsB,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,eAAe,EAA+B,MAAM,kCAAkC,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAA8B,MAAM,6BAA6B,CAAC;AAC5G,OAAO,EAAE,eAAe,EAA+B,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAgC,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAmE,MAAM,yBAAyB,CAAC;AACxH,OAAO,EAAE,SAAS,EAAyB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAkC,MAAM,sCAAsC,CAAC;AAC1G,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BackgroundJobExecution } from '@ddd-ts-kit/kernel';
|
|
2
|
+
import type { TracedJobOptions } from './traced-job.js';
|
|
3
|
+
type BackgroundJobRun = (payload: unknown, execution: BackgroundJobExecution) => Promise<void>;
|
|
4
|
+
/**
|
|
5
|
+
* Wraps an attempt of a background job: a CONSUMER span `job <name>`, child of the span that
|
|
6
|
+
* enqueued it, so that the request and the work it handed to a worker read as one trace, every
|
|
7
|
+
* attempt included. It says the job, the attempt and the outcome, never the payload.
|
|
8
|
+
*/
|
|
9
|
+
export declare function tracedBackgroundJob(run: BackgroundJobRun, options: TracedJobOptions): BackgroundJobRun;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=traced-background-job.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traced-background-job.d.ts","sourceRoot":"","sources":["../../src/jobs/traced-background-job.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAKjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE/F;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CA2BtG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SpanKind, context, trace } from '@opentelemetry/api';
|
|
2
|
+
import { workAttributes } from '../local-root/work-attributes.js';
|
|
3
|
+
import { spanContextFromTraceparent } from '../propagation/span-context-from-traceparent.js';
|
|
4
|
+
import { inSpan } from '../span/in-span.js';
|
|
5
|
+
import { OUTCOME_ATTRIBUTE } from '../span/outcome-attribute.js';
|
|
6
|
+
/**
|
|
7
|
+
* Wraps an attempt of a background job: a CONSUMER span `job <name>`, child of the span that
|
|
8
|
+
* enqueued it, so that the request and the work it handed to a worker read as one trace, every
|
|
9
|
+
* attempt included. It says the job, the attempt and the outcome, never the payload.
|
|
10
|
+
*/
|
|
11
|
+
export function tracedBackgroundJob(run, options) {
|
|
12
|
+
return (payload, execution) => {
|
|
13
|
+
const producer = execution.traceparent === undefined ? undefined : spanContextFromTraceparent(execution.traceparent);
|
|
14
|
+
const active = context.active();
|
|
15
|
+
const attributes = {
|
|
16
|
+
'app.job.name': options.name,
|
|
17
|
+
...(options.context === undefined ? {} : { 'app.context': options.context }),
|
|
18
|
+
'app.job.id': execution.jobId,
|
|
19
|
+
'app.job.attempt': execution.attempt,
|
|
20
|
+
...workAttributes(),
|
|
21
|
+
};
|
|
22
|
+
return inSpan({
|
|
23
|
+
name: `job ${options.name}`,
|
|
24
|
+
options: { kind: SpanKind.CONSUMER, attributes },
|
|
25
|
+
parent: producer === undefined ? active : trace.setSpanContext(active, producer),
|
|
26
|
+
}, async (span) => {
|
|
27
|
+
await run(payload, execution);
|
|
28
|
+
span.setAttribute(OUTCOME_ATTRIBUTE, 'succeeded');
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=traced-background-job.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traced-background-job.js","sourceRoot":"","sources":["../../src/jobs/traced-background-job.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iDAAiD,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAKjE;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAqB,EAAE,OAAyB;IAClF,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;QAC5B,MAAM,QAAQ,GACZ,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAEtG,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAEhC,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,OAAO,CAAC,IAAI;YAC5B,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAC5E,YAAY,EAAE,SAAS,CAAC,KAAK;YAC7B,iBAAiB,EAAE,SAAS,CAAC,OAAO;YACpC,GAAG,cAAc,EAAE;SACpB,CAAC;QAEF,OAAO,MAAM,CACX;YACE,IAAI,EAAE,OAAO,OAAO,CAAC,IAAI,EAAE;YAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE;YAChD,MAAM,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;SACjF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,MAAM,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;QACpD,CAAC,CACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ddd-ts-kit/tracing",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Non-invasive OpenTelemetry tracing: adapters are wrapped at the composition root, the domain never knows.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"dist"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@ddd-ts-kit/kernel": "0.
|
|
37
|
+
"@ddd-ts-kit/kernel": "0.11.0"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"@opentelemetry/api": "^1.9.0",
|
|
@@ -62,11 +62,11 @@
|
|
|
62
62
|
}
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
|
-
"@ddd-ts-kit/audit": "0.
|
|
66
|
-
"@ddd-ts-kit/di": "0.
|
|
67
|
-
"@ddd-ts-kit/events": "0.
|
|
68
|
-
"@ddd-ts-kit/http": "0.
|
|
69
|
-
"@ddd-ts-kit/scheduling": "0.
|
|
65
|
+
"@ddd-ts-kit/audit": "0.11.0",
|
|
66
|
+
"@ddd-ts-kit/di": "0.11.0",
|
|
67
|
+
"@ddd-ts-kit/events": "0.11.0",
|
|
68
|
+
"@ddd-ts-kit/http": "0.11.0",
|
|
69
|
+
"@ddd-ts-kit/scheduling": "0.11.0",
|
|
70
70
|
"@opentelemetry/api": "^1.9.1",
|
|
71
71
|
"@opentelemetry/auto-instrumentations-node": "latest",
|
|
72
72
|
"@opentelemetry/context-async-hooks": "^2.0.0",
|