@zudojs/observability 0.0.1

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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/exporter/exporter.console.d.ts +34 -0
  4. package/dist/exporter/exporter.console.d.ts.map +1 -0
  5. package/dist/exporter/exporter.console.js +94 -0
  6. package/dist/exporter/exporter.console.js.map +1 -0
  7. package/dist/exporter/index.d.ts +7 -0
  8. package/dist/exporter/index.d.ts.map +1 -0
  9. package/dist/exporter/index.js +7 -0
  10. package/dist/exporter/index.js.map +1 -0
  11. package/dist/index.d.ts +42 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +55 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/logLevel/index.d.ts +7 -0
  16. package/dist/logLevel/index.d.ts.map +1 -0
  17. package/dist/logLevel/index.js +7 -0
  18. package/dist/logLevel/index.js.map +1 -0
  19. package/dist/logLevel/logLevel.type.d.ts +16 -0
  20. package/dist/logLevel/logLevel.type.d.ts.map +1 -0
  21. package/dist/logLevel/logLevel.type.js +42 -0
  22. package/dist/logLevel/logLevel.type.js.map +1 -0
  23. package/dist/logRecord/index.d.ts +7 -0
  24. package/dist/logRecord/index.d.ts.map +1 -0
  25. package/dist/logRecord/index.js +7 -0
  26. package/dist/logRecord/index.js.map +1 -0
  27. package/dist/logRecord/logRecord.core.d.ts +18 -0
  28. package/dist/logRecord/logRecord.core.d.ts.map +1 -0
  29. package/dist/logRecord/logRecord.core.js +49 -0
  30. package/dist/logRecord/logRecord.core.js.map +1 -0
  31. package/dist/logger/index.d.ts +7 -0
  32. package/dist/logger/index.d.ts.map +1 -0
  33. package/dist/logger/index.js +7 -0
  34. package/dist/logger/index.js.map +1 -0
  35. package/dist/logger/logger.core.d.ts +32 -0
  36. package/dist/logger/logger.core.d.ts.map +1 -0
  37. package/dist/logger/logger.core.js +81 -0
  38. package/dist/logger/logger.core.js.map +1 -0
  39. package/dist/metrics/counter/counter.core.d.ts +22 -0
  40. package/dist/metrics/counter/counter.core.d.ts.map +1 -0
  41. package/dist/metrics/counter/counter.core.js +34 -0
  42. package/dist/metrics/counter/counter.core.js.map +1 -0
  43. package/dist/metrics/counter/index.d.ts +7 -0
  44. package/dist/metrics/counter/index.d.ts.map +1 -0
  45. package/dist/metrics/counter/index.js +7 -0
  46. package/dist/metrics/counter/index.js.map +1 -0
  47. package/dist/metrics/gauge/gauge.core.d.ts +23 -0
  48. package/dist/metrics/gauge/gauge.core.d.ts.map +1 -0
  49. package/dist/metrics/gauge/gauge.core.js +37 -0
  50. package/dist/metrics/gauge/gauge.core.js.map +1 -0
  51. package/dist/metrics/gauge/index.d.ts +7 -0
  52. package/dist/metrics/gauge/index.d.ts.map +1 -0
  53. package/dist/metrics/gauge/index.js +7 -0
  54. package/dist/metrics/gauge/index.js.map +1 -0
  55. package/dist/metrics/histogram/histogram.core.d.ts +30 -0
  56. package/dist/metrics/histogram/histogram.core.d.ts.map +1 -0
  57. package/dist/metrics/histogram/histogram.core.js +48 -0
  58. package/dist/metrics/histogram/histogram.core.js.map +1 -0
  59. package/dist/metrics/histogram/index.d.ts +7 -0
  60. package/dist/metrics/histogram/index.d.ts.map +1 -0
  61. package/dist/metrics/histogram/index.js +7 -0
  62. package/dist/metrics/histogram/index.js.map +1 -0
  63. package/dist/metrics/index.d.ts +10 -0
  64. package/dist/metrics/index.d.ts.map +1 -0
  65. package/dist/metrics/index.js +10 -0
  66. package/dist/metrics/index.js.map +1 -0
  67. package/dist/metrics/metrics.registry.d.ts +23 -0
  68. package/dist/metrics/metrics.registry.d.ts.map +1 -0
  69. package/dist/metrics/metrics.registry.js +93 -0
  70. package/dist/metrics/metrics.registry.js.map +1 -0
  71. package/dist/noop/index.d.ts +7 -0
  72. package/dist/noop/index.d.ts.map +1 -0
  73. package/dist/noop/index.js +7 -0
  74. package/dist/noop/index.js.map +1 -0
  75. package/dist/noop/noopObservability.core.d.ts +31 -0
  76. package/dist/noop/noopObservability.core.d.ts.map +1 -0
  77. package/dist/noop/noopObservability.core.js +103 -0
  78. package/dist/noop/noopObservability.core.js.map +1 -0
  79. package/dist/observability/index.d.ts +7 -0
  80. package/dist/observability/index.d.ts.map +1 -0
  81. package/dist/observability/index.js +7 -0
  82. package/dist/observability/index.js.map +1 -0
  83. package/dist/observability/observability.core.d.ts +28 -0
  84. package/dist/observability/observability.core.d.ts.map +1 -0
  85. package/dist/observability/observability.core.js +90 -0
  86. package/dist/observability/observability.core.js.map +1 -0
  87. package/dist/processor/index.d.ts +7 -0
  88. package/dist/processor/index.d.ts.map +1 -0
  89. package/dist/processor/index.js +7 -0
  90. package/dist/processor/index.js.map +1 -0
  91. package/dist/processor/processor.batch.d.ts +35 -0
  92. package/dist/processor/processor.batch.d.ts.map +1 -0
  93. package/dist/processor/processor.batch.js +77 -0
  94. package/dist/processor/processor.batch.js.map +1 -0
  95. package/dist/propagation/index.d.ts +7 -0
  96. package/dist/propagation/index.d.ts.map +1 -0
  97. package/dist/propagation/index.js +7 -0
  98. package/dist/propagation/index.js.map +1 -0
  99. package/dist/propagation/propagation.core.d.ts +24 -0
  100. package/dist/propagation/propagation.core.d.ts.map +1 -0
  101. package/dist/propagation/propagation.core.js +73 -0
  102. package/dist/propagation/propagation.core.js.map +1 -0
  103. package/dist/redaction/index.d.ts +7 -0
  104. package/dist/redaction/index.d.ts.map +1 -0
  105. package/dist/redaction/index.js +7 -0
  106. package/dist/redaction/index.js.map +1 -0
  107. package/dist/redaction/redaction.core.d.ts +19 -0
  108. package/dist/redaction/redaction.core.d.ts.map +1 -0
  109. package/dist/redaction/redaction.core.js +67 -0
  110. package/dist/redaction/redaction.core.js.map +1 -0
  111. package/dist/sampling/index.d.ts +7 -0
  112. package/dist/sampling/index.d.ts.map +1 -0
  113. package/dist/sampling/index.js +7 -0
  114. package/dist/sampling/index.js.map +1 -0
  115. package/dist/sampling/sampler.type.d.ts +35 -0
  116. package/dist/sampling/sampler.type.d.ts.map +1 -0
  117. package/dist/sampling/sampler.type.js +68 -0
  118. package/dist/sampling/sampler.type.js.map +1 -0
  119. package/dist/tracing/index.d.ts +8 -0
  120. package/dist/tracing/index.d.ts.map +1 -0
  121. package/dist/tracing/index.js +8 -0
  122. package/dist/tracing/index.js.map +1 -0
  123. package/dist/tracing/span/index.d.ts +8 -0
  124. package/dist/tracing/span/index.d.ts.map +1 -0
  125. package/dist/tracing/span/index.js +8 -0
  126. package/dist/tracing/span/index.js.map +1 -0
  127. package/dist/tracing/span/span.core.d.ts +42 -0
  128. package/dist/tracing/span/span.core.d.ts.map +1 -0
  129. package/dist/tracing/span/span.core.js +105 -0
  130. package/dist/tracing/span/span.core.js.map +1 -0
  131. package/dist/tracing/span/spanContext.type.d.ts +16 -0
  132. package/dist/tracing/span/spanContext.type.d.ts.map +1 -0
  133. package/dist/tracing/span/spanContext.type.js +32 -0
  134. package/dist/tracing/span/spanContext.type.js.map +1 -0
  135. package/dist/tracing/tracer/index.d.ts +7 -0
  136. package/dist/tracing/tracer/index.d.ts.map +1 -0
  137. package/dist/tracing/tracer/index.js +7 -0
  138. package/dist/tracing/tracer/index.js.map +1 -0
  139. package/dist/tracing/tracer/tracer.core.d.ts +31 -0
  140. package/dist/tracing/tracer/tracer.core.d.ts.map +1 -0
  141. package/dist/tracing/tracer/tracer.core.js +62 -0
  142. package/dist/tracing/tracer/tracer.core.js.map +1 -0
  143. package/dist/types.d.ts +10 -0
  144. package/dist/types.d.ts.map +1 -0
  145. package/dist/types.js +10 -0
  146. package/dist/types.js.map +1 -0
  147. package/package.json +52 -0
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @zudojs/observability — Redaction
3
+ *
4
+ * Redacts sensitive fields from log contexts and trace attributes.
5
+ * Never automatically dumps passwords, tokens, cookies, or auth headers.
6
+ */
7
+ /** Default sensitive field names. */
8
+ const DEFAULT_SENSITIVE_FIELDS = [
9
+ "password",
10
+ "secret",
11
+ "token",
12
+ "authorization",
13
+ "cookie",
14
+ "access_token",
15
+ "refresh_token",
16
+ "api_key",
17
+ "apiKey",
18
+ "accessToken",
19
+ "refreshToken",
20
+ "credit_card",
21
+ "creditCard",
22
+ "ssn",
23
+ "social_security",
24
+ ];
25
+ const DEFAULT_REPLACEMENT = "[REDACTED]";
26
+ /**
27
+ * Creates a redactor that replaces sensitive values in objects.
28
+ */
29
+ export function createRedactor(config) {
30
+ const fields = new Set((config?.fields ?? DEFAULT_SENSITIVE_FIELDS).map((f) => f.toLowerCase()));
31
+ const replacement = config?.replacement ?? DEFAULT_REPLACEMENT;
32
+ const customRedactor = config?.customRedactor;
33
+ return (key, value) => {
34
+ if (customRedactor) {
35
+ const result = customRedactor(key, value);
36
+ if (result !== value)
37
+ return result;
38
+ }
39
+ if (fields.has(key.toLowerCase())) {
40
+ return replacement;
41
+ }
42
+ return value;
43
+ };
44
+ }
45
+ /**
46
+ * Redacts sensitive fields from a plain object.
47
+ * Returns a new object with sensitive values replaced.
48
+ */
49
+ export function redactObject(obj, config) {
50
+ const redactor = createRedactor(config);
51
+ const result = {};
52
+ for (const [key, value] of Object.entries(obj)) {
53
+ if (value && typeof value === "object" && !Array.isArray(value)) {
54
+ result[key] = redactObject(value, config);
55
+ }
56
+ else {
57
+ result[key] = redactor(key, value);
58
+ }
59
+ }
60
+ return result;
61
+ }
62
+ /** Checks if a field name is sensitive. */
63
+ export function isSensitiveField(fieldName, config) {
64
+ const fields = (config?.fields ?? DEFAULT_SENSITIVE_FIELDS).map((f) => f.toLowerCase());
65
+ return fields.includes(fieldName.toLowerCase());
66
+ }
67
+ //# sourceMappingURL=redaction.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.core.js","sourceRoot":"","sources":["../../src/redaction/redaction.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,qCAAqC;AACrC,MAAM,wBAAwB,GAAG;IAC/B,UAAU;IACV,QAAQ;IACR,OAAO;IACP,eAAe;IACf,QAAQ;IACR,cAAc;IACd,eAAe;IACf,SAAS;IACT,QAAQ;IACR,aAAa;IACb,cAAc;IACd,aAAa;IACb,YAAY;IACZ,KAAK;IACL,iBAAiB;CAClB,CAAC;AAEF,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAwB;IAExB,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,CAAC,MAAM,EAAE,MAAM,IAAI,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CACzE,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,mBAAmB,CAAC;IAC/D,MAAM,cAAc,GAAG,MAAM,EAAE,cAAc,CAAC;IAE9C,OAAO,CAAC,GAAW,EAAE,KAAc,EAAW,EAAE;QAC9C,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,MAAM,KAAK,KAAK;gBAAE,OAAO,MAAM,CAAC;QACtC,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAClC,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAM,EACN,MAAwB;IAExB,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAgC,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,MAAW,CAAC;AACrB,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,MAAwB;IAExB,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACpE,CAAC,CAAC,WAAW,EAAE,CAChB,CAAC;IACF,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/observability — Sampling
3
+ *
4
+ * Sampling strategies: AlwaysOn, AlwaysOff, Probability, ParentBased.
5
+ */
6
+ export { AlwaysOnSampler, AlwaysOffSampler, ProbabilitySampler, ParentBasedSampler, createAlwaysOnSampler, createAlwaysOffSampler, createProbabilitySampler, createParentBasedSampler, } from "./sampler.type.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sampling/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/observability — Sampling
3
+ *
4
+ * Sampling strategies: AlwaysOn, AlwaysOff, Probability, ParentBased.
5
+ */
6
+ export { AlwaysOnSampler, AlwaysOffSampler, ProbabilitySampler, ParentBasedSampler, createAlwaysOnSampler, createAlwaysOffSampler, createProbabilitySampler, createParentBasedSampler, } from "./sampler.type.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sampling/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @zudojs/observability — Sampling
3
+ *
4
+ * Sampling strategies for controlling trace overhead.
5
+ */
6
+ import type { SamplingResult, Sampler, SpanContext } from "../types.js";
7
+ /** Always records and samples. */
8
+ export declare class AlwaysOnSampler implements Sampler {
9
+ shouldSample(): SamplingResult;
10
+ }
11
+ /** Never records or samples. */
12
+ export declare class AlwaysOffSampler implements Sampler {
13
+ shouldSample(): SamplingResult;
14
+ }
15
+ /** Samples a percentage of traces. */
16
+ export declare class ProbabilitySampler implements Sampler {
17
+ private readonly probability;
18
+ constructor(probability: number);
19
+ shouldSample(_parentContext?: SpanContext, traceId?: string): SamplingResult;
20
+ }
21
+ /** Delegates to parent context's sampling decision, falls back to a root sampler. */
22
+ export declare class ParentBasedSampler implements Sampler {
23
+ private readonly rootSampler;
24
+ constructor(rootSampler?: Sampler);
25
+ shouldSample(parentContext?: SpanContext, traceId?: string): SamplingResult;
26
+ }
27
+ /** Creates an always-on sampler. */
28
+ export declare function createAlwaysOnSampler(): AlwaysOnSampler;
29
+ /** Creates an always-off sampler. */
30
+ export declare function createAlwaysOffSampler(): AlwaysOffSampler;
31
+ /** Creates a probability sampler. */
32
+ export declare function createProbabilitySampler(probability: number): ProbabilitySampler;
33
+ /** Creates a parent-based sampler. */
34
+ export declare function createParentBasedSampler(rootSampler?: Sampler): ParentBasedSampler;
35
+ //# sourceMappingURL=sampler.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampler.type.d.ts","sourceRoot":"","sources":["../../src/sampling/sampler.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAExE,kCAAkC;AAClC,qBAAa,eAAgB,YAAW,OAAO;IAC7C,YAAY,IAAI,cAAc,CAE7B;CACF;AAED,gCAAgC;AAChC,qBAAa,gBAAiB,YAAW,OAAO;IAC9C,YAAY,IAAI,cAAc,CAE7B;CACF;AAED,sCAAsC;AACtC,qBAAa,kBAAmB,YAAW,OAAO;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,YAAY,WAAW,EAAE,MAAM,EAE9B;IAED,YAAY,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAO3E;CACF;AAED,qFAAqF;AACrF,qBAAa,kBAAmB,YAAW,OAAO;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IAEtC,YAAY,WAAW,CAAC,EAAE,OAAO,EAEhC;IAED,YAAY,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CAU1E;CACF;AAED,oCAAoC;AACpC,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD;AAED,qCAAqC;AACrC,wBAAgB,sBAAsB,IAAI,gBAAgB,CAEzD;AAED,qCAAqC;AACrC,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,GAClB,kBAAkB,CAEpB;AAED,sCAAsC;AACtC,wBAAgB,wBAAwB,CACtC,WAAW,CAAC,EAAE,OAAO,GACpB,kBAAkB,CAEpB"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @zudojs/observability — Sampling
3
+ *
4
+ * Sampling strategies for controlling trace overhead.
5
+ */
6
+ /** Always records and samples. */
7
+ export class AlwaysOnSampler {
8
+ shouldSample() {
9
+ return { decision: "RECORD_AND_SAMPLE" };
10
+ }
11
+ }
12
+ /** Never records or samples. */
13
+ export class AlwaysOffSampler {
14
+ shouldSample() {
15
+ return { decision: "DO_NOT_RECORD" };
16
+ }
17
+ }
18
+ /** Samples a percentage of traces. */
19
+ export class ProbabilitySampler {
20
+ probability;
21
+ constructor(probability) {
22
+ this.probability = Math.max(0, Math.min(1, probability));
23
+ }
24
+ shouldSample(_parentContext, traceId) {
25
+ if (!traceId)
26
+ return { decision: "RECORD_AND_SAMPLE" };
27
+ // Use the first 8 hex chars as a number for deterministic sampling
28
+ const sample = parseInt(traceId.slice(0, 8), 16) / 0xffffffff;
29
+ return sample < this.probability
30
+ ? { decision: "RECORD_AND_SAMPLE" }
31
+ : { decision: "DO_NOT_RECORD" };
32
+ }
33
+ }
34
+ /** Delegates to parent context's sampling decision, falls back to a root sampler. */
35
+ export class ParentBasedSampler {
36
+ rootSampler;
37
+ constructor(rootSampler) {
38
+ this.rootSampler = rootSampler ?? new AlwaysOnSampler();
39
+ }
40
+ shouldSample(parentContext, traceId) {
41
+ if (!parentContext) {
42
+ return this.rootSampler.shouldSample(parentContext, traceId);
43
+ }
44
+ // If parent is sampled, sample the child too
45
+ const flags = parentContext.traceFlags ?? 0;
46
+ if ((flags & 1) === 1) {
47
+ return { decision: "RECORD_AND_SAMPLE" };
48
+ }
49
+ return { decision: "DO_NOT_RECORD" };
50
+ }
51
+ }
52
+ /** Creates an always-on sampler. */
53
+ export function createAlwaysOnSampler() {
54
+ return new AlwaysOnSampler();
55
+ }
56
+ /** Creates an always-off sampler. */
57
+ export function createAlwaysOffSampler() {
58
+ return new AlwaysOffSampler();
59
+ }
60
+ /** Creates a probability sampler. */
61
+ export function createProbabilitySampler(probability) {
62
+ return new ProbabilitySampler(probability);
63
+ }
64
+ /** Creates a parent-based sampler. */
65
+ export function createParentBasedSampler(rootSampler) {
66
+ return new ParentBasedSampler(rootSampler);
67
+ }
68
+ //# sourceMappingURL=sampler.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampler.type.js","sourceRoot":"","sources":["../../src/sampling/sampler.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,kCAAkC;AAClC,MAAM,OAAO,eAAe;IAC1B,YAAY;QACV,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAC3C,CAAC;CACF;AAED,gCAAgC;AAChC,MAAM,OAAO,gBAAgB;IAC3B,YAAY;QACV,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IACvC,CAAC;CACF;AAED,sCAAsC;AACtC,MAAM,OAAO,kBAAkB;IACZ,WAAW,CAAS;IAErC,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,YAAY,CAAC,cAA4B,EAAE,OAAgB;QACzD,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;QACvD,mEAAmE;QACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC;QAC9D,OAAO,MAAM,GAAG,IAAI,CAAC,WAAW;YAC9B,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE;YACnC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IACpC,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,OAAO,kBAAkB;IACZ,WAAW,CAAU;IAEtC,YAAY,WAAqB;QAC/B,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,eAAe,EAAE,CAAC;IAC1D,CAAC;IAED,YAAY,CAAC,aAA2B,EAAE,OAAgB;QACxD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC;QACD,6CAA6C;QAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;IACvC,CAAC;CACF;AAED,oCAAoC;AACpC,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,gBAAgB,EAAE,CAAC;AAChC,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,wBAAwB,CACtC,WAAmB;IAEnB,OAAO,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,wBAAwB,CACtC,WAAqB;IAErB,OAAO,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @zudojs/observability — Tracing
3
+ *
4
+ * Distributed tracing with spans, context, and exporters.
5
+ */
6
+ export { DefaultSpan, createSpan, createSpanContext, createChildSpanContext, } from "./span/index.js";
7
+ export { DefaultTracer, createTracer } from "./tracer/index.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tracing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @zudojs/observability — Tracing
3
+ *
4
+ * Distributed tracing with spans, context, and exporters.
5
+ */
6
+ export { DefaultSpan, createSpan, createSpanContext, createChildSpanContext, } from "./span/index.js";
7
+ export { DefaultTracer, createTracer } from "./tracer/index.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tracing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @zudojs/observability — Span
3
+ *
4
+ * Span implementation and context creation.
5
+ */
6
+ export { DefaultSpan, createSpan } from "./span.core.js";
7
+ export { createSpanContext, createChildSpanContext, } from "./spanContext.type.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tracing/span/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @zudojs/observability — Span
3
+ *
4
+ * Span implementation and context creation.
5
+ */
6
+ export { DefaultSpan, createSpan } from "./span.core.js";
7
+ export { createSpanContext, createChildSpanContext, } from "./spanContext.type.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tracing/span/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @zudojs/observability — Span
3
+ *
4
+ * In-memory span that records attributes, events, status, and errors.
5
+ * Exported as a ReadableSpan when ended.
6
+ */
7
+ import type { ReadableSpan, Span, SpanContext, SpanOptions } from "../../types.js";
8
+ import { SpanKind, SpanStatus } from "../../types.js";
9
+ /**
10
+ * Default span implementation.
11
+ * Records attributes, events, errors, and timing until end() is called.
12
+ */
13
+ export declare class DefaultSpan implements Span {
14
+ readonly name: string;
15
+ readonly context: SpanContext;
16
+ readonly startTime: Date;
17
+ readonly kind: SpanKind;
18
+ private attributes;
19
+ private events;
20
+ private status;
21
+ private statusMessage?;
22
+ private endTime?;
23
+ private ended;
24
+ private resource;
25
+ constructor(name: string, context: SpanContext, options?: SpanOptions & {
26
+ readonly resource?: Record<string, unknown>;
27
+ });
28
+ setAttribute(key: string, value: unknown): void;
29
+ addEvent(name: string, attributes?: Record<string, unknown>): void;
30
+ setStatus(status: SpanStatus, message?: string): void;
31
+ recordError(error: Error): void;
32
+ end(): void;
33
+ getDuration(): number;
34
+ isRecording(): boolean;
35
+ /** Exports the span as a ReadableSpan. */
36
+ toReadableSpan(): ReadableSpan;
37
+ }
38
+ /** Creates a new span. */
39
+ export declare function createSpan(name: string, options?: SpanOptions & {
40
+ readonly resource?: Record<string, unknown>;
41
+ }): DefaultSpan;
42
+ //# sourceMappingURL=span.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span.core.d.ts","sourceRoot":"","sources":["../../../src/tracing/span/span.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,IAAI,EACJ,WAAW,EAEX,WAAW,EACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMtD;;;GAGG;AACH,qBAAa,WAAY,YAAW,IAAI;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAExB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAC,CAAO;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAA0B;IAE1C,YACE,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,WAAW,GAAG;QAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAaxE;IAED,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAG9C;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAOjE;IAED,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAIpD;IAED,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAS9B;IAED,GAAG,IAAI,IAAI,CAIV;IAED,WAAW,IAAI,MAAM,CAGpB;IAED,WAAW,IAAI,OAAO,CAErB;IAED,0CAA0C;IAC1C,cAAc,IAAI,YAAY,CAa7B;CACF;AAED,0BAA0B;AAC1B,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,GAAG;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACtE,WAAW,CAKb"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @zudojs/observability — Span
3
+ *
4
+ * In-memory span that records attributes, events, status, and errors.
5
+ * Exported as a ReadableSpan when ended.
6
+ */
7
+ import { SpanKind, SpanStatus } from "../../types.js";
8
+ import { createSpanContext, createChildSpanContext, } from "./spanContext.type.js";
9
+ /**
10
+ * Default span implementation.
11
+ * Records attributes, events, errors, and timing until end() is called.
12
+ */
13
+ export class DefaultSpan {
14
+ name;
15
+ context;
16
+ startTime;
17
+ kind;
18
+ attributes = {};
19
+ events = [];
20
+ status = SpanStatus.UNSET;
21
+ statusMessage;
22
+ endTime;
23
+ ended = false;
24
+ resource;
25
+ constructor(name, context, options) {
26
+ this.name = name;
27
+ this.context = context;
28
+ this.kind = options?.kind ?? SpanKind.INTERNAL;
29
+ this.startTime = new Date();
30
+ this.resource = { ...(options?.resource ?? {}) };
31
+ if (options?.attributes) {
32
+ for (const [key, value] of Object.entries(options.attributes)) {
33
+ this.attributes[key] = value;
34
+ }
35
+ }
36
+ }
37
+ setAttribute(key, value) {
38
+ if (this.ended)
39
+ return;
40
+ this.attributes[key] = value;
41
+ }
42
+ addEvent(name, attributes) {
43
+ if (this.ended)
44
+ return;
45
+ this.events.push({
46
+ name,
47
+ timestamp: new Date(),
48
+ attributes,
49
+ });
50
+ }
51
+ setStatus(status, message) {
52
+ if (this.ended)
53
+ return;
54
+ this.status = status;
55
+ this.statusMessage = message;
56
+ }
57
+ recordError(error) {
58
+ if (this.ended)
59
+ return;
60
+ this.status = SpanStatus.ERROR;
61
+ this.statusMessage = error.message;
62
+ this.addEvent("exception", {
63
+ "exception.type": error.name,
64
+ "exception.message": error.message,
65
+ "exception.stacktrace": error.stack,
66
+ });
67
+ }
68
+ end() {
69
+ if (this.ended)
70
+ return;
71
+ this.ended = true;
72
+ this.endTime = new Date();
73
+ }
74
+ getDuration() {
75
+ if (!this.endTime)
76
+ return Date.now() - this.startTime.getTime();
77
+ return this.endTime.getTime() - this.startTime.getTime();
78
+ }
79
+ isRecording() {
80
+ return !this.ended;
81
+ }
82
+ /** Exports the span as a ReadableSpan. */
83
+ toReadableSpan() {
84
+ return {
85
+ name: this.name,
86
+ context: this.context,
87
+ kind: this.kind,
88
+ startTime: this.startTime,
89
+ endTime: this.endTime ?? new Date(),
90
+ duration: this.getDuration(),
91
+ status: this.status,
92
+ attributes: { ...this.attributes },
93
+ events: [...this.events],
94
+ resource: { ...this.resource },
95
+ };
96
+ }
97
+ }
98
+ /** Creates a new span. */
99
+ export function createSpan(name, options) {
100
+ const context = options?.parent
101
+ ? createChildSpanContext(options.parent)
102
+ : createSpanContext();
103
+ return new DefaultSpan(name, context, options);
104
+ }
105
+ //# sourceMappingURL=span.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span.core.js","sourceRoot":"","sources":["../../../src/tracing/span/span.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @zudojs/observability — Span Context
3
+ *
4
+ * Factory for creating span context identifiers.
5
+ */
6
+ import type { SpanContext } from "../../types.js";
7
+ /** Creates a new span context with random IDs. */
8
+ export declare function createSpanContext(options?: {
9
+ readonly traceId?: string;
10
+ readonly spanId?: string;
11
+ readonly parentSpanId?: string;
12
+ readonly traceFlags?: number;
13
+ }): SpanContext;
14
+ /** Creates a child span context from a parent. */
15
+ export declare function createChildSpanContext(parent: SpanContext): SpanContext;
16
+ //# sourceMappingURL=spanContext.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spanContext.type.d.ts","sourceRoot":"","sources":["../../../src/tracing/span/spanContext.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAalD,kDAAkD;AAClD,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,GAAG,WAAW,CAOd;AAED,kDAAkD;AAClD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAKvE"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @zudojs/observability — Span Context
3
+ *
4
+ * Factory for creating span context identifiers.
5
+ */
6
+ /** Generates a random hex ID. */
7
+ function generateHexId(byteLength) {
8
+ const bytes = new Uint8Array(byteLength);
9
+ for (let i = 0; i < byteLength; i++) {
10
+ bytes[i] = Math.floor(Math.random() * 256);
11
+ }
12
+ return Array.from(bytes)
13
+ .map((b) => b.toString(16).padStart(2, "0"))
14
+ .join("");
15
+ }
16
+ /** Creates a new span context with random IDs. */
17
+ export function createSpanContext(options) {
18
+ return {
19
+ traceId: options?.traceId ?? generateHexId(16),
20
+ spanId: options?.spanId ?? generateHexId(8),
21
+ parentSpanId: options?.parentSpanId,
22
+ traceFlags: options?.traceFlags,
23
+ };
24
+ }
25
+ /** Creates a child span context from a parent. */
26
+ export function createChildSpanContext(parent) {
27
+ return createSpanContext({
28
+ traceId: parent.traceId,
29
+ parentSpanId: parent.spanId,
30
+ });
31
+ }
32
+ //# sourceMappingURL=spanContext.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spanContext.type.js","sourceRoot":"","sources":["../../../src/tracing/span/spanContext.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iCAAiC;AACjC,SAAS,aAAa,CAAC,UAAkB;IACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,iBAAiB,CAAC,OAKjC;IACC,OAAO;QACL,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,aAAa,CAAC,EAAE,CAAC;QAC9C,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC;QAC3C,YAAY,EAAE,OAAO,EAAE,YAAY;QACnC,UAAU,EAAE,OAAO,EAAE,UAAU;KAChC,CAAC;AACJ,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,sBAAsB,CAAC,MAAmB;IACxD,OAAO,iBAAiB,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,YAAY,EAAE,MAAM,CAAC,MAAM;KAC5B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/observability — Tracer
3
+ *
4
+ * Span creation and processor notification.
5
+ */
6
+ export { DefaultTracer, createTracer } from "./tracer.core.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tracing/tracer/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/observability — Tracer
3
+ *
4
+ * Span creation and processor notification.
5
+ */
6
+ export { DefaultTracer, createTracer } from "./tracer.core.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tracing/tracer/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @zudojs/observability — Tracer
3
+ *
4
+ * Creates spans and notifies processors on start/end.
5
+ */
6
+ import type { ReadableSpan, Span, SpanExporter, SpanOptions, SpanProcessor, Tracer } from "../../types.js";
7
+ /**
8
+ * Default tracer that creates spans and notifies processors on start/end.
9
+ */
10
+ export declare class DefaultTracer implements Tracer {
11
+ private readonly processors;
12
+ private readonly exporter?;
13
+ private readonly resource;
14
+ constructor(options?: {
15
+ readonly processors?: readonly SpanProcessor[];
16
+ readonly exporter?: SpanExporter;
17
+ readonly resource?: Record<string, unknown>;
18
+ });
19
+ startSpan(name: string, options?: SpanOptions): Span;
20
+ /** Exports a completed span directly. */
21
+ exportSpan(span: ReadableSpan): Promise<void>;
22
+ /** Shuts down all processors and the exporter. */
23
+ shutdown(): Promise<void>;
24
+ }
25
+ /** Creates a tracer. */
26
+ export declare function createTracer(options?: {
27
+ readonly processors?: readonly SpanProcessor[];
28
+ readonly exporter?: SpanExporter;
29
+ readonly resource?: Record<string, unknown>;
30
+ }): DefaultTracer;
31
+ //# sourceMappingURL=tracer.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.core.d.ts","sourceRoot":"","sources":["../../../src/tracing/tracer/tracer.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,aAAa,EACb,MAAM,EACP,MAAM,gBAAgB,CAAC;AAGxB;;GAEG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IAEnD,YAAY,OAAO,CAAC,EAAE;QACpB,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;QAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;QACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7C,EAIA;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAwBnD;IAED,yCAAyC;IACnC,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlD;IAED,kDAAkD;IAC5C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAO9B;CACF;AAED,wBAAwB;AACxB,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,GAAG,aAAa,CAEhB"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @zudojs/observability — Tracer
3
+ *
4
+ * Creates spans and notifies processors on start/end.
5
+ */
6
+ import { DefaultSpan, createSpan } from "../span/index.js";
7
+ /**
8
+ * Default tracer that creates spans and notifies processors on start/end.
9
+ */
10
+ export class DefaultTracer {
11
+ processors;
12
+ exporter;
13
+ resource;
14
+ constructor(options) {
15
+ this.processors = [...(options?.processors ?? [])];
16
+ this.exporter = options?.exporter;
17
+ this.resource = { ...(options?.resource ?? {}) };
18
+ }
19
+ startSpan(name, options) {
20
+ const tracer = this;
21
+ const span = createSpan(name, {
22
+ ...options,
23
+ resource: this.resource,
24
+ });
25
+ for (const processor of this.processors) {
26
+ processor.onStart(span);
27
+ }
28
+ return new Proxy(span, {
29
+ get(target, prop) {
30
+ if (prop === "end") {
31
+ return () => {
32
+ target.end();
33
+ for (const processor of tracer.processors) {
34
+ processor.onEnd(target.toReadableSpan());
35
+ }
36
+ };
37
+ }
38
+ return Reflect.get(target, prop);
39
+ },
40
+ });
41
+ }
42
+ /** Exports a completed span directly. */
43
+ async exportSpan(span) {
44
+ if (this.exporter) {
45
+ await this.exporter.export([span]);
46
+ }
47
+ }
48
+ /** Shuts down all processors and the exporter. */
49
+ async shutdown() {
50
+ for (const processor of this.processors) {
51
+ await processor.shutdown();
52
+ }
53
+ if (this.exporter) {
54
+ await this.exporter.shutdown();
55
+ }
56
+ }
57
+ }
58
+ /** Creates a tracer. */
59
+ export function createTracer(options) {
60
+ return new DefaultTracer(options);
61
+ }
62
+ //# sourceMappingURL=tracer.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracer.core.js","sourceRoot":"","sources":["../../../src/tracing/tracer/tracer.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,MAAM,OAAO,aAAa;IACP,UAAU,CAAkB;IAC5B,QAAQ,CAAgB;IACxB,QAAQ,CAA0B;IAEnD,YAAY,OAIX;QACC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAAqB;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC;QACpB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE;YAC5B,GAAG,OAAO;YACV,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QAEH,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;YACrB,GAAG,CAAC,MAAM,EAAE,IAAI;gBACd,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;oBACnB,OAAO,GAAG,EAAE;wBACV,MAAM,CAAC,GAAG,EAAE,CAAC;wBACb,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;4BAC1C,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;wBAC3C,CAAC;oBACH,CAAC,CAAC;gBACJ,CAAC;gBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,UAAU,CAAC,IAAkB;QACjC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,QAAQ;QACZ,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;CACF;AAED,wBAAwB;AACxB,MAAM,UAAU,YAAY,CAAC,OAI5B;IACC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @zudojs/observability — Core Types
3
+ *
4
+ * All shared interfaces, enums, and type aliases for the observability package.
5
+ */
6
+ export * from "./types/logging.types.js";
7
+ export * from "./types/metrics.types.js";
8
+ export * from "./types/tracing.types.js";
9
+ export * from "./types/config.types.js";
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @zudojs/observability — Core Types
3
+ *
4
+ * All shared interfaces, enums, and type aliases for the observability package.
5
+ */
6
+ export * from "./types/logging.types.js";
7
+ export * from "./types/metrics.types.js";
8
+ export * from "./types/tracing.types.js";
9
+ export * from "./types/config.types.js";
10
+ //# sourceMappingURL=types.js.map