@stainlessdev/xray-emitter 0.3.1-dev.3f4598d → 0.3.1-dev.4e1c929

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 (75) hide show
  1. package/dist/{chunk-FGXXKIF7.js → chunk-447Z3SDN.js} +4 -4
  2. package/dist/{chunk-GYXI3DWB.js → chunk-7EKBXVZE.js} +59 -12
  3. package/dist/chunk-7EKBXVZE.js.map +1 -0
  4. package/dist/{chunk-NTIUR3OC.js → chunk-AKPTTC2I.js} +2 -2
  5. package/dist/{chunk-7KT6EPVZ.js → chunk-BKJO3FLI.js} +1 -1
  6. package/dist/{chunk-7KT6EPVZ.js.map → chunk-BKJO3FLI.js.map} +1 -1
  7. package/dist/{chunk-DNBARLGB.cjs → chunk-EPQTFPT7.cjs} +1 -1
  8. package/dist/{chunk-DNBARLGB.cjs.map → chunk-EPQTFPT7.cjs.map} +1 -1
  9. package/dist/{chunk-SUVCVINA.cjs → chunk-FZH3IY6R.cjs} +47 -47
  10. package/dist/{chunk-SUVCVINA.cjs.map → chunk-FZH3IY6R.cjs.map} +1 -1
  11. package/dist/{chunk-UJWD5CFA.cjs → chunk-IEWCR3GT.cjs} +86 -39
  12. package/dist/chunk-IEWCR3GT.cjs.map +1 -0
  13. package/dist/{chunk-CPHFCOA5.cjs → chunk-M6G4PEGF.cjs} +9 -9
  14. package/dist/{chunk-CPHFCOA5.cjs.map → chunk-M6G4PEGF.cjs.map} +1 -1
  15. package/dist/{chunk-55YD27PV.cjs → chunk-PIY7CFHY.cjs} +28 -28
  16. package/dist/{chunk-55YD27PV.cjs.map → chunk-PIY7CFHY.cjs.map} +1 -1
  17. package/dist/{chunk-DV3MVQBB.js → chunk-W42SQZKN.js} +4 -4
  18. package/dist/effect.cjs +19 -19
  19. package/dist/effect.d.cts +3 -3
  20. package/dist/effect.d.ts +3 -3
  21. package/dist/effect.js +4 -4
  22. package/dist/{emitter-Bi_m_w5h.d.cts → emitter-DKki0zYl.d.cts} +1 -1
  23. package/dist/{emitter-Dy7bRGTq.d.ts → emitter-DT-EuB8s.d.ts} +1 -1
  24. package/dist/express.cjs +7 -7
  25. package/dist/express.d.cts +2 -2
  26. package/dist/express.d.ts +2 -2
  27. package/dist/express.js +4 -4
  28. package/dist/fastify.cjs +10 -10
  29. package/dist/fastify.d.cts +2 -2
  30. package/dist/fastify.d.ts +2 -2
  31. package/dist/fastify.js +4 -4
  32. package/dist/fetch.cjs +5 -5
  33. package/dist/fetch.d.cts +2 -2
  34. package/dist/fetch.d.ts +2 -2
  35. package/dist/fetch.js +4 -4
  36. package/dist/hono.cjs +9 -9
  37. package/dist/hono.d.cts +3 -3
  38. package/dist/hono.d.ts +3 -3
  39. package/dist/hono.js +4 -4
  40. package/dist/index.cjs +3 -3
  41. package/dist/index.d.cts +2 -2
  42. package/dist/index.d.ts +2 -2
  43. package/dist/index.js +2 -2
  44. package/dist/internal.cjs +3 -3
  45. package/dist/internal.d.cts +1 -1
  46. package/dist/internal.d.ts +1 -1
  47. package/dist/internal.js +2 -2
  48. package/dist/next.cjs +42 -8
  49. package/dist/next.cjs.map +1 -1
  50. package/dist/next.d.cts +3 -3
  51. package/dist/next.d.ts +3 -3
  52. package/dist/next.js +39 -5
  53. package/dist/next.js.map +1 -1
  54. package/dist/node.cjs +5 -5
  55. package/dist/node.d.cts +1 -1
  56. package/dist/node.d.ts +1 -1
  57. package/dist/node.js +4 -4
  58. package/dist/remix.cjs +7 -7
  59. package/dist/remix.d.cts +3 -3
  60. package/dist/remix.d.ts +3 -3
  61. package/dist/remix.js +4 -4
  62. package/dist/stub.cjs +121 -0
  63. package/dist/stub.cjs.map +1 -0
  64. package/dist/stub.d.cts +12 -0
  65. package/dist/stub.d.ts +12 -0
  66. package/dist/stub.js +121 -0
  67. package/dist/stub.js.map +1 -0
  68. package/dist/{types-BrKvhHbn.d.cts → types-C44Eg-i_.d.cts} +6 -2
  69. package/dist/{types-BrKvhHbn.d.ts → types-C44Eg-i_.d.ts} +6 -2
  70. package/package.json +10 -3
  71. package/dist/chunk-GYXI3DWB.js.map +0 -1
  72. package/dist/chunk-UJWD5CFA.cjs.map +0 -1
  73. /package/dist/{chunk-FGXXKIF7.js.map → chunk-447Z3SDN.js.map} +0 -0
  74. /package/dist/{chunk-NTIUR3OC.js.map → chunk-AKPTTC2I.js.map} +0 -0
  75. /package/dist/{chunk-DV3MVQBB.js.map → chunk-W42SQZKN.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-DNBARLGB.cjs","../src/core/logger.ts","../src/core/encoding.ts","../src/core/request_log.ts","../src/core/uuid/base48.ts","../src/core/uuid/base62.ts","../src/core/uuid/index.ts","../src/core/state.ts"],"names":["maxChunkBytes"],"mappings":"AAAA;ACEA,IAAM,cAAA,EAA0C;AAAA,EAC9C,KAAA,EAAO,EAAA;AAAA,EACP,IAAA,EAAM,EAAA;AAAA,EACN,IAAA,EAAM,EAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAA;AAEO,SAAS,YAAA,CACd,MAAA,EACA,KAAA,EACA,SAAA,EACA,OAAA,EACA,MAAA,EACM;AACN,EAAA,GAAA,CAAI,aAAA,CAAc,KAAK,EAAA,EAAI,aAAA,CAAc,SAAS,CAAA,EAAG;AACnD,IAAA,MAAA;AAAA,EACF;AAEA,EAAA,MAAM,GAAA,uFACJ,MAAA,CAAO,KAAK,CAAA,UAAK,MAAA,CAAO,MAAA,UAAQ,MAAA,CAAO,MAAA,UAAQ,MAAA,CAAO,OAAA,UAAS,MAAA,CAAO,OAAA,UAAS,OAAA,CAAQ,KAAA;AAEzF,EAAA,IAAI;AACF,IAAA,EAAA,CAAG,IAAA,CAAK,MAAA,EAAQ,OAAA,EAAS,MAAM,CAAA;AAAA,EACjC,EAAA,UAAQ;AAAA,EAER;AACF;ADXA;AACA;AElBA,IAAM,YAAA,EACJ,OAAO,YAAA,IAAgB,YAAA,EAAc,IAAI,WAAA,CAAY,OAAA,EAAS,EAAE,KAAA,EAAO,KAAK,CAAC,EAAA,EAAI,IAAA;AACnF,IAAM,mBAAA,EAAqB,OAAO,YAAA,IAAgB,YAAA,EAAc,IAAI,WAAA,CAAY,OAAO,EAAA,EAAI,IAAA;AAC3F,IAAM,YAAA,EACJ,UAAA,CAGA,MAAA;AAEK,SAAS,YAAA,CAAa,KAAA,EAA2B;AACtD,EAAA,GAAA,CAAI,WAAA,EAAa;AACf,IAAA,OAAO,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,CAAE,QAAA,CAAS,QAAQ,CAAA;AAAA,EAClD;AACA,EAAA,IAAI,OAAA,EAAS,EAAA;AACb,EAAA,IAAA,CAAA,IAAS,EAAA,EAAI,CAAA,EAAG,EAAA,EAAI,KAAA,CAAM,MAAA,EAAQ,EAAA,GAAK,CAAA,EAAG;AACxC,IAAA,MAAM,KAAA,EAAO,KAAA,CAAM,CAAC,CAAA;AACpB,IAAA,GAAA,CAAI,KAAA,IAAS,KAAA,CAAA,EAAW;AACtB,MAAA,QAAA;AAAA,IACF;AACA,IAAA,OAAA,GAAU,MAAA,CAAO,YAAA,CAAa,IAAI,CAAA;AAAA,EACpC;AACA,EAAA,GAAA,CAAI,OAAO,KAAA,IAAS,WAAA,EAAa;AAC/B,IAAA,OAAO,IAAA,CAAK,MAAM,CAAA;AAAA,EACpB;AACA,EAAA,OAAO,EAAA;AACT;AAEO,SAAS,WAAA,CAAY,KAAA,EAA4B;AACtD,EAAA,GAAA,CAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI;AACF,IAAA,WAAA,CAAY,MAAA,CAAO,KAAK,CAAA;AACxB,IAAA,OAAO,IAAA;AAAA,EACT,EAAA,WAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAEO,SAAS,UAAA,CAAW,KAAA,EAA2B;AACpD,EAAA,GAAA,CAAI,kBAAA,EAAoB;AACtB,IAAA,OAAO,kBAAA,CAAmB,MAAA,CAAO,KAAK,CAAA;AAAA,EACxC;AACA,EAAA,GAAA,CAAI,WAAA,EAAa;AACf,IAAA,OAAO,WAAA,CAAY,IAAA,CAAK,KAAK,CAAA,CAAE,QAAA,CAAS,MAAM,CAAA;AAAA,EAChD;AACA,EAAA,OAAO,EAAA;AACT;AFYA;AACA;AGxDA,IAAM,aAAA,EAAe,kBAAA;AAEd,SAAS,iBAAA,CAAkB,KAAA,EAAuB;AACvD,EAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,YAAA,EAAc,EAAE,CAAA;AACvC;AAEO,SAAS,oBAAA,CACd,OAAA,EAC+C;AAC/C,EAAA,GAAA,CAAI,CAAC,OAAA,EAAS;AACZ,IAAA,OAAO,KAAA,CAAA;AAAA,EACT;AAEA,EAAA,MAAM,UAAA,EAA+C,CAAC,CAAA;AACtD,EAAA,IAAA,CAAA,MAAW,CAAC,GAAA,EAAK,KAAK,EAAA,GAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AAClD,IAAA,MAAM,KAAA,EAAO,iBAAA,CAAkB,GAAG,CAAA;AAClC,IAAA,GAAA,CAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,SAAA,CAAU,IAAI,EAAA,EAAI,KAAA,CAAM,GAAA,CAAI,CAAC,KAAA,EAAA,GAAU,iBAAA,CAAkB,KAAK,CAAC,CAAA;AAAA,IACjE,EAAA,KAAO;AACL,MAAA,SAAA,CAAU,IAAI,EAAA,EAAI,iBAAA,CAAkB,KAAK,CAAA;AAAA,IAC3C;AAAA,EACF;AACA,EAAA,OAAO,SAAA;AACT;AAEO,SAAS,gBAAA,CACd,KAAA,EACA,UAAA,EACA,SAAA,EACA,IAAA,EAC0B;AAC1B,EAAA,GAAA,CAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,KAAA,CAAA;AAAA,EACT;AAEA,EAAA,GAAA,CAAI,KAAA,IAAS,QAAA,EAAU;AACrB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,UAAA;AAAA,MACP,QAAA,EAAU,QAAA;AAAA,MACV,SAAA;AAAA,MACA,KAAA,EAAO,YAAA,CAAa,KAAK;AAAA,IAC3B,CAAA;AAAA,EACF;AAEA,EAAA,GAAA,CAAI,WAAA,CAAY,KAAK,CAAA,EAAG;AACtB,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,UAAA;AAAA,MACP,QAAA,EAAU,MAAA;AAAA,MACV,SAAA;AAAA,MACA,KAAA,EAAO,UAAA,CAAW,KAAK;AAAA,IACzB,CAAA;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,QAAA;AAAA,IACV,SAAA;AAAA,IACA,KAAA,EAAO,YAAA,CAAa,KAAK;AAAA,EAC3B,CAAA;AACF;AH4CA;AACA;AIxGA,IAAM,kBAAA,EAAoB,kDAAA;AAC1B,IAAM,WAAA,EAAa,iBAAA,CAAkB,MAAA,CAAO,CAAC,CAAA;AAG7C,IAAM,cAAA,EAAgB,EAAA;AACtB,IAAM,qBAAA,kBAAuB,IAAI,GAAA,CAAoB,CAAA;AACrD,IAAM,qBAAA,kBAAuB,IAAI,GAAA,CAAoB,CAAA;AAErD,IAAA,CAAA,IAAS,KAAA,EAAO,CAAA,EAAG,KAAA,GAAQ,aAAA,EAAe,KAAA,GAAQ,CAAA,EAAG;AACnD,EAAA,MAAM,cAAA,EAAgB,IAAA,CAAK,IAAA,CAAM,KAAA,EAAO,EAAA,EAAK,IAAA,CAAK,IAAA,CAAK,EAAE,CAAC,CAAA;AAC1D,EAAA,oBAAA,CAAqB,GAAA,CAAI,IAAA,EAAM,aAAa,CAAA;AAC5C,EAAA,oBAAA,CAAqB,GAAA,CAAI,aAAA,EAAe,IAAI,CAAA;AAC9C;AAEA,IAAM,gBAAA,EAAkB,oBAAA,CAAqB,GAAA,CAAI,aAAa,CAAA;AAE9D,SAAS,WAAA,CAAY,KAAA,EAAmB,IAAA,EAAsB;AAC5D,EAAA,IAAI,MAAA,EAAQ,EAAA;AACZ,EAAA,IAAA,CAAA,MAAW,KAAA,GAAQ,KAAA,EAAO;AACxB,IAAA,MAAA,EAAS,MAAA,GAAS,GAAA,EAAM,MAAA,CAAO,IAAI,CAAA;AAAA,EACrC;AAEA,EAAA,IAAI,QAAA,EAAU,EAAA;AACd,EAAA,GAAA,CAAI,MAAA,IAAU,EAAA,EAAI;AAChB,IAAA,QAAA,EAAU,UAAA;AAAA,EACZ,EAAA,KAAO;AACL,IAAA,MAAA,CAAO,MAAA,EAAQ,EAAA,EAAI;AACjB,MAAA,MAAM,IAAA,EAAM,MAAA,EAAQ,GAAA;AACpB,MAAA,QAAA,EAAU,iBAAA,CAAkB,MAAA,CAAO,GAAG,CAAC,EAAA,EAAI,OAAA;AAC3C,MAAA,MAAA,GAAS,GAAA;AAAA,IACX;AAAA,EACF;AAEA,EAAA,MAAM,aAAA,EAAe,oBAAA,CAAqB,GAAA,CAAI,IAAI,CAAA;AAClD,EAAA,GAAA,CAAI,CAAC,YAAA,EAAc;AACjB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,IAAI,CAAA,CAAA;AACxD,EAAA;AACgD,EAAA;AAClD;AAyB4D;AACjC,EAAA;AAChB,IAAA;AACT,EAAA;AAEa,EAAA;AACkC,EAAA;AACX,IAAA;AACQ,IAAA;AACU,IAAA;AAC1C,IAAA;AACZ,EAAA;AACO,EAAA;AACT;AJ0E2D;AACA;AK9JjC;AACmB;AAGvB;AAC+B;AACA;AAEA;AACO,EAAA;AACd,EAAA;AACA,EAAA;AAC9C;AAEiDA;AAEa;AAChD,EAAA;AACc,EAAA;AACW,IAAA;AACrC,EAAA;AAEc,EAAA;AACI,EAAA;AACN,IAAA;AACL,EAAA;AACc,IAAA;AACG,MAAA;AACuB,MAAA;AAClC,MAAA;AACX,IAAA;AACF,EAAA;AAEkD,EAAA;AAC/B,EAAA;AACqC,IAAA;AACxD,EAAA;AACgD,EAAA;AAClD;AAyB4D;AACjC,EAAA;AAChB,IAAA;AACT,EAAA;AAEa,EAAA;AACkC,EAAA;AACX,IAAA;AACQA,IAAAA;AACU,IAAA;AAC1C,IAAA;AACZ,EAAA;AACO,EAAA;AACT;ALgI2D;AACA;AM1MnC;AAEW;AACF,EAAA;AACH,EAAA;AAGO,EAAA;AACS,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACD,EAAA;AACR,EAAA;AAGT,EAAA;AACA,EAAA;AACE,EAAA;AACA,EAAA;AAErB,EAAA;AACT;AAOiC;AACL,EAAA;AAC0B,EAAA;AACE,EAAA;AACxD;AAEuC;AACD,EAAA;AACtC;AAEuC;AACD,EAAA;AACtC;AAE4C;AACA,EAAA;AAC5C;AN6L2D;AACA;AO3ND;AACN;AAEqB;AAC9C,EAAA;AAC3B;AAE4E;AACjD,EAAA;AAC3B;AAEsE;AACzC,EAAA;AAC7B;AAE+E;AACtC,EAAA;AACzB,EAAA;AAChB;AAE8E;AACjC,EAAA;AAClC,IAAA;AACT,EAAA;AAC2B,EAAA;AACE,IAAA;AAC7B,EAAA;AAEmE,EAAA;AAC1B,EAAA;AACV,IAAA;AAC/B,EAAA;AACO,EAAA;AACT;AAEuE;AACzB,EAAA;AAC/B,IAAA;AACb,EAAA;AAC4C,EAAA;AAC1B,IAAA;AAC4B,IAAA;AAC/B,MAAA;AACb,IAAA;AACO,IAAA;AACT,EAAA;AACoD,EAAA;AAC9B,IAAA;AACgC,IAAA;AACnC,MAAA;AACjB,IAAA;AACO,IAAA;AACT,EAAA;AACO,EAAA;AACT;APsN2D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-DNBARLGB.cjs","sourcesContent":[null,"import type { Logger, LogLevel } from './types';\n\nconst logLevelOrder: Record<LogLevel, number> = {\n debug: 10,\n info: 20,\n warn: 30,\n error: 40,\n};\n\nexport function logWithLevel(\n logger: Logger,\n level: LogLevel,\n threshold: LogLevel,\n message: string,\n fields?: Record<string, unknown>,\n): void {\n if (logLevelOrder[level] < logLevelOrder[threshold]) {\n return;\n }\n\n const fn =\n logger[level] ?? logger.warn ?? logger.info ?? logger.debug ?? logger.error ?? console.log;\n\n try {\n fn.call(logger, message, fields);\n } catch {\n // Logging should never disrupt instrumentation.\n }\n}\n","const utf8Decoder =\n typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { fatal: true }) : null;\nconst utf8DecoderLenient = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8') : null;\nconst maybeBuffer = (\n globalThis as typeof globalThis & {\n Buffer?: { from(data: Uint8Array): { toString(encoding?: string): string } };\n }\n).Buffer;\n\nexport function encodeBase64(bytes: Uint8Array): string {\n if (maybeBuffer) {\n return maybeBuffer.from(bytes).toString('base64');\n }\n let binary = '';\n for (let i = 0; i < bytes.length; i += 1) {\n const byte = bytes[i];\n if (byte === undefined) {\n continue;\n }\n binary += String.fromCharCode(byte);\n }\n if (typeof btoa !== 'undefined') {\n return btoa(binary);\n }\n return '';\n}\n\nexport function isValidUtf8(bytes: Uint8Array): boolean {\n if (!utf8Decoder) {\n return false;\n }\n try {\n utf8Decoder.decode(bytes);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function decodeUtf8(bytes: Uint8Array): string {\n if (utf8DecoderLenient) {\n return utf8DecoderLenient.decode(bytes);\n }\n if (maybeBuffer) {\n return maybeBuffer.from(bytes).toString('utf8');\n }\n return '';\n}\n","import type { CapturedBody } from './types';\nimport { decodeUtf8, encodeBase64, isValidUtf8 } from './encoding';\n\n// eslint-disable-next-line no-control-regex\nconst controlChars = /[\\x00-\\x1F\\x7F]/g;\n\nexport function sanitizeLogString(value: string): string {\n if (!value) {\n return value;\n }\n return value.replace(controlChars, '');\n}\n\nexport function sanitizeHeaderValues(\n headers: Record<string, string | string[]> | undefined,\n): Record<string, string | string[]> | undefined {\n if (!headers) {\n return undefined;\n }\n\n const sanitized: Record<string, string | string[]> = {};\n for (const [key, value] of Object.entries(headers)) {\n const name = sanitizeLogString(key);\n if (Array.isArray(value)) {\n sanitized[name] = value.map((entry) => sanitizeLogString(entry));\n } else {\n sanitized[name] = sanitizeLogString(value);\n }\n }\n return sanitized;\n}\n\nexport function makeCapturedBody(\n bytes: Uint8Array | undefined,\n totalBytes: number,\n truncated: boolean,\n mode: 'text' | 'base64',\n): CapturedBody | undefined {\n if (!bytes) {\n return undefined;\n }\n\n if (mode === 'base64') {\n return {\n bytes: totalBytes,\n encoding: 'base64',\n truncated,\n value: encodeBase64(bytes),\n };\n }\n\n if (isValidUtf8(bytes)) {\n return {\n bytes: totalBytes,\n encoding: 'utf8',\n truncated,\n value: decodeUtf8(bytes),\n };\n }\n\n return {\n bytes: totalBytes,\n encoding: 'base64',\n truncated,\n value: encodeBase64(bytes),\n };\n}\n","/**\n * Base48 encoding with a vowel-free alphabet to reduce the risk of generating\n * profanity-like substrings in time-ordered identifiers while staying compact.\n * Digits that are commonly read as vowels (0, 1, 3, 4) are excluded to avoid\n * leetspeak-style false positives. The alphabet is ordered by ASCII to preserve\n * lexicographic ordering of fixed-length encodings.\n */\nconst base48AlphabetLex = '256789BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz';\nconst base48Zero = base48AlphabetLex.charAt(0);\nconst base48Regex = /^[256789BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz]*$/;\n\nconst maxChunkBytes = 32;\nconst chunkToEncodedLength = new Map<number, number>();\nconst encodedLengthToChunk = new Map<number, number>();\n\nfor (let size = 1; size <= maxChunkBytes; size += 1) {\n const encodedLength = Math.ceil((size * 8) / Math.log2(48));\n chunkToEncodedLength.set(size, encodedLength);\n encodedLengthToChunk.set(encodedLength, size);\n}\n\nconst maxEncodedChunk = chunkToEncodedLength.get(maxChunkBytes)!;\n\nfunction encodeChunk(bytes: Uint8Array, size: number): string {\n let value = 0n;\n for (const byte of bytes) {\n value = (value << 8n) | BigInt(byte);\n }\n\n let encoded = '';\n if (value === 0n) {\n encoded = base48Zero;\n } else {\n while (value > 0n) {\n const mod = value % 48n;\n encoded = base48AlphabetLex[Number(mod)] + encoded;\n value /= 48n;\n }\n }\n\n const targetLength = chunkToEncodedLength.get(size);\n if (!targetLength) {\n throw new Error(`base48: unsupported chunk size ${size}`);\n }\n return encoded.padStart(targetLength, base48Zero);\n}\n\nfunction decodeChunk(value: string, size: number): Uint8Array {\n let n = 0n;\n for (const char of value) {\n const index = base48AlphabetLex.indexOf(char);\n if (index === -1) {\n throw new Error('base48: invalid character');\n }\n n = n * 48n + BigInt(index);\n }\n\n const maxValue = 2n ** BigInt(size * 8) - 1n;\n if (n > maxValue) {\n throw new Error('base48: invalid length');\n }\n\n const buffer = new Uint8Array(size);\n for (let i = size - 1; i >= 0; i -= 1) {\n buffer[i] = Number(n & 0xffn);\n n >>= 8n;\n }\n return buffer;\n}\n\nexport function encodeBase48Lex(buffer: Uint8Array): string {\n if (buffer.length === 0) {\n return '';\n }\n\n let result = '';\n for (let offset = 0; offset < buffer.length; ) {\n const remaining = buffer.length - offset;\n const size = remaining >= maxChunkBytes ? maxChunkBytes : remaining;\n result += encodeChunk(buffer.slice(offset, offset + size), size);\n offset += size;\n }\n return result;\n}\n\nexport function decodeBase48Lex(value: string): Uint8Array {\n if (!value) {\n return new Uint8Array();\n }\n if (!base48Regex.test(value)) {\n throw new Error('base48: invalid string');\n }\n\n let totalBytes = 0;\n for (let offset = 0; offset < value.length; ) {\n const remaining = value.length - offset;\n const chunkLength = remaining >= maxEncodedChunk ? maxEncodedChunk : remaining;\n const size = encodedLengthToChunk.get(chunkLength);\n if (!size) {\n throw new Error('base48: invalid length');\n }\n totalBytes += size;\n offset += chunkLength;\n }\n\n const result = new Uint8Array(totalBytes);\n let cursor = 0;\n for (let offset = 0; offset < value.length; ) {\n const remaining = value.length - offset;\n const chunkLength = remaining >= maxEncodedChunk ? maxEncodedChunk : remaining;\n const size = encodedLengthToChunk.get(chunkLength);\n if (!size) {\n throw new Error('base48: invalid length');\n }\n const chunk = decodeChunk(value.slice(offset, offset + chunkLength), size);\n result.set(chunk, cursor);\n cursor += size;\n offset += chunkLength;\n }\n return result;\n}\n","const base62AlphabetLex = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\nconst base62Zero = base62AlphabetLex.charAt(0);\nconst base62Regex = /^[0-9A-Za-z]*$/;\n\nconst maxChunkBytes = 32;\nconst chunkToEncodedLength = new Map<number, number>();\nconst encodedLengthToChunk = new Map<number, number>();\n\nfor (let size = 1; size <= maxChunkBytes; size += 1) {\n const encodedLength = Math.ceil((size * 8) / Math.log2(62));\n chunkToEncodedLength.set(size, encodedLength);\n encodedLengthToChunk.set(encodedLength, size);\n}\n\nconst maxEncodedChunk = chunkToEncodedLength.get(maxChunkBytes)!;\n\nfunction encodeChunk(bytes: Uint8Array, size: number): string {\n let value = 0n;\n for (const byte of bytes) {\n value = (value << 8n) | BigInt(byte);\n }\n\n let encoded = '';\n if (value === 0n) {\n encoded = base62Zero;\n } else {\n while (value > 0n) {\n const mod = value % 62n;\n encoded = base62AlphabetLex[Number(mod)] + encoded;\n value /= 62n;\n }\n }\n\n const targetLength = chunkToEncodedLength.get(size);\n if (!targetLength) {\n throw new Error(`base62: unsupported chunk size ${size}`);\n }\n return encoded.padStart(targetLength, base62Zero);\n}\n\nfunction decodeChunk(value: string, size: number): Uint8Array {\n let n = 0n;\n for (const char of value) {\n const index = base62AlphabetLex.indexOf(char);\n if (index === -1) {\n throw new Error('base62: invalid character');\n }\n n = n * 62n + BigInt(index);\n }\n\n const maxValue = 2n ** BigInt(size * 8) - 1n;\n if (n > maxValue) {\n throw new Error('base62: invalid length');\n }\n\n const buffer = new Uint8Array(size);\n for (let i = size - 1; i >= 0; i -= 1) {\n buffer[i] = Number(n & 0xffn);\n n >>= 8n;\n }\n return buffer;\n}\n\nexport function encodeBase62Lex(buffer: Uint8Array): string {\n if (buffer.length === 0) {\n return '';\n }\n\n let result = '';\n for (let offset = 0; offset < buffer.length; ) {\n const remaining = buffer.length - offset;\n const size = remaining >= maxChunkBytes ? maxChunkBytes : remaining;\n result += encodeChunk(buffer.slice(offset, offset + size), size);\n offset += size;\n }\n return result;\n}\n\nexport function decodeBase62Lex(value: string): Uint8Array {\n if (!value) {\n return new Uint8Array();\n }\n if (!base62Regex.test(value)) {\n throw new Error('base62: invalid string');\n }\n\n let totalBytes = 0;\n for (let offset = 0; offset < value.length; ) {\n const remaining = value.length - offset;\n const chunkLength = remaining >= maxEncodedChunk ? maxEncodedChunk : remaining;\n const size = encodedLengthToChunk.get(chunkLength);\n if (!size) {\n throw new Error('base62: invalid length');\n }\n totalBytes += size;\n offset += chunkLength;\n }\n\n const result = new Uint8Array(totalBytes);\n let cursor = 0;\n for (let offset = 0; offset < value.length; ) {\n const remaining = value.length - offset;\n const chunkLength = remaining >= maxEncodedChunk ? maxEncodedChunk : remaining;\n const size = encodedLengthToChunk.get(chunkLength);\n if (!size) {\n throw new Error('base62: invalid length');\n }\n const chunk = decodeChunk(value.slice(offset, offset + chunkLength), size);\n result.set(chunk, cursor);\n cursor += size;\n offset += chunkLength;\n }\n return result;\n}\n","import { encodeBase48Lex } from './base48';\nimport { encodeBase62Lex } from './base62';\n\nconst requestIdPrefix = 'req_';\n\nfunction uuidv7Bytes(): Uint8Array {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n\n // Encode timestamp in first 48 bits\n const timestamp = BigInt(Date.now());\n bytes[0] = Number((timestamp >> 40n) & 0xffn);\n bytes[1] = Number((timestamp >> 32n) & 0xffn);\n bytes[2] = Number((timestamp >> 24n) & 0xffn);\n bytes[3] = Number((timestamp >> 16n) & 0xffn);\n bytes[4] = Number((timestamp >> 8n) & 0xffn);\n bytes[5] = Number(timestamp & 0xffn);\n\n // Set version (7) and variant (RFC 4122)\n const byte6 = bytes[6] ?? 0;\n const byte8 = bytes[8] ?? 0;\n bytes[6] = (byte6 & 0x0f) | 0x70;\n bytes[8] = (byte8 & 0x3f) | 0x80;\n\n return bytes;\n}\n\n/**\n * Generates a UUIDv7 string.\n * Uses crypto.getRandomValues which is available in all modern JS runtimes\n * (browsers, Node.js 15+, Deno, Bun, Cloudflare Workers, Vercel Edge, etc.)\n */\nexport function uuidv7(): string {\n const bytes = uuidv7Bytes();\n const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0'));\n return `${hex.slice(0, 4).join('')}-${hex.slice(4, 6).join('')}-${hex.slice(6, 8).join('')}-${hex.slice(8, 10).join('')}-${hex.slice(10).join('')}`;\n}\n\nexport function uuidv7base62(): string {\n return encodeBase62Lex(uuidv7Bytes());\n}\n\nexport function uuidv7base48(): string {\n return encodeBase48Lex(uuidv7Bytes());\n}\n\nexport function generateRequestId(): string {\n return `${requestIdPrefix}${uuidv7base48()}`;\n}\n","import type { Span } from '@opentelemetry/api';\nimport type { AttributeValue, NormalizedRequest, XrayContext } from './types';\nimport type { CaptureConfig, RedactionConfig, ResolvedXrayConfig } from './config';\n\nexport type RequestState = {\n request: NormalizedRequest;\n config: ResolvedXrayConfig;\n span?: Span;\n context: XrayContext;\n attributes: Record<string, AttributeValue>;\n events: Array<{ name: string; attributes?: Record<string, AttributeValue> }>;\n tenantId?: string;\n userId?: string;\n sessionId?: string;\n error?: unknown;\n captureOverride?: Partial<CaptureConfig>;\n redactionOverride?: Partial<RedactionConfig>;\n};\n\nconst contextMap = new WeakMap<XrayContext, RequestState>();\nconst objectMap = new WeakMap<object, RequestState>();\n\nexport function bindContext(ctx: XrayContext, state: RequestState): void {\n contextMap.set(ctx, state);\n}\n\nexport function getContextState(ctx: XrayContext): RequestState | undefined {\n return contextMap.get(ctx);\n}\n\nexport function bindObject(target: object, state: RequestState): void {\n objectMap.set(target, state);\n}\n\nexport function getContextFromObject(target: unknown): XrayContext | undefined {\n const state = getStateFromObject(target);\n return state?.context;\n}\n\nexport function getStateFromObject(target: unknown): RequestState | undefined {\n if (!target || typeof target !== 'object') {\n return undefined;\n }\n if (objectMap.has(target)) {\n return objectMap.get(target);\n }\n\n const fallback = findNestedTarget(target as Record<string, unknown>);\n if (fallback && objectMap.has(fallback)) {\n return objectMap.get(fallback);\n }\n return undefined;\n}\n\nfunction findNestedTarget(obj: Record<string, unknown>): object | null {\n if (obj.raw && typeof obj.raw === 'object') {\n return obj.raw as object;\n }\n if (obj.req && typeof obj.req === 'object') {\n const req = obj.req as Record<string, unknown>;\n if (req.raw && typeof req.raw === 'object') {\n return req.raw as object;\n }\n return req as object;\n }\n if (obj.request && typeof obj.request === 'object') {\n const request = obj.request as Record<string, unknown>;\n if (request.raw && typeof request.raw === 'object') {\n return request.raw as object;\n }\n return request as object;\n }\n return null;\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-EPQTFPT7.cjs","../src/core/logger.ts","../src/core/encoding.ts","../src/core/request_log.ts","../src/core/uuid/base48.ts","../src/core/uuid/base62.ts","../src/core/uuid/index.ts","../src/core/state.ts"],"names":["maxChunkBytes"],"mappings":"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","file":"/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-EPQTFPT7.cjs","sourcesContent":[null,"import type { Logger, LogLevel } from './types';\n\nconst logLevelOrder: Record<LogLevel, number> = {\n debug: 10,\n info: 20,\n warn: 30,\n error: 40,\n};\n\nexport function logWithLevel(\n logger: Logger,\n level: LogLevel,\n threshold: LogLevel,\n message: string,\n fields?: Record<string, unknown>,\n): void {\n if (logLevelOrder[level] < logLevelOrder[threshold]) {\n return;\n }\n\n const fn =\n logger[level] ?? logger.warn ?? logger.info ?? logger.debug ?? logger.error ?? console.log;\n\n try {\n fn.call(logger, message, fields);\n } catch {\n // Logging should never disrupt instrumentation.\n }\n}\n","const utf8Decoder =\n typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { fatal: true }) : null;\nconst utf8DecoderLenient = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8') : null;\nconst maybeBuffer = (\n globalThis as typeof globalThis & {\n Buffer?: { from(data: Uint8Array): { toString(encoding?: string): string } };\n }\n).Buffer;\n\nexport function encodeBase64(bytes: Uint8Array): string {\n if (maybeBuffer) {\n return maybeBuffer.from(bytes).toString('base64');\n }\n let binary = '';\n for (let i = 0; i < bytes.length; i += 1) {\n const byte = bytes[i];\n if (byte === undefined) {\n continue;\n }\n binary += String.fromCharCode(byte);\n }\n if (typeof btoa !== 'undefined') {\n return btoa(binary);\n }\n return '';\n}\n\nexport function isValidUtf8(bytes: Uint8Array): boolean {\n if (!utf8Decoder) {\n return false;\n }\n try {\n utf8Decoder.decode(bytes);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function decodeUtf8(bytes: Uint8Array): string {\n if (utf8DecoderLenient) {\n return utf8DecoderLenient.decode(bytes);\n }\n if (maybeBuffer) {\n return maybeBuffer.from(bytes).toString('utf8');\n }\n return '';\n}\n","import type { CapturedBody } from './types';\nimport { decodeUtf8, encodeBase64, isValidUtf8 } from './encoding';\n\n// eslint-disable-next-line no-control-regex\nconst controlChars = /[\\x00-\\x1F\\x7F]/g;\n\nexport function sanitizeLogString(value: string): string {\n if (!value) {\n return value;\n }\n return value.replace(controlChars, '');\n}\n\nexport function sanitizeHeaderValues(\n headers: Record<string, string | string[]> | undefined,\n): Record<string, string | string[]> | undefined {\n if (!headers) {\n return undefined;\n }\n\n const sanitized: Record<string, string | string[]> = {};\n for (const [key, value] of Object.entries(headers)) {\n const name = sanitizeLogString(key);\n if (Array.isArray(value)) {\n sanitized[name] = value.map((entry) => sanitizeLogString(entry));\n } else {\n sanitized[name] = sanitizeLogString(value);\n }\n }\n return sanitized;\n}\n\nexport function makeCapturedBody(\n bytes: Uint8Array | undefined,\n totalBytes: number,\n truncated: boolean,\n mode: 'text' | 'base64',\n): CapturedBody | undefined {\n if (!bytes) {\n return undefined;\n }\n\n if (mode === 'base64') {\n return {\n bytes: totalBytes,\n encoding: 'base64',\n truncated,\n value: encodeBase64(bytes),\n };\n }\n\n if (isValidUtf8(bytes)) {\n return {\n bytes: totalBytes,\n encoding: 'utf8',\n truncated,\n value: decodeUtf8(bytes),\n };\n }\n\n return {\n bytes: totalBytes,\n encoding: 'base64',\n truncated,\n value: encodeBase64(bytes),\n };\n}\n","/**\n * Base48 encoding with a vowel-free alphabet to reduce the risk of generating\n * profanity-like substrings in time-ordered identifiers while staying compact.\n * Digits that are commonly read as vowels (0, 1, 3, 4) are excluded to avoid\n * leetspeak-style false positives. The alphabet is ordered by ASCII to preserve\n * lexicographic ordering of fixed-length encodings.\n */\nconst base48AlphabetLex = '256789BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz';\nconst base48Zero = base48AlphabetLex.charAt(0);\nconst base48Regex = /^[256789BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz]*$/;\n\nconst maxChunkBytes = 32;\nconst chunkToEncodedLength = new Map<number, number>();\nconst encodedLengthToChunk = new Map<number, number>();\n\nfor (let size = 1; size <= maxChunkBytes; size += 1) {\n const encodedLength = Math.ceil((size * 8) / Math.log2(48));\n chunkToEncodedLength.set(size, encodedLength);\n encodedLengthToChunk.set(encodedLength, size);\n}\n\nconst maxEncodedChunk = chunkToEncodedLength.get(maxChunkBytes)!;\n\nfunction encodeChunk(bytes: Uint8Array, size: number): string {\n let value = 0n;\n for (const byte of bytes) {\n value = (value << 8n) | BigInt(byte);\n }\n\n let encoded = '';\n if (value === 0n) {\n encoded = base48Zero;\n } else {\n while (value > 0n) {\n const mod = value % 48n;\n encoded = base48AlphabetLex[Number(mod)] + encoded;\n value /= 48n;\n }\n }\n\n const targetLength = chunkToEncodedLength.get(size);\n if (!targetLength) {\n throw new Error(`base48: unsupported chunk size ${size}`);\n }\n return encoded.padStart(targetLength, base48Zero);\n}\n\nfunction decodeChunk(value: string, size: number): Uint8Array {\n let n = 0n;\n for (const char of value) {\n const index = base48AlphabetLex.indexOf(char);\n if (index === -1) {\n throw new Error('base48: invalid character');\n }\n n = n * 48n + BigInt(index);\n }\n\n const maxValue = 2n ** BigInt(size * 8) - 1n;\n if (n > maxValue) {\n throw new Error('base48: invalid length');\n }\n\n const buffer = new Uint8Array(size);\n for (let i = size - 1; i >= 0; i -= 1) {\n buffer[i] = Number(n & 0xffn);\n n >>= 8n;\n }\n return buffer;\n}\n\nexport function encodeBase48Lex(buffer: Uint8Array): string {\n if (buffer.length === 0) {\n return '';\n }\n\n let result = '';\n for (let offset = 0; offset < buffer.length; ) {\n const remaining = buffer.length - offset;\n const size = remaining >= maxChunkBytes ? maxChunkBytes : remaining;\n result += encodeChunk(buffer.slice(offset, offset + size), size);\n offset += size;\n }\n return result;\n}\n\nexport function decodeBase48Lex(value: string): Uint8Array {\n if (!value) {\n return new Uint8Array();\n }\n if (!base48Regex.test(value)) {\n throw new Error('base48: invalid string');\n }\n\n let totalBytes = 0;\n for (let offset = 0; offset < value.length; ) {\n const remaining = value.length - offset;\n const chunkLength = remaining >= maxEncodedChunk ? maxEncodedChunk : remaining;\n const size = encodedLengthToChunk.get(chunkLength);\n if (!size) {\n throw new Error('base48: invalid length');\n }\n totalBytes += size;\n offset += chunkLength;\n }\n\n const result = new Uint8Array(totalBytes);\n let cursor = 0;\n for (let offset = 0; offset < value.length; ) {\n const remaining = value.length - offset;\n const chunkLength = remaining >= maxEncodedChunk ? maxEncodedChunk : remaining;\n const size = encodedLengthToChunk.get(chunkLength);\n if (!size) {\n throw new Error('base48: invalid length');\n }\n const chunk = decodeChunk(value.slice(offset, offset + chunkLength), size);\n result.set(chunk, cursor);\n cursor += size;\n offset += chunkLength;\n }\n return result;\n}\n","const base62AlphabetLex = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\nconst base62Zero = base62AlphabetLex.charAt(0);\nconst base62Regex = /^[0-9A-Za-z]*$/;\n\nconst maxChunkBytes = 32;\nconst chunkToEncodedLength = new Map<number, number>();\nconst encodedLengthToChunk = new Map<number, number>();\n\nfor (let size = 1; size <= maxChunkBytes; size += 1) {\n const encodedLength = Math.ceil((size * 8) / Math.log2(62));\n chunkToEncodedLength.set(size, encodedLength);\n encodedLengthToChunk.set(encodedLength, size);\n}\n\nconst maxEncodedChunk = chunkToEncodedLength.get(maxChunkBytes)!;\n\nfunction encodeChunk(bytes: Uint8Array, size: number): string {\n let value = 0n;\n for (const byte of bytes) {\n value = (value << 8n) | BigInt(byte);\n }\n\n let encoded = '';\n if (value === 0n) {\n encoded = base62Zero;\n } else {\n while (value > 0n) {\n const mod = value % 62n;\n encoded = base62AlphabetLex[Number(mod)] + encoded;\n value /= 62n;\n }\n }\n\n const targetLength = chunkToEncodedLength.get(size);\n if (!targetLength) {\n throw new Error(`base62: unsupported chunk size ${size}`);\n }\n return encoded.padStart(targetLength, base62Zero);\n}\n\nfunction decodeChunk(value: string, size: number): Uint8Array {\n let n = 0n;\n for (const char of value) {\n const index = base62AlphabetLex.indexOf(char);\n if (index === -1) {\n throw new Error('base62: invalid character');\n }\n n = n * 62n + BigInt(index);\n }\n\n const maxValue = 2n ** BigInt(size * 8) - 1n;\n if (n > maxValue) {\n throw new Error('base62: invalid length');\n }\n\n const buffer = new Uint8Array(size);\n for (let i = size - 1; i >= 0; i -= 1) {\n buffer[i] = Number(n & 0xffn);\n n >>= 8n;\n }\n return buffer;\n}\n\nexport function encodeBase62Lex(buffer: Uint8Array): string {\n if (buffer.length === 0) {\n return '';\n }\n\n let result = '';\n for (let offset = 0; offset < buffer.length; ) {\n const remaining = buffer.length - offset;\n const size = remaining >= maxChunkBytes ? maxChunkBytes : remaining;\n result += encodeChunk(buffer.slice(offset, offset + size), size);\n offset += size;\n }\n return result;\n}\n\nexport function decodeBase62Lex(value: string): Uint8Array {\n if (!value) {\n return new Uint8Array();\n }\n if (!base62Regex.test(value)) {\n throw new Error('base62: invalid string');\n }\n\n let totalBytes = 0;\n for (let offset = 0; offset < value.length; ) {\n const remaining = value.length - offset;\n const chunkLength = remaining >= maxEncodedChunk ? maxEncodedChunk : remaining;\n const size = encodedLengthToChunk.get(chunkLength);\n if (!size) {\n throw new Error('base62: invalid length');\n }\n totalBytes += size;\n offset += chunkLength;\n }\n\n const result = new Uint8Array(totalBytes);\n let cursor = 0;\n for (let offset = 0; offset < value.length; ) {\n const remaining = value.length - offset;\n const chunkLength = remaining >= maxEncodedChunk ? maxEncodedChunk : remaining;\n const size = encodedLengthToChunk.get(chunkLength);\n if (!size) {\n throw new Error('base62: invalid length');\n }\n const chunk = decodeChunk(value.slice(offset, offset + chunkLength), size);\n result.set(chunk, cursor);\n cursor += size;\n offset += chunkLength;\n }\n return result;\n}\n","import { encodeBase48Lex } from './base48';\nimport { encodeBase62Lex } from './base62';\n\nconst requestIdPrefix = 'req_';\n\nfunction uuidv7Bytes(): Uint8Array {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n\n // Encode timestamp in first 48 bits\n const timestamp = BigInt(Date.now());\n bytes[0] = Number((timestamp >> 40n) & 0xffn);\n bytes[1] = Number((timestamp >> 32n) & 0xffn);\n bytes[2] = Number((timestamp >> 24n) & 0xffn);\n bytes[3] = Number((timestamp >> 16n) & 0xffn);\n bytes[4] = Number((timestamp >> 8n) & 0xffn);\n bytes[5] = Number(timestamp & 0xffn);\n\n // Set version (7) and variant (RFC 4122)\n const byte6 = bytes[6] ?? 0;\n const byte8 = bytes[8] ?? 0;\n bytes[6] = (byte6 & 0x0f) | 0x70;\n bytes[8] = (byte8 & 0x3f) | 0x80;\n\n return bytes;\n}\n\n/**\n * Generates a UUIDv7 string.\n * Uses crypto.getRandomValues which is available in all modern JS runtimes\n * (browsers, Node.js 15+, Deno, Bun, Cloudflare Workers, Vercel Edge, etc.)\n */\nexport function uuidv7(): string {\n const bytes = uuidv7Bytes();\n const hex = Array.from(bytes, (b) => b.toString(16).padStart(2, '0'));\n return `${hex.slice(0, 4).join('')}-${hex.slice(4, 6).join('')}-${hex.slice(6, 8).join('')}-${hex.slice(8, 10).join('')}-${hex.slice(10).join('')}`;\n}\n\nexport function uuidv7base62(): string {\n return encodeBase62Lex(uuidv7Bytes());\n}\n\nexport function uuidv7base48(): string {\n return encodeBase48Lex(uuidv7Bytes());\n}\n\nexport function generateRequestId(): string {\n return `${requestIdPrefix}${uuidv7base48()}`;\n}\n","import type { Span } from '@opentelemetry/api';\nimport type { AttributeValue, NormalizedRequest, XrayContext } from './types';\nimport type { CaptureConfig, RedactionConfig, ResolvedXrayConfig } from './config';\n\nexport type RequestState = {\n request: NormalizedRequest;\n config: ResolvedXrayConfig;\n span?: Span;\n context: XrayContext;\n attributes: Record<string, AttributeValue>;\n events: Array<{ name: string; attributes?: Record<string, AttributeValue> }>;\n tags: Record<string, AttributeValue>;\n tenantId?: string;\n userId?: string;\n sessionId?: string;\n error?: unknown;\n captureOverride?: Partial<CaptureConfig>;\n redactionOverride?: Partial<RedactionConfig>;\n};\n\nconst contextMap = new WeakMap<XrayContext, RequestState>();\nconst objectMap = new WeakMap<object, RequestState>();\n\nexport function bindContext(ctx: XrayContext, state: RequestState): void {\n contextMap.set(ctx, state);\n}\n\nexport function getContextState(ctx: XrayContext): RequestState | undefined {\n return contextMap.get(ctx);\n}\n\nexport function bindObject(target: object, state: RequestState): void {\n objectMap.set(target, state);\n}\n\nexport function getContextFromObject(target: unknown): XrayContext | undefined {\n const state = getStateFromObject(target);\n return state?.context;\n}\n\nexport function getStateFromObject(target: unknown): RequestState | undefined {\n if (!target || typeof target !== 'object') {\n return undefined;\n }\n if (objectMap.has(target)) {\n return objectMap.get(target);\n }\n\n const fallback = findNestedTarget(target as Record<string, unknown>);\n if (fallback && objectMap.has(fallback)) {\n return objectMap.get(fallback);\n }\n return undefined;\n}\n\nfunction findNestedTarget(obj: Record<string, unknown>): object | null {\n if (obj.raw && typeof obj.raw === 'object') {\n return obj.raw as object;\n }\n if (obj.req && typeof obj.req === 'object') {\n const req = obj.req as Record<string, unknown>;\n if (req.raw && typeof req.raw === 'object') {\n return req.raw as object;\n }\n return req as object;\n }\n if (obj.request && typeof obj.request === 'object') {\n const request = obj.request as Record<string, unknown>;\n if (request.raw && typeof request.raw === 'object') {\n return request.raw as object;\n }\n return request as object;\n }\n return null;\n}\n"]}
@@ -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 _chunkUJWD5CFAcjs = require('./chunk-UJWD5CFA.cjs');
4
+ var _chunkIEWCR3GTcjs = require('./chunk-IEWCR3GT.cjs');
5
5
 
6
6
 
7
7
 
@@ -12,23 +12,23 @@ var _chunkUJWD5CFAcjs = require('./chunk-UJWD5CFA.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunkCPHFCOA5cjs = require('./chunk-CPHFCOA5.cjs');
15
+ var _chunkM6G4PEGFcjs = require('./chunk-M6G4PEGF.cjs');
16
16
 
17
17
 
18
18
 
19
19
 
20
- var _chunkDNBARLGBcjs = require('./chunk-DNBARLGB.cjs');
20
+ var _chunkEPQTFPT7cjs = require('./chunk-EPQTFPT7.cjs');
21
21
 
22
22
  // src/fetch/emitter.ts
23
23
  var _exportertraceotlpproto = require('@opentelemetry/exporter-trace-otlp-proto');
24
24
  function createEmitter2(config) {
25
- const resolved = _chunkUJWD5CFAcjs.normalizeConfig.call(void 0, config);
25
+ const resolved = _chunkIEWCR3GTcjs.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 _chunkUJWD5CFAcjs.createEmitter.call(void 0, config, exporter);
31
+ return _chunkIEWCR3GTcjs.createEmitter.call(void 0, config, exporter);
32
32
  }
33
33
 
34
34
  // src/fetch/adapter.ts
@@ -38,29 +38,29 @@ function wrapFetch(handler, xray, options) {
38
38
  method: req.method,
39
39
  url: req.url,
40
40
  route: _optionalChain([options, 'optionalAccess', _3 => _3.route]),
41
- headers: _chunkCPHFCOA5cjs.headerValuesFromFetchHeaders.call(void 0, req.headers),
41
+ headers: _chunkM6G4PEGFcjs.headerValuesFromFetchHeaders.call(void 0, req.headers),
42
42
  requestId: _optionalChain([options, 'optionalAccess', _4 => _4.requestId]),
43
43
  startTimeMs: Date.now()
44
44
  };
45
45
  const ctx = xray.startRequest(normalizedRequest);
46
- _chunkCPHFCOA5cjs.bindContextToObject.call(void 0, req, ctx);
46
+ _chunkM6G4PEGFcjs.bindContextToObject.call(void 0, req, ctx);
47
47
  if (_optionalChain([options, 'optionalAccess', _5 => _5.requestId])) {
48
- _chunkCPHFCOA5cjs.setContextRequestId.call(void 0, ctx, options.requestId);
48
+ _chunkM6G4PEGFcjs.setContextRequestId.call(void 0, ctx, options.requestId);
49
49
  }
50
50
  if (_optionalChain([options, 'optionalAccess', _6 => _6.route])) {
51
- _chunkCPHFCOA5cjs.setContextRoute.call(void 0, ctx, options.route);
51
+ _chunkM6G4PEGFcjs.setContextRoute.call(void 0, ctx, options.route);
52
52
  }
53
53
  if (_optionalChain([options, 'optionalAccess', _7 => _7.capture])) {
54
- _chunkCPHFCOA5cjs.setCaptureOverride.call(void 0, ctx, options.capture);
54
+ _chunkM6G4PEGFcjs.setCaptureOverride.call(void 0, ctx, options.capture);
55
55
  }
56
56
  if (_optionalChain([options, 'optionalAccess', _8 => _8.redaction])) {
57
- _chunkCPHFCOA5cjs.setRedactionOverride.call(void 0, ctx, options.redaction);
57
+ _chunkM6G4PEGFcjs.setRedactionOverride.call(void 0, ctx, options.redaction);
58
58
  }
59
59
  if (_optionalChain([options, 'optionalAccess', _9 => _9.onRequest])) {
60
60
  try {
61
61
  options.onRequest(ctx);
62
62
  } catch (err) {
63
- _chunkDNBARLGBcjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onRequest failed", {
63
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onRequest failed", {
64
64
  error: err instanceof Error ? err.message : String(err)
65
65
  });
66
66
  }
@@ -69,7 +69,7 @@ function wrapFetch(handler, xray, options) {
69
69
  const requestCapture = capture.requestBody === "none" ? null : wrapRequestBody(req, capture.maxBodyBytes);
70
70
  const requestForHandler = _nullishCoalesce(_optionalChain([requestCapture, 'optionalAccess', _11 => _11.request]), () => ( req));
71
71
  if (requestForHandler !== req) {
72
- _chunkCPHFCOA5cjs.bindContextToObject.call(void 0, requestForHandler, ctx);
72
+ _chunkM6G4PEGFcjs.bindContextToObject.call(void 0, requestForHandler, ctx);
73
73
  }
74
74
  let response;
75
75
  try {
@@ -89,7 +89,7 @@ function wrapFetch(handler, xray, options) {
89
89
  try {
90
90
  options.onError(ctx, err);
91
91
  } catch (errInner) {
92
- _chunkDNBARLGBcjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onError failed", {
92
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onError failed", {
93
93
  error: errInner instanceof Error ? errInner.message : String(errInner)
94
94
  });
95
95
  }
@@ -98,7 +98,7 @@ function wrapFetch(handler, xray, options) {
98
98
  try {
99
99
  options.onResponse(ctx, log);
100
100
  } catch (errInner) {
101
- _chunkDNBARLGBcjs.logWithLevel.call(void 0,
101
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0,
102
102
  xray.config.logger,
103
103
  "warn",
104
104
  xray.config.logLevel,
@@ -122,7 +122,7 @@ function wrapFetch(handler, xray, options) {
122
122
  try {
123
123
  options.onResponse(ctx, log);
124
124
  } catch (err) {
125
- _chunkDNBARLGBcjs.logWithLevel.call(void 0,
125
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0,
126
126
  xray.config.logger,
127
127
  "warn",
128
128
  xray.config.logLevel,
@@ -138,7 +138,7 @@ function wrapFetch(handler, xray, options) {
138
138
  const responseHeaders = new Headers(response.headers);
139
139
  ensureResponseRequestIdHeaders(responseHeaders, ctx, xray);
140
140
  const statusCode = response.status;
141
- const isUpgrade = _chunkCPHFCOA5cjs.isWebsocketUpgradeFetch.call(void 0, statusCode, req.headers, responseHeaders);
141
+ const isUpgrade = _chunkM6G4PEGFcjs.isWebsocketUpgradeFetch.call(void 0, statusCode, req.headers, responseHeaders);
142
142
  if (!response.body || isUpgrade || capture.responseBody === "none") {
143
143
  const log = finalizeResponse(
144
144
  ctx,
@@ -154,7 +154,7 @@ function wrapFetch(handler, xray, options) {
154
154
  try {
155
155
  options.onResponse(ctx, log);
156
156
  } catch (err) {
157
- _chunkDNBARLGBcjs.logWithLevel.call(void 0,
157
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0,
158
158
  xray.config.logger,
159
159
  "warn",
160
160
  xray.config.logLevel,
@@ -171,7 +171,7 @@ function wrapFetch(handler, xray, options) {
171
171
  statusText: response.statusText
172
172
  });
173
173
  }
174
- const responseCapture = new (0, _chunkCPHFCOA5cjs.LimitedBuffer)(capture.maxBodyBytes);
174
+ const responseCapture = new (0, _chunkM6G4PEGFcjs.LimitedBuffer)(capture.maxBodyBytes);
175
175
  let finished = false;
176
176
  const finalize = () => {
177
177
  if (finished) {
@@ -192,7 +192,7 @@ function wrapFetch(handler, xray, options) {
192
192
  try {
193
193
  options.onResponse(ctx, log);
194
194
  } catch (err) {
195
- _chunkDNBARLGBcjs.logWithLevel.call(void 0,
195
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0,
196
196
  xray.config.logger,
197
197
  "warn",
198
198
  xray.config.logLevel,
@@ -220,29 +220,29 @@ function wrapFetchPreserve(handler, xray, options) {
220
220
  method: req.method,
221
221
  url: req.url,
222
222
  route: _optionalChain([options, 'optionalAccess', _19 => _19.route]),
223
- headers: _chunkCPHFCOA5cjs.headerValuesFromFetchHeaders.call(void 0, req.headers),
223
+ headers: _chunkM6G4PEGFcjs.headerValuesFromFetchHeaders.call(void 0, req.headers),
224
224
  requestId: _optionalChain([options, 'optionalAccess', _20 => _20.requestId]),
225
225
  startTimeMs: Date.now()
226
226
  };
227
227
  const ctx = xray.startRequest(normalizedRequest);
228
- _chunkCPHFCOA5cjs.bindContextToObject.call(void 0, req, ctx);
228
+ _chunkM6G4PEGFcjs.bindContextToObject.call(void 0, req, ctx);
229
229
  if (_optionalChain([options, 'optionalAccess', _21 => _21.requestId])) {
230
- _chunkCPHFCOA5cjs.setContextRequestId.call(void 0, ctx, options.requestId);
230
+ _chunkM6G4PEGFcjs.setContextRequestId.call(void 0, ctx, options.requestId);
231
231
  }
232
232
  if (_optionalChain([options, 'optionalAccess', _22 => _22.route])) {
233
- _chunkCPHFCOA5cjs.setContextRoute.call(void 0, ctx, options.route);
233
+ _chunkM6G4PEGFcjs.setContextRoute.call(void 0, ctx, options.route);
234
234
  }
235
235
  if (_optionalChain([options, 'optionalAccess', _23 => _23.capture])) {
236
- _chunkCPHFCOA5cjs.setCaptureOverride.call(void 0, ctx, options.capture);
236
+ _chunkM6G4PEGFcjs.setCaptureOverride.call(void 0, ctx, options.capture);
237
237
  }
238
238
  if (_optionalChain([options, 'optionalAccess', _24 => _24.redaction])) {
239
- _chunkCPHFCOA5cjs.setRedactionOverride.call(void 0, ctx, options.redaction);
239
+ _chunkM6G4PEGFcjs.setRedactionOverride.call(void 0, ctx, options.redaction);
240
240
  }
241
241
  if (_optionalChain([options, 'optionalAccess', _25 => _25.onRequest])) {
242
242
  try {
243
243
  options.onRequest(ctx);
244
244
  } catch (err) {
245
- _chunkDNBARLGBcjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onRequest failed", {
245
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onRequest failed", {
246
246
  error: err instanceof Error ? err.message : String(err)
247
247
  });
248
248
  }
@@ -267,7 +267,7 @@ function wrapFetchPreserve(handler, xray, options) {
267
267
  try {
268
268
  options.onError(ctx, err);
269
269
  } catch (errInner) {
270
- _chunkDNBARLGBcjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onError failed", {
270
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: onError failed", {
271
271
  error: errInner instanceof Error ? errInner.message : String(errInner)
272
272
  });
273
273
  }
@@ -276,7 +276,7 @@ function wrapFetchPreserve(handler, xray, options) {
276
276
  try {
277
277
  options.onResponse(ctx, log);
278
278
  } catch (errInner) {
279
- _chunkDNBARLGBcjs.logWithLevel.call(void 0,
279
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0,
280
280
  xray.config.logger,
281
281
  "warn",
282
282
  xray.config.logLevel,
@@ -300,7 +300,7 @@ function wrapFetchPreserve(handler, xray, options) {
300
300
  try {
301
301
  options.onResponse(ctx, log);
302
302
  } catch (err) {
303
- _chunkDNBARLGBcjs.logWithLevel.call(void 0,
303
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0,
304
304
  xray.config.logger,
305
305
  "warn",
306
306
  xray.config.logLevel,
@@ -328,7 +328,7 @@ function wrapFetchPreserve(handler, xray, options) {
328
328
  }
329
329
  }
330
330
  const statusCode = response.status;
331
- const isUpgrade = _chunkCPHFCOA5cjs.isWebsocketUpgradeFetch.call(void 0, statusCode, req.headers, responseHeaders);
331
+ const isUpgrade = _chunkM6G4PEGFcjs.isWebsocketUpgradeFetch.call(void 0, statusCode, req.headers, responseHeaders);
332
332
  const responseCapturePromise = !response.body || isUpgrade || capture.responseBody === "none" ? Promise.resolve(null) : captureResponseClone(response, capture.maxBodyBytes, xray);
333
333
  void (async () => {
334
334
  const [requestCapture, responseCapture] = await Promise.all([
@@ -349,7 +349,7 @@ function wrapFetchPreserve(handler, xray, options) {
349
349
  try {
350
350
  options.onResponse(ctx, log);
351
351
  } catch (err) {
352
- _chunkDNBARLGBcjs.logWithLevel.call(void 0,
352
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0,
353
353
  xray.config.logger,
354
354
  "warn",
355
355
  xray.config.logLevel,
@@ -361,7 +361,7 @@ function wrapFetchPreserve(handler, xray, options) {
361
361
  }
362
362
  }
363
363
  })().catch((err) => {
364
- _chunkDNBARLGBcjs.logWithLevel.call(void 0,
364
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0,
365
365
  xray.config.logger,
366
366
  "warn",
367
367
  xray.config.logLevel,
@@ -375,7 +375,7 @@ function wrapFetchPreserve(handler, xray, options) {
375
375
  };
376
376
  }
377
377
  function getXrayContext(req) {
378
- return _chunkCPHFCOA5cjs.getXrayContextFromObject.call(void 0, req);
378
+ return _chunkM6G4PEGFcjs.getXrayContextFromObject.call(void 0, req);
379
379
  }
380
380
  function wrapRequestBody(request, limit) {
381
381
  if (limit <= 0 || !request.body || request.bodyUsed) {
@@ -383,7 +383,7 @@ function wrapRequestBody(request, limit) {
383
383
  }
384
384
  const originalBody = request.body;
385
385
  const capture = {
386
- buffer: new (0, _chunkCPHFCOA5cjs.LimitedBuffer)(limit),
386
+ buffer: new (0, _chunkM6G4PEGFcjs.LimitedBuffer)(limit),
387
387
  read: false
388
388
  };
389
389
  let controller = null;
@@ -461,10 +461,10 @@ async function captureRequestClone(request, limit, xray) {
461
461
  try {
462
462
  clone = request.clone();
463
463
  } catch (e2) {
464
- _chunkDNBARLGBcjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: request clone failed");
464
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: request clone failed");
465
465
  return null;
466
466
  }
467
- const buffer = new (0, _chunkCPHFCOA5cjs.LimitedBuffer)(limit);
467
+ const buffer = new (0, _chunkM6G4PEGFcjs.LimitedBuffer)(limit);
468
468
  await readStreamToBuffer(clone.body, buffer);
469
469
  return buffer;
470
470
  }
@@ -476,10 +476,10 @@ async function captureResponseClone(response, limit, xray) {
476
476
  try {
477
477
  clone = response.clone();
478
478
  } catch (e3) {
479
- _chunkDNBARLGBcjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: response clone failed");
479
+ _chunkEPQTFPT7cjs.logWithLevel.call(void 0, xray.config.logger, "warn", xray.config.logLevel, "xray: response clone failed");
480
480
  return null;
481
481
  }
482
- const buffer = new (0, _chunkCPHFCOA5cjs.LimitedBuffer)(limit);
482
+ const buffer = new (0, _chunkM6G4PEGFcjs.LimitedBuffer)(limit);
483
483
  await readStreamToBuffer(clone.body, buffer);
484
484
  return buffer;
485
485
  }
@@ -549,10 +549,10 @@ function wrapReadableStream(stream, capture, onFinish, onError) {
549
549
  }
550
550
  function finalizeResponse(ctx, xray, normalizedRequest, capture, requestCapture, responseHeaders, statusCode, responseCapture) {
551
551
  if (requestCapture) {
552
- const buffer = requestCapture instanceof _chunkCPHFCOA5cjs.LimitedBuffer ? requestCapture : requestCapture.buffer;
553
- const read = requestCapture instanceof _chunkCPHFCOA5cjs.LimitedBuffer ? true : requestCapture.read;
552
+ const buffer = requestCapture instanceof _chunkM6G4PEGFcjs.LimitedBuffer ? requestCapture : requestCapture.buffer;
553
+ const read = requestCapture instanceof _chunkM6G4PEGFcjs.LimitedBuffer ? true : requestCapture.read;
554
554
  if (read) {
555
- normalizedRequest.body = _chunkDNBARLGBcjs.makeCapturedBody.call(void 0,
555
+ normalizedRequest.body = _chunkEPQTFPT7cjs.makeCapturedBody.call(void 0,
556
556
  buffer.bytes(),
557
557
  buffer.totalBytes(),
558
558
  buffer.truncated(),
@@ -560,7 +560,7 @@ function finalizeResponse(ctx, xray, normalizedRequest, capture, requestCapture,
560
560
  );
561
561
  }
562
562
  }
563
- const responseBody = responseCapture ? _chunkDNBARLGBcjs.makeCapturedBody.call(void 0,
563
+ const responseBody = responseCapture ? _chunkEPQTFPT7cjs.makeCapturedBody.call(void 0,
564
564
  responseCapture.bytes(),
565
565
  responseCapture.totalBytes(),
566
566
  responseCapture.truncated(),
@@ -568,7 +568,7 @@ function finalizeResponse(ctx, xray, normalizedRequest, capture, requestCapture,
568
568
  ) : void 0;
569
569
  return xray.endRequest(ctx, {
570
570
  statusCode,
571
- headers: _chunkCPHFCOA5cjs.headerValuesFromFetchHeaders.call(void 0, responseHeaders),
571
+ headers: _chunkM6G4PEGFcjs.headerValuesFromFetchHeaders.call(void 0, responseHeaders),
572
572
  body: responseBody,
573
573
  endTimeMs: Date.now()
574
574
  });
@@ -584,9 +584,9 @@ function ensureResponseRequestIdHeaders(headers, ctx, xray) {
584
584
  headers.set(canonicalHeaderName(headerName), explicit);
585
585
  return { value: explicit, set: true };
586
586
  }
587
- const generated = _chunkDNBARLGBcjs.generateRequestId.call(void 0, );
587
+ const generated = _chunkEPQTFPT7cjs.generateRequestId.call(void 0, );
588
588
  headers.set(canonicalHeaderName(headerName), generated);
589
- _chunkCPHFCOA5cjs.setContextRequestId.call(void 0, ctx, generated);
589
+ _chunkM6G4PEGFcjs.setContextRequestId.call(void 0, ctx, generated);
590
590
  return { value: generated, set: true };
591
591
  }
592
592
  function isNodeRuntime() {
@@ -610,4 +610,4 @@ function canonicalHeaderName(headerName) {
610
610
 
611
611
 
612
612
  exports.createEmitter = createEmitter2; exports.wrapFetch = wrapFetch; exports.wrapFetchPreserve = wrapFetchPreserve; exports.getXrayContext = getXrayContext;
613
- //# sourceMappingURL=chunk-SUVCVINA.cjs.map
613
+ //# sourceMappingURL=chunk-FZH3IY6R.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-SUVCVINA.cjs","../src/fetch/emitter.ts","../src/fetch/adapter.ts"],"names":["createEmitter"],"mappings":"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","file":"/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-SUVCVINA.cjs","sourcesContent":[null,"// Use the bare package import so that Node.js resolves to the Node build (http\n// transport) while bundlers (webpack, vite, wrangler/esbuild) follow the\n// package.json \"browser\" field and resolve to the browser build automatically.\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport {\n createEmitter as createCoreEmitter,\n normalizeConfig,\n type XrayRuntimeConfig,\n} from '../core/index';\n\n/**\n * Create a fetch/edge runtime emitter using OTLP HTTP transport by default.\n *\n * Pass `config.exporter.instance` to provide a custom `SpanExporter`.\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 {\n CaptureConfig,\n NormalizedRequest,\n RedactionConfig,\n RequestLog,\n XrayContext,\n XrayEmitter,\n} from '../core/index';\nimport {\n LimitedBuffer,\n bindContextToObject,\n getXrayContextFromObject,\n headerValuesFromFetchHeaders,\n isWebsocketUpgradeFetch,\n logWithLevel,\n makeCapturedBody,\n setCaptureOverride,\n setContextRequestId,\n setContextRoute,\n setRedactionOverride,\n generateRequestId,\n} from '../core/internal';\n\nexport interface WrapOptions {\n /**\n * Explicit route pattern for this handler (for example `/users/:id`).\n */\n route?: string;\n /**\n * Explicit request ID. Skips header lookup/generation when provided.\n */\n requestId?: string;\n /**\n * Per-handler capture overrides.\n */\n capture?: Partial<CaptureConfig>;\n /**\n * Per-handler redaction overrides.\n */\n redaction?: Partial<RedactionConfig>;\n /**\n * Hook called after request context is created.\n */\n onRequest?: (ctx: XrayContext) => void;\n /**\n * Hook called after the request has been finalized and logged.\n */\n onResponse?: (ctx: XrayContext, log: RequestLog) => void;\n /**\n * Hook called when request handling fails.\n */\n onError?: (ctx: XrayContext, err: unknown) => void;\n}\n\n/**\n * Wrap a fetch-style handler with X-ray instrumentation.\n *\n * This variant may replace the request/response objects to safely capture\n * bodies and inject a request ID response header when needed.\n */\nexport function wrapFetch(\n handler: (req: Request) => Response | Promise<Response>,\n xray: XrayEmitter,\n options?: WrapOptions,\n): (req: Request) => Promise<Response> {\n return async (req: Request) => {\n const normalizedRequest: NormalizedRequest = {\n method: req.method,\n url: req.url,\n route: options?.route,\n headers: headerValuesFromFetchHeaders(req.headers),\n requestId: options?.requestId,\n startTimeMs: Date.now(),\n };\n\n const ctx = xray.startRequest(normalizedRequest);\n bindContextToObject(req, 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 const requestCapture =\n capture.requestBody === 'none' ? null : wrapRequestBody(req, capture.maxBodyBytes);\n const requestForHandler = requestCapture?.request ?? req;\n if (requestForHandler !== req) {\n bindContextToObject(requestForHandler, ctx);\n }\n\n let response: Response;\n try {\n response = await handler(requestForHandler);\n } catch (err) {\n const log = xray.endRequest(\n ctx,\n {\n statusCode: undefined,\n headers: undefined,\n body: undefined,\n endTimeMs: Date.now(),\n },\n err,\n );\n if (options?.onError) {\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 if (options?.onResponse) {\n try {\n options.onResponse(ctx, log);\n } catch (errInner) {\n logWithLevel(\n xray.config.logger,\n 'warn',\n xray.config.logLevel,\n 'xray: onResponse failed',\n {\n error: errInner instanceof Error ? errInner.message : String(errInner),\n },\n );\n }\n }\n throw err;\n }\n\n if (!(response instanceof Response)) {\n const log = xray.endRequest(ctx, {\n statusCode: undefined,\n headers: undefined,\n body: undefined,\n endTimeMs: Date.now(),\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 return response;\n }\n\n const responseHeaders = new Headers(response.headers);\n ensureResponseRequestIdHeaders(responseHeaders, ctx, xray);\n const statusCode = response.status;\n const isUpgrade = isWebsocketUpgradeFetch(statusCode, req.headers, responseHeaders);\n\n if (!response.body || isUpgrade || capture.responseBody === 'none') {\n const log = finalizeResponse(\n ctx,\n xray,\n normalizedRequest,\n capture,\n requestCapture?.capture ?? null,\n responseHeaders,\n statusCode,\n null,\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 return new Response(response.body, {\n headers: responseHeaders,\n status: response.status,\n statusText: response.statusText,\n });\n }\n\n const responseCapture = new LimitedBuffer(capture.maxBodyBytes);\n let finished = false;\n const finalize = () => {\n if (finished) {\n return;\n }\n finished = true;\n const log = finalizeResponse(\n ctx,\n xray,\n normalizedRequest,\n capture,\n requestCapture?.capture ?? null,\n responseHeaders,\n statusCode,\n responseCapture,\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 const wrappedBody = wrapReadableStream(response.body, responseCapture, finalize, () => {\n finalize();\n });\n\n return new Response(wrappedBody, {\n headers: responseHeaders,\n status: response.status,\n statusText: response.statusText,\n });\n };\n}\n\n/**\n * Wrap a fetch-style handler while preserving original request/response objects\n * whenever possible.\n *\n * If a missing request ID header must be injected and response headers are\n * immutable, this wrapper may still replace the response object.\n */\nexport function wrapFetchPreserve(\n handler: (req: Request) => Response | Promise<Response>,\n xray: XrayEmitter,\n options?: WrapOptions,\n): (req: Request) => Promise<Response> {\n return async (req: Request) => {\n const normalizedRequest: NormalizedRequest = {\n method: req.method,\n url: req.url,\n route: options?.route,\n headers: headerValuesFromFetchHeaders(req.headers),\n requestId: options?.requestId,\n startTimeMs: Date.now(),\n };\n\n const ctx = xray.startRequest(normalizedRequest);\n bindContextToObject(req, 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 const requestCapturePromise =\n capture.requestBody === 'none'\n ? Promise.resolve(null)\n : captureRequestClone(req, capture.maxBodyBytes, xray);\n\n let response: Response;\n try {\n response = await handler(req);\n } catch (err) {\n const log = xray.endRequest(\n ctx,\n {\n statusCode: undefined,\n headers: undefined,\n body: undefined,\n endTimeMs: Date.now(),\n },\n err,\n );\n if (options?.onError) {\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 if (options?.onResponse) {\n try {\n options.onResponse(ctx, log);\n } catch (errInner) {\n logWithLevel(\n xray.config.logger,\n 'warn',\n xray.config.logLevel,\n 'xray: onResponse failed',\n {\n error: errInner instanceof Error ? errInner.message : String(errInner),\n },\n );\n }\n }\n throw err;\n }\n\n if (!(response instanceof Response)) {\n const log = xray.endRequest(ctx, {\n statusCode: undefined,\n headers: undefined,\n body: undefined,\n endTimeMs: Date.now(),\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 return response;\n }\n\n const responseHeaders = new Headers(response.headers);\n const ensured = ensureResponseRequestIdHeaders(responseHeaders, ctx, xray);\n if (ensured.set) {\n const headerName = canonicalHeaderName(xray.config.requestId.header);\n try {\n response.headers.set(headerName, ensured.value ?? '');\n } catch {\n response = new Response(response.body, {\n headers: responseHeaders,\n status: response.status,\n statusText: response.statusText,\n });\n }\n }\n const statusCode = response.status;\n const isUpgrade = isWebsocketUpgradeFetch(statusCode, req.headers, responseHeaders);\n const responseCapturePromise =\n !response.body || isUpgrade || capture.responseBody === 'none'\n ? Promise.resolve(null)\n : captureResponseClone(response, capture.maxBodyBytes, xray);\n\n void (async () => {\n const [requestCapture, responseCapture] = await Promise.all([\n requestCapturePromise,\n responseCapturePromise,\n ]);\n const log = finalizeResponse(\n ctx,\n xray,\n normalizedRequest,\n capture,\n requestCapture,\n responseHeaders,\n statusCode,\n responseCapture,\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 })().catch((err) => {\n logWithLevel(\n xray.config.logger,\n 'warn',\n xray.config.logLevel,\n 'xray: response capture failed',\n {\n error: err instanceof Error ? err.message : String(err),\n },\n );\n });\n\n return response;\n };\n}\n\n/**\n * Retrieve the `XrayContext` bound to a fetch `Request`.\n */\nexport function getXrayContext(req: Request): XrayContext | undefined {\n return getXrayContextFromObject(req);\n}\n\ntype RequestCapture = {\n buffer: LimitedBuffer;\n read: boolean;\n};\n\nfunction wrapRequestBody(\n request: Request,\n limit: number,\n): { capture: RequestCapture | null; request: Request } {\n if (limit <= 0 || !request.body || request.bodyUsed) {\n return { capture: null, request };\n }\n\n const originalBody = request.body;\n const capture: RequestCapture = {\n buffer: new LimitedBuffer(limit),\n read: false,\n };\n\n let controller: ReadableStreamDefaultController<Uint8Array> | null = null;\n let started = false;\n let reader: ReadableStreamDefaultReader<Uint8Array> | null = null;\n\n const wrappedStream = new ReadableStream<Uint8Array>({\n start(c) {\n controller = c;\n },\n async cancel(reason) {\n if (!started) {\n return;\n }\n try {\n await reader?.cancel(reason);\n } finally {\n // Ignore cancellation.\n }\n },\n });\n\n const startPump = () => {\n if (started) {\n return;\n }\n started = true;\n reader = originalBody.getReader();\n void (async () => {\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n controller?.close();\n return;\n }\n if (value) {\n capture.read = true;\n capture.buffer.write(value);\n controller?.enqueue(value);\n }\n }\n } catch (err) {\n controller?.error(err);\n }\n })();\n };\n\n const originalGetReader = wrappedStream.getReader.bind(wrappedStream);\n (wrappedStream as unknown as { getReader: typeof wrappedStream.getReader }).getReader = (\n ...args: unknown[]\n ) => {\n startPump();\n // @ts-expect-error - preserve built-in `getReader` overloads\n return originalGetReader(...args);\n };\n\n const init: RequestInit & { duplex?: 'half' } = {\n body: wrappedStream,\n cache: request.cache,\n credentials: request.credentials,\n headers: request.headers,\n integrity: request.integrity,\n keepalive: request.keepalive,\n method: request.method,\n mode: request.mode,\n redirect: request.redirect,\n referrer: request.referrer,\n referrerPolicy: request.referrerPolicy,\n signal: request.signal,\n };\n if (isNodeRuntime()) {\n init.duplex = 'half';\n }\n\n const wrappedRequest = new Request(request.url, init);\n return { capture, request: wrappedRequest };\n}\n\nasync function captureRequestClone(\n request: Request,\n limit: number,\n xray: XrayEmitter,\n): Promise<LimitedBuffer | null> {\n if (limit <= 0 || !request.body || request.bodyUsed) {\n return null;\n }\n let clone: Request;\n try {\n clone = request.clone();\n } catch {\n logWithLevel(xray.config.logger, 'warn', xray.config.logLevel, 'xray: request clone failed');\n return null;\n }\n\n const buffer = new LimitedBuffer(limit);\n await readStreamToBuffer(clone.body, buffer);\n return buffer;\n}\n\nasync function captureResponseClone(\n response: Response,\n limit: number,\n xray: XrayEmitter,\n): Promise<LimitedBuffer | null> {\n if (limit <= 0 || !response.body || response.bodyUsed) {\n return null;\n }\n let clone: Response;\n try {\n clone = response.clone();\n } catch {\n logWithLevel(xray.config.logger, 'warn', xray.config.logLevel, 'xray: response clone failed');\n return null;\n }\n\n const buffer = new LimitedBuffer(limit);\n await readStreamToBuffer(clone.body, buffer);\n return buffer;\n}\n\nasync function readStreamToBuffer(\n stream: ReadableStream<Uint8Array> | null,\n buffer: LimitedBuffer,\n): Promise<void> {\n if (!stream) {\n return;\n }\n\n const reader = stream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n return;\n }\n if (value) {\n buffer.write(value);\n }\n }\n } finally {\n try {\n reader.releaseLock();\n } catch {\n // Ignore release failures; reader may already be closed.\n }\n }\n}\n\nfunction wrapReadableStream(\n stream: ReadableStream<Uint8Array>,\n capture: LimitedBuffer,\n onFinish: () => void,\n onError?: (err: unknown) => void,\n): ReadableStream<Uint8Array> {\n const reader = stream.getReader();\n\n return new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n onFinish();\n try {\n reader.releaseLock();\n } catch {\n // Ignore release failures; reader may already be closed.\n }\n return;\n }\n if (value) {\n capture.write(value);\n controller.enqueue(value);\n }\n } catch (err) {\n controller.error(err);\n onError?.(err);\n onFinish();\n try {\n reader.releaseLock();\n } catch {\n // Ignore release failures; reader may already be closed.\n }\n }\n },\n async cancel(reason) {\n try {\n await reader.cancel(reason);\n } finally {\n onFinish();\n try {\n reader.releaseLock();\n } catch {\n // Ignore release failures; reader may already be closed.\n }\n }\n },\n });\n}\n\nfunction finalizeResponse(\n ctx: XrayContext,\n xray: XrayEmitter,\n normalizedRequest: NormalizedRequest,\n capture: CaptureConfig,\n requestCapture: RequestCapture | LimitedBuffer | null,\n responseHeaders: Headers,\n statusCode: number,\n responseCapture: LimitedBuffer | null,\n): RequestLog {\n if (requestCapture) {\n const buffer = requestCapture instanceof LimitedBuffer ? requestCapture : requestCapture.buffer;\n const read = requestCapture instanceof LimitedBuffer ? true : requestCapture.read;\n if (read) {\n normalizedRequest.body = makeCapturedBody(\n buffer.bytes(),\n buffer.totalBytes(),\n buffer.truncated(),\n capture.requestBody === 'text' ? 'text' : 'base64',\n );\n }\n }\n\n const responseBody = responseCapture\n ? makeCapturedBody(\n responseCapture.bytes(),\n responseCapture.totalBytes(),\n responseCapture.truncated(),\n capture.responseBody === 'text' ? 'text' : 'base64',\n )\n : undefined;\n\n return xray.endRequest(ctx, {\n statusCode,\n headers: headerValuesFromFetchHeaders(responseHeaders),\n body: responseBody,\n endTimeMs: Date.now(),\n });\n}\n\nfunction ensureResponseRequestIdHeaders(\n headers: Headers,\n ctx: XrayContext,\n xray: XrayEmitter,\n): { value?: string; set: boolean } {\n const headerName = xray.config.requestId.header;\n const existing = normalizeRequestIdCandidate(headers.get(headerName) ?? undefined);\n if (existing) {\n return { value: existing, set: false };\n }\n\n const explicit = normalizeRequestIdCandidate(ctx.requestId);\n if (explicit) {\n headers.set(canonicalHeaderName(headerName), explicit);\n return { value: explicit, set: true };\n }\n\n const generated = generateRequestId();\n headers.set(canonicalHeaderName(headerName), generated);\n setContextRequestId(ctx, generated);\n return { value: generated, set: true };\n}\n\nfunction isNodeRuntime(): boolean {\n const maybeProcess = (\n globalThis as typeof globalThis & {\n process?: { versions?: { node?: string } };\n }\n ).process;\n return !!maybeProcess?.versions?.node;\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"]}
1
+ {"version":3,"sources":["/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-FZH3IY6R.cjs","../src/fetch/emitter.ts","../src/fetch/adapter.ts"],"names":["createEmitter"],"mappings":"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","file":"/home/runner/work/xray-emitter-js/xray-emitter-js/dist/chunk-FZH3IY6R.cjs","sourcesContent":[null,"// Use the bare package import so that Node.js resolves to the Node build (http\n// transport) while bundlers (webpack, vite, wrangler/esbuild) follow the\n// package.json \"browser\" field and resolve to the browser build automatically.\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport {\n createEmitter as createCoreEmitter,\n normalizeConfig,\n type XrayRuntimeConfig,\n} from '../core/index';\n\n/**\n * Create a fetch/edge runtime emitter using OTLP HTTP transport by default.\n *\n * Pass `config.exporter.instance` to provide a custom `SpanExporter`.\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 {\n CaptureConfig,\n NormalizedRequest,\n RedactionConfig,\n RequestLog,\n XrayContext,\n XrayEmitter,\n} from '../core/index';\nimport {\n LimitedBuffer,\n bindContextToObject,\n getXrayContextFromObject,\n headerValuesFromFetchHeaders,\n isWebsocketUpgradeFetch,\n logWithLevel,\n makeCapturedBody,\n setCaptureOverride,\n setContextRequestId,\n setContextRoute,\n setRedactionOverride,\n generateRequestId,\n} from '../core/internal';\n\nexport interface WrapOptions {\n /**\n * Explicit route pattern for this handler (for example `/users/:id`).\n */\n route?: string;\n /**\n * Explicit request ID. Skips header lookup/generation when provided.\n */\n requestId?: string;\n /**\n * Per-handler capture overrides.\n */\n capture?: Partial<CaptureConfig>;\n /**\n * Per-handler redaction overrides.\n */\n redaction?: Partial<RedactionConfig>;\n /**\n * Hook called after request context is created.\n */\n onRequest?: (ctx: XrayContext) => void;\n /**\n * Hook called after the request has been finalized and logged.\n */\n onResponse?: (ctx: XrayContext, log: RequestLog) => void;\n /**\n * Hook called when request handling fails.\n */\n onError?: (ctx: XrayContext, err: unknown) => void;\n}\n\n/**\n * Wrap a fetch-style handler with X-ray instrumentation.\n *\n * This variant may replace the request/response objects to safely capture\n * bodies and inject a request ID response header when needed.\n */\nexport function wrapFetch(\n handler: (req: Request) => Response | Promise<Response>,\n xray: XrayEmitter,\n options?: WrapOptions,\n): (req: Request) => Promise<Response> {\n return async (req: Request) => {\n const normalizedRequest: NormalizedRequest = {\n method: req.method,\n url: req.url,\n route: options?.route,\n headers: headerValuesFromFetchHeaders(req.headers),\n requestId: options?.requestId,\n startTimeMs: Date.now(),\n };\n\n const ctx = xray.startRequest(normalizedRequest);\n bindContextToObject(req, 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 const requestCapture =\n capture.requestBody === 'none' ? null : wrapRequestBody(req, capture.maxBodyBytes);\n const requestForHandler = requestCapture?.request ?? req;\n if (requestForHandler !== req) {\n bindContextToObject(requestForHandler, ctx);\n }\n\n let response: Response;\n try {\n response = await handler(requestForHandler);\n } catch (err) {\n const log = xray.endRequest(\n ctx,\n {\n statusCode: undefined,\n headers: undefined,\n body: undefined,\n endTimeMs: Date.now(),\n },\n err,\n );\n if (options?.onError) {\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 if (options?.onResponse) {\n try {\n options.onResponse(ctx, log);\n } catch (errInner) {\n logWithLevel(\n xray.config.logger,\n 'warn',\n xray.config.logLevel,\n 'xray: onResponse failed',\n {\n error: errInner instanceof Error ? errInner.message : String(errInner),\n },\n );\n }\n }\n throw err;\n }\n\n if (!(response instanceof Response)) {\n const log = xray.endRequest(ctx, {\n statusCode: undefined,\n headers: undefined,\n body: undefined,\n endTimeMs: Date.now(),\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 return response;\n }\n\n const responseHeaders = new Headers(response.headers);\n ensureResponseRequestIdHeaders(responseHeaders, ctx, xray);\n const statusCode = response.status;\n const isUpgrade = isWebsocketUpgradeFetch(statusCode, req.headers, responseHeaders);\n\n if (!response.body || isUpgrade || capture.responseBody === 'none') {\n const log = finalizeResponse(\n ctx,\n xray,\n normalizedRequest,\n capture,\n requestCapture?.capture ?? null,\n responseHeaders,\n statusCode,\n null,\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 return new Response(response.body, {\n headers: responseHeaders,\n status: response.status,\n statusText: response.statusText,\n });\n }\n\n const responseCapture = new LimitedBuffer(capture.maxBodyBytes);\n let finished = false;\n const finalize = () => {\n if (finished) {\n return;\n }\n finished = true;\n const log = finalizeResponse(\n ctx,\n xray,\n normalizedRequest,\n capture,\n requestCapture?.capture ?? null,\n responseHeaders,\n statusCode,\n responseCapture,\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 const wrappedBody = wrapReadableStream(response.body, responseCapture, finalize, () => {\n finalize();\n });\n\n return new Response(wrappedBody, {\n headers: responseHeaders,\n status: response.status,\n statusText: response.statusText,\n });\n };\n}\n\n/**\n * Wrap a fetch-style handler while preserving original request/response objects\n * whenever possible.\n *\n * If a missing request ID header must be injected and response headers are\n * immutable, this wrapper may still replace the response object.\n */\nexport function wrapFetchPreserve(\n handler: (req: Request) => Response | Promise<Response>,\n xray: XrayEmitter,\n options?: WrapOptions,\n): (req: Request) => Promise<Response> {\n return async (req: Request) => {\n const normalizedRequest: NormalizedRequest = {\n method: req.method,\n url: req.url,\n route: options?.route,\n headers: headerValuesFromFetchHeaders(req.headers),\n requestId: options?.requestId,\n startTimeMs: Date.now(),\n };\n\n const ctx = xray.startRequest(normalizedRequest);\n bindContextToObject(req, 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 const requestCapturePromise =\n capture.requestBody === 'none'\n ? Promise.resolve(null)\n : captureRequestClone(req, capture.maxBodyBytes, xray);\n\n let response: Response;\n try {\n response = await handler(req);\n } catch (err) {\n const log = xray.endRequest(\n ctx,\n {\n statusCode: undefined,\n headers: undefined,\n body: undefined,\n endTimeMs: Date.now(),\n },\n err,\n );\n if (options?.onError) {\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 if (options?.onResponse) {\n try {\n options.onResponse(ctx, log);\n } catch (errInner) {\n logWithLevel(\n xray.config.logger,\n 'warn',\n xray.config.logLevel,\n 'xray: onResponse failed',\n {\n error: errInner instanceof Error ? errInner.message : String(errInner),\n },\n );\n }\n }\n throw err;\n }\n\n if (!(response instanceof Response)) {\n const log = xray.endRequest(ctx, {\n statusCode: undefined,\n headers: undefined,\n body: undefined,\n endTimeMs: Date.now(),\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 return response;\n }\n\n const responseHeaders = new Headers(response.headers);\n const ensured = ensureResponseRequestIdHeaders(responseHeaders, ctx, xray);\n if (ensured.set) {\n const headerName = canonicalHeaderName(xray.config.requestId.header);\n try {\n response.headers.set(headerName, ensured.value ?? '');\n } catch {\n response = new Response(response.body, {\n headers: responseHeaders,\n status: response.status,\n statusText: response.statusText,\n });\n }\n }\n const statusCode = response.status;\n const isUpgrade = isWebsocketUpgradeFetch(statusCode, req.headers, responseHeaders);\n const responseCapturePromise =\n !response.body || isUpgrade || capture.responseBody === 'none'\n ? Promise.resolve(null)\n : captureResponseClone(response, capture.maxBodyBytes, xray);\n\n void (async () => {\n const [requestCapture, responseCapture] = await Promise.all([\n requestCapturePromise,\n responseCapturePromise,\n ]);\n const log = finalizeResponse(\n ctx,\n xray,\n normalizedRequest,\n capture,\n requestCapture,\n responseHeaders,\n statusCode,\n responseCapture,\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 })().catch((err) => {\n logWithLevel(\n xray.config.logger,\n 'warn',\n xray.config.logLevel,\n 'xray: response capture failed',\n {\n error: err instanceof Error ? err.message : String(err),\n },\n );\n });\n\n return response;\n };\n}\n\n/**\n * Retrieve the `XrayContext` bound to a fetch `Request`.\n */\nexport function getXrayContext(req: Request): XrayContext | undefined {\n return getXrayContextFromObject(req);\n}\n\ntype RequestCapture = {\n buffer: LimitedBuffer;\n read: boolean;\n};\n\nfunction wrapRequestBody(\n request: Request,\n limit: number,\n): { capture: RequestCapture | null; request: Request } {\n if (limit <= 0 || !request.body || request.bodyUsed) {\n return { capture: null, request };\n }\n\n const originalBody = request.body;\n const capture: RequestCapture = {\n buffer: new LimitedBuffer(limit),\n read: false,\n };\n\n let controller: ReadableStreamDefaultController<Uint8Array> | null = null;\n let started = false;\n let reader: ReadableStreamDefaultReader<Uint8Array> | null = null;\n\n const wrappedStream = new ReadableStream<Uint8Array>({\n start(c) {\n controller = c;\n },\n async cancel(reason) {\n if (!started) {\n return;\n }\n try {\n await reader?.cancel(reason);\n } finally {\n // Ignore cancellation.\n }\n },\n });\n\n const startPump = () => {\n if (started) {\n return;\n }\n started = true;\n reader = originalBody.getReader();\n void (async () => {\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n controller?.close();\n return;\n }\n if (value) {\n capture.read = true;\n capture.buffer.write(value);\n controller?.enqueue(value);\n }\n }\n } catch (err) {\n controller?.error(err);\n }\n })();\n };\n\n const originalGetReader = wrappedStream.getReader.bind(wrappedStream);\n (wrappedStream as unknown as { getReader: typeof wrappedStream.getReader }).getReader = (\n ...args: unknown[]\n ) => {\n startPump();\n // @ts-expect-error - preserve built-in `getReader` overloads\n return originalGetReader(...args);\n };\n\n const init: RequestInit & { duplex?: 'half' } = {\n body: wrappedStream,\n cache: request.cache,\n credentials: request.credentials,\n headers: request.headers,\n integrity: request.integrity,\n keepalive: request.keepalive,\n method: request.method,\n mode: request.mode,\n redirect: request.redirect,\n referrer: request.referrer,\n referrerPolicy: request.referrerPolicy,\n signal: request.signal,\n };\n if (isNodeRuntime()) {\n init.duplex = 'half';\n }\n\n const wrappedRequest = new Request(request.url, init);\n return { capture, request: wrappedRequest };\n}\n\nasync function captureRequestClone(\n request: Request,\n limit: number,\n xray: XrayEmitter,\n): Promise<LimitedBuffer | null> {\n if (limit <= 0 || !request.body || request.bodyUsed) {\n return null;\n }\n let clone: Request;\n try {\n clone = request.clone();\n } catch {\n logWithLevel(xray.config.logger, 'warn', xray.config.logLevel, 'xray: request clone failed');\n return null;\n }\n\n const buffer = new LimitedBuffer(limit);\n await readStreamToBuffer(clone.body, buffer);\n return buffer;\n}\n\nasync function captureResponseClone(\n response: Response,\n limit: number,\n xray: XrayEmitter,\n): Promise<LimitedBuffer | null> {\n if (limit <= 0 || !response.body || response.bodyUsed) {\n return null;\n }\n let clone: Response;\n try {\n clone = response.clone();\n } catch {\n logWithLevel(xray.config.logger, 'warn', xray.config.logLevel, 'xray: response clone failed');\n return null;\n }\n\n const buffer = new LimitedBuffer(limit);\n await readStreamToBuffer(clone.body, buffer);\n return buffer;\n}\n\nasync function readStreamToBuffer(\n stream: ReadableStream<Uint8Array> | null,\n buffer: LimitedBuffer,\n): Promise<void> {\n if (!stream) {\n return;\n }\n\n const reader = stream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n return;\n }\n if (value) {\n buffer.write(value);\n }\n }\n } finally {\n try {\n reader.releaseLock();\n } catch {\n // Ignore release failures; reader may already be closed.\n }\n }\n}\n\nfunction wrapReadableStream(\n stream: ReadableStream<Uint8Array>,\n capture: LimitedBuffer,\n onFinish: () => void,\n onError?: (err: unknown) => void,\n): ReadableStream<Uint8Array> {\n const reader = stream.getReader();\n\n return new ReadableStream<Uint8Array>({\n async pull(controller) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n onFinish();\n try {\n reader.releaseLock();\n } catch {\n // Ignore release failures; reader may already be closed.\n }\n return;\n }\n if (value) {\n capture.write(value);\n controller.enqueue(value);\n }\n } catch (err) {\n controller.error(err);\n onError?.(err);\n onFinish();\n try {\n reader.releaseLock();\n } catch {\n // Ignore release failures; reader may already be closed.\n }\n }\n },\n async cancel(reason) {\n try {\n await reader.cancel(reason);\n } finally {\n onFinish();\n try {\n reader.releaseLock();\n } catch {\n // Ignore release failures; reader may already be closed.\n }\n }\n },\n });\n}\n\nfunction finalizeResponse(\n ctx: XrayContext,\n xray: XrayEmitter,\n normalizedRequest: NormalizedRequest,\n capture: CaptureConfig,\n requestCapture: RequestCapture | LimitedBuffer | null,\n responseHeaders: Headers,\n statusCode: number,\n responseCapture: LimitedBuffer | null,\n): RequestLog {\n if (requestCapture) {\n const buffer = requestCapture instanceof LimitedBuffer ? requestCapture : requestCapture.buffer;\n const read = requestCapture instanceof LimitedBuffer ? true : requestCapture.read;\n if (read) {\n normalizedRequest.body = makeCapturedBody(\n buffer.bytes(),\n buffer.totalBytes(),\n buffer.truncated(),\n capture.requestBody === 'text' ? 'text' : 'base64',\n );\n }\n }\n\n const responseBody = responseCapture\n ? makeCapturedBody(\n responseCapture.bytes(),\n responseCapture.totalBytes(),\n responseCapture.truncated(),\n capture.responseBody === 'text' ? 'text' : 'base64',\n )\n : undefined;\n\n return xray.endRequest(ctx, {\n statusCode,\n headers: headerValuesFromFetchHeaders(responseHeaders),\n body: responseBody,\n endTimeMs: Date.now(),\n });\n}\n\nfunction ensureResponseRequestIdHeaders(\n headers: Headers,\n ctx: XrayContext,\n xray: XrayEmitter,\n): { value?: string; set: boolean } {\n const headerName = xray.config.requestId.header;\n const existing = normalizeRequestIdCandidate(headers.get(headerName) ?? undefined);\n if (existing) {\n return { value: existing, set: false };\n }\n\n const explicit = normalizeRequestIdCandidate(ctx.requestId);\n if (explicit) {\n headers.set(canonicalHeaderName(headerName), explicit);\n return { value: explicit, set: true };\n }\n\n const generated = generateRequestId();\n headers.set(canonicalHeaderName(headerName), generated);\n setContextRequestId(ctx, generated);\n return { value: generated, set: true };\n}\n\nfunction isNodeRuntime(): boolean {\n const maybeProcess = (\n globalThis as typeof globalThis & {\n process?: { versions?: { node?: string } };\n }\n ).process;\n return !!maybeProcess?.versions?.node;\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"]}