@ereo/trace 0.1.28

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 (53) hide show
  1. package/README.md +447 -0
  2. package/dist/cli-reporter.d.ts +37 -0
  3. package/dist/cli-reporter.d.ts.map +1 -0
  4. package/dist/client.d.ts +59 -0
  5. package/dist/client.d.ts.map +1 -0
  6. package/dist/client.js +193 -0
  7. package/dist/collector.d.ts +29 -0
  8. package/dist/collector.d.ts.map +1 -0
  9. package/dist/context.d.ts +17 -0
  10. package/dist/context.d.ts.map +1 -0
  11. package/dist/index.d.ts +24 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +1367 -0
  14. package/dist/instrumentors/auth.d.ts +15 -0
  15. package/dist/instrumentors/auth.d.ts.map +1 -0
  16. package/dist/instrumentors/build.d.ts +18 -0
  17. package/dist/instrumentors/build.d.ts.map +1 -0
  18. package/dist/instrumentors/data.d.ts +31 -0
  19. package/dist/instrumentors/data.d.ts.map +1 -0
  20. package/dist/instrumentors/database.d.ts +26 -0
  21. package/dist/instrumentors/database.d.ts.map +1 -0
  22. package/dist/instrumentors/errors.d.ts +17 -0
  23. package/dist/instrumentors/errors.d.ts.map +1 -0
  24. package/dist/instrumentors/forms.d.ts +22 -0
  25. package/dist/instrumentors/forms.d.ts.map +1 -0
  26. package/dist/instrumentors/index.d.ts +15 -0
  27. package/dist/instrumentors/index.d.ts.map +1 -0
  28. package/dist/instrumentors/islands.d.ts +19 -0
  29. package/dist/instrumentors/islands.d.ts.map +1 -0
  30. package/dist/instrumentors/request.d.ts +24 -0
  31. package/dist/instrumentors/request.d.ts.map +1 -0
  32. package/dist/instrumentors/routing.d.ts +24 -0
  33. package/dist/instrumentors/routing.d.ts.map +1 -0
  34. package/dist/instrumentors/rpc.d.ts +16 -0
  35. package/dist/instrumentors/rpc.d.ts.map +1 -0
  36. package/dist/instrumentors/signals.d.ts +21 -0
  37. package/dist/instrumentors/signals.d.ts.map +1 -0
  38. package/dist/noop.d.ts +24 -0
  39. package/dist/noop.d.ts.map +1 -0
  40. package/dist/noop.js +45 -0
  41. package/dist/ring-buffer.d.ts +27 -0
  42. package/dist/ring-buffer.d.ts.map +1 -0
  43. package/dist/span.d.ts +45 -0
  44. package/dist/span.d.ts.map +1 -0
  45. package/dist/tracer.d.ts +42 -0
  46. package/dist/tracer.d.ts.map +1 -0
  47. package/dist/transport.d.ts +69 -0
  48. package/dist/transport.d.ts.map +1 -0
  49. package/dist/types.d.ts +120 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/viewer.d.ts +20 -0
  52. package/dist/viewer.d.ts.map +1 -0
  53. package/package.json +50 -0
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @ereo/trace - Core type definitions
3
+ *
4
+ * All interfaces and types for the tracing system.
5
+ */
6
+ /** 16-byte hex trace identifier */
7
+ export type TraceId = string;
8
+ /** 8-byte hex span identifier */
9
+ export type SpanId = string;
10
+ /** The framework layer a span belongs to */
11
+ export type SpanLayer = 'request' | 'routing' | 'data' | 'forms' | 'signals' | 'rpc' | 'database' | 'auth' | 'islands' | 'build' | 'errors' | 'custom';
12
+ /** Final status of a span */
13
+ export type SpanStatus = 'ok' | 'error' | 'timeout';
14
+ /** A timestamped event within a span */
15
+ export interface SpanEvent {
16
+ name: string;
17
+ time: number;
18
+ attributes?: Record<string, string | number | boolean>;
19
+ }
20
+ /** Completed span data (immutable after end()) */
21
+ export interface SpanData {
22
+ id: SpanId;
23
+ traceId: TraceId;
24
+ parentId: SpanId | null;
25
+ name: string;
26
+ layer: SpanLayer;
27
+ status: SpanStatus;
28
+ startTime: number;
29
+ endTime: number;
30
+ duration: number;
31
+ attributes: Record<string, string | number | boolean>;
32
+ events: SpanEvent[];
33
+ children: SpanId[];
34
+ }
35
+ /** Origin of a trace (server or client) */
36
+ export type TraceOrigin = 'server' | 'client';
37
+ /** Metadata about a trace */
38
+ export interface TraceMetadata {
39
+ origin: TraceOrigin;
40
+ method?: string;
41
+ pathname?: string;
42
+ statusCode?: number;
43
+ routePattern?: string;
44
+ }
45
+ /** A complete trace with all its spans */
46
+ export interface TraceData {
47
+ id: TraceId;
48
+ rootSpanId: SpanId;
49
+ startTime: number;
50
+ endTime: number;
51
+ duration: number;
52
+ spans: Map<SpanId, SpanData>;
53
+ metadata: TraceMetadata;
54
+ }
55
+ /** Active span handle for recording data */
56
+ export interface Span {
57
+ /** The span's unique ID */
58
+ readonly id: SpanId;
59
+ /** The trace this span belongs to */
60
+ readonly traceId: TraceId;
61
+ /** Set an attribute on the span */
62
+ setAttribute(key: string, value: string | number | boolean): void;
63
+ /** Record a timestamped event */
64
+ event(name: string, attributes?: Record<string, string | number | boolean>): void;
65
+ /** End the span (records end time) */
66
+ end(): void;
67
+ /** Record an error and set status to 'error' */
68
+ error(err: unknown): void;
69
+ /** Create a child span */
70
+ child(name: string, layer: SpanLayer): Span;
71
+ }
72
+ /** Tracer interface for creating and managing traces */
73
+ export interface Tracer {
74
+ /** Start a new trace with a root span */
75
+ startTrace(name: string, layer: SpanLayer, metadata?: Partial<TraceMetadata>): Span;
76
+ /** Start a new span as a child of the current active span */
77
+ startSpan(name: string, layer: SpanLayer): Span;
78
+ /** Get the currently active span, if any */
79
+ activeSpan(): Span | null;
80
+ /** Execute a function within a span, automatically ending it on completion */
81
+ withSpan<T>(name: string, layer: SpanLayer, fn: (span: Span) => T | Promise<T>): T | Promise<T>;
82
+ /** Get all stored traces */
83
+ getTraces(): TraceData[];
84
+ /** Get a single trace by ID */
85
+ getTrace(id: TraceId): TraceData | undefined;
86
+ /** Subscribe to trace events */
87
+ subscribe(cb: (event: TraceStreamEvent) => void): () => void;
88
+ /** Merge client-side spans into an existing completed trace */
89
+ mergeClientSpans(traceId: TraceId, spans: SpanData[]): void;
90
+ }
91
+ /** Events emitted by the tracer for live streaming */
92
+ export type TraceStreamEvent = {
93
+ type: 'trace:start';
94
+ trace: TraceData;
95
+ } | {
96
+ type: 'trace:end';
97
+ trace: TraceData;
98
+ } | {
99
+ type: 'span:start';
100
+ span: SpanData;
101
+ } | {
102
+ type: 'span:end';
103
+ span: SpanData;
104
+ } | {
105
+ type: 'span:event';
106
+ spanId: SpanId;
107
+ event: SpanEvent;
108
+ };
109
+ /** Configuration for the tracer */
110
+ export interface TracerConfig {
111
+ /** Maximum number of completed traces to store (default: 200) */
112
+ maxTraces?: number;
113
+ /** Maximum spans per trace before capping (default: 500) */
114
+ maxSpansPerTrace?: number;
115
+ /** Layers to instrument (default: all) */
116
+ layers?: SpanLayer[];
117
+ /** Minimum duration (ms) to record (default: 0) */
118
+ minDuration?: number;
119
+ }
120
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @ereo/trace - Standalone Trace Viewer
3
+ *
4
+ * Self-contained HTML page at `/__ereo/traces`.
5
+ * Vanilla JS timeline renderer (no React dependency).
6
+ * Can be exported for sharing/bug reports.
7
+ */
8
+ import type { Tracer, TraceData } from './types';
9
+ /** Generate the standalone trace viewer HTML */
10
+ export declare function generateViewerHTML(traces: TraceData[]): string;
11
+ /**
12
+ * Create an HTTP handler that serves the standalone trace viewer.
13
+ */
14
+ export declare function createViewerHandler(tracer: Tracer): (request: Request) => Response;
15
+ /**
16
+ * Export traces as a self-contained HTML file string.
17
+ * For CLI: `ereo trace export > traces.html`
18
+ */
19
+ export declare function exportTracesHTML(tracer: Tracer): string;
20
+ //# sourceMappingURL=viewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewer.d.ts","sourceRoot":"","sources":["../src/viewer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAG3D,gDAAgD;AAChD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CA2M9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,CAQlF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@ereo/trace",
3
+ "version": "0.1.28",
4
+ "license": "MIT",
5
+ "author": "Ereo Team",
6
+ "homepage": "https://ereo.dev",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/ereojs/ereo.git",
10
+ "directory": "packages/trace"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/ereojs/ereo/issues"
14
+ },
15
+ "description": "Full-stack developer observability and tracing for EreoJS framework",
16
+ "type": "module",
17
+ "main": "./dist/index.js",
18
+ "types": "./dist/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "import": "./dist/index.js"
23
+ },
24
+ "./noop": {
25
+ "types": "./dist/noop.d.ts",
26
+ "import": "./dist/noop.js"
27
+ },
28
+ "./client": {
29
+ "types": "./dist/client.d.ts",
30
+ "import": "./dist/client.js"
31
+ }
32
+ },
33
+ "files": [
34
+ "dist"
35
+ ],
36
+ "scripts": {
37
+ "build": "bun build ./src/index.ts ./src/noop.ts ./src/client.ts --outdir ./dist --target bun --external @ereo/core && bun run build:types",
38
+ "build:types": "tsc --emitDeclarationOnly --outDir dist",
39
+ "dev": "bun build ./src/index.ts ./src/noop.ts ./src/client.ts --outdir ./dist --target bun --watch",
40
+ "test": "bun test",
41
+ "typecheck": "tsc --noEmit"
42
+ },
43
+ "peerDependencies": {
44
+ "@ereo/core": "^0.1.28"
45
+ },
46
+ "devDependencies": {
47
+ "@types/bun": "^1.1.0",
48
+ "typescript": "^5.4.0"
49
+ }
50
+ }