@stainlessdev/xray-emitter 0.1.0-dev.2c5bc4c → 0.1.0-dev.3b8d877

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 (68) hide show
  1. package/README.md +1 -2
  2. package/dist/{chunk-YVMMCTXW.js → chunk-7KT6EPVZ.js} +1 -1
  3. package/dist/{chunk-YVMMCTXW.js.map → chunk-7KT6EPVZ.js.map} +1 -1
  4. package/dist/{chunk-GNSXLLEC.cjs → chunk-CPHFCOA5.cjs} +9 -9
  5. package/dist/{chunk-GNSXLLEC.cjs.map → chunk-CPHFCOA5.cjs.map} +1 -1
  6. package/dist/{chunk-JKW6E4L3.cjs → chunk-DNBARLGB.cjs} +1 -1
  7. package/dist/{chunk-JKW6E4L3.cjs.map → chunk-DNBARLGB.cjs.map} +1 -1
  8. package/dist/{chunk-DBI3HXNR.cjs → chunk-ESBHEKC2.cjs} +47 -47
  9. package/dist/{chunk-DBI3HXNR.cjs.map → chunk-ESBHEKC2.cjs.map} +1 -1
  10. package/dist/{chunk-WTHVUHGI.js → chunk-KU23HQLZ.js} +4 -4
  11. package/dist/{chunk-6UH43LVD.js → chunk-NTIUR3OC.js} +2 -2
  12. package/dist/{chunk-2HW4AEKB.cjs → chunk-OCXEYDDH.cjs} +28 -28
  13. package/dist/{chunk-2HW4AEKB.cjs.map → chunk-OCXEYDDH.cjs.map} +1 -1
  14. package/dist/{chunk-XO6YWDFL.cjs → chunk-Q4MTHPUL.cjs} +47 -21
  15. package/dist/chunk-Q4MTHPUL.cjs.map +1 -0
  16. package/dist/{chunk-TSCMZ5TV.js → chunk-VRRPTE7W.js} +28 -2
  17. package/dist/chunk-VRRPTE7W.js.map +1 -0
  18. package/dist/{chunk-ZP5OEA4I.js → chunk-W75UIHEF.js} +4 -4
  19. package/dist/effect.cjs +19 -19
  20. package/dist/effect.d.cts +3 -3
  21. package/dist/effect.d.ts +3 -3
  22. package/dist/effect.js +4 -4
  23. package/dist/{emitter-BqfrGIod.d.cts → emitter-Cdl6H6vk.d.cts} +1 -1
  24. package/dist/{emitter-CScYhwGA.d.ts → emitter-DnDvQw9i.d.ts} +1 -1
  25. package/dist/express.cjs +7 -7
  26. package/dist/express.d.cts +2 -2
  27. package/dist/express.d.ts +2 -2
  28. package/dist/express.js +4 -4
  29. package/dist/fastify.cjs +10 -10
  30. package/dist/fastify.d.cts +2 -2
  31. package/dist/fastify.d.ts +2 -2
  32. package/dist/fastify.js +4 -4
  33. package/dist/fetch.cjs +5 -5
  34. package/dist/fetch.d.cts +2 -2
  35. package/dist/fetch.d.ts +2 -2
  36. package/dist/fetch.js +4 -4
  37. package/dist/hono.cjs +9 -9
  38. package/dist/hono.d.cts +3 -3
  39. package/dist/hono.d.ts +3 -3
  40. package/dist/hono.js +4 -4
  41. package/dist/index.cjs +3 -3
  42. package/dist/index.d.cts +2 -2
  43. package/dist/index.d.ts +2 -2
  44. package/dist/index.js +2 -2
  45. package/dist/internal.cjs +3 -3
  46. package/dist/internal.d.cts +1 -1
  47. package/dist/internal.d.ts +1 -1
  48. package/dist/internal.js +2 -2
  49. package/dist/next.cjs +7 -7
  50. package/dist/next.d.cts +3 -3
  51. package/dist/next.d.ts +3 -3
  52. package/dist/next.js +4 -4
  53. package/dist/node.cjs +5 -5
  54. package/dist/node.d.cts +1 -1
  55. package/dist/node.d.ts +1 -1
  56. package/dist/node.js +4 -4
  57. package/dist/remix.cjs +7 -7
  58. package/dist/remix.d.cts +3 -3
  59. package/dist/remix.d.ts +3 -3
  60. package/dist/remix.js +4 -4
  61. package/dist/{types-Z1nirh-F.d.cts → types-Diy-KLjz.d.cts} +5 -0
  62. package/dist/{types-Z1nirh-F.d.ts → types-Diy-KLjz.d.ts} +5 -0
  63. package/package.json +1 -1
  64. package/dist/chunk-TSCMZ5TV.js.map +0 -1
  65. package/dist/chunk-XO6YWDFL.cjs.map +0 -1
  66. /package/dist/{chunk-WTHVUHGI.js.map → chunk-KU23HQLZ.js.map} +0 -0
  67. /package/dist/{chunk-6UH43LVD.js.map → chunk-NTIUR3OC.js.map} +0 -0
  68. /package/dist/{chunk-ZP5OEA4I.js.map → chunk-W75UIHEF.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunkXO6YWDFLcjs = require('./chunk-XO6YWDFL.cjs');
4
+ var _chunkQ4MTHPULcjs = require('./chunk-Q4MTHPUL.cjs');
5
5
 
6
6
 
7
7
 
@@ -12,23 +12,23 @@ var _chunkXO6YWDFLcjs = require('./chunk-XO6YWDFL.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunkGNSXLLECcjs = require('./chunk-GNSXLLEC.cjs');
15
+ var _chunkCPHFCOA5cjs = require('./chunk-CPHFCOA5.cjs');
16
16
 
17
17
 
18
18
 
19
19
 
20
- var _chunkJKW6E4L3cjs = require('./chunk-JKW6E4L3.cjs');
20
+ var _chunkDNBARLGBcjs = require('./chunk-DNBARLGB.cjs');
21
21
 
22
22
  // src/node/emitter.ts
23
23
  var _exportertraceotlpproto = require('@opentelemetry/exporter-trace-otlp-proto');
24
24
  function createEmitter2(config) {
25
- const resolved = _chunkXO6YWDFLcjs.normalizeConfig.call(void 0, config);
25
+ const resolved = _chunkQ4MTHPULcjs.normalizeConfig.call(void 0, config);
26
26
  const exporter = _nullishCoalesce(_optionalChain([config, 'access', _ => _.exporter, 'optionalAccess', _2 => _2.instance]), () => ( new (0, _exportertraceotlpproto.OTLPTraceExporter)({
27
27
  url: resolved.exporter.endpointUrl,
28
28
  headers: _nullishCoalesce(resolved.exporter.headers, () => ( {})),
29
29
  timeoutMillis: resolved.exporter.timeoutMs
30
30
  })));
31
- return _chunkXO6YWDFLcjs.createEmitter.call(void 0, config, exporter);
31
+ return _chunkQ4MTHPULcjs.createEmitter.call(void 0, config, exporter);
32
32
  }
33
33
 
34
34
  // src/node/adapter.ts
@@ -39,7 +39,7 @@ function wrapHttpHandler(handler, xray, options) {
39
39
  method: _nullishCoalesce(req.method, () => ( "GET")),
40
40
  url: fullUrl(req),
41
41
  route: _optionalChain([options, 'optionalAccess', _3 => _3.route]),
42
- headers: _chunkGNSXLLECcjs.headerValuesFromNodeHeaders.call(void 0,
42
+ headers: _chunkCPHFCOA5cjs.headerValuesFromNodeHeaders.call(void 0,
43
43
  req.headers
44
44
  ),
45
45
  requestId: _optionalChain([options, 'optionalAccess', _4 => _4.requestId]),
@@ -48,25 +48,25 @@ function wrapHttpHandler(handler, xray, options) {
48
48
  };
49
49
  trackExpressParams(req);
50
50
  const ctx = xray.startRequest(normalizedRequest);
51
- _chunkGNSXLLECcjs.bindContextToObject.call(void 0, req, ctx);
52
- _chunkGNSXLLECcjs.bindContextToObject.call(void 0, res, ctx);
51
+ _chunkCPHFCOA5cjs.bindContextToObject.call(void 0, req, ctx);
52
+ _chunkCPHFCOA5cjs.bindContextToObject.call(void 0, res, ctx);
53
53
  if (_optionalChain([options, 'optionalAccess', _7 => _7.requestId])) {
54
- _chunkGNSXLLECcjs.setContextRequestId.call(void 0, ctx, options.requestId);
54
+ _chunkCPHFCOA5cjs.setContextRequestId.call(void 0, ctx, options.requestId);
55
55
  }
56
56
  if (_optionalChain([options, 'optionalAccess', _8 => _8.route])) {
57
- _chunkGNSXLLECcjs.setContextRoute.call(void 0, ctx, options.route);
57
+ _chunkCPHFCOA5cjs.setContextRoute.call(void 0, ctx, options.route);
58
58
  }
59
59
  if (_optionalChain([options, 'optionalAccess', _9 => _9.capture])) {
60
- _chunkGNSXLLECcjs.setCaptureOverride.call(void 0, ctx, options.capture);
60
+ _chunkCPHFCOA5cjs.setCaptureOverride.call(void 0, ctx, options.capture);
61
61
  }
62
62
  if (_optionalChain([options, 'optionalAccess', _10 => _10.redaction])) {
63
- _chunkGNSXLLECcjs.setRedactionOverride.call(void 0, ctx, options.redaction);
63
+ _chunkCPHFCOA5cjs.setRedactionOverride.call(void 0, ctx, options.redaction);
64
64
  }
65
65
  if (_optionalChain([options, 'optionalAccess', _11 => _11.onRequest])) {
66
66
  try {
67
67
  options.onRequest(ctx);
68
68
  } catch (err) {
69
- _chunkJKW6E4L3cjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onRequest failed", {
69
+ _chunkDNBARLGBcjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onRequest failed", {
70
70
  error: err instanceof Error ? err.message : String(err)
71
71
  });
72
72
  }
@@ -96,7 +96,7 @@ function wrapHttpHandler(handler, xray, options) {
96
96
  }
97
97
  }
98
98
  if (requestCapture && requestCapture.read) {
99
- normalizedRequest.body = _chunkJKW6E4L3cjs.makeCapturedBody.call(void 0,
99
+ normalizedRequest.body = _chunkDNBARLGBcjs.makeCapturedBody.call(void 0,
100
100
  requestCapture.buffer.bytes(),
101
101
  requestCapture.buffer.totalBytes(),
102
102
  requestCapture.buffer.truncated(),
@@ -106,12 +106,12 @@ function wrapHttpHandler(handler, xray, options) {
106
106
  const responseHeaders = recorder.headersSnapshot(res.getHeaders());
107
107
  const recordedStatus = _nullishCoalesce(recorder.statusCode(), () => ( res.statusCode));
108
108
  const statusCode = capturedError && !recorder.hasWrittenHeader() ? 500 : recordedStatus;
109
- const isUpgrade = _chunkGNSXLLECcjs.isWebsocketUpgrade.call(void 0,
109
+ const isUpgrade = _chunkCPHFCOA5cjs.isWebsocketUpgrade.call(void 0,
110
110
  _nullishCoalesce(statusCode, () => ( 0)),
111
111
  normalizedRequest.headers,
112
112
  responseHeaders
113
113
  );
114
- const responseBody = recorder.bodyCaptured() && !isUpgrade ? _chunkJKW6E4L3cjs.makeCapturedBody.call(void 0,
114
+ const responseBody = recorder.bodyCaptured() && !isUpgrade ? _chunkDNBARLGBcjs.makeCapturedBody.call(void 0,
115
115
  recorder.body(),
116
116
  recorder.totalBytes(),
117
117
  recorder.truncated(),
@@ -129,7 +129,7 @@ function wrapHttpHandler(handler, xray, options) {
129
129
  try {
130
130
  options.onError(ctx, capturedError);
131
131
  } catch (err) {
132
- _chunkJKW6E4L3cjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onError failed", {
132
+ _chunkDNBARLGBcjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onError failed", {
133
133
  error: err instanceof Error ? err.message : String(err)
134
134
  });
135
135
  }
@@ -138,7 +138,7 @@ function wrapHttpHandler(handler, xray, options) {
138
138
  try {
139
139
  options.onResponse(ctx, log);
140
140
  } catch (err) {
141
- _chunkJKW6E4L3cjs.logWithLevel.call(void 0,
141
+ _chunkDNBARLGBcjs.logWithLevel.call(void 0,
142
142
  xray.config.logger,
143
143
  "warn",
144
144
  xray.config.logLevel,
@@ -162,7 +162,7 @@ function wrapHttpHandler(handler, xray, options) {
162
162
  try {
163
163
  options.onError(ctx, err);
164
164
  } catch (errInner) {
165
- _chunkJKW6E4L3cjs.logWithLevel.call(void 0,
165
+ _chunkDNBARLGBcjs.logWithLevel.call(void 0,
166
166
  xray.config.logger,
167
167
  "warn",
168
168
  xray.config.logLevel,
@@ -182,7 +182,7 @@ function wrapHttpHandler(handler, xray, options) {
182
182
  try {
183
183
  options.onError(ctx, err);
184
184
  } catch (errInner) {
185
- _chunkJKW6E4L3cjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onError failed", {
185
+ _chunkDNBARLGBcjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onError failed", {
186
186
  error: errInner instanceof Error ? errInner.message : String(errInner)
187
187
  });
188
188
  }
@@ -192,7 +192,7 @@ function wrapHttpHandler(handler, xray, options) {
192
192
  };
193
193
  }
194
194
  function getXrayContext(req) {
195
- return _chunkGNSXLLECcjs.getXrayContextFromObject.call(void 0, req);
195
+ return _chunkCPHFCOA5cjs.getXrayContextFromObject.call(void 0, req);
196
196
  }
197
197
  function wrapRequestBody(req, limit) {
198
198
  if (limit <= 0) {
@@ -202,7 +202,7 @@ function wrapRequestBody(req, limit) {
202
202
  return null;
203
203
  }
204
204
  const capture = {
205
- buffer: new (0, _chunkGNSXLLECcjs.LimitedBuffer)(limit),
205
+ buffer: new (0, _chunkCPHFCOA5cjs.LimitedBuffer)(limit),
206
206
  read: false,
207
207
  userConsuming: false
208
208
  };
@@ -297,7 +297,7 @@ var ResponseRecorder = class {
297
297
  constructor(captureBody, maxBodySize, onHeader) {
298
298
  this.wroteHeader = false;
299
299
  this.bytes = 0;
300
- this.buffer = captureBody ? new (0, _chunkGNSXLLECcjs.LimitedBuffer)(maxBodySize) : null;
300
+ this.buffer = captureBody ? new (0, _chunkCPHFCOA5cjs.LimitedBuffer)(maxBodySize) : null;
301
301
  this.onHeader = onHeader;
302
302
  }
303
303
  body() {
@@ -317,9 +317,9 @@ var ResponseRecorder = class {
317
317
  }
318
318
  headersSnapshot(defaultHeaders) {
319
319
  if (this.headerSnapshot) {
320
- return _chunkGNSXLLECcjs.headerValuesFromNodeHeaders.call(void 0, this.headerSnapshot);
320
+ return _chunkCPHFCOA5cjs.headerValuesFromNodeHeaders.call(void 0, this.headerSnapshot);
321
321
  }
322
- return _chunkGNSXLLECcjs.headerValuesFromNodeHeaders.call(void 0, defaultHeaders);
322
+ return _chunkCPHFCOA5cjs.headerValuesFromNodeHeaders.call(void 0, defaultHeaders);
323
323
  }
324
324
  statusCode() {
325
325
  return this.status;
@@ -430,9 +430,9 @@ function ensureResponseRequestId(res, ctx, xray) {
430
430
  res.setHeader(canonicalHeaderName(headerName), explicit);
431
431
  return;
432
432
  }
433
- const generated = _chunkJKW6E4L3cjs.generateRequestId.call(void 0, );
433
+ const generated = _chunkDNBARLGBcjs.generateRequestId.call(void 0, );
434
434
  res.setHeader(canonicalHeaderName(headerName), generated);
435
- _chunkGNSXLLECcjs.setContextRequestId.call(void 0, ctx, generated);
435
+ _chunkCPHFCOA5cjs.setContextRequestId.call(void 0, ctx, generated);
436
436
  }
437
437
  function fullUrl(req) {
438
438
  const requestUrl = resolveRequestUrl(req);
@@ -631,4 +631,4 @@ function ensureLeadingSlash(path) {
631
631
 
632
632
 
633
633
  exports.createEmitter = createEmitter2; exports.wrapHttpHandler = wrapHttpHandler; exports.getXrayContext = getXrayContext;
634
- //# sourceMappingURL=chunk-2HW4AEKB.cjs.map
634
+ //# sourceMappingURL=chunk-OCXEYDDH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-2HW4AEKB.cjs","../src/node/emitter.ts","../src/node/adapter.ts"],"names":["createEmitter"],"mappings":"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EAAA;AACT;AAES;AACD,EAAA;AACF,EAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AACF,EAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAES;AACH,EAAA;AACF,IAAA;AACF,EAAA;AACI,EAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAES;AACF,EAAA;AACH,IAAA;AACF,EAAA;AACM,EAAA;AACC,EAAA;AACT;AAES;AACA,EAAA;AAKT;AAMM;AAEG;AACH,EAAA;AACF,IAAA;AACF,EAAA;AACM,EAAA;AACF,EAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AACN,EAAA;AAEM,EAAA;AACF,EAAA;AACE,IAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACF,EAAA;AAEI,EAAA;AAKA,EAAA;AACF,IAAA;AACF,EAAA;AAEO,EAAA;AACL,IAAA;AACA,IAAA;AACM,IAAA;AACJ,MAAA;AACF,IAAA;AACI,IAAA;AACF,MAAA;AACI,MAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACD,EAAA;AACH;AAES;AACD,EAAA;AAKA,EAAA;AACA,EAAA;AACD,EAAA;AACH,IAAA;AACF,EAAA;AAEM,EAAA;AACA,EAAA;AACC,EAAA;AACT;AAES;AACH,EAAA;AACF,IAAA;AACF,EAAA;AACI,EAAA;AACF,IAAA;AACM,MAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAES;AAID,EAAA;AACD,EAAA;AACH,IAAA;AACF,EAAA;AAEM,EAAA;AACN,EAAA;AACE,IAAA;AACM,MAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACI,EAAA;AACF,IAAA;AACM,MAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAES;AAKF,EAAA;AACH,IAAA;AACF,EAAA;AACM,EAAA;AACF,EAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AACA,EAAA;AAKF,EAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACC,IAAA;AACH,MAAA;AACF,IAAA;AACA,IAAA;AACM,MAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACI,MAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACD,EAAA;AAEM,EAAA;AACT;AAES;AACD,EAAA;AACA,EAAA;AACN,EAAA;AACQ,IAAA;AACF,IAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAES;AACD,EAAA;AACA,EAAA;AACD,EAAA;AACH,IAAA;AACF,EAAA;AACK,EAAA;AACH,IAAA;AACF,EAAA;AACM,EAAA;AACC,EAAA;AACT;AAES;AACF,EAAA;AACH,IAAA;AACF,EAAA;AACO,EAAA;AACT;AFpIU;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-2HW4AEKB.cjs","sourcesContent":[null,"import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport {\n createEmitter as createCoreEmitter,\n normalizeConfig,\n type XrayRuntimeConfig,\n} from '../core/index';\n\nexport function createEmitter(config: XrayRuntimeConfig) {\n const resolved = normalizeConfig(config);\n const exporter =\n config.exporter?.instance ??\n new OTLPTraceExporter({\n url: resolved.exporter.endpointUrl,\n headers: resolved.exporter.headers ?? {},\n timeoutMillis: resolved.exporter.timeoutMs,\n });\n\n return createCoreEmitter(config, exporter);\n}\n","import type { IncomingMessage, ServerResponse } from 'node:http';\nimport { TLSSocket } from 'node:tls';\nimport type {\n CaptureConfig,\n NormalizedRequest,\n NormalizedResponse,\n RedactionConfig,\n RequestLog,\n XrayContext,\n XrayEmitter,\n} from '../core/index';\nimport {\n LimitedBuffer,\n bindContextToObject,\n getXrayContextFromObject,\n headerValuesFromNodeHeaders,\n isWebsocketUpgrade,\n logWithLevel,\n makeCapturedBody,\n setCaptureOverride,\n setContextRequestId,\n setContextRoute,\n setRedactionOverride,\n generateRequestId,\n} from '../core/internal';\n\nexport type NodeHttpHandler = (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;\n\nexport interface WrapOptions {\n route?: string;\n requestId?: string;\n capture?: Partial<CaptureConfig>;\n redaction?: Partial<RedactionConfig>;\n onRequest?: (ctx: XrayContext) => void;\n onResponse?: (ctx: XrayContext, log: RequestLog) => void;\n onError?: (ctx: XrayContext, err: unknown) => void;\n}\n\nexport function wrapHttpHandler(\n handler: NodeHttpHandler,\n xray: XrayEmitter,\n options?: WrapOptions,\n): NodeHttpHandler {\n return (req, res) => {\n const normalizedRequest: NormalizedRequest = {\n method: req.method ?? 'GET',\n url: fullUrl(req),\n route: options?.route,\n headers: headerValuesFromNodeHeaders(\n req.headers as Record<string, string | string[] | number | undefined>,\n ),\n requestId: options?.requestId,\n remoteAddress: req.socket?.remoteAddress,\n startTimeMs: Date.now(),\n };\n\n trackExpressParams(req);\n\n const ctx = xray.startRequest(normalizedRequest);\n bindContextToObject(req, ctx);\n bindContextToObject(res, ctx);\n\n if (options?.requestId) {\n setContextRequestId(ctx, options.requestId);\n }\n if (options?.route) {\n setContextRoute(ctx, options.route);\n }\n if (options?.capture) {\n setCaptureOverride(ctx, options.capture);\n }\n if (options?.redaction) {\n setRedactionOverride(ctx, options.redaction);\n }\n\n if (options?.onRequest) {\n try {\n options.onRequest(ctx);\n } catch (err) {\n logWithLevel(xray.config.logger, 'warn', xray.config.logLevel, 'xray: onRequest failed', {\n error: err instanceof Error ? err.message : String(err),\n });\n }\n }\n\n const capture = options?.capture\n ? { ...xray.config.capture, ...options.capture }\n : xray.config.capture;\n\n const requestCapture =\n capture.requestBody === 'none' ? null : wrapRequestBody(req, capture.maxBodyBytes);\n const recorder = new ResponseRecorder(\n capture.responseBody !== 'none',\n capture.maxBodyBytes,\n (response) => {\n ensureResponseRequestId(response, ctx, xray);\n },\n );\n recorder.wrap(res);\n\n let finished = false;\n let capturedError: unknown;\n let onErrorCalled = false;\n\n const finish = () => {\n if (finished) {\n return;\n }\n finished = true;\n if (!normalizedRequest.route) {\n const route = resolveExpressRoute(req);\n if (route) {\n normalizedRequest.route = route;\n }\n }\n\n if (requestCapture && requestCapture.read) {\n normalizedRequest.body = makeCapturedBody(\n requestCapture.buffer.bytes(),\n requestCapture.buffer.totalBytes(),\n requestCapture.buffer.truncated(),\n capture.requestBody === 'text' ? 'text' : 'base64',\n );\n }\n\n const responseHeaders = recorder.headersSnapshot(res.getHeaders());\n const recordedStatus = recorder.statusCode() ?? res.statusCode;\n const statusCode = capturedError && !recorder.hasWrittenHeader() ? 500 : recordedStatus;\n const isUpgrade = isWebsocketUpgrade(\n statusCode ?? 0,\n normalizedRequest.headers,\n responseHeaders,\n );\n\n const responseBody =\n recorder.bodyCaptured() && !isUpgrade\n ? makeCapturedBody(\n recorder.body(),\n recorder.totalBytes(),\n recorder.truncated(),\n capture.responseBody === 'text' ? 'text' : 'base64',\n )\n : undefined;\n\n const normalizedResponse: NormalizedResponse = {\n statusCode: statusCode ?? undefined,\n headers: responseHeaders,\n body: responseBody,\n endTimeMs: Date.now(),\n };\n\n const log = xray.endRequest(ctx, normalizedResponse, capturedError);\n\n if (capturedError && options?.onError && !onErrorCalled) {\n onErrorCalled = true;\n try {\n options.onError(ctx, capturedError);\n } catch (err) {\n logWithLevel(xray.config.logger, 'warn', xray.config.logLevel, 'xray: onError failed', {\n error: err instanceof Error ? err.message : String(err),\n });\n }\n }\n\n if (options?.onResponse) {\n try {\n options.onResponse(ctx, log);\n } catch (err) {\n logWithLevel(\n xray.config.logger,\n 'warn',\n xray.config.logLevel,\n 'xray: onResponse failed',\n {\n error: err instanceof Error ? err.message : String(err),\n },\n );\n }\n }\n };\n\n res.once('finish', finish);\n res.once('close', finish);\n\n try {\n const result = handler(req, res);\n if (result && typeof (result as Promise<void>).catch === 'function') {\n void (result as Promise<void>).catch((err) => {\n capturedError = err;\n if (options?.onError && !onErrorCalled) {\n onErrorCalled = true;\n try {\n options.onError(ctx, err);\n } catch (errInner) {\n logWithLevel(\n xray.config.logger,\n 'warn',\n xray.config.logLevel,\n 'xray: onError failed',\n {\n error: errInner instanceof Error ? errInner.message : String(errInner),\n },\n );\n }\n }\n });\n }\n } catch (err) {\n capturedError = err;\n if (options?.onError && !onErrorCalled) {\n onErrorCalled = true;\n try {\n options.onError(ctx, err);\n } catch (errInner) {\n logWithLevel(xray.config.logger, 'warn', xray.config.logLevel, 'xray: onError failed', {\n error: errInner instanceof Error ? errInner.message : String(errInner),\n });\n }\n }\n throw err;\n }\n };\n}\n\nexport function getXrayContext(req: IncomingMessage): XrayContext | undefined {\n return getXrayContextFromObject(req);\n}\n\ntype RequestCapture = {\n buffer: LimitedBuffer;\n read: boolean;\n userConsuming: boolean;\n};\n\nfunction wrapRequestBody(req: IncomingMessage, limit: number): RequestCapture | null {\n if (limit <= 0) {\n return null;\n }\n if (!hasRequestBody(req)) {\n return null;\n }\n\n const capture: RequestCapture = {\n buffer: new LimitedBuffer(limit),\n read: false,\n userConsuming: false,\n };\n\n const originalPush = req.push;\n req.push = function push(chunk: unknown, encoding?: BufferEncoding): boolean {\n if (chunk != null) {\n recordChunk(capture, chunk, encoding);\n }\n return originalPush.call(req, chunk as any, encoding as any);\n } as typeof req.push;\n\n const originalEmit = req.emit;\n req.emit = function emit(event: string, ...args: unknown[]): boolean {\n if (event === 'data' && capture.userConsuming && args[0] != null) {\n capture.read = true;\n }\n if (event === 'end' && capture.userConsuming) {\n capture.read = true;\n }\n return originalEmit.call(req, event, ...args);\n } as typeof req.emit;\n\n const originalOn = req.on;\n req.on = function on(event: string, listener: (...args: any[]) => void): any {\n if (event === 'data' || event === 'readable') {\n capture.userConsuming = true;\n }\n return originalOn.call(req, event, listener);\n } as typeof req.on;\n\n const originalOnce = req.once;\n req.once = function once(event: string, listener: (...args: any[]) => void): any {\n if (event === 'data' || event === 'readable') {\n capture.userConsuming = true;\n }\n return originalOnce.call(req, event, listener);\n } as typeof req.once;\n\n const originalAddListener = req.addListener;\n req.addListener = function addListener(event: string, listener: (...args: any[]) => void): any {\n if (event === 'data' || event === 'readable') {\n capture.userConsuming = true;\n }\n return originalAddListener.call(req, event, listener);\n } as typeof req.addListener;\n\n const originalPipe = req.pipe;\n req.pipe = function pipe(destination: unknown, options?: unknown): unknown {\n capture.userConsuming = true;\n return originalPipe.call(req, destination as any, options as any);\n } as typeof req.pipe;\n\n const originalRead = req.read;\n req.read = function read(size?: number): any {\n capture.userConsuming = true;\n const chunk = originalRead.call(req, size as any) as unknown;\n const readableFlowing = (req as IncomingMessage & { readableFlowing?: boolean | null })\n .readableFlowing;\n const hasDataListeners =\n typeof req.listenerCount === 'function' && req.listenerCount('data') > 0;\n if (!hasDataListeners && readableFlowing !== true && chunk != null) {\n capture.read = true;\n }\n return chunk as any;\n } as typeof req.read;\n\n return capture;\n}\n\nfunction hasRequestBody(req: IncomingMessage): boolean {\n if (req.headers['content-length'] != null) {\n return true;\n }\n if (req.headers['transfer-encoding'] != null) {\n return true;\n }\n return false;\n}\n\nfunction recordChunk(capture: RequestCapture, chunk: unknown, encoding?: BufferEncoding): void {\n const bytes = toBytes(chunk, encoding);\n if (!bytes) {\n return;\n }\n capture.buffer.write(bytes);\n}\n\nfunction toBytes(chunk: unknown, encoding?: BufferEncoding): Uint8Array | null {\n if (chunk == null) {\n return null;\n }\n if (typeof chunk === 'string') {\n return Buffer.from(chunk, encoding);\n }\n if (chunk instanceof Uint8Array) {\n return chunk;\n }\n if (chunk instanceof ArrayBuffer) {\n return new Uint8Array(chunk);\n }\n return null;\n}\n\nclass ResponseRecorder {\n private readonly buffer: LimitedBuffer | null;\n private headerSnapshot?: Record<string, string | string[] | number | undefined>;\n private status?: number;\n private wroteHeader = false;\n private bytes = 0;\n private readonly onHeader?: (res: ServerResponse) => void;\n\n constructor(captureBody: boolean, maxBodySize: number, onHeader?: (res: ServerResponse) => void) {\n this.buffer = captureBody ? new LimitedBuffer(maxBodySize) : null;\n this.onHeader = onHeader;\n }\n\n body(): Uint8Array {\n return this.buffer?.bytes() ?? new Uint8Array();\n }\n\n totalBytes(): number {\n return this.buffer?.totalBytes() ?? 0;\n }\n\n bodyCaptured(): boolean {\n return !!this.buffer && this.buffer.totalBytes() > 0;\n }\n\n bytesWritten(): number {\n return this.bytes;\n }\n\n hasWrittenHeader(): boolean {\n return this.wroteHeader;\n }\n\n headersSnapshot(\n defaultHeaders: Record<string, string | string[] | number | undefined>,\n ): Record<string, string | string[]> {\n if (this.headerSnapshot) {\n return headerValuesFromNodeHeaders(this.headerSnapshot);\n }\n return headerValuesFromNodeHeaders(defaultHeaders);\n }\n\n statusCode(): number | undefined {\n return this.status;\n }\n\n truncated(): boolean {\n return this.buffer?.truncated() ?? false;\n }\n\n wrap(res: ServerResponse): void {\n const originalWriteHead = res.writeHead;\n res.writeHead = ((statusCode: number, ...args: any[]) => {\n if (!this.wroteHeader) {\n this.applyWriteHeadHeaders(res, args);\n }\n this.recordHeader(res, statusCode);\n return (originalWriteHead as any).call(res, statusCode, ...args);\n }) as typeof res.writeHead;\n\n const originalWrite = res.write;\n res.write = ((chunk: unknown, encoding?: BufferEncoding, cb?: (err?: Error | null) => void) => {\n this.recordHeader(res, res.statusCode ?? 200);\n this.recordWrite(chunk, encoding);\n return originalWrite.call(res, chunk as any, encoding as any, cb as any);\n }) as typeof res.write;\n\n const originalEnd = res.end;\n res.end = ((chunk?: unknown, encoding?: BufferEncoding, cb?: () => void) => {\n this.recordHeader(res, res.statusCode ?? 200);\n if (chunk) {\n this.recordWrite(chunk, encoding);\n }\n return originalEnd.call(res, chunk as any, encoding as any, cb as any);\n }) as typeof res.end;\n\n if (typeof res.flushHeaders === 'function') {\n const originalFlush = res.flushHeaders;\n res.flushHeaders = (() => {\n this.recordHeader(res, res.statusCode ?? 200);\n return originalFlush.call(res);\n }) as typeof res.flushHeaders;\n }\n }\n\n private recordHeader(res: ServerResponse, statusCode: number): void {\n if (this.wroteHeader) {\n return;\n }\n this.onHeader?.(res);\n this.wroteHeader = true;\n this.status = statusCode;\n this.headerSnapshot = { ...res.getHeaders() } as Record<\n string,\n string | string[] | number | undefined\n >;\n }\n\n private applyWriteHeadHeaders(res: ServerResponse, args: any[]): void {\n if (args.length === 0) {\n return;\n }\n const headersArg = typeof args[0] === 'string' ? args[1] : args[0];\n if (!headersArg) {\n return;\n }\n if (Array.isArray(headersArg)) {\n if (headersArg.length === 0) {\n return;\n }\n if (typeof headersArg[0] === 'string') {\n for (let i = 0; i < headersArg.length - 1; i += 2) {\n const name = headersArg[i];\n const value = headersArg[i + 1];\n if (typeof name === 'string' && value !== undefined && value !== null) {\n res.setHeader(name, value as any);\n }\n }\n return;\n }\n for (const entry of headersArg) {\n if (!Array.isArray(entry)) {\n continue;\n }\n const [name, value] = entry;\n if (typeof name === 'string' && value !== undefined && value !== null) {\n res.setHeader(name, value as any);\n }\n }\n return;\n }\n if (typeof headersArg === 'object') {\n for (const [name, value] of Object.entries(headersArg as Record<string, unknown>)) {\n if (value !== undefined && value !== null) {\n res.setHeader(name, value as any);\n }\n }\n }\n }\n\n private recordWrite(chunk: unknown, encoding?: BufferEncoding): void {\n const bytes = toBytes(chunk, encoding);\n if (!bytes) {\n return;\n }\n this.bytes += bytes.length;\n if (this.buffer) {\n this.buffer.write(bytes);\n }\n }\n}\n\nfunction ensureResponseRequestId(res: ServerResponse, ctx: XrayContext, xray: XrayEmitter): void {\n const headerName = xray.config.requestId.header;\n const existing = headerValueFromNode(res.getHeader(headerName));\n if (existing) {\n return;\n }\n\n const explicit = normalizeRequestIdCandidate(ctx.requestId);\n if (explicit) {\n res.setHeader(canonicalHeaderName(headerName), explicit);\n return;\n }\n\n const generated = generateRequestId();\n res.setHeader(canonicalHeaderName(headerName), generated);\n setContextRequestId(ctx, generated);\n}\n\nfunction fullUrl(req: IncomingMessage): string {\n const requestUrl = resolveRequestUrl(req);\n if (!requestUrl) {\n return '';\n }\n if (requestUrl.startsWith('http://') || requestUrl.startsWith('https://')) {\n return requestUrl;\n }\n\n const host = req.headers['host'];\n if (!host || typeof host !== 'string') {\n return requestUrl;\n }\n const scheme = req.socket instanceof TLSSocket ? 'https' : 'http';\n return `${scheme}://${host}${requestUrl}`;\n}\n\nfunction resolveRequestUrl(req: IncomingMessage): string {\n const requestUrl = req.url ?? '';\n if (requestUrl.startsWith('http://') || requestUrl.startsWith('https://')) {\n return requestUrl;\n }\n\n const expressReq = req as IncomingMessage & { originalUrl?: unknown };\n if (typeof expressReq.originalUrl === 'string' && expressReq.originalUrl.length > 0) {\n return expressReq.originalUrl;\n }\n return requestUrl;\n}\n\nfunction headerValueFromNode(value: unknown): string | undefined {\n if (value == null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return normalizeRequestIdCandidate(value[0]);\n }\n return normalizeRequestIdCandidate(`${value}`);\n}\n\nfunction normalizeRequestIdCandidate(value: string | undefined): string | undefined {\n if (!value) {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed ? trimmed : undefined;\n}\n\nfunction canonicalHeaderName(headerName: string): string {\n return headerName\n .split('-')\n .filter(Boolean)\n .map((part) => (part ? part[0]!.toUpperCase() + part.slice(1) : part))\n .join('-');\n}\n\ntype ExpressRoutePath = string | string[] | RegExp;\n\ntype ExpressRouteParams = Record<string, string | string[]>;\n\nconst expressParamsHistory = new WeakMap<IncomingMessage, ExpressRouteParams[]>();\n\nfunction trackExpressParams(req: IncomingMessage): void {\n if (expressParamsHistory.has(req)) {\n return;\n }\n const anyReq = req as IncomingMessage & { app?: unknown };\n if (typeof anyReq.app !== 'function') {\n return;\n }\n\n const history: ExpressRouteParams[] = [];\n expressParamsHistory.set(req, history);\n\n const descriptor = Object.getOwnPropertyDescriptor(req, 'params');\n if (descriptor && !descriptor.configurable) {\n if (descriptor.value && typeof descriptor.value === 'object') {\n history.push({ ...(descriptor.value as ExpressRouteParams) });\n }\n return;\n }\n\n let current = (\n descriptor && 'value' in descriptor\n ? (descriptor.value as ExpressRouteParams | undefined)\n : undefined\n ) as ExpressRouteParams | undefined;\n if (current && typeof current === 'object') {\n history.push({ ...current });\n }\n\n Object.defineProperty(req, 'params', {\n configurable: true,\n enumerable: descriptor?.enumerable ?? true,\n get() {\n return current;\n },\n set(value) {\n current = value as ExpressRouteParams | undefined;\n if (value && typeof value === 'object') {\n history.push({ ...(value as ExpressRouteParams) });\n }\n },\n });\n}\n\nfunction resolveExpressRoute(req: IncomingMessage): string | undefined {\n const anyReq = req as IncomingMessage & {\n baseUrl?: string;\n params?: ExpressRouteParams;\n route?: { path?: ExpressRoutePath };\n };\n const routePath = extractExpressRoutePath(anyReq.route?.path);\n const baseUrl = anyReq.baseUrl ?? '';\n if (!routePath && !baseUrl) {\n return undefined;\n }\n\n const params = collectExpressParams(req, anyReq.params);\n const resolvedBaseUrl = replaceBaseUrlParams(baseUrl, params, routePath);\n return joinExpressRoute(resolvedBaseUrl, routePath);\n}\n\nfunction extractExpressRoutePath(path?: ExpressRoutePath): string | undefined {\n if (typeof path === 'string') {\n return path;\n }\n if (Array.isArray(path)) {\n for (const entry of path) {\n if (typeof entry === 'string') {\n return entry;\n }\n }\n }\n return undefined;\n}\n\nfunction collectExpressParams(\n req: IncomingMessage,\n fallback?: ExpressRouteParams,\n): ExpressRouteParams {\n const history = expressParamsHistory.get(req);\n if (!history || history.length === 0) {\n return fallback ?? {};\n }\n\n const merged: ExpressRouteParams = {};\n for (const snapshot of history) {\n for (const [key, value] of Object.entries(snapshot)) {\n if (!(key in merged)) {\n merged[key] = value;\n }\n }\n }\n if (fallback) {\n for (const [key, value] of Object.entries(fallback)) {\n if (!(key in merged)) {\n merged[key] = value;\n }\n }\n }\n return merged;\n}\n\nfunction replaceBaseUrlParams(\n baseUrl: string,\n params: ExpressRouteParams,\n routePath?: string,\n): string {\n if (!baseUrl) {\n return baseUrl;\n }\n const entries = Object.entries(params);\n if (entries.length === 0) {\n return baseUrl;\n }\n\n const excluded = new Set(routePath ? extractExpressParamNames(routePath) : []);\n const replacements = entries\n .filter(([name]) => !excluded.has(name))\n .map(([name, value]) => ({ name, value: Array.isArray(value) ? value[0] : value }))\n .filter((entry): entry is { name: string; value: string } => !!entry.value);\n\n if (replacements.length === 0) {\n return baseUrl;\n }\n\n const used = new Set<string>();\n const encodedCache = new Map<string, string>();\n const segments = baseUrl.split('/');\n const updated = segments.map((segment) => {\n if (!segment) {\n return segment;\n }\n for (const { name, value } of replacements) {\n if (used.has(name)) {\n continue;\n }\n const encodedValue = encodedCache.get(value) ?? encodeURIComponent(value);\n encodedCache.set(value, encodedValue);\n if (segment === value || segment === encodedValue) {\n used.add(name);\n return `:${name}`;\n }\n }\n return segment;\n });\n\n return updated.join('/');\n}\n\nfunction extractExpressParamNames(path: string): string[] {\n const names: string[] = [];\n const paramPattern = /:([A-Za-z0-9_]+)(?:\\([^)]*\\))?[?*+]?/g;\n for (const match of path.matchAll(paramPattern)) {\n const name = match[1];\n if (name) {\n names.push(name);\n }\n }\n return names;\n}\n\nfunction joinExpressRoute(baseUrl: string, routePath?: string): string {\n const base = baseUrl ? ensureLeadingSlash(baseUrl) : '';\n const route = routePath ? ensureLeadingSlash(routePath) : '';\n if (!base) {\n return route || '/';\n }\n if (!route || route === '/') {\n return base;\n }\n const trimmedBase = base.endsWith('/') ? base.slice(0, -1) : base;\n return `${trimmedBase}${route}`;\n}\n\nfunction ensureLeadingSlash(path: string): string {\n if (!path) {\n return '/';\n }\n return path.startsWith('/') ? path : `/${path}`;\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-OCXEYDDH.cjs","../src/node/emitter.ts","../src/node/adapter.ts"],"names":["createEmitter"],"mappings":"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EAAA;AACT;AAES;AACD,EAAA;AACF,EAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AACF,EAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAES;AACH,EAAA;AACF,IAAA;AACF,EAAA;AACI,EAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAES;AACF,EAAA;AACH,IAAA;AACF,EAAA;AACM,EAAA;AACC,EAAA;AACT;AAES;AACA,EAAA;AAKT;AAMM;AAEG;AACH,EAAA;AACF,IAAA;AACF,EAAA;AACM,EAAA;AACF,EAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AACN,EAAA;AAEM,EAAA;AACF,EAAA;AACE,IAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACF,EAAA;AAEI,EAAA;AAKA,EAAA;AACF,IAAA;AACF,EAAA;AAEO,EAAA;AACL,IAAA;AACA,IAAA;AACM,IAAA;AACJ,MAAA;AACF,IAAA;AACI,IAAA;AACF,MAAA;AACI,MAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACD,EAAA;AACH;AAES;AACD,EAAA;AAKA,EAAA;AACA,EAAA;AACD,EAAA;AACH,IAAA;AACF,EAAA;AAEM,EAAA;AACA,EAAA;AACC,EAAA;AACT;AAES;AACH,EAAA;AACF,IAAA;AACF,EAAA;AACI,EAAA;AACF,IAAA;AACM,MAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAES;AAID,EAAA;AACD,EAAA;AACH,IAAA;AACF,EAAA;AAEM,EAAA;AACN,EAAA;AACE,IAAA;AACM,MAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACI,EAAA;AACF,IAAA;AACM,MAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAES;AAKF,EAAA;AACH,IAAA;AACF,EAAA;AACM,EAAA;AACF,EAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AACA,EAAA;AAKF,EAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACC,IAAA;AACH,MAAA;AACF,IAAA;AACA,IAAA;AACM,MAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACI,MAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACD,EAAA;AAEM,EAAA;AACT;AAES;AACD,EAAA;AACA,EAAA;AACN,EAAA;AACQ,IAAA;AACF,IAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAES;AACD,EAAA;AACA,EAAA;AACD,EAAA;AACH,IAAA;AACF,EAAA;AACK,EAAA;AACH,IAAA;AACF,EAAA;AACM,EAAA;AACC,EAAA;AACT;AAES;AACF,EAAA;AACH,IAAA;AACF,EAAA;AACO,EAAA;AACT;AFpIU;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-OCXEYDDH.cjs","sourcesContent":[null,"import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport {\n createEmitter as createCoreEmitter,\n normalizeConfig,\n type XrayRuntimeConfig,\n} from '../core/index';\n\nexport function createEmitter(config: XrayRuntimeConfig) {\n const resolved = normalizeConfig(config);\n const exporter =\n config.exporter?.instance ??\n new OTLPTraceExporter({\n url: resolved.exporter.endpointUrl,\n headers: resolved.exporter.headers ?? {},\n timeoutMillis: resolved.exporter.timeoutMs,\n });\n\n return createCoreEmitter(config, exporter);\n}\n","import type { IncomingMessage, ServerResponse } from 'node:http';\nimport { TLSSocket } from 'node:tls';\nimport type {\n CaptureConfig,\n NormalizedRequest,\n NormalizedResponse,\n RedactionConfig,\n RequestLog,\n XrayContext,\n XrayEmitter,\n} from '../core/index';\nimport {\n LimitedBuffer,\n bindContextToObject,\n getXrayContextFromObject,\n headerValuesFromNodeHeaders,\n isWebsocketUpgrade,\n logWithLevel,\n makeCapturedBody,\n setCaptureOverride,\n setContextRequestId,\n setContextRoute,\n setRedactionOverride,\n generateRequestId,\n} from '../core/internal';\n\nexport type NodeHttpHandler = (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;\n\nexport interface WrapOptions {\n route?: string;\n requestId?: string;\n capture?: Partial<CaptureConfig>;\n redaction?: Partial<RedactionConfig>;\n onRequest?: (ctx: XrayContext) => void;\n onResponse?: (ctx: XrayContext, log: RequestLog) => void;\n onError?: (ctx: XrayContext, err: unknown) => void;\n}\n\nexport function wrapHttpHandler(\n handler: NodeHttpHandler,\n xray: XrayEmitter,\n options?: WrapOptions,\n): NodeHttpHandler {\n return (req, res) => {\n const normalizedRequest: NormalizedRequest = {\n method: req.method ?? 'GET',\n url: fullUrl(req),\n route: options?.route,\n headers: headerValuesFromNodeHeaders(\n req.headers as Record<string, string | string[] | number | undefined>,\n ),\n requestId: options?.requestId,\n remoteAddress: req.socket?.remoteAddress,\n startTimeMs: Date.now(),\n };\n\n trackExpressParams(req);\n\n const ctx = xray.startRequest(normalizedRequest);\n bindContextToObject(req, ctx);\n bindContextToObject(res, ctx);\n\n if (options?.requestId) {\n setContextRequestId(ctx, options.requestId);\n }\n if (options?.route) {\n setContextRoute(ctx, options.route);\n }\n if (options?.capture) {\n setCaptureOverride(ctx, options.capture);\n }\n if (options?.redaction) {\n setRedactionOverride(ctx, options.redaction);\n }\n\n if (options?.onRequest) {\n try {\n options.onRequest(ctx);\n } catch (err) {\n logWithLevel(xray.config.logger, 'warn', xray.config.logLevel, 'xray: onRequest failed', {\n error: err instanceof Error ? err.message : String(err),\n });\n }\n }\n\n const capture = options?.capture\n ? { ...xray.config.capture, ...options.capture }\n : xray.config.capture;\n\n const requestCapture =\n capture.requestBody === 'none' ? null : wrapRequestBody(req, capture.maxBodyBytes);\n const recorder = new ResponseRecorder(\n capture.responseBody !== 'none',\n capture.maxBodyBytes,\n (response) => {\n ensureResponseRequestId(response, ctx, xray);\n },\n );\n recorder.wrap(res);\n\n let finished = false;\n let capturedError: unknown;\n let onErrorCalled = false;\n\n const finish = () => {\n if (finished) {\n return;\n }\n finished = true;\n if (!normalizedRequest.route) {\n const route = resolveExpressRoute(req);\n if (route) {\n normalizedRequest.route = route;\n }\n }\n\n if (requestCapture && requestCapture.read) {\n normalizedRequest.body = makeCapturedBody(\n requestCapture.buffer.bytes(),\n requestCapture.buffer.totalBytes(),\n requestCapture.buffer.truncated(),\n capture.requestBody === 'text' ? 'text' : 'base64',\n );\n }\n\n const responseHeaders = recorder.headersSnapshot(res.getHeaders());\n const recordedStatus = recorder.statusCode() ?? res.statusCode;\n const statusCode = capturedError && !recorder.hasWrittenHeader() ? 500 : recordedStatus;\n const isUpgrade = isWebsocketUpgrade(\n statusCode ?? 0,\n normalizedRequest.headers,\n responseHeaders,\n );\n\n const responseBody =\n recorder.bodyCaptured() && !isUpgrade\n ? makeCapturedBody(\n recorder.body(),\n recorder.totalBytes(),\n recorder.truncated(),\n capture.responseBody === 'text' ? 'text' : 'base64',\n )\n : undefined;\n\n const normalizedResponse: NormalizedResponse = {\n statusCode: statusCode ?? undefined,\n headers: responseHeaders,\n body: responseBody,\n endTimeMs: Date.now(),\n };\n\n const log = xray.endRequest(ctx, normalizedResponse, capturedError);\n\n if (capturedError && options?.onError && !onErrorCalled) {\n onErrorCalled = true;\n try {\n options.onError(ctx, capturedError);\n } catch (err) {\n logWithLevel(xray.config.logger, 'warn', xray.config.logLevel, 'xray: onError failed', {\n error: err instanceof Error ? err.message : String(err),\n });\n }\n }\n\n if (options?.onResponse) {\n try {\n options.onResponse(ctx, log);\n } catch (err) {\n logWithLevel(\n xray.config.logger,\n 'warn',\n xray.config.logLevel,\n 'xray: onResponse failed',\n {\n error: err instanceof Error ? err.message : String(err),\n },\n );\n }\n }\n };\n\n res.once('finish', finish);\n res.once('close', finish);\n\n try {\n const result = handler(req, res);\n if (result && typeof (result as Promise<void>).catch === 'function') {\n void (result as Promise<void>).catch((err) => {\n capturedError = err;\n if (options?.onError && !onErrorCalled) {\n onErrorCalled = true;\n try {\n options.onError(ctx, err);\n } catch (errInner) {\n logWithLevel(\n xray.config.logger,\n 'warn',\n xray.config.logLevel,\n 'xray: onError failed',\n {\n error: errInner instanceof Error ? errInner.message : String(errInner),\n },\n );\n }\n }\n });\n }\n } catch (err) {\n capturedError = err;\n if (options?.onError && !onErrorCalled) {\n onErrorCalled = true;\n try {\n options.onError(ctx, err);\n } catch (errInner) {\n logWithLevel(xray.config.logger, 'warn', xray.config.logLevel, 'xray: onError failed', {\n error: errInner instanceof Error ? errInner.message : String(errInner),\n });\n }\n }\n throw err;\n }\n };\n}\n\nexport function getXrayContext(req: IncomingMessage): XrayContext | undefined {\n return getXrayContextFromObject(req);\n}\n\ntype RequestCapture = {\n buffer: LimitedBuffer;\n read: boolean;\n userConsuming: boolean;\n};\n\nfunction wrapRequestBody(req: IncomingMessage, limit: number): RequestCapture | null {\n if (limit <= 0) {\n return null;\n }\n if (!hasRequestBody(req)) {\n return null;\n }\n\n const capture: RequestCapture = {\n buffer: new LimitedBuffer(limit),\n read: false,\n userConsuming: false,\n };\n\n const originalPush = req.push;\n req.push = function push(chunk: unknown, encoding?: BufferEncoding): boolean {\n if (chunk != null) {\n recordChunk(capture, chunk, encoding);\n }\n return originalPush.call(req, chunk as any, encoding as any);\n } as typeof req.push;\n\n const originalEmit = req.emit;\n req.emit = function emit(event: string, ...args: unknown[]): boolean {\n if (event === 'data' && capture.userConsuming && args[0] != null) {\n capture.read = true;\n }\n if (event === 'end' && capture.userConsuming) {\n capture.read = true;\n }\n return originalEmit.call(req, event, ...args);\n } as typeof req.emit;\n\n const originalOn = req.on;\n req.on = function on(event: string, listener: (...args: any[]) => void): any {\n if (event === 'data' || event === 'readable') {\n capture.userConsuming = true;\n }\n return originalOn.call(req, event, listener);\n } as typeof req.on;\n\n const originalOnce = req.once;\n req.once = function once(event: string, listener: (...args: any[]) => void): any {\n if (event === 'data' || event === 'readable') {\n capture.userConsuming = true;\n }\n return originalOnce.call(req, event, listener);\n } as typeof req.once;\n\n const originalAddListener = req.addListener;\n req.addListener = function addListener(event: string, listener: (...args: any[]) => void): any {\n if (event === 'data' || event === 'readable') {\n capture.userConsuming = true;\n }\n return originalAddListener.call(req, event, listener);\n } as typeof req.addListener;\n\n const originalPipe = req.pipe;\n req.pipe = function pipe(destination: unknown, options?: unknown): unknown {\n capture.userConsuming = true;\n return originalPipe.call(req, destination as any, options as any);\n } as typeof req.pipe;\n\n const originalRead = req.read;\n req.read = function read(size?: number): any {\n capture.userConsuming = true;\n const chunk = originalRead.call(req, size as any) as unknown;\n const readableFlowing = (req as IncomingMessage & { readableFlowing?: boolean | null })\n .readableFlowing;\n const hasDataListeners =\n typeof req.listenerCount === 'function' && req.listenerCount('data') > 0;\n if (!hasDataListeners && readableFlowing !== true && chunk != null) {\n capture.read = true;\n }\n return chunk as any;\n } as typeof req.read;\n\n return capture;\n}\n\nfunction hasRequestBody(req: IncomingMessage): boolean {\n if (req.headers['content-length'] != null) {\n return true;\n }\n if (req.headers['transfer-encoding'] != null) {\n return true;\n }\n return false;\n}\n\nfunction recordChunk(capture: RequestCapture, chunk: unknown, encoding?: BufferEncoding): void {\n const bytes = toBytes(chunk, encoding);\n if (!bytes) {\n return;\n }\n capture.buffer.write(bytes);\n}\n\nfunction toBytes(chunk: unknown, encoding?: BufferEncoding): Uint8Array | null {\n if (chunk == null) {\n return null;\n }\n if (typeof chunk === 'string') {\n return Buffer.from(chunk, encoding);\n }\n if (chunk instanceof Uint8Array) {\n return chunk;\n }\n if (chunk instanceof ArrayBuffer) {\n return new Uint8Array(chunk);\n }\n return null;\n}\n\nclass ResponseRecorder {\n private readonly buffer: LimitedBuffer | null;\n private headerSnapshot?: Record<string, string | string[] | number | undefined>;\n private status?: number;\n private wroteHeader = false;\n private bytes = 0;\n private readonly onHeader?: (res: ServerResponse) => void;\n\n constructor(captureBody: boolean, maxBodySize: number, onHeader?: (res: ServerResponse) => void) {\n this.buffer = captureBody ? new LimitedBuffer(maxBodySize) : null;\n this.onHeader = onHeader;\n }\n\n body(): Uint8Array {\n return this.buffer?.bytes() ?? new Uint8Array();\n }\n\n totalBytes(): number {\n return this.buffer?.totalBytes() ?? 0;\n }\n\n bodyCaptured(): boolean {\n return !!this.buffer && this.buffer.totalBytes() > 0;\n }\n\n bytesWritten(): number {\n return this.bytes;\n }\n\n hasWrittenHeader(): boolean {\n return this.wroteHeader;\n }\n\n headersSnapshot(\n defaultHeaders: Record<string, string | string[] | number | undefined>,\n ): Record<string, string | string[]> {\n if (this.headerSnapshot) {\n return headerValuesFromNodeHeaders(this.headerSnapshot);\n }\n return headerValuesFromNodeHeaders(defaultHeaders);\n }\n\n statusCode(): number | undefined {\n return this.status;\n }\n\n truncated(): boolean {\n return this.buffer?.truncated() ?? false;\n }\n\n wrap(res: ServerResponse): void {\n const originalWriteHead = res.writeHead;\n res.writeHead = ((statusCode: number, ...args: any[]) => {\n if (!this.wroteHeader) {\n this.applyWriteHeadHeaders(res, args);\n }\n this.recordHeader(res, statusCode);\n return (originalWriteHead as any).call(res, statusCode, ...args);\n }) as typeof res.writeHead;\n\n const originalWrite = res.write;\n res.write = ((chunk: unknown, encoding?: BufferEncoding, cb?: (err?: Error | null) => void) => {\n this.recordHeader(res, res.statusCode ?? 200);\n this.recordWrite(chunk, encoding);\n return originalWrite.call(res, chunk as any, encoding as any, cb as any);\n }) as typeof res.write;\n\n const originalEnd = res.end;\n res.end = ((chunk?: unknown, encoding?: BufferEncoding, cb?: () => void) => {\n this.recordHeader(res, res.statusCode ?? 200);\n if (chunk) {\n this.recordWrite(chunk, encoding);\n }\n return originalEnd.call(res, chunk as any, encoding as any, cb as any);\n }) as typeof res.end;\n\n if (typeof res.flushHeaders === 'function') {\n const originalFlush = res.flushHeaders;\n res.flushHeaders = (() => {\n this.recordHeader(res, res.statusCode ?? 200);\n return originalFlush.call(res);\n }) as typeof res.flushHeaders;\n }\n }\n\n private recordHeader(res: ServerResponse, statusCode: number): void {\n if (this.wroteHeader) {\n return;\n }\n this.onHeader?.(res);\n this.wroteHeader = true;\n this.status = statusCode;\n this.headerSnapshot = { ...res.getHeaders() } as Record<\n string,\n string | string[] | number | undefined\n >;\n }\n\n private applyWriteHeadHeaders(res: ServerResponse, args: any[]): void {\n if (args.length === 0) {\n return;\n }\n const headersArg = typeof args[0] === 'string' ? args[1] : args[0];\n if (!headersArg) {\n return;\n }\n if (Array.isArray(headersArg)) {\n if (headersArg.length === 0) {\n return;\n }\n if (typeof headersArg[0] === 'string') {\n for (let i = 0; i < headersArg.length - 1; i += 2) {\n const name = headersArg[i];\n const value = headersArg[i + 1];\n if (typeof name === 'string' && value !== undefined && value !== null) {\n res.setHeader(name, value as any);\n }\n }\n return;\n }\n for (const entry of headersArg) {\n if (!Array.isArray(entry)) {\n continue;\n }\n const [name, value] = entry;\n if (typeof name === 'string' && value !== undefined && value !== null) {\n res.setHeader(name, value as any);\n }\n }\n return;\n }\n if (typeof headersArg === 'object') {\n for (const [name, value] of Object.entries(headersArg as Record<string, unknown>)) {\n if (value !== undefined && value !== null) {\n res.setHeader(name, value as any);\n }\n }\n }\n }\n\n private recordWrite(chunk: unknown, encoding?: BufferEncoding): void {\n const bytes = toBytes(chunk, encoding);\n if (!bytes) {\n return;\n }\n this.bytes += bytes.length;\n if (this.buffer) {\n this.buffer.write(bytes);\n }\n }\n}\n\nfunction ensureResponseRequestId(res: ServerResponse, ctx: XrayContext, xray: XrayEmitter): void {\n const headerName = xray.config.requestId.header;\n const existing = headerValueFromNode(res.getHeader(headerName));\n if (existing) {\n return;\n }\n\n const explicit = normalizeRequestIdCandidate(ctx.requestId);\n if (explicit) {\n res.setHeader(canonicalHeaderName(headerName), explicit);\n return;\n }\n\n const generated = generateRequestId();\n res.setHeader(canonicalHeaderName(headerName), generated);\n setContextRequestId(ctx, generated);\n}\n\nfunction fullUrl(req: IncomingMessage): string {\n const requestUrl = resolveRequestUrl(req);\n if (!requestUrl) {\n return '';\n }\n if (requestUrl.startsWith('http://') || requestUrl.startsWith('https://')) {\n return requestUrl;\n }\n\n const host = req.headers['host'];\n if (!host || typeof host !== 'string') {\n return requestUrl;\n }\n const scheme = req.socket instanceof TLSSocket ? 'https' : 'http';\n return `${scheme}://${host}${requestUrl}`;\n}\n\nfunction resolveRequestUrl(req: IncomingMessage): string {\n const requestUrl = req.url ?? '';\n if (requestUrl.startsWith('http://') || requestUrl.startsWith('https://')) {\n return requestUrl;\n }\n\n const expressReq = req as IncomingMessage & { originalUrl?: unknown };\n if (typeof expressReq.originalUrl === 'string' && expressReq.originalUrl.length > 0) {\n return expressReq.originalUrl;\n }\n return requestUrl;\n}\n\nfunction headerValueFromNode(value: unknown): string | undefined {\n if (value == null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return normalizeRequestIdCandidate(value[0]);\n }\n return normalizeRequestIdCandidate(`${value}`);\n}\n\nfunction normalizeRequestIdCandidate(value: string | undefined): string | undefined {\n if (!value) {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed ? trimmed : undefined;\n}\n\nfunction canonicalHeaderName(headerName: string): string {\n return headerName\n .split('-')\n .filter(Boolean)\n .map((part) => (part ? part[0]!.toUpperCase() + part.slice(1) : part))\n .join('-');\n}\n\ntype ExpressRoutePath = string | string[] | RegExp;\n\ntype ExpressRouteParams = Record<string, string | string[]>;\n\nconst expressParamsHistory = new WeakMap<IncomingMessage, ExpressRouteParams[]>();\n\nfunction trackExpressParams(req: IncomingMessage): void {\n if (expressParamsHistory.has(req)) {\n return;\n }\n const anyReq = req as IncomingMessage & { app?: unknown };\n if (typeof anyReq.app !== 'function') {\n return;\n }\n\n const history: ExpressRouteParams[] = [];\n expressParamsHistory.set(req, history);\n\n const descriptor = Object.getOwnPropertyDescriptor(req, 'params');\n if (descriptor && !descriptor.configurable) {\n if (descriptor.value && typeof descriptor.value === 'object') {\n history.push({ ...(descriptor.value as ExpressRouteParams) });\n }\n return;\n }\n\n let current = (\n descriptor && 'value' in descriptor\n ? (descriptor.value as ExpressRouteParams | undefined)\n : undefined\n ) as ExpressRouteParams | undefined;\n if (current && typeof current === 'object') {\n history.push({ ...current });\n }\n\n Object.defineProperty(req, 'params', {\n configurable: true,\n enumerable: descriptor?.enumerable ?? true,\n get() {\n return current;\n },\n set(value) {\n current = value as ExpressRouteParams | undefined;\n if (value && typeof value === 'object') {\n history.push({ ...(value as ExpressRouteParams) });\n }\n },\n });\n}\n\nfunction resolveExpressRoute(req: IncomingMessage): string | undefined {\n const anyReq = req as IncomingMessage & {\n baseUrl?: string;\n params?: ExpressRouteParams;\n route?: { path?: ExpressRoutePath };\n };\n const routePath = extractExpressRoutePath(anyReq.route?.path);\n const baseUrl = anyReq.baseUrl ?? '';\n if (!routePath && !baseUrl) {\n return undefined;\n }\n\n const params = collectExpressParams(req, anyReq.params);\n const resolvedBaseUrl = replaceBaseUrlParams(baseUrl, params, routePath);\n return joinExpressRoute(resolvedBaseUrl, routePath);\n}\n\nfunction extractExpressRoutePath(path?: ExpressRoutePath): string | undefined {\n if (typeof path === 'string') {\n return path;\n }\n if (Array.isArray(path)) {\n for (const entry of path) {\n if (typeof entry === 'string') {\n return entry;\n }\n }\n }\n return undefined;\n}\n\nfunction collectExpressParams(\n req: IncomingMessage,\n fallback?: ExpressRouteParams,\n): ExpressRouteParams {\n const history = expressParamsHistory.get(req);\n if (!history || history.length === 0) {\n return fallback ?? {};\n }\n\n const merged: ExpressRouteParams = {};\n for (const snapshot of history) {\n for (const [key, value] of Object.entries(snapshot)) {\n if (!(key in merged)) {\n merged[key] = value;\n }\n }\n }\n if (fallback) {\n for (const [key, value] of Object.entries(fallback)) {\n if (!(key in merged)) {\n merged[key] = value;\n }\n }\n }\n return merged;\n}\n\nfunction replaceBaseUrlParams(\n baseUrl: string,\n params: ExpressRouteParams,\n routePath?: string,\n): string {\n if (!baseUrl) {\n return baseUrl;\n }\n const entries = Object.entries(params);\n if (entries.length === 0) {\n return baseUrl;\n }\n\n const excluded = new Set(routePath ? extractExpressParamNames(routePath) : []);\n const replacements = entries\n .filter(([name]) => !excluded.has(name))\n .map(([name, value]) => ({ name, value: Array.isArray(value) ? value[0] : value }))\n .filter((entry): entry is { name: string; value: string } => !!entry.value);\n\n if (replacements.length === 0) {\n return baseUrl;\n }\n\n const used = new Set<string>();\n const encodedCache = new Map<string, string>();\n const segments = baseUrl.split('/');\n const updated = segments.map((segment) => {\n if (!segment) {\n return segment;\n }\n for (const { name, value } of replacements) {\n if (used.has(name)) {\n continue;\n }\n const encodedValue = encodedCache.get(value) ?? encodeURIComponent(value);\n encodedCache.set(value, encodedValue);\n if (segment === value || segment === encodedValue) {\n used.add(name);\n return `:${name}`;\n }\n }\n return segment;\n });\n\n return updated.join('/');\n}\n\nfunction extractExpressParamNames(path: string): string[] {\n const names: string[] = [];\n const paramPattern = /:([A-Za-z0-9_]+)(?:\\([^)]*\\))?[?*+]?/g;\n for (const match of path.matchAll(paramPattern)) {\n const name = match[1];\n if (name) {\n names.push(name);\n }\n }\n return names;\n}\n\nfunction joinExpressRoute(baseUrl: string, routePath?: string): string {\n const base = baseUrl ? ensureLeadingSlash(baseUrl) : '';\n const route = routePath ? ensureLeadingSlash(routePath) : '';\n if (!base) {\n return route || '/';\n }\n if (!route || route === '/') {\n return base;\n }\n const trimmedBase = base.endsWith('/') ? base.slice(0, -1) : base;\n return `${trimmedBase}${route}`;\n}\n\nfunction ensureLeadingSlash(path: string): string {\n if (!path) {\n return '/';\n }\n return path.startsWith('/') ? path : `/${path}`;\n}\n"]}
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- var _chunkJKW6E4L3cjs = require('./chunk-JKW6E4L3.cjs');
9
+ var _chunkDNBARLGBcjs = require('./chunk-DNBARLGB.cjs');
10
10
 
11
11
  // src/core/route.ts
12
12
  function normalizeRoutePattern(route) {
@@ -301,7 +301,7 @@ function encodeBasicAuth(username, password) {
301
301
  if (!bytes) {
302
302
  return void 0;
303
303
  }
304
- const encoded = _chunkJKW6E4L3cjs.encodeBase64.call(void 0, bytes);
304
+ const encoded = _chunkDNBARLGBcjs.encodeBase64.call(void 0, bytes);
305
305
  if (!encoded) {
306
306
  return void 0;
307
307
  }
@@ -680,6 +680,7 @@ var AttributeKeyResponseBody = "http.response.body";
680
680
  var AttributeKeyResponseBodyEncoding = "http.response.body.encoding";
681
681
  var AttributeKeyResponseBodyTruncated = "http.response.body.truncated";
682
682
  var AttributeKeySpanDrop = "stainlessxray.internal.drop";
683
+ var AttributeKeyTenantID = "stainlessxray.tenant.id";
683
684
 
684
685
  // src/core/attributes.ts
685
686
  function setHeaderAttributes(span, headers, prefix) {
@@ -897,6 +898,9 @@ function setRouteAttribute(span, route) {
897
898
  function setUserIdAttribute(span, userId) {
898
899
  span.setAttribute(_incubating.ATTR_USER_ID, userId);
899
900
  }
901
+ function setTenantIdAttribute(span, tenantId) {
902
+ span.setAttribute(AttributeKeyTenantID, tenantId);
903
+ }
900
904
  function setRequestIdAttribute(span, requestId) {
901
905
  span.setAttribute(AttributeKeyRequestID, requestId);
902
906
  }
@@ -1022,7 +1026,7 @@ function createEmitter(config, exporter) {
1022
1026
  "exporter is required (use @stainlessdev/xray-node or @stainlessdev/xray-fetch)"
1023
1027
  );
1024
1028
  }
1025
- _chunkJKW6E4L3cjs.logWithLevel.call(void 0, resolved.logger, "info", resolved.logLevel, "xray: emitter configured", {
1029
+ _chunkDNBARLGBcjs.logWithLevel.call(void 0, resolved.logger, "info", resolved.logLevel, "xray: emitter configured", {
1026
1030
  serviceName: resolved.serviceName,
1027
1031
  environment: resolved.environment,
1028
1032
  version: resolved.version,
@@ -1053,8 +1057,26 @@ function startRequest(config, tracer, req) {
1053
1057
  requestId: _nullishCoalesce(explicitRequestId, () => ( "")),
1054
1058
  traceId: _optionalChain([span, 'optionalAccess', _17 => _17.spanContext, 'call', _18 => _18(), 'access', _19 => _19.traceId]),
1055
1059
  spanId: _optionalChain([span, 'optionalAccess', _20 => _20.spanContext, 'call', _21 => _21(), 'access', _22 => _22.spanId]),
1060
+ setActor: (tenantId, userId) => {
1061
+ const state2 = _chunkDNBARLGBcjs.getContextState.call(void 0, context);
1062
+ if (!state2) {
1063
+ return;
1064
+ }
1065
+ state2.tenantId = tenantId;
1066
+ state2.userId = userId || void 0;
1067
+ if (span) {
1068
+ try {
1069
+ setTenantIdAttribute(span, tenantId);
1070
+ if (userId) {
1071
+ setUserIdAttribute(span, userId);
1072
+ }
1073
+ } catch (e6) {
1074
+ }
1075
+ }
1076
+ },
1077
+ // Deprecated compatibility alias; prefer setActor(tenantId, userId).
1056
1078
  setUserId: (id) => {
1057
- const state2 = _chunkJKW6E4L3cjs.getContextState.call(void 0, context);
1079
+ const state2 = _chunkDNBARLGBcjs.getContextState.call(void 0, context);
1058
1080
  if (!state2) {
1059
1081
  return;
1060
1082
  }
@@ -1062,19 +1084,19 @@ function startRequest(config, tracer, req) {
1062
1084
  if (span && id) {
1063
1085
  try {
1064
1086
  setUserIdAttribute(span, id);
1065
- } catch (e6) {
1087
+ } catch (e7) {
1066
1088
  }
1067
1089
  }
1068
1090
  },
1069
1091
  setSessionId: (id) => {
1070
- const state2 = _chunkJKW6E4L3cjs.getContextState.call(void 0, context);
1092
+ const state2 = _chunkDNBARLGBcjs.getContextState.call(void 0, context);
1071
1093
  if (!state2) {
1072
1094
  return;
1073
1095
  }
1074
1096
  state2.sessionId = id;
1075
1097
  },
1076
1098
  setAttribute: (key, value) => {
1077
- const state2 = _chunkJKW6E4L3cjs.getContextState.call(void 0, context);
1099
+ const state2 = _chunkDNBARLGBcjs.getContextState.call(void 0, context);
1078
1100
  if (!state2) {
1079
1101
  return;
1080
1102
  }
@@ -1082,12 +1104,12 @@ function startRequest(config, tracer, req) {
1082
1104
  if (span) {
1083
1105
  try {
1084
1106
  span.setAttribute(key, value);
1085
- } catch (e7) {
1107
+ } catch (e8) {
1086
1108
  }
1087
1109
  }
1088
1110
  },
1089
1111
  addEvent: (name, attributes) => {
1090
- const state2 = _chunkJKW6E4L3cjs.getContextState.call(void 0, context);
1112
+ const state2 = _chunkDNBARLGBcjs.getContextState.call(void 0, context);
1091
1113
  if (!state2) {
1092
1114
  return;
1093
1115
  }
@@ -1095,12 +1117,12 @@ function startRequest(config, tracer, req) {
1095
1117
  if (span) {
1096
1118
  try {
1097
1119
  span.addEvent(name, attributes);
1098
- } catch (e8) {
1120
+ } catch (e9) {
1099
1121
  }
1100
1122
  }
1101
1123
  },
1102
1124
  setError: (err) => {
1103
- const state2 = _chunkJKW6E4L3cjs.getContextState.call(void 0, context);
1125
+ const state2 = _chunkDNBARLGBcjs.getContextState.call(void 0, context);
1104
1126
  if (!state2) {
1105
1127
  return;
1106
1128
  }
@@ -1108,7 +1130,7 @@ function startRequest(config, tracer, req) {
1108
1130
  if (span) {
1109
1131
  try {
1110
1132
  spanStatusFromError(span, err);
1111
- } catch (e9) {
1133
+ } catch (e10) {
1112
1134
  }
1113
1135
  }
1114
1136
  }
@@ -1121,11 +1143,11 @@ function startRequest(config, tracer, req) {
1121
1143
  attributes: {},
1122
1144
  events: []
1123
1145
  };
1124
- _chunkJKW6E4L3cjs.bindContext.call(void 0, context, state);
1146
+ _chunkDNBARLGBcjs.bindContext.call(void 0, context, state);
1125
1147
  return context;
1126
1148
  }
1127
1149
  function endRequest(config, ctx, res, err) {
1128
- const state = _chunkJKW6E4L3cjs.getContextState.call(void 0, ctx);
1150
+ const state = _chunkDNBARLGBcjs.getContextState.call(void 0, ctx);
1129
1151
  const endTimeMs = Number.isFinite(res.endTimeMs) ? res.endTimeMs : Date.now();
1130
1152
  res.endTimeMs = endTimeMs;
1131
1153
  if (!state) {
@@ -1153,7 +1175,7 @@ function endRequest(config, ctx, res, err) {
1153
1175
  const capture = resolveCapture(config.capture, state.captureOverride);
1154
1176
  const redaction = resolveRedaction(config.redaction, state.redactionOverride);
1155
1177
  const route = request.route;
1156
- const url = _chunkJKW6E4L3cjs.sanitizeLogString.call(void 0, request.url);
1178
+ const url = _chunkDNBARLGBcjs.sanitizeLogString.call(void 0, request.url);
1157
1179
  const log = {
1158
1180
  requestId: resolvedRequestId,
1159
1181
  traceId: _optionalChain([state, 'access', _23 => _23.span, 'optionalAccess', _24 => _24.spanContext, 'call', _25 => _25(), 'access', _26 => _26.traceId]),
@@ -1164,10 +1186,11 @@ function endRequest(config, ctx, res, err) {
1164
1186
  route,
1165
1187
  statusCode: res.statusCode,
1166
1188
  durationMs: Math.max(0, endTimeMs - request.startTimeMs),
1167
- requestHeaders: capture.requestHeaders ? _chunkJKW6E4L3cjs.sanitizeHeaderValues.call(void 0, request.headers) : void 0,
1168
- responseHeaders: capture.responseHeaders ? _chunkJKW6E4L3cjs.sanitizeHeaderValues.call(void 0, res.headers) : void 0,
1189
+ requestHeaders: capture.requestHeaders ? _chunkDNBARLGBcjs.sanitizeHeaderValues.call(void 0, request.headers) : void 0,
1190
+ responseHeaders: capture.responseHeaders ? _chunkDNBARLGBcjs.sanitizeHeaderValues.call(void 0, res.headers) : void 0,
1169
1191
  requestBody: capture.requestBody === "none" ? void 0 : request.body,
1170
1192
  responseBody: capture.responseBody === "none" ? void 0 : res.body,
1193
+ tenantId: _nullishCoalesce(state.tenantId, () => ( void 0)),
1171
1194
  userId: _nullishCoalesce(state.userId, () => ( void 0)),
1172
1195
  sessionId: _nullishCoalesce(state.sessionId, () => ( void 0)),
1173
1196
  error: buildError(_nullishCoalesce(err, () => ( state.error))),
@@ -1217,6 +1240,9 @@ function endRequest(config, ctx, res, err) {
1217
1240
  setResponseBodyAttributes(span, redacted.responseBody);
1218
1241
  setResponseBodySizeAttribute(span, redacted.responseBody.bytes);
1219
1242
  }
1243
+ if (state.tenantId != null) {
1244
+ setTenantIdAttribute(span, state.tenantId);
1245
+ }
1220
1246
  if (state.userId) {
1221
1247
  setUserIdAttribute(span, state.userId);
1222
1248
  }
@@ -1225,7 +1251,7 @@ function endRequest(config, ctx, res, err) {
1225
1251
  }
1226
1252
  span.end();
1227
1253
  } catch (spanErr) {
1228
- _chunkJKW6E4L3cjs.logWithLevel.call(void 0, config.logger, "warn", config.logLevel, "xray: span finalize failed", {
1254
+ _chunkDNBARLGBcjs.logWithLevel.call(void 0, config.logger, "warn", config.logLevel, "xray: span finalize failed", {
1229
1255
  error: spanErr instanceof Error ? spanErr.message : String(spanErr)
1230
1256
  });
1231
1257
  }
@@ -1241,7 +1267,7 @@ function resolveFinalRequestId(config, explicitRequestId, responseHeaders) {
1241
1267
  if (headerValue) {
1242
1268
  return headerValue;
1243
1269
  }
1244
- return _chunkJKW6E4L3cjs.generateRequestId.call(void 0, );
1270
+ return _chunkDNBARLGBcjs.generateRequestId.call(void 0, );
1245
1271
  }
1246
1272
  function resolveHeaderRequestId(headerName, headers) {
1247
1273
  if (!headers) {
@@ -1326,7 +1352,7 @@ function safePath(url) {
1326
1352
  try {
1327
1353
  const parsed = new URL(url);
1328
1354
  return parsed.pathname || "/";
1329
- } catch (e10) {
1355
+ } catch (e11) {
1330
1356
  const rawPath = url.split("?")[0] || "/";
1331
1357
  return rawPath || "/";
1332
1358
  }
@@ -1337,4 +1363,4 @@ function safePath(url) {
1337
1363
 
1338
1364
 
1339
1365
  exports.XrayConfigError = XrayConfigError; exports.normalizeConfig = normalizeConfig; exports.createEmitter = createEmitter;
1340
- //# sourceMappingURL=chunk-XO6YWDFL.cjs.map
1366
+ //# sourceMappingURL=chunk-Q4MTHPUL.cjs.map