@pristine-ts/common 2.0.4 → 2.0.6
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/dist/lib/cjs/contexts/event-context.js.map +1 -1
- package/dist/lib/cjs/decorators/traced.decorator.js +38 -2
- package/dist/lib/cjs/decorators/traced.decorator.js.map +1 -1
- package/dist/lib/cjs/errors/bad-request.error.js +15 -0
- package/dist/lib/cjs/errors/bad-request.error.js.map +1 -0
- package/dist/lib/cjs/errors/config.error.js +20 -0
- package/dist/lib/cjs/errors/config.error.js.map +1 -0
- package/dist/lib/cjs/errors/conflict.error.js +15 -0
- package/dist/lib/cjs/errors/conflict.error.js.map +1 -0
- package/dist/lib/cjs/errors/errors.js +14 -1
- package/dist/lib/cjs/errors/errors.js.map +1 -1
- package/dist/lib/cjs/errors/exit-code.enum.js +50 -0
- package/dist/lib/cjs/errors/exit-code.enum.js.map +1 -0
- package/dist/lib/cjs/errors/forbidden.error.js +15 -0
- package/dist/lib/cjs/errors/forbidden.error.js.map +1 -0
- package/dist/lib/cjs/errors/internal.error.js +19 -0
- package/dist/lib/cjs/errors/internal.error.js.map +1 -0
- package/dist/lib/cjs/errors/not-found.error.js +15 -0
- package/dist/lib/cjs/errors/not-found.error.js.map +1 -0
- package/dist/lib/cjs/errors/pristine-error-code.enum.js +37 -0
- package/dist/lib/cjs/errors/pristine-error-code.enum.js.map +1 -0
- package/dist/lib/cjs/errors/pristine-error-kind.enum.js +29 -0
- package/dist/lib/cjs/errors/pristine-error-kind.enum.js.map +1 -0
- package/dist/lib/cjs/errors/pristine-error-options.interface.js +3 -0
- package/dist/lib/cjs/errors/pristine-error-options.interface.js.map +1 -0
- package/dist/lib/cjs/errors/pristine.error.js +109 -0
- package/dist/lib/cjs/errors/pristine.error.js.map +1 -0
- package/dist/lib/cjs/errors/unauthorized.error.js +15 -0
- package/dist/lib/cjs/errors/unauthorized.error.js.map +1 -0
- package/dist/lib/cjs/errors/usage.error.js +18 -0
- package/dist/lib/cjs/errors/usage.error.js.map +1 -0
- package/dist/lib/cjs/errors/validation.error.js +15 -0
- package/dist/lib/cjs/errors/validation.error.js.map +1 -0
- package/dist/lib/cjs/managers/event-context.manager.js +9 -0
- package/dist/lib/cjs/managers/event-context.manager.js.map +1 -1
- package/dist/lib/cjs/models/models.js +2 -1
- package/dist/lib/cjs/models/models.js.map +1 -1
- package/dist/lib/cjs/models/span-lifecycle-owner.interface.js +3 -0
- package/dist/lib/cjs/models/span-lifecycle-owner.interface.js.map +1 -0
- package/dist/lib/cjs/models/span-marker.model.js +34 -0
- package/dist/lib/cjs/models/span-marker.model.js.map +1 -0
- package/dist/lib/cjs/models/span.model.js +5 -2
- package/dist/lib/cjs/models/span.model.js.map +1 -1
- package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/lib/cjs/utils/utils.js +0 -1
- package/dist/lib/cjs/utils/utils.js.map +1 -1
- package/dist/lib/esm/contexts/event-context.js.map +1 -1
- package/dist/lib/esm/decorators/traced.decorator.js +38 -2
- package/dist/lib/esm/decorators/traced.decorator.js.map +1 -1
- package/dist/lib/esm/errors/bad-request.error.js +11 -0
- package/dist/lib/esm/errors/bad-request.error.js.map +1 -0
- package/dist/lib/esm/errors/config.error.js +16 -0
- package/dist/lib/esm/errors/config.error.js.map +1 -0
- package/dist/lib/esm/errors/conflict.error.js +11 -0
- package/dist/lib/esm/errors/conflict.error.js.map +1 -0
- package/dist/lib/esm/errors/errors.js +14 -1
- package/dist/lib/esm/errors/errors.js.map +1 -1
- package/dist/lib/esm/errors/exit-code.enum.js +47 -0
- package/dist/lib/esm/errors/exit-code.enum.js.map +1 -0
- package/dist/lib/esm/errors/forbidden.error.js +11 -0
- package/dist/lib/esm/errors/forbidden.error.js.map +1 -0
- package/dist/lib/esm/errors/internal.error.js +15 -0
- package/dist/lib/esm/errors/internal.error.js.map +1 -0
- package/dist/lib/esm/errors/not-found.error.js +11 -0
- package/dist/lib/esm/errors/not-found.error.js.map +1 -0
- package/dist/lib/esm/errors/pristine-error-code.enum.js +34 -0
- package/dist/lib/esm/errors/pristine-error-code.enum.js.map +1 -0
- package/dist/lib/esm/errors/pristine-error-kind.enum.js +26 -0
- package/dist/lib/esm/errors/pristine-error-kind.enum.js.map +1 -0
- package/dist/lib/esm/errors/pristine-error-options.interface.js +2 -0
- package/dist/lib/esm/errors/pristine-error-options.interface.js.map +1 -0
- package/dist/lib/esm/errors/pristine.error.js +105 -0
- package/dist/lib/esm/errors/pristine.error.js.map +1 -0
- package/dist/lib/esm/errors/unauthorized.error.js +11 -0
- package/dist/lib/esm/errors/unauthorized.error.js.map +1 -0
- package/dist/lib/esm/errors/usage.error.js +14 -0
- package/dist/lib/esm/errors/usage.error.js.map +1 -0
- package/dist/lib/esm/errors/validation.error.js +11 -0
- package/dist/lib/esm/errors/validation.error.js.map +1 -0
- package/dist/lib/esm/managers/event-context.manager.js +9 -0
- package/dist/lib/esm/managers/event-context.manager.js.map +1 -1
- package/dist/lib/esm/models/models.js +2 -1
- package/dist/lib/esm/models/models.js.map +1 -1
- package/dist/lib/esm/models/span-lifecycle-owner.interface.js +2 -0
- package/dist/lib/esm/models/span-lifecycle-owner.interface.js.map +1 -0
- package/dist/lib/esm/models/span-marker.model.js +30 -0
- package/dist/lib/esm/models/span-marker.model.js.map +1 -0
- package/dist/lib/esm/models/span.model.js +5 -2
- package/dist/lib/esm/models/span.model.js.map +1 -1
- package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/lib/esm/utils/utils.js +0 -1
- package/dist/lib/esm/utils/utils.js.map +1 -1
- package/dist/types/contexts/event-context.d.ts +12 -4
- package/dist/types/errors/bad-request.error.d.ts +8 -0
- package/dist/types/errors/config.error.d.ts +13 -0
- package/dist/types/errors/conflict.error.d.ts +8 -0
- package/dist/types/errors/errors.d.ts +14 -1
- package/dist/types/errors/exit-code.enum.d.ts +45 -0
- package/dist/types/errors/forbidden.error.d.ts +8 -0
- package/dist/types/errors/internal.error.d.ts +12 -0
- package/dist/types/errors/not-found.error.d.ts +8 -0
- package/dist/types/errors/pristine-error-code.enum.d.ts +32 -0
- package/dist/types/errors/pristine-error-kind.enum.d.ts +24 -0
- package/dist/types/errors/pristine-error-options.interface.d.ts +59 -0
- package/dist/types/errors/pristine.error.d.ts +78 -0
- package/dist/types/errors/unauthorized.error.d.ts +8 -0
- package/dist/types/errors/usage.error.d.ts +11 -0
- package/dist/types/errors/validation.error.d.ts +8 -0
- package/dist/types/interfaces/module.interface.d.ts +26 -0
- package/dist/types/interfaces/tracing-manager.interface.d.ts +7 -7
- package/dist/types/managers/event-context.manager.d.ts +4 -0
- package/dist/types/models/models.d.ts +2 -1
- package/dist/types/models/span-lifecycle-owner.interface.d.ts +11 -0
- package/dist/types/models/span-marker.model.d.ts +36 -0
- package/dist/types/models/span.model.d.ts +7 -12
- package/dist/types/utils/utils.d.ts +0 -1
- package/package.json +2 -2
- package/dist/lib/cjs/errors/loggable.error.js +0 -19
- package/dist/lib/cjs/errors/loggable.error.js.map +0 -1
- package/dist/lib/cjs/models/span-event.model.js +0 -28
- package/dist/lib/cjs/models/span-event.model.js.map +0 -1
- package/dist/lib/cjs/utils/span-runner.js +0 -117
- package/dist/lib/cjs/utils/span-runner.js.map +0 -1
- package/dist/lib/esm/errors/loggable.error.js +0 -15
- package/dist/lib/esm/errors/loggable.error.js.map +0 -1
- package/dist/lib/esm/models/span-event.model.js +0 -24
- package/dist/lib/esm/models/span-event.model.js.map +0 -1
- package/dist/lib/esm/utils/span-runner.js +0 -113
- package/dist/lib/esm/utils/span-runner.js.map +0 -1
- package/dist/types/errors/loggable.error.d.ts +0 -8
- package/dist/types/models/span-event.model.d.ts +0 -30
- package/dist/types/utils/span-runner.d.ts +0 -55
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"span-runner.js","sourceRoot":"","sources":["../../../../src/utils/span-runner.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6EAAsE;AAetE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAa,UAAU;IAcf,WAAW,CACf,2BAA6D,EAC7D,eAAgD,EAChD,WAAwD,EACxD,YAAgC;;YAEhC,mFAAmF;YACnF,oDAAoD;YACpD,IAAI,cAAmD,CAAC;YACxD,IAAI,WAAmB,CAAC;YACxB,IAAI,EAAwB,CAAC;YAC7B,IAAI,OAAsC,CAAC;YAE3C,IAAI,OAAO,2BAA2B,KAAK,QAAQ,EAAE,CAAC;gBACpD,WAAW,GAAG,2BAA2B,CAAC;gBAC1C,EAAE,GAAG,eAAuC,CAAC;gBAC7C,OAAO,GAAG,WAA4C,CAAC;gBACvD,iFAAiF;gBACjF,8EAA8E;gBAC9E,+EAA+E;gBAC/E,8EAA8E;gBAC9E,uEAAuE;gBACvE,kFAAkF;gBAClF,gFAAgF;gBAChF,iEAAiE;gBACjE,MAAM,SAAS,GAAG,2CAAmB,CAAC,SAAS,EAAE,CAAC;gBAClD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,cAAc,GAAG,SAAS,CAAC,OAAO,CAA0B,yBAAyB,CAAC,CAAC;oBACzF,CAAC;oBAAC,WAAM,CAAC;wBACP,cAAc,GAAG,SAAS,CAAC;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,2BAA2B,CAAC;gBAC7C,WAAW,GAAG,eAAyB,CAAC;gBACxC,EAAE,GAAG,WAAmC,CAAC;gBACzC,OAAO,GAAG,YAAY,CAAC;YACzB,CAAC;YAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,yEAAyE;gBACzE,4EAA4E;gBAC5E,kFAAkF;gBAClF,OAAO,MAAM,EAAE,EAAE,CAAC;YACpB,CAAC;YAED,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CACnC,WAAW,EACX,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EACtB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EACjB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CACjB,CAAC;YAEF,IAAI,CAAC;gBACH,OAAO,MAAM,EAAE,EAAE,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,kFAAkF;gBAClF,oFAAoF;gBACpF,gDAAgD;gBAChD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC3B,IAAI,CAAC,OAAO,mCACP,IAAI,CAAC,OAAO,KACf,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,KAAK,CAAC,IAAI,EACrB,YAAY,EAAE,KAAK,CAAC,OAAO,GAC5B,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,OAAO,mCACP,IAAI,CAAC,OAAO,KACf,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,GAC5B,CAAC;gBACJ,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,CAAC;QACH,CAAC;KAAA;CACF;AA9FD,gCA8FC;AAED;;GAEG;AACU,QAAA,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This Error represents a LoggableError
|
|
3
|
-
*/
|
|
4
|
-
export class LoggableError extends Error {
|
|
5
|
-
constructor(message, extra) {
|
|
6
|
-
super(message);
|
|
7
|
-
this.message = message;
|
|
8
|
-
this.extra = extra;
|
|
9
|
-
// Set the prototype explicitly.
|
|
10
|
-
// As specified in the documentation in TypeScript
|
|
11
|
-
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
12
|
-
Object.setPrototypeOf(this, LoggableError.prototype);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=loggable.error.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loggable.error.js","sourceRoot":"","sources":["../../../../src/errors/loggable.error.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAA4B,OAAe,EAAW,KAAW;QAC/D,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,YAAO,GAAP,OAAO,CAAQ;QAAW,UAAK,GAAL,KAAK,CAAM;QAG/D,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;CACF"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A named, timestamped marker attached to a `Span`. Represents a noteworthy moment
|
|
3
|
-
* inside the span's lifetime that doesn't warrant a child span of its own — e.g.
|
|
4
|
-
* "validation passed", "rate limit check ok", "found 50 rows in DB".
|
|
5
|
-
*
|
|
6
|
-
* Modeled after OpenTelemetry's "span events" concept: a `Span` carries `events: SpanEvent[]`
|
|
7
|
-
* alongside its `children: Span[]`. Renderers (the console/file tracer output, etc.) interleave
|
|
8
|
-
* events with spans by timestamp to produce a chronological trail of what happened during the span.
|
|
9
|
-
*
|
|
10
|
-
* Use `TracingManager.addEventToCurrentSpan(message, attributes?)` to add one — it finds
|
|
11
|
-
* the most-recently-started in-progress span and attaches the event there.
|
|
12
|
-
*/
|
|
13
|
-
export class SpanEvent {
|
|
14
|
-
constructor(message, attributes) {
|
|
15
|
-
this.message = message;
|
|
16
|
-
/**
|
|
17
|
-
* The timestamp in milliseconds at which the event was created. Used to interleave
|
|
18
|
-
* events with sibling spans when rendering a sorted trail.
|
|
19
|
-
*/
|
|
20
|
-
this.timestamp = Date.now();
|
|
21
|
-
this.attributes = attributes;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=span-event.model.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"span-event.model.js","sourceRoot":"","sources":["../../../../src/models/span-event.model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,SAAS;IAapB,YAA4B,OAAe,EAAE,UAAsC;QAAvD,YAAO,GAAP,OAAO,CAAQ;QAZ3C;;;WAGG;QACa,cAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAS7C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { EventContextManager } from "../managers/event-context.manager";
|
|
11
|
-
/**
|
|
12
|
-
* Runs a function inside a span that is automatically ended when the function returns
|
|
13
|
-
* or throws.
|
|
14
|
-
*
|
|
15
|
-
* Two call shapes are supported:
|
|
16
|
-
*
|
|
17
|
-
* **Explicit form** (`runWithSpan(tracingManager, name, fn)`) — pass the manager you've
|
|
18
|
-
* already injected. Works anywhere, including outside an event context. Use this when
|
|
19
|
-
* you have a `TracingManager` reference in hand:
|
|
20
|
-
*
|
|
21
|
-
* ```ts
|
|
22
|
-
* return spanRunner.runWithSpan(this.tracingManager, "payment.charge",
|
|
23
|
-
* () => this.client.charge(amount));
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* **ALS form** (`runWithSpan(name, fn)`) — auto-resolves the `TracingManager` from the
|
|
27
|
-
* active `EventContext`'s container. Concise; works when called from anywhere inside
|
|
28
|
-
* a Pristine event (controller, service, etc.) without needing the manager threaded
|
|
29
|
-
* through:
|
|
30
|
-
*
|
|
31
|
-
* ```ts
|
|
32
|
-
* return spanRunner.runWithSpan("payment.charge", () => this.client.charge(amount));
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* If the ALS form is used outside any `EventContext` (e.g. a unit test that doesn't
|
|
36
|
-
* boot a kernel), no span is created and `fn` runs unchanged — same no-throw contract
|
|
37
|
-
* as the rest of the tracing layer.
|
|
38
|
-
*
|
|
39
|
-
* On thrown errors: the error's name/message is attached to the span's context (visible
|
|
40
|
-
* in the rendered tree/JSON output) and then re-thrown. The span is ended either way.
|
|
41
|
-
*
|
|
42
|
-
* Stateless — instantiate once and reuse, or use the exported singleton `spanRunner`.
|
|
43
|
-
*/
|
|
44
|
-
export class SpanRunner {
|
|
45
|
-
runWithSpan(tracingManagerOrSpanKeyname, spanKeynameOrFn, fnOrOptions, maybeOptions) {
|
|
46
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
-
// Disambiguate by the first argument's shape. A string means "ALS form"; an object
|
|
48
|
-
// with `startSpan` means the explicit-manager form.
|
|
49
|
-
let tracingManager;
|
|
50
|
-
let spanKeyname;
|
|
51
|
-
let fn;
|
|
52
|
-
let options;
|
|
53
|
-
if (typeof tracingManagerOrSpanKeyname === "string") {
|
|
54
|
-
spanKeyname = tracingManagerOrSpanKeyname;
|
|
55
|
-
fn = spanKeynameOrFn;
|
|
56
|
-
options = fnOrOptions;
|
|
57
|
-
// ── container.resolve, justified ──────────────────────────────────────────────
|
|
58
|
-
// This is one of the documented "legitimate exception" cases (see CLAUDE.md):
|
|
59
|
-
// SpanRunner is a stateless utility class with static-ish methods invoked from
|
|
60
|
-
// free functions / decorators that have no constructor to inject through. The
|
|
61
|
-
// ALS-form overload exists precisely so callers don't have to thread a
|
|
62
|
-
// TracingManager reference everywhere. If there's no active event context (e.g. a
|
|
63
|
-
// unit test calling this directly), the lookup is skipped and the function runs
|
|
64
|
-
// without a span — tracing must never throw or change semantics.
|
|
65
|
-
const container = EventContextManager.container();
|
|
66
|
-
if (container !== undefined) {
|
|
67
|
-
try {
|
|
68
|
-
tracingManager = container.resolve("TracingManagerInterface");
|
|
69
|
-
}
|
|
70
|
-
catch (_a) {
|
|
71
|
-
tracingManager = undefined;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
tracingManager = tracingManagerOrSpanKeyname;
|
|
77
|
-
spanKeyname = spanKeynameOrFn;
|
|
78
|
-
fn = fnOrOptions;
|
|
79
|
-
options = maybeOptions;
|
|
80
|
-
}
|
|
81
|
-
if (tracingManager === undefined) {
|
|
82
|
-
// No manager available: ALS form called outside any event context, or no
|
|
83
|
-
// TracingManager registered in the container. Run the function unchanged so
|
|
84
|
-
// callers get the same behavior they'd see without `runWithSpan` wrapping at all.
|
|
85
|
-
return yield fn();
|
|
86
|
-
}
|
|
87
|
-
const span = tracingManager.startSpan(spanKeyname, options === null || options === void 0 ? void 0 : options.parentKeyname, options === null || options === void 0 ? void 0 : options.parentId, options === null || options === void 0 ? void 0 : options.context);
|
|
88
|
-
try {
|
|
89
|
-
return yield fn();
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
// Annotate the span with error info so it surfaces in the rendered output without
|
|
93
|
-
// forcing the caller to remember to add it themselves. Span.context is string-typed
|
|
94
|
-
// by design (cheap to serialize), so we coerce.
|
|
95
|
-
if (error instanceof Error) {
|
|
96
|
-
span.context = Object.assign(Object.assign({}, span.context), { error: "true", errorName: error.name, errorMessage: error.message });
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
span.context = Object.assign(Object.assign({}, span.context), { error: "true", errorName: "non-error-throw", errorMessage: String(error) });
|
|
100
|
-
}
|
|
101
|
-
throw error;
|
|
102
|
-
}
|
|
103
|
-
finally {
|
|
104
|
-
span.end();
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Default singleton. Stateless so sharing is safe.
|
|
111
|
-
*/
|
|
112
|
-
export const spanRunner = new SpanRunner();
|
|
113
|
-
//# sourceMappingURL=span-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"span-runner.js","sourceRoot":"","sources":["../../../../src/utils/span-runner.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,mCAAmC,CAAC;AAetE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,OAAO,UAAU;IAcf,WAAW,CACf,2BAA6D,EAC7D,eAAgD,EAChD,WAAwD,EACxD,YAAgC;;YAEhC,mFAAmF;YACnF,oDAAoD;YACpD,IAAI,cAAmD,CAAC;YACxD,IAAI,WAAmB,CAAC;YACxB,IAAI,EAAwB,CAAC;YAC7B,IAAI,OAAsC,CAAC;YAE3C,IAAI,OAAO,2BAA2B,KAAK,QAAQ,EAAE,CAAC;gBACpD,WAAW,GAAG,2BAA2B,CAAC;gBAC1C,EAAE,GAAG,eAAuC,CAAC;gBAC7C,OAAO,GAAG,WAA4C,CAAC;gBACvD,iFAAiF;gBACjF,8EAA8E;gBAC9E,+EAA+E;gBAC/E,8EAA8E;gBAC9E,uEAAuE;gBACvE,kFAAkF;gBAClF,gFAAgF;gBAChF,iEAAiE;gBACjE,MAAM,SAAS,GAAG,mBAAmB,CAAC,SAAS,EAAE,CAAC;gBAClD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,cAAc,GAAG,SAAS,CAAC,OAAO,CAA0B,yBAAyB,CAAC,CAAC;oBACzF,CAAC;oBAAC,WAAM,CAAC;wBACP,cAAc,GAAG,SAAS,CAAC;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,cAAc,GAAG,2BAA2B,CAAC;gBAC7C,WAAW,GAAG,eAAyB,CAAC;gBACxC,EAAE,GAAG,WAAmC,CAAC;gBACzC,OAAO,GAAG,YAAY,CAAC;YACzB,CAAC;YAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,yEAAyE;gBACzE,4EAA4E;gBAC5E,kFAAkF;gBAClF,OAAO,MAAM,EAAE,EAAE,CAAC;YACpB,CAAC;YAED,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CACnC,WAAW,EACX,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,EACtB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EACjB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CACjB,CAAC;YAEF,IAAI,CAAC;gBACH,OAAO,MAAM,EAAE,EAAE,CAAC;YACpB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,kFAAkF;gBAClF,oFAAoF;gBACpF,gDAAgD;gBAChD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;oBAC3B,IAAI,CAAC,OAAO,mCACP,IAAI,CAAC,OAAO,KACf,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,KAAK,CAAC,IAAI,EACrB,YAAY,EAAE,KAAK,CAAC,OAAO,GAC5B,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,OAAO,mCACP,IAAI,CAAC,OAAO,KACf,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,iBAAiB,EAC5B,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,GAC5B,CAAC;gBACJ,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,CAAC;QACH,CAAC;KAAA;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A named, timestamped marker attached to a `Span`. Represents a noteworthy moment
|
|
3
|
-
* inside the span's lifetime that doesn't warrant a child span of its own — e.g.
|
|
4
|
-
* "validation passed", "rate limit check ok", "found 50 rows in DB".
|
|
5
|
-
*
|
|
6
|
-
* Modeled after OpenTelemetry's "span events" concept: a `Span` carries `events: SpanEvent[]`
|
|
7
|
-
* alongside its `children: Span[]`. Renderers (the console/file tracer output, etc.) interleave
|
|
8
|
-
* events with spans by timestamp to produce a chronological trail of what happened during the span.
|
|
9
|
-
*
|
|
10
|
-
* Use `TracingManager.addEventToCurrentSpan(message, attributes?)` to add one — it finds
|
|
11
|
-
* the most-recently-started in-progress span and attaches the event there.
|
|
12
|
-
*/
|
|
13
|
-
export declare class SpanEvent {
|
|
14
|
-
readonly message: string;
|
|
15
|
-
/**
|
|
16
|
-
* The timestamp in milliseconds at which the event was created. Used to interleave
|
|
17
|
-
* events with sibling spans when rendering a sorted trail.
|
|
18
|
-
*/
|
|
19
|
-
readonly timestamp: number;
|
|
20
|
-
/**
|
|
21
|
-
* Free-form attributes attached to the event. String-keyed for cheap serialization,
|
|
22
|
-
* mirroring `Span.context`'s shape. `undefined` when the event carries no metadata.
|
|
23
|
-
*/
|
|
24
|
-
readonly attributes?: {
|
|
25
|
-
[key: string]: string;
|
|
26
|
-
};
|
|
27
|
-
constructor(message: string, attributes?: {
|
|
28
|
-
[key: string]: string;
|
|
29
|
-
});
|
|
30
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { TracingManagerInterface } from "../interfaces/tracing-manager.interface";
|
|
2
|
-
/**
|
|
3
|
-
* Options to scope a `runWithSpan` call beyond just naming the span.
|
|
4
|
-
*/
|
|
5
|
-
export interface SpanRunnerOptions {
|
|
6
|
-
/** When set, attach the new span as a child of the most recent span with this keyname. */
|
|
7
|
-
parentKeyname?: string;
|
|
8
|
-
/** Disambiguates parents when multiple spans share the same `parentKeyname`. */
|
|
9
|
-
parentId?: string;
|
|
10
|
-
/** Free-form context recorded on the span and surfaced in the rendered output. */
|
|
11
|
-
context?: {
|
|
12
|
-
[key: string]: string;
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Runs a function inside a span that is automatically ended when the function returns
|
|
17
|
-
* or throws.
|
|
18
|
-
*
|
|
19
|
-
* Two call shapes are supported:
|
|
20
|
-
*
|
|
21
|
-
* **Explicit form** (`runWithSpan(tracingManager, name, fn)`) — pass the manager you've
|
|
22
|
-
* already injected. Works anywhere, including outside an event context. Use this when
|
|
23
|
-
* you have a `TracingManager` reference in hand:
|
|
24
|
-
*
|
|
25
|
-
* ```ts
|
|
26
|
-
* return spanRunner.runWithSpan(this.tracingManager, "payment.charge",
|
|
27
|
-
* () => this.client.charge(amount));
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* **ALS form** (`runWithSpan(name, fn)`) — auto-resolves the `TracingManager` from the
|
|
31
|
-
* active `EventContext`'s container. Concise; works when called from anywhere inside
|
|
32
|
-
* a Pristine event (controller, service, etc.) without needing the manager threaded
|
|
33
|
-
* through:
|
|
34
|
-
*
|
|
35
|
-
* ```ts
|
|
36
|
-
* return spanRunner.runWithSpan("payment.charge", () => this.client.charge(amount));
|
|
37
|
-
* ```
|
|
38
|
-
*
|
|
39
|
-
* If the ALS form is used outside any `EventContext` (e.g. a unit test that doesn't
|
|
40
|
-
* boot a kernel), no span is created and `fn` runs unchanged — same no-throw contract
|
|
41
|
-
* as the rest of the tracing layer.
|
|
42
|
-
*
|
|
43
|
-
* On thrown errors: the error's name/message is attached to the span's context (visible
|
|
44
|
-
* in the rendered tree/JSON output) and then re-thrown. The span is ended either way.
|
|
45
|
-
*
|
|
46
|
-
* Stateless — instantiate once and reuse, or use the exported singleton `spanRunner`.
|
|
47
|
-
*/
|
|
48
|
-
export declare class SpanRunner {
|
|
49
|
-
runWithSpan<T>(tracingManager: TracingManagerInterface, spanKeyname: string, fn: () => Promise<T> | T, options?: SpanRunnerOptions): Promise<T>;
|
|
50
|
-
runWithSpan<T>(spanKeyname: string, fn: () => Promise<T> | T, options?: SpanRunnerOptions): Promise<T>;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Default singleton. Stateless so sharing is safe.
|
|
54
|
-
*/
|
|
55
|
-
export declare const spanRunner: SpanRunner;
|