@pristine-ts/telemetry 1.0.440 → 2.0.2

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 (63) hide show
  1. package/dist/lib/cjs/enums/console-tracer-output-mode.enum.js +16 -0
  2. package/dist/lib/cjs/enums/console-tracer-output-mode.enum.js.map +1 -0
  3. package/dist/lib/cjs/enums/enums.js +1 -0
  4. package/dist/lib/cjs/enums/enums.js.map +1 -1
  5. package/dist/lib/cjs/managers/tracing.manager.js +41 -41
  6. package/dist/lib/cjs/managers/tracing.manager.js.map +1 -1
  7. package/dist/lib/cjs/telemetry.configuration-keys.js +26 -0
  8. package/dist/lib/cjs/telemetry.configuration-keys.js.map +1 -0
  9. package/dist/lib/cjs/telemetry.module.js +90 -0
  10. package/dist/lib/cjs/telemetry.module.js.map +1 -1
  11. package/dist/lib/cjs/tracers/console.tracer.js +106 -0
  12. package/dist/lib/cjs/tracers/console.tracer.js.map +1 -0
  13. package/dist/lib/cjs/tracers/file.tracer.js +161 -0
  14. package/dist/lib/cjs/tracers/file.tracer.js.map +1 -0
  15. package/dist/lib/cjs/tracers/tracers.js +2 -1
  16. package/dist/lib/cjs/tracers/tracers.js.map +1 -1
  17. package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  18. package/dist/lib/cjs/utils/span-runner.js +81 -0
  19. package/dist/lib/cjs/utils/span-runner.js.map +1 -0
  20. package/dist/lib/cjs/utils/trace-renderer.js +128 -0
  21. package/dist/lib/cjs/utils/trace-renderer.js.map +1 -0
  22. package/dist/lib/cjs/utils/utils.js +19 -0
  23. package/dist/lib/cjs/utils/utils.js.map +1 -0
  24. package/dist/lib/esm/enums/console-tracer-output-mode.enum.js +13 -0
  25. package/dist/lib/esm/enums/console-tracer-output-mode.enum.js.map +1 -0
  26. package/dist/lib/esm/enums/enums.js +1 -0
  27. package/dist/lib/esm/enums/enums.js.map +1 -1
  28. package/dist/lib/esm/managers/tracing.manager.js +42 -42
  29. package/dist/lib/esm/managers/tracing.manager.js.map +1 -1
  30. package/dist/lib/esm/telemetry.configuration-keys.js +23 -0
  31. package/dist/lib/esm/telemetry.configuration-keys.js.map +1 -0
  32. package/dist/lib/esm/telemetry.module.js +91 -1
  33. package/dist/lib/esm/telemetry.module.js.map +1 -1
  34. package/dist/lib/esm/tracers/console.tracer.js +103 -0
  35. package/dist/lib/esm/tracers/console.tracer.js.map +1 -0
  36. package/dist/lib/esm/tracers/file.tracer.js +125 -0
  37. package/dist/lib/esm/tracers/file.tracer.js.map +1 -0
  38. package/dist/lib/esm/tracers/tracers.js +2 -1
  39. package/dist/lib/esm/tracers/tracers.js.map +1 -1
  40. package/dist/lib/esm/tsconfig.tsbuildinfo +1 -0
  41. package/dist/lib/esm/utils/span-runner.js +77 -0
  42. package/dist/lib/esm/utils/span-runner.js.map +1 -0
  43. package/dist/lib/esm/utils/trace-renderer.js +124 -0
  44. package/dist/lib/esm/utils/trace-renderer.js.map +1 -0
  45. package/dist/lib/esm/utils/utils.js +3 -0
  46. package/dist/lib/esm/utils/utils.js.map +1 -0
  47. package/dist/types/enums/console-tracer-output-mode.enum.d.ts +11 -0
  48. package/dist/types/enums/enums.d.ts +1 -0
  49. package/dist/types/managers/tracing.manager.d.ts +3 -1
  50. package/dist/types/telemetry.configuration-keys.d.ts +48 -0
  51. package/dist/types/telemetry.module.d.ts +2 -0
  52. package/dist/types/tracers/console.tracer.d.ts +28 -0
  53. package/dist/types/tracers/file.tracer.d.ts +34 -0
  54. package/dist/types/tracers/tracers.d.ts +2 -1
  55. package/dist/types/utils/span-runner.d.ts +59 -0
  56. package/dist/types/utils/trace-renderer.d.ts +41 -0
  57. package/dist/types/utils/utils.d.ts +2 -0
  58. package/package.json +4 -4
  59. package/dist/lib/cjs/tracers/basic.tracer.js +0 -50
  60. package/dist/lib/cjs/tracers/basic.tracer.js.map +0 -1
  61. package/dist/lib/esm/tracers/basic.tracer.js +0 -47
  62. package/dist/lib/esm/tracers/basic.tracer.js.map +0 -1
  63. package/dist/types/tracers/basic.tracer.d.ts +0 -12
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConsoleTracerOutputModeEnum = void 0;
4
+ /**
5
+ * How `ConsoleTracer` renders a completed trace.
6
+ */
7
+ var ConsoleTracerOutputModeEnum;
8
+ (function (ConsoleTracerOutputModeEnum) {
9
+ /** Indented ASCII tree mirroring the span hierarchy. Best for human readers. */
10
+ ConsoleTracerOutputModeEnum["Tree"] = "tree";
11
+ /** Pretty-printed JSON dump of the trace + every span. Best for piping into a tool. */
12
+ ConsoleTracerOutputModeEnum["Json"] = "json";
13
+ /** One span per line, no indentation, sorted by start time. Best for grep. */
14
+ ConsoleTracerOutputModeEnum["Flat"] = "flat";
15
+ })(ConsoleTracerOutputModeEnum || (exports.ConsoleTracerOutputModeEnum = ConsoleTracerOutputModeEnum = {}));
16
+ //# sourceMappingURL=console-tracer-output-mode.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-tracer-output-mode.enum.js","sourceRoot":"","sources":["../../../../src/enums/console-tracer-output-mode.enum.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,2BAOX;AAPD,WAAY,2BAA2B;IACrC,gFAAgF;IAChF,4CAAa,CAAA;IACb,uFAAuF;IACvF,4CAAa,CAAA;IACb,8EAA8E;IAC9E,4CAAa,CAAA;AACf,CAAC,EAPW,2BAA2B,2CAA3B,2BAA2B,QAOtC"}
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./console-tracer-output-mode.enum"), exports);
17
18
  __exportStar(require("./span-keyname.enum"), exports);
18
19
  //# sourceMappingURL=enums.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../src/enums/enums.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../src/enums/enums.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAkD;AAClD,sDAAoC"}
@@ -14,6 +14,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.TracingManager = void 0;
16
16
  const tsyringe_1 = require("tsyringe");
17
+ const telemetry_configuration_keys_1 = require("../telemetry.configuration-keys");
17
18
  const trace_model_1 = require("../models/trace.model");
18
19
  const span_model_1 = require("../models/span.model");
19
20
  const common_1 = require("@pristine-ts/common");
@@ -92,43 +93,55 @@ let TracingManager = class TracingManager {
92
93
  */
93
94
  startSpan(keyname, parentKeyname, parentId, context) {
94
95
  var _a;
95
- // Check if there's an active trace. If not, start one.
96
+ // Make sure a trace exists. `startTracing` is the canonical entry point, but a direct
97
+ // `startSpan` call (e.g. from project code) should auto-start a trace rather than fail.
96
98
  if (this.trace === undefined) {
97
99
  this.startTracing(span_keyname_enum_1.SpanKeynameEnum.RootExecution, undefined, context);
98
100
  }
99
- // Create the new span
100
- const span = new span_model_1.Span(keyname, context);
101
+ // Construct the span. NOTE the third constructor argument: `Span(keyname, id?, context?)`.
102
+ // A previous version of this code passed `context` in the `id` slot, which corrupted span
103
+ // identities and broke parent-by-id lookup at line 133 silently. Always pass `undefined`
104
+ // for the id so a fresh UUID is generated, and put context in the third slot.
105
+ const span = new span_model_1.Span(keyname, undefined, context);
106
+ // Defensive: tracing must never throw. If the trace is somehow still undefined here
107
+ // (an exception inside `startTracing` that we swallowed and logged), return the bare
108
+ // span so the caller can still call `.end()` on it without exploding.
101
109
  if (this.trace === undefined) {
102
- this.loghandler.error("The trace should not be undefined at this point.");
103
- return span; // Return because tracing should not throw.
110
+ this.loghandler.error("Trace is undefined after startTracing; returning unattached span.", { span });
111
+ return span;
104
112
  }
105
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
106
113
  span.trace = this.trace;
107
- // Retrieve the parent and add it to the span.
108
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
114
+ // Resolve the parent span. The default parent is the trace's rootSpan, but we may not
115
+ // have one if the trace was started via a path that didn't set it (programming error
116
+ // upstream, but we tolerate it). When no rootSpan exists, attach the new span as a
117
+ // top-level orphan and warn-log once instead of crashing.
109
118
  let parentSpan = this.trace.rootSpan;
110
- // Check to find the parentKeyname in our internal map of spans. If n ot, the rootSpan will be the parent since every span
111
- // needs at least one parent.
112
119
  if (parentKeyname) {
113
120
  const parentSpans = this.spans[parentKeyname];
114
- // If multiple spans have the same keyname we need an id to find the parent
115
121
  if (parentSpans) {
116
122
  if (parentSpans.length > 1) {
117
- if (!parentId) {
118
- //this.loghandler.error("Error finding the parent span, there are multiple spans with that keyname and no id is provided.", {parentKeyname});
119
- }
120
- else {
123
+ if (parentId) {
121
124
  parentSpan = (_a = parentSpans.find(span => span.id === parentId)) !== null && _a !== void 0 ? _a : parentSpan;
122
125
  }
126
+ // If multiple parents exist with the same keyname and no id was provided, fall back
127
+ // to the existing default (rootSpan or whatever parentSpan was) — silent rather
128
+ // than noisy because this is recoverable.
123
129
  }
124
130
  else if (parentSpans.length === 1) {
125
- // If only one span has the keyname we can use it
126
131
  parentSpan = parentSpans[0];
127
132
  }
128
133
  }
129
134
  }
130
- // Add the new span as a child of its parent.
131
- parentSpan.addChild(span);
135
+ if (parentSpan === undefined) {
136
+ this.loghandler.warning("startSpan: no parent span available (rootSpan is undefined). Attaching as orphan.", {
137
+ keyname,
138
+ parentKeyname,
139
+ traceId: this.trace.id,
140
+ });
141
+ }
142
+ else {
143
+ parentSpan.addChild(span);
144
+ }
132
145
  this.addSpan(span);
133
146
  return span;
134
147
  }
@@ -137,18 +150,14 @@ let TracingManager = class TracingManager {
137
150
  * @param span The span to add.
138
151
  */
139
152
  addSpan(span) {
140
- // Check if there's an active trace. If not, log an error and return;
153
+ // Tracing must never throw. If there's no active trace, log and return the span
154
+ // unchanged — caller can still call `.end()` on it because Span.end uses optional
155
+ // chaining on tracingManager.
141
156
  if (this.trace === undefined) {
142
157
  this.loghandler.error("You cannot call 'addSpan' without having an existing Trace.", { span });
143
158
  return span;
144
159
  }
145
- // Assign the tracing manager and the current trace to the span.
146
160
  span.tracingManager = this;
147
- if (this.trace === undefined) {
148
- this.loghandler.error("The trace should not be undefined at this point.");
149
- return span; // Return because tracing should not throw.
150
- }
151
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
152
161
  span.trace = this.trace;
153
162
  // Add it to the map of spans
154
163
  if (!this.spans[span.keyname]) {
@@ -243,23 +252,14 @@ let TracingManager = class TracingManager {
243
252
  if (this.isActive === false) {
244
253
  return;
245
254
  }
246
- // Notify the TraceListeners that the Trace was ended.
255
+ // Notify every registered tracer that the trace ended. The tracers handle their own
256
+ // formatting + transport (console pretty-print, file dump, X-Ray export, etc.). The
257
+ // manager itself no longer logs a summary here — `ConsoleTracer` produces a richer
258
+ // tree-formatted output when the user opts into it.
247
259
  this.tracers.forEach((tracer) => {
248
260
  var _a;
249
261
  (_a = tracer.traceEndedStream) === null || _a === void 0 ? void 0 : _a.push(this.trace);
250
262
  });
251
- // Trace time
252
- // Top 5 longest spans
253
- const longestSpans = Object.values(this.spans).flat(2).sort((a, b) => b.getDuration() - a.getDuration());
254
- longestSpans.splice(5);
255
- this.loghandler.debug("Ending the trace. \n" +
256
- "Trace duration: " + this.trace.getDuration() + " ms \n" +
257
- "Top 5 longest spans: \n" + longestSpans.map(span => "\t" + span.getDuration() + " ms - " + span.keyname).join("\n"), {
258
- extra: {
259
- trace: this.trace,
260
- },
261
- eventId: this.trace.id,
262
- });
263
263
  }
264
264
  };
265
265
  exports.TracingManager = TracingManager;
@@ -268,10 +268,10 @@ exports.TracingManager = TracingManager = __decorate([
268
268
  (0, common_1.tag)("TracingManagerInterface"),
269
269
  (0, tsyringe_1.singleton)(),
270
270
  (0, tsyringe_1.injectable)(),
271
- __param(0, (0, tsyringe_1.injectAll)(common_1.ServiceDefinitionTagEnum.Tracer)),
271
+ __param(0, (0, tsyringe_1.injectAll)(common_1.ServiceDefinitionTagEnum.Tracer, { isOptional: true })),
272
272
  __param(1, (0, tsyringe_1.inject)("LogHandlerInterface")),
273
- __param(2, (0, tsyringe_1.inject)("%pristine.telemetry.active%")),
274
- __param(3, (0, tsyringe_1.inject)("%pristine.telemetry.debug%")),
273
+ __param(2, (0, common_1.injectConfig)(telemetry_configuration_keys_1.TelemetryConfigurationKeys.Active)),
274
+ __param(3, (0, common_1.injectConfig)(telemetry_configuration_keys_1.TelemetryConfigurationKeys.Debug)),
275
275
  __metadata("design:paramtypes", [Array, Object, Boolean, Boolean, common_1.TracingContext])
276
276
  ], TracingManager);
277
277
  //# sourceMappingURL=tracing.manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.manager.js","sourceRoot":"","sources":["../../../../src/managers/tracing.manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracing.manager.js","sourceRoot":"","sources":["../../../../src/managers/tracing.manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TelemetryConfigurationKeys = void 0;
4
+ /**
5
+ * Typed configuration keys for `@pristine-ts/telemetry`. Use these constants with `@injectConfig`
6
+ * for autocomplete + rename safety, instead of typing the parameter name as a string.
7
+ *
8
+ * ```ts
9
+ * import {injectConfig} from "@pristine-ts/common";
10
+ * import {TelemetryConfigurationKeys} from "@pristine-ts/telemetry";
11
+ *
12
+ * constructor(@injectConfig(TelemetryConfigurationKeys.Active) value: ...) {}
13
+ * ```
14
+ */
15
+ exports.TelemetryConfigurationKeys = {
16
+ Active: "pristine.telemetry.active",
17
+ Debug: "pristine.telemetry.debug",
18
+ ConsoleTracerActivated: "pristine.telemetry.console-tracer.activated",
19
+ ConsoleTracerOutputMode: "pristine.telemetry.console-tracer.output-mode",
20
+ ConsoleTracerMinimumDurationMs: "pristine.telemetry.console-tracer.minimum-duration-ms",
21
+ FileTracerActivated: "pristine.telemetry.file-tracer.activated",
22
+ FileTracerOutputMode: "pristine.telemetry.file-tracer.output-mode",
23
+ FileTracerDirectory: "pristine.telemetry.file-tracer.directory",
24
+ FileTracerFilenamePattern: "pristine.telemetry.file-tracer.filename-pattern",
25
+ };
26
+ //# sourceMappingURL=telemetry.configuration-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.configuration-keys.js","sourceRoot":"","sources":["../../../src/telemetry.configuration-keys.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACU,QAAA,0BAA0B,GAAG;IACxC,MAAM,EAAE,2BAA2B;IACnC,KAAK,EAAE,0BAA0B;IACjC,sBAAsB,EAAE,6CAA6C;IACrE,uBAAuB,EAAE,+CAA+C;IACxE,8BAA8B,EAAE,uDAAuD;IACvF,mBAAmB,EAAE,0CAA0C;IAC/D,oBAAoB,EAAE,4CAA4C;IAClE,mBAAmB,EAAE,0CAA0C;IAC/D,yBAAyB,EAAE,iDAAiD;CACpE,CAAC"}
@@ -19,11 +19,14 @@ const common_1 = require("@pristine-ts/common");
19
19
  const telemetry_module_keyname_1 = require("./telemetry.module.keyname");
20
20
  const logging_1 = require("@pristine-ts/logging");
21
21
  const configuration_1 = require("@pristine-ts/configuration");
22
+ const console_tracer_output_mode_enum_1 = require("./enums/console-tracer-output-mode.enum");
22
23
  __exportStar(require("./enums/enums"), exports);
23
24
  __exportStar(require("./interfaces/interfaces"), exports);
24
25
  __exportStar(require("./managers/managers"), exports);
25
26
  __exportStar(require("./models/models"), exports);
26
27
  __exportStar(require("./tracers/tracers"), exports);
28
+ __exportStar(require("./utils/utils"), exports);
29
+ __exportStar(require("./telemetry.configuration-keys"), exports);
27
30
  exports.TelemetryModule = {
28
31
  keyname: telemetry_module_keyname_1.TelemetryModuleKeyname,
29
32
  importModules: [
@@ -54,6 +57,93 @@ exports.TelemetryModule = {
54
57
  defaultResolvers: [
55
58
  new configuration_1.BooleanResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_TRACING_DEBUG")),
56
59
  ]
60
+ },
61
+ /**
62
+ * Whether `ConsoleTracer` should print completed traces to stdout. Off by default —
63
+ * when on, every trace whose duration exceeds `console-tracer.minimum-duration-ms`
64
+ * is rendered. Best for local development; in production prefer a real backend.
65
+ */
66
+ {
67
+ parameterName: telemetry_module_keyname_1.TelemetryModuleKeyname + ".console-tracer.activated",
68
+ defaultValue: false,
69
+ isRequired: false,
70
+ defaultResolvers: [
71
+ new configuration_1.BooleanResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_TELEMETRY_CONSOLE_TRACER_ACTIVATED")),
72
+ ]
73
+ },
74
+ /**
75
+ * Output format for `ConsoleTracer`. See `ConsoleTracerOutputModeEnum`.
76
+ */
77
+ {
78
+ parameterName: telemetry_module_keyname_1.TelemetryModuleKeyname + ".console-tracer.output-mode",
79
+ defaultValue: console_tracer_output_mode_enum_1.ConsoleTracerOutputModeEnum.Tree,
80
+ isRequired: false,
81
+ defaultResolvers: [
82
+ new configuration_1.EnumResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_TELEMETRY_CONSOLE_TRACER_OUTPUT_MODE"), console_tracer_output_mode_enum_1.ConsoleTracerOutputModeEnum),
83
+ ]
84
+ },
85
+ /**
86
+ * Skip rendering traces shorter than this many milliseconds. Useful when most requests
87
+ * are fast and you only want to see the slow outliers. `0` means render everything.
88
+ */
89
+ {
90
+ parameterName: telemetry_module_keyname_1.TelemetryModuleKeyname + ".console-tracer.minimum-duration-ms",
91
+ defaultValue: 0,
92
+ isRequired: false,
93
+ defaultResolvers: [
94
+ new configuration_1.NumberResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_TELEMETRY_CONSOLE_TRACER_MINIMUM_DURATION_MS")),
95
+ ]
96
+ },
97
+ /**
98
+ * Whether `FileTracer` should write completed traces to disk. Off by default. When on,
99
+ * one file per trace is written to `directory` using `filename-pattern`.
100
+ */
101
+ {
102
+ parameterName: telemetry_module_keyname_1.TelemetryModuleKeyname + ".file-tracer.activated",
103
+ defaultValue: false,
104
+ isRequired: false,
105
+ defaultResolvers: [
106
+ new configuration_1.BooleanResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_TELEMETRY_FILE_TRACER_ACTIVATED")),
107
+ ]
108
+ },
109
+ /**
110
+ * Output format for `FileTracer`. Reuses the same enum as `ConsoleTracer` — `json`
111
+ * is the practical default for files since it's machine-readable.
112
+ */
113
+ {
114
+ parameterName: telemetry_module_keyname_1.TelemetryModuleKeyname + ".file-tracer.output-mode",
115
+ defaultValue: console_tracer_output_mode_enum_1.ConsoleTracerOutputModeEnum.Json,
116
+ isRequired: false,
117
+ defaultResolvers: [
118
+ new configuration_1.EnumResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_TELEMETRY_FILE_TRACER_OUTPUT_MODE"), console_tracer_output_mode_enum_1.ConsoleTracerOutputModeEnum),
119
+ ]
120
+ },
121
+ /**
122
+ * Directory where `FileTracer` writes trace files. Resolved relative to `process.cwd()`
123
+ * if not absolute. The directory is created on demand if it doesn't exist.
124
+ */
125
+ {
126
+ parameterName: telemetry_module_keyname_1.TelemetryModuleKeyname + ".file-tracer.directory",
127
+ defaultValue: "./traces",
128
+ isRequired: false,
129
+ defaultResolvers: [
130
+ new configuration_1.EnvironmentVariableResolver("PRISTINE_TELEMETRY_FILE_TRACER_DIRECTORY"),
131
+ ]
132
+ },
133
+ /**
134
+ * Filename pattern for `FileTracer`. Supports the placeholders:
135
+ * - `<traceId>` — the trace's UUID (also used as the eventId throughout Pristine)
136
+ * - `<date>` — UTC date as `YYYY-MM-DD`
137
+ * - `<timestamp>` — milliseconds since epoch at the moment the trace ended
138
+ * Default: `<traceId>.json` (or `.txt` if you change the output mode away from json).
139
+ */
140
+ {
141
+ parameterName: telemetry_module_keyname_1.TelemetryModuleKeyname + ".file-tracer.filename-pattern",
142
+ defaultValue: "<traceId>.json",
143
+ isRequired: false,
144
+ defaultResolvers: [
145
+ new configuration_1.EnvironmentVariableResolver("PRISTINE_TELEMETRY_FILE_TRACER_FILENAME_PATTERN"),
146
+ ]
57
147
  }
58
148
  ]
59
149
  };
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.module.js","sourceRoot":"","sources":["../../../src/telemetry.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAAkE;AAClE,yEAAkE;AAClE,kDAAmD;AACnD,8DAAwF;AAExF,gDAA8B;AAC9B,0DAAwC;AACxC,sDAAoC;AACpC,kDAAgC;AAChC,oDAAkC;AAErB,QAAA,eAAe,GAAoB;IAC9C,OAAO,EAAE,iDAAsB;IAC/B,aAAa,EAAE;QACb,qBAAY;QACZ,uBAAa;KACd;IACD,qBAAqB,EAAE,EAAE;IACzB,wBAAwB,EAAE;QACxB;;WAEG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,SAAS;YACjD,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,+BAAe,CAAC,IAAI,2CAA2B,CAAC,4BAA4B,CAAC,CAAC;aACnF;SACF;QACD;;;WAGG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,QAAQ;YAChD,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,+BAAe,CAAC,IAAI,2CAA2B,CAAC,wBAAwB,CAAC,CAAC;aAC/E;SACF;KACF;CACF,CAAA"}
1
+ {"version":3,"file":"telemetry.module.js","sourceRoot":"","sources":["../../../src/telemetry.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAAkE;AAClE,yEAAkE;AAClE,kDAAmD;AACnD,8DAAsH;AACtH,6FAAoF;AAEpF,gDAA8B;AAC9B,0DAAwC;AACxC,sDAAoC;AACpC,kDAAgC;AAChC,oDAAkC;AAClC,gDAA8B;AAE9B,iEAA+C;AAClC,QAAA,eAAe,GAAoB;IAC9C,OAAO,EAAE,iDAAsB;IAC/B,aAAa,EAAE;QACb,qBAAY;QACZ,uBAAa;KACd;IACD,qBAAqB,EAAE,EAAE;IACzB,wBAAwB,EAAE;QACxB;;WAEG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,SAAS;YACjD,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,+BAAe,CAAC,IAAI,2CAA2B,CAAC,4BAA4B,CAAC,CAAC;aACnF;SACF;QACD;;;WAGG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,QAAQ;YAChD,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,+BAAe,CAAC,IAAI,2CAA2B,CAAC,wBAAwB,CAAC,CAAC;aAC/E;SACF;QACD;;;;WAIG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,2BAA2B;YACnE,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,+BAAe,CAAC,IAAI,2CAA2B,CAAC,6CAA6C,CAAC,CAAC;aACpG;SACF;QACD;;WAEG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,6BAA6B;YACrE,YAAY,EAAE,6DAA2B,CAAC,IAAI;YAC9C,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,4BAAY,CAAC,IAAI,2CAA2B,CAAC,+CAA+C,CAAC,EAAE,6DAA2B,CAAC;aAChI;SACF;QACD;;;WAGG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,qCAAqC;YAC7E,YAAY,EAAE,CAAC;YACf,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,8BAAc,CAAC,IAAI,2CAA2B,CAAC,uDAAuD,CAAC,CAAC;aAC7G;SACF;QACD;;;WAGG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,wBAAwB;YAChE,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,+BAAe,CAAC,IAAI,2CAA2B,CAAC,0CAA0C,CAAC,CAAC;aACjG;SACF;QACD;;;WAGG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,0BAA0B;YAClE,YAAY,EAAE,6DAA2B,CAAC,IAAI;YAC9C,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,4BAAY,CAAC,IAAI,2CAA2B,CAAC,4CAA4C,CAAC,EAAE,6DAA2B,CAAC;aAC7H;SACF;QACD;;;WAGG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,wBAAwB;YAChE,YAAY,EAAE,UAAU;YACxB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,2CAA2B,CAAC,0CAA0C,CAAC;aAC5E;SACF;QACD;;;;;;WAMG;QACH;YACE,aAAa,EAAE,iDAAsB,GAAG,+BAA+B;YACvE,YAAY,EAAE,gBAAgB;YAC9B,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBAChB,IAAI,2CAA2B,CAAC,iDAAiD,CAAC;aACnF;SACF;KACF;CACF,CAAA"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ConsoleTracer = void 0;
16
+ const tsyringe_1 = require("tsyringe");
17
+ const stream_1 = require("stream");
18
+ const common_1 = require("@pristine-ts/common");
19
+ const console_tracer_output_mode_enum_1 = require("../enums/console-tracer-output-mode.enum");
20
+ const telemetry_configuration_keys_1 = require("../telemetry.configuration-keys");
21
+ const telemetry_module_keyname_1 = require("../telemetry.module.keyname");
22
+ const trace_renderer_1 = require("../utils/trace-renderer");
23
+ /**
24
+ * `ConsoleTracer` prints a completed trace to stdout when the trace ends. Its main purpose
25
+ * is **developer-readable feedback during local development**: see what spans ran, in what
26
+ * order, and which one was the bottleneck — without wiring up an external tracing backend.
27
+ *
28
+ * Off by default. Enable via `pristine.telemetry.console-tracer.activated = true` (or
29
+ * `PRISTINE_TELEMETRY_CONSOLE_TRACER_ACTIVATED=true`). Three output modes:
30
+ * - `tree` (default): indented ASCII tree, durations right-aligned, slowest leaf flagged.
31
+ * - `json`: pretty-printed JSON dump.
32
+ * - `flat`: one line per span, no indentation, start-time-sorted.
33
+ *
34
+ * Crash-isolated: a throw inside the formatting code becomes a stderr line, never an
35
+ * unhandled error or process crash.
36
+ */
37
+ let ConsoleTracer = class ConsoleTracer {
38
+ constructor(activated, outputMode, minimumDurationMs, logHandler) {
39
+ this.activated = activated;
40
+ this.outputMode = outputMode;
41
+ this.minimumDurationMs = minimumDurationMs;
42
+ this.logHandler = logHandler;
43
+ this.traceEndedStream = new stream_1.Readable({
44
+ objectMode: true,
45
+ read(_size) { return true; },
46
+ });
47
+ this.traceEndedStream.on("data", (trace) => {
48
+ try {
49
+ this.handleTraceEnded(trace);
50
+ }
51
+ catch (error) {
52
+ this.reportFailure(error);
53
+ }
54
+ });
55
+ this.traceEndedStream.on("error", (error) => {
56
+ this.reportFailure(error);
57
+ });
58
+ }
59
+ handleTraceEnded(trace) {
60
+ if (this.activated === false) {
61
+ return;
62
+ }
63
+ if (trace.getDuration() < this.minimumDurationMs) {
64
+ return;
65
+ }
66
+ let output;
67
+ switch (this.outputMode) {
68
+ case console_tracer_output_mode_enum_1.ConsoleTracerOutputModeEnum.Json:
69
+ output = trace_renderer_1.traceRenderer.renderJson(trace);
70
+ break;
71
+ case console_tracer_output_mode_enum_1.ConsoleTracerOutputModeEnum.Flat:
72
+ output = trace_renderer_1.traceRenderer.renderFlat(trace);
73
+ break;
74
+ case console_tracer_output_mode_enum_1.ConsoleTracerOutputModeEnum.Tree:
75
+ default:
76
+ output = trace_renderer_1.traceRenderer.renderTree(trace);
77
+ break;
78
+ }
79
+ // Write directly to stdout. Going through the LogHandler would (a) tag every trace
80
+ // line with severity headers the reader doesn't want, and (b) require the user's log
81
+ // level to be Debug to see anything — defeating the point of opting in.
82
+ process.stdout.write(output + "\n");
83
+ }
84
+ reportFailure(error) {
85
+ const message = error instanceof Error ? `${error.name}: ${error.message}` : String(error);
86
+ try {
87
+ process.stderr.write(`[pristine][tracer:ConsoleTracer] ${message}\n`);
88
+ }
89
+ catch (_a) {
90
+ // If stderr is unwritable too, there's nothing useful left to do.
91
+ }
92
+ }
93
+ };
94
+ exports.ConsoleTracer = ConsoleTracer;
95
+ exports.ConsoleTracer = ConsoleTracer = __decorate([
96
+ (0, common_1.moduleScoped)(telemetry_module_keyname_1.TelemetryModuleKeyname),
97
+ (0, tsyringe_1.singleton)(),
98
+ (0, common_1.tag)(common_1.ServiceDefinitionTagEnum.Tracer),
99
+ (0, tsyringe_1.injectable)(),
100
+ __param(0, (0, common_1.injectConfig)(telemetry_configuration_keys_1.TelemetryConfigurationKeys.ConsoleTracerActivated)),
101
+ __param(1, (0, common_1.injectConfig)(telemetry_configuration_keys_1.TelemetryConfigurationKeys.ConsoleTracerOutputMode)),
102
+ __param(2, (0, common_1.injectConfig)(telemetry_configuration_keys_1.TelemetryConfigurationKeys.ConsoleTracerMinimumDurationMs)),
103
+ __param(3, (0, tsyringe_1.inject)("LogHandlerInterface")),
104
+ __metadata("design:paramtypes", [Boolean, String, Number, Object])
105
+ ], ConsoleTracer);
106
+ //# sourceMappingURL=console.tracer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.tracer.js","sourceRoot":"","sources":["../../../../src/tracers/console.tracer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.FileTracer = void 0;
49
+ const fs = __importStar(require("fs"));
50
+ const path = __importStar(require("path"));
51
+ const stream_1 = require("stream");
52
+ const tsyringe_1 = require("tsyringe");
53
+ const common_1 = require("@pristine-ts/common");
54
+ const console_tracer_output_mode_enum_1 = require("../enums/console-tracer-output-mode.enum");
55
+ const telemetry_configuration_keys_1 = require("../telemetry.configuration-keys");
56
+ const telemetry_module_keyname_1 = require("../telemetry.module.keyname");
57
+ const trace_renderer_1 = require("../utils/trace-renderer");
58
+ /**
59
+ * `FileTracer` writes one file per completed trace to a configured directory. Files are
60
+ * named after the trace's id (= eventId throughout Pristine), so locating a request's
61
+ * trace is `cat traces/<eventId>.json`.
62
+ *
63
+ * Off by default. Enable via `pristine.telemetry.file-tracer.activated = true`.
64
+ *
65
+ * Configuration:
66
+ * - `file-tracer.directory` — defaults to `./traces`
67
+ * - `file-tracer.filename-pattern` — defaults to `<traceId>.json`. Placeholders:
68
+ * `<traceId>`, `<date>` (UTC YYYY-MM-DD), `<timestamp>` (ms epoch).
69
+ * - `file-tracer.output-mode` — `json` (default), `tree`, or `flat`.
70
+ *
71
+ * Crash-isolated: a write failure (read-only fs, missing permissions, etc.) becomes a
72
+ * stderr line, never an unhandled error. The framework continues and the next trace is
73
+ * attempted independently.
74
+ */
75
+ let FileTracer = class FileTracer {
76
+ constructor(activated, outputMode, directory, filenamePattern, logHandler) {
77
+ this.activated = activated;
78
+ this.outputMode = outputMode;
79
+ this.directory = directory;
80
+ this.filenamePattern = filenamePattern;
81
+ this.logHandler = logHandler;
82
+ this.traceEndedStream = new stream_1.Readable({
83
+ objectMode: true,
84
+ read(_size) { return true; },
85
+ });
86
+ this.traceEndedStream.on("data", (trace) => {
87
+ try {
88
+ this.handleTraceEnded(trace);
89
+ }
90
+ catch (error) {
91
+ this.reportFailure(error);
92
+ }
93
+ });
94
+ this.traceEndedStream.on("error", (error) => {
95
+ this.reportFailure(error);
96
+ });
97
+ }
98
+ handleTraceEnded(trace) {
99
+ if (this.activated === false) {
100
+ return;
101
+ }
102
+ const content = this.renderTrace(trace);
103
+ const filename = this.expandFilenamePattern(trace);
104
+ const absoluteDir = path.resolve(process.cwd(), this.directory);
105
+ const absoluteFile = path.join(absoluteDir, filename);
106
+ // Make sure the file's parent directory exists. We mkdir on the file's parent rather
107
+ // than just `absoluteDir` because filename-pattern can introduce subdirectories
108
+ // (e.g. `<date>/<traceId>.json` partitions traces into per-day folders). `recursive:
109
+ // true` is a no-op if the path already exists.
110
+ fs.mkdirSync(path.dirname(absoluteFile), { recursive: true });
111
+ // Write the file. We use `writeFileSync` rather than the async equivalent because the
112
+ // tracer pipeline is synchronous (the framework `.push()`es into the stream and moves
113
+ // on), and a write that returns a Promise would silently leak rejections. The write
114
+ // is small (one trace's worth of JSON, typically <50KB), so the sync cost is bounded.
115
+ fs.writeFileSync(absoluteFile, content);
116
+ }
117
+ renderTrace(trace) {
118
+ switch (this.outputMode) {
119
+ case console_tracer_output_mode_enum_1.ConsoleTracerOutputModeEnum.Tree:
120
+ return trace_renderer_1.traceRenderer.renderTree(trace);
121
+ case console_tracer_output_mode_enum_1.ConsoleTracerOutputModeEnum.Flat:
122
+ return trace_renderer_1.traceRenderer.renderFlat(trace);
123
+ case console_tracer_output_mode_enum_1.ConsoleTracerOutputModeEnum.Json:
124
+ default:
125
+ return trace_renderer_1.traceRenderer.renderJson(trace);
126
+ }
127
+ }
128
+ expandFilenamePattern(trace) {
129
+ var _a, _b;
130
+ const date = new Date((_a = trace.endDate) !== null && _a !== void 0 ? _a : Date.now());
131
+ const isoDate = date.toISOString().slice(0, 10); // YYYY-MM-DD
132
+ const timestamp = String((_b = trace.endDate) !== null && _b !== void 0 ? _b : Date.now());
133
+ return this.filenamePattern
134
+ .replace(/<traceId>/g, trace.id)
135
+ .replace(/<date>/g, isoDate)
136
+ .replace(/<timestamp>/g, timestamp);
137
+ }
138
+ reportFailure(error) {
139
+ const message = error instanceof Error ? `${error.name}: ${error.message}` : String(error);
140
+ try {
141
+ process.stderr.write(`[pristine][tracer:FileTracer] ${message}\n`);
142
+ }
143
+ catch (_a) {
144
+ // If stderr is unwritable too, there's nothing useful left to do.
145
+ }
146
+ }
147
+ };
148
+ exports.FileTracer = FileTracer;
149
+ exports.FileTracer = FileTracer = __decorate([
150
+ (0, common_1.moduleScoped)(telemetry_module_keyname_1.TelemetryModuleKeyname),
151
+ (0, tsyringe_1.singleton)(),
152
+ (0, common_1.tag)(common_1.ServiceDefinitionTagEnum.Tracer),
153
+ (0, tsyringe_1.injectable)(),
154
+ __param(0, (0, common_1.injectConfig)(telemetry_configuration_keys_1.TelemetryConfigurationKeys.FileTracerActivated)),
155
+ __param(1, (0, common_1.injectConfig)(telemetry_configuration_keys_1.TelemetryConfigurationKeys.FileTracerOutputMode)),
156
+ __param(2, (0, common_1.injectConfig)(telemetry_configuration_keys_1.TelemetryConfigurationKeys.FileTracerDirectory)),
157
+ __param(3, (0, common_1.injectConfig)(telemetry_configuration_keys_1.TelemetryConfigurationKeys.FileTracerFilenamePattern)),
158
+ __param(4, (0, tsyringe_1.inject)("LogHandlerInterface")),
159
+ __metadata("design:paramtypes", [Boolean, String, String, String, Object])
160
+ ], FileTracer);
161
+ //# sourceMappingURL=file.tracer.js.map