autotel-devtools 6.1.2 → 6.2.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/dist/cli.cjs +0 -0
- package/dist/error-aggregator-B4yznUjK.d.ts +147 -0
- package/dist/error-aggregator-BkO0l8ak.d.ts +147 -0
- package/dist/error-aggregator-BoYI2h0W.d.cts +147 -0
- package/dist/error-aggregator-CaIMqDob.d.cts +147 -0
- package/dist/error-aggregator-Cs3n0f2s.d.ts +147 -0
- package/dist/error-aggregator-CtZmjm-k.d.cts +147 -0
- package/dist/error-aggregator-DqB90tTq.d.cts +147 -0
- package/dist/error-aggregator-zhZGcmno.d.ts +147 -0
- package/dist/exporter-C2XmGnBS.d.cts +182 -0
- package/dist/exporter-C2XmGnBS.d.ts +182 -0
- package/dist/exporter-Cui3gZsI.d.cts +164 -0
- package/dist/exporter-Cui3gZsI.d.ts +164 -0
- package/dist/exporter-CyzRMJ6C.d.cts +169 -0
- package/dist/exporter-CyzRMJ6C.d.ts +169 -0
- package/dist/exporter-qIQPDw29.d.cts +159 -0
- package/dist/exporter-qIQPDw29.d.ts +159 -0
- package/package.json +17 -16
- package/LICENSE +0 -21
- package/binding.gyp +0 -9
- package/index.js +0 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
|
2
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
3
|
+
import { Server } from 'node:http';
|
|
4
|
+
|
|
5
|
+
interface SpanData {
|
|
6
|
+
traceId: string;
|
|
7
|
+
spanId: string;
|
|
8
|
+
parentSpanId?: string;
|
|
9
|
+
name: string;
|
|
10
|
+
kind: 'INTERNAL' | 'SERVER' | 'CLIENT' | 'PRODUCER' | 'CONSUMER';
|
|
11
|
+
startTime: number;
|
|
12
|
+
endTime: number;
|
|
13
|
+
duration: number;
|
|
14
|
+
attributes: Record<string, any>;
|
|
15
|
+
status: {
|
|
16
|
+
code: 'OK' | 'ERROR' | 'UNSET';
|
|
17
|
+
message?: string;
|
|
18
|
+
};
|
|
19
|
+
events?: Array<{
|
|
20
|
+
name: string;
|
|
21
|
+
timestamp: number;
|
|
22
|
+
attributes?: Record<string, any>;
|
|
23
|
+
}>;
|
|
24
|
+
links?: Array<{
|
|
25
|
+
traceId: string;
|
|
26
|
+
spanId: string;
|
|
27
|
+
attributes?: Record<string, any>;
|
|
28
|
+
}>;
|
|
29
|
+
scope?: {
|
|
30
|
+
name?: string;
|
|
31
|
+
version?: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
interface TraceData {
|
|
35
|
+
traceId: string;
|
|
36
|
+
correlationId: string;
|
|
37
|
+
rootSpan: SpanData;
|
|
38
|
+
spans: SpanData[];
|
|
39
|
+
startTime: number;
|
|
40
|
+
endTime: number;
|
|
41
|
+
duration: number;
|
|
42
|
+
status: 'OK' | 'ERROR' | 'UNSET';
|
|
43
|
+
service: string;
|
|
44
|
+
}
|
|
45
|
+
interface LogData {
|
|
46
|
+
id: string;
|
|
47
|
+
traceId?: string;
|
|
48
|
+
spanId?: string;
|
|
49
|
+
resourceName?: string;
|
|
50
|
+
severityText?: string;
|
|
51
|
+
severityNumber?: number;
|
|
52
|
+
body: string | Record<string, unknown>;
|
|
53
|
+
timestamp: number;
|
|
54
|
+
attributes?: Record<string, unknown>;
|
|
55
|
+
resource?: Record<string, unknown>;
|
|
56
|
+
}
|
|
57
|
+
interface MetricData {
|
|
58
|
+
type: 'event' | 'funnel' | 'outcome' | 'value';
|
|
59
|
+
name: string;
|
|
60
|
+
value?: number;
|
|
61
|
+
attributes: Record<string, any>;
|
|
62
|
+
timestamp: number;
|
|
63
|
+
traceId?: string;
|
|
64
|
+
}
|
|
65
|
+
interface ErrorGroup {
|
|
66
|
+
fingerprint: string;
|
|
67
|
+
type: string;
|
|
68
|
+
message: string;
|
|
69
|
+
stackTrace?: string;
|
|
70
|
+
count: number;
|
|
71
|
+
firstSeen: number;
|
|
72
|
+
lastSeen: number;
|
|
73
|
+
affectedTraces: string[];
|
|
74
|
+
affectedSpans: string[];
|
|
75
|
+
service?: string;
|
|
76
|
+
attributes?: Record<string, unknown>;
|
|
77
|
+
}
|
|
78
|
+
interface ErrorOccurrence {
|
|
79
|
+
traceId: string;
|
|
80
|
+
spanId: string;
|
|
81
|
+
spanName: string;
|
|
82
|
+
service: string;
|
|
83
|
+
timestamp: number;
|
|
84
|
+
error: {
|
|
85
|
+
type: string;
|
|
86
|
+
message: string;
|
|
87
|
+
stackTrace?: string;
|
|
88
|
+
};
|
|
89
|
+
attributes?: Record<string, unknown>;
|
|
90
|
+
}
|
|
91
|
+
interface DevtoolsData {
|
|
92
|
+
traces: TraceData[];
|
|
93
|
+
metrics: MetricData[];
|
|
94
|
+
logs: LogData[];
|
|
95
|
+
errors: ErrorGroup[];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
interface DevtoolsServerOptions {
|
|
99
|
+
port?: number;
|
|
100
|
+
server?: Server;
|
|
101
|
+
path?: string;
|
|
102
|
+
verbose?: boolean;
|
|
103
|
+
maxHistory?: number;
|
|
104
|
+
maxTraceCount?: number;
|
|
105
|
+
maxLogCount?: number;
|
|
106
|
+
maxMetricCount?: number;
|
|
107
|
+
}
|
|
108
|
+
declare class DevtoolsServer {
|
|
109
|
+
private wss;
|
|
110
|
+
private clients;
|
|
111
|
+
private httpServer;
|
|
112
|
+
private traces;
|
|
113
|
+
private logs;
|
|
114
|
+
private metrics;
|
|
115
|
+
private errorAggregator;
|
|
116
|
+
private limits;
|
|
117
|
+
private verbose;
|
|
118
|
+
private _port;
|
|
119
|
+
constructor(options?: DevtoolsServerOptions);
|
|
120
|
+
get port(): number;
|
|
121
|
+
get clientCount(): number;
|
|
122
|
+
addTrace(trace: TraceData): void;
|
|
123
|
+
addTraces(traces: TraceData[]): void;
|
|
124
|
+
addLog(log: LogData): void;
|
|
125
|
+
addLogs(logs: LogData[]): void;
|
|
126
|
+
addMetric(metric: MetricData): void;
|
|
127
|
+
getCurrentData(): DevtoolsData;
|
|
128
|
+
clearData(): void;
|
|
129
|
+
private broadcast;
|
|
130
|
+
private log;
|
|
131
|
+
close(): Promise<void>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* OpenTelemetry SpanExporter that streams spans to DevtoolsServer
|
|
136
|
+
*/
|
|
137
|
+
|
|
138
|
+
declare class DevtoolsSpanExporter implements SpanExporter {
|
|
139
|
+
private server;
|
|
140
|
+
private serviceName;
|
|
141
|
+
constructor(server: DevtoolsServer, serviceName?: string);
|
|
142
|
+
/**
|
|
143
|
+
* Export spans to the WebSocket server
|
|
144
|
+
*/
|
|
145
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): Promise<void>;
|
|
146
|
+
/**
|
|
147
|
+
* Shutdown the exporter
|
|
148
|
+
*/
|
|
149
|
+
shutdown(): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Force flush any buffered spans
|
|
152
|
+
*/
|
|
153
|
+
forceFlush(): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Convert OpenTelemetry spans to TraceData
|
|
156
|
+
*/
|
|
157
|
+
private convertToTraceData;
|
|
158
|
+
/**
|
|
159
|
+
* Convert OpenTelemetry span to SpanData
|
|
160
|
+
*/
|
|
161
|
+
private convertSpan;
|
|
162
|
+
private convertScope;
|
|
163
|
+
/**
|
|
164
|
+
* Convert OpenTelemetry SpanKind to string
|
|
165
|
+
*/
|
|
166
|
+
private convertSpanKind;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export { DevtoolsServer as D, type ErrorGroup as E, type LogData as L, type MetricData as M, type SpanData as S, type TraceData as T, DevtoolsSpanExporter as a, type DevtoolsData as b, type ErrorOccurrence as c, type DevtoolsServerOptions as d };
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
|
2
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
3
|
+
import { Server } from 'node:http';
|
|
4
|
+
|
|
5
|
+
interface SpanData {
|
|
6
|
+
traceId: string;
|
|
7
|
+
spanId: string;
|
|
8
|
+
parentSpanId?: string;
|
|
9
|
+
name: string;
|
|
10
|
+
kind: 'INTERNAL' | 'SERVER' | 'CLIENT' | 'PRODUCER' | 'CONSUMER';
|
|
11
|
+
startTime: number;
|
|
12
|
+
endTime: number;
|
|
13
|
+
duration: number;
|
|
14
|
+
attributes: Record<string, any>;
|
|
15
|
+
status: {
|
|
16
|
+
code: 'OK' | 'ERROR' | 'UNSET';
|
|
17
|
+
message?: string;
|
|
18
|
+
};
|
|
19
|
+
events?: Array<{
|
|
20
|
+
name: string;
|
|
21
|
+
timestamp: number;
|
|
22
|
+
attributes?: Record<string, any>;
|
|
23
|
+
}>;
|
|
24
|
+
links?: Array<{
|
|
25
|
+
traceId: string;
|
|
26
|
+
spanId: string;
|
|
27
|
+
attributes?: Record<string, any>;
|
|
28
|
+
}>;
|
|
29
|
+
scope?: {
|
|
30
|
+
name?: string;
|
|
31
|
+
version?: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
interface TraceData {
|
|
35
|
+
traceId: string;
|
|
36
|
+
correlationId: string;
|
|
37
|
+
rootSpan: SpanData;
|
|
38
|
+
spans: SpanData[];
|
|
39
|
+
startTime: number;
|
|
40
|
+
endTime: number;
|
|
41
|
+
duration: number;
|
|
42
|
+
status: 'OK' | 'ERROR' | 'UNSET';
|
|
43
|
+
service: string;
|
|
44
|
+
}
|
|
45
|
+
interface LogData {
|
|
46
|
+
id: string;
|
|
47
|
+
traceId?: string;
|
|
48
|
+
spanId?: string;
|
|
49
|
+
resourceName?: string;
|
|
50
|
+
severityText?: string;
|
|
51
|
+
severityNumber?: number;
|
|
52
|
+
body: string | Record<string, unknown>;
|
|
53
|
+
timestamp: number;
|
|
54
|
+
attributes?: Record<string, unknown>;
|
|
55
|
+
resource?: Record<string, unknown>;
|
|
56
|
+
}
|
|
57
|
+
interface MetricData {
|
|
58
|
+
type: 'event' | 'funnel' | 'outcome' | 'value';
|
|
59
|
+
name: string;
|
|
60
|
+
value?: number;
|
|
61
|
+
attributes: Record<string, any>;
|
|
62
|
+
timestamp: number;
|
|
63
|
+
traceId?: string;
|
|
64
|
+
}
|
|
65
|
+
interface ErrorGroup {
|
|
66
|
+
fingerprint: string;
|
|
67
|
+
type: string;
|
|
68
|
+
message: string;
|
|
69
|
+
stackTrace?: string;
|
|
70
|
+
count: number;
|
|
71
|
+
firstSeen: number;
|
|
72
|
+
lastSeen: number;
|
|
73
|
+
affectedTraces: string[];
|
|
74
|
+
affectedSpans: string[];
|
|
75
|
+
service?: string;
|
|
76
|
+
attributes?: Record<string, unknown>;
|
|
77
|
+
}
|
|
78
|
+
interface ErrorOccurrence {
|
|
79
|
+
traceId: string;
|
|
80
|
+
spanId: string;
|
|
81
|
+
spanName: string;
|
|
82
|
+
service: string;
|
|
83
|
+
timestamp: number;
|
|
84
|
+
error: {
|
|
85
|
+
type: string;
|
|
86
|
+
message: string;
|
|
87
|
+
stackTrace?: string;
|
|
88
|
+
};
|
|
89
|
+
attributes?: Record<string, unknown>;
|
|
90
|
+
}
|
|
91
|
+
interface DevtoolsData {
|
|
92
|
+
traces: TraceData[];
|
|
93
|
+
metrics: MetricData[];
|
|
94
|
+
logs: LogData[];
|
|
95
|
+
errors: ErrorGroup[];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
interface DevtoolsServerOptions {
|
|
99
|
+
port?: number;
|
|
100
|
+
server?: Server;
|
|
101
|
+
path?: string;
|
|
102
|
+
verbose?: boolean;
|
|
103
|
+
maxHistory?: number;
|
|
104
|
+
maxTraceCount?: number;
|
|
105
|
+
maxLogCount?: number;
|
|
106
|
+
maxMetricCount?: number;
|
|
107
|
+
}
|
|
108
|
+
declare class DevtoolsServer {
|
|
109
|
+
private wss;
|
|
110
|
+
private clients;
|
|
111
|
+
private httpServer;
|
|
112
|
+
private traces;
|
|
113
|
+
private logs;
|
|
114
|
+
private metrics;
|
|
115
|
+
private errorAggregator;
|
|
116
|
+
private limits;
|
|
117
|
+
private verbose;
|
|
118
|
+
private _port;
|
|
119
|
+
constructor(options?: DevtoolsServerOptions);
|
|
120
|
+
get port(): number;
|
|
121
|
+
get clientCount(): number;
|
|
122
|
+
addTrace(trace: TraceData): void;
|
|
123
|
+
addTraces(traces: TraceData[]): void;
|
|
124
|
+
addLog(log: LogData): void;
|
|
125
|
+
addLogs(logs: LogData[]): void;
|
|
126
|
+
addMetric(metric: MetricData): void;
|
|
127
|
+
getCurrentData(): DevtoolsData;
|
|
128
|
+
clearData(): void;
|
|
129
|
+
private broadcast;
|
|
130
|
+
private log;
|
|
131
|
+
close(): Promise<void>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* OpenTelemetry SpanExporter that streams spans to DevtoolsServer
|
|
136
|
+
*/
|
|
137
|
+
|
|
138
|
+
declare class DevtoolsSpanExporter implements SpanExporter {
|
|
139
|
+
private server;
|
|
140
|
+
private serviceName;
|
|
141
|
+
constructor(server: DevtoolsServer, serviceName?: string);
|
|
142
|
+
/**
|
|
143
|
+
* Export spans to the WebSocket server
|
|
144
|
+
*/
|
|
145
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): Promise<void>;
|
|
146
|
+
/**
|
|
147
|
+
* Shutdown the exporter
|
|
148
|
+
*/
|
|
149
|
+
shutdown(): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Force flush any buffered spans
|
|
152
|
+
*/
|
|
153
|
+
forceFlush(): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Convert OpenTelemetry spans to TraceData
|
|
156
|
+
*/
|
|
157
|
+
private convertToTraceData;
|
|
158
|
+
/**
|
|
159
|
+
* Convert OpenTelemetry span to SpanData
|
|
160
|
+
*/
|
|
161
|
+
private convertSpan;
|
|
162
|
+
private convertScope;
|
|
163
|
+
/**
|
|
164
|
+
* Convert OpenTelemetry SpanKind to string
|
|
165
|
+
*/
|
|
166
|
+
private convertSpanKind;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export { DevtoolsServer as D, type ErrorGroup as E, type LogData as L, type MetricData as M, type SpanData as S, type TraceData as T, DevtoolsSpanExporter as a, type DevtoolsData as b, type ErrorOccurrence as c, type DevtoolsServerOptions as d };
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
|
2
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
3
|
+
import { Server } from 'node:http';
|
|
4
|
+
|
|
5
|
+
interface SpanData {
|
|
6
|
+
traceId: string;
|
|
7
|
+
spanId: string;
|
|
8
|
+
parentSpanId?: string;
|
|
9
|
+
name: string;
|
|
10
|
+
kind: 'INTERNAL' | 'SERVER' | 'CLIENT' | 'PRODUCER' | 'CONSUMER';
|
|
11
|
+
startTime: number;
|
|
12
|
+
endTime: number;
|
|
13
|
+
duration: number;
|
|
14
|
+
attributes: Record<string, any>;
|
|
15
|
+
status: {
|
|
16
|
+
code: 'OK' | 'ERROR' | 'UNSET';
|
|
17
|
+
message?: string;
|
|
18
|
+
};
|
|
19
|
+
events?: Array<{
|
|
20
|
+
name: string;
|
|
21
|
+
timestamp: number;
|
|
22
|
+
attributes?: Record<string, any>;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
interface TraceData {
|
|
26
|
+
traceId: string;
|
|
27
|
+
correlationId: string;
|
|
28
|
+
rootSpan: SpanData;
|
|
29
|
+
spans: SpanData[];
|
|
30
|
+
startTime: number;
|
|
31
|
+
endTime: number;
|
|
32
|
+
duration: number;
|
|
33
|
+
status: 'OK' | 'ERROR' | 'UNSET';
|
|
34
|
+
service: string;
|
|
35
|
+
}
|
|
36
|
+
interface LogData {
|
|
37
|
+
id: string;
|
|
38
|
+
traceId?: string;
|
|
39
|
+
spanId?: string;
|
|
40
|
+
resourceName?: string;
|
|
41
|
+
severityText?: string;
|
|
42
|
+
severityNumber?: number;
|
|
43
|
+
body: string | Record<string, unknown>;
|
|
44
|
+
timestamp: number;
|
|
45
|
+
attributes?: Record<string, unknown>;
|
|
46
|
+
resource?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
interface MetricData {
|
|
49
|
+
type: 'event' | 'funnel' | 'outcome' | 'value';
|
|
50
|
+
name: string;
|
|
51
|
+
value?: number;
|
|
52
|
+
attributes: Record<string, any>;
|
|
53
|
+
timestamp: number;
|
|
54
|
+
traceId?: string;
|
|
55
|
+
}
|
|
56
|
+
interface ErrorGroup {
|
|
57
|
+
fingerprint: string;
|
|
58
|
+
type: string;
|
|
59
|
+
message: string;
|
|
60
|
+
stackTrace?: string;
|
|
61
|
+
count: number;
|
|
62
|
+
firstSeen: number;
|
|
63
|
+
lastSeen: number;
|
|
64
|
+
affectedTraces: string[];
|
|
65
|
+
affectedSpans: string[];
|
|
66
|
+
service?: string;
|
|
67
|
+
attributes?: Record<string, unknown>;
|
|
68
|
+
}
|
|
69
|
+
interface ErrorOccurrence {
|
|
70
|
+
traceId: string;
|
|
71
|
+
spanId: string;
|
|
72
|
+
spanName: string;
|
|
73
|
+
service: string;
|
|
74
|
+
timestamp: number;
|
|
75
|
+
error: {
|
|
76
|
+
type: string;
|
|
77
|
+
message: string;
|
|
78
|
+
stackTrace?: string;
|
|
79
|
+
};
|
|
80
|
+
attributes?: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
interface DevtoolsData {
|
|
83
|
+
traces: TraceData[];
|
|
84
|
+
metrics: MetricData[];
|
|
85
|
+
logs: LogData[];
|
|
86
|
+
errors: ErrorGroup[];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
interface DevtoolsServerOptions {
|
|
90
|
+
port?: number;
|
|
91
|
+
server?: Server;
|
|
92
|
+
path?: string;
|
|
93
|
+
verbose?: boolean;
|
|
94
|
+
maxHistory?: number;
|
|
95
|
+
maxTraceCount?: number;
|
|
96
|
+
maxLogCount?: number;
|
|
97
|
+
maxMetricCount?: number;
|
|
98
|
+
}
|
|
99
|
+
declare class DevtoolsServer {
|
|
100
|
+
private wss;
|
|
101
|
+
private clients;
|
|
102
|
+
private httpServer;
|
|
103
|
+
private traces;
|
|
104
|
+
private logs;
|
|
105
|
+
private metrics;
|
|
106
|
+
private errorAggregator;
|
|
107
|
+
private limits;
|
|
108
|
+
private verbose;
|
|
109
|
+
private _port;
|
|
110
|
+
constructor(options?: DevtoolsServerOptions);
|
|
111
|
+
get port(): number;
|
|
112
|
+
get clientCount(): number;
|
|
113
|
+
addTrace(trace: TraceData): void;
|
|
114
|
+
addTraces(traces: TraceData[]): void;
|
|
115
|
+
addLog(log: LogData): void;
|
|
116
|
+
addLogs(logs: LogData[]): void;
|
|
117
|
+
addMetric(metric: MetricData): void;
|
|
118
|
+
getCurrentData(): DevtoolsData;
|
|
119
|
+
clearData(): void;
|
|
120
|
+
private broadcast;
|
|
121
|
+
private log;
|
|
122
|
+
close(): Promise<void>;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* OpenTelemetry SpanExporter that streams spans to DevtoolsServer
|
|
127
|
+
*/
|
|
128
|
+
|
|
129
|
+
declare class DevtoolsSpanExporter implements SpanExporter {
|
|
130
|
+
private server;
|
|
131
|
+
private serviceName;
|
|
132
|
+
constructor(server: DevtoolsServer, serviceName?: string);
|
|
133
|
+
/**
|
|
134
|
+
* Export spans to the WebSocket server
|
|
135
|
+
*/
|
|
136
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Shutdown the exporter
|
|
139
|
+
*/
|
|
140
|
+
shutdown(): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Force flush any buffered spans
|
|
143
|
+
*/
|
|
144
|
+
forceFlush(): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Convert OpenTelemetry spans to TraceData
|
|
147
|
+
*/
|
|
148
|
+
private convertToTraceData;
|
|
149
|
+
/**
|
|
150
|
+
* Convert OpenTelemetry span to SpanData
|
|
151
|
+
*/
|
|
152
|
+
private convertSpan;
|
|
153
|
+
/**
|
|
154
|
+
* Convert OpenTelemetry SpanKind to string
|
|
155
|
+
*/
|
|
156
|
+
private convertSpanKind;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export { DevtoolsServer as D, type ErrorGroup as E, type LogData as L, type MetricData as M, type SpanData as S, type TraceData as T, DevtoolsSpanExporter as a, type DevtoolsData as b, type ErrorOccurrence as c, type DevtoolsServerOptions as d };
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
|
2
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
3
|
+
import { Server } from 'node:http';
|
|
4
|
+
|
|
5
|
+
interface SpanData {
|
|
6
|
+
traceId: string;
|
|
7
|
+
spanId: string;
|
|
8
|
+
parentSpanId?: string;
|
|
9
|
+
name: string;
|
|
10
|
+
kind: 'INTERNAL' | 'SERVER' | 'CLIENT' | 'PRODUCER' | 'CONSUMER';
|
|
11
|
+
startTime: number;
|
|
12
|
+
endTime: number;
|
|
13
|
+
duration: number;
|
|
14
|
+
attributes: Record<string, any>;
|
|
15
|
+
status: {
|
|
16
|
+
code: 'OK' | 'ERROR' | 'UNSET';
|
|
17
|
+
message?: string;
|
|
18
|
+
};
|
|
19
|
+
events?: Array<{
|
|
20
|
+
name: string;
|
|
21
|
+
timestamp: number;
|
|
22
|
+
attributes?: Record<string, any>;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
interface TraceData {
|
|
26
|
+
traceId: string;
|
|
27
|
+
correlationId: string;
|
|
28
|
+
rootSpan: SpanData;
|
|
29
|
+
spans: SpanData[];
|
|
30
|
+
startTime: number;
|
|
31
|
+
endTime: number;
|
|
32
|
+
duration: number;
|
|
33
|
+
status: 'OK' | 'ERROR' | 'UNSET';
|
|
34
|
+
service: string;
|
|
35
|
+
}
|
|
36
|
+
interface LogData {
|
|
37
|
+
id: string;
|
|
38
|
+
traceId?: string;
|
|
39
|
+
spanId?: string;
|
|
40
|
+
resourceName?: string;
|
|
41
|
+
severityText?: string;
|
|
42
|
+
severityNumber?: number;
|
|
43
|
+
body: string | Record<string, unknown>;
|
|
44
|
+
timestamp: number;
|
|
45
|
+
attributes?: Record<string, unknown>;
|
|
46
|
+
resource?: Record<string, unknown>;
|
|
47
|
+
}
|
|
48
|
+
interface MetricData {
|
|
49
|
+
type: 'event' | 'funnel' | 'outcome' | 'value';
|
|
50
|
+
name: string;
|
|
51
|
+
value?: number;
|
|
52
|
+
attributes: Record<string, any>;
|
|
53
|
+
timestamp: number;
|
|
54
|
+
traceId?: string;
|
|
55
|
+
}
|
|
56
|
+
interface ErrorGroup {
|
|
57
|
+
fingerprint: string;
|
|
58
|
+
type: string;
|
|
59
|
+
message: string;
|
|
60
|
+
stackTrace?: string;
|
|
61
|
+
count: number;
|
|
62
|
+
firstSeen: number;
|
|
63
|
+
lastSeen: number;
|
|
64
|
+
affectedTraces: string[];
|
|
65
|
+
affectedSpans: string[];
|
|
66
|
+
service?: string;
|
|
67
|
+
attributes?: Record<string, unknown>;
|
|
68
|
+
}
|
|
69
|
+
interface ErrorOccurrence {
|
|
70
|
+
traceId: string;
|
|
71
|
+
spanId: string;
|
|
72
|
+
spanName: string;
|
|
73
|
+
service: string;
|
|
74
|
+
timestamp: number;
|
|
75
|
+
error: {
|
|
76
|
+
type: string;
|
|
77
|
+
message: string;
|
|
78
|
+
stackTrace?: string;
|
|
79
|
+
};
|
|
80
|
+
attributes?: Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
interface DevtoolsData {
|
|
83
|
+
traces: TraceData[];
|
|
84
|
+
metrics: MetricData[];
|
|
85
|
+
logs: LogData[];
|
|
86
|
+
errors: ErrorGroup[];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
interface DevtoolsServerOptions {
|
|
90
|
+
port?: number;
|
|
91
|
+
server?: Server;
|
|
92
|
+
path?: string;
|
|
93
|
+
verbose?: boolean;
|
|
94
|
+
maxHistory?: number;
|
|
95
|
+
maxTraceCount?: number;
|
|
96
|
+
maxLogCount?: number;
|
|
97
|
+
maxMetricCount?: number;
|
|
98
|
+
}
|
|
99
|
+
declare class DevtoolsServer {
|
|
100
|
+
private wss;
|
|
101
|
+
private clients;
|
|
102
|
+
private httpServer;
|
|
103
|
+
private traces;
|
|
104
|
+
private logs;
|
|
105
|
+
private metrics;
|
|
106
|
+
private errorAggregator;
|
|
107
|
+
private limits;
|
|
108
|
+
private verbose;
|
|
109
|
+
private _port;
|
|
110
|
+
constructor(options?: DevtoolsServerOptions);
|
|
111
|
+
get port(): number;
|
|
112
|
+
get clientCount(): number;
|
|
113
|
+
addTrace(trace: TraceData): void;
|
|
114
|
+
addTraces(traces: TraceData[]): void;
|
|
115
|
+
addLog(log: LogData): void;
|
|
116
|
+
addLogs(logs: LogData[]): void;
|
|
117
|
+
addMetric(metric: MetricData): void;
|
|
118
|
+
getCurrentData(): DevtoolsData;
|
|
119
|
+
clearData(): void;
|
|
120
|
+
private broadcast;
|
|
121
|
+
private log;
|
|
122
|
+
close(): Promise<void>;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* OpenTelemetry SpanExporter that streams spans to DevtoolsServer
|
|
127
|
+
*/
|
|
128
|
+
|
|
129
|
+
declare class DevtoolsSpanExporter implements SpanExporter {
|
|
130
|
+
private server;
|
|
131
|
+
private serviceName;
|
|
132
|
+
constructor(server: DevtoolsServer, serviceName?: string);
|
|
133
|
+
/**
|
|
134
|
+
* Export spans to the WebSocket server
|
|
135
|
+
*/
|
|
136
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Shutdown the exporter
|
|
139
|
+
*/
|
|
140
|
+
shutdown(): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Force flush any buffered spans
|
|
143
|
+
*/
|
|
144
|
+
forceFlush(): Promise<void>;
|
|
145
|
+
/**
|
|
146
|
+
* Convert OpenTelemetry spans to TraceData
|
|
147
|
+
*/
|
|
148
|
+
private convertToTraceData;
|
|
149
|
+
/**
|
|
150
|
+
* Convert OpenTelemetry span to SpanData
|
|
151
|
+
*/
|
|
152
|
+
private convertSpan;
|
|
153
|
+
/**
|
|
154
|
+
* Convert OpenTelemetry SpanKind to string
|
|
155
|
+
*/
|
|
156
|
+
private convertSpanKind;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export { DevtoolsServer as D, type ErrorGroup as E, type LogData as L, type MetricData as M, type SpanData as S, type TraceData as T, DevtoolsSpanExporter as a, type DevtoolsData as b, type ErrorOccurrence as c, type DevtoolsServerOptions as d };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autotel-devtools",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.2.0",
|
|
4
4
|
"description": "Standalone OTLP receiver with web UI for local development",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -47,6 +47,19 @@
|
|
|
47
47
|
"dashboard",
|
|
48
48
|
"widget"
|
|
49
49
|
],
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "tsup && vite build --config vite.widget.config.ts",
|
|
52
|
+
"dev": "tsup --watch",
|
|
53
|
+
"type-check": "svelte-check --tsconfig ./tsconfig.json && tsc --noEmit",
|
|
54
|
+
"lint": "eslint src/",
|
|
55
|
+
"test": "vitest run --config vitest.config.ts --project server && vitest run --config vitest.config.ts --project widget && vitest run --config vitest.storybook.config.ts",
|
|
56
|
+
"test:storybook": "vitest run --config vitest.storybook.config.ts",
|
|
57
|
+
"test:watch": "vitest --config vitest.config.ts",
|
|
58
|
+
"test:dist": "node scripts/check-dist-esm.mjs",
|
|
59
|
+
"storybook": "storybook dev -p 6006",
|
|
60
|
+
"build-storybook": "storybook build",
|
|
61
|
+
"prepublishOnly": "pnpm build && pnpm test:dist"
|
|
62
|
+
},
|
|
50
63
|
"dependencies": {
|
|
51
64
|
"clsx": "^2.1.1",
|
|
52
65
|
"@lucide/svelte": "^1.17.0",
|
|
@@ -90,7 +103,7 @@
|
|
|
90
103
|
"vitest-mock-extended": "^4.0.0"
|
|
91
104
|
},
|
|
92
105
|
"peerDependencies": {
|
|
93
|
-
"autotel": "
|
|
106
|
+
"autotel": "workspace:*"
|
|
94
107
|
},
|
|
95
108
|
"peerDependenciesMeta": {
|
|
96
109
|
"autotel": {
|
|
@@ -102,17 +115,5 @@
|
|
|
102
115
|
"url": "https://github.com/jagreehal/autotel",
|
|
103
116
|
"directory": "packages/autotel-devtools"
|
|
104
117
|
},
|
|
105
|
-
"license": "MIT"
|
|
106
|
-
|
|
107
|
-
"build": "tsup && vite build --config vite.widget.config.ts",
|
|
108
|
-
"dev": "tsup --watch",
|
|
109
|
-
"type-check": "svelte-check --tsconfig ./tsconfig.json && tsc --noEmit",
|
|
110
|
-
"lint": "eslint src/",
|
|
111
|
-
"test": "vitest run --config vitest.config.ts --project server && vitest run --config vitest.config.ts --project widget && vitest run --config vitest.storybook.config.ts",
|
|
112
|
-
"test:storybook": "vitest run --config vitest.storybook.config.ts",
|
|
113
|
-
"test:watch": "vitest --config vitest.config.ts",
|
|
114
|
-
"test:dist": "node scripts/check-dist-esm.mjs",
|
|
115
|
-
"storybook": "storybook dev -p 6006",
|
|
116
|
-
"build-storybook": "storybook build"
|
|
117
|
-
}
|
|
118
|
-
}
|
|
118
|
+
"license": "MIT"
|
|
119
|
+
}
|