vestig 0.16.0 → 0.19.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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/instrumentation/fetch.d.ts +61 -0
- package/dist/instrumentation/fetch.d.ts.map +1 -0
- package/dist/instrumentation/fetch.js +285 -0
- package/dist/instrumentation/fetch.js.map +1 -0
- package/dist/instrumentation/index.d.ts +19 -0
- package/dist/instrumentation/index.d.ts.map +1 -0
- package/dist/instrumentation/index.js +19 -0
- package/dist/instrumentation/index.js.map +1 -0
- package/dist/instrumentation/types.d.ts +84 -0
- package/dist/instrumentation/types.d.ts.map +1 -0
- package/dist/instrumentation/types.js +5 -0
- package/dist/instrumentation/types.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +8 -2
package/dist/index.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export { SentryTransport, SentryTransportError } from './transports/sentry';
|
|
|
23
23
|
export { span, spanSync, startSpan, endSpan, getActiveSpan, withActiveSpan, SpanImpl, clearActiveSpans, getActiveSpanStackDepth, withSpanContext, withSpanContextAsync, } from './tracing';
|
|
24
24
|
export { registerSpanProcessor, unregisterSpanProcessor, getSpanProcessors, flushSpanProcessors, shutdownSpanProcessors, } from './otlp';
|
|
25
25
|
export type { SpanProcessor } from './otlp';
|
|
26
|
+
export { instrumentFetch, uninstrumentFetch, isFetchInstrumented } from './instrumentation';
|
|
27
|
+
export type { InstrumentFetchOptions } from './instrumentation';
|
|
26
28
|
export { createSampler, createSamplerFromConfig, createProbabilitySampler, createRateLimitSampler, createNamespaceSampler, createCompositeSampler, } from './sampling';
|
|
27
29
|
export { createWideEvent, WideEventBuilderImpl, getActiveWideEvent, withWideEvent, withWideEventAsync, } from './wide-events';
|
|
28
30
|
export type { WideEvent, WideEventBuilder, WideEventConfig, WideEventContext, WideEventEndOptions, WideEventFields, WideEventStatus, TailSamplingConfig, } from './wide-events';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -32,6 +32,8 @@ clearActiveSpans, getActiveSpanStackDepth, withSpanContext, withSpanContextAsync
|
|
|
32
32
|
export {
|
|
33
33
|
// Span processor registration
|
|
34
34
|
registerSpanProcessor, unregisterSpanProcessor, getSpanProcessors, flushSpanProcessors, shutdownSpanProcessors, } from './otlp';
|
|
35
|
+
// Auto-Instrumentation
|
|
36
|
+
export { instrumentFetch, uninstrumentFetch, isFetchInstrumented } from './instrumentation';
|
|
35
37
|
// Sampling - factory functions for creating samplers
|
|
36
38
|
export { createSampler, createSamplerFromConfig, createProbabilitySampler, createRateLimitSampler, createNamespaceSampler, createCompositeSampler, } from './sampling';
|
|
37
39
|
// Wide Events - canonical log lines for comprehensive request context
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AA0ClF,oBAAoB;AACpB,OAAO,EACN,OAAO,EACP,YAAY,EACZ,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,GACT,MAAM,WAAW,CAAA;AAGlB,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE/D,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAElE,qBAAqB;AACrB,OAAO,EACN,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB;AACjB,uCAAuC;AACvC,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACnB,MAAM,WAAW,CAAA;AAGlB,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,EACN,SAAS,EACT,QAAQ,EACR,eAAe,EACf,SAAS,EACT,YAAY,EACZ,eAAe,EACf,OAAO,GACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE3E,+CAA+C;AAC/C,OAAO,EACN,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,aAAa,EACb,cAAc,EACd,QAAQ;AACR,6CAA6C;AAC7C,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,GACpB,MAAM,WAAW,CAAA;AAElB,wCAAwC;AACxC,OAAO;AACN,8BAA8B;AAC9B,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,GACtB,MAAM,QAAQ,CAAA;AAGf,qDAAqD;AACrD,OAAO,EACN,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACtB,MAAM,YAAY,CAAA;AAEnB,sEAAsE;AACtE,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,GAClB,MAAM,eAAe,CAAA;AAYtB,qCAAqC;AACrC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAGnF,wCAAwC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,YAAY,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AA0ClF,oBAAoB;AACpB,OAAO,EACN,OAAO,EACP,YAAY,EACZ,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,GACT,MAAM,WAAW,CAAA;AAGlB,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE/D,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAElE,qBAAqB;AACrB,OAAO,EACN,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB;AACjB,uCAAuC;AACvC,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACnB,MAAM,WAAW,CAAA;AAGlB,YAAY;AACZ,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,EACN,SAAS,EACT,QAAQ,EACR,eAAe,EACf,SAAS,EACT,YAAY,EACZ,eAAe,EACf,OAAO,GACP,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE3E,+CAA+C;AAC/C,OAAO,EACN,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,OAAO,EACP,aAAa,EACb,cAAc,EACd,QAAQ;AACR,6CAA6C;AAC7C,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,GACpB,MAAM,WAAW,CAAA;AAElB,wCAAwC;AACxC,OAAO;AACN,8BAA8B;AAC9B,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,GACtB,MAAM,QAAQ,CAAA;AAGf,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAG3F,qDAAqD;AACrD,OAAO,EACN,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACtB,MAAM,YAAY,CAAA;AAEnB,sEAAsE;AACtE,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,GAClB,MAAM,eAAe,CAAA;AAYtB,qCAAqC;AACrC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAGnF,wCAAwC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch Auto-Instrumentation
|
|
3
|
+
*
|
|
4
|
+
* Automatically creates spans for all fetch() calls.
|
|
5
|
+
* Call once in your instrumentation.ts file.
|
|
6
|
+
*/
|
|
7
|
+
import type { InstrumentFetchOptions } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Instrument fetch to automatically create spans
|
|
10
|
+
*
|
|
11
|
+
* Call this once in your instrumentation.ts file.
|
|
12
|
+
* All subsequent fetch() calls will automatically create spans.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // instrumentation.ts
|
|
17
|
+
* import { instrumentFetch } from 'vestig'
|
|
18
|
+
*
|
|
19
|
+
* export function register() {
|
|
20
|
+
* instrumentFetch({
|
|
21
|
+
* spanNamePrefix: 'http.client',
|
|
22
|
+
* captureHeaders: ['content-type', 'x-request-id'],
|
|
23
|
+
* ignoreUrls: ['/health', '/metrics', /^\/_next/],
|
|
24
|
+
* })
|
|
25
|
+
* }
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @example With all options
|
|
29
|
+
* ```typescript
|
|
30
|
+
* instrumentFetch({
|
|
31
|
+
* spanNamePrefix: 'fetch',
|
|
32
|
+
* captureHeaders: ['content-type'],
|
|
33
|
+
* ignoreUrls: [/health/, /metrics/],
|
|
34
|
+
* propagateContext: true,
|
|
35
|
+
* captureRequestBody: false,
|
|
36
|
+
* captureResponseBody: false,
|
|
37
|
+
* defaultAttributes: { 'app.name': 'my-app' },
|
|
38
|
+
* })
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function instrumentFetch(options?: InstrumentFetchOptions): void;
|
|
42
|
+
/**
|
|
43
|
+
* Restore original fetch (for testing)
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* import { instrumentFetch, uninstrumentFetch } from 'vestig'
|
|
48
|
+
*
|
|
49
|
+
* instrumentFetch()
|
|
50
|
+
* // ... fetch calls are instrumented
|
|
51
|
+
*
|
|
52
|
+
* uninstrumentFetch()
|
|
53
|
+
* // ... fetch is back to normal
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function uninstrumentFetch(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Check if fetch is instrumented
|
|
59
|
+
*/
|
|
60
|
+
export declare function isFetchInstrumented(): boolean;
|
|
61
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/instrumentation/fetch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAA6B,sBAAsB,EAAE,MAAM,SAAS,CAAA;AA0FhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,IAAI,CAiK1E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CASxC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch Auto-Instrumentation
|
|
3
|
+
*
|
|
4
|
+
* Automatically creates spans for all fetch() calls.
|
|
5
|
+
* Call once in your instrumentation.ts file.
|
|
6
|
+
*/
|
|
7
|
+
import { span } from '../tracing/functions';
|
|
8
|
+
import { getActiveSpan } from '../tracing/context';
|
|
9
|
+
import { createTraceparent } from '../context/correlation';
|
|
10
|
+
/**
|
|
11
|
+
* Global state for fetch instrumentation
|
|
12
|
+
*/
|
|
13
|
+
const state = {
|
|
14
|
+
isInstrumented: false,
|
|
15
|
+
originalFetch: null,
|
|
16
|
+
options: null,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Default span name prefix
|
|
20
|
+
*/
|
|
21
|
+
const DEFAULT_SPAN_PREFIX = 'http.client';
|
|
22
|
+
/**
|
|
23
|
+
* Default options
|
|
24
|
+
*/
|
|
25
|
+
const DEFAULT_OPTIONS = {
|
|
26
|
+
spanNamePrefix: DEFAULT_SPAN_PREFIX,
|
|
27
|
+
propagateContext: true,
|
|
28
|
+
captureRequestBody: false,
|
|
29
|
+
maxRequestBodyLength: 1024,
|
|
30
|
+
captureResponseBody: false,
|
|
31
|
+
maxResponseBodyLength: 1024,
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Check if a URL should be ignored
|
|
35
|
+
*/
|
|
36
|
+
function shouldIgnoreUrl(url, ignorePatterns) {
|
|
37
|
+
if (!ignorePatterns || ignorePatterns.length === 0)
|
|
38
|
+
return false;
|
|
39
|
+
for (const pattern of ignorePatterns) {
|
|
40
|
+
if (typeof pattern === 'string') {
|
|
41
|
+
if (url.includes(pattern))
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
else if (pattern instanceof RegExp) {
|
|
45
|
+
if (pattern.test(url))
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Parse URL safely
|
|
53
|
+
*/
|
|
54
|
+
function parseUrl(input) {
|
|
55
|
+
try {
|
|
56
|
+
if (input instanceof URL)
|
|
57
|
+
return input;
|
|
58
|
+
if (input instanceof Request)
|
|
59
|
+
return new URL(input.url);
|
|
60
|
+
return new URL(input, globalThis.location?.origin ?? 'http://localhost');
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Generate span name
|
|
68
|
+
*/
|
|
69
|
+
function generateSpanName(method, url, options) {
|
|
70
|
+
if (options.spanNameGenerator) {
|
|
71
|
+
return options.spanNameGenerator(method, url);
|
|
72
|
+
}
|
|
73
|
+
const prefix = options.spanNamePrefix ?? DEFAULT_SPAN_PREFIX;
|
|
74
|
+
const host = url.hostname;
|
|
75
|
+
const path = url.pathname;
|
|
76
|
+
return `${prefix} ${method} ${host}${path}`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Truncate string to max length
|
|
80
|
+
*/
|
|
81
|
+
function truncate(str, maxLength) {
|
|
82
|
+
if (str.length <= maxLength)
|
|
83
|
+
return str;
|
|
84
|
+
return `${str.slice(0, maxLength)}... (truncated)`;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Instrument fetch to automatically create spans
|
|
88
|
+
*
|
|
89
|
+
* Call this once in your instrumentation.ts file.
|
|
90
|
+
* All subsequent fetch() calls will automatically create spans.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* // instrumentation.ts
|
|
95
|
+
* import { instrumentFetch } from 'vestig'
|
|
96
|
+
*
|
|
97
|
+
* export function register() {
|
|
98
|
+
* instrumentFetch({
|
|
99
|
+
* spanNamePrefix: 'http.client',
|
|
100
|
+
* captureHeaders: ['content-type', 'x-request-id'],
|
|
101
|
+
* ignoreUrls: ['/health', '/metrics', /^\/_next/],
|
|
102
|
+
* })
|
|
103
|
+
* }
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* @example With all options
|
|
107
|
+
* ```typescript
|
|
108
|
+
* instrumentFetch({
|
|
109
|
+
* spanNamePrefix: 'fetch',
|
|
110
|
+
* captureHeaders: ['content-type'],
|
|
111
|
+
* ignoreUrls: [/health/, /metrics/],
|
|
112
|
+
* propagateContext: true,
|
|
113
|
+
* captureRequestBody: false,
|
|
114
|
+
* captureResponseBody: false,
|
|
115
|
+
* defaultAttributes: { 'app.name': 'my-app' },
|
|
116
|
+
* })
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export function instrumentFetch(options = {}) {
|
|
120
|
+
// Prevent double instrumentation
|
|
121
|
+
if (state.isInstrumented) {
|
|
122
|
+
console.warn('[vestig] fetch is already instrumented');
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
// Check if fetch exists
|
|
126
|
+
if (typeof globalThis.fetch !== 'function') {
|
|
127
|
+
console.warn('[vestig] fetch is not available in this environment');
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// Store original fetch
|
|
131
|
+
state.originalFetch = globalThis.fetch;
|
|
132
|
+
state.options = options;
|
|
133
|
+
// Merge options with defaults
|
|
134
|
+
const mergedOptions = { ...DEFAULT_OPTIONS, ...options };
|
|
135
|
+
// Create instrumented fetch
|
|
136
|
+
const instrumentedFetch = async (input, init) => {
|
|
137
|
+
const originalFetch = state.originalFetch;
|
|
138
|
+
// Parse URL
|
|
139
|
+
const url = parseUrl(input);
|
|
140
|
+
if (!url) {
|
|
141
|
+
// Can't parse URL, just call original
|
|
142
|
+
return originalFetch(input, init);
|
|
143
|
+
}
|
|
144
|
+
// Check if URL should be ignored
|
|
145
|
+
const fullUrl = url.toString();
|
|
146
|
+
if (shouldIgnoreUrl(fullUrl, options.ignoreUrls)) {
|
|
147
|
+
return originalFetch(input, init);
|
|
148
|
+
}
|
|
149
|
+
// Determine method
|
|
150
|
+
const method = init?.method ?? (input instanceof Request ? input.method : 'GET');
|
|
151
|
+
// Generate span name
|
|
152
|
+
const spanName = generateSpanName(method.toUpperCase(), url, mergedOptions);
|
|
153
|
+
// Execute fetch within span
|
|
154
|
+
return span(spanName, async (s) => {
|
|
155
|
+
// Set HTTP attributes (following OpenTelemetry semantic conventions)
|
|
156
|
+
s.setAttribute('http.request.method', method.toUpperCase());
|
|
157
|
+
s.setAttribute('url.full', fullUrl);
|
|
158
|
+
s.setAttribute('url.scheme', url.protocol.replace(':', ''));
|
|
159
|
+
s.setAttribute('server.address', url.hostname);
|
|
160
|
+
if (url.port) {
|
|
161
|
+
s.setAttribute('server.port', Number.parseInt(url.port, 10));
|
|
162
|
+
}
|
|
163
|
+
s.setAttribute('url.path', url.pathname);
|
|
164
|
+
if (url.search) {
|
|
165
|
+
s.setAttribute('url.query', url.search.slice(1));
|
|
166
|
+
}
|
|
167
|
+
// Add default attributes
|
|
168
|
+
if (options.defaultAttributes) {
|
|
169
|
+
for (const [key, value] of Object.entries(options.defaultAttributes)) {
|
|
170
|
+
s.setAttribute(key, value);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Prepare headers
|
|
174
|
+
const headers = new Headers(init?.headers);
|
|
175
|
+
// Capture request headers
|
|
176
|
+
if (options.captureHeaders) {
|
|
177
|
+
for (const headerName of options.captureHeaders) {
|
|
178
|
+
const value = headers.get(headerName);
|
|
179
|
+
if (value) {
|
|
180
|
+
s.setAttribute(`http.request.header.${headerName.toLowerCase()}`, value);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
// Propagate trace context
|
|
185
|
+
if (mergedOptions.propagateContext) {
|
|
186
|
+
const activeSpan = getActiveSpan();
|
|
187
|
+
if (activeSpan) {
|
|
188
|
+
const traceparent = createTraceparent(activeSpan.traceId, s.spanId);
|
|
189
|
+
headers.set('traceparent', traceparent);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Capture request body
|
|
193
|
+
if (mergedOptions.captureRequestBody && init?.body) {
|
|
194
|
+
try {
|
|
195
|
+
const bodyStr = typeof init.body === 'string' ? init.body : JSON.stringify(init.body);
|
|
196
|
+
s.setAttribute('http.request.body', truncate(bodyStr, mergedOptions.maxRequestBodyLength));
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
// Ignore body capture errors
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// Make the request
|
|
203
|
+
const startTime = performance.now();
|
|
204
|
+
try {
|
|
205
|
+
const response = await originalFetch(input, {
|
|
206
|
+
...init,
|
|
207
|
+
headers,
|
|
208
|
+
});
|
|
209
|
+
// Set response attributes
|
|
210
|
+
const duration = performance.now() - startTime;
|
|
211
|
+
s.setAttribute('http.response.status_code', response.status);
|
|
212
|
+
s.setAttribute('http.response.duration_ms', Math.round(duration));
|
|
213
|
+
// Capture response headers
|
|
214
|
+
if (options.captureHeaders) {
|
|
215
|
+
for (const headerName of options.captureHeaders) {
|
|
216
|
+
const value = response.headers.get(headerName);
|
|
217
|
+
if (value) {
|
|
218
|
+
s.setAttribute(`http.response.header.${headerName.toLowerCase()}`, value);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Set status based on response
|
|
223
|
+
if (response.ok) {
|
|
224
|
+
s.setStatus('ok');
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
s.setStatus('error', `HTTP ${response.status}`);
|
|
228
|
+
}
|
|
229
|
+
// Capture response body (need to clone to avoid consuming)
|
|
230
|
+
if (mergedOptions.captureResponseBody) {
|
|
231
|
+
try {
|
|
232
|
+
const cloned = response.clone();
|
|
233
|
+
const text = await cloned.text();
|
|
234
|
+
s.setAttribute('http.response.body', truncate(text, mergedOptions.maxResponseBodyLength));
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
// Ignore body capture errors
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return response;
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
// Network or other error
|
|
244
|
+
const duration = performance.now() - startTime;
|
|
245
|
+
s.setAttribute('http.response.duration_ms', Math.round(duration));
|
|
246
|
+
s.setAttribute('error.type', error instanceof Error ? error.name : 'Error');
|
|
247
|
+
s.setStatus('error', error instanceof Error ? error.message : String(error));
|
|
248
|
+
throw error;
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
};
|
|
252
|
+
// Replace global fetch
|
|
253
|
+
globalThis.fetch = instrumentedFetch;
|
|
254
|
+
state.isInstrumented = true;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Restore original fetch (for testing)
|
|
258
|
+
*
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* import { instrumentFetch, uninstrumentFetch } from 'vestig'
|
|
262
|
+
*
|
|
263
|
+
* instrumentFetch()
|
|
264
|
+
* // ... fetch calls are instrumented
|
|
265
|
+
*
|
|
266
|
+
* uninstrumentFetch()
|
|
267
|
+
* // ... fetch is back to normal
|
|
268
|
+
* ```
|
|
269
|
+
*/
|
|
270
|
+
export function uninstrumentFetch() {
|
|
271
|
+
if (!state.isInstrumented || !state.originalFetch) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
globalThis.fetch = state.originalFetch;
|
|
275
|
+
state.isInstrumented = false;
|
|
276
|
+
state.originalFetch = null;
|
|
277
|
+
state.options = null;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Check if fetch is instrumented
|
|
281
|
+
*/
|
|
282
|
+
export function isFetchInstrumented() {
|
|
283
|
+
return state.isInstrumented;
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/instrumentation/fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Instrumentation for vestig
|
|
3
|
+
*
|
|
4
|
+
* @example Basic usage
|
|
5
|
+
* ```typescript
|
|
6
|
+
* // instrumentation.ts
|
|
7
|
+
* import { instrumentFetch } from 'vestig'
|
|
8
|
+
*
|
|
9
|
+
* export function register() {
|
|
10
|
+
* instrumentFetch({
|
|
11
|
+
* captureHeaders: ['content-type'],
|
|
12
|
+
* ignoreUrls: ['/health', /^\/_next/],
|
|
13
|
+
* })
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export { instrumentFetch, uninstrumentFetch, isFetchInstrumented } from './fetch';
|
|
18
|
+
export type { InstrumentFetchOptions, FetchInstrumentationState } from './types';
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/instrumentation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAGjF,YAAY,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Instrumentation for vestig
|
|
3
|
+
*
|
|
4
|
+
* @example Basic usage
|
|
5
|
+
* ```typescript
|
|
6
|
+
* // instrumentation.ts
|
|
7
|
+
* import { instrumentFetch } from 'vestig'
|
|
8
|
+
*
|
|
9
|
+
* export function register() {
|
|
10
|
+
* instrumentFetch({
|
|
11
|
+
* captureHeaders: ['content-type'],
|
|
12
|
+
* ignoreUrls: ['/health', /^\/_next/],
|
|
13
|
+
* })
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
// Fetch instrumentation
|
|
18
|
+
export { instrumentFetch, uninstrumentFetch, isFetchInstrumented } from './fetch';
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/instrumentation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,wBAAwB;AACxB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for auto-instrumentation
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Options for instrumenting fetch
|
|
6
|
+
*/
|
|
7
|
+
export interface InstrumentFetchOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Prefix for span names
|
|
10
|
+
* @default 'http.client'
|
|
11
|
+
* @example 'http.client' → 'http.client GET api.example.com'
|
|
12
|
+
*/
|
|
13
|
+
spanNamePrefix?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Headers to capture as span attributes
|
|
16
|
+
* Case-insensitive header names
|
|
17
|
+
* @example ['content-type', 'x-request-id']
|
|
18
|
+
*/
|
|
19
|
+
captureHeaders?: string[];
|
|
20
|
+
/**
|
|
21
|
+
* URL patterns to ignore (no spans created)
|
|
22
|
+
* Can be strings (prefix match) or RegExp
|
|
23
|
+
* @example ['/health', '/metrics', /^\/_next/]
|
|
24
|
+
*/
|
|
25
|
+
ignoreUrls?: (string | RegExp)[];
|
|
26
|
+
/**
|
|
27
|
+
* Whether to propagate trace context via headers
|
|
28
|
+
* Adds traceparent header to outgoing requests
|
|
29
|
+
* @default true
|
|
30
|
+
*/
|
|
31
|
+
propagateContext?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Custom span name generator
|
|
34
|
+
* @param method HTTP method
|
|
35
|
+
* @param url Full URL
|
|
36
|
+
* @returns Custom span name
|
|
37
|
+
*/
|
|
38
|
+
spanNameGenerator?: (method: string, url: URL) => string;
|
|
39
|
+
/**
|
|
40
|
+
* Capture request body as span attribute
|
|
41
|
+
* Warning: May contain sensitive data
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
captureRequestBody?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Maximum request body length to capture (characters)
|
|
47
|
+
* @default 1024
|
|
48
|
+
*/
|
|
49
|
+
maxRequestBodyLength?: number;
|
|
50
|
+
/**
|
|
51
|
+
* Capture response body as span attribute
|
|
52
|
+
* Warning: May contain sensitive data
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
captureResponseBody?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Maximum response body length to capture (characters)
|
|
58
|
+
* @default 1024
|
|
59
|
+
*/
|
|
60
|
+
maxResponseBodyLength?: number;
|
|
61
|
+
/**
|
|
62
|
+
* Additional attributes to add to all spans
|
|
63
|
+
* @example { 'app.version': '1.0.0' }
|
|
64
|
+
*/
|
|
65
|
+
defaultAttributes?: Record<string, unknown>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Internal state for fetch instrumentation
|
|
69
|
+
*/
|
|
70
|
+
export interface FetchInstrumentationState {
|
|
71
|
+
/**
|
|
72
|
+
* Whether fetch has been instrumented
|
|
73
|
+
*/
|
|
74
|
+
isInstrumented: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Original fetch function (for restore)
|
|
77
|
+
*/
|
|
78
|
+
originalFetch: typeof globalThis.fetch | null;
|
|
79
|
+
/**
|
|
80
|
+
* Current options
|
|
81
|
+
*/
|
|
82
|
+
options: InstrumentFetchOptions | null;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/instrumentation/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IAEzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAEhC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;IAExD;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAE5B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC;;OAEG;IACH,cAAc,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,aAAa,EAAE,OAAO,UAAU,CAAC,KAAK,GAAG,IAAI,CAAA;IAE7C;;OAEG;IACH,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAA;CACtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/instrumentation/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vestig",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"description": "Leave a trace. A modern, runtime-agnostic structured logging library with automatic PII sanitization and context propagation.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
"./otlp": {
|
|
18
18
|
"types": "./dist/otlp/index.d.ts",
|
|
19
19
|
"import": "./dist/otlp/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./instrumentation": {
|
|
22
|
+
"types": "./dist/instrumentation/index.d.ts",
|
|
23
|
+
"import": "./dist/instrumentation/index.js"
|
|
20
24
|
}
|
|
21
25
|
},
|
|
22
26
|
"files": ["dist"],
|
|
@@ -58,7 +62,9 @@
|
|
|
58
62
|
"jaeger",
|
|
59
63
|
"honeycomb",
|
|
60
64
|
"grafana",
|
|
61
|
-
"spans"
|
|
65
|
+
"spans",
|
|
66
|
+
"auto-instrumentation",
|
|
67
|
+
"fetch-instrumentation"
|
|
62
68
|
],
|
|
63
69
|
"author": "Arakiss",
|
|
64
70
|
"license": "MIT",
|