@multiplayer-app/session-recorder-common 1.2.6 → 1.2.9

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 (40) hide show
  1. package/README.md +18 -17
  2. package/dist/esm/SessionRecorderIdGenerator.d.ts.map +1 -1
  3. package/dist/esm/SessionRecorderIdGenerator.js +2 -2
  4. package/dist/esm/SessionRecorderIdGenerator.js.map +1 -1
  5. package/dist/esm/instrumentations/SessionRecorderHttpInstrumentationHooksNode.d.ts +0 -2
  6. package/dist/esm/instrumentations/SessionRecorderHttpInstrumentationHooksNode.d.ts.map +1 -1
  7. package/dist/esm/instrumentations/SessionRecorderHttpInstrumentationHooksNode.js +2 -13
  8. package/dist/esm/instrumentations/SessionRecorderHttpInstrumentationHooksNode.js.map +1 -1
  9. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  10. package/dist/esm/type/session-type.enum.d.ts +5 -1
  11. package/dist/esm/type/session-type.enum.d.ts.map +1 -1
  12. package/dist/esm/type/session-type.enum.js +4 -0
  13. package/dist/esm/type/session-type.enum.js.map +1 -1
  14. package/dist/esnext/SessionRecorderIdGenerator.d.ts.map +1 -1
  15. package/dist/esnext/SessionRecorderIdGenerator.js +2 -2
  16. package/dist/esnext/SessionRecorderIdGenerator.js.map +1 -1
  17. package/dist/esnext/instrumentations/SessionRecorderHttpInstrumentationHooksNode.d.ts +0 -2
  18. package/dist/esnext/instrumentations/SessionRecorderHttpInstrumentationHooksNode.d.ts.map +1 -1
  19. package/dist/esnext/instrumentations/SessionRecorderHttpInstrumentationHooksNode.js +2 -13
  20. package/dist/esnext/instrumentations/SessionRecorderHttpInstrumentationHooksNode.js.map +1 -1
  21. package/dist/esnext/tsconfig.esnext.tsbuildinfo +1 -1
  22. package/dist/esnext/type/session-type.enum.d.ts +5 -1
  23. package/dist/esnext/type/session-type.enum.d.ts.map +1 -1
  24. package/dist/esnext/type/session-type.enum.js +4 -0
  25. package/dist/esnext/type/session-type.enum.js.map +1 -1
  26. package/dist/src/SessionRecorderIdGenerator.d.ts.map +1 -1
  27. package/dist/src/SessionRecorderIdGenerator.js +2 -2
  28. package/dist/src/SessionRecorderIdGenerator.js.map +1 -1
  29. package/dist/src/instrumentations/SessionRecorderHttpInstrumentationHooksNode.d.ts +0 -2
  30. package/dist/src/instrumentations/SessionRecorderHttpInstrumentationHooksNode.d.ts.map +1 -1
  31. package/dist/src/instrumentations/SessionRecorderHttpInstrumentationHooksNode.js +0 -11
  32. package/dist/src/instrumentations/SessionRecorderHttpInstrumentationHooksNode.js.map +1 -1
  33. package/dist/src/type/session-type.enum.d.ts +5 -1
  34. package/dist/src/type/session-type.enum.d.ts.map +1 -1
  35. package/dist/src/type/session-type.enum.js +4 -0
  36. package/dist/src/type/session-type.enum.js.map +1 -1
  37. package/package.json +2 -2
  38. package/src/SessionRecorderIdGenerator.ts +2 -2
  39. package/src/instrumentations/SessionRecorderHttpInstrumentationHooksNode.ts +0 -19
  40. package/src/type/session-type.enum.ts +5 -1
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  <a href="https://multiplayer.app">
11
11
  <img src="https://img.shields.io/badge/Visit-multiplayer.app-blue" alt="Visit Multiplayer">
12
12
  </a>
13
-
13
+
14
14
  </div>
15
15
  <div>
16
16
  <p align="center">
@@ -63,7 +63,7 @@ import {
63
63
  ATTR_MULTIPLAYER_RPC_RESPONSE_MESSAGE,
64
64
  ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE,
65
65
  ATTR_MULTIPLAYER_GRPC_RESPONSE_MESSAGE,
66
- ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY,
66
+ ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY
67
67
  } from '@multiplayer-app/session-recorder-common'
68
68
  ```
69
69
 
@@ -126,14 +126,14 @@ export const instrumentations: Instrumentation[] = getNodeAutoInstrumentations({
126
126
 
127
127
  ```javascript
128
128
  import { BatchSpanProcessor, WebTracerProvider } from '@opentelemetry/sdk-trace-web'
129
- import { SessionRecorderHttpTraceExporterBrowser } from '@multiplayer-app/session-recorder-common'
129
+ import { SessionRecorderBrowserTraceExporter } from '@multiplayer-app/session-recorder-common'
130
130
 
131
131
  const collectorOptions = {
132
132
  url: '<opentelemetry-collector-url>', // url is optional and can be omitted - default is https://api.multiplayer.app/v1/traces
133
133
  apiKey: '<multiplayer-otlp-key>' // api key from multiplayer integration
134
134
  }
135
135
 
136
- const exporter = new SessionRecorderHttpTraceExporterBrowser(collectorOptions)
136
+ const exporter = new SessionRecorderBrowserTraceExporter(collectorOptions)
137
137
  const provider = new WebTracerProvider({
138
138
  spanProcessors: [
139
139
  new BatchSpanProcessor(exporter, {
@@ -154,10 +154,9 @@ provider.register()
154
154
 
155
155
  ### Session Recorder id generator
156
156
 
157
-
158
157
  ```javascript
159
158
  import { BatchSpanProcessor, WebTracerProvider } from '@opentelemetry/sdk-trace-web'
160
- import { SessionRecorderIdGenerator, SessionRecorderHttpTraceExporterBrowser } from '@multiplayer-app/session-recorder-common'
159
+ import { SessionRecorderIdGenerator, SessionRecorderBrowserTraceExporter } from '@multiplayer-app/session-recorder-common'
161
160
 
162
161
  const idGenerator = new SessionRecorderIdGenerator({ autoDocTracesRatio: 0.05 })
163
162
 
@@ -166,7 +165,7 @@ const collectorOptions = {
166
165
  apiKey: '<multiplayer-otlp-key>' // api key from multiplayer integration
167
166
  }
168
167
 
169
- const exporter = new SessionRecorderHttpTraceExporterBrowser(collectorOptions)
168
+ const exporter = new SessionRecorderBrowserTraceExporter(collectorOptions)
170
169
  const provider = new WebTracerProvider({
171
170
  spanProcessors: [
172
171
  new BatchSpanProcessor(exporter, {
@@ -192,14 +191,17 @@ Session Recorder sampler will always sample traces with appropriate prefixes, ot
192
191
 
193
192
  ```javascript
194
193
  import { BatchSpanProcessor, WebTracerProvider } from '@opentelemetry/sdk-trace-web'
195
- import { SessionRecorderTraceIdRatioBasedSampler, SessionRecorderHttpTraceExporterBrowser } from '@multiplayer-app/session-recorder-common'
194
+ import {
195
+ SessionRecorderTraceIdRatioBasedSampler,
196
+ SessionRecorderBrowserTraceExporter
197
+ } from '@multiplayer-app/session-recorder-common'
196
198
 
197
199
  const collectorOptions = {
198
200
  url: '<opentelemetry-collector-url>', // url is optional and can be omitted - default is https://api.multiplayer.app/v1/traces
199
201
  apiKey: '<multiplayer-otlp-key>' // api key from multiplayer integration
200
202
  }
201
203
 
202
- const exporter = new SessionRecorderHttpTraceExporterBrowser(collectorOptions)
204
+ const exporter = new SessionRecorderBrowserTraceExporter(collectorOptions)
203
205
  const provider = new WebTracerProvider({
204
206
  spanProcessors: [
205
207
  new BatchSpanProcessor(exporter, {
@@ -237,22 +239,21 @@ SessionRecorderSdk.setAttribute('{{SOME_KEY}}', '{{SOME_VALUE}}')
237
239
  // following helpers do masking of sensitive fields
238
240
  SessionRecorderSdk.setHttpRequestBody('{{ANY_REQUEST_PAYLOAD_HERE}}')
239
241
 
240
- SessionRecorderSdk.setHttpRequestHeaders({ Cookie: '...', Authorization: '...'})
242
+ SessionRecorderSdk.setHttpRequestHeaders({ Cookie: '...', Authorization: '...' })
241
243
 
242
- SessionRecorderSdk.setHttpResponseBody({some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}'})
244
+ SessionRecorderSdk.setHttpResponseBody({ some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}' })
243
245
 
244
246
  SessionRecorderSdk.setHttpResponseHeaders({ 'Set-Cookie': '...' })
245
247
 
246
- SessionRecorderSdk.setMessageBody({some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}'})
247
-
248
- SessionRecorderSdk.setRpcRequestMessage({some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}'})
248
+ SessionRecorderSdk.setMessageBody({ some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}' })
249
249
 
250
- SessionRecorderSdk.setRpcResponseMessage({some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}'})
250
+ SessionRecorderSdk.setRpcRequestMessage({ some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}' })
251
251
 
252
- SessionRecorderSdk.setGrpcRequestMessage({some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}'})
252
+ SessionRecorderSdk.setRpcResponseMessage({ some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}' })
253
253
 
254
- SessionRecorderSdk.setGrpcResponseMessage({some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}'})
254
+ SessionRecorderSdk.setGrpcRequestMessage({ some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}' })
255
255
 
256
+ SessionRecorderSdk.setGrpcResponseMessage({ some_payload: '{{ANY_REQUEST_PAYLOAD_HERE}}' })
256
257
  ```
257
258
 
258
259
  ## License
@@ -1 +1 @@
1
- {"version":3,"file":"SessionRecorderIdGenerator.d.ts","sourceRoot":"","sources":["../../src/SessionRecorderIdGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAOpC,qBAAa,0BAA2B,YAAW,WAAW;IAC5D,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,eAAe,CAAc;;IASrC,eAAe,IAAI,MAAM;IAuBzB,cAAc,IAAI,MAAM;IAIxB,YAAY,CACV,cAAc,EAAE,MAAM,EACtB,WAAW,GAAE,WAA+B;CAK/C"}
1
+ {"version":3,"file":"SessionRecorderIdGenerator.d.ts","sourceRoot":"","sources":["../../src/SessionRecorderIdGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAOpC,qBAAa,0BAA2B,YAAW,WAAW;IAC5D,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,eAAe,CAAc;;IASrC,eAAe,IAAI,MAAM;IAuBzB,cAAc,IAAI,MAAM;IAIxB,YAAY,CACV,cAAc,EAAE,MAAM,EACtB,WAAW,GAAE,WAAgC;CAKhD"}
@@ -6,7 +6,7 @@ var SessionRecorderIdGenerator = /** @class */ (function () {
6
6
  this.generateLongId = getIdGenerator(16);
7
7
  this.generateShortId = getIdGenerator(8);
8
8
  this.sessionShortId = '';
9
- this.sessionType = SessionType.PLAIN;
9
+ this.sessionType = SessionType.MANUAL;
10
10
  }
11
11
  SessionRecorderIdGenerator.prototype.generateTraceId = function () {
12
12
  var traceId = this.generateLongId();
@@ -29,7 +29,7 @@ var SessionRecorderIdGenerator = /** @class */ (function () {
29
29
  return this.generateShortId();
30
30
  };
31
31
  SessionRecorderIdGenerator.prototype.setSessionId = function (sessionShortId, sessionType) {
32
- if (sessionType === void 0) { sessionType = SessionType.PLAIN; }
32
+ if (sessionType === void 0) { sessionType = SessionType.MANUAL; }
33
33
  this.sessionShortId = sessionShortId;
34
34
  this.sessionType = sessionType;
35
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SessionRecorderIdGenerator.js","sourceRoot":"","sources":["../../src/SessionRecorderIdGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EACL,8BAA8B,EAC9B,yCAAyC,GAC1C,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC;IAME;QACE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAA;IACtC,CAAC;IAED,oDAAe,GAAf;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAErC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,iBAAiB,GAAW,EAAE,CAAA;YAClC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzB,KAAK,WAAW,CAAC,UAAU;oBACzB,iBAAiB,GAAG,yCAAyC,CAAA;oBAC7D,MAAK;gBACP;oBACE,iBAAiB,GAAG,8BAA8B,CAAA;YACtD,CAAC;YAED,IAAM,MAAM,GAAG,UAAG,iBAAiB,SAAG,IAAI,CAAC,cAAc,CAAE,CAAA;YAE3D,IAAM,cAAc,GAAG,UAAG,MAAM,SAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAE,CAAA;YAErF,OAAO,cAAc,CAAA;QACvB,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,mDAAc,GAAd;QACE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA;IAC/B,CAAC;IAED,iDAAY,GAAZ,UACE,cAAsB,EACtB,WAA4C;QAA5C,4BAAA,EAAA,cAA2B,WAAW,CAAC,KAAK;QAE5C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;IACH,iCAAC;AAAD,CAAC,AA/CD,IA+CC","sourcesContent":["import { IdGenerator } from '@opentelemetry/sdk-trace-base'\nimport { SessionType } from './type'\nimport {\n MULTIPLAYER_TRACE_DEBUG_PREFIX,\n MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX,\n} from './constants/constants.base'\nimport { getIdGenerator } from './sdk'\n\nexport class SessionRecorderIdGenerator implements IdGenerator {\n sessionShortId: string\n sessionType: SessionType\n private generateLongId: () => string\n private generateShortId: () => string\n\n constructor() {\n this.generateLongId = getIdGenerator(16)\n this.generateShortId = getIdGenerator(8)\n this.sessionShortId = ''\n this.sessionType = SessionType.PLAIN\n }\n\n generateTraceId(): string {\n const traceId = this.generateLongId()\n\n if (this.sessionShortId) {\n let sessionTypePrefix: string = ''\n switch (this.sessionType) {\n case SessionType.CONTINUOUS:\n sessionTypePrefix = MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX\n break\n default:\n sessionTypePrefix = MULTIPLAYER_TRACE_DEBUG_PREFIX\n }\n\n const prefix = `${sessionTypePrefix}${this.sessionShortId}`\n\n const sessionTraceId = `${prefix}${traceId.substring(prefix.length, traceId.length)}`\n\n return sessionTraceId\n }\n\n return traceId\n }\n\n generateSpanId(): string {\n return this.generateShortId()\n }\n\n setSessionId(\n sessionShortId: string,\n sessionType: SessionType = SessionType.PLAIN,\n ) {\n this.sessionShortId = sessionShortId\n this.sessionType = sessionType\n }\n}\n"]}
1
+ {"version":3,"file":"SessionRecorderIdGenerator.js","sourceRoot":"","sources":["../../src/SessionRecorderIdGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,EACL,8BAA8B,EAC9B,yCAAyC,GAC1C,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEtC;IAME;QACE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,cAAc,GAAG,EAAE,CAAA;QACxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAA;IACvC,CAAC;IAED,oDAAe,GAAf;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QAErC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,iBAAiB,GAAW,EAAE,CAAA;YAClC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzB,KAAK,WAAW,CAAC,UAAU;oBACzB,iBAAiB,GAAG,yCAAyC,CAAA;oBAC7D,MAAK;gBACP;oBACE,iBAAiB,GAAG,8BAA8B,CAAA;YACtD,CAAC;YAED,IAAM,MAAM,GAAG,UAAG,iBAAiB,SAAG,IAAI,CAAC,cAAc,CAAE,CAAA;YAE3D,IAAM,cAAc,GAAG,UAAG,MAAM,SAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAE,CAAA;YAErF,OAAO,cAAc,CAAA;QACvB,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,mDAAc,GAAd;QACE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA;IAC/B,CAAC;IAED,iDAAY,GAAZ,UACE,cAAsB,EACtB,WAA6C;QAA7C,4BAAA,EAAA,cAA2B,WAAW,CAAC,MAAM;QAE7C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;IACH,iCAAC;AAAD,CAAC,AA/CD,IA+CC","sourcesContent":["import { IdGenerator } from '@opentelemetry/sdk-trace-base'\nimport { SessionType } from './type'\nimport {\n MULTIPLAYER_TRACE_DEBUG_PREFIX,\n MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX,\n} from './constants/constants.base'\nimport { getIdGenerator } from './sdk'\n\nexport class SessionRecorderIdGenerator implements IdGenerator {\n sessionShortId: string\n sessionType: SessionType\n private generateLongId: () => string\n private generateShortId: () => string\n\n constructor() {\n this.generateLongId = getIdGenerator(16)\n this.generateShortId = getIdGenerator(8)\n this.sessionShortId = ''\n this.sessionType = SessionType.MANUAL\n }\n\n generateTraceId(): string {\n const traceId = this.generateLongId()\n\n if (this.sessionShortId) {\n let sessionTypePrefix: string = ''\n switch (this.sessionType) {\n case SessionType.CONTINUOUS:\n sessionTypePrefix = MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX\n break\n default:\n sessionTypePrefix = MULTIPLAYER_TRACE_DEBUG_PREFIX\n }\n\n const prefix = `${sessionTypePrefix}${this.sessionShortId}`\n\n const sessionTraceId = `${prefix}${traceId.substring(prefix.length, traceId.length)}`\n\n return sessionTraceId\n }\n\n return traceId\n }\n\n generateSpanId(): string {\n return this.generateShortId()\n }\n\n setSessionId(\n sessionShortId: string,\n sessionType: SessionType = SessionType.MANUAL,\n ) {\n this.sessionShortId = sessionShortId\n this.sessionType = sessionType\n }\n}\n"]}
@@ -2,7 +2,6 @@ import type { IncomingMessage, ServerResponse, ClientRequest } from 'http';
2
2
  import type { Span } from '@opentelemetry/api';
3
3
  interface HttpResponseHookOptions {
4
4
  maxPayloadSizeBytes?: number;
5
- schemifyDocSpanPayload?: boolean;
6
5
  uncompressPayload?: boolean;
7
6
  captureHeaders?: boolean;
8
7
  captureBody?: boolean;
@@ -17,7 +16,6 @@ interface HttpResponseHookOptions {
17
16
  }
18
17
  interface HttpRequestHookOptions {
19
18
  maxPayloadSizeBytes?: number;
20
- schemifyDocSpanPayload?: boolean;
21
19
  captureHeaders?: boolean;
22
20
  captureBody?: boolean;
23
21
  isMaskBodyEnabled?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"SessionRecorderHttpInstrumentationHooksNode.d.ts","sourceRoot":"","sources":["../../../src/instrumentations/SessionRecorderHttpInstrumentationHooksNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAqB9C,UAAU,uBAAuB;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,GAAG,CAAA;IACxC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,GAAG,CAAA;IAE3C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAE1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,UAAU,sBAAsB;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAEhC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,GAAG,CAAA;IACxC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,GAAG,CAAA;IAE3C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAE1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AA0ED,eAAO,MAAM,2CAA2C;6BAC9B,uBAAuB,MAC5C,MAAM,IAAI,EAAE,UAAU,eAAe,GAAG,cAAc;4BAwIlC,sBAAsB,MAC1C,MAAM,IAAI,EAAE,SAAS,aAAa,GAAG,eAAe;CA+FxD,CAAA"}
1
+ {"version":3,"file":"SessionRecorderHttpInstrumentationHooksNode.d.ts","sourceRoot":"","sources":["../../../src/instrumentations/SessionRecorderHttpInstrumentationHooksNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACd,MAAM,MAAM,CAAA;AAEb,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAmB9C,UAAU,uBAAuB;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,GAAG,CAAA;IACxC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,GAAG,CAAA;IAE3C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAE1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,UAAU,sBAAsB;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,GAAG,CAAA;IACxC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,KAAK,GAAG,CAAA;IAE3C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAE1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAqED,eAAO,MAAM,2CAA2C;6BAC9B,uBAAuB,MAC5C,MAAM,IAAI,EAAE,UAAU,eAAe,GAAG,cAAc;4BAmIlC,sBAAsB,MAC1C,MAAM,IAAI,EAAE,SAAS,aAAa,GAAG,eAAe;CA0FxD,CAAA"}
@@ -71,8 +71,8 @@ var __values = (this && this.__values) || function(o) {
71
71
  throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
72
72
  };
73
73
  import * as zlib from 'zlib';
74
- import { ATTR_MULTIPLAYER_HTTP_REQUEST_BODY, ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS, ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY, ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS, MULTIPLAYER_MAX_HTTP_REQUEST_RESPONSE_SIZE, ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING, MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_DOC_PREFIX, } from '../constants/constants.node';
75
- import { mask, schemify, isGzip, } from '../sdk';
74
+ import { ATTR_MULTIPLAYER_HTTP_REQUEST_BODY, ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS, ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY, ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS, MULTIPLAYER_MAX_HTTP_REQUEST_RESPONSE_SIZE, ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING, MULTIPLAYER_TRACE_DEBUG_PREFIX, } from '../constants/constants.node';
75
+ import { mask, isGzip, } from '../sdk';
76
76
  import { sensitiveFields, sensitiveHeaders, } from '../sdk/mask';
77
77
  var setDefaultOptions = function (options) {
78
78
  options.captureHeaders = 'captureHeaders' in options
@@ -87,9 +87,6 @@ var setDefaultOptions = function (options) {
87
87
  options.isMaskHeadersEnabled = 'isMaskHeadersEnabled' in options
88
88
  ? options.isMaskHeadersEnabled
89
89
  : true;
90
- options.schemifyDocSpanPayload = 'schemifyDocSpanPayload' in options
91
- ? options.schemifyDocSpanPayload
92
- : false;
93
90
  options.uncompressPayload = 'uncompressPayload' in options
94
91
  ? options.uncompressPayload
95
92
  : true;
@@ -188,10 +185,6 @@ export var SessionRecorderHttpInstrumentationHooksNode = {
188
185
  && _options_1.isMaskBodyEnabled) {
189
186
  responseBody = _options_1.maskBody(responseBody, span);
190
187
  }
191
- else if (traceId_1.startsWith(MULTIPLAYER_TRACE_DOC_PREFIX)
192
- && _options_1.schemifyDocSpanPayload) {
193
- responseBody = schemify(responseBody);
194
- }
195
188
  else if (typeof responseBody !== 'string') {
196
189
  responseBody = JSON.stringify(responseBody);
197
190
  }
@@ -329,10 +322,6 @@ export var SessionRecorderHttpInstrumentationHooksNode = {
329
322
  && _options_2.isMaskBodyEnabled) {
330
323
  requestBody = _options_2.maskBody(requestBody, span);
331
324
  }
332
- else if (traceId_2.startsWith(MULTIPLAYER_TRACE_DOC_PREFIX)
333
- && _options_2.schemifyDocSpanPayload) {
334
- requestBody = schemify(requestBody);
335
- }
336
325
  else if (typeof requestBody !== 'string') {
337
326
  requestBody = JSON.stringify(requestBody);
338
327
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SessionRecorderHttpInstrumentationHooksNode.js","sourceRoot":"","sources":["../../../src/instrumentations/SessionRecorderHttpInstrumentationHooksNode.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n IncomingMessage,\n ServerResponse,\n ClientRequest,\n} from 'http'\nimport * as zlib from 'zlib'\nimport type { Span } from '@opentelemetry/api'\nimport {\n ATTR_MULTIPLAYER_HTTP_REQUEST_BODY,\n ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS,\n ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY,\n ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS,\n MULTIPLAYER_MAX_HTTP_REQUEST_RESPONSE_SIZE,\n ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING,\n MULTIPLAYER_TRACE_DEBUG_PREFIX,\n MULTIPLAYER_TRACE_DOC_PREFIX,\n} from '../constants/constants.node'\nimport {\n mask,\n schemify,\n isGzip,\n} from '../sdk'\nimport {\n sensitiveFields,\n sensitiveHeaders,\n} from '../sdk/mask'\n\ninterface HttpResponseHookOptions {\n maxPayloadSizeBytes?: number\n schemifyDocSpanPayload?: boolean\n uncompressPayload?: boolean\n\n captureHeaders?: boolean\n captureBody?: boolean\n\n isMaskBodyEnabled?: boolean\n isMaskHeadersEnabled?: boolean\n\n maskBody?: (arg: any, span: Span) => any\n maskHeaders?: (arg: any, span: Span) => any\n\n maskBodyFieldsList?: string[]\n maskHeadersList?: string[]\n\n headersToInclude?: string[]\n headersToExclude?: string[]\n}\n\ninterface HttpRequestHookOptions {\n maxPayloadSizeBytes?: number\n schemifyDocSpanPayload?: boolean\n\n captureHeaders?: boolean\n captureBody?: boolean\n\n isMaskBodyEnabled?: boolean\n isMaskHeadersEnabled?: boolean\n\n maskBody?: (arg: any, span: Span) => any\n maskHeaders?: (arg: any, span: Span) => any\n\n maskBodyFieldsList?: string[]\n maskHeadersList?: string[]\n\n headersToInclude?: string[]\n headersToExclude?: string[]\n}\n\nconst setDefaultOptions = (\n options: HttpResponseHookOptions | HttpResponseHookOptions,\n): Omit<HttpResponseHookOptions & HttpResponseHookOptions, 'maskBody' | 'maskHeaders'>\n & {\n maskBody: (arg: any, span: Span) => any\n maskHeaders: (arg: any, span: Span) => any\n captureHeaders: boolean,\n captureBody: boolean,\n isMaskBodyEnabled: boolean\n isMaskHeadersEnabled: boolean\n schemifyDocSpanPayload: boolean,\n uncompressPayload: boolean,\n maxPayloadSizeBytes: number\n } => {\n options.captureHeaders = 'captureHeaders' in options\n ? options.captureHeaders\n : true\n options.captureBody = 'captureBody' in options\n ? options.captureBody\n : true\n options.isMaskBodyEnabled = 'isMaskBodyEnabled' in options\n ? options.isMaskBodyEnabled\n : true\n options.isMaskHeadersEnabled = 'isMaskHeadersEnabled' in options\n ? options.isMaskHeadersEnabled\n : true\n options.schemifyDocSpanPayload = 'schemifyDocSpanPayload' in options\n ? options.schemifyDocSpanPayload\n : false\n options.uncompressPayload = 'uncompressPayload' in options\n ? options.uncompressPayload\n : true\n options.maskBody = options.maskBody || mask([\n ...(\n Array.isArray(options.maskBodyFieldsList)\n ? options.maskBodyFieldsList\n : sensitiveFields\n ),\n ...(\n Array.isArray(options.maskHeadersList)\n ? options.maskHeadersList\n : sensitiveHeaders\n ),\n ])\n options.maskHeaders = options.maskHeaders || mask([\n ...(\n Array.isArray(options.maskBodyFieldsList)\n ? options.maskBodyFieldsList\n : sensitiveFields\n ),\n ...(\n Array.isArray(options.maskHeadersList)\n ? options.maskHeadersList\n : sensitiveHeaders\n ),\n ])\n options.maxPayloadSizeBytes = options.maxPayloadSizeBytes || MULTIPLAYER_MAX_HTTP_REQUEST_RESPONSE_SIZE\n\n return options as Omit<HttpResponseHookOptions & HttpResponseHookOptions, 'maskBody' | 'maskHeaders'>\n & {\n maskBody: (arg: any, span: Span) => any\n maskHeaders: (arg: any, span: Span) => any\n captureHeaders: boolean,\n captureBody: boolean,\n isMaskBodyEnabled: boolean,\n isMaskHeadersEnabled: boolean,\n schemifyDocSpanPayload: boolean,\n uncompressPayload: boolean,\n maxPayloadSizeBytes: number\n }\n}\n\nexport const SessionRecorderHttpInstrumentationHooksNode = {\n responseHook: (options: HttpResponseHookOptions = {}) =>\n (span: Span, response: IncomingMessage | ServerResponse) => {\n try {\n const _options = setDefaultOptions(options)\n\n if (!_options.captureBody && !_options.captureHeaders) {\n return\n }\n\n const _response = response as ServerResponse\n const traceId = span.spanContext().traceId\n\n if (_response.setHeader) {\n _response.setHeader('X-Trace-Id', traceId)\n }\n\n const [oldWrite, oldEnd] = [_response.write, _response.end]\n\n const chunks: Buffer[] = []\n\n if (_options.captureBody) {\n (_response.write as unknown) = function (...restArgs: any[]) {\n chunks.push(Buffer.from(restArgs[0]))\n\n // @ts-ignore\n oldWrite.apply(_response, restArgs)\n }\n }\n\n\n // @ts-ignore\n _response.end = async function (...restArgs) {\n if (_options.captureBody && restArgs[0]) {\n chunks.push(Buffer.from(restArgs[0]))\n }\n\n const responseBuffer = Buffer.concat(chunks)\n\n if (\n _options.captureBody\n && responseBuffer.byteLength > 0\n && responseBuffer.byteLength < _options.maxPayloadSizeBytes\n ) {\n let responseBody: string\n let skipResponseBodyModification = false\n\n if (isGzip(responseBuffer)) {\n if (_options.uncompressPayload) {\n const dezippedBuffer = await new Promise((resolve) => zlib\n .gunzip(responseBuffer, function (err, dezipped) {\n if (err) {\n return resolve(Buffer.from(''))\n } else {\n return resolve(dezipped)\n }\n })) as Buffer\n responseBody = dezippedBuffer.toString('utf-8')\n } else {\n span.setAttribute(\n ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING,\n 'gzip',\n )\n\n skipResponseBodyModification = true\n responseBody = responseBuffer.toString('hex')\n }\n } else {\n responseBody = responseBuffer.toString('utf-8')\n }\n\n if (responseBody.length) {\n responseBody = JSON.parse(JSON.stringify(responseBody))\n }\n\n if (!skipResponseBodyModification) {\n if (\n traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX)\n && _options.isMaskBodyEnabled\n ) {\n responseBody = _options.maskBody(responseBody, span)\n } else if (\n traceId.startsWith(MULTIPLAYER_TRACE_DOC_PREFIX)\n && _options.schemifyDocSpanPayload\n ) {\n responseBody = schemify(responseBody)\n } else if (typeof responseBody !== 'string') {\n responseBody = JSON.stringify(responseBody)\n }\n }\n\n if (responseBody.length) {\n span.setAttribute(\n ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY,\n responseBody,\n )\n }\n }\n\n if (_options.captureHeaders) {\n let _headers = JSON.parse(JSON.stringify(_response.getHeaders() || {}))\n if (_options.isMaskHeadersEnabled) {\n _headers = _options.maskHeaders(_headers, span)\n }\n\n if (_options.headersToInclude) {\n const filteredHeaders: any = {}\n for (const headerName of _options.headersToInclude) {\n filteredHeaders[headerName] = _headers[headerName]\n }\n _headers = filteredHeaders\n }\n\n if (_options.headersToExclude?.length) {\n for (const headerName of _options.headersToExclude) {\n delete _headers[headerName]\n }\n }\n\n const stringifiedHeaders = JSON.stringify(_headers)\n\n if (stringifiedHeaders?.length) {\n span.setAttribute(\n ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS,\n stringifiedHeaders,\n )\n }\n }\n\n\n // @ts-ignore\n return oldEnd.apply(_response, restArgs)\n }\n } catch (error) {\n // eslint-disable-next-line\n console.error('An error occured in multiplayer otlp http responseHook', error)\n }\n },\n requestHook: (options: HttpRequestHookOptions = {}) =>\n (span: Span, request: ClientRequest | IncomingMessage) => {\n try {\n const _options = setDefaultOptions(options)\n\n if (!_options.captureBody && !_options.captureHeaders) {\n return\n }\n\n const traceId = span.spanContext().traceId\n const _request = request as IncomingMessage\n\n if (_options.captureHeaders) {\n let _headers = JSON.parse(JSON.stringify(_request.headers || {}))\n\n if (_options.isMaskHeadersEnabled) {\n _headers = _options.maskHeaders(_headers, span)\n }\n\n if (_options.headersToInclude) {\n const filteredHeaders: any = {}\n for (const headerName of _options.headersToInclude) {\n filteredHeaders[headerName] = _headers[headerName]\n }\n _headers = filteredHeaders\n }\n\n if (_options.headersToExclude?.length) {\n for (const headerName of _options.headersToExclude) {\n delete _headers[headerName]\n }\n }\n\n span.setAttribute(\n ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS,\n JSON.stringify(_headers),\n )\n }\n\n const contentType = _request?.headers?.['content-type']\n if (\n _options.captureBody\n && contentType?.includes('application/json')\n ) {\n let body = ''\n _request.on('data', (chunk) => {\n body += chunk\n })\n _request.on('end', () => {\n try {\n const requestBodySizeBytes = Buffer.byteLength(body, 'utf8')\n\n if (\n requestBodySizeBytes === 0\n || requestBodySizeBytes > _options.maxPayloadSizeBytes\n ) {\n return\n }\n\n let requestBody = body\n if (!requestBody) return\n\n requestBody = JSON.parse(JSON.stringify(requestBody))\n\n if (\n traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX)\n && _options.isMaskBodyEnabled\n ) {\n requestBody = _options.maskBody(requestBody, span)\n } else if (\n traceId.startsWith(MULTIPLAYER_TRACE_DOC_PREFIX)\n && _options.schemifyDocSpanPayload\n ) {\n requestBody = schemify(requestBody)\n } else if (typeof requestBody !== 'string') {\n requestBody = JSON.stringify(requestBody)\n }\n\n if (requestBody?.length) {\n span.setAttribute(\n ATTR_MULTIPLAYER_HTTP_REQUEST_BODY,\n requestBody,\n )\n }\n } catch (err) {\n // eslint-disable-next-line\n console.error('[MULTIPLAYER-HTTP-REQ-HOOK] An error occured in multiplayer otlp http requestHook', err)\n }\n })\n }\n\n } catch (error) {\n // eslint-disable-next-line\n console.error('An error occured in multiplayer otlp http requestHook', error)\n }\n },\n}\n"]}
1
+ {"version":3,"file":"SessionRecorderHttpInstrumentationHooksNode.js","sourceRoot":"","sources":["../../../src/instrumentations/SessionRecorderHttpInstrumentationHooksNode.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n IncomingMessage,\n ServerResponse,\n ClientRequest,\n} from 'http'\nimport * as zlib from 'zlib'\nimport type { Span } from '@opentelemetry/api'\nimport {\n ATTR_MULTIPLAYER_HTTP_REQUEST_BODY,\n ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS,\n ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY,\n ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS,\n MULTIPLAYER_MAX_HTTP_REQUEST_RESPONSE_SIZE,\n ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING,\n MULTIPLAYER_TRACE_DEBUG_PREFIX,\n} from '../constants/constants.node'\nimport {\n mask,\n isGzip,\n} from '../sdk'\nimport {\n sensitiveFields,\n sensitiveHeaders,\n} from '../sdk/mask'\n\ninterface HttpResponseHookOptions {\n maxPayloadSizeBytes?: number\n uncompressPayload?: boolean\n\n captureHeaders?: boolean\n captureBody?: boolean\n\n isMaskBodyEnabled?: boolean\n isMaskHeadersEnabled?: boolean\n\n maskBody?: (arg: any, span: Span) => any\n maskHeaders?: (arg: any, span: Span) => any\n\n maskBodyFieldsList?: string[]\n maskHeadersList?: string[]\n\n headersToInclude?: string[]\n headersToExclude?: string[]\n}\n\ninterface HttpRequestHookOptions {\n maxPayloadSizeBytes?: number\n\n captureHeaders?: boolean\n captureBody?: boolean\n\n isMaskBodyEnabled?: boolean\n isMaskHeadersEnabled?: boolean\n\n maskBody?: (arg: any, span: Span) => any\n maskHeaders?: (arg: any, span: Span) => any\n\n maskBodyFieldsList?: string[]\n maskHeadersList?: string[]\n\n headersToInclude?: string[]\n headersToExclude?: string[]\n}\n\nconst setDefaultOptions = (\n options: HttpResponseHookOptions | HttpResponseHookOptions,\n): Omit<HttpResponseHookOptions & HttpResponseHookOptions, 'maskBody' | 'maskHeaders'>\n & {\n maskBody: (arg: any, span: Span) => any\n maskHeaders: (arg: any, span: Span) => any\n captureHeaders: boolean,\n captureBody: boolean,\n isMaskBodyEnabled: boolean\n isMaskHeadersEnabled: boolean\n uncompressPayload: boolean,\n maxPayloadSizeBytes: number\n } => {\n options.captureHeaders = 'captureHeaders' in options\n ? options.captureHeaders\n : true\n options.captureBody = 'captureBody' in options\n ? options.captureBody\n : true\n options.isMaskBodyEnabled = 'isMaskBodyEnabled' in options\n ? options.isMaskBodyEnabled\n : true\n options.isMaskHeadersEnabled = 'isMaskHeadersEnabled' in options\n ? options.isMaskHeadersEnabled\n : true\n options.uncompressPayload = 'uncompressPayload' in options\n ? options.uncompressPayload\n : true\n options.maskBody = options.maskBody || mask([\n ...(\n Array.isArray(options.maskBodyFieldsList)\n ? options.maskBodyFieldsList\n : sensitiveFields\n ),\n ...(\n Array.isArray(options.maskHeadersList)\n ? options.maskHeadersList\n : sensitiveHeaders\n ),\n ])\n options.maskHeaders = options.maskHeaders || mask([\n ...(\n Array.isArray(options.maskBodyFieldsList)\n ? options.maskBodyFieldsList\n : sensitiveFields\n ),\n ...(\n Array.isArray(options.maskHeadersList)\n ? options.maskHeadersList\n : sensitiveHeaders\n ),\n ])\n options.maxPayloadSizeBytes = options.maxPayloadSizeBytes || MULTIPLAYER_MAX_HTTP_REQUEST_RESPONSE_SIZE\n\n return options as Omit<HttpResponseHookOptions & HttpResponseHookOptions, 'maskBody' | 'maskHeaders'>\n & {\n maskBody: (arg: any, span: Span) => any\n maskHeaders: (arg: any, span: Span) => any\n captureHeaders: boolean,\n captureBody: boolean,\n isMaskBodyEnabled: boolean,\n isMaskHeadersEnabled: boolean,\n uncompressPayload: boolean,\n maxPayloadSizeBytes: number\n }\n}\n\nexport const SessionRecorderHttpInstrumentationHooksNode = {\n responseHook: (options: HttpResponseHookOptions = {}) =>\n (span: Span, response: IncomingMessage | ServerResponse) => {\n try {\n const _options = setDefaultOptions(options)\n\n if (!_options.captureBody && !_options.captureHeaders) {\n return\n }\n\n const _response = response as ServerResponse\n const traceId = span.spanContext().traceId\n\n if (_response.setHeader) {\n _response.setHeader('X-Trace-Id', traceId)\n }\n\n const [oldWrite, oldEnd] = [_response.write, _response.end]\n\n const chunks: Buffer[] = []\n\n if (_options.captureBody) {\n (_response.write as unknown) = function (...restArgs: any[]) {\n chunks.push(Buffer.from(restArgs[0]))\n\n // @ts-ignore\n oldWrite.apply(_response, restArgs)\n }\n }\n\n\n // @ts-ignore\n _response.end = async function (...restArgs) {\n if (_options.captureBody && restArgs[0]) {\n chunks.push(Buffer.from(restArgs[0]))\n }\n\n const responseBuffer = Buffer.concat(chunks)\n\n if (\n _options.captureBody\n && responseBuffer.byteLength > 0\n && responseBuffer.byteLength < _options.maxPayloadSizeBytes\n ) {\n let responseBody: string\n let skipResponseBodyModification = false\n\n if (isGzip(responseBuffer)) {\n if (_options.uncompressPayload) {\n const dezippedBuffer = await new Promise((resolve) => zlib\n .gunzip(responseBuffer, function (err, dezipped) {\n if (err) {\n return resolve(Buffer.from(''))\n } else {\n return resolve(dezipped)\n }\n })) as Buffer\n responseBody = dezippedBuffer.toString('utf-8')\n } else {\n span.setAttribute(\n ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING,\n 'gzip',\n )\n\n skipResponseBodyModification = true\n responseBody = responseBuffer.toString('hex')\n }\n } else {\n responseBody = responseBuffer.toString('utf-8')\n }\n\n if (responseBody.length) {\n responseBody = JSON.parse(JSON.stringify(responseBody))\n }\n\n if (!skipResponseBodyModification) {\n if (\n traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX)\n && _options.isMaskBodyEnabled\n ) {\n responseBody = _options.maskBody(responseBody, span)\n } else if (typeof responseBody !== 'string') {\n responseBody = JSON.stringify(responseBody)\n }\n }\n\n if (responseBody.length) {\n span.setAttribute(\n ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY,\n responseBody,\n )\n }\n }\n\n if (_options.captureHeaders) {\n let _headers = JSON.parse(JSON.stringify(_response.getHeaders() || {}))\n if (_options.isMaskHeadersEnabled) {\n _headers = _options.maskHeaders(_headers, span)\n }\n\n if (_options.headersToInclude) {\n const filteredHeaders: any = {}\n for (const headerName of _options.headersToInclude) {\n filteredHeaders[headerName] = _headers[headerName]\n }\n _headers = filteredHeaders\n }\n\n if (_options.headersToExclude?.length) {\n for (const headerName of _options.headersToExclude) {\n delete _headers[headerName]\n }\n }\n\n const stringifiedHeaders = JSON.stringify(_headers)\n\n if (stringifiedHeaders?.length) {\n span.setAttribute(\n ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS,\n stringifiedHeaders,\n )\n }\n }\n\n\n // @ts-ignore\n return oldEnd.apply(_response, restArgs)\n }\n } catch (error) {\n // eslint-disable-next-line\n console.error('An error occured in multiplayer otlp http responseHook', error)\n }\n },\n requestHook: (options: HttpRequestHookOptions = {}) =>\n (span: Span, request: ClientRequest | IncomingMessage) => {\n try {\n const _options = setDefaultOptions(options)\n\n if (!_options.captureBody && !_options.captureHeaders) {\n return\n }\n\n const traceId = span.spanContext().traceId\n const _request = request as IncomingMessage\n\n if (_options.captureHeaders) {\n let _headers = JSON.parse(JSON.stringify(_request.headers || {}))\n\n if (_options.isMaskHeadersEnabled) {\n _headers = _options.maskHeaders(_headers, span)\n }\n\n if (_options.headersToInclude) {\n const filteredHeaders: any = {}\n for (const headerName of _options.headersToInclude) {\n filteredHeaders[headerName] = _headers[headerName]\n }\n _headers = filteredHeaders\n }\n\n if (_options.headersToExclude?.length) {\n for (const headerName of _options.headersToExclude) {\n delete _headers[headerName]\n }\n }\n\n span.setAttribute(\n ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS,\n JSON.stringify(_headers),\n )\n }\n\n const contentType = _request?.headers?.['content-type']\n if (\n _options.captureBody\n && contentType?.includes('application/json')\n ) {\n let body = ''\n _request.on('data', (chunk) => {\n body += chunk\n })\n _request.on('end', () => {\n try {\n const requestBodySizeBytes = Buffer.byteLength(body, 'utf8')\n\n if (\n requestBodySizeBytes === 0\n || requestBodySizeBytes > _options.maxPayloadSizeBytes\n ) {\n return\n }\n\n let requestBody = body\n if (!requestBody) return\n\n requestBody = JSON.parse(JSON.stringify(requestBody))\n\n if (\n traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX)\n && _options.isMaskBodyEnabled\n ) {\n requestBody = _options.maskBody(requestBody, span)\n } else if (typeof requestBody !== 'string') {\n requestBody = JSON.stringify(requestBody)\n }\n\n if (requestBody?.length) {\n span.setAttribute(\n ATTR_MULTIPLAYER_HTTP_REQUEST_BODY,\n requestBody,\n )\n }\n } catch (err) {\n // eslint-disable-next-line\n console.error('[MULTIPLAYER-HTTP-REQ-HOOK] An error occured in multiplayer otlp http requestHook', err)\n }\n })\n }\n\n } catch (error) {\n // eslint-disable-next-line\n console.error('An error occured in multiplayer otlp http requestHook', error)\n }\n },\n}\n"]}