@sentry/node 10.63.0 → 10.65.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/index.js +15 -14
- package/build/cjs/index.js.map +1 -1
- package/build/cjs/integrations/http.js +4 -7
- package/build/cjs/integrations/http.js.map +1 -1
- package/build/cjs/integrations/node-fetch.js +24 -0
- package/build/cjs/integrations/node-fetch.js.map +1 -0
- package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js +0 -6
- package/build/cjs/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
- package/build/cjs/integrations/tracing/amqplib/vendored/utils.js +11 -10
- package/build/cjs/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
- package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js +2 -2
- package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js +2 -2
- package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js +9 -9
- package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js.map +1 -1
- package/build/cjs/integrations/tracing/graphql/index.js +3 -2
- package/build/cjs/integrations/tracing/graphql/index.js.map +1 -1
- package/build/cjs/integrations/tracing/graphql/vendored/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/graphql/vendored/utils.js +1 -4
- package/build/cjs/integrations/tracing/graphql/vendored/utils.js.map +1 -1
- package/build/cjs/integrations/tracing/hapi/vendored/utils.js +8 -9
- package/build/cjs/integrations/tracing/hapi/vendored/utils.js.map +1 -1
- package/build/cjs/integrations/tracing/hono/index.js +7 -7
- package/build/cjs/integrations/tracing/hono/index.js.map +1 -1
- package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js +2 -1
- package/build/cjs/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/kafka/vendored/semconv.js +0 -12
- package/build/cjs/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
- package/build/cjs/integrations/tracing/kafka/vendored/utils.js +12 -11
- package/build/cjs/integrations/tracing/kafka/vendored/utils.js.map +1 -1
- package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js +11 -10
- package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/knex/vendored/semconv.js +0 -16
- package/build/cjs/integrations/tracing/knex/vendored/semconv.js.map +1 -1
- package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js +2 -2
- package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/koa/vendored/utils.js +2 -2
- package/build/cjs/integrations/tracing/koa/vendored/utils.js.map +1 -1
- package/build/cjs/integrations/tracing/mongo/vendored/semconv.js +0 -12
- package/build/cjs/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
- package/build/cjs/integrations/tracing/mongo/vendored/utils.js +13 -12
- package/build/cjs/integrations/tracing/mongo/vendored/utils.js.map +1 -1
- package/build/cjs/integrations/tracing/mongoose/index.js +3 -2
- package/build/cjs/integrations/tracing/mongoose/index.js.map +1 -1
- package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js +11 -8
- package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
- package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js +0 -12
- package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
- package/build/cjs/integrations/tracing/mongoose/vendored/utils.js +9 -9
- package/build/cjs/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
- package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js +9 -8
- package/build/cjs/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/mysql/vendored/semconv.js +0 -12
- package/build/cjs/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
- package/build/cjs/integrations/tracing/mysql2/index.js +3 -2
- package/build/cjs/integrations/tracing/mysql2/index.js.map +1 -1
- package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js +8 -5
- package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js +0 -12
- package/build/cjs/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
- package/build/cjs/integrations/tracing/mysql2/vendored/utils.js +7 -4
- package/build/cjs/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
- package/build/cjs/integrations/tracing/postgres/vendored/semconv.js +0 -12
- package/build/cjs/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
- package/build/cjs/integrations/tracing/postgres/vendored/utils.js +12 -11
- package/build/cjs/integrations/tracing/postgres/vendored/utils.js.map +1 -1
- package/build/cjs/integrations/tracing/postgresjs.js +8 -7
- package/build/cjs/integrations/tracing/postgresjs.js.map +1 -1
- package/build/cjs/integrations/tracing/prisma/index.js +48 -53
- package/build/cjs/integrations/tracing/prisma/index.js.map +1 -1
- package/build/cjs/integrations/tracing/redis/cache.js +41 -0
- package/build/cjs/integrations/tracing/redis/cache.js.map +1 -0
- package/build/cjs/integrations/tracing/redis/index.js +15 -42
- package/build/cjs/integrations/tracing/redis/index.js.map +1 -1
- package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js +22 -13
- package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js +21 -15
- package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/redis/vendored/semconv.js +0 -8
- package/build/cjs/integrations/tracing/redis/vendored/semconv.js.map +1 -1
- package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js +9 -8
- package/build/cjs/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/tedious/vendored/semconv.js +0 -12
- package/build/cjs/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
- package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js +14 -2
- package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -1
- package/build/cjs/sdk/index.js +2 -2
- package/build/cjs/sdk/index.js.map +1 -1
- package/build/cjs/sdk/initOtel.js +36 -0
- package/build/cjs/sdk/initOtel.js.map +1 -1
- package/build/esm/index.js +2 -2
- package/build/esm/integrations/http.js +5 -8
- package/build/esm/integrations/http.js.map +1 -1
- package/build/esm/integrations/node-fetch.js +22 -0
- package/build/esm/integrations/node-fetch.js.map +1 -0
- package/build/esm/integrations/tracing/amqplib/vendored/semconv.js +1 -4
- package/build/esm/integrations/tracing/amqplib/vendored/semconv.js.map +1 -1
- package/build/esm/integrations/tracing/amqplib/vendored/utils.js +7 -6
- package/build/esm/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
- package/build/esm/integrations/tracing/connect/vendored/instrumentation.js +2 -2
- package/build/esm/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/fastify/v3/instrumentation.js +2 -2
- package/build/esm/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js +7 -7
- package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js.map +1 -1
- package/build/esm/integrations/tracing/graphql/index.js +4 -3
- package/build/esm/integrations/tracing/graphql/index.js.map +1 -1
- package/build/esm/integrations/tracing/graphql/vendored/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/graphql/vendored/utils.js +1 -4
- package/build/esm/integrations/tracing/graphql/vendored/utils.js.map +1 -1
- package/build/esm/integrations/tracing/hapi/vendored/utils.js +3 -4
- package/build/esm/integrations/tracing/hapi/vendored/utils.js.map +1 -1
- package/build/esm/integrations/tracing/hono/index.js +3 -3
- package/build/esm/integrations/tracing/hono/index.js.map +1 -1
- package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js +3 -2
- package/build/esm/integrations/tracing/kafka/vendored/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/kafka/vendored/semconv.js +1 -7
- package/build/esm/integrations/tracing/kafka/vendored/semconv.js.map +1 -1
- package/build/esm/integrations/tracing/kafka/vendored/utils.js +11 -10
- package/build/esm/integrations/tracing/kafka/vendored/utils.js.map +1 -1
- package/build/esm/integrations/tracing/knex/vendored/instrumentation.js +10 -9
- package/build/esm/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/knex/vendored/semconv.js +1 -9
- package/build/esm/integrations/tracing/knex/vendored/semconv.js.map +1 -1
- package/build/esm/integrations/tracing/koa/vendored/instrumentation.js +2 -2
- package/build/esm/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/koa/vendored/utils.js +2 -2
- package/build/esm/integrations/tracing/koa/vendored/utils.js.map +1 -1
- package/build/esm/integrations/tracing/mongo/vendored/semconv.js +1 -7
- package/build/esm/integrations/tracing/mongo/vendored/semconv.js.map +1 -1
- package/build/esm/integrations/tracing/mongo/vendored/utils.js +11 -10
- package/build/esm/integrations/tracing/mongo/vendored/utils.js.map +1 -1
- package/build/esm/integrations/tracing/mongoose/index.js +4 -3
- package/build/esm/integrations/tracing/mongoose/index.js.map +1 -1
- package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js +9 -6
- package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
- package/build/esm/integrations/tracing/mongoose/vendored/semconv.js +1 -7
- package/build/esm/integrations/tracing/mongoose/vendored/semconv.js.map +1 -1
- package/build/esm/integrations/tracing/mongoose/vendored/utils.js +10 -10
- package/build/esm/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
- package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js +8 -7
- package/build/esm/integrations/tracing/mysql/vendored/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/mysql/vendored/semconv.js +1 -7
- package/build/esm/integrations/tracing/mysql/vendored/semconv.js.map +1 -1
- package/build/esm/integrations/tracing/mysql2/index.js +4 -3
- package/build/esm/integrations/tracing/mysql2/index.js.map +1 -1
- package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js +7 -4
- package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/mysql2/vendored/semconv.js +1 -7
- package/build/esm/integrations/tracing/mysql2/vendored/semconv.js.map +1 -1
- package/build/esm/integrations/tracing/mysql2/vendored/utils.js +8 -5
- package/build/esm/integrations/tracing/mysql2/vendored/utils.js.map +1 -1
- package/build/esm/integrations/tracing/postgres/vendored/semconv.js +1 -7
- package/build/esm/integrations/tracing/postgres/vendored/semconv.js.map +1 -1
- package/build/esm/integrations/tracing/postgres/vendored/utils.js +13 -12
- package/build/esm/integrations/tracing/postgres/vendored/utils.js.map +1 -1
- package/build/esm/integrations/tracing/postgresjs.js +7 -6
- package/build/esm/integrations/tracing/postgresjs.js.map +1 -1
- package/build/esm/integrations/tracing/prisma/index.js +49 -54
- package/build/esm/integrations/tracing/prisma/index.js.map +1 -1
- package/build/esm/integrations/tracing/redis/cache.js +38 -0
- package/build/esm/integrations/tracing/redis/cache.js.map +1 -0
- package/build/esm/integrations/tracing/redis/index.js +12 -42
- package/build/esm/integrations/tracing/redis/index.js.map +1 -1
- package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js +19 -10
- package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js +16 -10
- package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/redis/vendored/semconv.js +1 -5
- package/build/esm/integrations/tracing/redis/vendored/semconv.js.map +1 -1
- package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js +8 -7
- package/build/esm/integrations/tracing/tedious/vendored/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/tedious/vendored/semconv.js +1 -7
- package/build/esm/integrations/tracing/tedious/vendored/semconv.js.map +1 -1
- package/build/esm/package.json +1 -1
- package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js +15 -4
- package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -1
- package/build/esm/sdk/index.js +1 -1
- package/build/esm/sdk/initOtel.js +38 -2
- package/build/esm/sdk/initOtel.js.map +1 -1
- package/build/types/index.d.ts +1 -1
- package/build/types/index.d.ts.map +1 -1
- package/build/types/integrations/http.d.ts +2 -2
- package/build/types/integrations/http.d.ts.map +1 -1
- package/build/types/integrations/node-fetch.d.ts +9 -0
- package/build/types/integrations/node-fetch.d.ts.map +1 -0
- package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts +0 -6
- package/build/types/integrations/tracing/amqplib/vendored/semconv.d.ts.map +1 -1
- package/build/types/integrations/tracing/amqplib/vendored/utils.d.ts.map +1 -1
- package/build/types/integrations/tracing/graphql/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/graphql/vendored/graphql-types.d.ts +1 -135
- package/build/types/integrations/tracing/graphql/vendored/graphql-types.d.ts.map +1 -1
- package/build/types/integrations/tracing/graphql/vendored/utils.d.ts.map +1 -1
- package/build/types/integrations/tracing/hapi/vendored/utils.d.ts.map +1 -1
- package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts +5 -63
- package/build/types/integrations/tracing/kafka/vendored/semconv.d.ts.map +1 -1
- package/build/types/integrations/tracing/kafka/vendored/utils.d.ts.map +1 -1
- package/build/types/integrations/tracing/knex/vendored/semconv.d.ts +0 -32
- package/build/types/integrations/tracing/knex/vendored/semconv.d.ts.map +1 -1
- package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts +1 -37
- package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts.map +1 -1
- package/build/types/integrations/tracing/mongo/vendored/utils.d.ts.map +1 -1
- package/build/types/integrations/tracing/mongoose/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts.map +1 -1
- package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -48
- package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts.map +1 -1
- package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts.map +1 -1
- package/build/types/integrations/tracing/mysql/vendored/instrumentation.d.ts.map +1 -1
- package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts +1 -62
- package/build/types/integrations/tracing/mysql/vendored/semconv.d.ts.map +1 -1
- package/build/types/integrations/tracing/mysql2/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts.map +1 -1
- package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts +0 -6
- package/build/types/integrations/tracing/mysql2/vendored/semconv.d.ts.map +1 -1
- package/build/types/integrations/tracing/mysql2/vendored/utils.d.ts.map +1 -1
- package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts +1 -50
- package/build/types/integrations/tracing/postgres/vendored/semconv.d.ts.map +1 -1
- package/build/types/integrations/tracing/postgres/vendored/utils.d.ts.map +1 -1
- package/build/types/integrations/tracing/postgresjs.d.ts.map +1 -1
- package/build/types/integrations/tracing/prisma/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/redis/cache.d.ts +22 -0
- package/build/types/integrations/tracing/redis/cache.d.ts.map +1 -0
- package/build/types/integrations/tracing/redis/index.d.ts +2 -20
- package/build/types/integrations/tracing/redis/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/redis/vendored/ioredis-instrumentation.d.ts.map +1 -1
- package/build/types/integrations/tracing/redis/vendored/redis-instrumentation.d.ts.map +1 -1
- package/build/types/integrations/tracing/redis/vendored/semconv.d.ts +0 -4
- package/build/types/integrations/tracing/redis/vendored/semconv.d.ts.map +1 -1
- package/build/types/integrations/tracing/tedious/vendored/instrumentation.d.ts.map +1 -1
- package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts +1 -62
- package/build/types/integrations/tracing/tedious/vendored/semconv.d.ts.map +1 -1
- package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +2 -0
- package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts.map +1 -1
- package/build/types/sdk/initOtel.d.ts +2 -3
- package/build/types/sdk/initOtel.d.ts.map +1 -1
- package/build/types-ts3.8/index.d.ts +1 -1
- package/build/types-ts3.8/integrations/http.d.ts +2 -2
- package/build/types-ts3.8/integrations/node-fetch.d.ts +9 -0
- package/build/types-ts3.8/integrations/tracing/amqplib/vendored/semconv.d.ts +0 -6
- package/build/types-ts3.8/integrations/tracing/graphql/vendored/graphql-types.d.ts +1 -135
- package/build/types-ts3.8/integrations/tracing/kafka/vendored/semconv.d.ts +5 -63
- package/build/types-ts3.8/integrations/tracing/knex/vendored/semconv.d.ts +0 -32
- package/build/types-ts3.8/integrations/tracing/mongo/vendored/semconv.d.ts +1 -37
- package/build/types-ts3.8/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -48
- package/build/types-ts3.8/integrations/tracing/mysql/vendored/semconv.d.ts +1 -62
- package/build/types-ts3.8/integrations/tracing/mysql2/vendored/semconv.d.ts +0 -6
- package/build/types-ts3.8/integrations/tracing/postgres/vendored/semconv.d.ts +1 -50
- package/build/types-ts3.8/integrations/tracing/redis/cache.d.ts +22 -0
- package/build/types-ts3.8/integrations/tracing/redis/index.d.ts +2 -20
- package/build/types-ts3.8/integrations/tracing/redis/vendored/semconv.d.ts +0 -4
- package/build/types-ts3.8/integrations/tracing/tedious/vendored/semconv.d.ts +1 -62
- package/build/types-ts3.8/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +2 -0
- package/build/types-ts3.8/sdk/initOtel.d.ts +3 -4
- package/package.json +8 -9
- package/build/cjs/integrations/node-fetch/index.js +0 -38
- package/build/cjs/integrations/node-fetch/index.js.map +0 -1
- package/build/cjs/integrations/node-fetch/undici-instrumentation.js +0 -266
- package/build/cjs/integrations/node-fetch/undici-instrumentation.js.map +0 -1
- package/build/cjs/integrations/tracing/hapi/vendored/semconv.js +0 -6
- package/build/cjs/integrations/tracing/hapi/vendored/semconv.js.map +0 -1
- package/build/cjs/integrations/tracing/redis/vendored/redis-common.js +0 -34
- package/build/cjs/integrations/tracing/redis/vendored/redis-common.js.map +0 -1
- package/build/esm/integrations/node-fetch/index.js +0 -36
- package/build/esm/integrations/node-fetch/index.js.map +0 -1
- package/build/esm/integrations/node-fetch/undici-instrumentation.js +0 -264
- package/build/esm/integrations/node-fetch/undici-instrumentation.js.map +0 -1
- package/build/esm/integrations/tracing/hapi/vendored/semconv.js +0 -4
- package/build/esm/integrations/tracing/hapi/vendored/semconv.js.map +0 -1
- package/build/esm/integrations/tracing/redis/vendored/redis-common.js +0 -32
- package/build/esm/integrations/tracing/redis/vendored/redis-common.js.map +0 -1
- package/build/types/integrations/node-fetch/index.d.ts +0 -5
- package/build/types/integrations/node-fetch/index.d.ts.map +0 -1
- package/build/types/integrations/node-fetch/types.d.ts +0 -96
- package/build/types/integrations/node-fetch/types.d.ts.map +0 -1
- package/build/types/integrations/node-fetch/undici-instrumentation.d.ts +0 -14
- package/build/types/integrations/node-fetch/undici-instrumentation.d.ts.map +0 -1
- package/build/types/integrations/tracing/hapi/vendored/semconv.d.ts +0 -13
- package/build/types/integrations/tracing/hapi/vendored/semconv.d.ts.map +0 -1
- package/build/types/integrations/tracing/redis/vendored/redis-common.d.ts +0 -6
- package/build/types/integrations/tracing/redis/vendored/redis-common.d.ts.map +0 -1
- package/build/types-ts3.8/integrations/node-fetch/index.d.ts +0 -5
- package/build/types-ts3.8/integrations/node-fetch/types.d.ts +0 -96
- package/build/types-ts3.8/integrations/node-fetch/undici-instrumentation.d.ts +0 -14
- package/build/types-ts3.8/integrations/tracing/hapi/vendored/semconv.d.ts +0 -13
- package/build/types-ts3.8/integrations/tracing/redis/vendored/redis-common.d.ts +0 -6
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
|
|
3
3
|
const core = require('@sentry/core');
|
|
4
|
+
const attributes = require('@sentry/conventions/attributes');
|
|
4
5
|
const semconv = require('./semconv.js');
|
|
5
6
|
const internalTypes = require('./internal-types.js');
|
|
6
7
|
|
|
@@ -24,7 +25,7 @@ function scrubStatement(value) {
|
|
|
24
25
|
return "?";
|
|
25
26
|
}
|
|
26
27
|
function isCommandObj(value) {
|
|
27
|
-
return
|
|
28
|
+
return core.isObjectLike(value) && !isBuffer(value);
|
|
28
29
|
}
|
|
29
30
|
function isBuffer(value) {
|
|
30
31
|
return typeof Buffer !== "undefined" && Buffer.isBuffer(value);
|
|
@@ -86,40 +87,40 @@ function getV3SpanAttributes(ns, topology, command, operation) {
|
|
|
86
87
|
return getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);
|
|
87
88
|
}
|
|
88
89
|
function getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation) {
|
|
89
|
-
const attributes = {
|
|
90
|
+
const attributes$1 = {
|
|
90
91
|
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
|
|
91
92
|
// eslint-disable-next-line typescript/no-deprecated
|
|
92
|
-
[
|
|
93
|
+
[attributes.DB_SYSTEM]: semconv.DB_SYSTEM_VALUE_MONGODB,
|
|
93
94
|
// eslint-disable-next-line typescript/no-deprecated
|
|
94
|
-
[
|
|
95
|
+
[attributes.DB_NAME]: dbName,
|
|
95
96
|
// eslint-disable-next-line typescript/no-deprecated
|
|
96
97
|
[semconv.ATTR_DB_MONGODB_COLLECTION]: dbCollection,
|
|
97
98
|
// eslint-disable-next-line typescript/no-deprecated
|
|
98
|
-
[
|
|
99
|
+
[attributes.DB_OPERATION]: operation,
|
|
99
100
|
// eslint-disable-next-line typescript/no-deprecated
|
|
100
101
|
[semconv.ATTR_DB_CONNECTION_STRING]: `mongodb://${host}:${port}/${dbName}`
|
|
101
102
|
};
|
|
102
103
|
if (host && port) {
|
|
103
|
-
attributes[
|
|
104
|
+
attributes$1[attributes.NET_PEER_NAME] = host;
|
|
104
105
|
const portNumber = parseInt(port, 10);
|
|
105
106
|
if (!isNaN(portNumber)) {
|
|
106
|
-
attributes[
|
|
107
|
+
attributes$1[attributes.NET_PEER_PORT] = portNumber;
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
110
|
if (commandObj) {
|
|
110
111
|
try {
|
|
111
|
-
attributes[
|
|
112
|
+
attributes$1[attributes.DB_STATEMENT] = serializeDbStatement(commandObj);
|
|
112
113
|
} catch {
|
|
113
114
|
}
|
|
114
115
|
}
|
|
115
|
-
return attributes;
|
|
116
|
+
return attributes$1;
|
|
116
117
|
}
|
|
117
|
-
function startMongoSpan(attributes) {
|
|
118
|
+
function startMongoSpan(attributes$1) {
|
|
118
119
|
return core.startInactiveSpan({
|
|
119
120
|
// eslint-disable-next-line typescript/no-deprecated
|
|
120
|
-
name: `mongodb.${attributes[
|
|
121
|
+
name: `mongodb.${attributes$1[attributes.DB_OPERATION] || "command"}`,
|
|
121
122
|
kind: core.SPAN_KIND.CLIENT,
|
|
122
|
-
attributes
|
|
123
|
+
attributes: attributes$1
|
|
123
124
|
});
|
|
124
125
|
}
|
|
125
126
|
function patchEnd(span, resultHandler) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.0\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_MONGODB_COLLECTION,\n ATTR_DB_NAME,\n ATTR_DB_OPERATION,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n DB_SYSTEM_VALUE_MONGODB,\n} from './semconv';\nimport type { MongodbNamespace, MongoInternalCommand, MongoInternalTopology } from './internal-types';\nimport { MongodbCommandType } from './internal-types';\n\nconst ORIGIN = 'auto.db.otel.mongo';\n\n/**\n * Replaces values in the command object with '?', hiding PII and helping grouping.\n */\nfunction serializeDbStatement(commandObj: Record<string, unknown>): string {\n return JSON.stringify(scrubStatement(commandObj));\n}\n\nfunction scrubStatement(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(element => scrubStatement(element));\n }\n\n if (isCommandObj(value)) {\n const initial: Record<string, unknown> = {};\n return Object.entries(value)\n .map(([key, element]) => [key, scrubStatement(element)])\n .reduce((prev, current) => {\n if (isCommandEntry(current)) {\n prev[current[0]] = current[1];\n }\n return prev;\n }, initial);\n }\n\n // A value like string or number, possibly contains PII, scrub it\n return '?';\n}\n\nfunction isCommandObj(value: Record<string, unknown> | unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !isBuffer(value);\n}\n\nfunction isBuffer(value: unknown): boolean {\n return typeof Buffer !== 'undefined' && Buffer.isBuffer(value);\n}\n\nfunction isCommandEntry(value: [string, unknown] | unknown): value is [string, unknown] {\n return Array.isArray(value);\n}\n\n/**\n * Get the mongodb command type from the object.\n */\nexport function getCommandType(command: MongoInternalCommand): MongodbCommandType {\n if (command.createIndexes !== undefined) {\n return MongodbCommandType.CREATE_INDEXES;\n } else if (command.findandmodify !== undefined) {\n return MongodbCommandType.FIND_AND_MODIFY;\n } else if (command.ismaster !== undefined) {\n return MongodbCommandType.IS_MASTER;\n } else if (command.count !== undefined) {\n return MongodbCommandType.COUNT;\n } else if (command.aggregate !== undefined) {\n return MongodbCommandType.AGGREGATE;\n } else {\n return MongodbCommandType.UNKNOWN;\n }\n}\n\n/**\n * Determine a span's attributes by fetching related metadata from the v4 connection context.\n */\nexport function getV4SpanAttributes(\n connectionCtx: any,\n ns: MongodbNamespace,\n command?: any,\n operation?: string,\n): SpanAttributes {\n let host, port: undefined | string;\n if (connectionCtx) {\n const hostParts = typeof connectionCtx.address === 'string' ? connectionCtx.address.split(':') : '';\n if (hostParts.length === 2) {\n host = hostParts[0];\n port = hostParts[1];\n }\n }\n let commandObj: Record<string, unknown>;\n if (command?.documents && command.documents[0]) {\n commandObj = command.documents[0];\n } else if (command?.cursors) {\n commandObj = command.cursors;\n } else {\n commandObj = command;\n }\n\n return getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation);\n}\n\n/**\n * Determine a span's attributes by fetching related metadata from the v3 topology.\n */\nexport function getV3SpanAttributes(\n ns: string,\n topology: MongoInternalTopology,\n command?: MongoInternalCommand,\n operation?: string | undefined,\n): SpanAttributes {\n let host: undefined | string;\n let port: undefined | string;\n if (topology?.s) {\n host = topology.s.options?.host ?? topology.s.host;\n port = (topology.s.options?.port ?? topology.s.port)?.toString();\n if (host == null || port == null) {\n const address = topology.description?.address;\n if (address) {\n const addressSegments = address.split(':');\n host = addressSegments[0];\n port = addressSegments[1];\n }\n }\n }\n\n // The namespace is a combination of the database name and the name of the\n // collection or index, like so: [database-name].[collection-or-index-name].\n // It could be a string or an instance of MongoDBNamespace, as such we\n // always coerce to a string to extract db and collection.\n const [dbName, dbCollection] = ns.toString().split('.');\n const commandObj = command?.query ?? command?.q ?? command;\n\n return getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);\n}\n\nfunction getSpanAttributes(\n dbName?: string,\n dbCollection?: string,\n host?: undefined | string,\n port?: undefined | string,\n commandObj?: any,\n operation?: string | undefined,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_MONGODB,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_NAME]: dbName,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_MONGODB_COLLECTION]: dbCollection,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_OPERATION]: operation,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_CONNECTION_STRING]: `mongodb://${host}:${port}/${dbName}`,\n };\n\n if (host && port) {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[ATTR_NET_PEER_NAME] = host;\n const portNumber = parseInt(port, 10);\n if (!isNaN(portNumber)) {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[ATTR_NET_PEER_PORT] = portNumber;\n }\n }\n\n if (commandObj) {\n try {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[ATTR_DB_STATEMENT] = serializeDbStatement(commandObj);\n } catch {\n // ignore serialization errors — the statement is best-effort metadata\n }\n }\n\n return attributes;\n}\n\nexport function startMongoSpan(attributes: SpanAttributes): Span {\n return startInactiveSpan({\n // eslint-disable-next-line typescript/no-deprecated\n name: `mongodb.${attributes[ATTR_DB_OPERATION] || 'command'}`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n}\n\n/**\n * Wraps the result handler so it ends the span (with error status on failure) and runs the\n * original callback re-activated under the parent span — mongodb loses the async context when\n * it invokes the callback on a later tick.\n */\nexport function patchEnd(span: Span | undefined, resultHandler: Function): Function {\n const parentSpan = getActiveSpan();\n let spanEnded = false;\n\n return function patchedEnd(this: {}, ...args: unknown[]) {\n if (!spanEnded) {\n spanEnded = true;\n const error = args[0];\n if (span) {\n if (error instanceof Error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: error.message });\n }\n span.end();\n }\n }\n\n return withActiveSpan(parentSpan ?? null, () => resultHandler.apply(this, args));\n };\n}\n\n// The instrumentation only creates spans when there is an active parent span, to avoid emitting\n// orphaned mongodb spans.\nexport function shouldSkipInstrumentation(): boolean {\n return !getActiveSpan();\n}\n"],"names":["MongodbCommandType","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","ATTR_DB_SYSTEM","DB_SYSTEM_VALUE_MONGODB","ATTR_DB_NAME","ATTR_DB_MONGODB_COLLECTION","ATTR_DB_OPERATION","ATTR_DB_CONNECTION_STRING","ATTR_NET_PEER_NAME","ATTR_NET_PEER_PORT","ATTR_DB_STATEMENT","startInactiveSpan","SPAN_KIND","getActiveSpan","SPAN_STATUS_ERROR","withActiveSpan"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.0\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n isObjectLike,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\nimport {\n DB_NAME,\n DB_OPERATION,\n DB_STATEMENT,\n DB_SYSTEM,\n NET_PEER_NAME,\n NET_PEER_PORT,\n} from '@sentry/conventions/attributes';\nimport { ATTR_DB_CONNECTION_STRING, ATTR_DB_MONGODB_COLLECTION, DB_SYSTEM_VALUE_MONGODB } from './semconv';\nimport type { MongodbNamespace, MongoInternalCommand, MongoInternalTopology } from './internal-types';\nimport { MongodbCommandType } from './internal-types';\n\nconst ORIGIN = 'auto.db.otel.mongo';\n\n/**\n * Replaces values in the command object with '?', hiding PII and helping grouping.\n */\nfunction serializeDbStatement(commandObj: Record<string, unknown>): string {\n return JSON.stringify(scrubStatement(commandObj));\n}\n\nfunction scrubStatement(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(element => scrubStatement(element));\n }\n\n if (isCommandObj(value)) {\n const initial: Record<string, unknown> = {};\n return Object.entries(value)\n .map(([key, element]) => [key, scrubStatement(element)])\n .reduce((prev, current) => {\n if (isCommandEntry(current)) {\n prev[current[0]] = current[1];\n }\n return prev;\n }, initial);\n }\n\n // A value like string or number, possibly contains PII, scrub it\n return '?';\n}\n\nfunction isCommandObj(value: Record<string, unknown> | unknown): value is Record<string, unknown> {\n return isObjectLike(value) && !isBuffer(value);\n}\n\nfunction isBuffer(value: unknown): boolean {\n return typeof Buffer !== 'undefined' && Buffer.isBuffer(value);\n}\n\nfunction isCommandEntry(value: [string, unknown] | unknown): value is [string, unknown] {\n return Array.isArray(value);\n}\n\n/**\n * Get the mongodb command type from the object.\n */\nexport function getCommandType(command: MongoInternalCommand): MongodbCommandType {\n if (command.createIndexes !== undefined) {\n return MongodbCommandType.CREATE_INDEXES;\n } else if (command.findandmodify !== undefined) {\n return MongodbCommandType.FIND_AND_MODIFY;\n } else if (command.ismaster !== undefined) {\n return MongodbCommandType.IS_MASTER;\n } else if (command.count !== undefined) {\n return MongodbCommandType.COUNT;\n } else if (command.aggregate !== undefined) {\n return MongodbCommandType.AGGREGATE;\n } else {\n return MongodbCommandType.UNKNOWN;\n }\n}\n\n/**\n * Determine a span's attributes by fetching related metadata from the v4 connection context.\n */\nexport function getV4SpanAttributes(\n connectionCtx: any,\n ns: MongodbNamespace,\n command?: any,\n operation?: string,\n): SpanAttributes {\n let host, port: undefined | string;\n if (connectionCtx) {\n const hostParts = typeof connectionCtx.address === 'string' ? connectionCtx.address.split(':') : '';\n if (hostParts.length === 2) {\n host = hostParts[0];\n port = hostParts[1];\n }\n }\n let commandObj: Record<string, unknown>;\n if (command?.documents && command.documents[0]) {\n commandObj = command.documents[0];\n } else if (command?.cursors) {\n commandObj = command.cursors;\n } else {\n commandObj = command;\n }\n\n return getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation);\n}\n\n/**\n * Determine a span's attributes by fetching related metadata from the v3 topology.\n */\nexport function getV3SpanAttributes(\n ns: string,\n topology: MongoInternalTopology,\n command?: MongoInternalCommand,\n operation?: string | undefined,\n): SpanAttributes {\n let host: undefined | string;\n let port: undefined | string;\n if (topology?.s) {\n host = topology.s.options?.host ?? topology.s.host;\n port = (topology.s.options?.port ?? topology.s.port)?.toString();\n if (host == null || port == null) {\n const address = topology.description?.address;\n if (address) {\n const addressSegments = address.split(':');\n host = addressSegments[0];\n port = addressSegments[1];\n }\n }\n }\n\n // The namespace is a combination of the database name and the name of the\n // collection or index, like so: [database-name].[collection-or-index-name].\n // It could be a string or an instance of MongoDBNamespace, as such we\n // always coerce to a string to extract db and collection.\n const [dbName, dbCollection] = ns.toString().split('.');\n const commandObj = command?.query ?? command?.q ?? command;\n\n return getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);\n}\n\nfunction getSpanAttributes(\n dbName?: string,\n dbCollection?: string,\n host?: undefined | string,\n port?: undefined | string,\n commandObj?: any,\n operation?: string | undefined,\n): SpanAttributes {\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n // eslint-disable-next-line typescript/no-deprecated\n [DB_SYSTEM]: DB_SYSTEM_VALUE_MONGODB,\n // eslint-disable-next-line typescript/no-deprecated\n [DB_NAME]: dbName,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_MONGODB_COLLECTION]: dbCollection,\n // eslint-disable-next-line typescript/no-deprecated\n [DB_OPERATION]: operation,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_CONNECTION_STRING]: `mongodb://${host}:${port}/${dbName}`,\n };\n\n if (host && port) {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[NET_PEER_NAME] = host;\n const portNumber = parseInt(port, 10);\n if (!isNaN(portNumber)) {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[NET_PEER_PORT] = portNumber;\n }\n }\n\n if (commandObj) {\n try {\n // eslint-disable-next-line typescript/no-deprecated\n attributes[DB_STATEMENT] = serializeDbStatement(commandObj);\n } catch {\n // ignore serialization errors — the statement is best-effort metadata\n }\n }\n\n return attributes;\n}\n\nexport function startMongoSpan(attributes: SpanAttributes): Span {\n return startInactiveSpan({\n // eslint-disable-next-line typescript/no-deprecated\n name: `mongodb.${attributes[DB_OPERATION] || 'command'}`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n}\n\n/**\n * Wraps the result handler so it ends the span (with error status on failure) and runs the\n * original callback re-activated under the parent span — mongodb loses the async context when\n * it invokes the callback on a later tick.\n */\nexport function patchEnd(span: Span | undefined, resultHandler: Function): Function {\n const parentSpan = getActiveSpan();\n let spanEnded = false;\n\n return function patchedEnd(this: {}, ...args: unknown[]) {\n if (!spanEnded) {\n spanEnded = true;\n const error = args[0];\n if (span) {\n if (error instanceof Error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: error.message });\n }\n span.end();\n }\n }\n\n return withActiveSpan(parentSpan ?? null, () => resultHandler.apply(this, args));\n };\n}\n\n// The instrumentation only creates spans when there is an active parent span, to avoid emitting\n// orphaned mongodb spans.\nexport function shouldSkipInstrumentation(): boolean {\n return !getActiveSpan();\n}\n"],"names":["isObjectLike","MongodbCommandType","attributes","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","DB_SYSTEM","DB_SYSTEM_VALUE_MONGODB","DB_NAME","ATTR_DB_MONGODB_COLLECTION","DB_OPERATION","ATTR_DB_CONNECTION_STRING","NET_PEER_NAME","NET_PEER_PORT","DB_STATEMENT","startInactiveSpan","SPAN_KIND","getActiveSpan","SPAN_STATUS_ERROR","withActiveSpan"],"mappings":"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"}
|
|
@@ -3,16 +3,17 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
3
3
|
const mongoose = require('./vendored/mongoose.js');
|
|
4
4
|
const core = require('@sentry/core');
|
|
5
5
|
const nodeCore = require('@sentry/node-core');
|
|
6
|
+
const serverUtils = require('@sentry/server-utils');
|
|
6
7
|
|
|
7
8
|
const INTEGRATION_NAME = "Mongoose";
|
|
8
9
|
const instrumentMongoose = nodeCore.generateInstrumentOnce(INTEGRATION_NAME, () => new mongoose.MongooseInstrumentation());
|
|
9
10
|
const _mongooseIntegration = (() => {
|
|
10
|
-
return {
|
|
11
|
+
return core.extendIntegration(serverUtils.mongooseIntegration(), {
|
|
11
12
|
name: INTEGRATION_NAME,
|
|
12
13
|
setupOnce() {
|
|
13
14
|
instrumentMongoose();
|
|
14
15
|
}
|
|
15
|
-
};
|
|
16
|
+
});
|
|
16
17
|
});
|
|
17
18
|
const mongooseIntegration = core.defineIntegration(_mongooseIntegration);
|
|
18
19
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/mongoose/index.ts"],"sourcesContent":["import { MongooseInstrumentation } from './vendored/mongoose';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Mongoose' as const;\n\nexport const instrumentMongoose = generateInstrumentOnce(INTEGRATION_NAME, () => new MongooseInstrumentation());\n\nconst _mongooseIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMongoose();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongoose](https://www.npmjs.com/package/mongoose) library.\n *\n * For more information, see the [`mongooseIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongoose/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mongooseIntegration()],\n * });\n * ```\n */\nexport const mongooseIntegration = defineIntegration(_mongooseIntegration);\n"],"names":["generateInstrumentOnce","MongooseInstrumentation","defineIntegration"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/mongoose/index.ts"],"sourcesContent":["import { MongooseInstrumentation } from './vendored/mongoose';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, extendIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { mongooseIntegration as mongooseChannelIntegration } from '@sentry/server-utils';\n\nconst INTEGRATION_NAME = 'Mongoose' as const;\n\nexport const instrumentMongoose = generateInstrumentOnce(INTEGRATION_NAME, () => new MongooseInstrumentation());\n\nconst _mongooseIntegration = (() => {\n // The diagnostics_channel subscription (mongoose >= 9.7) lives in server-utils so it is shared\n // across server runtimes; we extend it here to also run the IITM-based patcher for mongoose < 9.7.\n return extendIntegration(mongooseChannelIntegration(), {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentMongoose();\n },\n });\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [mongoose](https://www.npmjs.com/package/mongoose) library.\n *\n * For more information, see the [`mongooseIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/mongoose/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.mongooseIntegration()],\n * });\n * ```\n */\nexport const mongooseIntegration = defineIntegration(_mongooseIntegration);\n"],"names":["generateInstrumentOnce","MongooseInstrumentation","extendIntegration","mongooseChannelIntegration","defineIntegration"],"mappings":";;;;;;;AAMA,MAAM,gBAAA,GAAmB,UAAA;AAElB,MAAM,qBAAqBA,+BAAA,CAAuB,gBAAA,EAAkB,MAAM,IAAIC,kCAAyB;AAE9G,MAAM,wBAAwB,MAAM;AAGlC,EAAA,OAAOC,sBAAA,CAAkBC,iCAA2B,EAAG;AAAA,IACrD,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,kBAAA,EAAmB;AAAA,IACrB;AAAA,GACD,CAAA;AACH,CAAA,CAAA;AAgBO,MAAM,mBAAA,GAAsBC,uBAAkB,oBAAoB;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
|
|
3
3
|
const instrumentation = require('@opentelemetry/instrumentation');
|
|
4
|
+
const attributes = require('@sentry/conventions/attributes');
|
|
4
5
|
const core = require('@sentry/core');
|
|
5
|
-
const semconv = require('./semconv.js');
|
|
6
6
|
const utils = require('./utils.js');
|
|
7
7
|
|
|
8
8
|
const PACKAGE_NAME = "@sentry/instrumentation-mongoose";
|
|
@@ -54,7 +54,10 @@ class MongooseInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
54
54
|
init() {
|
|
55
55
|
const module = new instrumentation.InstrumentationNodeModuleDefinition(
|
|
56
56
|
"mongoose",
|
|
57
|
-
|
|
57
|
+
// mongoose >= 9.7.0 publishes via diagnostics_channel and is instrumented by
|
|
58
|
+
// `subscribeMongooseDiagnosticChannels` instead, so this IITM patcher must not
|
|
59
|
+
// overlap it — otherwise every operation would emit two mongoose spans.
|
|
60
|
+
[">=5.9.7 <9.7.0"],
|
|
58
61
|
this.patch.bind(this),
|
|
59
62
|
this.unpatch.bind(this)
|
|
60
63
|
);
|
|
@@ -193,19 +196,19 @@ class MongooseInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
193
196
|
};
|
|
194
197
|
}
|
|
195
198
|
_startSpan(collection, modelName, operation, parentSpan) {
|
|
196
|
-
const attributes = {
|
|
199
|
+
const attributes$1 = {
|
|
197
200
|
...utils.getAttributesFromCollection(collection),
|
|
198
|
-
//
|
|
199
|
-
[
|
|
200
|
-
//
|
|
201
|
-
[
|
|
201
|
+
// oxlint-disable-next-line typescript/no-deprecated
|
|
202
|
+
[attributes.DB_OPERATION]: operation,
|
|
203
|
+
// oxlint-disable-next-line typescript/no-deprecated
|
|
204
|
+
[attributes.DB_SYSTEM]: "mongoose",
|
|
202
205
|
// keep for backwards compatibility
|
|
203
206
|
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN
|
|
204
207
|
};
|
|
205
208
|
return core.startInactiveSpan({
|
|
206
209
|
name: `mongoose.${modelName}.${operation}`,
|
|
207
210
|
kind: core.SPAN_KIND.CLIENT,
|
|
208
|
-
attributes,
|
|
211
|
+
attributes: attributes$1,
|
|
209
212
|
parentSpan
|
|
210
213
|
});
|
|
211
214
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongoose.js","sources":["../../../../../../src/integrations/tracing/mongoose/vendored/mongoose.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongoose\n * - Upstream version: @opentelemetry/instrumentation-mongoose@0.64.0\n * - Types vendored from mongoose as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport {\n type InstrumentationConfig,\n InstrumentationBase,\n type InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\nimport type * as mongoose from './mongoose-types';\nimport { ATTR_DB_OPERATION, ATTR_DB_SYSTEM } from './semconv';\nimport { getAttributesFromCollection, handleCallbackResponse, handlePromiseResponse } from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mongoose';\nconst ORIGIN = 'auto.db.otel.mongoose';\n\ntype MongooseModuleExports = typeof mongoose;\n\n// The raw imported `mongoose` module: either the CJS object itself, or an ESM\n// namespace wrapper exposing the same shape under `.default`.\ntype MongooseModule = MongooseModuleExports & {\n default?: MongooseModuleExports;\n [Symbol.toStringTag]?: string;\n};\n\nconst contextCaptureFunctionsCommon = [\n 'deleteOne',\n 'deleteMany',\n 'find',\n 'findOne',\n 'estimatedDocumentCount',\n 'countDocuments',\n 'distinct',\n 'where',\n '$where',\n 'findOneAndUpdate',\n 'findOneAndDelete',\n 'findOneAndReplace',\n];\n\nconst contextCaptureFunctions6 = ['remove', 'count', 'findOneAndRemove', ...contextCaptureFunctionsCommon];\nconst contextCaptureFunctions7 = ['count', 'findOneAndRemove', ...contextCaptureFunctionsCommon];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\n\nfunction getContextCaptureFunctions(moduleVersion: string | undefined): string[] {\n /* istanbul ignore next */\n if (!moduleVersion) {\n return contextCaptureFunctionsCommon;\n } else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n return contextCaptureFunctions6;\n } else if (moduleVersion.startsWith('7.')) {\n return contextCaptureFunctions7;\n } else {\n return contextCaptureFunctions8;\n }\n}\n\nfunction instrumentRemove(moduleVersion: string | undefined): boolean {\n return (moduleVersion && (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) || false;\n}\n\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion: string | undefined): boolean {\n if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n return false;\n }\n\n const minor = parseInt(moduleVersion.split('.')[1]!, 10);\n return minor >= 21;\n}\n\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexport const _STORED_PARENT_SPAN: unique symbol = Symbol('stored-parent-span');\n\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexport const _ALREADY_INSTRUMENTED: unique symbol = Symbol('already-instrumented');\n\nexport class MongooseInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init(): InstrumentationModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(\n 'mongoose',\n ['>=5.9.7 <10'],\n this.patch.bind(this),\n this.unpatch.bind(this),\n );\n return module;\n }\n\n private patch(module: MongooseModule, moduleVersion: string | undefined) {\n const moduleExports: MongooseModuleExports =\n module[Symbol.toStringTag] === 'Module' && module.default ? module.default : module;\n\n this._wrap(moduleExports.Model.prototype, 'save', this.patchOnModelMethods('save'));\n // mongoose applies this code on module require:\n // Model.prototype.$save = Model.prototype.save;\n // which captures the save function before it is patched.\n // so we need to apply the same logic after instrumenting the save function.\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n if (instrumentRemove(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'remove', this.patchOnModelMethods('remove'));\n }\n\n // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'updateOne', this._patchDocumentUpdateMethods('updateOne'));\n this._wrap(moduleExports.Model.prototype, 'deleteOne', this._patchDocumentUpdateMethods('deleteOne'));\n }\n\n this._wrap(moduleExports.Query.prototype, 'exec', this.patchQueryExec());\n this._wrap(moduleExports.Aggregate.prototype, 'exec', this.patchAggregateExec());\n\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n contextCaptureFunctions.forEach((funcName: string) => {\n this._wrap(moduleExports.Query.prototype, funcName as any, this.patchAndCaptureSpanContext(funcName));\n });\n this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n\n this._wrap(moduleExports.Model, 'insertMany', this.patchModelStatic('insertMany'));\n this._wrap(moduleExports.Model, 'bulkWrite', this.patchModelStatic('bulkWrite'));\n\n return moduleExports;\n }\n\n private unpatch(module: MongooseModule, moduleVersion: string | undefined): void {\n const moduleExports: MongooseModuleExports =\n module[Symbol.toStringTag] === 'Module' && module.default ? module.default : module;\n\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n this._unwrap(moduleExports.Model.prototype, 'save');\n // revert the patch for $save which we applied by aliasing it to patched `save`\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n if (instrumentRemove(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'remove');\n }\n\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'updateOne');\n this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n }\n\n this._unwrap(moduleExports.Query.prototype, 'exec');\n this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n\n contextCaptureFunctions.forEach((funcName: string) => {\n this._unwrap(moduleExports.Query.prototype, funcName as any);\n });\n this._unwrap(moduleExports.Model, 'aggregate');\n\n this._unwrap(moduleExports.Model, 'insertMany');\n this._unwrap(moduleExports.Model, 'bulkWrite');\n }\n\n private patchAggregateExec() {\n const self = this;\n return (originalAggregate: Function) => {\n return function exec(this: any, callback?: Function) {\n const parentSpan = this[_STORED_PARENT_SPAN];\n const span = self._startSpan(this._model.collection, this._model?.modelName, 'aggregate', parentSpan);\n\n return self._handleResponse(span, originalAggregate, this, arguments, callback);\n };\n };\n }\n\n private patchQueryExec() {\n const self = this;\n return (originalExec: Function) => {\n return function exec(this: any, callback?: Function) {\n // Skip if already instrumented by document instance method patch\n if (this[_ALREADY_INSTRUMENTED]) {\n return originalExec.apply(this, arguments);\n }\n\n const parentSpan = this[_STORED_PARENT_SPAN];\n const span = self._startSpan(this.mongooseCollection, this.model.modelName, this.op, parentSpan);\n\n return self._handleResponse(span, originalExec, this, arguments, callback);\n };\n };\n }\n\n private patchOnModelMethods(op: string) {\n const self = this;\n return (originalOnModelFunction: Function) => {\n return function method(this: any, options?: any, callback?: Function) {\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op);\n\n if (options instanceof Function) {\n // oxlint-disable-next-line no-param-reassign\n callback = options;\n }\n\n return self._handleResponse(span, originalOnModelFunction, this, arguments, callback);\n };\n };\n }\n\n // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n private _patchDocumentUpdateMethods(op: string) {\n const self = this;\n return (originalMethod: Function) => {\n return function method(this: any, update?: any, options?: any, callback?: Function) {\n // determine actual callback since different argument patterns are allowed\n let actualCallback: Function | undefined = callback;\n if (typeof update === 'function') {\n actualCallback = update;\n } else if (typeof options === 'function') {\n actualCallback = options;\n }\n\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op);\n\n const result = self._handleResponse(span, originalMethod, this, arguments, actualCallback);\n\n // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n if (result && typeof result === 'object') {\n result[_ALREADY_INSTRUMENTED] = true;\n }\n\n return result;\n };\n };\n }\n\n private patchModelStatic(op: string) {\n const self = this;\n return (original: Function) => {\n return function patchedStatic(this: any, docsOrOps: any, options?: any, callback?: Function) {\n if (typeof options === 'function') {\n // oxlint-disable-next-line no-param-reassign\n callback = options;\n }\n\n const span = self._startSpan(this.collection, this.modelName, op);\n\n return self._handleResponse(span, original, this, arguments, callback);\n };\n };\n }\n\n // we want to capture the otel span on the object which is calling exec.\n // in the special case of aggregate, we need have no function to path\n // on the Aggregate object to capture the context on, so we patch\n // the aggregate of Model, and set the context on the Aggregate object\n private patchModelAggregate() {\n return (original: Function) => {\n return function captureSpanContext(this: any) {\n const currentSpan = getActiveSpan();\n const aggregate = original.apply(this, arguments);\n if (aggregate) aggregate[_STORED_PARENT_SPAN] = currentSpan;\n return aggregate;\n };\n };\n }\n\n private patchAndCaptureSpanContext(_funcName: string) {\n return (original: Function) => {\n return function captureSpanContext(this: any) {\n this[_STORED_PARENT_SPAN] = getActiveSpan();\n return original.apply(this, arguments);\n };\n };\n }\n\n private _startSpan(collection: mongoose.Collection, modelName: string, operation: string, parentSpan?: Span): Span {\n const attributes: SpanAttributes = {\n ...getAttributesFromCollection(collection),\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_OPERATION]: operation,\n // eslint-disable-next-line typescript/no-deprecated\n [ATTR_DB_SYSTEM]: 'mongoose', // keep for backwards compatibility\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n };\n\n return startInactiveSpan({\n name: `mongoose.${modelName}.${operation}`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n parentSpan,\n });\n }\n\n private _handleResponse(span: Span, exec: Function, originalThis: any, args: IArguments, callback?: Function) {\n // Activate the span while the underlying operation runs so that nested instrumentation\n // (e.g. the mongodb driver spans) is parented to this span. `withActiveSpan` returns the\n // callback's result untouched, so lazy mongoose Query thenables are handed back unexecuted.\n return withActiveSpan(span, () => {\n if (callback instanceof Function) {\n return handleCallbackResponse(callback, exec, originalThis, span, args);\n } else {\n const response = exec.apply(originalThis, args);\n return handlePromiseResponse(response, span);\n }\n });\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","getActiveSpan","getAttributesFromCollection","ATTR_DB_OPERATION","ATTR_DB_SYSTEM","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","startInactiveSpan","SPAN_KIND","withActiveSpan","handleCallbackResponse","handlePromiseResponse"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mongoose.js","sources":["../../../../../../src/integrations/tracing/mongoose/vendored/mongoose.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongoose\n * - Upstream version: @opentelemetry/instrumentation-mongoose@0.64.0\n * - Types vendored from mongoose as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport {\n type InstrumentationConfig,\n InstrumentationBase,\n type InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n} from '@opentelemetry/instrumentation';\nimport { DB_OPERATION, DB_SYSTEM } from '@sentry/conventions/attributes';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport {\n getActiveSpan,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n startInactiveSpan,\n withActiveSpan,\n} from '@sentry/core';\nimport type * as mongoose from './mongoose-types';\nimport { getAttributesFromCollection, handleCallbackResponse, handlePromiseResponse } from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mongoose';\nconst ORIGIN = 'auto.db.otel.mongoose';\n\ntype MongooseModuleExports = typeof mongoose;\n\n// The raw imported `mongoose` module: either the CJS object itself, or an ESM\n// namespace wrapper exposing the same shape under `.default`.\ntype MongooseModule = MongooseModuleExports & {\n default?: MongooseModuleExports;\n [Symbol.toStringTag]?: string;\n};\n\nconst contextCaptureFunctionsCommon = [\n 'deleteOne',\n 'deleteMany',\n 'find',\n 'findOne',\n 'estimatedDocumentCount',\n 'countDocuments',\n 'distinct',\n 'where',\n '$where',\n 'findOneAndUpdate',\n 'findOneAndDelete',\n 'findOneAndReplace',\n];\n\nconst contextCaptureFunctions6 = ['remove', 'count', 'findOneAndRemove', ...contextCaptureFunctionsCommon];\nconst contextCaptureFunctions7 = ['count', 'findOneAndRemove', ...contextCaptureFunctionsCommon];\nconst contextCaptureFunctions8 = [...contextCaptureFunctionsCommon];\n\nfunction getContextCaptureFunctions(moduleVersion: string | undefined): string[] {\n /* istanbul ignore next */\n if (!moduleVersion) {\n return contextCaptureFunctionsCommon;\n } else if (moduleVersion.startsWith('6.') || moduleVersion.startsWith('5.')) {\n return contextCaptureFunctions6;\n } else if (moduleVersion.startsWith('7.')) {\n return contextCaptureFunctions7;\n } else {\n return contextCaptureFunctions8;\n }\n}\n\nfunction instrumentRemove(moduleVersion: string | undefined): boolean {\n return (moduleVersion && (moduleVersion.startsWith('5.') || moduleVersion.startsWith('6.'))) || false;\n}\n\n/**\n * 8.21.0 changed Document.updateOne/deleteOne so that the Query is not fully built when Query.exec() is called.\n * @param moduleVersion\n */\nfunction needsDocumentMethodPatch(moduleVersion: string | undefined): boolean {\n if (!moduleVersion || !moduleVersion.startsWith('8.')) {\n return false;\n }\n\n const minor = parseInt(moduleVersion.split('.')[1]!, 10);\n return minor >= 21;\n}\n\n// when mongoose functions are called, we store the original call context\n// and then set it as the parent for the spans created by Query/Aggregate exec()\n// calls. this bypass the unlinked spans issue on thenables await operations.\nexport const _STORED_PARENT_SPAN: unique symbol = Symbol('stored-parent-span');\n\n// Prevents double-instrumentation when doc.updateOne/deleteOne (Mongoose 8.21.0+)\n// creates a span and returns a Query that also calls exec()\nexport const _ALREADY_INSTRUMENTED: unique symbol = Symbol('already-instrumented');\n\nexport class MongooseInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init(): InstrumentationModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(\n 'mongoose',\n // mongoose >= 9.7.0 publishes via diagnostics_channel and is instrumented by\n // `subscribeMongooseDiagnosticChannels` instead, so this IITM patcher must not\n // overlap it — otherwise every operation would emit two mongoose spans.\n ['>=5.9.7 <9.7.0'],\n this.patch.bind(this),\n this.unpatch.bind(this),\n );\n return module;\n }\n\n private patch(module: MongooseModule, moduleVersion: string | undefined) {\n const moduleExports: MongooseModuleExports =\n module[Symbol.toStringTag] === 'Module' && module.default ? module.default : module;\n\n this._wrap(moduleExports.Model.prototype, 'save', this.patchOnModelMethods('save'));\n // mongoose applies this code on module require:\n // Model.prototype.$save = Model.prototype.save;\n // which captures the save function before it is patched.\n // so we need to apply the same logic after instrumenting the save function.\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n if (instrumentRemove(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'remove', this.patchOnModelMethods('remove'));\n }\n\n // Mongoose 8.21.0+ changed Document.updateOne()/deleteOne() so that the Query is not fully built when Query.exec() is called.\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._wrap(moduleExports.Model.prototype, 'updateOne', this._patchDocumentUpdateMethods('updateOne'));\n this._wrap(moduleExports.Model.prototype, 'deleteOne', this._patchDocumentUpdateMethods('deleteOne'));\n }\n\n this._wrap(moduleExports.Query.prototype, 'exec', this.patchQueryExec());\n this._wrap(moduleExports.Aggregate.prototype, 'exec', this.patchAggregateExec());\n\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n contextCaptureFunctions.forEach((funcName: string) => {\n this._wrap(moduleExports.Query.prototype, funcName as any, this.patchAndCaptureSpanContext(funcName));\n });\n this._wrap(moduleExports.Model, 'aggregate', this.patchModelAggregate());\n\n this._wrap(moduleExports.Model, 'insertMany', this.patchModelStatic('insertMany'));\n this._wrap(moduleExports.Model, 'bulkWrite', this.patchModelStatic('bulkWrite'));\n\n return moduleExports;\n }\n\n private unpatch(module: MongooseModule, moduleVersion: string | undefined): void {\n const moduleExports: MongooseModuleExports =\n module[Symbol.toStringTag] === 'Module' && module.default ? module.default : module;\n\n const contextCaptureFunctions = getContextCaptureFunctions(moduleVersion);\n\n this._unwrap(moduleExports.Model.prototype, 'save');\n // revert the patch for $save which we applied by aliasing it to patched `save`\n moduleExports.Model.prototype.$save = moduleExports.Model.prototype.save;\n\n if (instrumentRemove(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'remove');\n }\n\n if (needsDocumentMethodPatch(moduleVersion)) {\n this._unwrap(moduleExports.Model.prototype, 'updateOne');\n this._unwrap(moduleExports.Model.prototype, 'deleteOne');\n }\n\n this._unwrap(moduleExports.Query.prototype, 'exec');\n this._unwrap(moduleExports.Aggregate.prototype, 'exec');\n\n contextCaptureFunctions.forEach((funcName: string) => {\n this._unwrap(moduleExports.Query.prototype, funcName as any);\n });\n this._unwrap(moduleExports.Model, 'aggregate');\n\n this._unwrap(moduleExports.Model, 'insertMany');\n this._unwrap(moduleExports.Model, 'bulkWrite');\n }\n\n private patchAggregateExec() {\n const self = this;\n return (originalAggregate: Function) => {\n return function exec(this: any, callback?: Function) {\n const parentSpan = this[_STORED_PARENT_SPAN];\n const span = self._startSpan(this._model.collection, this._model?.modelName, 'aggregate', parentSpan);\n\n return self._handleResponse(span, originalAggregate, this, arguments, callback);\n };\n };\n }\n\n private patchQueryExec() {\n const self = this;\n return (originalExec: Function) => {\n return function exec(this: any, callback?: Function) {\n // Skip if already instrumented by document instance method patch\n if (this[_ALREADY_INSTRUMENTED]) {\n return originalExec.apply(this, arguments);\n }\n\n const parentSpan = this[_STORED_PARENT_SPAN];\n const span = self._startSpan(this.mongooseCollection, this.model.modelName, this.op, parentSpan);\n\n return self._handleResponse(span, originalExec, this, arguments, callback);\n };\n };\n }\n\n private patchOnModelMethods(op: string) {\n const self = this;\n return (originalOnModelFunction: Function) => {\n return function method(this: any, options?: any, callback?: Function) {\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op);\n\n if (options instanceof Function) {\n // oxlint-disable-next-line no-param-reassign\n callback = options;\n }\n\n return self._handleResponse(span, originalOnModelFunction, this, arguments, callback);\n };\n };\n }\n\n // Patch document instance methods (doc.updateOne/deleteOne) for Mongoose 8.21.0+.\n private _patchDocumentUpdateMethods(op: string) {\n const self = this;\n return (originalMethod: Function) => {\n return function method(this: any, update?: any, options?: any, callback?: Function) {\n // determine actual callback since different argument patterns are allowed\n let actualCallback: Function | undefined = callback;\n if (typeof update === 'function') {\n actualCallback = update;\n } else if (typeof options === 'function') {\n actualCallback = options;\n }\n\n const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op);\n\n const result = self._handleResponse(span, originalMethod, this, arguments, actualCallback);\n\n // Mark returned Query to prevent double-instrumentation when exec() is eventually called\n if (result && typeof result === 'object') {\n result[_ALREADY_INSTRUMENTED] = true;\n }\n\n return result;\n };\n };\n }\n\n private patchModelStatic(op: string) {\n const self = this;\n return (original: Function) => {\n return function patchedStatic(this: any, docsOrOps: any, options?: any, callback?: Function) {\n if (typeof options === 'function') {\n // oxlint-disable-next-line no-param-reassign\n callback = options;\n }\n\n const span = self._startSpan(this.collection, this.modelName, op);\n\n return self._handleResponse(span, original, this, arguments, callback);\n };\n };\n }\n\n // we want to capture the otel span on the object which is calling exec.\n // in the special case of aggregate, we need have no function to path\n // on the Aggregate object to capture the context on, so we patch\n // the aggregate of Model, and set the context on the Aggregate object\n private patchModelAggregate() {\n return (original: Function) => {\n return function captureSpanContext(this: any) {\n const currentSpan = getActiveSpan();\n const aggregate = original.apply(this, arguments);\n if (aggregate) aggregate[_STORED_PARENT_SPAN] = currentSpan;\n return aggregate;\n };\n };\n }\n\n private patchAndCaptureSpanContext(_funcName: string) {\n return (original: Function) => {\n return function captureSpanContext(this: any) {\n this[_STORED_PARENT_SPAN] = getActiveSpan();\n return original.apply(this, arguments);\n };\n };\n }\n\n private _startSpan(collection: mongoose.Collection, modelName: string, operation: string, parentSpan?: Span): Span {\n const attributes: SpanAttributes = {\n ...getAttributesFromCollection(collection),\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_OPERATION]: operation,\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_SYSTEM]: 'mongoose', // keep for backwards compatibility\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n };\n\n return startInactiveSpan({\n name: `mongoose.${modelName}.${operation}`,\n kind: SPAN_KIND.CLIENT,\n attributes,\n parentSpan,\n });\n }\n\n private _handleResponse(span: Span, exec: Function, originalThis: any, args: IArguments, callback?: Function) {\n // Activate the span while the underlying operation runs so that nested instrumentation\n // (e.g. the mongodb driver spans) is parented to this span. `withActiveSpan` returns the\n // callback's result untouched, so lazy mongoose Query thenables are handed back unexecuted.\n return withActiveSpan(span, () => {\n if (callback instanceof Function) {\n return handleCallbackResponse(callback, exec, originalThis, span, args);\n } else {\n const response = exec.apply(originalThis, args);\n return handlePromiseResponse(response, span);\n }\n });\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","getActiveSpan","attributes","getAttributesFromCollection","DB_OPERATION","DB_SYSTEM","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","startInactiveSpan","SPAN_KIND","withActiveSpan","handleCallbackResponse","handlePromiseResponse"],"mappings":"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"}
|
|
@@ -1,18 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
|
|
3
3
|
const ATTR_DB_MONGODB_COLLECTION = "db.mongodb.collection";
|
|
4
|
-
const ATTR_DB_NAME = "db.name";
|
|
5
|
-
const ATTR_DB_OPERATION = "db.operation";
|
|
6
|
-
const ATTR_DB_SYSTEM = "db.system";
|
|
7
|
-
const ATTR_DB_USER = "db.user";
|
|
8
|
-
const ATTR_NET_PEER_NAME = "net.peer.name";
|
|
9
|
-
const ATTR_NET_PEER_PORT = "net.peer.port";
|
|
10
4
|
|
|
11
5
|
exports.ATTR_DB_MONGODB_COLLECTION = ATTR_DB_MONGODB_COLLECTION;
|
|
12
|
-
exports.ATTR_DB_NAME = ATTR_DB_NAME;
|
|
13
|
-
exports.ATTR_DB_OPERATION = ATTR_DB_OPERATION;
|
|
14
|
-
exports.ATTR_DB_SYSTEM = ATTR_DB_SYSTEM;
|
|
15
|
-
exports.ATTR_DB_USER = ATTR_DB_USER;
|
|
16
|
-
exports.ATTR_NET_PEER_NAME = ATTR_NET_PEER_NAME;
|
|
17
|
-
exports.ATTR_NET_PEER_PORT = ATTR_NET_PEER_PORT;
|
|
18
6
|
//# sourceMappingURL=semconv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/mongoose/vendored/semconv.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongoose\n * - Upstream version: @opentelemetry/instrumentation-mongoose@0.64.0\n */\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n
|
|
1
|
+
{"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/mongoose/vendored/semconv.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongoose\n * - Upstream version: @opentelemetry/instrumentation-mongoose@0.64.0\n */\n\n/**\n * Deprecated, use `db.collection.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.collection.name`.\n */\nexport const ATTR_DB_MONGODB_COLLECTION = 'db.mongodb.collection' as const;\n"],"names":[],"mappings":";;AAgBO,MAAM,0BAAA,GAA6B;;;;"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
|
|
3
|
+
const attributes = require('@sentry/conventions/attributes');
|
|
3
4
|
const core = require('@sentry/core');
|
|
4
5
|
const semconv = require('./semconv.js');
|
|
5
6
|
|
|
6
7
|
function getAttributesFromCollection(collection) {
|
|
7
8
|
return {
|
|
8
|
-
//
|
|
9
|
+
// oxlint-disable-next-line typescript/no-deprecated
|
|
9
10
|
[semconv.ATTR_DB_MONGODB_COLLECTION]: collection.name,
|
|
10
|
-
//
|
|
11
|
-
[
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
[semconv.ATTR_NET_PEER_PORT]: collection.conn.port
|
|
11
|
+
// oxlint-disable-next-line typescript/no-deprecated
|
|
12
|
+
[attributes.DB_NAME]: collection.conn.name,
|
|
13
|
+
[attributes.DB_USER]: collection.conn.user,
|
|
14
|
+
// oxlint-disable-next-line typescript/no-deprecated
|
|
15
|
+
[attributes.NET_PEER_NAME]: collection.conn.host,
|
|
16
|
+
// oxlint-disable-next-line typescript/no-deprecated
|
|
17
|
+
[attributes.NET_PEER_PORT]: collection.conn.port
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
function setErrorStatus(span, error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/mongoose/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongoose\n * - Upstream version: @opentelemetry/instrumentation-mongoose@0.64.0\n * - Types vendored from mongoose as simplified interfaces\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport { SPAN_STATUS_ERROR } from '@sentry/core';\nimport type { Collection, MongooseError } from './mongoose-types';\nimport {
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/mongoose/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongoose\n * - Upstream version: @opentelemetry/instrumentation-mongoose@0.64.0\n * - Types vendored from mongoose as simplified interfaces\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport { DB_NAME, DB_USER, NET_PEER_NAME, NET_PEER_PORT } from '@sentry/conventions/attributes';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport { SPAN_STATUS_ERROR } from '@sentry/core';\nimport type { Collection, MongooseError } from './mongoose-types';\nimport { ATTR_DB_MONGODB_COLLECTION } from './semconv';\n\nexport function getAttributesFromCollection(collection: Collection): SpanAttributes {\n return {\n // oxlint-disable-next-line typescript/no-deprecated\n [ATTR_DB_MONGODB_COLLECTION]: collection.name,\n // oxlint-disable-next-line typescript/no-deprecated\n [DB_NAME]: collection.conn.name,\n [DB_USER]: collection.conn.user,\n // oxlint-disable-next-line typescript/no-deprecated\n [NET_PEER_NAME]: collection.conn.host,\n // oxlint-disable-next-line typescript/no-deprecated\n [NET_PEER_PORT]: collection.conn.port,\n };\n}\n\nfunction setErrorStatus(span: Span, error: MongooseError): void {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: `${error.message} ${error.code ? `\\nMongoose Error Code: ${error.code}` : ''}`,\n });\n}\n\nexport function handlePromiseResponse(execResponse: any, span: Span): any {\n if (!(execResponse instanceof Promise)) {\n span.end();\n return execResponse;\n }\n\n return execResponse\n .catch((err: any) => {\n setErrorStatus(span, err);\n throw err;\n })\n .finally(() => span.end());\n}\n\nexport function handleCallbackResponse(\n callback: Function,\n exec: Function,\n originalThis: any,\n span: Span,\n args: IArguments,\n) {\n let callbackArgumentIndex = 0;\n if (args.length === 2) {\n callbackArgumentIndex = 1;\n } else if (args.length === 3) {\n callbackArgumentIndex = 2;\n }\n\n args[callbackArgumentIndex] = (err: Error, response: any): any => {\n if (err) {\n setErrorStatus(span, err);\n }\n\n span.end();\n return callback(err, response);\n };\n\n return exec.apply(originalThis, args);\n}\n"],"names":["ATTR_DB_MONGODB_COLLECTION","DB_NAME","DB_USER","NET_PEER_NAME","NET_PEER_PORT","SPAN_STATUS_ERROR"],"mappings":";;;;;;AAiBO,SAAS,4BAA4B,UAAA,EAAwC;AAClF,EAAA,OAAO;AAAA;AAAA,IAEL,CAACA,kCAA0B,GAAG,UAAA,CAAW,IAAA;AAAA;AAAA,IAEzC,CAACC,kBAAO,GAAG,UAAA,CAAW,IAAA,CAAK,IAAA;AAAA,IAC3B,CAACC,kBAAO,GAAG,UAAA,CAAW,IAAA,CAAK,IAAA;AAAA;AAAA,IAE3B,CAACC,wBAAa,GAAG,UAAA,CAAW,IAAA,CAAK,IAAA;AAAA;AAAA,IAEjC,CAACC,wBAAa,GAAG,UAAA,CAAW,IAAA,CAAK;AAAA,GACnC;AACF;AAEA,SAAS,cAAA,CAAe,MAAY,KAAA,EAA4B;AAC9D,EAAA,IAAA,CAAK,SAAA,CAAU;AAAA,IACb,IAAA,EAAMC,sBAAA;AAAA,IACN,SAAS,CAAA,EAAG,KAAA,CAAM,OAAO,CAAA,CAAA,EAAI,MAAM,IAAA,GAAO;AAAA,qBAAA,EAA0B,KAAA,CAAM,IAAI,CAAA,CAAA,GAAK,EAAE,CAAA;AAAA,GACtF,CAAA;AACH;AAEO,SAAS,qBAAA,CAAsB,cAAmB,IAAA,EAAiB;AACxE,EAAA,IAAI,EAAE,wBAAwB,OAAA,CAAA,EAAU;AACtC,IAAA,IAAA,CAAK,GAAA,EAAI;AACT,IAAA,OAAO,YAAA;AAAA,EACT;AAEA,EAAA,OAAO,YAAA,CACJ,KAAA,CAAM,CAAC,GAAA,KAAa;AACnB,IAAA,cAAA,CAAe,MAAM,GAAG,CAAA;AACxB,IAAA,MAAM,GAAA;AAAA,EACR,CAAC,CAAA,CACA,OAAA,CAAQ,MAAM,IAAA,CAAK,KAAK,CAAA;AAC7B;AAEO,SAAS,sBAAA,CACd,QAAA,EACA,IAAA,EACA,YAAA,EACA,MACA,IAAA,EACA;AACA,EAAA,IAAI,qBAAA,GAAwB,CAAA;AAC5B,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,qBAAA,GAAwB,CAAA;AAAA,EAC1B,CAAA,MAAA,IAAW,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC5B,IAAA,qBAAA,GAAwB,CAAA;AAAA,EAC1B;AAEA,EAAA,IAAA,CAAK,qBAAqB,CAAA,GAAI,CAAC,GAAA,EAAY,QAAA,KAAuB;AAChE,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,cAAA,CAAe,MAAM,GAAG,CAAA;AAAA,IAC1B;AAEA,IAAA,IAAA,CAAK,GAAA,EAAI;AACT,IAAA,OAAO,QAAA,CAAS,KAAK,QAAQ,CAAA;AAAA,EAC/B,CAAA;AAEA,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,YAAA,EAAc,IAAI,CAAA;AACtC;;;;;;"}
|
|
@@ -2,6 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
2
2
|
|
|
3
3
|
const instrumentation = require('@opentelemetry/instrumentation');
|
|
4
4
|
const core = require('@sentry/core');
|
|
5
|
+
const attributes = require('@sentry/conventions/attributes');
|
|
5
6
|
const semconv = require('./semconv.js');
|
|
6
7
|
const utils = require('./utils.js');
|
|
7
8
|
|
|
@@ -123,22 +124,22 @@ class MySQLInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
123
124
|
}
|
|
124
125
|
const { host, port, database, user } = utils.getConfig(connection.config);
|
|
125
126
|
const portNumber = parseInt(String(port), 10);
|
|
126
|
-
const attributes = {
|
|
127
|
+
const attributes$1 = {
|
|
127
128
|
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
|
|
128
|
-
[
|
|
129
|
+
[attributes.DB_SYSTEM]: semconv.DB_SYSTEM_VALUE_MYSQL,
|
|
129
130
|
[semconv.ATTR_DB_CONNECTION_STRING]: utils.getJDBCString(host, port, database),
|
|
130
|
-
[
|
|
131
|
-
[
|
|
132
|
-
[
|
|
133
|
-
[
|
|
131
|
+
[attributes.DB_NAME]: database,
|
|
132
|
+
[attributes.DB_USER]: user,
|
|
133
|
+
[attributes.DB_STATEMENT]: utils.getDbQueryText(query),
|
|
134
|
+
[attributes.NET_PEER_NAME]: host
|
|
134
135
|
};
|
|
135
136
|
if (!isNaN(portNumber)) {
|
|
136
|
-
attributes[
|
|
137
|
+
attributes$1[attributes.NET_PEER_PORT] = portNumber;
|
|
137
138
|
}
|
|
138
139
|
const span = core.startInactiveSpan({
|
|
139
140
|
name: utils.getSpanName(query),
|
|
140
141
|
kind: core.SPAN_KIND.CLIENT,
|
|
141
|
-
attributes
|
|
142
|
+
attributes: attributes$1
|
|
142
143
|
});
|
|
143
144
|
const cbIndex = Array.from(arguments).findIndex((arg) => typeof arg === "function");
|
|
144
145
|
const scope = core.getCurrentScope();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mysql/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql\n * - Upstream version: @opentelemetry/instrumentation-mysql@0.64.0\n * - Types from the `mysql` package inlined as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs, and the connection-pool\n * metrics / `enhancedDatabaseReporting` option were removed (unused by the Sentry SDK)\n */\n\nimport type { Span } from '@opentelemetry/api';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport type { Scope, SpanAttributes } from '@sentry/core';\nimport {\n bindScopeToEmitter,\n getCurrentScope,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n withScope,\n} from '@sentry/core';\nimport type * as mysqlTypes from './mysql-types';\nimport {\n ATTR_DB_CONNECTION_STRING,\n ATTR_DB_NAME,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_DB_USER,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n DB_SYSTEM_VALUE_MYSQL,\n} from './semconv';\nimport { getConfig, getDbQueryText, getJDBCString, getSpanName } from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mysql';\nconst ORIGIN = 'auto.db.otel.mysql';\n\ntype getConnectionCallbackType = (err: mysqlTypes.MysqlError, connection: mysqlTypes.PoolConnection) => void;\n\nexport class MySQLInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n public constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'mysql',\n ['>=2.0.0 <3'],\n (moduleExports: typeof mysqlTypes) => {\n if (isWrapped(moduleExports.createConnection)) {\n this._unwrap(moduleExports, 'createConnection');\n }\n // oxlint-disable-next-line typescript/no-explicit-any\n this._wrap(moduleExports, 'createConnection', this._patchCreateConnection() as any);\n\n if (isWrapped(moduleExports.createPool)) {\n this._unwrap(moduleExports, 'createPool');\n }\n // oxlint-disable-next-line typescript/no-explicit-any\n this._wrap(moduleExports, 'createPool', this._patchCreatePool() as any);\n\n if (isWrapped(moduleExports.createPoolCluster)) {\n this._unwrap(moduleExports, 'createPoolCluster');\n }\n // oxlint-disable-next-line typescript/no-explicit-any\n this._wrap(moduleExports, 'createPoolCluster', this._patchCreatePoolCluster() as any);\n\n return moduleExports;\n },\n (moduleExports: typeof mysqlTypes) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports, 'createConnection');\n this._unwrap(moduleExports, 'createPool');\n this._unwrap(moduleExports, 'createPoolCluster');\n },\n ),\n ];\n }\n\n // global export function\n private _patchCreateConnection() {\n return (originalCreateConnection: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n\n return function createConnection(_connectionUri: string | mysqlTypes.ConnectionConfig) {\n const originalResult = originalCreateConnection(...arguments);\n\n // This is unwrapped on next call after unpatch\n // oxlint-disable-next-line typescript/no-explicit-any\n thisPlugin._wrap(originalResult, 'query', thisPlugin._patchQuery(originalResult) as any);\n\n return originalResult;\n };\n };\n }\n\n // global export function\n private _patchCreatePool() {\n return (originalCreatePool: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n return function createPool(_config: string | mysqlTypes.PoolConfig) {\n const pool = originalCreatePool(...arguments);\n\n thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool));\n thisPlugin._wrap(pool, 'getConnection', thisPlugin._patchGetConnection(pool));\n\n return pool;\n };\n };\n }\n\n // global export function\n private _patchCreatePoolCluster() {\n return (originalCreatePoolCluster: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n return function createPool(_config: string | mysqlTypes.PoolConfig) {\n const cluster = originalCreatePoolCluster(...arguments);\n\n // This is unwrapped on next call after unpatch\n thisPlugin._wrap(cluster, 'getConnection', thisPlugin._patchGetConnection(cluster));\n\n return cluster;\n };\n };\n }\n\n // method on cluster or pool\n private _patchGetConnection(pool: mysqlTypes.Pool | mysqlTypes.PoolCluster) {\n return (originalGetConnection: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n\n return function getConnection(arg1?: unknown, arg2?: unknown, arg3?: unknown) {\n // Unwrap if unpatch has been called\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(pool, 'getConnection');\n return originalGetConnection.apply(pool, arguments);\n }\n\n if (arguments.length === 1 && typeof arg1 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg1 as getConnectionCallbackType);\n return originalGetConnection.call(pool, patchFn);\n }\n if (arguments.length === 2 && typeof arg2 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg2 as getConnectionCallbackType);\n return originalGetConnection.call(pool, arg1, patchFn);\n }\n if (arguments.length === 3 && typeof arg3 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg3 as getConnectionCallbackType);\n return originalGetConnection.call(pool, arg1, arg2, patchFn);\n }\n\n return originalGetConnection.apply(pool, arguments);\n };\n };\n }\n\n private _getConnectionCallbackPatchFn(cb: getConnectionCallbackType) {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n const scope = getCurrentScope();\n return function (this: unknown, err: mysqlTypes.MysqlError, connection: mysqlTypes.PoolConnection) {\n if (connection) {\n // this is the callback passed into a query\n // no need to unwrap\n if (!isWrapped(connection.query)) {\n // oxlint-disable-next-line typescript/no-explicit-any\n thisPlugin._wrap(connection, 'query', thisPlugin._patchQuery(connection) as any);\n }\n }\n if (typeof cb === 'function') {\n withScope(scope, () => cb.call(this, err, connection));\n }\n };\n }\n\n private _patchQuery(connection: mysqlTypes.Connection | mysqlTypes.Pool) {\n return (originalQuery: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n\n return function query(\n query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n _valuesOrCallback?: unknown[] | mysqlTypes.queryCallback,\n _callback?: mysqlTypes.queryCallback,\n ) {\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(connection, 'query');\n return originalQuery.apply(connection, arguments);\n }\n\n const { host, port, database, user } = getConfig(connection.config);\n const portNumber = parseInt(String(port), 10);\n /* eslint-disable @sentry/no-deprecated-attributes */\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_MYSQL,\n [ATTR_DB_CONNECTION_STRING]: getJDBCString(host, port, database),\n [ATTR_DB_NAME]: database,\n [ATTR_DB_USER]: user,\n [ATTR_DB_STATEMENT]: getDbQueryText(query),\n [ATTR_NET_PEER_NAME]: host,\n };\n\n if (!isNaN(portNumber)) {\n attributes[ATTR_NET_PEER_PORT] = portNumber;\n }\n /* eslint-enable @sentry/no-deprecated-attributes */\n\n const span = startInactiveSpan({\n name: getSpanName(query),\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n\n const cbIndex = Array.from(arguments).findIndex(arg => typeof arg === 'function');\n\n const scope = getCurrentScope();\n if (cbIndex === -1) {\n const streamableQuery: mysqlTypes.Query = withActiveSpan(span, () => {\n return originalQuery.apply(connection, arguments);\n });\n bindScopeToEmitter(streamableQuery, scope);\n\n return streamableQuery\n .on('error', (err: unknown) => {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: (err as mysqlTypes.MysqlError).message,\n });\n })\n .on('end', () => {\n span.end();\n });\n } else {\n thisPlugin._wrap(arguments, cbIndex, thisPlugin._patchCallbackQuery(span, scope));\n\n return withActiveSpan(span, () => {\n return originalQuery.apply(connection, arguments);\n });\n }\n };\n };\n }\n\n private _patchCallbackQuery(span: Span, scope: Scope) {\n return (originalCallback: Function) => {\n return function (err: mysqlTypes.MysqlError | null, _results?: unknown, _fields?: mysqlTypes.FieldInfo[]) {\n if (err) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: err.message,\n });\n }\n span.end();\n return withScope(scope, () => originalCallback(...arguments));\n };\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","getCurrentScope","withScope","getConfig","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","ATTR_DB_SYSTEM","DB_SYSTEM_VALUE_MYSQL","ATTR_DB_CONNECTION_STRING","getJDBCString","ATTR_DB_NAME","ATTR_DB_USER","ATTR_DB_STATEMENT","getDbQueryText","ATTR_NET_PEER_NAME","ATTR_NET_PEER_PORT","startInactiveSpan","getSpanName","SPAN_KIND","withActiveSpan","bindScopeToEmitter","SPAN_STATUS_ERROR"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mysql/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql\n * - Upstream version: @opentelemetry/instrumentation-mysql@0.64.0\n * - Types from the `mysql` package inlined as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs, and the connection-pool\n * metrics / `enhancedDatabaseReporting` option were removed (unused by the Sentry SDK)\n */\n\nimport type { Span } from '@opentelemetry/api';\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport type { Scope, SpanAttributes } from '@sentry/core';\nimport {\n bindScopeToEmitter,\n getCurrentScope,\n SDK_VERSION,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n SPAN_KIND,\n SPAN_STATUS_ERROR,\n startInactiveSpan,\n withActiveSpan,\n withScope,\n} from '@sentry/core';\nimport {\n DB_NAME,\n DB_STATEMENT,\n DB_SYSTEM,\n DB_USER,\n NET_PEER_NAME,\n NET_PEER_PORT,\n} from '@sentry/conventions/attributes';\nimport type * as mysqlTypes from './mysql-types';\nimport { ATTR_DB_CONNECTION_STRING, DB_SYSTEM_VALUE_MYSQL } from './semconv';\nimport { getConfig, getDbQueryText, getJDBCString, getSpanName } from './utils';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mysql';\nconst ORIGIN = 'auto.db.otel.mysql';\n\ntype getConnectionCallbackType = (err: mysqlTypes.MysqlError, connection: mysqlTypes.PoolConnection) => void;\n\nexport class MySQLInstrumentation extends InstrumentationBase<InstrumentationConfig> {\n public constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n 'mysql',\n ['>=2.0.0 <3'],\n (moduleExports: typeof mysqlTypes) => {\n if (isWrapped(moduleExports.createConnection)) {\n this._unwrap(moduleExports, 'createConnection');\n }\n // oxlint-disable-next-line typescript/no-explicit-any\n this._wrap(moduleExports, 'createConnection', this._patchCreateConnection() as any);\n\n if (isWrapped(moduleExports.createPool)) {\n this._unwrap(moduleExports, 'createPool');\n }\n // oxlint-disable-next-line typescript/no-explicit-any\n this._wrap(moduleExports, 'createPool', this._patchCreatePool() as any);\n\n if (isWrapped(moduleExports.createPoolCluster)) {\n this._unwrap(moduleExports, 'createPoolCluster');\n }\n // oxlint-disable-next-line typescript/no-explicit-any\n this._wrap(moduleExports, 'createPoolCluster', this._patchCreatePoolCluster() as any);\n\n return moduleExports;\n },\n (moduleExports: typeof mysqlTypes) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports, 'createConnection');\n this._unwrap(moduleExports, 'createPool');\n this._unwrap(moduleExports, 'createPoolCluster');\n },\n ),\n ];\n }\n\n // global export function\n private _patchCreateConnection() {\n return (originalCreateConnection: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n\n return function createConnection(_connectionUri: string | mysqlTypes.ConnectionConfig) {\n const originalResult = originalCreateConnection(...arguments);\n\n // This is unwrapped on next call after unpatch\n // oxlint-disable-next-line typescript/no-explicit-any\n thisPlugin._wrap(originalResult, 'query', thisPlugin._patchQuery(originalResult) as any);\n\n return originalResult;\n };\n };\n }\n\n // global export function\n private _patchCreatePool() {\n return (originalCreatePool: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n return function createPool(_config: string | mysqlTypes.PoolConfig) {\n const pool = originalCreatePool(...arguments);\n\n thisPlugin._wrap(pool, 'query', thisPlugin._patchQuery(pool));\n thisPlugin._wrap(pool, 'getConnection', thisPlugin._patchGetConnection(pool));\n\n return pool;\n };\n };\n }\n\n // global export function\n private _patchCreatePoolCluster() {\n return (originalCreatePoolCluster: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n return function createPool(_config: string | mysqlTypes.PoolConfig) {\n const cluster = originalCreatePoolCluster(...arguments);\n\n // This is unwrapped on next call after unpatch\n thisPlugin._wrap(cluster, 'getConnection', thisPlugin._patchGetConnection(cluster));\n\n return cluster;\n };\n };\n }\n\n // method on cluster or pool\n private _patchGetConnection(pool: mysqlTypes.Pool | mysqlTypes.PoolCluster) {\n return (originalGetConnection: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n\n return function getConnection(arg1?: unknown, arg2?: unknown, arg3?: unknown) {\n // Unwrap if unpatch has been called\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(pool, 'getConnection');\n return originalGetConnection.apply(pool, arguments);\n }\n\n if (arguments.length === 1 && typeof arg1 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg1 as getConnectionCallbackType);\n return originalGetConnection.call(pool, patchFn);\n }\n if (arguments.length === 2 && typeof arg2 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg2 as getConnectionCallbackType);\n return originalGetConnection.call(pool, arg1, patchFn);\n }\n if (arguments.length === 3 && typeof arg3 === 'function') {\n const patchFn = thisPlugin._getConnectionCallbackPatchFn(arg3 as getConnectionCallbackType);\n return originalGetConnection.call(pool, arg1, arg2, patchFn);\n }\n\n return originalGetConnection.apply(pool, arguments);\n };\n };\n }\n\n private _getConnectionCallbackPatchFn(cb: getConnectionCallbackType) {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n const scope = getCurrentScope();\n return function (this: unknown, err: mysqlTypes.MysqlError, connection: mysqlTypes.PoolConnection) {\n if (connection) {\n // this is the callback passed into a query\n // no need to unwrap\n if (!isWrapped(connection.query)) {\n // oxlint-disable-next-line typescript/no-explicit-any\n thisPlugin._wrap(connection, 'query', thisPlugin._patchQuery(connection) as any);\n }\n }\n if (typeof cb === 'function') {\n withScope(scope, () => cb.call(this, err, connection));\n }\n };\n }\n\n private _patchQuery(connection: mysqlTypes.Connection | mysqlTypes.Pool) {\n return (originalQuery: Function) => {\n // oxlint-disable-next-line typescript/no-this-alias\n const thisPlugin = this;\n\n return function query(\n query: string | mysqlTypes.Query | mysqlTypes.QueryOptions,\n _valuesOrCallback?: unknown[] | mysqlTypes.queryCallback,\n _callback?: mysqlTypes.queryCallback,\n ) {\n if (!thisPlugin['_enabled']) {\n thisPlugin._unwrap(connection, 'query');\n return originalQuery.apply(connection, arguments);\n }\n\n const { host, port, database, user } = getConfig(connection.config);\n const portNumber = parseInt(String(port), 10);\n /* eslint-disable @sentry/no-deprecated-attributes */\n const attributes: SpanAttributes = {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n [DB_SYSTEM]: DB_SYSTEM_VALUE_MYSQL,\n [ATTR_DB_CONNECTION_STRING]: getJDBCString(host, port, database),\n [DB_NAME]: database,\n [DB_USER]: user,\n [DB_STATEMENT]: getDbQueryText(query),\n [NET_PEER_NAME]: host,\n };\n\n if (!isNaN(portNumber)) {\n attributes[NET_PEER_PORT] = portNumber;\n }\n /* eslint-enable @sentry/no-deprecated-attributes */\n\n const span = startInactiveSpan({\n name: getSpanName(query),\n kind: SPAN_KIND.CLIENT,\n attributes,\n });\n\n const cbIndex = Array.from(arguments).findIndex(arg => typeof arg === 'function');\n\n const scope = getCurrentScope();\n if (cbIndex === -1) {\n const streamableQuery: mysqlTypes.Query = withActiveSpan(span, () => {\n return originalQuery.apply(connection, arguments);\n });\n bindScopeToEmitter(streamableQuery, scope);\n\n return streamableQuery\n .on('error', (err: unknown) => {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: (err as mysqlTypes.MysqlError).message,\n });\n })\n .on('end', () => {\n span.end();\n });\n } else {\n thisPlugin._wrap(arguments, cbIndex, thisPlugin._patchCallbackQuery(span, scope));\n\n return withActiveSpan(span, () => {\n return originalQuery.apply(connection, arguments);\n });\n }\n };\n };\n }\n\n private _patchCallbackQuery(span: Span, scope: Scope) {\n return (originalCallback: Function) => {\n return function (err: mysqlTypes.MysqlError | null, _results?: unknown, _fields?: mysqlTypes.FieldInfo[]) {\n if (err) {\n span.setStatus({\n code: SPAN_STATUS_ERROR,\n message: err.message,\n });\n }\n span.end();\n return withScope(scope, () => originalCallback(...arguments));\n };\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","getCurrentScope","withScope","getConfig","attributes","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","DB_SYSTEM","DB_SYSTEM_VALUE_MYSQL","ATTR_DB_CONNECTION_STRING","getJDBCString","DB_NAME","DB_USER","DB_STATEMENT","getDbQueryText","NET_PEER_NAME","NET_PEER_PORT","startInactiveSpan","getSpanName","SPAN_KIND","withActiveSpan","bindScopeToEmitter","SPAN_STATUS_ERROR"],"mappings":"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"}
|
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
|
|
3
3
|
const ATTR_DB_CONNECTION_STRING = "db.connection_string";
|
|
4
|
-
const ATTR_DB_NAME = "db.name";
|
|
5
|
-
const ATTR_DB_STATEMENT = "db.statement";
|
|
6
|
-
const ATTR_DB_SYSTEM = "db.system";
|
|
7
|
-
const ATTR_DB_USER = "db.user";
|
|
8
|
-
const ATTR_NET_PEER_NAME = "net.peer.name";
|
|
9
|
-
const ATTR_NET_PEER_PORT = "net.peer.port";
|
|
10
4
|
const DB_SYSTEM_VALUE_MYSQL = "mysql";
|
|
11
5
|
|
|
12
6
|
exports.ATTR_DB_CONNECTION_STRING = ATTR_DB_CONNECTION_STRING;
|
|
13
|
-
exports.ATTR_DB_NAME = ATTR_DB_NAME;
|
|
14
|
-
exports.ATTR_DB_STATEMENT = ATTR_DB_STATEMENT;
|
|
15
|
-
exports.ATTR_DB_SYSTEM = ATTR_DB_SYSTEM;
|
|
16
|
-
exports.ATTR_DB_USER = ATTR_DB_USER;
|
|
17
|
-
exports.ATTR_NET_PEER_NAME = ATTR_NET_PEER_NAME;
|
|
18
|
-
exports.ATTR_NET_PEER_PORT = ATTR_NET_PEER_PORT;
|
|
19
7
|
exports.DB_SYSTEM_VALUE_MYSQL = DB_SYSTEM_VALUE_MYSQL;
|
|
20
8
|
//# sourceMappingURL=semconv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/mysql/vendored/semconv.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql\n * - Upstream version: @opentelemetry/instrumentation-mysql@0.64.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n *
|
|
1
|
+
{"version":3,"file":"semconv.js","sources":["../../../../../../src/integrations/tracing/mysql/vendored/semconv.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql\n * - Upstream version: @opentelemetry/instrumentation-mysql@0.64.0\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `server.address`, `server.port` attributes instead.\n *\n * @example \"Server=(localdb)\\\\v11.0;Integrated Security=true;\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` and `server.port`.\n */\nexport const ATTR_DB_CONNECTION_STRING = 'db.connection_string' as const;\n\n/**\n * Enum value \"mysql\" for attribute `db.system`.\n *\n * MySQL\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_MYSQL = 'mysql' as const;\n"],"names":[],"mappings":";;AAwBO,MAAM,yBAAA,GAA4B;AASlC,MAAM,qBAAA,GAAwB;;;;;"}
|
|
@@ -3,16 +3,17 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
3
3
|
const instrumentation = require('./vendored/instrumentation.js');
|
|
4
4
|
const core = require('@sentry/core');
|
|
5
5
|
const nodeCore = require('@sentry/node-core');
|
|
6
|
+
const serverUtils = require('@sentry/server-utils');
|
|
6
7
|
|
|
7
8
|
const INTEGRATION_NAME = "Mysql2";
|
|
8
9
|
const instrumentMysql2 = nodeCore.generateInstrumentOnce(INTEGRATION_NAME, () => new instrumentation.MySQL2Instrumentation());
|
|
9
10
|
const _mysql2Integration = (() => {
|
|
10
|
-
return {
|
|
11
|
+
return core.extendIntegration(serverUtils.mysql2Integration(), {
|
|
11
12
|
name: INTEGRATION_NAME,
|
|
12
13
|
setupOnce() {
|
|
13
14
|
instrumentMysql2();
|
|
14
15
|
}
|
|
15
|
-
};
|
|
16
|
+
});
|
|
16
17
|
});
|
|
17
18
|
const mysql2Integration = core.defineIntegration(_mysql2Integration);
|
|
18
19
|
|