@sentry/node 7.104.0 → 8.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/LICENSE +1 -1
- package/README.md +114 -38
- package/cjs/cron/index.js +15 -0
- package/cjs/cron/index.js.map +1 -0
- package/cjs/index.js +79 -98
- package/cjs/index.js.map +1 -1
- package/cjs/integrations/anr/index.js +4 -30
- package/cjs/integrations/anr/index.js.map +1 -1
- package/cjs/integrations/anr/worker-script.js +2 -2
- package/cjs/integrations/console.js +2 -13
- package/cjs/integrations/console.js.map +1 -1
- package/cjs/integrations/context.js +2 -16
- package/cjs/integrations/context.js.map +1 -1
- package/cjs/integrations/contextlines.js +6 -23
- package/cjs/integrations/contextlines.js.map +1 -1
- package/cjs/integrations/http.js +103 -354
- package/cjs/integrations/http.js.map +1 -1
- package/cjs/integrations/local-variables/index.js +0 -10
- package/cjs/integrations/local-variables/index.js.map +1 -1
- package/cjs/integrations/local-variables/local-variables-sync.js +29 -24
- package/cjs/integrations/local-variables/local-variables-sync.js.map +1 -1
- package/cjs/integrations/modules.js +19 -30
- package/cjs/integrations/modules.js.map +1 -1
- package/cjs/integrations/node-fetch.js +82 -0
- package/cjs/integrations/node-fetch.js.map +1 -0
- package/cjs/integrations/onuncaughtexception.js +15 -30
- package/cjs/integrations/onuncaughtexception.js.map +1 -1
- package/cjs/integrations/onunhandledrejection.js +3 -17
- package/cjs/integrations/onunhandledrejection.js.map +1 -1
- package/cjs/integrations/spotlight.js +4 -22
- package/cjs/integrations/spotlight.js.map +1 -1
- package/cjs/integrations/tracing/express.js +103 -0
- package/cjs/integrations/tracing/express.js.map +1 -0
- package/cjs/integrations/tracing/fastify.js +33 -0
- package/cjs/integrations/tracing/fastify.js.map +1 -0
- package/cjs/integrations/tracing/graphql.js +34 -0
- package/cjs/integrations/tracing/graphql.js.map +1 -0
- package/cjs/integrations/tracing/hapi/index.js +81 -0
- package/cjs/integrations/tracing/hapi/index.js.map +1 -0
- package/cjs/integrations/tracing/index.js +37 -0
- package/cjs/integrations/tracing/index.js.map +1 -0
- package/cjs/integrations/tracing/koa.js +21 -0
- package/cjs/integrations/tracing/koa.js.map +1 -0
- package/cjs/integrations/tracing/mongo.js +33 -0
- package/cjs/integrations/tracing/mongo.js.map +1 -0
- package/cjs/integrations/tracing/mongoose.js +33 -0
- package/cjs/integrations/tracing/mongoose.js.map +1 -0
- package/cjs/integrations/tracing/mysql.js +26 -0
- package/cjs/integrations/tracing/mysql.js.map +1 -0
- package/cjs/integrations/tracing/mysql2.js +33 -0
- package/cjs/integrations/tracing/mysql2.js.map +1 -0
- package/cjs/integrations/tracing/nest.js +26 -0
- package/cjs/integrations/tracing/nest.js.map +1 -0
- package/cjs/integrations/tracing/postgres.js +34 -0
- package/cjs/integrations/tracing/postgres.js.map +1 -0
- package/cjs/integrations/tracing/prisma.js +33 -0
- package/cjs/integrations/tracing/prisma.js.map +1 -0
- package/cjs/nodeVersion.js +5 -1
- package/cjs/nodeVersion.js.map +1 -1
- package/cjs/otel/contextManager.js +16 -0
- package/cjs/otel/contextManager.js.map +1 -0
- package/cjs/proxy/index.js +1 -2
- package/cjs/proxy/index.js.map +1 -1
- package/cjs/sdk/api.js +74 -0
- package/cjs/sdk/api.js.map +1 -0
- package/cjs/sdk/client.js +57 -0
- package/cjs/sdk/client.js.map +1 -0
- package/cjs/sdk/hub.js +104 -0
- package/cjs/sdk/hub.js.map +1 -0
- package/cjs/sdk/init.js +224 -0
- package/cjs/sdk/init.js.map +1 -0
- package/cjs/sdk/initOtel.js +70 -0
- package/cjs/sdk/initOtel.js.map +1 -0
- package/cjs/sdk/scope.js +18 -0
- package/cjs/sdk/scope.js.map +1 -0
- package/cjs/transports/http.js +2 -3
- package/cjs/transports/http.js.map +1 -1
- package/cjs/utils/addOriginToSpan.js +11 -0
- package/cjs/utils/addOriginToSpan.js.map +1 -0
- package/cjs/{integrations/utils → utils}/errorhandling.js +2 -1
- package/cjs/utils/errorhandling.js.map +1 -0
- package/cjs/utils/getRequestUrl.js +18 -0
- package/cjs/utils/getRequestUrl.js.map +1 -0
- package/cjs/utils/module.js.map +1 -0
- package/esm/cron/index.js +13 -0
- package/esm/cron/index.js.map +1 -0
- package/esm/index.js +28 -48
- package/esm/index.js.map +1 -1
- package/esm/integrations/anr/index.js +7 -32
- package/esm/integrations/anr/index.js.map +1 -1
- package/esm/integrations/anr/worker-script.js +2 -2
- package/esm/integrations/console.js +4 -14
- package/esm/integrations/console.js.map +1 -1
- package/esm/integrations/context.js +4 -17
- package/esm/integrations/context.js.map +1 -1
- package/esm/integrations/contextlines.js +8 -25
- package/esm/integrations/contextlines.js.map +1 -1
- package/esm/integrations/http.js +105 -353
- package/esm/integrations/http.js.map +1 -1
- package/esm/integrations/local-variables/index.js +2 -11
- package/esm/integrations/local-variables/index.js.map +1 -1
- package/esm/integrations/local-variables/local-variables-sync.js +31 -25
- package/esm/integrations/local-variables/local-variables-sync.js.map +1 -1
- package/esm/integrations/modules.js +21 -31
- package/esm/integrations/modules.js.map +1 -1
- package/esm/integrations/node-fetch.js +80 -0
- package/esm/integrations/node-fetch.js.map +1 -0
- package/esm/integrations/onuncaughtexception.js +17 -31
- package/esm/integrations/onuncaughtexception.js.map +1 -1
- package/esm/integrations/onunhandledrejection.js +5 -18
- package/esm/integrations/onunhandledrejection.js.map +1 -1
- package/esm/integrations/spotlight.js +3 -20
- package/esm/integrations/spotlight.js.map +1 -1
- package/esm/integrations/tracing/express.js +96 -0
- package/esm/integrations/tracing/express.js.map +1 -0
- package/esm/integrations/tracing/fastify.js +31 -0
- package/esm/integrations/tracing/fastify.js.map +1 -0
- package/esm/integrations/tracing/graphql.js +32 -0
- package/esm/integrations/tracing/graphql.js.map +1 -0
- package/esm/integrations/tracing/hapi/index.js +77 -0
- package/esm/integrations/tracing/hapi/index.js.map +1 -0
- package/esm/integrations/tracing/index.js +35 -0
- package/esm/integrations/tracing/index.js.map +1 -0
- package/esm/integrations/tracing/koa.js +19 -0
- package/esm/integrations/tracing/koa.js.map +1 -0
- package/esm/integrations/tracing/mongo.js +31 -0
- package/esm/integrations/tracing/mongo.js.map +1 -0
- package/esm/integrations/tracing/mongoose.js +31 -0
- package/esm/integrations/tracing/mongoose.js.map +1 -0
- package/esm/integrations/tracing/mysql.js +24 -0
- package/esm/integrations/tracing/mysql.js.map +1 -0
- package/esm/integrations/tracing/mysql2.js +31 -0
- package/esm/integrations/tracing/mysql2.js.map +1 -0
- package/esm/integrations/tracing/nest.js +24 -0
- package/esm/integrations/tracing/nest.js.map +1 -0
- package/esm/integrations/tracing/postgres.js +32 -0
- package/esm/integrations/tracing/postgres.js.map +1 -0
- package/esm/integrations/tracing/prisma.js +31 -0
- package/esm/integrations/tracing/prisma.js.map +1 -0
- package/esm/nodeVersion.js +5 -2
- package/esm/nodeVersion.js.map +1 -1
- package/esm/otel/contextManager.js +14 -0
- package/esm/otel/contextManager.js.map +1 -0
- package/esm/proxy/index.js +0 -1
- package/esm/proxy/index.js.map +1 -1
- package/esm/sdk/api.js +69 -0
- package/esm/sdk/api.js.map +1 -0
- package/esm/sdk/client.js +52 -0
- package/esm/sdk/client.js.map +1 -0
- package/esm/sdk/hub.js +102 -0
- package/esm/sdk/hub.js.map +1 -0
- package/esm/sdk/init.js +221 -0
- package/esm/sdk/init.js.map +1 -0
- package/esm/sdk/initOtel.js +67 -0
- package/esm/sdk/initOtel.js.map +1 -0
- package/esm/sdk/scope.js +16 -0
- package/esm/sdk/scope.js.map +1 -0
- package/esm/transports/http.js +0 -1
- package/esm/transports/http.js.map +1 -1
- package/esm/utils/addOriginToSpan.js +9 -0
- package/esm/utils/addOriginToSpan.js.map +1 -0
- package/esm/{integrations/utils → utils}/errorhandling.js +2 -1
- package/esm/utils/errorhandling.js.map +1 -0
- package/esm/utils/getRequestUrl.js +16 -0
- package/esm/utils/getRequestUrl.js.map +1 -0
- package/esm/utils/module.js.map +1 -0
- package/package.json +31 -23
- package/types/cron/index.d.ts +10 -0
- package/types/cron/index.d.ts.map +1 -0
- package/types/index.d.ts +30 -142
- package/types/index.d.ts.map +1 -1
- package/types/integrations/anr/index.d.ts +0 -15
- package/types/integrations/anr/index.d.ts.map +1 -1
- package/types/integrations/console.d.ts +2 -8
- package/types/integrations/console.d.ts.map +1 -1
- package/types/integrations/context.d.ts +3 -18
- package/types/integrations/context.d.ts.map +1 -1
- package/types/integrations/contextlines.d.ts +8 -10
- package/types/integrations/contextlines.d.ts.map +1 -1
- package/types/integrations/http.d.ts +8 -89
- package/types/integrations/http.d.ts.map +1 -1
- package/types/integrations/local-variables/index.d.ts +0 -11
- package/types/integrations/local-variables/index.d.ts.map +1 -1
- package/types/integrations/local-variables/local-variables-async.d.ts +1 -1
- package/types/integrations/local-variables/local-variables-async.d.ts.map +1 -1
- package/types/integrations/local-variables/local-variables-sync.d.ts +1 -1
- package/types/integrations/local-variables/local-variables-sync.d.ts.map +1 -1
- package/types/integrations/modules.d.ts +1 -7
- package/types/integrations/modules.d.ts.map +1 -1
- package/types/integrations/node-fetch.d.ts +15 -0
- package/types/integrations/node-fetch.d.ts.map +1 -0
- package/types/integrations/onuncaughtexception.d.ts +3 -12
- package/types/integrations/onuncaughtexception.d.ts.map +1 -1
- package/types/integrations/onunhandledrejection.d.ts +3 -10
- package/types/integrations/onunhandledrejection.d.ts.map +1 -1
- package/types/integrations/spotlight.d.ts +1 -10
- package/types/integrations/spotlight.d.ts.map +1 -1
- package/types/integrations/tracing/express.d.ts +37 -0
- package/types/integrations/tracing/express.d.ts.map +1 -0
- package/types/integrations/tracing/fastify.d.ts +7 -0
- package/types/integrations/tracing/fastify.d.ts.map +1 -0
- package/types/integrations/tracing/graphql.d.ts +7 -0
- package/types/integrations/tracing/graphql.d.ts.map +1 -0
- package/types/integrations/tracing/hapi/index.d.ts +18 -0
- package/types/integrations/tracing/hapi/index.d.ts.map +1 -0
- package/types/integrations/{hapi → tracing/hapi}/types.d.ts +1 -2
- package/types/integrations/tracing/hapi/types.d.ts.map +1 -0
- package/types/integrations/tracing/index.d.ts +6 -0
- package/types/integrations/tracing/index.d.ts.map +1 -0
- package/types/integrations/tracing/koa.d.ts +2 -0
- package/types/integrations/tracing/koa.d.ts.map +1 -0
- package/types/integrations/tracing/mongo.d.ts +7 -0
- package/types/integrations/tracing/mongo.d.ts.map +1 -0
- package/types/integrations/tracing/mongoose.d.ts +7 -0
- package/types/integrations/tracing/mongoose.d.ts.map +1 -0
- package/types/integrations/tracing/mysql.d.ts +7 -0
- package/types/integrations/tracing/mysql.d.ts.map +1 -0
- package/types/integrations/tracing/mysql2.d.ts +7 -0
- package/types/integrations/tracing/mysql2.d.ts.map +1 -0
- package/types/integrations/tracing/nest.d.ts +7 -0
- package/types/integrations/tracing/nest.d.ts.map +1 -0
- package/types/integrations/tracing/postgres.d.ts +7 -0
- package/types/integrations/tracing/postgres.d.ts.map +1 -0
- package/types/integrations/tracing/prisma.d.ts +11 -0
- package/types/integrations/tracing/prisma.d.ts.map +1 -0
- package/types/nodeVersion.d.ts +3 -3
- package/types/nodeVersion.d.ts.map +1 -1
- package/types/otel/contextManager.d.ts +10 -0
- package/types/otel/contextManager.d.ts.map +1 -0
- package/types/proxy/helpers.d.ts +0 -1
- package/types/proxy/helpers.d.ts.map +1 -1
- package/types/proxy/index.d.ts +0 -1
- package/types/proxy/index.d.ts.map +1 -1
- package/types/sdk/api.d.ts +18 -0
- package/types/sdk/api.d.ts.map +1 -0
- package/types/sdk/client.d.ts +17 -0
- package/types/sdk/client.d.ts.map +1 -0
- package/types/sdk/globals.d.ts +6 -0
- package/types/sdk/globals.d.ts.map +1 -0
- package/types/sdk/hub.d.ts +7 -0
- package/types/sdk/hub.d.ts.map +1 -0
- package/types/sdk/init.d.ts +9 -0
- package/types/sdk/init.d.ts.map +1 -0
- package/types/sdk/initOtel.d.ts +9 -0
- package/types/sdk/initOtel.d.ts.map +1 -0
- package/types/sdk/scope.d.ts +7 -0
- package/types/sdk/scope.d.ts.map +1 -0
- package/types/transports/http-module.d.ts +2 -5
- package/types/transports/http-module.d.ts.map +1 -1
- package/types/transports/http.d.ts.map +1 -1
- package/types/types.d.ts +18 -25
- package/types/types.d.ts.map +1 -1
- package/types/utils/addOriginToSpan.d.ts +5 -0
- package/types/utils/addOriginToSpan.d.ts.map +1 -0
- package/types/utils/errorhandling.d.ts.map +1 -0
- package/types/utils/getRequestUrl.d.ts +5 -0
- package/types/utils/getRequestUrl.d.ts.map +1 -0
- package/types/utils/module.d.ts.map +1 -0
- package/types/utils/prepareEvent.d.ts +17 -0
- package/types/utils/prepareEvent.d.ts.map +1 -0
- package/types-ts3.8/cron/index.d.ts +10 -0
- package/types-ts3.8/index.d.ts +30 -142
- package/types-ts3.8/integrations/anr/index.d.ts +0 -15
- package/types-ts3.8/integrations/console.d.ts +2 -8
- package/types-ts3.8/integrations/context.d.ts +3 -18
- package/types-ts3.8/integrations/contextlines.d.ts +8 -10
- package/types-ts3.8/integrations/http.d.ts +8 -89
- package/types-ts3.8/integrations/local-variables/index.d.ts +0 -11
- package/types-ts3.8/integrations/local-variables/local-variables-async.d.ts +1 -1
- package/types-ts3.8/integrations/local-variables/local-variables-sync.d.ts +1 -1
- package/types-ts3.8/integrations/modules.d.ts +1 -7
- package/types-ts3.8/integrations/node-fetch.d.ts +15 -0
- package/types-ts3.8/integrations/onuncaughtexception.d.ts +3 -12
- package/types-ts3.8/integrations/onunhandledrejection.d.ts +3 -10
- package/types-ts3.8/integrations/spotlight.d.ts +1 -10
- package/types-ts3.8/integrations/tracing/express.d.ts +37 -0
- package/types-ts3.8/integrations/tracing/fastify.d.ts +7 -0
- package/types-ts3.8/integrations/tracing/graphql.d.ts +7 -0
- package/types-ts3.8/integrations/tracing/hapi/index.d.ts +18 -0
- package/types-ts3.8/integrations/{hapi → tracing/hapi}/types.d.ts +1 -2
- package/types-ts3.8/integrations/tracing/index.d.ts +6 -0
- package/types-ts3.8/integrations/tracing/koa.d.ts +2 -0
- package/types-ts3.8/integrations/tracing/mongo.d.ts +7 -0
- package/types-ts3.8/integrations/tracing/mongoose.d.ts +7 -0
- package/types-ts3.8/integrations/tracing/mysql.d.ts +7 -0
- package/types-ts3.8/integrations/tracing/mysql2.d.ts +7 -0
- package/types-ts3.8/integrations/tracing/nest.d.ts +7 -0
- package/types-ts3.8/integrations/tracing/postgres.d.ts +7 -0
- package/types-ts3.8/integrations/tracing/prisma.d.ts +11 -0
- package/types-ts3.8/nodeVersion.d.ts +3 -3
- package/types-ts3.8/otel/contextManager.d.ts +10 -0
- package/types-ts3.8/proxy/helpers.d.ts +0 -1
- package/types-ts3.8/proxy/index.d.ts +0 -1
- package/types-ts3.8/sdk/api.d.ts +18 -0
- package/types-ts3.8/sdk/client.d.ts +17 -0
- package/types-ts3.8/sdk/globals.d.ts +6 -0
- package/types-ts3.8/sdk/hub.d.ts +7 -0
- package/types-ts3.8/sdk/init.d.ts +9 -0
- package/types-ts3.8/sdk/initOtel.d.ts +9 -0
- package/types-ts3.8/sdk/scope.d.ts +7 -0
- package/types-ts3.8/transports/http-module.d.ts +2 -4
- package/types-ts3.8/types.d.ts +18 -25
- package/types-ts3.8/utils/addOriginToSpan.d.ts +5 -0
- package/types-ts3.8/utils/getRequestUrl.d.ts +5 -0
- package/types-ts3.8/utils/prepareEvent.d.ts +17 -0
- package/cjs/async/domain.js +0 -61
- package/cjs/async/domain.js.map +0 -1
- package/cjs/async/hooks.js +0 -50
- package/cjs/async/hooks.js.map +0 -1
- package/cjs/async/index.js +0 -22
- package/cjs/async/index.js.map +0 -1
- package/cjs/client.js +0 -39
- package/cjs/client.js.map +0 -1
- package/cjs/handlers.js +0 -340
- package/cjs/handlers.js.map +0 -1
- package/cjs/integrations/anr/legacy.js +0 -29
- package/cjs/integrations/anr/legacy.js.map +0 -1
- package/cjs/integrations/hapi/index.js +0 -161
- package/cjs/integrations/hapi/index.js.map +0 -1
- package/cjs/integrations/index.js +0 -32
- package/cjs/integrations/index.js.map +0 -1
- package/cjs/integrations/undici/index.js +0 -307
- package/cjs/integrations/undici/index.js.map +0 -1
- package/cjs/integrations/utils/errorhandling.js.map +0 -1
- package/cjs/integrations/utils/http.js +0 -225
- package/cjs/integrations/utils/http.js.map +0 -1
- package/cjs/module.js.map +0 -1
- package/cjs/requestDataDeprecated.js +0 -45
- package/cjs/requestDataDeprecated.js.map +0 -1
- package/cjs/sdk.js +0 -284
- package/cjs/sdk.js.map +0 -1
- package/cjs/tracing/index.js +0 -29
- package/cjs/tracing/index.js.map +0 -1
- package/cjs/tracing/integrations.js +0 -14
- package/cjs/tracing/integrations.js.map +0 -1
- package/cjs/utils.js +0 -45
- package/cjs/utils.js.map +0 -1
- package/esm/async/domain.js +0 -56
- package/esm/async/domain.js.map +0 -1
- package/esm/async/hooks.js +0 -45
- package/esm/async/hooks.js.map +0 -1
- package/esm/async/index.js +0 -20
- package/esm/async/index.js.map +0 -1
- package/esm/client.js +0 -37
- package/esm/client.js.map +0 -1
- package/esm/handlers.js +0 -330
- package/esm/handlers.js.map +0 -1
- package/esm/integrations/anr/legacy.js +0 -27
- package/esm/integrations/anr/legacy.js.map +0 -1
- package/esm/integrations/hapi/index.js +0 -156
- package/esm/integrations/hapi/index.js.map +0 -1
- package/esm/integrations/index.js +0 -16
- package/esm/integrations/index.js.map +0 -1
- package/esm/integrations/undici/index.js +0 -301
- package/esm/integrations/undici/index.js.map +0 -1
- package/esm/integrations/utils/errorhandling.js.map +0 -1
- package/esm/integrations/utils/http.js +0 -216
- package/esm/integrations/utils/http.js.map +0 -1
- package/esm/module.js.map +0 -1
- package/esm/requestDataDeprecated.js +0 -42
- package/esm/requestDataDeprecated.js.map +0 -1
- package/esm/sdk.js +0 -274
- package/esm/sdk.js.map +0 -1
- package/esm/tracing/index.js +0 -27
- package/esm/tracing/index.js.map +0 -1
- package/esm/tracing/integrations.js +0 -2
- package/esm/tracing/integrations.js.map +0 -1
- package/esm/utils.js +0 -43
- package/esm/utils.js.map +0 -1
- package/types/async/domain.d.ts +0 -5
- package/types/async/domain.d.ts.map +0 -1
- package/types/async/hooks.d.ts +0 -5
- package/types/async/hooks.d.ts.map +0 -1
- package/types/async/index.d.ts +0 -8
- package/types/async/index.d.ts.map +0 -1
- package/types/client.d.ts +0 -16
- package/types/client.d.ts.map +0 -1
- package/types/handlers.d.ts +0 -57
- package/types/handlers.d.ts.map +0 -1
- package/types/integrations/anr/legacy.d.ts +0 -22
- package/types/integrations/anr/legacy.d.ts.map +0 -1
- package/types/integrations/hapi/index.d.ts +0 -22
- package/types/integrations/hapi/index.d.ts.map +0 -1
- package/types/integrations/hapi/types.d.ts.map +0 -1
- package/types/integrations/index.d.ts +0 -14
- package/types/integrations/index.d.ts.map +0 -1
- package/types/integrations/undici/index.d.ts +0 -58
- package/types/integrations/undici/index.d.ts.map +0 -1
- package/types/integrations/undici/types.d.ts +0 -224
- package/types/integrations/undici/types.d.ts.map +0 -1
- package/types/integrations/utils/errorhandling.d.ts.map +0 -1
- package/types/integrations/utils/http.d.ts +0 -70
- package/types/integrations/utils/http.d.ts.map +0 -1
- package/types/module.d.ts.map +0 -1
- package/types/requestDataDeprecated.d.ts +0 -45
- package/types/requestDataDeprecated.d.ts.map +0 -1
- package/types/sdk.d.ts +0 -74
- package/types/sdk.d.ts.map +0 -1
- package/types/tracing/index.d.ts +0 -6
- package/types/tracing/index.d.ts.map +0 -1
- package/types/tracing/integrations.d.ts +0 -2
- package/types/tracing/integrations.d.ts.map +0 -1
- package/types/utils.d.ts +0 -10
- package/types/utils.d.ts.map +0 -1
- package/types-ts3.8/async/domain.d.ts +0 -5
- package/types-ts3.8/async/hooks.d.ts +0 -5
- package/types-ts3.8/async/index.d.ts +0 -8
- package/types-ts3.8/client.d.ts +0 -16
- package/types-ts3.8/handlers.d.ts +0 -57
- package/types-ts3.8/integrations/anr/legacy.d.ts +0 -22
- package/types-ts3.8/integrations/hapi/index.d.ts +0 -22
- package/types-ts3.8/integrations/index.d.ts +0 -14
- package/types-ts3.8/integrations/undici/index.d.ts +0 -58
- package/types-ts3.8/integrations/undici/types.d.ts +0 -223
- package/types-ts3.8/integrations/utils/http.d.ts +0 -80
- package/types-ts3.8/requestDataDeprecated.d.ts +0 -45
- package/types-ts3.8/sdk.d.ts +0 -74
- package/types-ts3.8/tracing/index.d.ts +0 -6
- package/types-ts3.8/tracing/integrations.d.ts +0 -2
- package/types-ts3.8/utils.d.ts +0 -10
- /package/cjs/{module.js → utils/module.js} +0 -0
- /package/esm/{module.js → utils/module.js} +0 -0
- /package/types/{integrations/utils → utils}/errorhandling.d.ts +0 -0
- /package/types/{module.d.ts → utils/module.d.ts} +0 -0
- /package/types-ts3.8/{integrations/utils → utils}/errorhandling.d.ts +0 -0
- /package/types-ts3.8/{module.d.ts → utils/module.d.ts} +0 -0
package/esm/handlers.js
DELETED
|
@@ -1,330 +0,0 @@
|
|
|
1
|
-
import { _optionalChain } from '@sentry/utils';
|
|
2
|
-
import { hasTracingEnabled, continueTrace, startTransaction, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, getCurrentScope, setHttpStatus, getClient, flush, runWithAsyncContext, withScope, getActiveSpan, captureException } from '@sentry/core';
|
|
3
|
-
import { isString, extractPathForTransaction, extractRequestData, addRequestDataToTransaction, logger, normalize, isThenable, dropUndefinedKeys } from '@sentry/utils';
|
|
4
|
-
import { DEBUG_BUILD } from './debug-build.js';
|
|
5
|
-
import { isAutoSessionTrackingEnabled } from './sdk.js';
|
|
6
|
-
export { extractRequestData, parseRequest } from './requestDataDeprecated.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Express-compatible tracing handler.
|
|
10
|
-
* @see Exposed as `Handlers.tracingHandler`
|
|
11
|
-
*/
|
|
12
|
-
function tracingHandler()
|
|
13
|
-
|
|
14
|
-
{
|
|
15
|
-
return function sentryTracingMiddleware(
|
|
16
|
-
req,
|
|
17
|
-
res,
|
|
18
|
-
next,
|
|
19
|
-
) {
|
|
20
|
-
const options = _optionalChain([getClient, 'call', _ => _(), 'optionalAccess', _2 => _2.getOptions, 'call', _3 => _3()]);
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
!options ||
|
|
24
|
-
options.instrumenter !== 'sentry' ||
|
|
25
|
-
_optionalChain([req, 'access', _4 => _4.method, 'optionalAccess', _5 => _5.toUpperCase, 'call', _6 => _6()]) === 'OPTIONS' ||
|
|
26
|
-
_optionalChain([req, 'access', _7 => _7.method, 'optionalAccess', _8 => _8.toUpperCase, 'call', _9 => _9()]) === 'HEAD'
|
|
27
|
-
) {
|
|
28
|
-
return next();
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const sentryTrace = req.headers && isString(req.headers['sentry-trace']) ? req.headers['sentry-trace'] : undefined;
|
|
32
|
-
const baggage = _optionalChain([req, 'access', _10 => _10.headers, 'optionalAccess', _11 => _11.baggage]);
|
|
33
|
-
if (!hasTracingEnabled(options)) {
|
|
34
|
-
return next();
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const [name, source] = extractPathForTransaction(req, { path: true, method: true });
|
|
38
|
-
const transaction = continueTrace({ sentryTrace, baggage }, ctx =>
|
|
39
|
-
// TODO: Refactor this to use `startSpan()`
|
|
40
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
41
|
-
startTransaction(
|
|
42
|
-
{
|
|
43
|
-
name,
|
|
44
|
-
op: 'http.server',
|
|
45
|
-
origin: 'auto.http.node.tracingHandler',
|
|
46
|
-
...ctx,
|
|
47
|
-
data: {
|
|
48
|
-
[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,
|
|
49
|
-
},
|
|
50
|
-
metadata: {
|
|
51
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
52
|
-
...ctx.metadata,
|
|
53
|
-
// The request should already have been stored in `scope.sdkProcessingMetadata` (which will become
|
|
54
|
-
// `event.sdkProcessingMetadata` the same way the metadata here will) by `sentryRequestMiddleware`, but on the
|
|
55
|
-
// off chance someone is using `sentryTracingMiddleware` without `sentryRequestMiddleware`, it doesn't hurt to
|
|
56
|
-
// be sure
|
|
57
|
-
request: req,
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
// extra context passed to the tracesSampler
|
|
61
|
-
{ request: extractRequestData(req) },
|
|
62
|
-
),
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
// We put the transaction on the scope so users can attach children to it
|
|
66
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
67
|
-
getCurrentScope().setSpan(transaction);
|
|
68
|
-
|
|
69
|
-
// We also set __sentry_transaction on the response so people can grab the transaction there to add
|
|
70
|
-
// spans to it later.
|
|
71
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
72
|
-
(res ).__sentry_transaction = transaction;
|
|
73
|
-
|
|
74
|
-
res.once('finish', () => {
|
|
75
|
-
// Push `transaction.finish` to the next event loop so open spans have a chance to finish before the transaction
|
|
76
|
-
// closes
|
|
77
|
-
setImmediate(() => {
|
|
78
|
-
addRequestDataToTransaction(transaction, req);
|
|
79
|
-
setHttpStatus(transaction, res.statusCode);
|
|
80
|
-
transaction.end();
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
next();
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Backwards compatibility shim which can be removed in v8. Forces the given options to follow the
|
|
90
|
-
* `AddRequestDataToEventOptions` interface.
|
|
91
|
-
*
|
|
92
|
-
* TODO (v8): Get rid of this, and stop passing `requestDataOptionsFromExpressHandler` to `setSDKProcessingMetadata`.
|
|
93
|
-
*/
|
|
94
|
-
function convertReqHandlerOptsToAddReqDataOpts(
|
|
95
|
-
reqHandlerOptions = {},
|
|
96
|
-
) {
|
|
97
|
-
let addRequestDataOptions;
|
|
98
|
-
|
|
99
|
-
if ('include' in reqHandlerOptions) {
|
|
100
|
-
addRequestDataOptions = { include: reqHandlerOptions.include };
|
|
101
|
-
} else {
|
|
102
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
103
|
-
const { ip, request, transaction, user } = reqHandlerOptions ;
|
|
104
|
-
|
|
105
|
-
if (ip || request || transaction || user) {
|
|
106
|
-
addRequestDataOptions = { include: dropUndefinedKeys({ ip, request, transaction, user }) };
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return addRequestDataOptions;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Express compatible request handler.
|
|
115
|
-
* @see Exposed as `Handlers.requestHandler`
|
|
116
|
-
*/
|
|
117
|
-
function requestHandler(
|
|
118
|
-
options,
|
|
119
|
-
) {
|
|
120
|
-
// TODO (v8): Get rid of this
|
|
121
|
-
const requestDataOptions = convertReqHandlerOptsToAddReqDataOpts(options);
|
|
122
|
-
|
|
123
|
-
const client = getClient();
|
|
124
|
-
// Initialise an instance of SessionFlusher on the client when `autoSessionTracking` is enabled and the
|
|
125
|
-
// `requestHandler` middleware is used indicating that we are running in SessionAggregates mode
|
|
126
|
-
if (client && isAutoSessionTrackingEnabled(client)) {
|
|
127
|
-
client.initSessionFlusher();
|
|
128
|
-
|
|
129
|
-
// If Scope contains a Single mode Session, it is removed in favor of using Session Aggregates mode
|
|
130
|
-
const scope = getCurrentScope();
|
|
131
|
-
if (scope.getSession()) {
|
|
132
|
-
scope.setSession();
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
return function sentryRequestMiddleware(
|
|
137
|
-
req,
|
|
138
|
-
res,
|
|
139
|
-
next,
|
|
140
|
-
) {
|
|
141
|
-
if (options && options.flushTimeout && options.flushTimeout > 0) {
|
|
142
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
143
|
-
const _end = res.end;
|
|
144
|
-
res.end = function (chunk, encoding, cb) {
|
|
145
|
-
void flush(options.flushTimeout)
|
|
146
|
-
.then(() => {
|
|
147
|
-
_end.call(this, chunk, encoding, cb);
|
|
148
|
-
})
|
|
149
|
-
.then(null, e => {
|
|
150
|
-
DEBUG_BUILD && logger.error(e);
|
|
151
|
-
_end.call(this, chunk, encoding, cb);
|
|
152
|
-
});
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
runWithAsyncContext(() => {
|
|
156
|
-
const scope = getCurrentScope();
|
|
157
|
-
scope.setSDKProcessingMetadata({
|
|
158
|
-
request: req,
|
|
159
|
-
// TODO (v8): Stop passing this
|
|
160
|
-
requestDataOptionsFromExpressHandler: requestDataOptions,
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
const client = getClient();
|
|
164
|
-
if (isAutoSessionTrackingEnabled(client)) {
|
|
165
|
-
// Set `status` of `RequestSession` to Ok, at the beginning of the request
|
|
166
|
-
scope.setRequestSession({ status: 'ok' });
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
res.once('finish', () => {
|
|
170
|
-
const client = getClient();
|
|
171
|
-
if (isAutoSessionTrackingEnabled(client)) {
|
|
172
|
-
setImmediate(() => {
|
|
173
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
174
|
-
if (client && (client )._captureRequestSession) {
|
|
175
|
-
// Calling _captureRequestSession to capture request session at the end of the request by incrementing
|
|
176
|
-
// the correct SessionAggregates bucket i.e. crashed, errored or exited
|
|
177
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
178
|
-
(client )._captureRequestSession();
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
next();
|
|
184
|
-
});
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/** JSDoc */
|
|
189
|
-
|
|
190
|
-
/** JSDoc */
|
|
191
|
-
function getStatusCodeFromResponse(error) {
|
|
192
|
-
const statusCode = error.status || error.statusCode || error.status_code || (error.output && error.output.statusCode);
|
|
193
|
-
return statusCode ? parseInt(statusCode , 10) : 500;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/** Returns true if response code is internal server error */
|
|
197
|
-
function defaultShouldHandleError(error) {
|
|
198
|
-
const status = getStatusCodeFromResponse(error);
|
|
199
|
-
return status >= 500;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Express compatible error handler.
|
|
204
|
-
* @see Exposed as `Handlers.errorHandler`
|
|
205
|
-
*/
|
|
206
|
-
function errorHandler(options
|
|
207
|
-
|
|
208
|
-
)
|
|
209
|
-
|
|
210
|
-
{
|
|
211
|
-
return function sentryErrorMiddleware(
|
|
212
|
-
error,
|
|
213
|
-
_req,
|
|
214
|
-
res,
|
|
215
|
-
next,
|
|
216
|
-
) {
|
|
217
|
-
const shouldHandleError = (options && options.shouldHandleError) || defaultShouldHandleError;
|
|
218
|
-
|
|
219
|
-
if (shouldHandleError(error)) {
|
|
220
|
-
withScope(_scope => {
|
|
221
|
-
// The request should already have been stored in `scope.sdkProcessingMetadata` by `sentryRequestMiddleware`,
|
|
222
|
-
// but on the off chance someone is using `sentryErrorMiddleware` without `sentryRequestMiddleware`, it doesn't
|
|
223
|
-
// hurt to be sure
|
|
224
|
-
_scope.setSDKProcessingMetadata({ request: _req });
|
|
225
|
-
|
|
226
|
-
// For some reason we need to set the transaction on the scope again
|
|
227
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
228
|
-
const transaction = (res ).__sentry_transaction ;
|
|
229
|
-
if (transaction && !getActiveSpan()) {
|
|
230
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
231
|
-
_scope.setSpan(transaction);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
const client = getClient();
|
|
235
|
-
if (client && isAutoSessionTrackingEnabled(client)) {
|
|
236
|
-
// Check if the `SessionFlusher` is instantiated on the client to go into this branch that marks the
|
|
237
|
-
// `requestSession.status` as `Crashed`, and this check is necessary because the `SessionFlusher` is only
|
|
238
|
-
// instantiated when the the`requestHandler` middleware is initialised, which indicates that we should be
|
|
239
|
-
// running in SessionAggregates mode
|
|
240
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
241
|
-
const isSessionAggregatesMode = (client )._sessionFlusher !== undefined;
|
|
242
|
-
if (isSessionAggregatesMode) {
|
|
243
|
-
const requestSession = _scope.getRequestSession();
|
|
244
|
-
// If an error bubbles to the `errorHandler`, then this is an unhandled error, and should be reported as a
|
|
245
|
-
// Crashed session. The `_requestSession.status` is checked to ensure that this error is happening within
|
|
246
|
-
// the bounds of a request, and if so the status is updated
|
|
247
|
-
if (requestSession && requestSession.status !== undefined) {
|
|
248
|
-
requestSession.status = 'crashed';
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
const eventId = captureException(error, { mechanism: { type: 'middleware', handled: false } });
|
|
254
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
255
|
-
(res ).sentry = eventId;
|
|
256
|
-
next(error);
|
|
257
|
-
});
|
|
258
|
-
|
|
259
|
-
return;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
next(error);
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* Sentry tRPC middleware that names the handling transaction after the called procedure.
|
|
268
|
-
*
|
|
269
|
-
* Use the Sentry tRPC middleware in combination with the Sentry server integration,
|
|
270
|
-
* e.g. Express Request Handlers or Next.js SDK.
|
|
271
|
-
*/
|
|
272
|
-
function trpcMiddleware(options = {}) {
|
|
273
|
-
return function ({ path, type, next, rawInput }) {
|
|
274
|
-
const clientOptions = _optionalChain([getClient, 'call', _12 => _12(), 'optionalAccess', _13 => _13.getOptions, 'call', _14 => _14()]);
|
|
275
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
276
|
-
const sentryTransaction = getCurrentScope().getTransaction();
|
|
277
|
-
|
|
278
|
-
if (sentryTransaction) {
|
|
279
|
-
sentryTransaction.updateName(`trpc/${path}`);
|
|
280
|
-
sentryTransaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'route');
|
|
281
|
-
sentryTransaction.op = 'rpc.server';
|
|
282
|
-
|
|
283
|
-
const trpcContext = {
|
|
284
|
-
procedure_type: type,
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
if (options.attachRpcInput !== undefined ? options.attachRpcInput : _optionalChain([clientOptions, 'optionalAccess', _15 => _15.sendDefaultPii])) {
|
|
288
|
-
trpcContext.input = normalize(rawInput);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
// TODO: Can we rewrite this to an attribute? Or set this on the scope?
|
|
292
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
293
|
-
sentryTransaction.setContext('trpc', trpcContext);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
function captureIfError(nextResult) {
|
|
297
|
-
if (!nextResult.ok) {
|
|
298
|
-
captureException(nextResult.error, { mechanism: { handled: false, data: { function: 'trpcMiddleware' } } });
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
let maybePromiseResult;
|
|
303
|
-
try {
|
|
304
|
-
maybePromiseResult = next();
|
|
305
|
-
} catch (e) {
|
|
306
|
-
captureException(e, { mechanism: { handled: false, data: { function: 'trpcMiddleware' } } });
|
|
307
|
-
throw e;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
if (isThenable(maybePromiseResult)) {
|
|
311
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
312
|
-
Promise.resolve(maybePromiseResult).then(
|
|
313
|
-
nextResult => {
|
|
314
|
-
captureIfError(nextResult );
|
|
315
|
-
},
|
|
316
|
-
e => {
|
|
317
|
-
captureException(e, { mechanism: { handled: false, data: { function: 'trpcMiddleware' } } });
|
|
318
|
-
},
|
|
319
|
-
);
|
|
320
|
-
} else {
|
|
321
|
-
captureIfError(maybePromiseResult );
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
// We return the original promise just to be safe.
|
|
325
|
-
return maybePromiseResult;
|
|
326
|
-
};
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
export { errorHandler, requestHandler, tracingHandler, trpcMiddleware };
|
|
330
|
-
//# sourceMappingURL=handlers.js.map
|
package/esm/handlers.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sources":["../../src/handlers.ts"],"sourcesContent":["import type * as http from 'http';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,\n captureException,\n continueTrace,\n flush,\n getActiveSpan,\n getClient,\n getCurrentScope,\n hasTracingEnabled,\n runWithAsyncContext,\n setHttpStatus,\n startTransaction,\n withScope,\n} from '@sentry/core';\nimport type { Span } from '@sentry/types';\nimport type { AddRequestDataToEventOptions } from '@sentry/utils';\nimport {\n addRequestDataToTransaction,\n dropUndefinedKeys,\n extractPathForTransaction,\n extractRequestData,\n isString,\n isThenable,\n logger,\n normalize,\n} from '@sentry/utils';\n\nimport type { NodeClient } from './client';\nimport { DEBUG_BUILD } from './debug-build';\n// TODO (v8 / XXX) Remove this import\nimport type { ParseRequestOptions } from './requestDataDeprecated';\nimport { isAutoSessionTrackingEnabled } from './sdk';\n\n/**\n * Express-compatible tracing handler.\n * @see Exposed as `Handlers.tracingHandler`\n */\nexport function tracingHandler(): (\n req: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error?: any) => void,\n) => void {\n return function sentryTracingMiddleware(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error?: any) => void,\n ): void {\n const options = getClient()?.getOptions();\n\n if (\n !options ||\n options.instrumenter !== 'sentry' ||\n req.method?.toUpperCase() === 'OPTIONS' ||\n req.method?.toUpperCase() === 'HEAD'\n ) {\n return next();\n }\n\n const sentryTrace = req.headers && isString(req.headers['sentry-trace']) ? req.headers['sentry-trace'] : undefined;\n const baggage = req.headers?.baggage;\n if (!hasTracingEnabled(options)) {\n return next();\n }\n\n const [name, source] = extractPathForTransaction(req, { path: true, method: true });\n const transaction = continueTrace({ sentryTrace, baggage }, ctx =>\n // TODO: Refactor this to use `startSpan()`\n // eslint-disable-next-line deprecation/deprecation\n startTransaction(\n {\n name,\n op: 'http.server',\n origin: 'auto.http.node.tracingHandler',\n ...ctx,\n data: {\n [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: source,\n },\n metadata: {\n // eslint-disable-next-line deprecation/deprecation\n ...ctx.metadata,\n // The request should already have been stored in `scope.sdkProcessingMetadata` (which will become\n // `event.sdkProcessingMetadata` the same way the metadata here will) by `sentryRequestMiddleware`, but on the\n // off chance someone is using `sentryTracingMiddleware` without `sentryRequestMiddleware`, it doesn't hurt to\n // be sure\n request: req,\n },\n },\n // extra context passed to the tracesSampler\n { request: extractRequestData(req) },\n ),\n );\n\n // We put the transaction on the scope so users can attach children to it\n // eslint-disable-next-line deprecation/deprecation\n getCurrentScope().setSpan(transaction);\n\n // We also set __sentry_transaction on the response so people can grab the transaction there to add\n // spans to it later.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (res as any).__sentry_transaction = transaction;\n\n res.once('finish', () => {\n // Push `transaction.finish` to the next event loop so open spans have a chance to finish before the transaction\n // closes\n setImmediate(() => {\n addRequestDataToTransaction(transaction, req);\n setHttpStatus(transaction, res.statusCode);\n transaction.end();\n });\n });\n\n next();\n };\n}\n\nexport type RequestHandlerOptions =\n // TODO (v8 / XXX) Remove ParseRequestOptions type and eslint override\n // eslint-disable-next-line deprecation/deprecation\n (ParseRequestOptions | AddRequestDataToEventOptions) & {\n flushTimeout?: number;\n };\n\n/**\n * Backwards compatibility shim which can be removed in v8. Forces the given options to follow the\n * `AddRequestDataToEventOptions` interface.\n *\n * TODO (v8): Get rid of this, and stop passing `requestDataOptionsFromExpressHandler` to `setSDKProcessingMetadata`.\n */\nfunction convertReqHandlerOptsToAddReqDataOpts(\n reqHandlerOptions: RequestHandlerOptions = {},\n): AddRequestDataToEventOptions | undefined {\n let addRequestDataOptions: AddRequestDataToEventOptions | undefined;\n\n if ('include' in reqHandlerOptions) {\n addRequestDataOptions = { include: reqHandlerOptions.include };\n } else {\n // eslint-disable-next-line deprecation/deprecation\n const { ip, request, transaction, user } = reqHandlerOptions as ParseRequestOptions;\n\n if (ip || request || transaction || user) {\n addRequestDataOptions = { include: dropUndefinedKeys({ ip, request, transaction, user }) };\n }\n }\n\n return addRequestDataOptions;\n}\n\n/**\n * Express compatible request handler.\n * @see Exposed as `Handlers.requestHandler`\n */\nexport function requestHandler(\n options?: RequestHandlerOptions,\n): (req: http.IncomingMessage, res: http.ServerResponse, next: (error?: any) => void) => void {\n // TODO (v8): Get rid of this\n const requestDataOptions = convertReqHandlerOptsToAddReqDataOpts(options);\n\n const client = getClient<NodeClient>();\n // Initialise an instance of SessionFlusher on the client when `autoSessionTracking` is enabled and the\n // `requestHandler` middleware is used indicating that we are running in SessionAggregates mode\n if (client && isAutoSessionTrackingEnabled(client)) {\n client.initSessionFlusher();\n\n // If Scope contains a Single mode Session, it is removed in favor of using Session Aggregates mode\n const scope = getCurrentScope();\n if (scope.getSession()) {\n scope.setSession();\n }\n }\n\n return function sentryRequestMiddleware(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error?: any) => void,\n ): void {\n if (options && options.flushTimeout && options.flushTimeout > 0) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _end = res.end;\n res.end = function (chunk?: any | (() => void), encoding?: string | (() => void), cb?: () => void): void {\n void flush(options.flushTimeout)\n .then(() => {\n _end.call(this, chunk, encoding, cb);\n })\n .then(null, e => {\n DEBUG_BUILD && logger.error(e);\n _end.call(this, chunk, encoding, cb);\n });\n };\n }\n runWithAsyncContext(() => {\n const scope = getCurrentScope();\n scope.setSDKProcessingMetadata({\n request: req,\n // TODO (v8): Stop passing this\n requestDataOptionsFromExpressHandler: requestDataOptions,\n });\n\n const client = getClient<NodeClient>();\n if (isAutoSessionTrackingEnabled(client)) {\n // Set `status` of `RequestSession` to Ok, at the beginning of the request\n scope.setRequestSession({ status: 'ok' });\n }\n\n res.once('finish', () => {\n const client = getClient<NodeClient>();\n if (isAutoSessionTrackingEnabled(client)) {\n setImmediate(() => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (client && (client as any)._captureRequestSession) {\n // Calling _captureRequestSession to capture request session at the end of the request by incrementing\n // the correct SessionAggregates bucket i.e. crashed, errored or exited\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (client as any)._captureRequestSession();\n }\n });\n }\n });\n next();\n });\n };\n}\n\n/** JSDoc */\ninterface MiddlewareError extends Error {\n status?: number | string;\n statusCode?: number | string;\n status_code?: number | string;\n output?: {\n statusCode?: number | string;\n };\n}\n\n/** JSDoc */\nfunction getStatusCodeFromResponse(error: MiddlewareError): number {\n const statusCode = error.status || error.statusCode || error.status_code || (error.output && error.output.statusCode);\n return statusCode ? parseInt(statusCode as string, 10) : 500;\n}\n\n/** Returns true if response code is internal server error */\nfunction defaultShouldHandleError(error: MiddlewareError): boolean {\n const status = getStatusCodeFromResponse(error);\n return status >= 500;\n}\n\n/**\n * Express compatible error handler.\n * @see Exposed as `Handlers.errorHandler`\n */\nexport function errorHandler(options?: {\n /**\n * Callback method deciding whether error should be captured and sent to Sentry\n * @param error Captured middleware error\n */\n shouldHandleError?(this: void, error: MiddlewareError): boolean;\n}): (\n error: MiddlewareError,\n req: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error: MiddlewareError) => void,\n) => void {\n return function sentryErrorMiddleware(\n error: MiddlewareError,\n _req: http.IncomingMessage,\n res: http.ServerResponse,\n next: (error: MiddlewareError) => void,\n ): void {\n const shouldHandleError = (options && options.shouldHandleError) || defaultShouldHandleError;\n\n if (shouldHandleError(error)) {\n withScope(_scope => {\n // The request should already have been stored in `scope.sdkProcessingMetadata` by `sentryRequestMiddleware`,\n // but on the off chance someone is using `sentryErrorMiddleware` without `sentryRequestMiddleware`, it doesn't\n // hurt to be sure\n _scope.setSDKProcessingMetadata({ request: _req });\n\n // For some reason we need to set the transaction on the scope again\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const transaction = (res as any).__sentry_transaction as Span;\n if (transaction && !getActiveSpan()) {\n // eslint-disable-next-line deprecation/deprecation\n _scope.setSpan(transaction);\n }\n\n const client = getClient<NodeClient>();\n if (client && isAutoSessionTrackingEnabled(client)) {\n // Check if the `SessionFlusher` is instantiated on the client to go into this branch that marks the\n // `requestSession.status` as `Crashed`, and this check is necessary because the `SessionFlusher` is only\n // instantiated when the the`requestHandler` middleware is initialised, which indicates that we should be\n // running in SessionAggregates mode\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const isSessionAggregatesMode = (client as any)._sessionFlusher !== undefined;\n if (isSessionAggregatesMode) {\n const requestSession = _scope.getRequestSession();\n // If an error bubbles to the `errorHandler`, then this is an unhandled error, and should be reported as a\n // Crashed session. The `_requestSession.status` is checked to ensure that this error is happening within\n // the bounds of a request, and if so the status is updated\n if (requestSession && requestSession.status !== undefined) {\n requestSession.status = 'crashed';\n }\n }\n }\n\n const eventId = captureException(error, { mechanism: { type: 'middleware', handled: false } });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (res as any).sentry = eventId;\n next(error);\n });\n\n return;\n }\n\n next(error);\n };\n}\n\ninterface SentryTrpcMiddlewareOptions {\n /** Whether to include procedure inputs in reported events. Defaults to `false`. */\n attachRpcInput?: boolean;\n}\n\ninterface TrpcMiddlewareArguments<T> {\n path: string;\n type: string;\n next: () => T;\n rawInput: unknown;\n}\n\n/**\n * Sentry tRPC middleware that names the handling transaction after the called procedure.\n *\n * Use the Sentry tRPC middleware in combination with the Sentry server integration,\n * e.g. Express Request Handlers or Next.js SDK.\n */\nexport function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) {\n return function <T>({ path, type, next, rawInput }: TrpcMiddlewareArguments<T>): T {\n const clientOptions = getClient()?.getOptions();\n // eslint-disable-next-line deprecation/deprecation\n const sentryTransaction = getCurrentScope().getTransaction();\n\n if (sentryTransaction) {\n sentryTransaction.updateName(`trpc/${path}`);\n sentryTransaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, 'route');\n sentryTransaction.op = 'rpc.server';\n\n const trpcContext: Record<string, unknown> = {\n procedure_type: type,\n };\n\n if (options.attachRpcInput !== undefined ? options.attachRpcInput : clientOptions?.sendDefaultPii) {\n trpcContext.input = normalize(rawInput);\n }\n\n // TODO: Can we rewrite this to an attribute? Or set this on the scope?\n // eslint-disable-next-line deprecation/deprecation\n sentryTransaction.setContext('trpc', trpcContext);\n }\n\n function captureIfError(nextResult: { ok: false; error?: Error } | { ok: true }): void {\n if (!nextResult.ok) {\n captureException(nextResult.error, { mechanism: { handled: false, data: { function: 'trpcMiddleware' } } });\n }\n }\n\n let maybePromiseResult;\n try {\n maybePromiseResult = next();\n } catch (e) {\n captureException(e, { mechanism: { handled: false, data: { function: 'trpcMiddleware' } } });\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n Promise.resolve(maybePromiseResult).then(\n nextResult => {\n captureIfError(nextResult as any);\n },\n e => {\n captureException(e, { mechanism: { handled: false, data: { function: 'trpcMiddleware' } } });\n },\n );\n } else {\n captureIfError(maybePromiseResult as any);\n }\n\n // We return the original promise just to be safe.\n return maybePromiseResult;\n };\n}\n\n// TODO (v8 / #5257): Remove this\n// eslint-disable-next-line deprecation/deprecation\nexport type { ParseRequestOptions, ExpressRequest } from './requestDataDeprecated';\n// eslint-disable-next-line deprecation/deprecation\nexport { parseRequest, extractRequestData } from './requestDataDeprecated';\n"],"names":[],"mappings":"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,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA;UACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;UACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;UACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA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A,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,YAAA;;MAEA,CAAA,CAAA,CAAA,CAAA,EAAA,YAAA,EAAA;QACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA;MACA,CAAA;;MAEA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,UAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA;QACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;MACA;;MAEA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA;MACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;MACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACA;;IAEA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA;MACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA;QACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;MACA;IACA;;IAEA,CAAA,CAAA,EAAA,kBAAA;IACA,CAAA,CAAA,EAAA;MACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA;MACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;MACA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;IACA;;IAEA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA;MACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;MACA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;QACA,WAAA,CAAA,EAAA;UACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;QACA,CAAA;QACA,EAAA,CAAA,EAAA;UACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,iBAAA,EAAA,EAAA,CAAA,CAAA;QACA,CAAA;MACA,CAAA;IACA,EAAA,CAAA,CAAA,CAAA,EAAA;MACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA;IACA;;IAEA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA;IACA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,kBAAA;EACA,CAAA;AACA;;"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { getClient } from '@sentry/core';
|
|
2
|
-
import { Anr } from './index.js';
|
|
3
|
-
|
|
4
|
-
// TODO (v8): Remove this entire file and the `enableAnrDetection` export
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated Use the `Anr` integration instead.
|
|
8
|
-
*
|
|
9
|
-
* ```ts
|
|
10
|
-
* import * as Sentry from '@sentry/node';
|
|
11
|
-
*
|
|
12
|
-
* Sentry.init({
|
|
13
|
-
* dsn: '__DSN__',
|
|
14
|
-
* integrations: [new Sentry.Integrations.Anr({ captureStackTrace: true })],
|
|
15
|
-
* });
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
function enableAnrDetection(options) {
|
|
19
|
-
const client = getClient() ;
|
|
20
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
21
|
-
const integration = new Anr(options);
|
|
22
|
-
integration.setup(client);
|
|
23
|
-
return Promise.resolve();
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export { enableAnrDetection };
|
|
27
|
-
//# sourceMappingURL=legacy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"legacy.js","sources":["../../../../src/integrations/anr/legacy.ts"],"sourcesContent":["import { getClient } from '@sentry/core';\nimport { Anr } from '.';\nimport type { NodeClient } from '../../client';\n\n// TODO (v8): Remove this entire file and the `enableAnrDetection` export\n\ninterface LegacyOptions {\n entryScript: string;\n pollInterval: number;\n anrThreshold: number;\n captureStackTrace: boolean;\n debug: boolean;\n}\n\n/**\n * @deprecated Use the `Anr` integration instead.\n *\n * ```ts\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * dsn: '__DSN__',\n * integrations: [new Sentry.Integrations.Anr({ captureStackTrace: true })],\n * });\n * ```\n */\nexport function enableAnrDetection(options: Partial<LegacyOptions>): Promise<void> {\n const client = getClient() as NodeClient;\n // eslint-disable-next-line deprecation/deprecation\n const integration = new Anr(options);\n integration.setup(client);\n return Promise.resolve();\n}\n"],"names":[],"mappings":";;;AAIA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,kBAAkB,CAAC,OAAO,EAAyC;AACnF,EAAE,MAAM,MAAA,GAAS,SAAS,EAAG,EAAA;AAC7B;AACA,EAAE,MAAM,WAAY,GAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;AACtC,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AAC3B,EAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;AAC1B;;;;"}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import { defineIntegration, convertIntegrationFnToClass, SDK_VERSION, getActiveTransaction, captureException, continueTrace, startTransaction, getCurrentScope, spanToTraceHeader, getDynamicSamplingContextFromSpan, setHttpStatus } from '@sentry/core';
|
|
2
|
-
import { fill, dynamicSamplingContextToSentryBaggageHeader } from '@sentry/utils';
|
|
3
|
-
|
|
4
|
-
function isResponseObject(response) {
|
|
5
|
-
return response && (response ).statusCode !== undefined;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
function isBoomObject(response) {
|
|
9
|
-
return response && (response ).isBoom !== undefined;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function isErrorEvent(event) {
|
|
13
|
-
return event && (event ).error !== undefined;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function sendErrorToSentry(errorData) {
|
|
17
|
-
captureException(errorData, {
|
|
18
|
-
mechanism: {
|
|
19
|
-
type: 'hapi',
|
|
20
|
-
handled: false,
|
|
21
|
-
data: {
|
|
22
|
-
function: 'hapiErrorPlugin',
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
const hapiErrorPlugin = {
|
|
29
|
-
name: 'SentryHapiErrorPlugin',
|
|
30
|
-
version: SDK_VERSION,
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
-
register: async function (serverArg) {
|
|
33
|
-
const server = serverArg ;
|
|
34
|
-
|
|
35
|
-
server.events.on('request', (request, event) => {
|
|
36
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
37
|
-
const transaction = getActiveTransaction();
|
|
38
|
-
|
|
39
|
-
if (request.response && isBoomObject(request.response)) {
|
|
40
|
-
sendErrorToSentry(request.response);
|
|
41
|
-
} else if (isErrorEvent(event)) {
|
|
42
|
-
sendErrorToSentry(event.error);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (transaction) {
|
|
46
|
-
transaction.setStatus('internal_error');
|
|
47
|
-
transaction.end();
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const hapiTracingPlugin = {
|
|
54
|
-
name: 'SentryHapiTracingPlugin',
|
|
55
|
-
version: SDK_VERSION,
|
|
56
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
|
-
register: async function (serverArg) {
|
|
58
|
-
const server = serverArg ;
|
|
59
|
-
|
|
60
|
-
server.ext('onPreHandler', (request, h) => {
|
|
61
|
-
const transaction = continueTrace(
|
|
62
|
-
{
|
|
63
|
-
sentryTrace: request.headers['sentry-trace'] || undefined,
|
|
64
|
-
baggage: request.headers['baggage'] || undefined,
|
|
65
|
-
},
|
|
66
|
-
transactionContext => {
|
|
67
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
68
|
-
return startTransaction({
|
|
69
|
-
...transactionContext,
|
|
70
|
-
op: 'hapi.request',
|
|
71
|
-
name: request.route.path,
|
|
72
|
-
description: `${request.route.method} ${request.path}`,
|
|
73
|
-
});
|
|
74
|
-
},
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
78
|
-
getCurrentScope().setSpan(transaction);
|
|
79
|
-
|
|
80
|
-
return h.continue;
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
server.ext('onPreResponse', (request, h) => {
|
|
84
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
85
|
-
const transaction = getActiveTransaction();
|
|
86
|
-
|
|
87
|
-
if (request.response && isResponseObject(request.response) && transaction) {
|
|
88
|
-
const response = request.response ;
|
|
89
|
-
response.header('sentry-trace', spanToTraceHeader(transaction));
|
|
90
|
-
|
|
91
|
-
const dynamicSamplingContext = dynamicSamplingContextToSentryBaggageHeader(
|
|
92
|
-
getDynamicSamplingContextFromSpan(transaction),
|
|
93
|
-
);
|
|
94
|
-
|
|
95
|
-
if (dynamicSamplingContext) {
|
|
96
|
-
response.header('baggage', dynamicSamplingContext);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return h.continue;
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
server.ext('onPostHandler', (request, h) => {
|
|
104
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
105
|
-
const transaction = getActiveTransaction();
|
|
106
|
-
|
|
107
|
-
if (transaction) {
|
|
108
|
-
if (request.response && isResponseObject(request.response)) {
|
|
109
|
-
setHttpStatus(transaction, request.response.statusCode);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
transaction.end();
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return h.continue;
|
|
116
|
-
});
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
const INTEGRATION_NAME = 'Hapi';
|
|
121
|
-
|
|
122
|
-
const _hapiIntegration = ((options = {}) => {
|
|
123
|
-
const server = options.server ;
|
|
124
|
-
|
|
125
|
-
return {
|
|
126
|
-
name: INTEGRATION_NAME,
|
|
127
|
-
setupOnce() {
|
|
128
|
-
if (!server) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
fill(server, 'start', (originalStart) => {
|
|
133
|
-
return async function () {
|
|
134
|
-
await this.register(hapiTracingPlugin);
|
|
135
|
-
await this.register(hapiErrorPlugin);
|
|
136
|
-
const result = originalStart.apply(this);
|
|
137
|
-
return result;
|
|
138
|
-
};
|
|
139
|
-
});
|
|
140
|
-
},
|
|
141
|
-
};
|
|
142
|
-
}) ;
|
|
143
|
-
|
|
144
|
-
const hapiIntegration = defineIntegration(_hapiIntegration);
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Hapi Framework Integration.
|
|
148
|
-
* @deprecated Use `hapiIntegration()` instead.
|
|
149
|
-
*/
|
|
150
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
151
|
-
const Hapi = convertIntegrationFnToClass(INTEGRATION_NAME, hapiIntegration);
|
|
152
|
-
|
|
153
|
-
// eslint-disable-next-line deprecation/deprecation
|
|
154
|
-
|
|
155
|
-
export { Hapi, hapiErrorPlugin, hapiIntegration, hapiTracingPlugin };
|
|
156
|
-
//# sourceMappingURL=index.js.map
|