apitally 0.25.7 → 1.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +191 -184
- package/dist/activation.cjs +371 -0
- package/dist/activation.cjs.map +1 -0
- package/dist/activation.d.cts +41 -0
- package/dist/activation.d.ts +41 -0
- package/dist/activation.js +357 -0
- package/dist/activation.js.map +1 -0
- package/dist/adonisjs/configure.cjs +88 -31
- package/dist/adonisjs/configure.cjs.map +1 -1
- package/dist/adonisjs/configure.d.cts +0 -4
- package/dist/adonisjs/configure.d.ts +0 -4
- package/dist/adonisjs/configure.js +85 -30
- package/dist/adonisjs/configure.js.map +1 -1
- package/dist/adonisjs/index.cjs +4 -23
- package/dist/adonisjs/index.cjs.map +1 -1
- package/dist/adonisjs/index.d.cts +3 -15
- package/dist/adonisjs/index.d.ts +3 -15
- package/dist/adonisjs/index.js +3 -20
- package/dist/adonisjs/index.js.map +1 -1
- package/dist/adonisjs/middleware.cjs +43 -109
- package/dist/adonisjs/middleware.cjs.map +1 -1
- package/dist/adonisjs/middleware.d.cts +1 -16
- package/dist/adonisjs/middleware.d.ts +1 -16
- package/dist/adonisjs/middleware.js +43 -110
- package/dist/adonisjs/middleware.js.map +1 -1
- package/dist/adonisjs/provider.cjs +19 -87
- package/dist/adonisjs/provider.cjs.map +1 -1
- package/dist/adonisjs/provider.d.cts +0 -22
- package/dist/adonisjs/provider.d.ts +0 -22
- package/dist/adonisjs/provider.js +19 -88
- package/dist/adonisjs/provider.js.map +1 -1
- package/dist/adonisjs/stubs/config/apitally.stub +11 -15
- package/dist/bodyCapture.cjs +128 -0
- package/dist/bodyCapture.cjs.map +1 -0
- package/dist/bodyCapture.d.cts +31 -0
- package/dist/bodyCapture.d.ts +31 -0
- package/dist/bodyCapture.js +101 -0
- package/dist/bodyCapture.js.map +1 -0
- package/dist/config.cjs +209 -0
- package/dist/config.cjs.map +1 -0
- package/dist/config.d.cts +42 -0
- package/dist/config.d.ts +42 -0
- package/dist/config.js +174 -0
- package/dist/config.js.map +1 -0
- package/dist/consumer.cjs +98 -0
- package/dist/consumer.cjs.map +1 -0
- package/dist/consumer.d.cts +13 -0
- package/dist/consumer.d.ts +13 -0
- package/dist/consumer.js +78 -0
- package/dist/consumer.js.map +1 -0
- package/dist/context.cjs +68 -0
- package/dist/context.cjs.map +1 -0
- package/dist/context.d.cts +29 -0
- package/dist/context.d.ts +29 -0
- package/dist/context.js +40 -0
- package/dist/context.js.map +1 -0
- package/dist/elysia/index.cjs +12 -13
- package/dist/elysia/index.cjs.map +1 -1
- package/dist/elysia/index.d.cts +7 -16
- package/dist/elysia/index.d.ts +7 -16
- package/dist/elysia/index.js +10 -2
- package/dist/elysia/index.js.map +1 -1
- package/dist/elysia/middleware.cjs +248 -0
- package/dist/elysia/middleware.cjs.map +1 -0
- package/dist/elysia/middleware.d.cts +13 -0
- package/dist/elysia/middleware.d.ts +13 -0
- package/dist/elysia/middleware.js +237 -0
- package/dist/elysia/middleware.js.map +1 -0
- package/dist/{loggers/index.cjs → elysia/routes.cjs} +16 -19
- package/dist/elysia/routes.cjs.map +1 -0
- package/dist/elysia/routes.d.cts +7 -0
- package/dist/elysia/routes.d.ts +7 -0
- package/dist/elysia/routes.js +14 -0
- package/dist/elysia/routes.js.map +1 -0
- package/dist/exceptions.cjs +75 -0
- package/dist/exceptions.cjs.map +1 -0
- package/dist/exceptions.d.cts +7 -0
- package/dist/exceptions.d.ts +7 -0
- package/dist/exceptions.js +49 -0
- package/dist/exceptions.js.map +1 -0
- package/dist/exportSerialization.cjs +56 -0
- package/dist/exportSerialization.cjs.map +1 -0
- package/dist/exportSerialization.d.cts +7 -0
- package/dist/exportSerialization.d.ts +7 -0
- package/dist/exportSerialization.js +32 -0
- package/dist/exportSerialization.js.map +1 -0
- package/dist/exportWorker.cjs +305 -0
- package/dist/exportWorker.cjs.map +1 -0
- package/dist/exportWorker.d.cts +46 -0
- package/dist/exportWorker.d.ts +46 -0
- package/dist/exportWorker.js +279 -0
- package/dist/exportWorker.js.map +1 -0
- package/dist/express/index.cjs +9 -4
- package/dist/express/index.cjs.map +1 -1
- package/dist/express/index.d.cts +6 -10
- package/dist/express/index.d.ts +6 -10
- package/dist/express/index.js +8 -2
- package/dist/express/index.js.map +1 -1
- package/dist/express/install.cjs +45 -0
- package/dist/express/install.cjs.map +1 -0
- package/dist/express/install.d.cts +9 -0
- package/dist/express/install.d.ts +9 -0
- package/dist/express/install.js +21 -0
- package/dist/express/install.js.map +1 -0
- package/dist/express/middleware.cjs +80 -331
- package/dist/express/middleware.cjs.map +1 -1
- package/dist/express/middleware.d.cts +3 -21
- package/dist/express/middleware.d.ts +3 -21
- package/dist/express/middleware.js +81 -328
- package/dist/express/middleware.js.map +1 -1
- package/dist/express/register.cjs +20 -0
- package/dist/express/register.cjs.map +1 -0
- package/dist/express/register.d.cts +2 -0
- package/dist/express/register.d.ts +2 -0
- package/dist/express/register.js +19 -0
- package/dist/express/register.js.map +1 -0
- package/dist/express/routes.cjs +419 -0
- package/dist/express/routes.cjs.map +1 -0
- package/dist/express/routes.d.cts +14 -0
- package/dist/express/routes.d.ts +14 -0
- package/dist/express/routes.js +391 -0
- package/dist/express/routes.js.map +1 -0
- package/dist/fastify/index.cjs +10 -15
- package/dist/fastify/index.cjs.map +1 -1
- package/dist/fastify/index.d.cts +6 -11
- package/dist/fastify/index.d.ts +6 -11
- package/dist/fastify/index.js +9 -3
- package/dist/fastify/index.js.map +1 -1
- package/dist/{common/logging.cjs → fastify/install.cjs} +15 -16
- package/dist/fastify/install.cjs.map +1 -0
- package/dist/fastify/install.d.cts +9 -0
- package/dist/fastify/install.d.ts +9 -0
- package/dist/fastify/install.js +15 -0
- package/dist/fastify/install.js.map +1 -0
- package/dist/fastify/middleware.cjs +118 -0
- package/dist/fastify/middleware.cjs.map +1 -0
- package/dist/fastify/middleware.d.cts +7 -0
- package/dist/fastify/middleware.d.ts +7 -0
- package/dist/fastify/middleware.js +97 -0
- package/dist/fastify/middleware.js.map +1 -0
- package/dist/{common/paramValidation.cjs → fastify/routes.cjs} +15 -17
- package/dist/fastify/routes.cjs.map +1 -0
- package/dist/fastify/routes.d.cts +8 -0
- package/dist/fastify/routes.d.ts +8 -0
- package/dist/fastify/routes.js +14 -0
- package/dist/fastify/routes.js.map +1 -0
- package/dist/h3/index.cjs +28 -4
- package/dist/h3/index.cjs.map +1 -1
- package/dist/h3/index.d.cts +7 -10
- package/dist/h3/index.d.ts +7 -10
- package/dist/h3/index.js +26 -2
- package/dist/h3/index.js.map +1 -1
- package/dist/h3/middleware.cjs +204 -0
- package/dist/h3/middleware.cjs.map +1 -0
- package/dist/h3/middleware.d.cts +5 -0
- package/dist/h3/middleware.d.ts +5 -0
- package/dist/h3/middleware.js +188 -0
- package/dist/h3/middleware.js.map +1 -0
- package/dist/h3/routes.cjs +66 -0
- package/dist/h3/routes.cjs.map +1 -0
- package/dist/h3/routes.d.cts +8 -0
- package/dist/h3/routes.d.ts +8 -0
- package/dist/h3/routes.js +41 -0
- package/dist/h3/routes.js.map +1 -0
- package/dist/hapi/index.cjs +15 -14
- package/dist/hapi/index.cjs.map +1 -1
- package/dist/hapi/index.d.cts +7 -10
- package/dist/hapi/index.d.ts +7 -10
- package/dist/hapi/index.js +14 -3
- package/dist/hapi/index.js.map +1 -1
- package/dist/{loggers/hapi.cjs → hapi/install.cjs} +20 -26
- package/dist/hapi/install.cjs.map +1 -0
- package/dist/hapi/install.d.cts +7 -0
- package/dist/hapi/install.d.ts +7 -0
- package/dist/hapi/install.js +22 -0
- package/dist/hapi/install.js.map +1 -0
- package/dist/hapi/middleware.cjs +158 -0
- package/dist/hapi/middleware.cjs.map +1 -0
- package/dist/hapi/middleware.d.cts +5 -0
- package/dist/hapi/middleware.d.ts +5 -0
- package/dist/hapi/middleware.js +137 -0
- package/dist/hapi/middleware.js.map +1 -0
- package/dist/hapi/routes.cjs +37 -0
- package/dist/hapi/routes.cjs.map +1 -0
- package/dist/hapi/routes.d.cts +8 -0
- package/dist/hapi/routes.d.ts +8 -0
- package/dist/hapi/routes.js +12 -0
- package/dist/hapi/routes.js.map +1 -0
- package/dist/hono/index.cjs +13 -3
- package/dist/hono/index.cjs.map +1 -1
- package/dist/hono/index.d.cts +6 -10
- package/dist/hono/index.d.ts +6 -10
- package/dist/hono/index.js +13 -2
- package/dist/hono/index.js.map +1 -1
- package/dist/hono/middleware.cjs +211 -127
- package/dist/hono/middleware.cjs.map +1 -1
- package/dist/hono/middleware.d.cts +3 -18
- package/dist/hono/middleware.d.ts +3 -18
- package/dist/hono/middleware.js +216 -125
- package/dist/hono/middleware.js.map +1 -1
- package/dist/hono/routes.cjs +74 -0
- package/dist/hono/routes.cjs.map +1 -0
- package/dist/hono/routes.d.cts +8 -0
- package/dist/hono/routes.d.ts +8 -0
- package/dist/hono/routes.js +49 -0
- package/dist/hono/routes.js.map +1 -0
- package/dist/index.cjs +108 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +28 -1
- package/dist/index.d.ts +28 -1
- package/dist/index.js +77 -0
- package/dist/index.js.map +1 -1
- package/dist/koa/index.cjs +13 -3
- package/dist/koa/index.cjs.map +1 -1
- package/dist/koa/index.d.cts +6 -10
- package/dist/koa/index.d.ts +6 -10
- package/dist/koa/index.js +13 -2
- package/dist/koa/index.js.map +1 -1
- package/dist/koa/middleware.cjs +75 -184
- package/dist/koa/middleware.cjs.map +1 -1
- package/dist/koa/middleware.d.cts +3 -13
- package/dist/koa/middleware.d.ts +3 -13
- package/dist/koa/middleware.js +78 -183
- package/dist/koa/middleware.js.map +1 -1
- package/dist/koa/routes.cjs +71 -0
- package/dist/koa/routes.cjs.map +1 -0
- package/dist/koa/routes.d.cts +8 -0
- package/dist/koa/routes.d.ts +8 -0
- package/dist/koa/routes.js +46 -0
- package/dist/koa/routes.js.map +1 -0
- package/dist/logCapture.cjs +410 -0
- package/dist/logCapture.cjs.map +1 -0
- package/dist/logCapture.d.cts +16 -0
- package/dist/logCapture.d.ts +16 -0
- package/dist/logCapture.js +383 -0
- package/dist/logCapture.js.map +1 -0
- package/dist/logRecordExporter.cjs +83 -0
- package/dist/logRecordExporter.cjs.map +1 -0
- package/dist/logRecordExporter.d.cts +14 -0
- package/dist/logRecordExporter.d.ts +14 -0
- package/dist/logRecordExporter.js +59 -0
- package/dist/logRecordExporter.js.map +1 -0
- package/dist/logRecordProcessor.cjs +120 -0
- package/dist/logRecordProcessor.cjs.map +1 -0
- package/dist/logRecordProcessor.d.cts +23 -0
- package/dist/logRecordProcessor.d.ts +23 -0
- package/dist/logRecordProcessor.js +96 -0
- package/dist/logRecordProcessor.js.map +1 -0
- package/dist/{otel/index.cjs → logRecordTruncation.cjs} +10 -7
- package/dist/logRecordTruncation.cjs.map +1 -0
- package/dist/logRecordTruncation.d.cts +6 -0
- package/dist/logRecordTruncation.d.ts +6 -0
- package/dist/logRecordTruncation.js +8 -0
- package/dist/logRecordTruncation.js.map +1 -0
- package/dist/logger.cjs +62 -0
- package/dist/logger.cjs.map +1 -0
- package/dist/logger.d.cts +7 -0
- package/dist/logger.d.ts +7 -0
- package/dist/logger.js +34 -0
- package/dist/logger.js.map +1 -0
- package/dist/metrics.cjs +171 -0
- package/dist/metrics.cjs.map +1 -0
- package/dist/metrics.d.cts +24 -0
- package/dist/metrics.d.ts +24 -0
- package/dist/metrics.js +153 -0
- package/dist/metrics.js.map +1 -0
- package/dist/nestjs/index.cjs +61 -71
- package/dist/nestjs/index.cjs.map +1 -1
- package/dist/nestjs/index.d.cts +3 -11
- package/dist/nestjs/index.d.ts +3 -11
- package/dist/nestjs/index.js +61 -61
- package/dist/nestjs/index.js.map +1 -1
- package/dist/packageVersion.cjs +67 -0
- package/dist/packageVersion.cjs.map +1 -0
- package/dist/packageVersion.d.cts +5 -0
- package/dist/packageVersion.d.ts +5 -0
- package/dist/packageVersion.js +39 -0
- package/dist/packageVersion.js.map +1 -0
- package/dist/providers.cjs +149 -0
- package/dist/providers.cjs.map +1 -0
- package/dist/providers.d.cts +15 -0
- package/dist/providers.d.ts +15 -0
- package/dist/providers.js +136 -0
- package/dist/providers.js.map +1 -0
- package/dist/redaction.cjs +116 -0
- package/dist/redaction.cjs.map +1 -0
- package/dist/redaction.d.cts +17 -0
- package/dist/redaction.d.ts +17 -0
- package/dist/redaction.js +98 -0
- package/dist/redaction.js.map +1 -0
- package/dist/{common/packageVersions.cjs → requestAttributes.cjs} +21 -19
- package/dist/requestAttributes.cjs.map +1 -0
- package/dist/requestAttributes.d.cts +8 -0
- package/dist/requestAttributes.d.ts +8 -0
- package/dist/requestAttributes.js +22 -0
- package/dist/requestAttributes.js.map +1 -0
- package/dist/requestObservation.cjs +228 -0
- package/dist/requestObservation.cjs.map +1 -0
- package/dist/requestObservation.d.cts +60 -0
- package/dist/requestObservation.d.ts +60 -0
- package/dist/requestObservation.js +208 -0
- package/dist/requestObservation.js.map +1 -0
- package/dist/requestObservationNode.cjs +193 -0
- package/dist/requestObservationNode.cjs.map +1 -0
- package/dist/requestObservationNode.d.cts +29 -0
- package/dist/requestObservationNode.d.ts +29 -0
- package/dist/requestObservationNode.js +170 -0
- package/dist/requestObservationNode.js.map +1 -0
- package/dist/requestObservationWeb.cjs +202 -0
- package/dist/requestObservationWeb.cjs.map +1 -0
- package/dist/requestObservationWeb.d.cts +32 -0
- package/dist/requestObservationWeb.d.ts +32 -0
- package/dist/requestObservationWeb.js +182 -0
- package/dist/requestObservationWeb.js.map +1 -0
- package/dist/sentry.cjs +103 -0
- package/dist/sentry.cjs.map +1 -0
- package/dist/sentry.d.cts +3 -0
- package/dist/sentry.d.ts +3 -0
- package/dist/sentry.js +79 -0
- package/dist/sentry.js.map +1 -0
- package/dist/spanExporter.cjs +218 -0
- package/dist/spanExporter.cjs.map +1 -0
- package/dist/spanExporter.d.cts +33 -0
- package/dist/spanExporter.d.ts +33 -0
- package/dist/spanExporter.js +194 -0
- package/dist/spanExporter.js.map +1 -0
- package/dist/spanProcessor.cjs +523 -0
- package/dist/spanProcessor.cjs.map +1 -0
- package/dist/spanProcessor.d.cts +67 -0
- package/dist/spanProcessor.d.ts +67 -0
- package/dist/spanProcessor.js +501 -0
- package/dist/spanProcessor.js.map +1 -0
- package/dist/spool.cjs +314 -0
- package/dist/spool.cjs.map +1 -0
- package/dist/spool.d.cts +49 -0
- package/dist/spool.d.ts +49 -0
- package/dist/spool.js +297 -0
- package/dist/spool.js.map +1 -0
- package/dist/startup.cjs +93 -0
- package/dist/startup.cjs.map +1 -0
- package/dist/startup.d.cts +15 -0
- package/dist/startup.d.ts +15 -0
- package/dist/startup.js +68 -0
- package/dist/startup.js.map +1 -0
- package/dist/tracing.cjs +116 -0
- package/dist/tracing.cjs.map +1 -0
- package/dist/tracing.d.cts +5 -0
- package/dist/tracing.d.ts +5 -0
- package/dist/tracing.js +96 -0
- package/dist/tracing.js.map +1 -0
- package/package.json +113 -155
- package/dist/common/client.cjs +0 -335
- package/dist/common/client.cjs.map +0 -1
- package/dist/common/client.d.cts +0 -50
- package/dist/common/client.d.ts +0 -50
- package/dist/common/client.js +0 -302
- package/dist/common/client.js.map +0 -1
- package/dist/common/consumerRegistry.cjs +0 -84
- package/dist/common/consumerRegistry.cjs.map +0 -1
- package/dist/common/consumerRegistry.d.cts +0 -20
- package/dist/common/consumerRegistry.d.ts +0 -20
- package/dist/common/consumerRegistry.js +0 -61
- package/dist/common/consumerRegistry.js.map +0 -1
- package/dist/common/headers.cjs +0 -55
- package/dist/common/headers.cjs.map +0 -1
- package/dist/common/headers.d.cts +0 -6
- package/dist/common/headers.d.ts +0 -6
- package/dist/common/headers.js +0 -31
- package/dist/common/headers.js.map +0 -1
- package/dist/common/instance.cjs +0 -158
- package/dist/common/instance.cjs.map +0 -1
- package/dist/common/instance.d.cts +0 -4
- package/dist/common/instance.d.ts +0 -4
- package/dist/common/instance.js +0 -134
- package/dist/common/instance.js.map +0 -1
- package/dist/common/logging.cjs.map +0 -1
- package/dist/common/logging.d.cts +0 -11
- package/dist/common/logging.d.ts +0 -11
- package/dist/common/logging.js +0 -17
- package/dist/common/logging.js.map +0 -1
- package/dist/common/packageVersions.cjs.map +0 -1
- package/dist/common/packageVersions.d.cts +0 -3
- package/dist/common/packageVersions.d.ts +0 -3
- package/dist/common/packageVersions.js +0 -21
- package/dist/common/packageVersions.js.map +0 -1
- package/dist/common/paramValidation.cjs.map +0 -1
- package/dist/common/paramValidation.d.cts +0 -4
- package/dist/common/paramValidation.d.ts +0 -4
- package/dist/common/paramValidation.js +0 -17
- package/dist/common/paramValidation.js.map +0 -1
- package/dist/common/requestCounter.cjs +0 -109
- package/dist/common/requestCounter.cjs.map +0 -1
- package/dist/common/requestCounter.d.cts +0 -24
- package/dist/common/requestCounter.d.ts +0 -24
- package/dist/common/requestCounter.js +0 -90
- package/dist/common/requestCounter.js.map +0 -1
- package/dist/common/requestLogger.cjs +0 -541
- package/dist/common/requestLogger.cjs.map +0 -1
- package/dist/common/requestLogger.d.cts +0 -85
- package/dist/common/requestLogger.d.ts +0 -85
- package/dist/common/requestLogger.js +0 -507
- package/dist/common/requestLogger.js.map +0 -1
- package/dist/common/resources.cjs +0 -49
- package/dist/common/resources.cjs.map +0 -1
- package/dist/common/resources.d.cts +0 -6
- package/dist/common/resources.d.ts +0 -6
- package/dist/common/resources.js +0 -26
- package/dist/common/resources.js.map +0 -1
- package/dist/common/response.cjs +0 -104
- package/dist/common/response.cjs.map +0 -1
- package/dist/common/response.d.cts +0 -15
- package/dist/common/response.d.ts +0 -15
- package/dist/common/response.js +0 -80
- package/dist/common/response.js.map +0 -1
- package/dist/common/sentry.cjs +0 -56
- package/dist/common/sentry.cjs.map +0 -1
- package/dist/common/sentry.d.cts +0 -6
- package/dist/common/sentry.d.ts +0 -6
- package/dist/common/sentry.js +0 -23
- package/dist/common/sentry.js.map +0 -1
- package/dist/common/serverErrorCounter.cjs +0 -121
- package/dist/common/serverErrorCounter.cjs.map +0 -1
- package/dist/common/serverErrorCounter.d.cts +0 -23
- package/dist/common/serverErrorCounter.d.ts +0 -23
- package/dist/common/serverErrorCounter.js +0 -97
- package/dist/common/serverErrorCounter.js.map +0 -1
- package/dist/common/spanCollector.cjs +0 -199
- package/dist/common/spanCollector.cjs.map +0 -1
- package/dist/common/spanCollector.d.cts +0 -45
- package/dist/common/spanCollector.d.ts +0 -45
- package/dist/common/spanCollector.js +0 -176
- package/dist/common/spanCollector.js.map +0 -1
- package/dist/common/tempGzipFile.cjs +0 -125
- package/dist/common/tempGzipFile.cjs.map +0 -1
- package/dist/common/tempGzipFile.d.cts +0 -19
- package/dist/common/tempGzipFile.d.ts +0 -19
- package/dist/common/tempGzipFile.js +0 -102
- package/dist/common/tempGzipFile.js.map +0 -1
- package/dist/common/types.cjs +0 -17
- package/dist/common/types.cjs.map +0 -1
- package/dist/common/types.d.cts +0 -95
- package/dist/common/types.d.ts +0 -95
- package/dist/common/types.js +0 -1
- package/dist/common/types.js.map +0 -1
- package/dist/common/validationErrorCounter.cjs +0 -74
- package/dist/common/validationErrorCounter.cjs.map +0 -1
- package/dist/common/validationErrorCounter.d.cts +0 -20
- package/dist/common/validationErrorCounter.d.ts +0 -20
- package/dist/common/validationErrorCounter.js +0 -55
- package/dist/common/validationErrorCounter.js.map +0 -1
- package/dist/elysia/plugin.cjs +0 -237
- package/dist/elysia/plugin.cjs.map +0 -1
- package/dist/elysia/plugin.d.cts +0 -70
- package/dist/elysia/plugin.d.ts +0 -70
- package/dist/elysia/plugin.js +0 -218
- package/dist/elysia/plugin.js.map +0 -1
- package/dist/elysia/utils.cjs +0 -77
- package/dist/elysia/utils.cjs.map +0 -1
- package/dist/elysia/utils.d.cts +0 -14
- package/dist/elysia/utils.d.ts +0 -14
- package/dist/elysia/utils.js +0 -54
- package/dist/elysia/utils.js.map +0 -1
- package/dist/express/utils.cjs +0 -217
- package/dist/express/utils.cjs.map +0 -1
- package/dist/express/utils.d.cts +0 -37
- package/dist/express/utils.d.ts +0 -37
- package/dist/express/utils.js +0 -189
- package/dist/express/utils.js.map +0 -1
- package/dist/fastify/plugin.cjs +0 -316
- package/dist/fastify/plugin.cjs.map +0 -1
- package/dist/fastify/plugin.d.cts +0 -34
- package/dist/fastify/plugin.d.ts +0 -34
- package/dist/fastify/plugin.js +0 -282
- package/dist/fastify/plugin.js.map +0 -1
- package/dist/h3/plugin.cjs +0 -183
- package/dist/h3/plugin.cjs.map +0 -1
- package/dist/h3/plugin.d.cts +0 -27
- package/dist/h3/plugin.d.ts +0 -27
- package/dist/h3/plugin.js +0 -159
- package/dist/h3/plugin.js.map +0 -1
- package/dist/h3/utils.cjs +0 -77
- package/dist/h3/utils.cjs.map +0 -1
- package/dist/h3/utils.d.cts +0 -14
- package/dist/h3/utils.d.ts +0 -14
- package/dist/h3/utils.js +0 -54
- package/dist/h3/utils.js.map +0 -1
- package/dist/hapi/plugin.cjs +0 -210
- package/dist/hapi/plugin.cjs.map +0 -1
- package/dist/hapi/plugin.d.cts +0 -40
- package/dist/hapi/plugin.d.ts +0 -40
- package/dist/hapi/plugin.js +0 -187
- package/dist/hapi/plugin.js.map +0 -1
- package/dist/hapi/utils.cjs +0 -77
- package/dist/hapi/utils.cjs.map +0 -1
- package/dist/hapi/utils.d.cts +0 -16
- package/dist/hapi/utils.d.ts +0 -16
- package/dist/hapi/utils.js +0 -53
- package/dist/hapi/utils.js.map +0 -1
- package/dist/hono/utils.cjs +0 -113
- package/dist/hono/utils.cjs.map +0 -1
- package/dist/hono/utils.d.cts +0 -16
- package/dist/hono/utils.d.ts +0 -16
- package/dist/hono/utils.js +0 -88
- package/dist/hono/utils.js.map +0 -1
- package/dist/loggers/console.cjs +0 -67
- package/dist/loggers/console.cjs.map +0 -1
- package/dist/loggers/console.d.cts +0 -11
- package/dist/loggers/console.d.ts +0 -11
- package/dist/loggers/console.js +0 -44
- package/dist/loggers/console.js.map +0 -1
- package/dist/loggers/hapi.cjs.map +0 -1
- package/dist/loggers/hapi.d.cts +0 -12
- package/dist/loggers/hapi.d.ts +0 -12
- package/dist/loggers/hapi.js +0 -29
- package/dist/loggers/hapi.js.map +0 -1
- package/dist/loggers/index.cjs.map +0 -1
- package/dist/loggers/index.d.cts +0 -13
- package/dist/loggers/index.d.ts +0 -13
- package/dist/loggers/index.js +0 -13
- package/dist/loggers/index.js.map +0 -1
- package/dist/loggers/nestjs.cjs +0 -104
- package/dist/loggers/nestjs.cjs.map +0 -1
- package/dist/loggers/nestjs.d.cts +0 -11
- package/dist/loggers/nestjs.d.ts +0 -11
- package/dist/loggers/nestjs.js +0 -71
- package/dist/loggers/nestjs.js.map +0 -1
- package/dist/loggers/pino.cjs +0 -152
- package/dist/loggers/pino.cjs.map +0 -1
- package/dist/loggers/pino.d.cts +0 -11
- package/dist/loggers/pino.d.ts +0 -11
- package/dist/loggers/pino.js +0 -119
- package/dist/loggers/pino.js.map +0 -1
- package/dist/loggers/utils.cjs +0 -64
- package/dist/loggers/utils.cjs.map +0 -1
- package/dist/loggers/utils.d.cts +0 -6
- package/dist/loggers/utils.d.ts +0 -6
- package/dist/loggers/utils.js +0 -40
- package/dist/loggers/utils.js.map +0 -1
- package/dist/loggers/winston.cjs +0 -101
- package/dist/loggers/winston.cjs.map +0 -1
- package/dist/loggers/winston.d.cts +0 -11
- package/dist/loggers/winston.d.ts +0 -11
- package/dist/loggers/winston.js +0 -68
- package/dist/loggers/winston.js.map +0 -1
- package/dist/otel/index.cjs.map +0 -1
- package/dist/otel/index.d.cts +0 -2
- package/dist/otel/index.d.ts +0 -2
- package/dist/otel/index.js +0 -5
- package/dist/otel/index.js.map +0 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import { Context } from '@opentelemetry/api';
|
|
3
|
+
import { BodyCapture, CapturedBody } from './bodyCapture.js';
|
|
4
|
+
import { RequestObservation } from './requestObservation.js';
|
|
5
|
+
import '@opentelemetry/core';
|
|
6
|
+
import './context.js';
|
|
7
|
+
|
|
8
|
+
interface StartNodeRequestObservationOptions {
|
|
9
|
+
request: IncomingMessage;
|
|
10
|
+
tracerName: string;
|
|
11
|
+
}
|
|
12
|
+
interface NodeRequestObservation extends RequestObservation {
|
|
13
|
+
requestBodyCapture: BodyCapture;
|
|
14
|
+
requestUrl: string;
|
|
15
|
+
}
|
|
16
|
+
interface StartedNodeRequestObservation {
|
|
17
|
+
observation: NodeRequestObservation;
|
|
18
|
+
requestContext: Context;
|
|
19
|
+
}
|
|
20
|
+
declare function startNodeRequestObservation(options: StartNodeRequestObservationOptions): StartedNodeRequestObservation;
|
|
21
|
+
interface NodeResponseCompletion extends CapturedBody {
|
|
22
|
+
completedAtMillis: number;
|
|
23
|
+
responseFinished: boolean;
|
|
24
|
+
requestBody: CapturedBody;
|
|
25
|
+
}
|
|
26
|
+
declare function captureNodeResponse(response: ServerResponse, shouldCaptureBody: boolean, requestBodyCapture?: BodyCapture, resolveResponseHeader?: (name: string) => string | number | string[] | undefined): Promise<NodeResponseCompletion>;
|
|
27
|
+
declare function registerServerCloseFlush(request: IncomingMessage): void;
|
|
28
|
+
|
|
29
|
+
export { type NodeRequestObservation, type NodeResponseCompletion, type StartNodeRequestObservationOptions, type StartedNodeRequestObservation, captureNodeResponse, registerServerCloseFlush, startNodeRequestObservation };
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { context, propagation, ROOT_CONTEXT } from "@opentelemetry/api";
|
|
2
|
+
import { flushTelemetry } from "./activation.js";
|
|
3
|
+
import { BodyCapture } from "./bodyCapture.js";
|
|
4
|
+
import { getConfig } from "./config.js";
|
|
5
|
+
import { logDebug } from "./logger.js";
|
|
6
|
+
import {
|
|
7
|
+
resolveHttpRequestStartAttributes,
|
|
8
|
+
startRequestObservation
|
|
9
|
+
} from "./requestObservation.js";
|
|
10
|
+
const flushOnCloseServers = /* @__PURE__ */ new WeakSet();
|
|
11
|
+
function startNodeRequestObservation(options) {
|
|
12
|
+
const { request } = options;
|
|
13
|
+
const startTimeMillis = performance.now();
|
|
14
|
+
const method = (request.method ?? "GET").toUpperCase();
|
|
15
|
+
const requestUrl = request.url ?? "/";
|
|
16
|
+
const requestBodyCapture = new BodyCapture({
|
|
17
|
+
captureBody: getConfig().captureRequestBody,
|
|
18
|
+
contentType: request.headers["content-type"],
|
|
19
|
+
contentLength: request.headers["content-length"],
|
|
20
|
+
transferEncoding: request.headers["transfer-encoding"]
|
|
21
|
+
});
|
|
22
|
+
observeRequestBody(request, requestBodyCapture);
|
|
23
|
+
const queryIndex = requestUrl.indexOf("?");
|
|
24
|
+
const scheme = request.socket?.encrypted ? "https" : "http";
|
|
25
|
+
const host = request.headers.host;
|
|
26
|
+
let serverAddress;
|
|
27
|
+
if (host) {
|
|
28
|
+
try {
|
|
29
|
+
serverAddress = new URL(`${scheme}://${host}`).hostname;
|
|
30
|
+
} catch {
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const startAttributes = resolveHttpRequestStartAttributes({
|
|
34
|
+
method,
|
|
35
|
+
path: queryIndex === -1 ? requestUrl : requestUrl.slice(0, queryIndex),
|
|
36
|
+
query: queryIndex === -1 ? void 0 : requestUrl.slice(queryIndex + 1) || void 0,
|
|
37
|
+
scheme,
|
|
38
|
+
serverAddress,
|
|
39
|
+
fullUrl: host ? `${scheme}://${host}${requestUrl}` : void 0,
|
|
40
|
+
clientAddress: request.socket?.remoteAddress || void 0,
|
|
41
|
+
userAgent: typeof request.headers["user-agent"] === "string" ? request.headers["user-agent"] : void 0,
|
|
42
|
+
requestBodySize: requestBodyCapture.size
|
|
43
|
+
});
|
|
44
|
+
const { requestRecord, requestContext, spanHandle, rpcMetadata } = startRequestObservation({
|
|
45
|
+
activeContext: context.active(),
|
|
46
|
+
extractedContext: propagation.extract(ROOT_CONTEXT, request.headers),
|
|
47
|
+
tracerName: options.tracerName,
|
|
48
|
+
method,
|
|
49
|
+
startAttributes,
|
|
50
|
+
requestBodyCapture
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
observation: {
|
|
54
|
+
requestRecord,
|
|
55
|
+
spanHandle,
|
|
56
|
+
rpcMetadata,
|
|
57
|
+
requestBodyCapture,
|
|
58
|
+
startTimeMillis,
|
|
59
|
+
method,
|
|
60
|
+
requestUrl
|
|
61
|
+
},
|
|
62
|
+
requestContext
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function captureNodeResponse(response, shouldCaptureBody, requestBodyCapture, resolveResponseHeader = (name) => response.getHeader(name)) {
|
|
66
|
+
let responseBodyCapture;
|
|
67
|
+
const ensureResponseBodyCapture = () => {
|
|
68
|
+
responseBodyCapture ??= new BodyCapture({
|
|
69
|
+
captureBody: shouldCaptureBody,
|
|
70
|
+
contentType: firstStringValue(resolveResponseHeader("content-type")),
|
|
71
|
+
contentLength: resolveResponseHeader("content-length"),
|
|
72
|
+
transferEncoding: resolveResponseHeader("transfer-encoding")
|
|
73
|
+
});
|
|
74
|
+
return responseBodyCapture;
|
|
75
|
+
};
|
|
76
|
+
const recordResponseChunk = (args) => {
|
|
77
|
+
try {
|
|
78
|
+
const chunk = args[0];
|
|
79
|
+
if (typeof chunk === "string" || Buffer.isBuffer(chunk) || chunk instanceof Uint8Array) {
|
|
80
|
+
ensureResponseBodyCapture().addChunk(
|
|
81
|
+
chunk,
|
|
82
|
+
typeof args[1] === "string" ? args[1] : void 0
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
} catch (error) {
|
|
86
|
+
logDebug(`Error observing a response chunk: ${String(error)}`);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const originalWrite = response.write;
|
|
90
|
+
response.write = function(...args) {
|
|
91
|
+
recordResponseChunk(args);
|
|
92
|
+
return originalWrite.apply(this, args);
|
|
93
|
+
};
|
|
94
|
+
const originalEnd = response.end;
|
|
95
|
+
response.end = function(...args) {
|
|
96
|
+
recordResponseChunk(args);
|
|
97
|
+
return originalEnd.apply(this, args);
|
|
98
|
+
};
|
|
99
|
+
return new Promise((resolve) => {
|
|
100
|
+
let completed = false;
|
|
101
|
+
const complete = (responseFinished) => {
|
|
102
|
+
if (completed) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
completed = true;
|
|
106
|
+
const completedAtMillis = performance.now();
|
|
107
|
+
const capture = ensureResponseBodyCapture();
|
|
108
|
+
if (responseFinished) {
|
|
109
|
+
capture.markComplete();
|
|
110
|
+
}
|
|
111
|
+
resolve({
|
|
112
|
+
body: capture.body,
|
|
113
|
+
size: capture.size,
|
|
114
|
+
completedAtMillis,
|
|
115
|
+
responseFinished,
|
|
116
|
+
requestBody: {
|
|
117
|
+
body: requestBodyCapture?.body,
|
|
118
|
+
size: requestBodyCapture?.size
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
response.on("finish", () => complete(true));
|
|
123
|
+
response.on("close", () => complete(false));
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function registerServerCloseFlush(request) {
|
|
127
|
+
const server = request.socket?.server;
|
|
128
|
+
if (!server || typeof server.on !== "function" || flushOnCloseServers.has(server)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
flushOnCloseServers.add(server);
|
|
132
|
+
server.on("close", () => {
|
|
133
|
+
flushTelemetry().catch((error) => {
|
|
134
|
+
logDebug(`Error flushing telemetry on server close: ${String(error)}`);
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
function observeRequestBody(request, requestBodyCapture) {
|
|
139
|
+
const originalEmit = request.emit;
|
|
140
|
+
request.emit = function(event, ...args) {
|
|
141
|
+
try {
|
|
142
|
+
if (event === "data") {
|
|
143
|
+
const chunk = args[0];
|
|
144
|
+
if (typeof chunk === "string" || Buffer.isBuffer(chunk) || chunk instanceof Uint8Array) {
|
|
145
|
+
requestBodyCapture.addChunk(chunk);
|
|
146
|
+
}
|
|
147
|
+
} else if (event === "end") {
|
|
148
|
+
requestBodyCapture.markComplete();
|
|
149
|
+
}
|
|
150
|
+
} catch (error) {
|
|
151
|
+
logDebug(`Error observing a request body chunk: ${String(error)}`);
|
|
152
|
+
}
|
|
153
|
+
return originalEmit.call(this, event, ...args);
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function firstStringValue(value) {
|
|
157
|
+
if (typeof value === "string") {
|
|
158
|
+
return value;
|
|
159
|
+
}
|
|
160
|
+
if (Array.isArray(value)) {
|
|
161
|
+
return value[0];
|
|
162
|
+
}
|
|
163
|
+
return void 0;
|
|
164
|
+
}
|
|
165
|
+
export {
|
|
166
|
+
captureNodeResponse,
|
|
167
|
+
registerServerCloseFlush,
|
|
168
|
+
startNodeRequestObservation
|
|
169
|
+
};
|
|
170
|
+
//# sourceMappingURL=requestObservationNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/requestObservationNode.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from \"node:http\";\nimport { type Context, context, propagation, ROOT_CONTEXT } from \"@opentelemetry/api\";\nimport { flushTelemetry } from \"./activation.js\";\nimport { BodyCapture, type CapturedBody } from \"./bodyCapture.js\";\nimport { getConfig } from \"./config.js\";\nimport { logDebug } from \"./logger.js\";\nimport {\n type RequestObservation,\n resolveHttpRequestStartAttributes,\n startRequestObservation,\n} from \"./requestObservation.js\";\n\nconst flushOnCloseServers = new WeakSet<object>();\n\nexport interface StartNodeRequestObservationOptions {\n request: IncomingMessage;\n tracerName: string;\n}\n\nexport interface NodeRequestObservation extends RequestObservation {\n requestBodyCapture: BodyCapture;\n requestUrl: string;\n}\n\nexport interface StartedNodeRequestObservation {\n observation: NodeRequestObservation;\n requestContext: Context;\n}\n\nexport function startNodeRequestObservation(\n options: StartNodeRequestObservationOptions,\n): StartedNodeRequestObservation {\n const { request } = options;\n const startTimeMillis = performance.now();\n const method = (request.method ?? \"GET\").toUpperCase();\n const requestUrl = request.url ?? \"/\";\n const requestBodyCapture = new BodyCapture({\n captureBody: getConfig().captureRequestBody,\n contentType: request.headers[\"content-type\"],\n contentLength: request.headers[\"content-length\"],\n transferEncoding: request.headers[\"transfer-encoding\"],\n });\n observeRequestBody(request, requestBodyCapture);\n\n const queryIndex = requestUrl.indexOf(\"?\");\n const scheme = (request.socket as { encrypted?: boolean } | undefined)?.encrypted\n ? \"https\"\n : \"http\";\n const host = request.headers.host;\n let serverAddress: string | undefined;\n if (host) {\n try {\n serverAddress = new URL(`${scheme}://${host}`).hostname;\n } catch {\n // An invalid Host header leaves the server address unset.\n }\n }\n const startAttributes = resolveHttpRequestStartAttributes({\n method,\n path: queryIndex === -1 ? requestUrl : requestUrl.slice(0, queryIndex),\n query: queryIndex === -1 ? undefined : requestUrl.slice(queryIndex + 1) || undefined,\n scheme,\n serverAddress,\n fullUrl: host ? `${scheme}://${host}${requestUrl}` : undefined,\n clientAddress: request.socket?.remoteAddress || undefined,\n userAgent:\n typeof request.headers[\"user-agent\"] === \"string\" ? request.headers[\"user-agent\"] : undefined,\n requestBodySize: requestBodyCapture.size,\n });\n const { requestRecord, requestContext, spanHandle, rpcMetadata } = startRequestObservation({\n activeContext: context.active(),\n extractedContext: propagation.extract(ROOT_CONTEXT, request.headers),\n tracerName: options.tracerName,\n method,\n startAttributes,\n requestBodyCapture,\n });\n return {\n observation: {\n requestRecord,\n spanHandle,\n rpcMetadata,\n requestBodyCapture,\n startTimeMillis,\n method,\n requestUrl,\n },\n requestContext,\n };\n}\n\nexport interface NodeResponseCompletion extends CapturedBody {\n completedAtMillis: number;\n responseFinished: boolean;\n requestBody: CapturedBody;\n}\n\n// Patching write and end before framework dispatch lets compression wrappers\n// feed their final wire bytes through capture.\nexport function captureNodeResponse(\n response: ServerResponse,\n shouldCaptureBody: boolean,\n requestBodyCapture?: BodyCapture,\n resolveResponseHeader: (name: string) => string | number | string[] | undefined = (name) =>\n response.getHeader(name),\n): Promise<NodeResponseCompletion> {\n let responseBodyCapture: BodyCapture | undefined;\n const ensureResponseBodyCapture = (): BodyCapture => {\n responseBodyCapture ??= new BodyCapture({\n captureBody: shouldCaptureBody,\n contentType: firstStringValue(resolveResponseHeader(\"content-type\")),\n contentLength: resolveResponseHeader(\"content-length\"),\n transferEncoding: resolveResponseHeader(\"transfer-encoding\") as string | string[] | undefined,\n });\n return responseBodyCapture;\n };\n const recordResponseChunk = (args: unknown[]): void => {\n try {\n const chunk = args[0];\n if (typeof chunk === \"string\" || Buffer.isBuffer(chunk) || chunk instanceof Uint8Array) {\n ensureResponseBodyCapture().addChunk(\n chunk,\n typeof args[1] === \"string\" ? (args[1] as BufferEncoding) : undefined,\n );\n }\n } catch (error) {\n logDebug(`Error observing a response chunk: ${String(error)}`);\n }\n };\n const originalWrite = response.write as (...args: unknown[]) => boolean;\n response.write = function (this: ServerResponse, ...args: unknown[]): boolean {\n recordResponseChunk(args);\n return originalWrite.apply(this, args);\n } as typeof response.write;\n const originalEnd = response.end as (...args: unknown[]) => ServerResponse;\n response.end = function (this: ServerResponse, ...args: unknown[]): ServerResponse {\n recordResponseChunk(args);\n return originalEnd.apply(this, args);\n } as typeof response.end;\n\n return new Promise((resolve) => {\n let completed = false;\n const complete = (responseFinished: boolean): void => {\n if (completed) {\n return;\n }\n completed = true;\n const completedAtMillis = performance.now();\n const capture = ensureResponseBodyCapture();\n if (responseFinished) {\n capture.markComplete();\n }\n resolve({\n body: capture.body,\n size: capture.size,\n completedAtMillis,\n responseFinished,\n requestBody: {\n body: requestBodyCapture?.body,\n size: requestBodyCapture?.size,\n },\n });\n };\n response.on(\"finish\", () => complete(true));\n response.on(\"close\", () => complete(false));\n });\n}\n\n// Closing a server triggers a flush of buffered telemetry, never a teardown:\n// an app bound to several servers keeps exporting on the still-open ones.\nexport function registerServerCloseFlush(request: IncomingMessage): void {\n const server = (request.socket as { server?: unknown } | undefined)?.server;\n if (\n !server ||\n typeof (server as { on?: unknown }).on !== \"function\" ||\n flushOnCloseServers.has(server as object)\n ) {\n return;\n }\n flushOnCloseServers.add(server as object);\n (server as { on: (event: string, listener: () => void) => void }).on(\"close\", () => {\n flushTelemetry().catch((error: unknown) => {\n logDebug(`Error flushing telemetry on server close: ${String(error)}`);\n });\n });\n}\n\n// Wrapping emit observes only bytes delivered to application consumers and does\n// not change the stream's flow state.\nfunction observeRequestBody(request: IncomingMessage, requestBodyCapture: BodyCapture): void {\n const originalEmit = request.emit as (...args: unknown[]) => boolean;\n (request as { emit: unknown }).emit = function (\n this: IncomingMessage,\n event: string | symbol,\n ...args: unknown[]\n ): boolean {\n try {\n if (event === \"data\") {\n const chunk = args[0];\n if (typeof chunk === \"string\" || Buffer.isBuffer(chunk) || chunk instanceof Uint8Array) {\n requestBodyCapture.addChunk(chunk);\n }\n } else if (event === \"end\") {\n requestBodyCapture.markComplete();\n }\n } catch (error) {\n logDebug(`Error observing a request body chunk: ${String(error)}`);\n }\n return originalEmit.call(this, event, ...args);\n };\n}\n\nfunction firstStringValue(value: string | number | string[] | undefined): string | undefined {\n if (typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value)) {\n return value[0];\n }\n return undefined;\n}\n"],"mappings":"AACA,SAAuB,SAAS,aAAa,oBAAoB;AACjE,SAAS,sBAAsB;AAC/B,SAAS,mBAAsC;AAC/C,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AACzB;AAAA,EAEE;AAAA,EACA;AAAA,OACK;AAEP,MAAM,sBAAsB,oBAAI,QAAgB;AAiBzC,SAAS,4BACd,SAC+B;AAC/B,QAAM,EAAE,QAAQ,IAAI;AACpB,QAAM,kBAAkB,YAAY,IAAI;AACxC,QAAM,UAAU,QAAQ,UAAU,OAAO,YAAY;AACrD,QAAM,aAAa,QAAQ,OAAO;AAClC,QAAM,qBAAqB,IAAI,YAAY;AAAA,IACzC,aAAa,UAAU,EAAE;AAAA,IACzB,aAAa,QAAQ,QAAQ,cAAc;AAAA,IAC3C,eAAe,QAAQ,QAAQ,gBAAgB;AAAA,IAC/C,kBAAkB,QAAQ,QAAQ,mBAAmB;AAAA,EACvD,CAAC;AACD,qBAAmB,SAAS,kBAAkB;AAE9C,QAAM,aAAa,WAAW,QAAQ,GAAG;AACzC,QAAM,SAAU,QAAQ,QAAgD,YACpE,UACA;AACJ,QAAM,OAAO,QAAQ,QAAQ;AAC7B,MAAI;AACJ,MAAI,MAAM;AACR,QAAI;AACF,sBAAgB,IAAI,IAAI,GAAG,MAAM,MAAM,IAAI,EAAE,EAAE;AAAA,IACjD,QAAQ;AAAA,IAER;AAAA,EACF;AACA,QAAM,kBAAkB,kCAAkC;AAAA,IACxD;AAAA,IACA,MAAM,eAAe,KAAK,aAAa,WAAW,MAAM,GAAG,UAAU;AAAA,IACrE,OAAO,eAAe,KAAK,SAAY,WAAW,MAAM,aAAa,CAAC,KAAK;AAAA,IAC3E;AAAA,IACA;AAAA,IACA,SAAS,OAAO,GAAG,MAAM,MAAM,IAAI,GAAG,UAAU,KAAK;AAAA,IACrD,eAAe,QAAQ,QAAQ,iBAAiB;AAAA,IAChD,WACE,OAAO,QAAQ,QAAQ,YAAY,MAAM,WAAW,QAAQ,QAAQ,YAAY,IAAI;AAAA,IACtF,iBAAiB,mBAAmB;AAAA,EACtC,CAAC;AACD,QAAM,EAAE,eAAe,gBAAgB,YAAY,YAAY,IAAI,wBAAwB;AAAA,IACzF,eAAe,QAAQ,OAAO;AAAA,IAC9B,kBAAkB,YAAY,QAAQ,cAAc,QAAQ,OAAO;AAAA,IACnE,YAAY,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,SAAO;AAAA,IACL,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACF;AAUO,SAAS,oBACd,UACA,mBACA,oBACA,wBAAkF,CAAC,SACjF,SAAS,UAAU,IAAI,GACQ;AACjC,MAAI;AACJ,QAAM,4BAA4B,MAAmB;AACnD,4BAAwB,IAAI,YAAY;AAAA,MACtC,aAAa;AAAA,MACb,aAAa,iBAAiB,sBAAsB,cAAc,CAAC;AAAA,MACnE,eAAe,sBAAsB,gBAAgB;AAAA,MACrD,kBAAkB,sBAAsB,mBAAmB;AAAA,IAC7D,CAAC;AACD,WAAO;AAAA,EACT;AACA,QAAM,sBAAsB,CAAC,SAA0B;AACrD,QAAI;AACF,YAAM,QAAQ,KAAK,CAAC;AACpB,UAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,KAAK,iBAAiB,YAAY;AACtF,kCAA0B,EAAE;AAAA,UAC1B;AAAA,UACA,OAAO,KAAK,CAAC,MAAM,WAAY,KAAK,CAAC,IAAuB;AAAA,QAC9D;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,eAAS,qCAAqC,OAAO,KAAK,CAAC,EAAE;AAAA,IAC/D;AAAA,EACF;AACA,QAAM,gBAAgB,SAAS;AAC/B,WAAS,QAAQ,YAAmC,MAA0B;AAC5E,wBAAoB,IAAI;AACxB,WAAO,cAAc,MAAM,MAAM,IAAI;AAAA,EACvC;AACA,QAAM,cAAc,SAAS;AAC7B,WAAS,MAAM,YAAmC,MAAiC;AACjF,wBAAoB,IAAI;AACxB,WAAO,YAAY,MAAM,MAAM,IAAI;AAAA,EACrC;AAEA,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,QAAI,YAAY;AAChB,UAAM,WAAW,CAAC,qBAAoC;AACpD,UAAI,WAAW;AACb;AAAA,MACF;AACA,kBAAY;AACZ,YAAM,oBAAoB,YAAY,IAAI;AAC1C,YAAM,UAAU,0BAA0B;AAC1C,UAAI,kBAAkB;AACpB,gBAAQ,aAAa;AAAA,MACvB;AACA,cAAQ;AAAA,QACN,MAAM,QAAQ;AAAA,QACd,MAAM,QAAQ;AAAA,QACd;AAAA,QACA;AAAA,QACA,aAAa;AAAA,UACX,MAAM,oBAAoB;AAAA,UAC1B,MAAM,oBAAoB;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AACA,aAAS,GAAG,UAAU,MAAM,SAAS,IAAI,CAAC;AAC1C,aAAS,GAAG,SAAS,MAAM,SAAS,KAAK,CAAC;AAAA,EAC5C,CAAC;AACH;AAIO,SAAS,yBAAyB,SAAgC;AACvE,QAAM,SAAU,QAAQ,QAA6C;AACrE,MACE,CAAC,UACD,OAAQ,OAA4B,OAAO,cAC3C,oBAAoB,IAAI,MAAgB,GACxC;AACA;AAAA,EACF;AACA,sBAAoB,IAAI,MAAgB;AACxC,EAAC,OAAiE,GAAG,SAAS,MAAM;AAClF,mBAAe,EAAE,MAAM,CAAC,UAAmB;AACzC,eAAS,6CAA6C,OAAO,KAAK,CAAC,EAAE;AAAA,IACvE,CAAC;AAAA,EACH,CAAC;AACH;AAIA,SAAS,mBAAmB,SAA0B,oBAAuC;AAC3F,QAAM,eAAe,QAAQ;AAC7B,EAAC,QAA8B,OAAO,SAEpC,UACG,MACM;AACT,QAAI;AACF,UAAI,UAAU,QAAQ;AACpB,cAAM,QAAQ,KAAK,CAAC;AACpB,YAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,KAAK,iBAAiB,YAAY;AACtF,6BAAmB,SAAS,KAAK;AAAA,QACnC;AAAA,MACF,WAAW,UAAU,OAAO;AAC1B,2BAAmB,aAAa;AAAA,MAClC;AAAA,IACF,SAAS,OAAO;AACd,eAAS,yCAAyC,OAAO,KAAK,CAAC,EAAE;AAAA,IACnE;AACA,WAAO,aAAa,KAAK,MAAM,OAAO,GAAG,IAAI;AAAA,EAC/C;AACF;AAEA,SAAS,iBAAiB,OAAmE;AAC3F,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,CAAC;AAAA,EAChB;AACA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var requestObservationWeb_exports = {};
|
|
20
|
+
__export(requestObservationWeb_exports, {
|
|
21
|
+
captureWebRequestBody: () => captureWebRequestBody,
|
|
22
|
+
captureWebResponse: () => captureWebResponse,
|
|
23
|
+
isWebSocketUpgrade: () => isWebSocketUpgrade,
|
|
24
|
+
startWebRequestObservation: () => startWebRequestObservation
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(requestObservationWeb_exports);
|
|
27
|
+
var import_api = require("@opentelemetry/api");
|
|
28
|
+
var import_bodyCapture = require('./bodyCapture.cjs');
|
|
29
|
+
var import_config = require('./config.cjs');
|
|
30
|
+
var import_requestObservation = require('./requestObservation.cjs');
|
|
31
|
+
const READ_TIMEOUT_MILLIS = 5e3;
|
|
32
|
+
const WEB_HEADERS_GETTER = {
|
|
33
|
+
get: (carrier, key) => carrier.get(key) ?? void 0,
|
|
34
|
+
keys: (carrier) => [...carrier.keys()]
|
|
35
|
+
};
|
|
36
|
+
function isWebSocketUpgrade(request) {
|
|
37
|
+
return request.headers.get("upgrade")?.toLowerCase() === "websocket";
|
|
38
|
+
}
|
|
39
|
+
function startWebRequestObservation(options) {
|
|
40
|
+
const { request } = options;
|
|
41
|
+
const startTimeMillis = performance.now();
|
|
42
|
+
const method = request.method.toUpperCase();
|
|
43
|
+
const requestBodyCapture = new import_bodyCapture.BodyCapture({
|
|
44
|
+
captureBody: (0, import_config.getConfig)().captureRequestBody,
|
|
45
|
+
contentType: request.headers.get("content-type"),
|
|
46
|
+
contentLength: request.headers.get("content-length"),
|
|
47
|
+
transferEncoding: request.headers.get("transfer-encoding")
|
|
48
|
+
});
|
|
49
|
+
const attributeInput = {
|
|
50
|
+
method,
|
|
51
|
+
clientAddress: options.clientAddress,
|
|
52
|
+
userAgent: request.headers.get("user-agent") ?? void 0,
|
|
53
|
+
requestBodySize: requestBodyCapture.size
|
|
54
|
+
};
|
|
55
|
+
let startAttributes = (0, import_requestObservation.resolveHttpRequestStartAttributes)(attributeInput);
|
|
56
|
+
try {
|
|
57
|
+
const url = new URL(request.url);
|
|
58
|
+
startAttributes = (0, import_requestObservation.resolveHttpRequestStartAttributes)({
|
|
59
|
+
...attributeInput,
|
|
60
|
+
path: url.pathname,
|
|
61
|
+
query: url.search.slice(1) || void 0,
|
|
62
|
+
scheme: url.protocol.replace(/:$/, ""),
|
|
63
|
+
serverAddress: url.hostname,
|
|
64
|
+
fullUrl: request.url
|
|
65
|
+
});
|
|
66
|
+
} catch {
|
|
67
|
+
}
|
|
68
|
+
const { requestRecord, requestContext, spanHandle, rpcMetadata } = (0, import_requestObservation.startRequestObservation)({
|
|
69
|
+
activeContext: import_api.context.active(),
|
|
70
|
+
extractedContext: import_api.propagation.extract(import_api.ROOT_CONTEXT, request.headers, WEB_HEADERS_GETTER),
|
|
71
|
+
tracerName: options.tracerName,
|
|
72
|
+
method,
|
|
73
|
+
startAttributes,
|
|
74
|
+
requestBodyCapture
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
observation: {
|
|
78
|
+
requestRecord,
|
|
79
|
+
spanHandle,
|
|
80
|
+
rpcMetadata,
|
|
81
|
+
requestBodyCapture,
|
|
82
|
+
requestHeaders: request.headers,
|
|
83
|
+
startTimeMillis,
|
|
84
|
+
method
|
|
85
|
+
},
|
|
86
|
+
requestContext
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function captureWebRequestBody(request, bodyCapture, readTimeoutMillis = READ_TIMEOUT_MILLIS) {
|
|
90
|
+
if (!request.body || !bodyCapture.isBuffering) {
|
|
91
|
+
return Promise.resolve();
|
|
92
|
+
}
|
|
93
|
+
let reader;
|
|
94
|
+
try {
|
|
95
|
+
reader = request.clone().body?.getReader();
|
|
96
|
+
} catch {
|
|
97
|
+
return Promise.resolve();
|
|
98
|
+
}
|
|
99
|
+
if (!reader) {
|
|
100
|
+
return Promise.resolve();
|
|
101
|
+
}
|
|
102
|
+
let isStopped = false;
|
|
103
|
+
const readPromise = (async () => {
|
|
104
|
+
try {
|
|
105
|
+
while (true) {
|
|
106
|
+
const { done, value } = await reader.read();
|
|
107
|
+
if (isStopped) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (done) {
|
|
111
|
+
bodyCapture.markComplete();
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
bodyCapture.addChunk(value);
|
|
115
|
+
if (!bodyCapture.isBuffering) {
|
|
116
|
+
cancelReader(reader);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
} catch {
|
|
121
|
+
}
|
|
122
|
+
})();
|
|
123
|
+
let readTimeout;
|
|
124
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
125
|
+
readTimeout = setTimeout(() => {
|
|
126
|
+
isStopped = true;
|
|
127
|
+
bodyCapture.stopBuffering();
|
|
128
|
+
cancelReader(reader);
|
|
129
|
+
resolve();
|
|
130
|
+
}, readTimeoutMillis);
|
|
131
|
+
readTimeout.unref();
|
|
132
|
+
});
|
|
133
|
+
return Promise.race([readPromise, timeoutPromise]).finally(() => clearTimeout(readTimeout));
|
|
134
|
+
}
|
|
135
|
+
function captureWebResponse(response, shouldCaptureBody, readTimeoutMillis = READ_TIMEOUT_MILLIS) {
|
|
136
|
+
const bodyCapture = new import_bodyCapture.BodyCapture({
|
|
137
|
+
captureBody: shouldCaptureBody,
|
|
138
|
+
contentType: response.headers.get("content-type"),
|
|
139
|
+
contentLength: response.headers.get("content-length"),
|
|
140
|
+
transferEncoding: response.headers.get("transfer-encoding")
|
|
141
|
+
});
|
|
142
|
+
if (!response.body) {
|
|
143
|
+
bodyCapture.markComplete();
|
|
144
|
+
return {
|
|
145
|
+
response,
|
|
146
|
+
completion: Promise.resolve({
|
|
147
|
+
body: bodyCapture.body,
|
|
148
|
+
size: bodyCapture.size,
|
|
149
|
+
completedAtMillis: performance.now()
|
|
150
|
+
})
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
let readStarted = false;
|
|
154
|
+
const { readable, writable } = new TransformStream({
|
|
155
|
+
transform: (chunk, controller) => {
|
|
156
|
+
readStarted = true;
|
|
157
|
+
bodyCapture.addChunk(chunk);
|
|
158
|
+
controller.enqueue(chunk);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
const pipePromise = response.body.pipeTo(writable).then(
|
|
162
|
+
() => {
|
|
163
|
+
const completedAtMillis = performance.now();
|
|
164
|
+
bodyCapture.markComplete();
|
|
165
|
+
return { body: bodyCapture.body, size: bodyCapture.size, completedAtMillis };
|
|
166
|
+
},
|
|
167
|
+
() => ({ completedAtMillis: performance.now() })
|
|
168
|
+
);
|
|
169
|
+
let readTimeout;
|
|
170
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
171
|
+
readTimeout = setTimeout(() => {
|
|
172
|
+
if (!readStarted) {
|
|
173
|
+
resolve({ completedAtMillis: performance.now() });
|
|
174
|
+
}
|
|
175
|
+
}, readTimeoutMillis);
|
|
176
|
+
readTimeout.unref();
|
|
177
|
+
});
|
|
178
|
+
const capturedResponse = new Response(readable, {
|
|
179
|
+
status: response.status,
|
|
180
|
+
statusText: response.statusText,
|
|
181
|
+
headers: response.headers
|
|
182
|
+
});
|
|
183
|
+
const completion = Promise.race([pipePromise, timeoutPromise]).finally(
|
|
184
|
+
() => clearTimeout(readTimeout)
|
|
185
|
+
);
|
|
186
|
+
return { response: capturedResponse, completion };
|
|
187
|
+
}
|
|
188
|
+
function cancelReader(reader) {
|
|
189
|
+
try {
|
|
190
|
+
reader.cancel().catch(() => {
|
|
191
|
+
});
|
|
192
|
+
} catch {
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
196
|
+
0 && (module.exports = {
|
|
197
|
+
captureWebRequestBody,
|
|
198
|
+
captureWebResponse,
|
|
199
|
+
isWebSocketUpgrade,
|
|
200
|
+
startWebRequestObservation
|
|
201
|
+
});
|
|
202
|
+
//# sourceMappingURL=requestObservationWeb.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/requestObservationWeb.ts"],"sourcesContent":["import {\n type Context,\n context,\n propagation,\n ROOT_CONTEXT,\n type TextMapGetter,\n} from \"@opentelemetry/api\";\nimport { BodyCapture, type CapturedBody } from \"./bodyCapture.js\";\nimport { getConfig } from \"./config.js\";\nimport {\n type RequestObservation,\n resolveHttpRequestStartAttributes,\n startRequestObservation,\n} from \"./requestObservation.js\";\n\nconst READ_TIMEOUT_MILLIS = 5_000;\n\nconst WEB_HEADERS_GETTER: TextMapGetter<Headers> = {\n get: (carrier, key) => carrier.get(key) ?? undefined,\n keys: (carrier) => [...carrier.keys()],\n};\n\nexport interface StartWebRequestObservationOptions {\n request: Request;\n tracerName: string;\n clientAddress?: string;\n}\n\nexport function isWebSocketUpgrade(request: Request): boolean {\n return request.headers.get(\"upgrade\")?.toLowerCase() === \"websocket\";\n}\n\nexport interface WebRequestObservation extends RequestObservation {\n requestBodyCapture: BodyCapture;\n requestHeaders: Headers;\n}\n\nexport interface StartedWebRequestObservation {\n observation: WebRequestObservation;\n requestContext: Context;\n}\n\nexport function startWebRequestObservation(\n options: StartWebRequestObservationOptions,\n): StartedWebRequestObservation {\n const { request } = options;\n const startTimeMillis = performance.now();\n const method = request.method.toUpperCase();\n const requestBodyCapture = new BodyCapture({\n captureBody: getConfig().captureRequestBody,\n contentType: request.headers.get(\"content-type\"),\n contentLength: request.headers.get(\"content-length\"),\n transferEncoding: request.headers.get(\"transfer-encoding\"),\n });\n const attributeInput = {\n method,\n clientAddress: options.clientAddress,\n userAgent: request.headers.get(\"user-agent\") ?? undefined,\n requestBodySize: requestBodyCapture.size,\n };\n let startAttributes = resolveHttpRequestStartAttributes(attributeInput);\n try {\n const url = new URL(request.url);\n startAttributes = resolveHttpRequestStartAttributes({\n ...attributeInput,\n path: url.pathname,\n query: url.search.slice(1) || undefined,\n scheme: url.protocol.replace(/:$/, \"\"),\n serverAddress: url.hostname,\n fullUrl: request.url,\n });\n } catch {\n // An unparseable request URL leaves only attributes from other request metadata.\n }\n const { requestRecord, requestContext, spanHandle, rpcMetadata } = startRequestObservation({\n activeContext: context.active(),\n extractedContext: propagation.extract(ROOT_CONTEXT, request.headers, WEB_HEADERS_GETTER),\n tracerName: options.tracerName,\n method,\n startAttributes,\n requestBodyCapture,\n });\n return {\n observation: {\n requestRecord,\n spanHandle,\n rpcMetadata,\n requestBodyCapture,\n requestHeaders: request.headers,\n startTimeMillis,\n method,\n },\n requestContext,\n };\n}\n\nexport function captureWebRequestBody(\n request: Request,\n bodyCapture: BodyCapture,\n readTimeoutMillis: number = READ_TIMEOUT_MILLIS,\n): Promise<void> {\n if (!request.body || !bodyCapture.isBuffering) {\n return Promise.resolve();\n }\n let reader: ReadableStreamDefaultReader<Uint8Array> | undefined;\n try {\n reader = request.clone().body?.getReader();\n } catch {\n return Promise.resolve();\n }\n if (!reader) {\n return Promise.resolve();\n }\n let isStopped = false;\n const readPromise = (async () => {\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (isStopped) {\n return;\n }\n if (done) {\n bodyCapture.markComplete();\n return;\n }\n bodyCapture.addChunk(value);\n if (!bodyCapture.isBuffering) {\n cancelReader(reader);\n return;\n }\n }\n } catch {\n // A partial body is intentionally unavailable when the clone cannot be read.\n }\n })();\n let readTimeout: NodeJS.Timeout | undefined;\n const timeoutPromise = new Promise<void>((resolve) => {\n readTimeout = setTimeout(() => {\n isStopped = true;\n bodyCapture.stopBuffering();\n cancelReader(reader);\n resolve();\n }, readTimeoutMillis);\n readTimeout.unref();\n });\n return Promise.race([readPromise, timeoutPromise]).finally(() => clearTimeout(readTimeout));\n}\n\nexport interface WebResponseCompletion extends CapturedBody {\n completedAtMillis: number;\n}\n\nexport interface CapturedWebResponse {\n response: Response;\n completion: Promise<WebResponseCompletion>;\n}\n\n// The response is teed so capture does not consume or delay the application's\n// copy. Observation ends on completion, stream failure, or read timeout.\nexport function captureWebResponse(\n response: Response,\n shouldCaptureBody: boolean,\n readTimeoutMillis: number = READ_TIMEOUT_MILLIS,\n): CapturedWebResponse {\n const bodyCapture = new BodyCapture({\n captureBody: shouldCaptureBody,\n contentType: response.headers.get(\"content-type\"),\n contentLength: response.headers.get(\"content-length\"),\n transferEncoding: response.headers.get(\"transfer-encoding\"),\n });\n if (!response.body) {\n bodyCapture.markComplete();\n return {\n response,\n completion: Promise.resolve({\n body: bodyCapture.body,\n size: bodyCapture.size,\n completedAtMillis: performance.now(),\n }),\n };\n }\n let readStarted = false;\n const { readable, writable } = new TransformStream<Uint8Array, Uint8Array>({\n transform: (chunk, controller) => {\n readStarted = true;\n bodyCapture.addChunk(chunk);\n controller.enqueue(chunk);\n },\n });\n const pipePromise = response.body.pipeTo(writable).then(\n () => {\n const completedAtMillis = performance.now();\n bodyCapture.markComplete();\n return { body: bodyCapture.body, size: bodyCapture.size, completedAtMillis };\n },\n () => ({ completedAtMillis: performance.now() }),\n );\n let readTimeout: NodeJS.Timeout | undefined;\n const timeoutPromise = new Promise<WebResponseCompletion>((resolve) => {\n readTimeout = setTimeout(() => {\n if (!readStarted) {\n resolve({ completedAtMillis: performance.now() });\n }\n }, readTimeoutMillis);\n readTimeout.unref();\n });\n const capturedResponse = new Response(readable, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n const completion = Promise.race([pipePromise, timeoutPromise]).finally(() =>\n clearTimeout(readTimeout),\n );\n return { response: capturedResponse, completion };\n}\n\nfunction cancelReader(reader: ReadableStreamDefaultReader<Uint8Array>): void {\n try {\n reader.cancel().catch(() => {});\n } catch {\n // Cancellation is best-effort after capture has already stopped.\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Context } from '@opentelemetry/api';
|
|
2
|
+
import { CapturedBody, BodyCapture } from './bodyCapture.cjs';
|
|
3
|
+
import { RequestObservation } from './requestObservation.cjs';
|
|
4
|
+
import '@opentelemetry/core';
|
|
5
|
+
import './context.cjs';
|
|
6
|
+
|
|
7
|
+
interface StartWebRequestObservationOptions {
|
|
8
|
+
request: Request;
|
|
9
|
+
tracerName: string;
|
|
10
|
+
clientAddress?: string;
|
|
11
|
+
}
|
|
12
|
+
declare function isWebSocketUpgrade(request: Request): boolean;
|
|
13
|
+
interface WebRequestObservation extends RequestObservation {
|
|
14
|
+
requestBodyCapture: BodyCapture;
|
|
15
|
+
requestHeaders: Headers;
|
|
16
|
+
}
|
|
17
|
+
interface StartedWebRequestObservation {
|
|
18
|
+
observation: WebRequestObservation;
|
|
19
|
+
requestContext: Context;
|
|
20
|
+
}
|
|
21
|
+
declare function startWebRequestObservation(options: StartWebRequestObservationOptions): StartedWebRequestObservation;
|
|
22
|
+
declare function captureWebRequestBody(request: Request, bodyCapture: BodyCapture, readTimeoutMillis?: number): Promise<void>;
|
|
23
|
+
interface WebResponseCompletion extends CapturedBody {
|
|
24
|
+
completedAtMillis: number;
|
|
25
|
+
}
|
|
26
|
+
interface CapturedWebResponse {
|
|
27
|
+
response: Response;
|
|
28
|
+
completion: Promise<WebResponseCompletion>;
|
|
29
|
+
}
|
|
30
|
+
declare function captureWebResponse(response: Response, shouldCaptureBody: boolean, readTimeoutMillis?: number): CapturedWebResponse;
|
|
31
|
+
|
|
32
|
+
export { type CapturedWebResponse, type StartWebRequestObservationOptions, type StartedWebRequestObservation, type WebRequestObservation, type WebResponseCompletion, captureWebRequestBody, captureWebResponse, isWebSocketUpgrade, startWebRequestObservation };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Context } from '@opentelemetry/api';
|
|
2
|
+
import { CapturedBody, BodyCapture } from './bodyCapture.js';
|
|
3
|
+
import { RequestObservation } from './requestObservation.js';
|
|
4
|
+
import '@opentelemetry/core';
|
|
5
|
+
import './context.js';
|
|
6
|
+
|
|
7
|
+
interface StartWebRequestObservationOptions {
|
|
8
|
+
request: Request;
|
|
9
|
+
tracerName: string;
|
|
10
|
+
clientAddress?: string;
|
|
11
|
+
}
|
|
12
|
+
declare function isWebSocketUpgrade(request: Request): boolean;
|
|
13
|
+
interface WebRequestObservation extends RequestObservation {
|
|
14
|
+
requestBodyCapture: BodyCapture;
|
|
15
|
+
requestHeaders: Headers;
|
|
16
|
+
}
|
|
17
|
+
interface StartedWebRequestObservation {
|
|
18
|
+
observation: WebRequestObservation;
|
|
19
|
+
requestContext: Context;
|
|
20
|
+
}
|
|
21
|
+
declare function startWebRequestObservation(options: StartWebRequestObservationOptions): StartedWebRequestObservation;
|
|
22
|
+
declare function captureWebRequestBody(request: Request, bodyCapture: BodyCapture, readTimeoutMillis?: number): Promise<void>;
|
|
23
|
+
interface WebResponseCompletion extends CapturedBody {
|
|
24
|
+
completedAtMillis: number;
|
|
25
|
+
}
|
|
26
|
+
interface CapturedWebResponse {
|
|
27
|
+
response: Response;
|
|
28
|
+
completion: Promise<WebResponseCompletion>;
|
|
29
|
+
}
|
|
30
|
+
declare function captureWebResponse(response: Response, shouldCaptureBody: boolean, readTimeoutMillis?: number): CapturedWebResponse;
|
|
31
|
+
|
|
32
|
+
export { type CapturedWebResponse, type StartWebRequestObservationOptions, type StartedWebRequestObservation, type WebRequestObservation, type WebResponseCompletion, captureWebRequestBody, captureWebResponse, isWebSocketUpgrade, startWebRequestObservation };
|