@pingops/otel 0.1.0 → 0.1.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.
- package/dist/config-store.d.ts +26 -0
- package/dist/config-store.d.ts.map +1 -0
- package/dist/config-store.js +26 -0
- package/dist/config-store.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/instrumentations/http/http.d.ts +13 -0
- package/dist/instrumentations/http/http.d.ts.map +1 -0
- package/dist/instrumentations/{http.js → http/http.js} +6 -16
- package/dist/instrumentations/http/http.js.map +1 -0
- package/dist/instrumentations/http/pingops-http.d.ts +52 -0
- package/dist/instrumentations/http/pingops-http.d.ts.map +1 -0
- package/dist/instrumentations/http/pingops-http.js +381 -0
- package/dist/instrumentations/http/pingops-http.js.map +1 -0
- package/dist/instrumentations/index.d.ts.map +1 -1
- package/dist/instrumentations/index.js +6 -10
- package/dist/instrumentations/index.js.map +1 -1
- package/dist/instrumentations/undici/pingops-undici.d.ts +25 -0
- package/dist/instrumentations/undici/pingops-undici.d.ts.map +1 -0
- package/dist/instrumentations/undici/pingops-undici.js +568 -0
- package/dist/instrumentations/undici/pingops-undici.js.map +1 -0
- package/dist/instrumentations/undici/types.d.ts +106 -0
- package/dist/instrumentations/undici/types.d.ts.map +1 -0
- package/dist/instrumentations/undici/types.js +2 -0
- package/dist/instrumentations/undici/types.js.map +1 -0
- package/dist/instrumentations/{undici.d.ts → undici/undici.d.ts} +1 -1
- package/dist/instrumentations/undici/undici.d.ts.map +1 -0
- package/dist/instrumentations/{undici.js → undici/undici.js} +1 -13
- package/dist/instrumentations/undici/undici.js.map +1 -0
- package/dist/span-processor.d.ts.map +1 -1
- package/dist/span-processor.js +31 -21
- package/dist/span-processor.js.map +1 -1
- package/dist/tracer-provider.d.ts.map +1 -1
- package/dist/tracer-provider.js +22 -20
- package/dist/tracer-provider.js.map +1 -1
- package/package.json +7 -7
- package/dist/instrumentations/body-extractor.d.ts +0 -48
- package/dist/instrumentations/body-extractor.d.ts.map +0 -1
- package/dist/instrumentations/body-extractor.js +0 -361
- package/dist/instrumentations/body-extractor.js.map +0 -1
- package/dist/instrumentations/http.d.ts +0 -12
- package/dist/instrumentations/http.d.ts.map +0 -1
- package/dist/instrumentations/http.js.map +0 -1
- package/dist/instrumentations/undici.d.ts.map +0 -1
- package/dist/instrumentations/undici.js.map +0 -1
- package/dist/processor.d.ts +0 -82
- package/dist/processor.d.ts.map +0 -1
- package/dist/processor.js +0 -264
- package/dist/processor.js.map +0 -1
- package/dist/span-wrapper.d.ts +0 -60
- package/dist/span-wrapper.d.ts.map +0 -1
- package/dist/span-wrapper.js +0 -118
- package/dist/span-wrapper.js.map +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global configuration store for PingOps processor
|
|
3
|
+
* Allows instrumentations to access processor configuration without direct coupling
|
|
4
|
+
*/
|
|
5
|
+
import type { DomainRule } from "@pingops/core";
|
|
6
|
+
interface GlobalConfig {
|
|
7
|
+
captureRequestBody?: boolean;
|
|
8
|
+
captureResponseBody?: boolean;
|
|
9
|
+
domainAllowList?: DomainRule[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Sets the global processor configuration
|
|
13
|
+
* @param config - Configuration to store
|
|
14
|
+
*/
|
|
15
|
+
export declare function setGlobalConfig(config: GlobalConfig): void;
|
|
16
|
+
/**
|
|
17
|
+
* Gets the global processor configuration
|
|
18
|
+
* @returns The stored configuration or null if not set
|
|
19
|
+
*/
|
|
20
|
+
export declare function getGlobalConfig(): GlobalConfig | null;
|
|
21
|
+
/**
|
|
22
|
+
* Clears the global configuration (useful for testing)
|
|
23
|
+
*/
|
|
24
|
+
export declare function clearGlobalConfig(): void;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=config-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../src/config-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,UAAU,YAAY;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;CAChC;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAE1D;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global configuration store for PingOps processor
|
|
3
|
+
* Allows instrumentations to access processor configuration without direct coupling
|
|
4
|
+
*/
|
|
5
|
+
let globalConfig = null;
|
|
6
|
+
/**
|
|
7
|
+
* Sets the global processor configuration
|
|
8
|
+
* @param config - Configuration to store
|
|
9
|
+
*/
|
|
10
|
+
export function setGlobalConfig(config) {
|
|
11
|
+
globalConfig = config;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Gets the global processor configuration
|
|
15
|
+
* @returns The stored configuration or null if not set
|
|
16
|
+
*/
|
|
17
|
+
export function getGlobalConfig() {
|
|
18
|
+
return globalConfig;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Clears the global configuration (useful for testing)
|
|
22
|
+
*/
|
|
23
|
+
export function clearGlobalConfig() {
|
|
24
|
+
globalConfig = null;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=config-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../src/config-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,IAAI,YAAY,GAAwB,IAAI,CAAC;AAE7C;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -42,6 +42,14 @@ export interface PingopsProcessorConfig {
|
|
|
42
42
|
* List of headers to exclude (case-insensitive, takes precedence over allow list).
|
|
43
43
|
*/
|
|
44
44
|
headersDenyList?: string[];
|
|
45
|
+
/**
|
|
46
|
+
* Capture request body.
|
|
47
|
+
*/
|
|
48
|
+
captureRequestBody?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Capture response body.
|
|
51
|
+
*/
|
|
52
|
+
captureResponseBody?: boolean;
|
|
45
53
|
/**
|
|
46
54
|
* Domain allow list rules.
|
|
47
55
|
*/
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;OAEG;IACH,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;IAE/B;;OAEG;IACH,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC;IAE9B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,SAAS,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;OAEG;IACH,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;IAE/B;;OAEG;IACH,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC;IAE9B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;;;;OASG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export { PingopsSpanProcessor } from "./span-processor";
|
|
|
5
5
|
export type { PingopsProcessorConfig } from "./config";
|
|
6
6
|
export { setPingopsTracerProvider, getPingopsTracerProvider, shutdownTracerProvider, } from "./tracer-provider";
|
|
7
7
|
export { getInstrumentations } from "./instrumentations";
|
|
8
|
-
export { createHttpInstrumentation } from "./instrumentations/http";
|
|
9
|
-
export { createUndiciInstrumentation } from "./instrumentations/undici";
|
|
8
|
+
export { createHttpInstrumentation } from "./instrumentations/http/http";
|
|
9
|
+
export { createUndiciInstrumentation } from "./instrumentations/undici/undici";
|
|
10
|
+
export { PingopsHttpInstrumentation, PingopsHttpSemanticAttributes, type PingopsHttpInstrumentationConfig, PingopsSemanticAttributes, type NetworkTimings, type PingopsInstrumentationConfig, } from "./instrumentations/http/pingops-http";
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,KAAK,gCAAgC,EACrC,yBAAyB,EACzB,KAAK,cAAc,EACnB,KAAK,4BAA4B,GAClC,MAAM,sCAAsC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
export { PingopsSpanProcessor } from "./span-processor";
|
|
5
5
|
export { setPingopsTracerProvider, getPingopsTracerProvider, shutdownTracerProvider, } from "./tracer-provider";
|
|
6
6
|
export { getInstrumentations } from "./instrumentations";
|
|
7
|
-
export { createHttpInstrumentation } from "./instrumentations/http";
|
|
8
|
-
export { createUndiciInstrumentation } from "./instrumentations/undici";
|
|
7
|
+
export { createHttpInstrumentation } from "./instrumentations/http/http";
|
|
8
|
+
export { createUndiciInstrumentation } from "./instrumentations/undici/undici";
|
|
9
|
+
export { PingopsHttpInstrumentation, PingopsHttpSemanticAttributes, PingopsSemanticAttributes, } from "./instrumentations/http/pingops-http";
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAE7B,yBAAyB,GAG1B,MAAM,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP instrumentation for OpenTelemetry
|
|
3
|
+
*/
|
|
4
|
+
import { PingopsHttpInstrumentation, type PingopsHttpInstrumentationConfig } from "./pingops-http";
|
|
5
|
+
/**
|
|
6
|
+
* Creates an HTTP instrumentation instance
|
|
7
|
+
*
|
|
8
|
+
* @param isGlobalInstrumentationEnabled - Function that checks if global instrumentation is enabled
|
|
9
|
+
* @param config - Optional configuration for the instrumentation
|
|
10
|
+
* @returns PingopsHttpInstrumentation instance
|
|
11
|
+
*/
|
|
12
|
+
export declare function createHttpInstrumentation(isGlobalInstrumentationEnabled: () => boolean, config?: Partial<PingopsHttpInstrumentationConfig>): PingopsHttpInstrumentation;
|
|
13
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/instrumentations/http/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,0BAA0B,EAC1B,KAAK,gCAAgC,EACtC,MAAM,gBAAgB,CAAC;AAExB;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,8BAA8B,EAAE,MAAM,OAAO,EAC7C,MAAM,CAAC,EAAE,OAAO,CAAC,gCAAgC,CAAC,GACjD,0BAA0B,CAa5B"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* HTTP instrumentation for OpenTelemetry
|
|
3
3
|
*/
|
|
4
|
-
import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
|
|
5
4
|
import { context } from "@opentelemetry/api";
|
|
6
5
|
import { PINGOPS_HTTP_ENABLED } from "@pingops/core";
|
|
6
|
+
import { PingopsHttpInstrumentation, } from "./pingops-http";
|
|
7
7
|
/**
|
|
8
8
|
* Creates an HTTP instrumentation instance
|
|
9
9
|
*
|
|
10
10
|
* @param isGlobalInstrumentationEnabled - Function that checks if global instrumentation is enabled
|
|
11
|
-
* @
|
|
11
|
+
* @param config - Optional configuration for the instrumentation
|
|
12
|
+
* @returns PingopsHttpInstrumentation instance
|
|
12
13
|
*/
|
|
13
|
-
export function createHttpInstrumentation(isGlobalInstrumentationEnabled) {
|
|
14
|
-
return new
|
|
14
|
+
export function createHttpInstrumentation(isGlobalInstrumentationEnabled, config) {
|
|
15
|
+
return new PingopsHttpInstrumentation({
|
|
15
16
|
ignoreIncomingRequestHook: () => true, // Only instrument outgoing requests
|
|
16
17
|
ignoreOutgoingRequestHook: () => {
|
|
17
18
|
// If global instrumentation is enabled, instrument all outgoing requests
|
|
@@ -21,18 +22,7 @@ export function createHttpInstrumentation(isGlobalInstrumentationEnabled) {
|
|
|
21
22
|
// If global instrumentation is NOT enabled, only instrument when PINGOPS_HTTP_ENABLED is true
|
|
22
23
|
return context.active().getValue(PINGOPS_HTTP_ENABLED) !== true;
|
|
23
24
|
},
|
|
24
|
-
|
|
25
|
-
const headers = request.headers;
|
|
26
|
-
for (const [key, value] of Object.entries(headers)) {
|
|
27
|
-
span.setAttribute(`http.request.header.${key.toLowerCase()}`, Array.isArray(value) ? value.join(",") : String(value));
|
|
28
|
-
}
|
|
29
|
-
},
|
|
30
|
-
responseHook: (span, response) => {
|
|
31
|
-
const headers = response.headers;
|
|
32
|
-
for (const [key, value] of Object.entries(headers)) {
|
|
33
|
-
span.setAttribute(`http.response.header.${key.toLowerCase()}`, Array.isArray(value) ? value.join(",") : String(value));
|
|
34
|
-
}
|
|
35
|
-
},
|
|
25
|
+
...config,
|
|
36
26
|
});
|
|
37
27
|
}
|
|
38
28
|
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/instrumentations/http/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,0BAA0B,GAE3B,MAAM,gBAAgB,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,8BAA6C,EAC7C,MAAkD;IAElD,OAAO,IAAI,0BAA0B,CAAC;QACpC,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,oCAAoC;QAC3E,yBAAyB,EAAE,GAAG,EAAE;YAC9B,yEAAyE;YACzE,IAAI,8BAA8B,EAAE,EAAE,CAAC;gBACrC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,8FAA8F;YAC9F,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,IAAI,CAAC;QAClE,CAAC;QACD,GAAG,MAAM;KACV,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pingops HTTP instrumentation that extends HttpInstrumentation
|
|
3
|
+
* with request/response body capture and network timing metrics
|
|
4
|
+
*/
|
|
5
|
+
import { HttpInstrumentation, HttpInstrumentationConfig } from "@opentelemetry/instrumentation-http";
|
|
6
|
+
export declare const PingopsSemanticAttributes: {
|
|
7
|
+
HTTP_REQUEST_BODY: string;
|
|
8
|
+
HTTP_RESPONSE_BODY: string;
|
|
9
|
+
NETWORK_DNS_LOOKUP_DURATION: string;
|
|
10
|
+
NETWORK_TCP_CONNECT_DURATION: string;
|
|
11
|
+
NETWORK_TLS_HANDSHAKE_DURATION: string;
|
|
12
|
+
NETWORK_TTFB_DURATION: string;
|
|
13
|
+
NETWORK_CONTENT_TRANSFER_DURATION: string;
|
|
14
|
+
};
|
|
15
|
+
export type NetworkTimings = {
|
|
16
|
+
startAt?: number;
|
|
17
|
+
dnsLookupAt?: number;
|
|
18
|
+
tcpConnectionAt?: number;
|
|
19
|
+
tlsHandshakeAt?: number;
|
|
20
|
+
firstByteAt?: number;
|
|
21
|
+
endAt?: number;
|
|
22
|
+
};
|
|
23
|
+
export interface PingopsInstrumentationConfig {
|
|
24
|
+
/**
|
|
25
|
+
* Maximum size of request body to capture in bytes
|
|
26
|
+
* @defaultValue 4096 (4 KB)
|
|
27
|
+
*/
|
|
28
|
+
maxRequestBodySize?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Maximum size of response body to capture in bytes
|
|
31
|
+
* @defaultValue 4096 (4 KB)
|
|
32
|
+
*/
|
|
33
|
+
maxResponseBodySize?: number;
|
|
34
|
+
}
|
|
35
|
+
export declare const PingopsHttpSemanticAttributes: {
|
|
36
|
+
HTTP_REQUEST_BODY: string;
|
|
37
|
+
HTTP_RESPONSE_BODY: string;
|
|
38
|
+
NETWORK_DNS_LOOKUP_DURATION: string;
|
|
39
|
+
NETWORK_TCP_CONNECT_DURATION: string;
|
|
40
|
+
NETWORK_TLS_HANDSHAKE_DURATION: string;
|
|
41
|
+
NETWORK_TTFB_DURATION: string;
|
|
42
|
+
NETWORK_CONTENT_TRANSFER_DURATION: string;
|
|
43
|
+
};
|
|
44
|
+
export interface PingopsHttpInstrumentationConfig extends HttpInstrumentationConfig, PingopsInstrumentationConfig {
|
|
45
|
+
}
|
|
46
|
+
export declare class PingopsHttpInstrumentation extends HttpInstrumentation {
|
|
47
|
+
constructor(config?: PingopsHttpInstrumentationConfig);
|
|
48
|
+
private _createConfig;
|
|
49
|
+
private _createRequestHook;
|
|
50
|
+
private _createResponseHook;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=pingops-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pingops-http.d.ts","sourceRoot":"","sources":["../../../src/instrumentations/http/pingops-http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EAG1B,MAAM,qCAAqC,CAAC;AAe7C,eAAO,MAAM,yBAAyB;;;;;;;;CAQrC,CAAC;AAGF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAuUD,eAAO,MAAM,6BAA6B;;;;;;;;CAA4B,CAAC;AAEvE,MAAM,WAAW,gCACf,SAAQ,yBAAyB,EAAE,4BAA4B;CAAG;AAEpE,qBAAa,0BAA2B,SAAQ,mBAAmB;gBACrD,MAAM,CAAC,EAAE,gCAAgC;IAKrD,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,kBAAkB;IAwE1B,OAAO,CAAC,mBAAmB;CA0E5B"}
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pingops HTTP instrumentation that extends HttpInstrumentation
|
|
3
|
+
* with request/response body capture and network timing metrics
|
|
4
|
+
*/
|
|
5
|
+
import { ClientRequest, IncomingMessage } from "http";
|
|
6
|
+
import { context } from "@opentelemetry/api";
|
|
7
|
+
import { HttpInstrumentation, } from "@opentelemetry/instrumentation-http";
|
|
8
|
+
import { PINGOPS_CAPTURE_REQUEST_BODY, PINGOPS_CAPTURE_RESPONSE_BODY, } from "@pingops/core";
|
|
9
|
+
import { getGlobalConfig } from "../../config-store";
|
|
10
|
+
// Constants
|
|
11
|
+
const DEFAULT_MAX_REQUEST_BODY_SIZE = 4 * 1024; // 4 KB
|
|
12
|
+
const DEFAULT_MAX_RESPONSE_BODY_SIZE = 4 * 1024; // 4 KB
|
|
13
|
+
const NETWORK_TIMINGS_PROP_NAME = "__networkTimings";
|
|
14
|
+
// Semantic attributes
|
|
15
|
+
export const PingopsSemanticAttributes = {
|
|
16
|
+
HTTP_REQUEST_BODY: "http.request.body",
|
|
17
|
+
HTTP_RESPONSE_BODY: "http.response.body",
|
|
18
|
+
NETWORK_DNS_LOOKUP_DURATION: "net.dns.lookup.duration",
|
|
19
|
+
NETWORK_TCP_CONNECT_DURATION: "net.tcp.connect.duration",
|
|
20
|
+
NETWORK_TLS_HANDSHAKE_DURATION: "net.tls.handshake.duration",
|
|
21
|
+
NETWORK_TTFB_DURATION: "net.ttfb.duration",
|
|
22
|
+
NETWORK_CONTENT_TRANSFER_DURATION: "net.content.transfer.duration",
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Manually flattens a nested object into dot-notation keys
|
|
26
|
+
*/
|
|
27
|
+
function flatten(obj, prefix = "") {
|
|
28
|
+
const result = {};
|
|
29
|
+
for (const key in obj) {
|
|
30
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
31
|
+
const newKey = prefix ? `${prefix}.${key}` : key;
|
|
32
|
+
const value = obj[key];
|
|
33
|
+
if (value !== null &&
|
|
34
|
+
typeof value === "object" &&
|
|
35
|
+
!Array.isArray(value) &&
|
|
36
|
+
!(value instanceof Buffer)) {
|
|
37
|
+
// Recursively flatten nested objects
|
|
38
|
+
Object.assign(result, flatten(value, newKey));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
result[newKey] = value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Sets an attribute value on a span, handling various types appropriately
|
|
49
|
+
*/
|
|
50
|
+
function setAttributeValue(span, attrName, attrValue) {
|
|
51
|
+
if (typeof attrValue === "string" ||
|
|
52
|
+
typeof attrValue === "number" ||
|
|
53
|
+
typeof attrValue === "boolean") {
|
|
54
|
+
span.setAttribute(attrName, attrValue);
|
|
55
|
+
}
|
|
56
|
+
else if (attrValue instanceof Buffer) {
|
|
57
|
+
span.setAttribute(attrName, attrValue.toString("utf8"));
|
|
58
|
+
}
|
|
59
|
+
else if (typeof attrValue == "object") {
|
|
60
|
+
span.setAttributes(flatten({
|
|
61
|
+
[attrName]: attrValue,
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
else if (Array.isArray(attrValue)) {
|
|
65
|
+
// Check whether there is any element
|
|
66
|
+
if (attrValue.length) {
|
|
67
|
+
// Try to resolve array type over first element.
|
|
68
|
+
// Other elements might have different types but this is just best effort solution.
|
|
69
|
+
const firstElement = attrValue[0];
|
|
70
|
+
if (typeof firstElement === "string" ||
|
|
71
|
+
typeof firstElement === "number" ||
|
|
72
|
+
typeof firstElement === "boolean") {
|
|
73
|
+
span.setAttribute(attrName, attrValue);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// TODO What should we do with other array types???
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
span.setAttribute(attrName, attrValue);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// TODO What should we do with other types???
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Processes network timings and sets them as span attributes (no spans created)
|
|
87
|
+
*/
|
|
88
|
+
function processNetworkTimings(span, networkTimings) {
|
|
89
|
+
// Calculate and set network timing attributes (no spans created)
|
|
90
|
+
if (networkTimings.startAt && networkTimings.dnsLookupAt) {
|
|
91
|
+
span.setAttribute(PingopsSemanticAttributes.NETWORK_DNS_LOOKUP_DURATION, networkTimings.dnsLookupAt - networkTimings.startAt);
|
|
92
|
+
}
|
|
93
|
+
if (networkTimings.dnsLookupAt && networkTimings.tcpConnectionAt) {
|
|
94
|
+
span.setAttribute(PingopsSemanticAttributes.NETWORK_TCP_CONNECT_DURATION, networkTimings.tcpConnectionAt - networkTimings.dnsLookupAt);
|
|
95
|
+
}
|
|
96
|
+
if (networkTimings.tcpConnectionAt && networkTimings.tlsHandshakeAt) {
|
|
97
|
+
span.setAttribute(PingopsSemanticAttributes.NETWORK_TLS_HANDSHAKE_DURATION, networkTimings.tlsHandshakeAt - networkTimings.tcpConnectionAt);
|
|
98
|
+
}
|
|
99
|
+
const startTTFB = networkTimings.tlsHandshakeAt || networkTimings.tcpConnectionAt;
|
|
100
|
+
if (networkTimings.firstByteAt && startTTFB) {
|
|
101
|
+
span.setAttribute(PingopsSemanticAttributes.NETWORK_TTFB_DURATION, networkTimings.firstByteAt - startTTFB);
|
|
102
|
+
}
|
|
103
|
+
if (networkTimings.firstByteAt && networkTimings.endAt) {
|
|
104
|
+
span.setAttribute(PingopsSemanticAttributes.NETWORK_CONTENT_TRANSFER_DURATION, networkTimings.endAt - networkTimings.firstByteAt);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Initializes network timings on a span
|
|
109
|
+
*/
|
|
110
|
+
function initializeNetworkTimings(span) {
|
|
111
|
+
const networkTimings = {
|
|
112
|
+
startAt: Date.now(),
|
|
113
|
+
};
|
|
114
|
+
Object.defineProperty(span, NETWORK_TIMINGS_PROP_NAME, {
|
|
115
|
+
enumerable: false,
|
|
116
|
+
configurable: true,
|
|
117
|
+
writable: false,
|
|
118
|
+
value: networkTimings,
|
|
119
|
+
});
|
|
120
|
+
return networkTimings;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Extracts domain from URL
|
|
124
|
+
*/
|
|
125
|
+
function extractDomainFromUrl(url) {
|
|
126
|
+
try {
|
|
127
|
+
const urlObj = new URL(url);
|
|
128
|
+
return urlObj.hostname;
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
const match = url.match(/^(?:https?:\/\/)?([^/]+)/);
|
|
132
|
+
return match ? match[1] : "";
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Gets domain rule configuration for a given URL
|
|
137
|
+
*/
|
|
138
|
+
function getDomainRule(url, domainAllowList) {
|
|
139
|
+
if (!domainAllowList) {
|
|
140
|
+
return undefined;
|
|
141
|
+
}
|
|
142
|
+
const domain = extractDomainFromUrl(url);
|
|
143
|
+
for (const rule of domainAllowList) {
|
|
144
|
+
if (domain === rule.domain ||
|
|
145
|
+
domain.endsWith(`.${rule.domain}`) ||
|
|
146
|
+
domain === rule.domain.slice(1)) {
|
|
147
|
+
return rule;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Determines if request body should be captured based on priority:
|
|
154
|
+
* context > domain rule > global config > default (false)
|
|
155
|
+
*/
|
|
156
|
+
function shouldCaptureRequestBody(url) {
|
|
157
|
+
const activeContext = context.active();
|
|
158
|
+
// Check context value first (from wrapHttp)
|
|
159
|
+
const contextValue = activeContext.getValue(PINGOPS_CAPTURE_REQUEST_BODY);
|
|
160
|
+
if (contextValue !== undefined) {
|
|
161
|
+
return contextValue;
|
|
162
|
+
}
|
|
163
|
+
// Check domain-specific rule
|
|
164
|
+
if (url) {
|
|
165
|
+
const globalConfig = getGlobalConfig();
|
|
166
|
+
const domainRule = getDomainRule(url, globalConfig?.domainAllowList);
|
|
167
|
+
if (domainRule?.captureRequestBody !== undefined) {
|
|
168
|
+
return domainRule.captureRequestBody;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Fall back to global config
|
|
172
|
+
const globalConfig = getGlobalConfig();
|
|
173
|
+
if (globalConfig?.captureRequestBody !== undefined) {
|
|
174
|
+
return globalConfig.captureRequestBody;
|
|
175
|
+
}
|
|
176
|
+
// Default to false
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Determines if response body should be captured based on priority:
|
|
181
|
+
* context > domain rule > global config > default (false)
|
|
182
|
+
*/
|
|
183
|
+
function shouldCaptureResponseBody(url) {
|
|
184
|
+
const activeContext = context.active();
|
|
185
|
+
// Check context value first (from wrapHttp)
|
|
186
|
+
const contextValue = activeContext.getValue(PINGOPS_CAPTURE_RESPONSE_BODY);
|
|
187
|
+
if (contextValue !== undefined) {
|
|
188
|
+
return contextValue;
|
|
189
|
+
}
|
|
190
|
+
// Check domain-specific rule
|
|
191
|
+
if (url) {
|
|
192
|
+
const globalConfig = getGlobalConfig();
|
|
193
|
+
const domainRule = getDomainRule(url, globalConfig?.domainAllowList);
|
|
194
|
+
if (domainRule?.captureResponseBody !== undefined) {
|
|
195
|
+
return domainRule.captureResponseBody;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Fall back to global config
|
|
199
|
+
const globalConfig = getGlobalConfig();
|
|
200
|
+
if (globalConfig?.captureResponseBody !== undefined) {
|
|
201
|
+
return globalConfig.captureResponseBody;
|
|
202
|
+
}
|
|
203
|
+
// Default to false
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Captures request body from string or Buffer data
|
|
208
|
+
*/
|
|
209
|
+
function captureRequestBody(span, data, maxSize, semanticAttr, url) {
|
|
210
|
+
// Check if body capture is enabled
|
|
211
|
+
if (!shouldCaptureRequestBody(url)) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
if (data.length && data.length <= maxSize) {
|
|
215
|
+
try {
|
|
216
|
+
const requestBody = typeof data === "string" ? data : data.toString("utf-8");
|
|
217
|
+
if (requestBody) {
|
|
218
|
+
setAttributeValue(span, semanticAttr, requestBody);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
catch (e) {
|
|
222
|
+
console.error("Error occurred while capturing request body:", e);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Captures response body from chunks
|
|
228
|
+
*/
|
|
229
|
+
function captureResponseBody(span, chunks, semanticAttr, url) {
|
|
230
|
+
// Check if body capture is enabled
|
|
231
|
+
if (!shouldCaptureResponseBody(url)) {
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
if (chunks && chunks.length) {
|
|
235
|
+
try {
|
|
236
|
+
const concatedChunks = Buffer.concat(chunks);
|
|
237
|
+
const responseBody = concatedChunks.toString("utf8");
|
|
238
|
+
if (responseBody) {
|
|
239
|
+
setAttributeValue(span, semanticAttr, responseBody);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
catch (e) {
|
|
243
|
+
console.error("Error occurred while capturing response body:", e);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Captures HTTP request headers as span attributes
|
|
249
|
+
*/
|
|
250
|
+
function captureRequestHeaders(span, headers) {
|
|
251
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
252
|
+
if (value !== undefined) {
|
|
253
|
+
span.setAttribute(`pingops.http.request.header.${key.toLowerCase()}`, Array.isArray(value) ? value.join(",") : String(value));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Captures HTTP response headers as span attributes
|
|
259
|
+
*/
|
|
260
|
+
function captureResponseHeaders(span, headers) {
|
|
261
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
262
|
+
if (value !== undefined) {
|
|
263
|
+
span.setAttribute(`pingops.http.response.header.${key.toLowerCase()}`, Array.isArray(value) ? value.join(",") : String(value));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
// Re-export semantic attributes for backward compatibility
|
|
268
|
+
export const PingopsHttpSemanticAttributes = PingopsSemanticAttributes;
|
|
269
|
+
export class PingopsHttpInstrumentation extends HttpInstrumentation {
|
|
270
|
+
constructor(config) {
|
|
271
|
+
super(config);
|
|
272
|
+
this._config = this._createConfig(config);
|
|
273
|
+
}
|
|
274
|
+
_createConfig(config) {
|
|
275
|
+
return {
|
|
276
|
+
...config,
|
|
277
|
+
requestHook: this._createRequestHook(config?.requestHook, config),
|
|
278
|
+
responseHook: this._createResponseHook(config?.responseHook, config),
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
_createRequestHook(originalRequestHook, config) {
|
|
282
|
+
return (span, request) => {
|
|
283
|
+
// Capture request headers
|
|
284
|
+
const headers = request.headers;
|
|
285
|
+
if (headers) {
|
|
286
|
+
captureRequestHeaders(span, headers);
|
|
287
|
+
}
|
|
288
|
+
if (request instanceof ClientRequest) {
|
|
289
|
+
const networkTimings = initializeNetworkTimings(span);
|
|
290
|
+
const maxRequestBodySize = config?.maxRequestBodySize || DEFAULT_MAX_REQUEST_BODY_SIZE;
|
|
291
|
+
// Extract URL from request
|
|
292
|
+
const url = request.path && request.getHeader("host")
|
|
293
|
+
? `${request.protocol || "http:"}//${request.getHeader("host")}${request.path}`
|
|
294
|
+
: undefined;
|
|
295
|
+
const originalWrite = request.write.bind(request);
|
|
296
|
+
const originalEnd = request.end.bind(request);
|
|
297
|
+
// Capture request body
|
|
298
|
+
request.write = (data) => {
|
|
299
|
+
if (typeof data === "string" || data instanceof Buffer) {
|
|
300
|
+
captureRequestBody(span, data, maxRequestBodySize, PingopsSemanticAttributes.HTTP_REQUEST_BODY, url);
|
|
301
|
+
}
|
|
302
|
+
return originalWrite(data);
|
|
303
|
+
};
|
|
304
|
+
request.end = (data) => {
|
|
305
|
+
if (typeof data === "string" || data instanceof Buffer) {
|
|
306
|
+
captureRequestBody(span, data, maxRequestBodySize, PingopsSemanticAttributes.HTTP_REQUEST_BODY, url);
|
|
307
|
+
}
|
|
308
|
+
return originalEnd(data);
|
|
309
|
+
};
|
|
310
|
+
// Track network timings
|
|
311
|
+
request.on("socket", (socket) => {
|
|
312
|
+
socket.on("lookup", () => {
|
|
313
|
+
networkTimings.dnsLookupAt = Date.now();
|
|
314
|
+
});
|
|
315
|
+
socket.on("connect", () => {
|
|
316
|
+
networkTimings.tcpConnectionAt = Date.now();
|
|
317
|
+
});
|
|
318
|
+
socket.on("secureConnect", () => {
|
|
319
|
+
networkTimings.tlsHandshakeAt = Date.now();
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
if (originalRequestHook) {
|
|
324
|
+
originalRequestHook(span, request);
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
_createResponseHook(originalResponseHook, config) {
|
|
329
|
+
return (span, response) => {
|
|
330
|
+
// Capture response headers
|
|
331
|
+
const headers = response.headers;
|
|
332
|
+
if (headers) {
|
|
333
|
+
captureResponseHeaders(span, headers);
|
|
334
|
+
}
|
|
335
|
+
if (response instanceof IncomingMessage) {
|
|
336
|
+
const networkTimings = span[NETWORK_TIMINGS_PROP_NAME];
|
|
337
|
+
const maxResponseBodySize = config?.maxResponseBodySize || DEFAULT_MAX_RESPONSE_BODY_SIZE;
|
|
338
|
+
// Extract URL from response (if available via request)
|
|
339
|
+
// Note: We can't easily get URL from IncomingMessage, so we'll rely on
|
|
340
|
+
// domain rules matching based on headers or skip domain-specific checks
|
|
341
|
+
const url = response.url || undefined;
|
|
342
|
+
let chunks = [];
|
|
343
|
+
let totalSize = 0;
|
|
344
|
+
// Only capture response body if enabled
|
|
345
|
+
const shouldCapture = shouldCaptureResponseBody(url);
|
|
346
|
+
// Capture response body
|
|
347
|
+
response.prependListener("data", (chunk) => {
|
|
348
|
+
if (!chunk || !shouldCapture) {
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
if (typeof chunk === "string" || chunk instanceof Buffer) {
|
|
352
|
+
totalSize += chunk.length;
|
|
353
|
+
if (chunks && totalSize <= maxResponseBodySize) {
|
|
354
|
+
chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
// No need to capture partial response body
|
|
358
|
+
chunks = null;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
response.prependOnceListener("end", () => {
|
|
363
|
+
if (networkTimings) {
|
|
364
|
+
networkTimings.endAt = Date.now();
|
|
365
|
+
processNetworkTimings(span, networkTimings);
|
|
366
|
+
}
|
|
367
|
+
captureResponseBody(span, chunks, PingopsSemanticAttributes.HTTP_RESPONSE_BODY, url);
|
|
368
|
+
});
|
|
369
|
+
if (networkTimings) {
|
|
370
|
+
response.once("readable", () => {
|
|
371
|
+
networkTimings.firstByteAt = Date.now();
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
if (originalResponseHook) {
|
|
376
|
+
originalResponseHook(span, response);
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
//# sourceMappingURL=pingops-http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pingops-http.js","sourceRoot":"","sources":["../../../src/instrumentations/http/pingops-http.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAkB,MAAM,MAAM,CAAC;AACtE,OAAO,EAAQ,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,mBAAmB,GAIpB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EACL,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,YAAY;AACZ,MAAM,6BAA6B,GAAW,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO;AAC/D,MAAM,8BAA8B,GAAW,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO;AAChE,MAAM,yBAAyB,GAAW,kBAAkB,CAAC;AAE7D,sBAAsB;AACtB,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,2BAA2B,EAAE,yBAAyB;IACtD,4BAA4B,EAAE,0BAA0B;IACxD,8BAA8B,EAAE,4BAA4B;IAC5D,qBAAqB,EAAE,mBAAmB;IAC1C,iCAAiC,EAAE,+BAA+B;CACnE,CAAC;AA0BF;;GAEG;AACH,SAAS,OAAO,CAAC,GAAwB,EAAE,MAAM,GAAG,EAAE;IACpD,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YACjD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YAEvB,IACE,KAAK,KAAK,IAAI;gBACd,OAAO,KAAK,KAAK,QAAQ;gBACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACrB,CAAC,CAAC,KAAK,YAAY,MAAM,CAAC,EAC1B,CAAC;gBACD,qCAAqC;gBACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAU,EAAE,QAAgB,EAAE,SAAc;IACrE,IACE,OAAO,SAAS,KAAK,QAAQ;QAC7B,OAAO,SAAS,KAAK,QAAQ;QAC7B,OAAO,SAAS,KAAK,SAAS,EAC9B,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;SAAM,IAAI,SAAS,YAAY,MAAM,EAAE,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC;SAAM,IAAI,OAAO,SAAS,IAAI,QAAQ,EAAE,CAAC;QACxC,IAAI,CAAC,aAAa,CAChB,OAAO,CAAC;YACN,CAAC,QAAQ,CAAC,EAAE,SAAS;SACtB,CAAC,CACH,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,qCAAqC;QACrC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,gDAAgD;YAChD,mFAAmF;YACnF,MAAM,YAAY,GAAQ,SAAS,CAAC,CAAC,CAAC,CAAC;YACvC,IACE,OAAO,YAAY,KAAK,QAAQ;gBAChC,OAAO,YAAY,KAAK,QAAQ;gBAChC,OAAO,YAAY,KAAK,SAAS,EACjC,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,mDAAmD;YACrD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,6CAA6C;AAC/C,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,IAAU,EACV,cAA8B;IAE9B,iEAAiE;IACjE,IAAI,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC;QACzD,IAAI,CAAC,YAAY,CACf,yBAAyB,CAAC,2BAA2B,EACrD,cAAc,CAAC,WAAW,GAAG,cAAc,CAAC,OAAO,CACpD,CAAC;IACJ,CAAC;IAED,IAAI,cAAc,CAAC,WAAW,IAAI,cAAc,CAAC,eAAe,EAAE,CAAC;QACjE,IAAI,CAAC,YAAY,CACf,yBAAyB,CAAC,4BAA4B,EACtD,cAAc,CAAC,eAAe,GAAG,cAAc,CAAC,WAAW,CAC5D,CAAC;IACJ,CAAC;IAED,IAAI,cAAc,CAAC,eAAe,IAAI,cAAc,CAAC,cAAc,EAAE,CAAC;QACpE,IAAI,CAAC,YAAY,CACf,yBAAyB,CAAC,8BAA8B,EACxD,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,eAAe,CAC/D,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GACb,cAAc,CAAC,cAAc,IAAI,cAAc,CAAC,eAAe,CAAC;IAClE,IAAI,cAAc,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;QAC5C,IAAI,CAAC,YAAY,CACf,yBAAyB,CAAC,qBAAqB,EAC/C,cAAc,CAAC,WAAW,GAAG,SAAS,CACvC,CAAC;IACJ,CAAC;IAED,IAAI,cAAc,CAAC,WAAW,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;QACvD,IAAI,CAAC,YAAY,CACf,yBAAyB,CAAC,iCAAiC,EAC3D,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,WAAW,CAClD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,IAAU;IAC1C,MAAM,cAAc,GAAmB;QACrC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;KACpB,CAAC;IACF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,yBAAyB,EAAE;QACrD,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,cAAc;KACtB,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,GAAW,EACX,eAA8B;IAE9B,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,IACE,MAAM,KAAK,IAAI,CAAC,MAAM;YACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAC/B,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB,CAAC,GAAY;IAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAEvC,4CAA4C;IAC5C,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,4BAA4B,CAE3D,CAAC;IACd,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,6BAA6B;IAC7B,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QACrE,IAAI,UAAU,EAAE,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACjD,OAAO,UAAU,CAAC,kBAAkB,CAAC;QACvC,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAI,YAAY,EAAE,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO,YAAY,CAAC,kBAAkB,CAAC;IACzC,CAAC;IAED,mBAAmB;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAAC,GAAY;IAC7C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAEvC,4CAA4C;IAC5C,MAAM,YAAY,GAAG,aAAa,CAAC,QAAQ,CAAC,6BAA6B,CAE5D,CAAC;IACd,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,6BAA6B;IAC7B,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;QACrE,IAAI,UAAU,EAAE,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAClD,OAAO,UAAU,CAAC,mBAAmB,CAAC;QACxC,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,IAAI,YAAY,EAAE,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACpD,OAAO,YAAY,CAAC,mBAAmB,CAAC;IAC1C,CAAC;IAED,mBAAmB;IACnB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,IAAU,EACV,IAAqB,EACrB,OAAe,EACf,YAAoB,EACpB,GAAY;IAEZ,mCAAmC;IACnC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,WAAW,GACf,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,WAAW,EAAE,CAAC;gBAChB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,IAAU,EACV,MAAuB,EACvB,YAAoB,EACpB,GAAY;IAEZ,mCAAmC;IACnC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IAED,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,cAAc,GAAW,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrD,MAAM,YAAY,GAAW,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC7D,IAAI,YAAY,EAAE,CAAC;gBACjB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,IAAU,EACV,OAAsD;IAEtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CACf,+BAA+B,GAAG,CAAC,WAAW,EAAE,EAAE,EAClD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,IAAU,EACV,OAAsD;IAEtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CACf,gCAAgC,GAAG,CAAC,WAAW,EAAE,EAAE,EACnD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AAKvE,MAAM,OAAO,0BAA2B,SAAQ,mBAAmB;IACjE,YAAY,MAAyC;QACnD,KAAK,CAAC,MAAM,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEO,aAAa,CACnB,MAAyC;QAEzC,OAAO;YACL,GAAG,MAAM;YACT,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;YACjE,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC;SACrE,CAAC;IACJ,CAAC;IAEO,kBAAkB,CACxB,mBAAwD,EACxD,MAAyC;QAEzC,OAAO,CAAC,IAAU,EAAE,OAAwC,EAAQ,EAAE;YACpE,0BAA0B;YAC1B,MAAM,OAAO,GAAI,OAA2B,CAAC,OAAO,CAAC;YACrD,IAAI,OAAO,EAAE,CAAC;gBACZ,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,OAAO,YAAY,aAAa,EAAE,CAAC;gBACrC,MAAM,cAAc,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBAEtD,MAAM,kBAAkB,GACtB,MAAM,EAAE,kBAAkB,IAAI,6BAA6B,CAAC;gBAE9D,2BAA2B;gBAC3B,MAAM,GAAG,GACP,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;oBACvC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE;oBAC/E,CAAC,CAAC,SAAS,CAAC;gBAEhB,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE9C,uBAAuB;gBACvB,OAAO,CAAC,KAAK,GAAG,CAAC,IAAS,EAAW,EAAE;oBACrC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;wBACvD,kBAAkB,CAChB,IAAI,EACJ,IAAI,EACJ,kBAAkB,EAClB,yBAAyB,CAAC,iBAAiB,EAC3C,GAAG,CACJ,CAAC;oBACJ,CAAC;oBACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC;gBAEF,OAAO,CAAC,GAAG,GAAG,CAAC,IAAS,EAAiB,EAAE;oBACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;wBACvD,kBAAkB,CAChB,IAAI,EACJ,IAAI,EACJ,kBAAkB,EAClB,yBAAyB,CAAC,iBAAiB,EAC3C,GAAG,CACJ,CAAC;oBACJ,CAAC;oBACD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC,CAAC;gBAEF,wBAAwB;gBACxB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE;oBACtC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAS,EAAE;wBAC7B,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC1C,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAS,EAAE;wBAC9B,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC9C,CAAC,CAAC,CAAC;oBACH,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,GAAS,EAAE;wBACpC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC7C,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,mBAAmB,EAAE,CAAC;gBACxB,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAEO,mBAAmB,CACzB,oBAA0D,EAC1D,MAAyC;QAEzC,OAAO,CAAC,IAAU,EAAE,QAA0C,EAAQ,EAAE;YACtE,2BAA2B;YAC3B,MAAM,OAAO,GAAI,QAA4B,CAAC,OAAO,CAAC;YACtD,IAAI,OAAO,EAAE,CAAC;gBACZ,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,QAAQ,YAAY,eAAe,EAAE,CAAC;gBACxC,MAAM,cAAc,GAAoB,IAAY,CAClD,yBAAyB,CAC1B,CAAC;gBAEF,MAAM,mBAAmB,GACvB,MAAM,EAAE,mBAAmB,IAAI,8BAA8B,CAAC;gBAEhE,uDAAuD;gBACvD,uEAAuE;gBACvE,wEAAwE;gBACxE,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,SAAS,CAAC;gBAEtC,IAAI,MAAM,GAAoB,EAAE,CAAC;gBACjC,IAAI,SAAS,GAAW,CAAC,CAAC;gBAE1B,wCAAwC;gBACxC,MAAM,aAAa,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC;gBAErD,wBAAwB;gBACxB,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,KAAU,EAAQ,EAAE;oBACpD,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;wBAC7B,OAAO;oBACT,CAAC;oBACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;wBACzD,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;wBAC1B,IAAI,MAAM,IAAI,SAAS,IAAI,mBAAmB,EAAE,CAAC;4BAC/C,MAAM,CAAC,IAAI,CACT,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CACvD,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,2CAA2C;4BAC3C,MAAM,GAAG,IAAI,CAAC;wBAChB,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,QAAQ,CAAC,mBAAmB,CAAC,KAAK,EAAE,GAAS,EAAE;oBAC7C,IAAI,cAAc,EAAE,CAAC;wBACnB,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAClC,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;oBAC9C,CAAC;oBAED,mBAAmB,CACjB,IAAI,EACJ,MAAM,EACN,yBAAyB,CAAC,kBAAkB,EAC5C,GAAG,CACJ,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,IAAI,cAAc,EAAE,CAAC;oBACnB,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,GAAS,EAAE;wBACnC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC1C,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,IAAI,oBAAoB,EAAE,CAAC;gBACzB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/instrumentations/index.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/instrumentations/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAMtE;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,8BAA8B,EAAE,MAAM,OAAO,GAC5C,eAAe,EAAE,CAUnB"}
|