@otlpkit/views 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # @otlpkit/views
2
+
3
+ Build reusable telemetry view frames from OTLP JSON inputs.
4
+
5
+ ## What It Provides
6
+
7
+ - `buildTimeSeriesFrame`
8
+ - `buildLatestValuesFrame`
9
+ - `buildHistogramFrame`
10
+ - `buildTraceWaterfallFrame`
11
+ - `buildEventTimelineFrame`
12
+
13
+ Frames are plain JavaScript objects designed to be consumed by UI adapters.
14
+
15
+ ## Quick Example
16
+
17
+ ```ts
18
+ import { buildTimeSeriesFrame } from "@otlpkit/views";
19
+
20
+ const frame = buildTimeSeriesFrame(document, {
21
+ metricName: "logfwd.inflight_batches",
22
+ intervalMs: 1000,
23
+ splitBy: "output",
24
+ });
25
+ ```
@@ -0,0 +1,141 @@
1
+ import { type AttributeMap, type ScopeInfo, type Signal, type SpanRecord, type TelemetryRecord } from "@otlpkit/otlpjson";
2
+ export interface TimeSeriesPoint {
3
+ readonly timeUnixNano: string;
4
+ readonly timeMs: number | null;
5
+ readonly isoTime: string | null;
6
+ readonly value: number;
7
+ readonly samples: number;
8
+ }
9
+ export interface TimeSeriesSeries {
10
+ readonly key: string;
11
+ readonly label: string;
12
+ readonly points: readonly TimeSeriesPoint[];
13
+ }
14
+ export interface TimeSeriesFrame {
15
+ readonly kind: "time-series";
16
+ readonly signal: Signal | null;
17
+ readonly title: string;
18
+ readonly unit: string | null;
19
+ readonly intervalMs: number;
20
+ readonly series: readonly TimeSeriesSeries[];
21
+ }
22
+ export interface LatestValueRow {
23
+ readonly key: string;
24
+ readonly label: string;
25
+ readonly value: number;
26
+ readonly timeUnixNano: string | null;
27
+ readonly timeMs: number | null;
28
+ readonly isoTime: string | null;
29
+ readonly attributes: AttributeMap;
30
+ readonly resource: AttributeMap;
31
+ readonly scope: ScopeInfo;
32
+ }
33
+ export interface LatestValuesFrame {
34
+ readonly kind: "latest-values";
35
+ readonly signal: Signal | null;
36
+ readonly title: string;
37
+ readonly unit: string | null;
38
+ readonly rows: readonly LatestValueRow[];
39
+ }
40
+ export interface HistogramBin {
41
+ readonly start: number;
42
+ readonly end: number;
43
+ readonly label: string;
44
+ readonly count: number;
45
+ }
46
+ export interface HistogramFrame {
47
+ readonly kind: "histogram";
48
+ readonly signal: Signal | null;
49
+ readonly title: string;
50
+ readonly unit: string | null;
51
+ readonly bins: readonly HistogramBin[];
52
+ }
53
+ export interface TraceWaterfallSpan {
54
+ readonly traceId: string | null;
55
+ readonly spanId: string | null;
56
+ readonly parentSpanId: string | null;
57
+ readonly name: string | null;
58
+ readonly status: SpanRecord["status"];
59
+ readonly depth: number;
60
+ readonly startOffsetNanos: string | null;
61
+ readonly startOffsetMs: number | null;
62
+ readonly durationNanos: string | null;
63
+ readonly durationMs: number | null;
64
+ readonly attributes: AttributeMap;
65
+ readonly events: SpanRecord["events"];
66
+ }
67
+ export interface TraceWaterfallTrace {
68
+ readonly traceId: string;
69
+ readonly traceStartUnixNano: string | null;
70
+ readonly traceEndUnixNano: string | null;
71
+ readonly durationNanos: string | null;
72
+ readonly spans: readonly TraceWaterfallSpan[];
73
+ }
74
+ export interface TraceWaterfallFrame {
75
+ readonly kind: "trace-waterfall";
76
+ readonly signal: "traces";
77
+ readonly title: string;
78
+ readonly traces: readonly TraceWaterfallTrace[];
79
+ }
80
+ export interface EventTimelineEvent {
81
+ readonly kind: "span-event" | "log";
82
+ readonly timeUnixNano: string | null;
83
+ readonly timeMs: number | null;
84
+ readonly isoTime: string | null;
85
+ readonly traceId: string | null;
86
+ readonly spanId: string | null;
87
+ readonly name?: string | null;
88
+ readonly severityText?: string | null;
89
+ readonly body?: unknown;
90
+ readonly attributes: AttributeMap;
91
+ readonly resource: AttributeMap;
92
+ readonly scope: ScopeInfo;
93
+ }
94
+ export interface EventTimelineFrame {
95
+ readonly kind: "event-timeline";
96
+ readonly signal: "traces" | "logs";
97
+ readonly title: string;
98
+ readonly events: readonly EventTimelineEvent[];
99
+ }
100
+ export declare function buildTimeSeriesFrame(input: unknown, options?: {
101
+ readonly signal?: Signal;
102
+ readonly title?: string;
103
+ readonly metricName?: string;
104
+ readonly name?: string;
105
+ readonly intervalMs?: number;
106
+ readonly splitBy?: string;
107
+ readonly reduce?: "sum" | "avg" | "min" | "max" | "last" | "count";
108
+ readonly filters?: Record<string, unknown>;
109
+ readonly valueFn?: (record: TelemetryRecord) => number | null;
110
+ readonly unit?: string;
111
+ }): TimeSeriesFrame;
112
+ export declare function buildLatestValuesFrame(input: unknown, options?: {
113
+ readonly signal?: Signal;
114
+ readonly title?: string;
115
+ readonly metricName?: string;
116
+ readonly name?: string;
117
+ readonly splitBy?: string;
118
+ readonly filters?: Record<string, unknown>;
119
+ readonly valueFn?: (record: TelemetryRecord) => number | null;
120
+ readonly unit?: string;
121
+ }): LatestValuesFrame;
122
+ export declare function buildHistogramFrame(input: unknown, options?: {
123
+ readonly signal?: Signal;
124
+ readonly title?: string;
125
+ readonly metricName?: string;
126
+ readonly name?: string;
127
+ readonly filters?: Record<string, unknown>;
128
+ readonly valueFn?: (record: TelemetryRecord) => number | null;
129
+ readonly unit?: string;
130
+ readonly binCount?: number;
131
+ }): HistogramFrame;
132
+ export declare function buildTraceWaterfallFrame(input: unknown, options?: {
133
+ readonly title?: string;
134
+ readonly filters?: Record<string, unknown>;
135
+ }): TraceWaterfallFrame;
136
+ export declare function buildEventTimelineFrame(input: unknown, options?: {
137
+ readonly signal?: "traces" | "logs";
138
+ readonly title?: string;
139
+ readonly filters?: Record<string, unknown>;
140
+ }): EventTimelineFrame;
141
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,280 @@
1
+ import { durationNanos, nanosToIso, nanosToMillis, toUnixNanos, } from "@otlpkit/otlpjson";
2
+ import { bucketTimeSeries, collectLogs, collectMetrics, collectTraces, defaultSeriesKey, defaultSeriesLabel, filterRecords, latestBy, recordAttributes, recordNumericValue, recordTimestampNanos, } from "@otlpkit/query";
3
+ function materialize(input, signal) {
4
+ if (signal === "metrics") {
5
+ return { signal, records: collectMetrics(input) };
6
+ }
7
+ if (signal === "traces") {
8
+ return { signal, records: collectTraces(input) };
9
+ }
10
+ if (signal === "logs") {
11
+ return { signal, records: collectLogs(input) };
12
+ }
13
+ const metrics = collectMetrics(input);
14
+ if (metrics.length > 0) {
15
+ return { signal: "metrics", records: metrics };
16
+ }
17
+ const traces = collectTraces(input);
18
+ if (traces.length > 0) {
19
+ return { signal: "traces", records: traces };
20
+ }
21
+ const logs = collectLogs(input);
22
+ if (logs.length > 0) {
23
+ return { signal: "logs", records: logs };
24
+ }
25
+ return { signal: null, records: [] };
26
+ }
27
+ function projectSeriesKey(record, splitBy) {
28
+ if (!splitBy) {
29
+ return defaultSeriesKey(record);
30
+ }
31
+ if (splitBy.startsWith("resource.")) {
32
+ return String(record.resource[splitBy.slice("resource.".length)] ?? "unknown");
33
+ }
34
+ if (splitBy.startsWith("scope.")) {
35
+ return String(record.scope[splitBy.slice("scope.".length)] ?? "unknown");
36
+ }
37
+ return String(recordAttributes(record)[splitBy] ?? "unknown");
38
+ }
39
+ function projectSeriesLabel(record, splitBy) {
40
+ return splitBy ? projectSeriesKey(record, splitBy) : defaultSeriesLabel(record);
41
+ }
42
+ function inferUnit(records) {
43
+ const first = records[0];
44
+ if (!first) {
45
+ return null;
46
+ }
47
+ if (first.signal === "traces") {
48
+ return "ms";
49
+ }
50
+ if (first.signal === "metrics") {
51
+ return first.metric.unit;
52
+ }
53
+ return null;
54
+ }
55
+ function latestRows(records, splitBy, valueFn) {
56
+ return latestBy(records, (record) => projectSeriesKey(record, splitBy))
57
+ .map(({ key, record }) => ({
58
+ key,
59
+ label: projectSeriesLabel(record, splitBy),
60
+ value: valueFn ? valueFn(record) : recordNumericValue(record),
61
+ timeUnixNano: recordTimestampNanos(record),
62
+ timeMs: nanosToMillis(recordTimestampNanos(record)),
63
+ isoTime: nanosToIso(recordTimestampNanos(record)),
64
+ attributes: recordAttributes(record),
65
+ resource: record.resource,
66
+ scope: record.scope,
67
+ }))
68
+ .filter((row) => Number.isFinite(row.value));
69
+ }
70
+ function computeDepths(spans) {
71
+ const byId = new Map(spans.flatMap((span) => (span.spanId ? [[span.spanId, span]] : [])));
72
+ const depths = new Map();
73
+ const visit = (span) => {
74
+ if (!span.spanId) {
75
+ return 0;
76
+ }
77
+ const existing = depths.get(span.spanId);
78
+ if (existing !== undefined) {
79
+ return existing;
80
+ }
81
+ const parent = span.parentSpanId ? byId.get(span.parentSpanId) : undefined;
82
+ const depth = parent ? visit(parent) + 1 : 0;
83
+ depths.set(span.spanId, depth);
84
+ return depth;
85
+ };
86
+ for (const span of spans) {
87
+ visit(span);
88
+ }
89
+ return depths;
90
+ }
91
+ export function buildTimeSeriesFrame(input, options = {}) {
92
+ const { signal, records } = materialize(input, options.signal);
93
+ const filters = {
94
+ ...(options.filters ?? {}),
95
+ ...(options.metricName || options.name ? { name: options.metricName ?? options.name } : {}),
96
+ };
97
+ const filtered = filterRecords(records, filters);
98
+ const intervalMs = options.intervalMs ?? 60_000;
99
+ const series = bucketTimeSeries(filtered, {
100
+ intervalMs,
101
+ reduce: options.reduce ?? "sum",
102
+ keyFn: (record) => projectSeriesKey(record, options.splitBy),
103
+ labelFn: (record) => projectSeriesLabel(record, options.splitBy),
104
+ ...(options.valueFn ? { valueFn: options.valueFn } : {}),
105
+ });
106
+ return {
107
+ kind: "time-series",
108
+ signal,
109
+ title: options.title ?? options.metricName ?? options.name ?? "Telemetry",
110
+ unit: options.unit ?? inferUnit(filtered),
111
+ intervalMs,
112
+ series,
113
+ };
114
+ }
115
+ export function buildLatestValuesFrame(input, options = {}) {
116
+ const { signal, records } = materialize(input, options.signal);
117
+ const filters = {
118
+ ...(options.filters ?? {}),
119
+ ...(options.metricName || options.name ? { name: options.metricName ?? options.name } : {}),
120
+ };
121
+ const filtered = filterRecords(records, filters);
122
+ return {
123
+ kind: "latest-values",
124
+ signal,
125
+ title: options.title ?? options.metricName ?? options.name ?? "Latest values",
126
+ unit: options.unit ?? inferUnit(filtered),
127
+ rows: latestRows(filtered, options.splitBy, options.valueFn),
128
+ };
129
+ }
130
+ export function buildHistogramFrame(input, options = {}) {
131
+ const { signal, records } = materialize(input, options.signal);
132
+ const filters = {
133
+ ...(options.filters ?? {}),
134
+ ...(options.metricName || options.name ? { name: options.metricName ?? options.name } : {}),
135
+ };
136
+ const filtered = filterRecords(records, filters);
137
+ const values = filtered
138
+ .map((record) => (options.valueFn ?? recordNumericValue)(record))
139
+ .filter((value) => value !== null && Number.isFinite(value));
140
+ if (values.length === 0) {
141
+ return {
142
+ kind: "histogram",
143
+ signal,
144
+ title: options.title ?? options.metricName ?? options.name ?? "Histogram",
145
+ unit: options.unit ?? inferUnit(filtered),
146
+ bins: [],
147
+ };
148
+ }
149
+ const minimum = Math.min(...values);
150
+ const maximum = Math.max(...values);
151
+ const binCount = Math.max(1, options.binCount ?? 10);
152
+ const width = minimum === maximum ? 1 : (maximum - minimum) / binCount;
153
+ const counts = Array.from({ length: binCount }, () => 0);
154
+ for (const value of values) {
155
+ const index = Math.min(binCount - 1, Math.max(0, Math.floor((value - minimum) / width)));
156
+ counts[index] = counts[index] + 1;
157
+ }
158
+ const bins = Array.from({ length: binCount }, (_, index) => {
159
+ const start = minimum + width * index;
160
+ const end = index === binCount - 1 ? maximum : start + width;
161
+ return {
162
+ start,
163
+ end,
164
+ label: `${start.toFixed(2)} - ${end.toFixed(2)}`,
165
+ count: counts[index],
166
+ };
167
+ });
168
+ return {
169
+ kind: "histogram",
170
+ signal,
171
+ title: options.title ?? options.metricName ?? options.name ?? "Histogram",
172
+ unit: options.unit ?? inferUnit(filtered),
173
+ bins,
174
+ };
175
+ }
176
+ export function buildTraceWaterfallFrame(input, options = {}) {
177
+ const filtered = filterRecords(collectTraces(input), options.filters ?? {});
178
+ const traces = new Map();
179
+ for (const span of filtered) {
180
+ const traceId = span.traceId ?? "unknown";
181
+ const current = traces.get(traceId) ?? [];
182
+ current.push(span);
183
+ traces.set(traceId, current);
184
+ }
185
+ return {
186
+ kind: "trace-waterfall",
187
+ signal: "traces",
188
+ title: options.title ?? "Trace waterfall",
189
+ traces: [...traces.entries()].map(([traceId, spans]) => {
190
+ const sorted = [...spans].sort((left, right) => (toUnixNanos(left.startTimeUnixNano) ?? 0n) < (toUnixNanos(right.startTimeUnixNano) ?? 0n)
191
+ ? -1
192
+ : 1);
193
+ const traceStart = sorted[0]?.startTimeUnixNano ?? null;
194
+ const traceEnd = sorted.reduce((latest, span) => {
195
+ const end = toUnixNanos(span.endTimeUnixNano) ?? 0n;
196
+ const latestEnd = toUnixNanos(latest) ?? 0n;
197
+ return end > latestEnd ? span.endTimeUnixNano : latest;
198
+ }, traceStart) ?? null;
199
+ const depths = computeDepths(sorted);
200
+ const traceStartNanos = toUnixNanos(traceStart);
201
+ return {
202
+ traceId,
203
+ traceStartUnixNano: traceStart,
204
+ traceEndUnixNano: traceEnd,
205
+ durationNanos: durationNanos(traceStart, traceEnd),
206
+ spans: sorted.map((span) => ({
207
+ traceId: span.traceId,
208
+ spanId: span.spanId,
209
+ parentSpanId: span.parentSpanId,
210
+ name: span.name,
211
+ status: span.status,
212
+ depth: span.spanId ? depths.get(span.spanId) : 0,
213
+ startOffsetNanos: (() => {
214
+ const spanStart = toUnixNanos(span.startTimeUnixNano);
215
+ if (traceStartNanos === null || spanStart === null) {
216
+ return null;
217
+ }
218
+ return (spanStart - traceStartNanos).toString();
219
+ })(),
220
+ startOffsetMs: (() => {
221
+ const spanStart = toUnixNanos(span.startTimeUnixNano);
222
+ if (traceStartNanos === null || spanStart === null) {
223
+ return null;
224
+ }
225
+ return Number((spanStart - traceStartNanos) / 1000000n);
226
+ })(),
227
+ durationNanos: span.durationNanos,
228
+ durationMs: nanosToMillis(span.durationNanos),
229
+ attributes: span.attributes,
230
+ events: span.events,
231
+ })),
232
+ };
233
+ }),
234
+ };
235
+ }
236
+ export function buildEventTimelineFrame(input, options = {}) {
237
+ if (options.signal === "logs") {
238
+ const logs = filterRecords(collectLogs(input), options.filters ?? {});
239
+ return {
240
+ kind: "event-timeline",
241
+ signal: "logs",
242
+ title: options.title ?? "Log events",
243
+ events: logs
244
+ .map((log) => ({
245
+ kind: "log",
246
+ timeUnixNano: log.timeUnixNano,
247
+ timeMs: nanosToMillis(log.timeUnixNano),
248
+ isoTime: nanosToIso(log.timeUnixNano),
249
+ severityText: log.severityText,
250
+ traceId: log.traceId,
251
+ spanId: log.spanId,
252
+ body: log.body,
253
+ attributes: log.attributes,
254
+ resource: log.resource,
255
+ scope: log.scope,
256
+ }))
257
+ .sort((left, right) => (toUnixNanos(left.timeUnixNano) ?? 0n) < (toUnixNanos(right.timeUnixNano) ?? 0n) ? -1 : 1),
258
+ };
259
+ }
260
+ const spans = filterRecords(collectTraces(input), options.filters ?? {});
261
+ const events = spans.flatMap((span) => span.events.map((event) => ({
262
+ kind: "span-event",
263
+ timeUnixNano: event.timeUnixNano,
264
+ timeMs: nanosToMillis(event.timeUnixNano),
265
+ isoTime: nanosToIso(event.timeUnixNano),
266
+ traceId: span.traceId,
267
+ spanId: span.spanId,
268
+ name: event.name,
269
+ attributes: event.attributes,
270
+ resource: span.resource,
271
+ scope: span.scope,
272
+ })));
273
+ return {
274
+ kind: "event-timeline",
275
+ signal: "traces",
276
+ title: options.title ?? "Trace events",
277
+ events: events.sort((left, right) => (toUnixNanos(left.timeUnixNano) ?? 0n) < (toUnixNanos(right.timeUnixNano) ?? 0n) ? -1 : 1),
278
+ };
279
+ }
280
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@otlpkit/views",
3
+ "version": "0.1.0",
4
+ "description": "Reusable telemetry view frames for otlpkit.",
5
+ "license": "UNLICENSED",
6
+ "engines": {
7
+ "node": ">=22.0.0"
8
+ },
9
+ "keywords": [
10
+ "opentelemetry",
11
+ "otlp",
12
+ "telemetry",
13
+ "visualization"
14
+ ],
15
+ "type": "module",
16
+ "sideEffects": false,
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js",
22
+ "default": "./dist/index.js"
23
+ }
24
+ },
25
+ "main": "./dist/index.js",
26
+ "files": [
27
+ "dist",
28
+ "README.md"
29
+ ],
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "dependencies": {
34
+ "@otlpkit/otlpjson": "^0.1.0",
35
+ "@otlpkit/query": "^0.1.0"
36
+ },
37
+ "scripts": {
38
+ "build": "tsc -b",
39
+ "typecheck": "tsc -p tsconfig.json --noEmit"
40
+ }
41
+ }