@sentry/node 9.34.0-alpha.1 → 9.35.0
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/build/cjs/cron/common.js +56 -0
- package/build/cjs/cron/common.js.map +1 -0
- package/build/cjs/cron/cron.js +112 -0
- package/build/cjs/cron/cron.js.map +1 -0
- package/build/cjs/cron/index.js +15 -0
- package/build/cjs/cron/index.js.map +1 -0
- package/build/cjs/cron/node-cron.js +71 -0
- package/build/cjs/cron/node-cron.js.map +1 -0
- package/build/cjs/cron/node-schedule.js +65 -0
- package/build/cjs/cron/node-schedule.js.map +1 -0
- package/build/cjs/index.js +56 -38
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/integrations/anr/index.js +238 -0
- package/build/cjs/integrations/anr/index.js.map +1 -0
- package/build/cjs/integrations/childProcess.js +100 -0
- package/build/cjs/integrations/childProcess.js.map +1 -0
- package/build/cjs/integrations/context.js +457 -0
- package/build/cjs/integrations/context.js.map +1 -0
- package/build/cjs/integrations/contextlines.js +405 -0
- package/build/cjs/integrations/contextlines.js.map +1 -0
- package/build/cjs/integrations/fs.js +2 -2
- package/build/cjs/integrations/fs.js.map +1 -1
- package/build/cjs/integrations/http/SentryHttpInstrumentation.js +558 -0
- package/build/cjs/integrations/http/SentryHttpInstrumentation.js.map +1 -0
- package/build/cjs/integrations/http/index.js +11 -7
- package/build/cjs/integrations/http/index.js.map +1 -1
- package/build/cjs/integrations/local-variables/common.js +69 -0
- package/build/cjs/integrations/local-variables/common.js.map +1 -0
- package/build/cjs/integrations/local-variables/index.js +12 -0
- package/build/cjs/integrations/local-variables/index.js.map +1 -0
- package/build/cjs/integrations/local-variables/local-variables-async.js +143 -0
- package/build/cjs/integrations/local-variables/local-variables-async.js.map +1 -0
- package/build/cjs/integrations/local-variables/local-variables-sync.js +410 -0
- package/build/cjs/integrations/local-variables/local-variables-sync.js.map +1 -0
- package/build/cjs/integrations/modules.js +135 -0
- package/build/cjs/integrations/modules.js.map +1 -0
- package/build/cjs/integrations/node-fetch/SentryNodeFetchInstrumentation.js +291 -0
- package/build/cjs/integrations/node-fetch/SentryNodeFetchInstrumentation.js.map +1 -0
- package/build/cjs/integrations/node-fetch/index.js +5 -4
- package/build/cjs/integrations/node-fetch/index.js.map +1 -1
- package/build/cjs/integrations/onuncaughtexception.js +134 -0
- package/build/cjs/integrations/onuncaughtexception.js.map +1 -0
- package/build/cjs/integrations/onunhandledrejection.js +89 -0
- package/build/cjs/integrations/onunhandledrejection.js.map +1 -0
- package/build/cjs/integrations/processSession.js +36 -0
- package/build/cjs/integrations/processSession.js.map +1 -0
- package/build/cjs/integrations/spotlight.js +101 -0
- package/build/cjs/integrations/spotlight.js.map +1 -0
- package/build/cjs/integrations/tracing/amqplib.js +5 -4
- package/build/cjs/integrations/tracing/amqplib.js.map +1 -1
- package/build/cjs/integrations/tracing/connect.js +4 -3
- package/build/cjs/integrations/tracing/connect.js.map +1 -1
- package/build/cjs/integrations/tracing/dataloader.js +3 -3
- package/build/cjs/integrations/tracing/dataloader.js.map +1 -1
- package/build/cjs/integrations/tracing/express.js +7 -5
- package/build/cjs/integrations/tracing/express.js.map +1 -1
- package/build/cjs/integrations/tracing/fastify/fastify-otel/index.js +3 -3
- package/build/cjs/integrations/tracing/fastify/fastify-otel/index.js.map +1 -1
- package/build/cjs/integrations/tracing/fastify/index.js +6 -6
- package/build/cjs/integrations/tracing/fastify/index.js.map +1 -1
- package/build/cjs/integrations/tracing/genericPool.js +3 -3
- package/build/cjs/integrations/tracing/genericPool.js.map +1 -1
- package/build/cjs/integrations/tracing/graphql.js +4 -3
- package/build/cjs/integrations/tracing/graphql.js.map +1 -1
- package/build/cjs/integrations/tracing/hapi/index.js +4 -3
- package/build/cjs/integrations/tracing/hapi/index.js.map +1 -1
- package/build/cjs/integrations/tracing/kafka.js +5 -4
- package/build/cjs/integrations/tracing/kafka.js.map +1 -1
- package/build/cjs/integrations/tracing/knex.js +3 -3
- package/build/cjs/integrations/tracing/knex.js.map +1 -1
- package/build/cjs/integrations/tracing/koa.js +6 -4
- package/build/cjs/integrations/tracing/koa.js.map +1 -1
- package/build/cjs/integrations/tracing/lrumemoizer.js +2 -2
- package/build/cjs/integrations/tracing/lrumemoizer.js.map +1 -1
- package/build/cjs/integrations/tracing/mongo.js +4 -3
- package/build/cjs/integrations/tracing/mongo.js.map +1 -1
- package/build/cjs/integrations/tracing/mongoose.js +4 -3
- package/build/cjs/integrations/tracing/mongoose.js.map +1 -1
- package/build/cjs/integrations/tracing/mysql.js +2 -2
- package/build/cjs/integrations/tracing/mysql.js.map +1 -1
- package/build/cjs/integrations/tracing/mysql2.js +4 -3
- package/build/cjs/integrations/tracing/mysql2.js.map +1 -1
- package/build/cjs/integrations/tracing/postgres.js +4 -3
- package/build/cjs/integrations/tracing/postgres.js.map +1 -1
- package/build/cjs/integrations/tracing/postgresjs.js +4 -3
- package/build/cjs/integrations/tracing/postgresjs.js.map +1 -1
- package/build/cjs/integrations/tracing/prisma.js +2 -2
- package/build/cjs/integrations/tracing/prisma.js.map +1 -1
- package/build/cjs/integrations/tracing/redis.js +3 -3
- package/build/cjs/integrations/tracing/redis.js.map +1 -1
- package/build/cjs/integrations/tracing/tedious.js +3 -3
- package/build/cjs/integrations/tracing/tedious.js.map +1 -1
- package/build/cjs/integrations/tracing/vercelai/index.js +2 -2
- package/build/cjs/integrations/tracing/vercelai/index.js.map +1 -1
- package/build/cjs/integrations/winston.js +151 -0
- package/build/cjs/integrations/winston.js.map +1 -0
- package/build/cjs/logs/capture.js +29 -0
- package/build/cjs/logs/capture.js.map +1 -0
- package/build/cjs/logs/exports.js +178 -0
- package/build/cjs/logs/exports.js.map +1 -0
- package/build/cjs/nodeVersion.js +12 -0
- package/build/cjs/nodeVersion.js.map +1 -0
- package/build/cjs/otel/contextManager.js +16 -0
- package/build/cjs/otel/contextManager.js.map +1 -0
- package/build/cjs/otel/instrument.js +139 -0
- package/build/cjs/otel/instrument.js.map +1 -0
- package/build/cjs/preload.js +2 -2
- package/build/cjs/preload.js.map +1 -1
- package/build/cjs/proxy/base.js +122 -0
- package/build/cjs/proxy/base.js.map +1 -0
- package/build/cjs/proxy/index.js +173 -0
- package/build/cjs/proxy/index.js.map +1 -0
- package/build/cjs/proxy/parse-proxy-response.js +104 -0
- package/build/cjs/proxy/parse-proxy-response.js.map +1 -0
- package/build/cjs/sdk/api.js +117 -0
- package/build/cjs/sdk/api.js.map +1 -0
- package/build/cjs/sdk/client.js +156 -0
- package/build/cjs/sdk/client.js.map +1 -0
- package/build/cjs/sdk/index.js +203 -22
- package/build/cjs/sdk/index.js.map +1 -1
- package/build/cjs/sdk/initOtel.js +22 -4
- package/build/cjs/sdk/initOtel.js.map +1 -1
- package/build/cjs/transports/http.js +158 -0
- package/build/cjs/transports/http.js.map +1 -0
- package/build/cjs/utils/addOriginToSpan.js +11 -0
- package/build/cjs/utils/addOriginToSpan.js.map +1 -0
- package/build/cjs/utils/baggage.js +36 -0
- package/build/cjs/utils/baggage.js.map +1 -0
- package/build/cjs/utils/commonjs.js +13 -0
- package/build/cjs/utils/commonjs.js.map +1 -0
- package/build/cjs/utils/createMissingInstrumentationContext.js +11 -0
- package/build/cjs/utils/createMissingInstrumentationContext.js.map +1 -0
- package/build/cjs/utils/debug.js +23 -0
- package/build/cjs/utils/debug.js.map +1 -0
- package/build/cjs/utils/ensureIsWrapped.js +41 -0
- package/build/cjs/utils/ensureIsWrapped.js.map +1 -0
- package/build/cjs/utils/envToBool.js +32 -0
- package/build/cjs/utils/envToBool.js.map +1 -0
- package/build/cjs/utils/errorhandling.js +42 -0
- package/build/cjs/utils/errorhandling.js.map +1 -0
- package/build/cjs/utils/getRequestUrl.js +18 -0
- package/build/cjs/utils/getRequestUrl.js.map +1 -0
- package/build/cjs/utils/module.js +60 -0
- package/build/cjs/utils/module.js.map +1 -0
- package/build/esm/cron/common.js +54 -0
- package/build/esm/cron/common.js.map +1 -0
- package/build/esm/cron/cron.js +110 -0
- package/build/esm/cron/cron.js.map +1 -0
- package/build/esm/cron/index.js +13 -0
- package/build/esm/cron/index.js.map +1 -0
- package/build/esm/cron/node-cron.js +69 -0
- package/build/esm/cron/node-cron.js.map +1 -0
- package/build/esm/cron/node-schedule.js +63 -0
- package/build/esm/cron/node-schedule.js.map +1 -0
- package/build/esm/index.js +21 -2
- package/build/esm/index.js.map +1 -1
- package/build/esm/integrations/anr/index.js +234 -0
- package/build/esm/integrations/anr/index.js.map +1 -0
- package/build/esm/integrations/anr/worker-script.js +2 -0
- package/build/esm/integrations/childProcess.js +98 -0
- package/build/esm/integrations/childProcess.js.map +1 -0
- package/build/esm/integrations/context.js +451 -0
- package/build/esm/integrations/context.js.map +1 -0
- package/build/esm/integrations/contextlines.js +399 -0
- package/build/esm/integrations/contextlines.js.map +1 -0
- package/build/esm/integrations/fs.js +1 -1
- package/build/esm/integrations/fs.js.map +1 -1
- package/build/esm/integrations/http/SentryHttpInstrumentation.js +555 -0
- package/build/esm/integrations/http/SentryHttpInstrumentation.js.map +1 -0
- package/build/esm/integrations/http/index.js +5 -1
- package/build/esm/integrations/http/index.js.map +1 -1
- package/build/esm/integrations/local-variables/common.js +64 -0
- package/build/esm/integrations/local-variables/common.js.map +1 -0
- package/build/esm/integrations/local-variables/index.js +10 -0
- package/build/esm/integrations/local-variables/index.js.map +1 -0
- package/build/esm/integrations/local-variables/local-variables-async.js +140 -0
- package/build/esm/integrations/local-variables/local-variables-async.js.map +1 -0
- package/build/esm/integrations/local-variables/local-variables-sync.js +405 -0
- package/build/esm/integrations/local-variables/local-variables-sync.js.map +1 -0
- package/build/esm/integrations/local-variables/worker-script.js +2 -0
- package/build/esm/integrations/modules.js +133 -0
- package/build/esm/integrations/modules.js.map +1 -0
- package/build/esm/integrations/node-fetch/SentryNodeFetchInstrumentation.js +289 -0
- package/build/esm/integrations/node-fetch/SentryNodeFetchInstrumentation.js.map +1 -0
- package/build/esm/integrations/node-fetch/index.js +3 -2
- package/build/esm/integrations/node-fetch/index.js.map +1 -1
- package/build/esm/integrations/onuncaughtexception.js +131 -0
- package/build/esm/integrations/onuncaughtexception.js.map +1 -0
- package/build/esm/integrations/onunhandledrejection.js +86 -0
- package/build/esm/integrations/onunhandledrejection.js.map +1 -0
- package/build/esm/integrations/processSession.js +34 -0
- package/build/esm/integrations/processSession.js.map +1 -0
- package/build/esm/integrations/spotlight.js +98 -0
- package/build/esm/integrations/spotlight.js.map +1 -0
- package/build/esm/integrations/tracing/amqplib.js +2 -1
- package/build/esm/integrations/tracing/amqplib.js.map +1 -1
- package/build/esm/integrations/tracing/connect.js +2 -1
- package/build/esm/integrations/tracing/connect.js.map +1 -1
- package/build/esm/integrations/tracing/dataloader.js +1 -1
- package/build/esm/integrations/tracing/dataloader.js.map +1 -1
- package/build/esm/integrations/tracing/express.js +4 -2
- package/build/esm/integrations/tracing/express.js.map +1 -1
- package/build/esm/integrations/tracing/fastify/fastify-otel/index.js +3 -3
- package/build/esm/integrations/tracing/fastify/fastify-otel/index.js.map +1 -1
- package/build/esm/integrations/tracing/fastify/index.js +5 -5
- package/build/esm/integrations/tracing/fastify/index.js.map +1 -1
- package/build/esm/integrations/tracing/genericPool.js +1 -1
- package/build/esm/integrations/tracing/genericPool.js.map +1 -1
- package/build/esm/integrations/tracing/graphql.js +3 -2
- package/build/esm/integrations/tracing/graphql.js.map +1 -1
- package/build/esm/integrations/tracing/hapi/index.js +2 -1
- package/build/esm/integrations/tracing/hapi/index.js.map +1 -1
- package/build/esm/integrations/tracing/kafka.js +2 -1
- package/build/esm/integrations/tracing/kafka.js.map +1 -1
- package/build/esm/integrations/tracing/knex.js +1 -1
- package/build/esm/integrations/tracing/knex.js.map +1 -1
- package/build/esm/integrations/tracing/koa.js +4 -2
- package/build/esm/integrations/tracing/koa.js.map +1 -1
- package/build/esm/integrations/tracing/lrumemoizer.js +1 -1
- package/build/esm/integrations/tracing/lrumemoizer.js.map +1 -1
- package/build/esm/integrations/tracing/mongo.js +2 -1
- package/build/esm/integrations/tracing/mongo.js.map +1 -1
- package/build/esm/integrations/tracing/mongoose.js +2 -1
- package/build/esm/integrations/tracing/mongoose.js.map +1 -1
- package/build/esm/integrations/tracing/mysql.js +1 -1
- package/build/esm/integrations/tracing/mysql.js.map +1 -1
- package/build/esm/integrations/tracing/mysql2.js +2 -1
- package/build/esm/integrations/tracing/mysql2.js.map +1 -1
- package/build/esm/integrations/tracing/postgres.js +2 -1
- package/build/esm/integrations/tracing/postgres.js.map +1 -1
- package/build/esm/integrations/tracing/postgresjs.js +3 -2
- package/build/esm/integrations/tracing/postgresjs.js.map +1 -1
- package/build/esm/integrations/tracing/prisma.js +1 -1
- package/build/esm/integrations/tracing/prisma.js.map +1 -1
- package/build/esm/integrations/tracing/redis.js +1 -1
- package/build/esm/integrations/tracing/redis.js.map +1 -1
- package/build/esm/integrations/tracing/tedious.js +1 -1
- package/build/esm/integrations/tracing/tedious.js.map +1 -1
- package/build/esm/integrations/tracing/vercelai/index.js +1 -1
- package/build/esm/integrations/tracing/vercelai/index.js.map +1 -1
- package/build/esm/integrations/winston.js +149 -0
- package/build/esm/integrations/winston.js.map +1 -0
- package/build/esm/logs/capture.js +27 -0
- package/build/esm/logs/capture.js.map +1 -0
- package/build/esm/logs/exports.js +170 -0
- package/build/esm/logs/exports.js.map +1 -0
- package/build/esm/nodeVersion.js +8 -0
- package/build/esm/nodeVersion.js.map +1 -0
- package/build/esm/otel/contextManager.js +14 -0
- package/build/esm/otel/contextManager.js.map +1 -0
- package/build/esm/otel/instrument.js +135 -0
- package/build/esm/otel/instrument.js.map +1 -0
- package/build/esm/package.json +1 -1
- package/build/esm/preload.js +1 -1
- package/build/esm/preload.js.map +1 -1
- package/build/esm/proxy/base.js +120 -0
- package/build/esm/proxy/base.js.map +1 -0
- package/build/esm/proxy/index.js +171 -0
- package/build/esm/proxy/index.js.map +1 -0
- package/build/esm/proxy/parse-proxy-response.js +102 -0
- package/build/esm/proxy/parse-proxy-response.js.map +1 -0
- package/build/esm/sdk/api.js +114 -0
- package/build/esm/sdk/api.js.map +1 -0
- package/build/esm/sdk/client.js +154 -0
- package/build/esm/sdk/client.js.map +1 -0
- package/build/esm/sdk/index.js +202 -22
- package/build/esm/sdk/index.js.map +1 -1
- package/build/esm/sdk/initOtel.js +21 -3
- package/build/esm/sdk/initOtel.js.map +1 -1
- package/build/esm/transports/http.js +156 -0
- package/build/esm/transports/http.js.map +1 -0
- package/build/esm/utils/addOriginToSpan.js +9 -0
- package/build/esm/utils/addOriginToSpan.js.map +1 -0
- package/build/esm/utils/baggage.js +34 -0
- package/build/esm/utils/baggage.js.map +1 -0
- package/build/esm/utils/commonjs.js +11 -0
- package/build/esm/utils/commonjs.js.map +1 -0
- package/build/esm/utils/createMissingInstrumentationContext.js +9 -0
- package/build/esm/utils/createMissingInstrumentationContext.js.map +1 -0
- package/build/esm/utils/debug.js +21 -0
- package/build/esm/utils/debug.js.map +1 -0
- package/build/esm/utils/ensureIsWrapped.js +39 -0
- package/build/esm/utils/ensureIsWrapped.js.map +1 -0
- package/build/esm/utils/envToBool.js +28 -0
- package/build/esm/utils/envToBool.js.map +1 -0
- package/build/esm/utils/errorhandling.js +40 -0
- package/build/esm/utils/errorhandling.js.map +1 -0
- package/build/esm/utils/getRequestUrl.js +16 -0
- package/build/esm/utils/getRequestUrl.js.map +1 -0
- package/build/esm/utils/module.js +58 -0
- package/build/esm/utils/module.js.map +1 -0
- package/build/types/cron/common.d.ts +5 -0
- package/build/types/cron/common.d.ts.map +1 -0
- package/build/types/cron/cron.d.ts +43 -0
- package/build/types/cron/cron.d.ts.map +1 -0
- package/build/types/cron/index.d.ts +10 -0
- package/build/types/cron/index.d.ts.map +1 -0
- package/build/types/cron/node-cron.d.ts +27 -0
- package/build/types/cron/node-cron.d.ts.map +1 -0
- package/build/types/cron/node-schedule.d.ts +19 -0
- package/build/types/cron/node-schedule.d.ts.map +1 -0
- package/build/types/index.d.ts +21 -2
- package/build/types/index.d.ts.map +1 -1
- package/build/types/integrations/anr/common.d.ts +52 -0
- package/build/types/integrations/anr/common.d.ts.map +1 -0
- package/build/types/integrations/anr/index.d.ts +13 -0
- package/build/types/integrations/anr/index.d.ts.map +1 -0
- package/build/types/integrations/anr/worker.d.ts +2 -0
- package/build/types/integrations/anr/worker.d.ts.map +1 -0
- package/build/types/integrations/childProcess.d.ts +20 -0
- package/build/types/integrations/childProcess.d.ts.map +1 -0
- package/build/types/integrations/context.d.ts +30 -0
- package/build/types/integrations/context.d.ts.map +1 -0
- package/build/types/integrations/contextlines.d.ts +31 -0
- package/build/types/integrations/contextlines.d.ts.map +1 -0
- package/build/types/integrations/http/SentryHttpInstrumentation.d.ts +131 -0
- package/build/types/integrations/http/SentryHttpInstrumentation.d.ts.map +1 -0
- package/build/types/integrations/http/index.d.ts +1 -1
- package/build/types/integrations/http/index.d.ts.map +1 -1
- package/build/types/integrations/local-variables/common.d.ts +66 -0
- package/build/types/integrations/local-variables/common.d.ts.map +1 -0
- package/build/types/integrations/local-variables/index.d.ts +4 -0
- package/build/types/integrations/local-variables/index.d.ts.map +1 -0
- package/build/types/integrations/local-variables/local-variables-async.d.ts +7 -0
- package/build/types/integrations/local-variables/local-variables-async.d.ts.map +1 -0
- package/build/types/integrations/local-variables/local-variables-sync.d.ts +34 -0
- package/build/types/integrations/local-variables/local-variables-sync.d.ts.map +1 -0
- package/build/types/integrations/local-variables/worker.d.ts +2 -0
- package/build/types/integrations/local-variables/worker.d.ts.map +1 -0
- package/build/types/integrations/modules.d.ts +17 -0
- package/build/types/integrations/modules.d.ts.map +1 -0
- package/build/types/integrations/node-fetch/SentryNodeFetchInstrumentation.d.ts +56 -0
- package/build/types/integrations/node-fetch/SentryNodeFetchInstrumentation.d.ts.map +1 -0
- package/build/types/integrations/node-fetch/index.d.ts.map +1 -1
- package/build/types/integrations/onuncaughtexception.d.ts +31 -0
- package/build/types/integrations/onuncaughtexception.d.ts.map +1 -0
- package/build/types/integrations/onunhandledrejection.d.ts +23 -0
- package/build/types/integrations/onunhandledrejection.d.ts.map +1 -0
- package/build/types/integrations/processSession.d.ts +5 -0
- package/build/types/integrations/processSession.d.ts.map +1 -0
- package/build/types/integrations/spotlight.d.ts +18 -0
- package/build/types/integrations/spotlight.d.ts.map +1 -0
- package/build/types/integrations/tracing/amqplib.d.ts.map +1 -1
- package/build/types/integrations/tracing/connect.d.ts.map +1 -1
- package/build/types/integrations/tracing/express.d.ts.map +1 -1
- package/build/types/integrations/tracing/graphql.d.ts.map +1 -1
- package/build/types/integrations/tracing/hapi/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/kafka.d.ts.map +1 -1
- package/build/types/integrations/tracing/koa.d.ts.map +1 -1
- package/build/types/integrations/tracing/mongo.d.ts.map +1 -1
- package/build/types/integrations/tracing/mongoose.d.ts.map +1 -1
- package/build/types/integrations/tracing/mysql2.d.ts.map +1 -1
- package/build/types/integrations/tracing/postgres.d.ts.map +1 -1
- package/build/types/integrations/tracing/postgresjs.d.ts.map +1 -1
- package/build/types/integrations/tracing/vercelai/index.d.ts.map +1 -1
- package/build/types/integrations/winston.d.ts +44 -0
- package/build/types/integrations/winston.d.ts.map +1 -0
- package/build/types/logs/capture.d.ts +11 -0
- package/build/types/logs/capture.d.ts.map +1 -0
- package/build/types/logs/exports.d.ts +150 -0
- package/build/types/logs/exports.d.ts.map +1 -0
- package/build/types/nodeVersion.d.ts +8 -0
- package/build/types/nodeVersion.d.ts.map +1 -0
- package/build/types/otel/contextManager.d.ts +10 -0
- package/build/types/otel/contextManager.d.ts.map +1 -0
- package/build/types/otel/instrument.d.ts +23 -0
- package/build/types/otel/instrument.d.ts.map +1 -0
- package/build/types/proxy/base.d.ts +65 -0
- package/build/types/proxy/base.d.ts.map +1 -0
- package/build/types/proxy/helpers.d.ts +42 -0
- package/build/types/proxy/helpers.d.ts.map +1 -0
- package/build/types/proxy/index.d.ts +73 -0
- package/build/types/proxy/index.d.ts.map +1 -0
- package/build/types/proxy/parse-proxy-response.d.ts +43 -0
- package/build/types/proxy/parse-proxy-response.d.ts.map +1 -0
- package/build/types/sdk/api.d.ts +8 -0
- package/build/types/sdk/api.d.ts.map +1 -0
- package/build/types/sdk/client.d.ts +29 -0
- package/build/types/sdk/client.d.ts.map +1 -0
- package/build/types/sdk/index.d.ts +6 -2
- package/build/types/sdk/index.d.ts.map +1 -1
- package/build/types/sdk/initOtel.d.ts +1 -1
- package/build/types/sdk/initOtel.d.ts.map +1 -1
- package/build/types/sdk/scope.d.ts +7 -0
- package/build/types/sdk/scope.d.ts.map +1 -0
- package/build/types/transports/http-module.d.ts +31 -0
- package/build/types/transports/http-module.d.ts.map +1 -0
- package/build/types/transports/http.d.ts +21 -0
- package/build/types/transports/http.d.ts.map +1 -0
- package/build/types/transports/index.d.ts +3 -0
- package/build/types/transports/index.d.ts.map +1 -0
- package/build/types/types.d.ts +1 -1
- package/build/types/types.d.ts.map +1 -1
- package/build/types/utils/addOriginToSpan.d.ts +5 -0
- package/build/types/utils/addOriginToSpan.d.ts.map +1 -0
- package/build/types/utils/baggage.d.ts +6 -0
- package/build/types/utils/baggage.d.ts.map +1 -0
- package/build/types/utils/commonjs.d.ts +3 -0
- package/build/types/utils/commonjs.d.ts.map +1 -0
- package/build/types/utils/createMissingInstrumentationContext.d.ts +3 -0
- package/build/types/utils/createMissingInstrumentationContext.d.ts.map +1 -0
- package/build/types/utils/debug.d.ts +5 -0
- package/build/types/utils/debug.d.ts.map +1 -0
- package/build/types/utils/ensureIsWrapped.d.ts +5 -0
- package/build/types/utils/ensureIsWrapped.d.ts.map +1 -0
- package/build/types/utils/entry-point.d.ts +24 -0
- package/build/types/utils/entry-point.d.ts.map +1 -0
- package/build/types/utils/envToBool.d.ts +13 -0
- package/build/types/utils/envToBool.d.ts.map +1 -0
- package/build/types/utils/errorhandling.d.ts +5 -0
- package/build/types/utils/errorhandling.d.ts.map +1 -0
- package/build/types/utils/getRequestUrl.d.ts +5 -0
- package/build/types/utils/getRequestUrl.d.ts.map +1 -0
- package/build/types/utils/module.d.ts +3 -0
- package/build/types/utils/module.d.ts.map +1 -0
- package/build/types/utils/prepareEvent.d.ts +17 -0
- package/build/types/utils/prepareEvent.d.ts.map +1 -0
- package/build/types-ts3.8/cron/common.d.ts +5 -0
- package/build/types-ts3.8/cron/cron.d.ts +43 -0
- package/build/types-ts3.8/cron/index.d.ts +10 -0
- package/build/types-ts3.8/cron/node-cron.d.ts +27 -0
- package/build/types-ts3.8/cron/node-schedule.d.ts +19 -0
- package/build/types-ts3.8/index.d.ts +21 -2
- package/build/types-ts3.8/integrations/anr/common.d.ts +52 -0
- package/build/types-ts3.8/integrations/anr/index.d.ts +13 -0
- package/build/types-ts3.8/integrations/anr/worker.d.ts +2 -0
- package/build/types-ts3.8/integrations/childProcess.d.ts +20 -0
- package/build/types-ts3.8/integrations/context.d.ts +30 -0
- package/build/types-ts3.8/integrations/contextlines.d.ts +31 -0
- package/build/types-ts3.8/integrations/http/SentryHttpInstrumentation.d.ts +133 -0
- package/build/types-ts3.8/integrations/http/index.d.ts +1 -1
- package/build/types-ts3.8/integrations/local-variables/common.d.ts +66 -0
- package/build/types-ts3.8/integrations/local-variables/index.d.ts +4 -0
- package/build/types-ts3.8/integrations/local-variables/local-variables-async.d.ts +7 -0
- package/build/types-ts3.8/integrations/local-variables/local-variables-sync.d.ts +34 -0
- package/build/types-ts3.8/integrations/local-variables/worker.d.ts +2 -0
- package/build/types-ts3.8/integrations/modules.d.ts +17 -0
- package/build/types-ts3.8/integrations/node-fetch/SentryNodeFetchInstrumentation.d.ts +56 -0
- package/build/types-ts3.8/integrations/onuncaughtexception.d.ts +31 -0
- package/build/types-ts3.8/integrations/onunhandledrejection.d.ts +23 -0
- package/build/types-ts3.8/integrations/processSession.d.ts +5 -0
- package/build/types-ts3.8/integrations/spotlight.d.ts +18 -0
- package/build/types-ts3.8/integrations/winston.d.ts +44 -0
- package/build/types-ts3.8/logs/capture.d.ts +18 -0
- package/build/types-ts3.8/logs/exports.d.ts +150 -0
- package/build/types-ts3.8/nodeVersion.d.ts +8 -0
- package/build/types-ts3.8/otel/contextManager.d.ts +10 -0
- package/build/types-ts3.8/otel/instrument.d.ts +23 -0
- package/build/types-ts3.8/proxy/base.d.ts +60 -0
- package/build/types-ts3.8/proxy/helpers.d.ts +38 -0
- package/build/types-ts3.8/proxy/index.d.ts +74 -0
- package/build/types-ts3.8/proxy/parse-proxy-response.d.ts +40 -0
- package/build/types-ts3.8/sdk/api.d.ts +8 -0
- package/build/types-ts3.8/sdk/client.d.ts +32 -0
- package/build/types-ts3.8/sdk/index.d.ts +6 -2
- package/build/types-ts3.8/sdk/initOtel.d.ts +1 -1
- package/build/types-ts3.8/sdk/scope.d.ts +7 -0
- package/build/types-ts3.8/transports/http-module.d.ts +28 -0
- package/build/types-ts3.8/transports/http.d.ts +20 -0
- package/build/types-ts3.8/transports/index.d.ts +3 -0
- package/build/types-ts3.8/types.d.ts +1 -1
- package/build/types-ts3.8/utils/addOriginToSpan.d.ts +5 -0
- package/build/types-ts3.8/utils/baggage.d.ts +6 -0
- package/build/types-ts3.8/utils/commonjs.d.ts +3 -0
- package/build/types-ts3.8/utils/createMissingInstrumentationContext.d.ts +3 -0
- package/build/types-ts3.8/utils/debug.d.ts +5 -0
- package/build/types-ts3.8/utils/ensureIsWrapped.d.ts +5 -0
- package/build/types-ts3.8/utils/entry-point.d.ts +24 -0
- package/build/types-ts3.8/utils/envToBool.d.ts +13 -0
- package/build/types-ts3.8/utils/errorhandling.d.ts +5 -0
- package/build/types-ts3.8/utils/getRequestUrl.d.ts +5 -0
- package/build/types-ts3.8/utils/module.d.ts +3 -0
- package/build/types-ts3.8/utils/prepareEvent.d.ts +17 -0
- package/package.json +3 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.js","sources":["../../../../src/integrations/tracing/redis.ts"],"sourcesContent":["import type { Span } from '@opentelemetry/api';\nimport type { RedisResponseCustomAttributeFunction } from '@opentelemetry/instrumentation-ioredis';\nimport { IORedisInstrumentation } from '@opentelemetry/instrumentation-ioredis';\nimport { RedisInstrumentation } from '@opentelemetry/instrumentation-redis-4';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n defineIntegration,\n SEMANTIC_ATTRIBUTE_CACHE_HIT,\n SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,\n SEMANTIC_ATTRIBUTE_CACHE_KEY,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n spanToJSON,\n truncate,\n} from '@sentry/core';\nimport { generateInstrumentOnce } from '
|
|
1
|
+
{"version":3,"file":"redis.js","sources":["../../../../src/integrations/tracing/redis.ts"],"sourcesContent":["import type { Span } from '@opentelemetry/api';\nimport type { RedisResponseCustomAttributeFunction } from '@opentelemetry/instrumentation-ioredis';\nimport { IORedisInstrumentation } from '@opentelemetry/instrumentation-ioredis';\nimport { RedisInstrumentation } from '@opentelemetry/instrumentation-redis-4';\nimport type { IntegrationFn } from '@sentry/core';\nimport {\n defineIntegration,\n SEMANTIC_ATTRIBUTE_CACHE_HIT,\n SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE,\n SEMANTIC_ATTRIBUTE_CACHE_KEY,\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n spanToJSON,\n truncate,\n} from '@sentry/core';\nimport { generateInstrumentOnce } from '../../otel/instrument';\nimport {\n calculateCacheItemSize,\n GET_COMMANDS,\n getCacheKeySafely,\n getCacheOperation,\n isInCommands,\n shouldConsiderForCache,\n} from '../../utils/redisCache';\n\ninterface RedisOptions {\n cachePrefixes?: string[];\n}\n\nconst INTEGRATION_NAME = 'Redis';\n\nlet _redisOptions: RedisOptions = {};\n\nconst cacheResponseHook: RedisResponseCustomAttributeFunction = (span: Span, redisCommand, cmdArgs, response) => {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.redis');\n\n const safeKey = getCacheKeySafely(redisCommand, cmdArgs);\n const cacheOperation = getCacheOperation(redisCommand);\n\n if (\n !safeKey ||\n !cacheOperation ||\n !_redisOptions.cachePrefixes ||\n !shouldConsiderForCache(redisCommand, safeKey, _redisOptions.cachePrefixes)\n ) {\n // not relevant for cache\n return;\n }\n\n // otel/ioredis seems to be using the old standard, as there was a change to those params: https://github.com/open-telemetry/opentelemetry-specification/issues/3199\n // We are using params based on the docs: https://opentelemetry.io/docs/specs/semconv/attributes-registry/network/\n const networkPeerAddress = spanToJSON(span).data['net.peer.name'];\n const networkPeerPort = spanToJSON(span).data['net.peer.port'];\n if (networkPeerPort && networkPeerAddress) {\n span.setAttributes({ 'network.peer.address': networkPeerAddress, 'network.peer.port': networkPeerPort });\n }\n\n const cacheItemSize = calculateCacheItemSize(response);\n\n if (cacheItemSize) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_ITEM_SIZE, cacheItemSize);\n }\n\n if (isInCommands(GET_COMMANDS, redisCommand) && cacheItemSize !== undefined) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_CACHE_HIT, cacheItemSize > 0);\n }\n\n span.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: cacheOperation,\n [SEMANTIC_ATTRIBUTE_CACHE_KEY]: safeKey,\n });\n\n const spanDescription = safeKey.join(', ');\n\n span.updateName(truncate(spanDescription, 1024));\n};\n\nconst instrumentIORedis = generateInstrumentOnce('IORedis', () => {\n return new IORedisInstrumentation({\n responseHook: cacheResponseHook,\n });\n});\n\nconst instrumentRedis4 = generateInstrumentOnce('Redis-4', () => {\n return new RedisInstrumentation({\n responseHook: cacheResponseHook,\n });\n});\n\n/** To be able to preload all Redis OTel instrumentations with just one ID (\"Redis\"), all the instrumentations are generated in this one function */\nexport const instrumentRedis = Object.assign(\n (): void => {\n instrumentIORedis();\n instrumentRedis4();\n\n // todo: implement them gradually\n // new LegacyRedisInstrumentation({}),\n },\n { id: INTEGRATION_NAME },\n);\n\nconst _redisIntegration = ((options: RedisOptions = {}) => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n _redisOptions = options;\n instrumentRedis();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [redis](https://www.npmjs.com/package/redis) and\n * [ioredis](https://www.npmjs.com/package/ioredis) libraries.\n *\n * For more information, see the [`redisIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/redis/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.redisIntegration()],\n * });\n * ```\n */\nexport const redisIntegration = defineIntegration(_redisIntegration);\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious';
|
|
2
2
|
import { defineIntegration, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core';
|
|
3
|
-
import { generateInstrumentOnce, instrumentWhenWrapped } from '
|
|
3
|
+
import { generateInstrumentOnce, instrumentWhenWrapped } from '../../otel/instrument.js';
|
|
4
4
|
|
|
5
5
|
const TEDIUS_INSTRUMENTED_METHODS = new Set([
|
|
6
6
|
'callProcedure',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tedious.js","sources":["../../../../src/integrations/tracing/tedious.ts"],"sourcesContent":["import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '
|
|
1
|
+
{"version":3,"file":"tedious.js","sources":["../../../../src/integrations/tracing/tedious.ts"],"sourcesContent":["import { TediousInstrumentation } from '@opentelemetry/instrumentation-tedious';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '../../otel/instrument';\n\nconst TEDIUS_INSTRUMENTED_METHODS = new Set([\n 'callProcedure',\n 'execSql',\n 'execSqlBatch',\n 'execBulkLoad',\n 'prepare',\n 'execute',\n]);\n\nconst INTEGRATION_NAME = 'Tedious';\n\nexport const instrumentTedious = generateInstrumentOnce(INTEGRATION_NAME, () => new TediousInstrumentation({}));\n\nconst _tediousIntegration = (() => {\n let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const instrumentation = instrumentTedious();\n instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n },\n\n setup(client) {\n instrumentationWrappedCallback?.(() =>\n client.on('spanStart', span => {\n const { description, data } = spanToJSON(span);\n // Tedius integration always set a span name and `db.system` attribute to `mssql`.\n if (!description || data['db.system'] !== 'mssql') {\n return;\n }\n\n const operation = description.split(' ')[0] || '';\n if (TEDIUS_INSTRUMENTED_METHODS.has(operation)) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.tedious');\n }\n }),\n );\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [tedious](https://www.npmjs.com/package/tedious) library.\n *\n * For more information, see the [`tediousIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/tedious/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.tediousIntegration()],\n * });\n * ```\n */\nexport const tediousIntegration = defineIntegration(_tediousIntegration);\n"],"names":[],"mappings":";;;;AAKA,MAAM,2BAA4B,GAAE,IAAI,GAAG,CAAC;AAC5C,EAAE,eAAe;AACjB,EAAE,SAAS;AACX,EAAE,cAAc;AAChB,EAAE,cAAc;AAChB,EAAE,SAAS;AACX,EAAE,SAAS;AACX,CAAC,CAAC;;AAEF,MAAM,gBAAA,GAAmB,SAAS;;MAErB,iBAAkB,GAAE,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,IAAI,sBAAsB,CAAC,EAAE,CAAC;;AAE9G,MAAM,mBAAoB,IAAG,MAAM;AACnC,EAAE,IAAI,8BAA8B;;AAEpC,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,SAAS,GAAG;AAChB,MAAM,MAAM,eAAA,GAAkB,iBAAiB,EAAE;AACjD,MAAM,8BAA+B,GAAE,qBAAqB,CAAC,eAAe,CAAC;AAC7E,KAAK;;AAEL,IAAI,KAAK,CAAC,MAAM,EAAE;AAClB,MAAM,8BAA8B,GAAG;AACvC,QAAQ,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ;AACvC,UAAU,MAAM,EAAE,WAAW,EAAE,IAAA,KAAS,UAAU,CAAC,IAAI,CAAC;AACxD;AACA,UAAU,IAAI,CAAC,WAAY,IAAG,IAAI,CAAC,WAAW,CAAA,KAAM,OAAO,EAAE;AAC7D,YAAY;AACZ;;AAEA,UAAU,MAAM,SAAA,GAAY,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA,IAAK,EAAE;AAC3D,UAAU,IAAI,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AAC1D,YAAY,IAAI,CAAC,YAAY,CAAC,gCAAgC,EAAE,sBAAsB,CAAC;AACvF;AACA,SAAS,CAAC;AACV,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC,CAAE;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACa,kBAAmB,GAAE,iBAAiB,CAAC,mBAAmB;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { defineIntegration, addVercelAiProcessors } from '@sentry/core';
|
|
2
|
-
import { generateInstrumentOnce } from '
|
|
2
|
+
import { generateInstrumentOnce } from '../../../otel/instrument.js';
|
|
3
3
|
import { INTEGRATION_NAME } from './constants.js';
|
|
4
4
|
import { SentryVercelAiInstrumentation } from './instrumentation.js';
|
|
5
5
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/vercelai/index.ts"],"sourcesContent":["import type { Client, IntegrationFn } from '@sentry/core';\nimport { addVercelAiProcessors, defineIntegration } from '@sentry/core';\nimport { type modulesIntegration
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/vercelai/index.ts"],"sourcesContent":["import type { Client, IntegrationFn } from '@sentry/core';\nimport { addVercelAiProcessors, defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '../../../otel/instrument';\nimport type { modulesIntegration } from '../../modules';\nimport { INTEGRATION_NAME } from './constants';\nimport { SentryVercelAiInstrumentation } from './instrumentation';\nimport type { VercelAiOptions } from './types';\n\nexport const instrumentVercelAi = generateInstrumentOnce(INTEGRATION_NAME, () => new SentryVercelAiInstrumentation({}));\n\n/**\n * Determines if the integration should be forced based on environment and package availability.\n * Returns true if the 'ai' package is available.\n */\nfunction shouldForceIntegration(client: Client): boolean {\n const modules = client.getIntegrationByName<ReturnType<typeof modulesIntegration>>('Modules');\n return !!modules?.getModules?.()?.ai;\n}\n\nconst _vercelAIIntegration = ((options: VercelAiOptions = {}) => {\n let instrumentation: undefined | SentryVercelAiInstrumentation;\n\n return {\n name: INTEGRATION_NAME,\n options,\n setupOnce() {\n instrumentation = instrumentVercelAi();\n },\n afterAllSetup(client) {\n // Auto-detect if we should force the integration when running with 'ai' package available\n // Note that this can only be detected if the 'Modules' integration is available, and running in CJS mode\n const shouldForce = options.force ?? shouldForceIntegration(client);\n\n if (shouldForce) {\n addVercelAiProcessors(client);\n } else {\n instrumentation?.callWhenPatched(() => addVercelAiProcessors(client));\n }\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [ai](https://www.npmjs.com/package/ai) library.\n * This integration is not enabled by default, you need to manually add it.\n *\n * For more information, see the [`ai` documentation](https://sdk.vercel.ai/docs/ai-sdk-core/telemetry).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.vercelAIIntegration()],\n * });\n * ```\n *\n * This integration adds tracing support to all `ai` function calls.\n * You need to opt-in to collecting spans for a specific call,\n * you can do so by setting `experimental_telemetry.isEnabled` to `true` in the first argument of the function call.\n *\n * ```javascript\n * const result = await generateText({\n * model: openai('gpt-4-turbo'),\n * experimental_telemetry: { isEnabled: true },\n * });\n * ```\n *\n * If you want to collect inputs and outputs for a specific call, you must specifically opt-in to each\n * function call by setting `experimental_telemetry.recordInputs` and `experimental_telemetry.recordOutputs`\n * to `true`.\n *\n * ```javascript\n * const result = await generateText({\n * model: openai('gpt-4-turbo'),\n * experimental_telemetry: { isEnabled: true, recordInputs: true, recordOutputs: true },\n * });\n */\nexport const vercelAIIntegration = defineIntegration(_vercelAIIntegration);\n"],"names":[],"mappings":";;;;;MAQa,kBAAmB,GAAE,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,IAAI,6BAA6B,CAAC,EAAE,CAAC;;AAEtH;AACA;AACA;AACA;AACA,SAAS,sBAAsB,CAAC,MAAM,EAAmB;AACzD,EAAE,MAAM,UAAU,MAAM,CAAC,oBAAoB,CAAwC,SAAS,CAAC;AAC/F,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,EAAE;AACtC;;AAEA,MAAM,oBAAA,IAAwB,CAAC,OAAO,GAAoB,EAAE,KAAK;AACjE,EAAE,IAAI,eAAe;;AAErB,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,gBAAgB;AAC1B,IAAI,OAAO;AACX,IAAI,SAAS,GAAG;AAChB,MAAM,eAAgB,GAAE,kBAAkB,EAAE;AAC5C,KAAK;AACL,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B;AACA;AACA,MAAM,MAAM,WAAY,GAAE,OAAO,CAAC,SAAS,sBAAsB,CAAC,MAAM,CAAC;;AAEzE,MAAM,IAAI,WAAW,EAAE;AACvB,QAAQ,qBAAqB,CAAC,MAAM,CAAC;AACrC,aAAa;AACb,QAAQ,eAAe,EAAE,eAAe,CAAC,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC7E;AACA,KAAK;AACL,GAAG;AACH,CAAC,CAAE;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACa,mBAAoB,GAAE,iBAAiB,CAAC,oBAAoB;;;;"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { captureLog } from '../logs/capture.js';
|
|
2
|
+
|
|
3
|
+
const DEFAULT_CAPTURED_LEVELS = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];
|
|
4
|
+
|
|
5
|
+
// See: https://github.com/winstonjs/triple-beam
|
|
6
|
+
const LEVEL_SYMBOL = Symbol.for('level');
|
|
7
|
+
const MESSAGE_SYMBOL = Symbol.for('message');
|
|
8
|
+
const SPLAT_SYMBOL = Symbol.for('splat');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Options for the Sentry Winston transport.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Creates a new Sentry Winston transport that fowards logs to Sentry. Requires `_experiments.enableLogs` to be enabled.
|
|
16
|
+
*
|
|
17
|
+
* Supports Winston 3.x.x.
|
|
18
|
+
*
|
|
19
|
+
* @param TransportClass - The Winston transport class to extend.
|
|
20
|
+
* @returns The extended transport class.
|
|
21
|
+
*
|
|
22
|
+
* @experimental This method will experience breaking changes. This is not yet part of
|
|
23
|
+
* the stable Sentry SDK API and can be changed or removed without warning.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const winston = require('winston');
|
|
28
|
+
* const Transport = require('winston-transport');
|
|
29
|
+
*
|
|
30
|
+
* const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport);
|
|
31
|
+
*
|
|
32
|
+
* const logger = winston.createLogger({
|
|
33
|
+
* transports: [new SentryWinstonTransport()],
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
function createSentryWinstonTransport(
|
|
38
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
+
TransportClass,
|
|
40
|
+
sentryWinstonOptions,
|
|
41
|
+
) {
|
|
42
|
+
// @ts-ignore - We know this is safe because SentryWinstonTransport extends TransportClass
|
|
43
|
+
class SentryWinstonTransport extends TransportClass {
|
|
44
|
+
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
+
constructor(options) {
|
|
47
|
+
super(options);
|
|
48
|
+
this._levels = new Set(sentryWinstonOptions?.levels ?? DEFAULT_CAPTURED_LEVELS);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Forwards a winston log to the Sentry SDK.
|
|
53
|
+
*/
|
|
54
|
+
log(info, callback) {
|
|
55
|
+
try {
|
|
56
|
+
setImmediate(() => {
|
|
57
|
+
// @ts-ignore - We know this is safe because SentryWinstonTransport extends TransportClass
|
|
58
|
+
this.emit('logged', info);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
if (!isObject(info)) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const levelFromSymbol = info[LEVEL_SYMBOL];
|
|
66
|
+
|
|
67
|
+
// See: https://github.com/winstonjs/winston?tab=readme-ov-file#streams-objectmode-and-info-objects
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
69
|
+
const { level, message, timestamp, ...attributes } = info;
|
|
70
|
+
// Remove all symbols from the remaining attributes
|
|
71
|
+
attributes[LEVEL_SYMBOL] = undefined;
|
|
72
|
+
attributes[MESSAGE_SYMBOL] = undefined;
|
|
73
|
+
attributes[SPLAT_SYMBOL] = undefined;
|
|
74
|
+
|
|
75
|
+
const logSeverityLevel = WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[levelFromSymbol ] ?? 'info';
|
|
76
|
+
if (this._levels.has(logSeverityLevel)) {
|
|
77
|
+
captureLog(logSeverityLevel, message , {
|
|
78
|
+
...attributes,
|
|
79
|
+
'sentry.origin': 'auto.logging.winston',
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
} catch {
|
|
83
|
+
// do nothing
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (callback) {
|
|
87
|
+
callback();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return SentryWinstonTransport ;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function isObject(anything) {
|
|
96
|
+
return typeof anything === 'object' && anything != null;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// npm
|
|
100
|
+
// {
|
|
101
|
+
// error: 0,
|
|
102
|
+
// warn: 1,
|
|
103
|
+
// info: 2,
|
|
104
|
+
// http: 3,
|
|
105
|
+
// verbose: 4,
|
|
106
|
+
// debug: 5,
|
|
107
|
+
// silly: 6
|
|
108
|
+
// }
|
|
109
|
+
//
|
|
110
|
+
// syslog
|
|
111
|
+
// {
|
|
112
|
+
// emerg: 0,
|
|
113
|
+
// alert: 1,
|
|
114
|
+
// crit: 2,
|
|
115
|
+
// error: 3,
|
|
116
|
+
// warning: 4,
|
|
117
|
+
// notice: 5,
|
|
118
|
+
// info: 6,
|
|
119
|
+
// debug: 7,
|
|
120
|
+
// }
|
|
121
|
+
const WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP = {
|
|
122
|
+
// npm
|
|
123
|
+
silly: 'trace',
|
|
124
|
+
// npm and syslog
|
|
125
|
+
debug: 'debug',
|
|
126
|
+
// npm
|
|
127
|
+
verbose: 'debug',
|
|
128
|
+
// npm
|
|
129
|
+
http: 'debug',
|
|
130
|
+
// npm and syslog
|
|
131
|
+
info: 'info',
|
|
132
|
+
// syslog
|
|
133
|
+
notice: 'info',
|
|
134
|
+
// npm
|
|
135
|
+
warn: 'warn',
|
|
136
|
+
// syslog
|
|
137
|
+
warning: 'warn',
|
|
138
|
+
// npm and syslog
|
|
139
|
+
error: 'error',
|
|
140
|
+
// syslog
|
|
141
|
+
emerg: 'fatal',
|
|
142
|
+
// syslog
|
|
143
|
+
alert: 'fatal',
|
|
144
|
+
// syslog
|
|
145
|
+
crit: 'fatal',
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
export { createSentryWinstonTransport };
|
|
149
|
+
//# sourceMappingURL=winston.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"winston.js","sources":["../../../src/integrations/winston.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport type { LogSeverityLevel } from '@sentry/core';\nimport { captureLog } from '../logs/capture';\n\nconst DEFAULT_CAPTURED_LEVELS: Array<LogSeverityLevel> = ['trace', 'debug', 'info', 'warn', 'error', 'fatal'];\n\n// See: https://github.com/winstonjs/triple-beam\nconst LEVEL_SYMBOL = Symbol.for('level');\nconst MESSAGE_SYMBOL = Symbol.for('message');\nconst SPLAT_SYMBOL = Symbol.for('splat');\n\n/**\n * Options for the Sentry Winston transport.\n */\ninterface WinstonTransportOptions {\n /**\n * Use this option to filter which levels should be captured. By default, all levels are captured.\n *\n * @example\n * ```ts\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport, {\n * // Only capture error and warn logs\n * levels: ['error', 'warn'],\n * });\n * ```\n */\n levels?: Array<LogSeverityLevel>;\n}\n\n/**\n * Creates a new Sentry Winston transport that fowards logs to Sentry. Requires `_experiments.enableLogs` to be enabled.\n *\n * Supports Winston 3.x.x.\n *\n * @param TransportClass - The Winston transport class to extend.\n * @returns The extended transport class.\n *\n * @experimental This method will experience breaking changes. This is not yet part of\n * the stable Sentry SDK API and can be changed or removed without warning.\n *\n * @example\n * ```ts\n * const winston = require('winston');\n * const Transport = require('winston-transport');\n *\n * const SentryWinstonTransport = Sentry.createSentryWinstonTransport(Transport);\n *\n * const logger = winston.createLogger({\n * transports: [new SentryWinstonTransport()],\n * });\n * ```\n */\nexport function createSentryWinstonTransport<TransportStreamInstance extends object>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TransportClass: new (options?: any) => TransportStreamInstance,\n sentryWinstonOptions?: WinstonTransportOptions,\n): typeof TransportClass {\n // @ts-ignore - We know this is safe because SentryWinstonTransport extends TransportClass\n class SentryWinstonTransport extends TransportClass {\n private _levels: Set<LogSeverityLevel>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public constructor(options?: any) {\n super(options);\n this._levels = new Set(sentryWinstonOptions?.levels ?? DEFAULT_CAPTURED_LEVELS);\n }\n\n /**\n * Forwards a winston log to the Sentry SDK.\n */\n public log(info: unknown, callback: () => void): void {\n try {\n setImmediate(() => {\n // @ts-ignore - We know this is safe because SentryWinstonTransport extends TransportClass\n this.emit('logged', info);\n });\n\n if (!isObject(info)) {\n return;\n }\n\n const levelFromSymbol = info[LEVEL_SYMBOL];\n\n // See: https://github.com/winstonjs/winston?tab=readme-ov-file#streams-objectmode-and-info-objects\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { level, message, timestamp, ...attributes } = info;\n // Remove all symbols from the remaining attributes\n attributes[LEVEL_SYMBOL] = undefined;\n attributes[MESSAGE_SYMBOL] = undefined;\n attributes[SPLAT_SYMBOL] = undefined;\n\n const logSeverityLevel = WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP[levelFromSymbol as string] ?? 'info';\n if (this._levels.has(logSeverityLevel)) {\n captureLog(logSeverityLevel, message as string, {\n ...attributes,\n 'sentry.origin': 'auto.logging.winston',\n });\n }\n } catch {\n // do nothing\n }\n\n if (callback) {\n callback();\n }\n }\n }\n\n return SentryWinstonTransport as typeof TransportClass;\n}\n\nfunction isObject(anything: unknown): anything is Record<string | symbol, unknown> {\n return typeof anything === 'object' && anything != null;\n}\n\n// npm\n// {\n// error: 0,\n// warn: 1,\n// info: 2,\n// http: 3,\n// verbose: 4,\n// debug: 5,\n// silly: 6\n// }\n//\n// syslog\n// {\n// emerg: 0,\n// alert: 1,\n// crit: 2,\n// error: 3,\n// warning: 4,\n// notice: 5,\n// info: 6,\n// debug: 7,\n// }\nconst WINSTON_LEVEL_TO_LOG_SEVERITY_LEVEL_MAP: Record<string, LogSeverityLevel> = {\n // npm\n silly: 'trace',\n // npm and syslog\n debug: 'debug',\n // npm\n verbose: 'debug',\n // npm\n http: 'debug',\n // npm and syslog\n info: 'info',\n // syslog\n notice: 'info',\n // npm\n warn: 'warn',\n // syslog\n warning: 'warn',\n // npm and syslog\n error: 'error',\n // syslog\n emerg: 'fatal',\n // syslog\n alert: 'fatal',\n // syslog\n crit: 'fatal',\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { format } from 'node:util';
|
|
2
|
+
import { _INTERNAL_captureLog } from '@sentry/core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Capture a log with the given level.
|
|
6
|
+
*
|
|
7
|
+
* @param level - The level of the log.
|
|
8
|
+
* @param message - The message to log.
|
|
9
|
+
* @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100.
|
|
10
|
+
*/
|
|
11
|
+
function captureLog(level, ...args) {
|
|
12
|
+
const [messageOrMessageTemplate, paramsOrAttributes, maybeAttributes] = args;
|
|
13
|
+
if (Array.isArray(paramsOrAttributes)) {
|
|
14
|
+
const attributes = { ...maybeAttributes };
|
|
15
|
+
attributes['sentry.message.template'] = messageOrMessageTemplate;
|
|
16
|
+
paramsOrAttributes.forEach((param, index) => {
|
|
17
|
+
attributes[`sentry.message.parameter.${index}`] = param;
|
|
18
|
+
});
|
|
19
|
+
const message = format(messageOrMessageTemplate, ...paramsOrAttributes);
|
|
20
|
+
_INTERNAL_captureLog({ level, message, attributes });
|
|
21
|
+
} else {
|
|
22
|
+
_INTERNAL_captureLog({ level, message: messageOrMessageTemplate, attributes: paramsOrAttributes });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { captureLog };
|
|
27
|
+
//# sourceMappingURL=capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.js","sources":["../../../src/logs/capture.ts"],"sourcesContent":["import { format } from 'node:util';\nimport type { Log, LogSeverityLevel, ParameterizedString } from '@sentry/core';\nimport { _INTERNAL_captureLog } from '@sentry/core';\n\nexport type CaptureLogArgs =\n | [message: ParameterizedString, attributes?: Log['attributes']]\n | [messageTemplate: string, messageParams: Array<unknown>, attributes?: Log['attributes']];\n\n/**\n * Capture a log with the given level.\n *\n * @param level - The level of the log.\n * @param message - The message to log.\n * @param attributes - Arbitrary structured data that stores information about the log - e.g., userId: 100.\n */\nexport function captureLog(level: LogSeverityLevel, ...args: CaptureLogArgs): void {\n const [messageOrMessageTemplate, paramsOrAttributes, maybeAttributes] = args;\n if (Array.isArray(paramsOrAttributes)) {\n const attributes = { ...maybeAttributes };\n attributes['sentry.message.template'] = messageOrMessageTemplate;\n paramsOrAttributes.forEach((param, index) => {\n attributes[`sentry.message.parameter.${index}`] = param;\n });\n const message = format(messageOrMessageTemplate, ...paramsOrAttributes);\n _INTERNAL_captureLog({ level, message, attributes });\n } else {\n _INTERNAL_captureLog({ level, message: messageOrMessageTemplate, attributes: paramsOrAttributes });\n }\n}\n"],"names":[],"mappings":";;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,UAAU,CAAC,KAAK,EAAoB,GAAG,IAAI,EAAwB;AACnF,EAAE,MAAM,CAAC,wBAAwB,EAAE,kBAAkB,EAAE,eAAe,CAAE,GAAE,IAAI;AAC9E,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;AACzC,IAAI,MAAM,UAAW,GAAE,EAAE,GAAG,iBAAiB;AAC7C,IAAI,UAAU,CAAC,yBAAyB,CAAA,GAAI,wBAAwB;AACpE,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK;AACjD,MAAM,UAAU,CAAC,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAA,CAAA,GAAA,KAAA;AACA,KAAA,CAAA;AACA,IAAA,MAAA,OAAA,GAAA,MAAA,CAAA,wBAAA,EAAA,GAAA,kBAAA,CAAA;AACA,IAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,CAAA;AACA,GAAA,MAAA;AACA,IAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,CAAA;AACA;AACA;;;;"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { captureLog } from './capture.js';
|
|
2
|
+
export { fmt } from '@sentry/core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @summary Capture a log with the `trace` level. Requires `_experiments.enableLogs` to be enabled.
|
|
6
|
+
*
|
|
7
|
+
* You can either pass a message and attributes or a message template, params and attributes.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
*
|
|
11
|
+
* ```
|
|
12
|
+
* Sentry.logger.trace('Starting database connection', {
|
|
13
|
+
* database: 'users',
|
|
14
|
+
* connectionId: 'conn_123'
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @example With template strings
|
|
19
|
+
*
|
|
20
|
+
* ```
|
|
21
|
+
* Sentry.logger.trace('Database connection %s established for %s',
|
|
22
|
+
* ['successful', 'users'],
|
|
23
|
+
* { connectionId: 'conn_123' }
|
|
24
|
+
* );
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
function trace(...args) {
|
|
28
|
+
captureLog('trace', ...args);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @summary Capture a log with the `debug` level. Requires `_experiments.enableLogs` to be enabled.
|
|
33
|
+
*
|
|
34
|
+
* You can either pass a message and attributes or a message template, params and attributes.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
*
|
|
38
|
+
* ```
|
|
39
|
+
* Sentry.logger.debug('Cache miss for user profile', {
|
|
40
|
+
* userId: 'user_123',
|
|
41
|
+
* cacheKey: 'profile:user_123'
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @example With template strings
|
|
46
|
+
*
|
|
47
|
+
* ```
|
|
48
|
+
* Sentry.logger.debug('Cache %s for %s: %s',
|
|
49
|
+
* ['miss', 'user profile', 'key not found'],
|
|
50
|
+
* { userId: 'user_123' }
|
|
51
|
+
* );
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
function debug(...args) {
|
|
55
|
+
captureLog('debug', ...args);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @summary Capture a log with the `info` level. Requires `_experiments.enableLogs` to be enabled.
|
|
60
|
+
*
|
|
61
|
+
* You can either pass a message and attributes or a message template, params and attributes.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
*
|
|
65
|
+
* ```
|
|
66
|
+
* Sentry.logger.info('User profile updated', {
|
|
67
|
+
* userId: 'user_123',
|
|
68
|
+
* updatedFields: ['email', 'preferences']
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @example With template strings
|
|
73
|
+
*
|
|
74
|
+
* ```
|
|
75
|
+
* Sentry.logger.info('User %s updated their %s',
|
|
76
|
+
* ['John Doe', 'profile settings'],
|
|
77
|
+
* { userId: 'user_123' }
|
|
78
|
+
* );
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
function info(...args) {
|
|
82
|
+
captureLog('info', ...args);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @summary Capture a log with the `warn` level. Requires `_experiments.enableLogs` to be enabled.
|
|
87
|
+
*
|
|
88
|
+
* You can either pass a message and attributes or a message template, params and attributes.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
*
|
|
92
|
+
* ```
|
|
93
|
+
* Sentry.logger.warn('Rate limit approaching', {
|
|
94
|
+
* endpoint: '/api/users',
|
|
95
|
+
* currentRate: '95/100',
|
|
96
|
+
* resetTime: '2024-03-20T10:00:00Z'
|
|
97
|
+
* });
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* @example With template strings
|
|
101
|
+
*
|
|
102
|
+
* ```
|
|
103
|
+
* Sentry.logger.warn('Rate limit %s for %s: %s',
|
|
104
|
+
* ['approaching', '/api/users', '95/100 requests'],
|
|
105
|
+
* { resetTime: '2024-03-20T10:00:00Z' }
|
|
106
|
+
* );
|
|
107
|
+
* ```
|
|
108
|
+
*/
|
|
109
|
+
function warn(...args) {
|
|
110
|
+
captureLog('warn', ...args);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* @summary Capture a log with the `error` level. Requires `_experiments.enableLogs` to be enabled.
|
|
115
|
+
*
|
|
116
|
+
* You can either pass a message and attributes or a message template, params and attributes.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
*
|
|
120
|
+
* ```
|
|
121
|
+
* Sentry.logger.error('Failed to process payment', {
|
|
122
|
+
* orderId: 'order_123',
|
|
123
|
+
* errorCode: 'PAYMENT_FAILED',
|
|
124
|
+
* amount: 99.99
|
|
125
|
+
* });
|
|
126
|
+
* ```
|
|
127
|
+
*
|
|
128
|
+
* @example With template strings
|
|
129
|
+
*
|
|
130
|
+
* ```
|
|
131
|
+
* Sentry.logger.error('Payment processing failed for order %s: %s',
|
|
132
|
+
* ['order_123', 'insufficient funds'],
|
|
133
|
+
* { amount: 99.99 }
|
|
134
|
+
* );
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
function error(...args) {
|
|
138
|
+
captureLog('error', ...args);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @summary Capture a log with the `fatal` level. Requires `_experiments.enableLogs` to be enabled.
|
|
143
|
+
*
|
|
144
|
+
* You can either pass a message and attributes or a message template, params and attributes.
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
*
|
|
148
|
+
* ```
|
|
149
|
+
* Sentry.logger.fatal('Database connection pool exhausted', {
|
|
150
|
+
* database: 'users',
|
|
151
|
+
* activeConnections: 100,
|
|
152
|
+
* maxConnections: 100
|
|
153
|
+
* });
|
|
154
|
+
* ```
|
|
155
|
+
*
|
|
156
|
+
* @example With template strings
|
|
157
|
+
*
|
|
158
|
+
* ```
|
|
159
|
+
* Sentry.logger.fatal('Database %s: %s connections active',
|
|
160
|
+
* ['connection pool exhausted', '100/100'],
|
|
161
|
+
* { database: 'users' }
|
|
162
|
+
* );
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
function fatal(...args) {
|
|
166
|
+
captureLog('fatal', ...args);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export { debug, error, fatal, info, trace, warn };
|
|
170
|
+
//# sourceMappingURL=exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports.js","sources":["../../../src/logs/exports.ts"],"sourcesContent":["import { type CaptureLogArgs, captureLog } from './capture';\n\n/**\n * @summary Capture a log with the `trace` level. Requires `_experiments.enableLogs` to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.trace('Starting database connection', {\n * database: 'users',\n * connectionId: 'conn_123'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.trace('Database connection %s established for %s',\n * ['successful', 'users'],\n * { connectionId: 'conn_123' }\n * );\n * ```\n */\nexport function trace(...args: CaptureLogArgs): void {\n captureLog('trace', ...args);\n}\n\n/**\n * @summary Capture a log with the `debug` level. Requires `_experiments.enableLogs` to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.debug('Cache miss for user profile', {\n * userId: 'user_123',\n * cacheKey: 'profile:user_123'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.debug('Cache %s for %s: %s',\n * ['miss', 'user profile', 'key not found'],\n * { userId: 'user_123' }\n * );\n * ```\n */\nexport function debug(...args: CaptureLogArgs): void {\n captureLog('debug', ...args);\n}\n\n/**\n * @summary Capture a log with the `info` level. Requires `_experiments.enableLogs` to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.info('User profile updated', {\n * userId: 'user_123',\n * updatedFields: ['email', 'preferences']\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.info('User %s updated their %s',\n * ['John Doe', 'profile settings'],\n * { userId: 'user_123' }\n * );\n * ```\n */\nexport function info(...args: CaptureLogArgs): void {\n captureLog('info', ...args);\n}\n\n/**\n * @summary Capture a log with the `warn` level. Requires `_experiments.enableLogs` to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.warn('Rate limit approaching', {\n * endpoint: '/api/users',\n * currentRate: '95/100',\n * resetTime: '2024-03-20T10:00:00Z'\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.warn('Rate limit %s for %s: %s',\n * ['approaching', '/api/users', '95/100 requests'],\n * { resetTime: '2024-03-20T10:00:00Z' }\n * );\n * ```\n */\nexport function warn(...args: CaptureLogArgs): void {\n captureLog('warn', ...args);\n}\n\n/**\n * @summary Capture a log with the `error` level. Requires `_experiments.enableLogs` to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.error('Failed to process payment', {\n * orderId: 'order_123',\n * errorCode: 'PAYMENT_FAILED',\n * amount: 99.99\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.error('Payment processing failed for order %s: %s',\n * ['order_123', 'insufficient funds'],\n * { amount: 99.99 }\n * );\n * ```\n */\nexport function error(...args: CaptureLogArgs): void {\n captureLog('error', ...args);\n}\n\n/**\n * @summary Capture a log with the `fatal` level. Requires `_experiments.enableLogs` to be enabled.\n *\n * You can either pass a message and attributes or a message template, params and attributes.\n *\n * @example\n *\n * ```\n * Sentry.logger.fatal('Database connection pool exhausted', {\n * database: 'users',\n * activeConnections: 100,\n * maxConnections: 100\n * });\n * ```\n *\n * @example With template strings\n *\n * ```\n * Sentry.logger.fatal('Database %s: %s connections active',\n * ['connection pool exhausted', '100/100'],\n * { database: 'users' }\n * );\n * ```\n */\nexport function fatal(...args: CaptureLogArgs): void {\n captureLog('fatal', ...args);\n}\n\nexport { fmt } from '@sentry/core';\n"],"names":[],"mappings":";;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,GAAG,IAAI,EAAwB;AACrD,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,GAAG,IAAI,EAAwB;AACrD,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,GAAG,IAAI,EAAwB;AACpD,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,IAAI,CAAC,GAAG,IAAI,EAAwB;AACpD,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,GAAG,IAAI,EAAwB;AACrD,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,KAAK,CAAC,GAAG,IAAI,EAAwB;AACrD,EAAE,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;AAC9B;;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { parseSemver } from '@sentry/core';
|
|
2
|
+
|
|
3
|
+
const NODE_VERSION = parseSemver(process.versions.node) ;
|
|
4
|
+
const NODE_MAJOR = NODE_VERSION.major;
|
|
5
|
+
const NODE_MINOR = NODE_VERSION.minor;
|
|
6
|
+
|
|
7
|
+
export { NODE_MAJOR, NODE_MINOR, NODE_VERSION };
|
|
8
|
+
//# sourceMappingURL=nodeVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeVersion.js","sources":["../../src/nodeVersion.ts"],"sourcesContent":["import { parseSemver } from '@sentry/core';\n\nexport const NODE_VERSION = parseSemver(process.versions.node) as { major: number; minor: number; patch: number };\nexport const NODE_MAJOR = NODE_VERSION.major;\nexport const NODE_MINOR = NODE_VERSION.minor;\n"],"names":[],"mappings":";;AAEO,MAAM,YAAa,GAAE,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAE;AAClD,MAAA,UAAA,GAAa,YAAY,CAAC;AAC1B,MAAA,UAAA,GAAa,YAAY,CAAC;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';
|
|
2
|
+
import { wrapContextManagerClass } from '@sentry/opentelemetry';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.
|
|
6
|
+
* It ensures that we create a new hub per context, so that the OTEL Context & the Sentry Scopes are always in sync.
|
|
7
|
+
*
|
|
8
|
+
* Note that we currently only support AsyncHooks with this,
|
|
9
|
+
* but since this should work for Node 14+ anyhow that should be good enough.
|
|
10
|
+
*/
|
|
11
|
+
const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);
|
|
12
|
+
|
|
13
|
+
export { SentryContextManager };
|
|
14
|
+
//# sourceMappingURL=contextManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextManager.js","sources":["../../../src/otel/contextManager.ts"],"sourcesContent":["import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { wrapContextManagerClass } from '@sentry/opentelemetry';\n\n/**\n * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.\n * It ensures that we create a new hub per context, so that the OTEL Context & the Sentry Scopes are always in sync.\n *\n * Note that we currently only support AsyncHooks with this,\n * but since this should work for Node 14+ anyhow that should be good enough.\n */\nexport const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);\n"],"names":[],"mappings":";;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;MACa,oBAAqB,GAAE,uBAAuB,CAAC,+BAA+B;;;;"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { registerInstrumentations } from '@opentelemetry/instrumentation';
|
|
2
|
+
|
|
3
|
+
/** Exported only for tests. */
|
|
4
|
+
const INSTRUMENTED = {};
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Instrument an OpenTelemetry instrumentation once.
|
|
8
|
+
* This will skip running instrumentation again if it was already instrumented.
|
|
9
|
+
*/
|
|
10
|
+
function generateInstrumentOnce(
|
|
11
|
+
name,
|
|
12
|
+
creatorOrClass,
|
|
13
|
+
optionsCallback,
|
|
14
|
+
) {
|
|
15
|
+
if (optionsCallback) {
|
|
16
|
+
return _generateInstrumentOnceWithOptions(
|
|
17
|
+
name,
|
|
18
|
+
creatorOrClass ,
|
|
19
|
+
optionsCallback,
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return _generateInstrumentOnce(name, creatorOrClass );
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// The plain version without handling of options
|
|
27
|
+
// Should not be used with custom options that are mutated in the creator!
|
|
28
|
+
function _generateInstrumentOnce(
|
|
29
|
+
name,
|
|
30
|
+
creator,
|
|
31
|
+
) {
|
|
32
|
+
return Object.assign(
|
|
33
|
+
(options) => {
|
|
34
|
+
const instrumented = INSTRUMENTED[name] ;
|
|
35
|
+
if (instrumented) {
|
|
36
|
+
// If options are provided, ensure we update them
|
|
37
|
+
if (options) {
|
|
38
|
+
instrumented.setConfig(options);
|
|
39
|
+
}
|
|
40
|
+
return instrumented;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const instrumentation = creator(options);
|
|
44
|
+
INSTRUMENTED[name] = instrumentation;
|
|
45
|
+
|
|
46
|
+
registerInstrumentations({
|
|
47
|
+
instrumentations: [instrumentation],
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
return instrumentation;
|
|
51
|
+
},
|
|
52
|
+
{ id: name },
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// This version handles options properly
|
|
57
|
+
function _generateInstrumentOnceWithOptions
|
|
58
|
+
|
|
59
|
+
(
|
|
60
|
+
name,
|
|
61
|
+
instrumentationClass,
|
|
62
|
+
optionsCallback,
|
|
63
|
+
) {
|
|
64
|
+
return Object.assign(
|
|
65
|
+
(_options) => {
|
|
66
|
+
const options = optionsCallback(_options);
|
|
67
|
+
|
|
68
|
+
const instrumented = INSTRUMENTED[name] ;
|
|
69
|
+
if (instrumented) {
|
|
70
|
+
// Ensure we update options
|
|
71
|
+
instrumented.setConfig(options);
|
|
72
|
+
return instrumented;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const instrumentation = new instrumentationClass(options) ;
|
|
76
|
+
INSTRUMENTED[name] = instrumentation;
|
|
77
|
+
|
|
78
|
+
registerInstrumentations({
|
|
79
|
+
instrumentations: [instrumentation],
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
return instrumentation;
|
|
83
|
+
},
|
|
84
|
+
{ id: name },
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Ensure a given callback is called when the instrumentation is actually wrapping something.
|
|
90
|
+
* This can be used to ensure some logic is only called when the instrumentation is actually active.
|
|
91
|
+
*
|
|
92
|
+
* This function returns a function that can be invoked with a callback.
|
|
93
|
+
* This callback will either be invoked immediately
|
|
94
|
+
* (e.g. if the instrumentation was already wrapped, or if _wrap could not be patched),
|
|
95
|
+
* or once the instrumentation is actually wrapping something.
|
|
96
|
+
*
|
|
97
|
+
* Make sure to call this function right after adding the instrumentation, otherwise it may be too late!
|
|
98
|
+
* The returned callback can be used any time, and also multiple times.
|
|
99
|
+
*/
|
|
100
|
+
function instrumentWhenWrapped(instrumentation) {
|
|
101
|
+
let isWrapped = false;
|
|
102
|
+
let callbacks = [];
|
|
103
|
+
|
|
104
|
+
if (!hasWrap(instrumentation)) {
|
|
105
|
+
isWrapped = true;
|
|
106
|
+
} else {
|
|
107
|
+
const originalWrap = instrumentation['_wrap'];
|
|
108
|
+
|
|
109
|
+
instrumentation['_wrap'] = (...args) => {
|
|
110
|
+
isWrapped = true;
|
|
111
|
+
callbacks.forEach(callback => callback());
|
|
112
|
+
callbacks = [];
|
|
113
|
+
return originalWrap(...args);
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const registerCallback = (callback) => {
|
|
118
|
+
if (isWrapped) {
|
|
119
|
+
callback();
|
|
120
|
+
} else {
|
|
121
|
+
callbacks.push(callback);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
return registerCallback;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function hasWrap(
|
|
129
|
+
instrumentation,
|
|
130
|
+
) {
|
|
131
|
+
return typeof (instrumentation )['_wrap'] === 'function';
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export { INSTRUMENTED, generateInstrumentOnce, instrumentWhenWrapped };
|
|
135
|
+
//# sourceMappingURL=instrument.js.map
|