@sentry/node 10.66.0 → 10.67.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.
Files changed (69) hide show
  1. package/build/cjs/index.js +20 -19
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/integrations/tracing/koa/vendored/utils.js +4 -1
  4. package/build/cjs/integrations/tracing/koa/vendored/utils.js.map +1 -1
  5. package/build/cjs/integrations/tracing/mongo/vendored/patches.js +8 -9
  6. package/build/cjs/integrations/tracing/mongo/vendored/patches.js.map +1 -1
  7. package/build/cjs/integrations/tracing/mongo/vendored/utils.js +5 -118
  8. package/build/cjs/integrations/tracing/mongo/vendored/utils.js.map +1 -1
  9. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js +33 -23
  10. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  11. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js +0 -16
  12. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  13. package/build/cjs/sdk/index.js +11 -0
  14. package/build/cjs/sdk/index.js.map +1 -1
  15. package/build/cjs/sdk/initOtel.js +26 -2
  16. package/build/cjs/sdk/initOtel.js.map +1 -1
  17. package/build/esm/index.js +1 -1
  18. package/build/esm/integrations/tracing/koa/vendored/utils.js +5 -2
  19. package/build/esm/integrations/tracing/koa/vendored/utils.js.map +1 -1
  20. package/build/esm/integrations/tracing/mongo/vendored/patches.js +3 -4
  21. package/build/esm/integrations/tracing/mongo/vendored/patches.js.map +1 -1
  22. package/build/esm/integrations/tracing/mongo/vendored/utils.js +6 -118
  23. package/build/esm/integrations/tracing/mongo/vendored/utils.js.map +1 -1
  24. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js +35 -25
  25. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  26. package/build/esm/integrations/tracing/mongoose/vendored/utils.js +1 -16
  27. package/build/esm/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  28. package/build/esm/package.json +1 -1
  29. package/build/esm/sdk/index.js +11 -1
  30. package/build/esm/sdk/index.js.map +1 -1
  31. package/build/esm/sdk/initOtel.js +27 -3
  32. package/build/esm/sdk/initOtel.js.map +1 -1
  33. package/build/types/index.d.ts +1 -1
  34. package/build/types/index.d.ts.map +1 -1
  35. package/build/types/integrations/tracing/koa/vendored/utils.d.ts.map +1 -1
  36. package/build/types/integrations/tracing/mongo/vendored/patches.d.ts.map +1 -1
  37. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts +6 -15
  38. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts.map +1 -1
  39. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts +0 -1
  40. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts.map +1 -1
  41. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts +1 -3
  42. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts.map +1 -1
  43. package/build/types/sdk/index.d.ts +18 -0
  44. package/build/types/sdk/index.d.ts.map +1 -1
  45. package/build/types/sdk/initOtel.d.ts.map +1 -1
  46. package/build/types-ts3.8/index.d.ts +1 -1
  47. package/build/types-ts3.8/integrations/tracing/mongo/vendored/utils.d.ts +6 -15
  48. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/mongoose.d.ts +0 -1
  49. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/utils.d.ts +1 -3
  50. package/build/types-ts3.8/sdk/index.d.ts +18 -0
  51. package/package.json +5 -5
  52. package/build/cjs/integrations/tracing/mongo/vendored/internal-types.js +0 -14
  53. package/build/cjs/integrations/tracing/mongo/vendored/internal-types.js.map +0 -1
  54. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js +0 -10
  55. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js.map +0 -1
  56. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js +0 -6
  57. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js.map +0 -1
  58. package/build/esm/integrations/tracing/mongo/vendored/internal-types.js +0 -12
  59. package/build/esm/integrations/tracing/mongo/vendored/internal-types.js.map +0 -1
  60. package/build/esm/integrations/tracing/mongo/vendored/semconv.js +0 -6
  61. package/build/esm/integrations/tracing/mongo/vendored/semconv.js.map +0 -1
  62. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js +0 -4
  63. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js.map +0 -1
  64. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts +0 -17
  65. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts.map +0 -1
  66. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -9
  67. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts.map +0 -1
  68. package/build/types-ts3.8/integrations/tracing/mongo/vendored/semconv.d.ts +0 -17
  69. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -9
@@ -2,9 +2,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const http = require('./integrations/http.js');
4
4
  const nodeFetch = require('./integrations/node-fetch.js');
5
- const index$5 = require('./integrations/fs/index.js');
5
+ const index$6 = require('./integrations/fs/index.js');
6
6
  const express = require('./integrations/tracing/express.js');
7
- const index$4 = require('./integrations/tracing/fastify/index.js');
7
+ const index$5 = require('./integrations/tracing/fastify/index.js');
8
8
  const index$a = require('./integrations/tracing/graphql/index.js');
9
9
  const index$d = require('./integrations/tracing/kafka/index.js');
10
10
  const index$i = require('./integrations/tracing/lrumemoizer/index.js');
@@ -19,11 +19,11 @@ const serverUtils = require('@sentry/server-utils');
19
19
  const index$b = require('./integrations/tracing/hapi/index.js');
20
20
  const index$c = require('./integrations/tracing/hono/index.js');
21
21
  const index$f = require('./integrations/tracing/koa/index.js');
22
- const index$2 = require('./integrations/tracing/connect/index.js');
22
+ const index$3 = require('./integrations/tracing/connect/index.js');
23
23
  const index$e = require('./integrations/tracing/knex/index.js');
24
24
  const index$q = require('./integrations/tracing/tedious/index.js');
25
- const index$6 = require('./integrations/tracing/genericPool/index.js');
26
- const index$3 = require('./integrations/tracing/dataloader/index.js');
25
+ const index$7 = require('./integrations/tracing/genericPool/index.js');
26
+ const index$4 = require('./integrations/tracing/dataloader/index.js');
27
27
  const index = require('./integrations/tracing/amqplib/index.js');
28
28
  const index$r = require('./integrations/tracing/vercelai/index.js');
29
29
  const index$n = require('./integrations/tracing/openai/index.js');
@@ -37,11 +37,11 @@ const statsig = require('./integrations/featureFlagShims/statsig.js');
37
37
  const unleash = require('./integrations/featureFlagShims/unleash.js');
38
38
  const growthbook = require('./integrations/featureFlagShims/growthbook.js');
39
39
  const firebase = require('./integrations/tracing/firebase/firebase.js');
40
- const index$8 = require('./sdk/index.js');
40
+ const index$2 = require('./sdk/index.js');
41
41
  const experimentalUseDiagnosticsChannelInjection = require('./sdk/experimentalUseDiagnosticsChannelInjection.js');
42
42
  const diagnosticsChannelInjection = require('./sdk/diagnosticsChannelInjection.js');
43
43
  const initOtel = require('./sdk/initOtel.js');
44
- const index$7 = require('./integrations/tracing/index.js');
44
+ const index$8 = require('./integrations/tracing/index.js');
45
45
  const opentelemetry = require('@sentry/opentelemetry');
46
46
  const core = require('@sentry/core');
47
47
  const nodeCore = require('@sentry/node-core');
@@ -50,11 +50,11 @@ const nodeCore = require('@sentry/node-core');
50
50
 
51
51
  exports.httpIntegration = http.httpIntegration;
52
52
  exports.nativeNodeFetchIntegration = nodeFetch.nativeNodeFetchIntegration;
53
- exports.fsIntegration = index$5.fsIntegration;
53
+ exports.fsIntegration = index$6.fsIntegration;
54
54
  exports.expressIntegration = express.expressIntegration;
55
55
  exports.setupExpressErrorHandler = express.setupExpressErrorHandler;
56
- exports.fastifyIntegration = index$4.fastifyIntegration;
57
- exports.setupFastifyErrorHandler = index$4.setupFastifyErrorHandler;
56
+ exports.fastifyIntegration = index$5.fastifyIntegration;
57
+ exports.setupFastifyErrorHandler = index$5.setupFastifyErrorHandler;
58
58
  exports.graphqlIntegration = index$a.graphqlIntegration;
59
59
  exports.kafkaIntegration = index$d.kafkaIntegration;
60
60
  exports.lruMemoizerIntegration = index$i.lruMemoizerIntegration;
@@ -72,12 +72,12 @@ exports.honoIntegration = index$c.honoIntegration;
72
72
  exports.setupHonoErrorHandler = index$c.setupHonoErrorHandler;
73
73
  exports.koaIntegration = index$f.koaIntegration;
74
74
  exports.setupKoaErrorHandler = index$f.setupKoaErrorHandler;
75
- exports.connectIntegration = index$2.connectIntegration;
76
- exports.setupConnectErrorHandler = index$2.setupConnectErrorHandler;
75
+ exports.connectIntegration = index$3.connectIntegration;
76
+ exports.setupConnectErrorHandler = index$3.setupConnectErrorHandler;
77
77
  exports.knexIntegration = index$e.knexIntegration;
78
78
  exports.tediousIntegration = index$q.tediousIntegration;
79
- exports.genericPoolIntegration = index$6.genericPoolIntegration;
80
- exports.dataloaderIntegration = index$3.dataloaderIntegration;
79
+ exports.genericPoolIntegration = index$7.genericPoolIntegration;
80
+ exports.dataloaderIntegration = index$4.dataloaderIntegration;
81
81
  exports.amqplibIntegration = index.amqplibIntegration;
82
82
  exports.vercelAIIntegration = index$r.vercelAIIntegration;
83
83
  exports.openAIIntegration = index$n.openAIIntegration;
@@ -93,16 +93,17 @@ exports.statsigIntegration = statsig.statsigIntegrationShim;
93
93
  exports.unleashIntegration = unleash.unleashIntegrationShim;
94
94
  exports.growthbookIntegration = growthbook.growthbookIntegrationShim;
95
95
  exports.firebaseIntegration = firebase.firebaseIntegration;
96
- exports.getDefaultIntegrations = index$8.getDefaultIntegrations;
97
- exports.getDefaultIntegrationsWithoutPerformance = index$8.getDefaultIntegrationsWithoutPerformance;
98
- exports.init = index$8.init;
99
- exports.initWithoutDefaultIntegrations = index$8.initWithoutDefaultIntegrations;
96
+ exports.applyDiagnosticsChannelInjectionIntegrations = index$2.applyDiagnosticsChannelInjectionIntegrations;
97
+ exports.getDefaultIntegrations = index$2.getDefaultIntegrations;
98
+ exports.getDefaultIntegrationsWithoutPerformance = index$2.getDefaultIntegrationsWithoutPerformance;
99
+ exports.init = index$2.init;
100
+ exports.initWithoutDefaultIntegrations = index$2.initWithoutDefaultIntegrations;
100
101
  exports.diagnosticsChannelInjectionIntegrations = experimentalUseDiagnosticsChannelInjection.diagnosticsChannelInjectionIntegrations;
101
102
  exports.experimentalUseDiagnosticsChannelInjection = experimentalUseDiagnosticsChannelInjection.experimentalUseDiagnosticsChannelInjection;
102
103
  exports.isDiagnosticsChannelInjectionEnabled = diagnosticsChannelInjection.isDiagnosticsChannelInjectionEnabled;
103
104
  exports.initOpenTelemetry = initOtel.initOpenTelemetry;
104
105
  exports.preloadOpenTelemetry = initOtel.preloadOpenTelemetry;
105
- exports.getAutoPerformanceIntegrations = index$7.getAutoPerformanceIntegrations;
106
+ exports.getAutoPerformanceIntegrations = index$8.getAutoPerformanceIntegrations;
106
107
  exports.setNodeAsyncContextStrategy = opentelemetry.setOpenTelemetryContextAsyncContextStrategy;
107
108
  exports.SDK_VERSION = core.SDK_VERSION;
108
109
  exports.SEMANTIC_ATTRIBUTE_SENTRY_OP = core.SEMANTIC_ATTRIBUTE_SENTRY_OP;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -9,6 +9,7 @@ const getMiddlewareMetadata = (context, layer, isRouter, layerPath) => {
9
9
  return {
10
10
  attributes: {
11
11
  [AttributeNames.AttributeNames.KOA_NAME]: layerPath?.toString(),
12
+ // TODO(v11): remove, replaced by http.route
12
13
  [AttributeNames.AttributeNames.KOA_TYPE]: types.KoaLayerType.ROUTER,
13
14
  [attributes.HTTP_ROUTE]: layerPath?.toString()
14
15
  },
@@ -18,7 +19,9 @@ const getMiddlewareMetadata = (context, layer, isRouter, layerPath) => {
18
19
  return {
19
20
  attributes: {
20
21
  [AttributeNames.AttributeNames.KOA_NAME]: layer.name ?? "middleware",
21
- [AttributeNames.AttributeNames.KOA_TYPE]: types.KoaLayerType.MIDDLEWARE
22
+ // TODO(v11): remove, replaced by code.function.name
23
+ [AttributeNames.AttributeNames.KOA_TYPE]: types.KoaLayerType.MIDDLEWARE,
24
+ [attributes.CODE_FUNCTION_NAME]: layer.name ?? "middleware"
22
25
  },
23
26
  name: `middleware - ${layer.name}`
24
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/koa/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-koa\n * - Upstream version: @opentelemetry/instrumentation-koa@0.66.0\n */\n\nimport { KoaLayerType, type KoaInstrumentationConfig } from './types';\nimport type { KoaContext, KoaMiddleware } from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport type { Attributes } from '@opentelemetry/api';\nimport { HTTP_ROUTE } from '@sentry/conventions/attributes';\n\nexport const getMiddlewareMetadata = (\n context: KoaContext,\n layer: KoaMiddleware,\n isRouter: boolean,\n layerPath?: string | RegExp,\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (isRouter) {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layerPath?.toString(),\n [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER,\n [HTTP_ROUTE]: layerPath?.toString(),\n },\n name: context._matchedRouteName || `router - ${layerPath}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layer.name ?? 'middleware',\n [AttributeNames.KOA_TYPE]: KoaLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nexport const isLayerIgnored = (type: KoaLayerType, config?: KoaInstrumentationConfig): boolean => {\n return !!(Array.isArray(config?.ignoreLayersType) && config?.ignoreLayersType?.includes(type));\n};\n"],"names":["AttributeNames","KoaLayerType","HTTP_ROUTE"],"mappings":";;;;;;AAeO,MAAM,qBAAA,GAAwB,CACnC,OAAA,EACA,KAAA,EACA,UACA,SAAA,KAIG;AACH,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACA,6BAAA,CAAe,QAAQ,GAAG,WAAW,QAAA,EAAS;AAAA,QAC/C,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa,MAAA;AAAA,QACxC,CAACC,qBAAU,GAAG,SAAA,EAAW,QAAA;AAAS,OACpC;AAAA,MACA,IAAA,EAAM,OAAA,CAAQ,iBAAA,IAAqB,CAAA,SAAA,EAAY,SAAS,CAAA;AAAA,KAC1D;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACF,6BAAA,CAAe,QAAQ,GAAG,MAAM,IAAA,IAAQ,YAAA;AAAA,QACzC,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa;AAAA,OAC1C;AAAA,MACA,IAAA,EAAM,CAAA,aAAA,EAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,KAClC;AAAA,EACF;AACF;AAQO,MAAM,cAAA,GAAiB,CAAC,IAAA,EAAoB,MAAA,KAA+C;AAChG,EAAA,OAAO,CAAC,EAAE,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,gBAAgB,CAAA,IAAK,MAAA,EAAQ,gBAAA,EAAkB,QAAA,CAAS,IAAI,CAAA,CAAA;AAC9F;;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/koa/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-koa\n * - Upstream version: @opentelemetry/instrumentation-koa@0.66.0\n */\n\nimport { KoaLayerType, type KoaInstrumentationConfig } from './types';\nimport type { KoaContext, KoaMiddleware } from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport type { Attributes } from '@opentelemetry/api';\nimport { CODE_FUNCTION_NAME, HTTP_ROUTE } from '@sentry/conventions/attributes';\n\nexport const getMiddlewareMetadata = (\n context: KoaContext,\n layer: KoaMiddleware,\n isRouter: boolean,\n layerPath?: string | RegExp,\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (isRouter) {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layerPath?.toString(), // TODO(v11): remove, replaced by http.route\n [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER,\n [HTTP_ROUTE]: layerPath?.toString(),\n },\n name: context._matchedRouteName || `router - ${layerPath}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layer.name ?? 'middleware', // TODO(v11): remove, replaced by code.function.name\n [AttributeNames.KOA_TYPE]: KoaLayerType.MIDDLEWARE,\n [CODE_FUNCTION_NAME]: layer.name ?? 'middleware',\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nexport const isLayerIgnored = (type: KoaLayerType, config?: KoaInstrumentationConfig): boolean => {\n return !!(Array.isArray(config?.ignoreLayersType) && config?.ignoreLayersType?.includes(type));\n};\n"],"names":["AttributeNames","KoaLayerType","HTTP_ROUTE","CODE_FUNCTION_NAME"],"mappings":";;;;;;AAeO,MAAM,qBAAA,GAAwB,CACnC,OAAA,EACA,KAAA,EACA,UACA,SAAA,KAIG;AACH,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACA,6BAAA,CAAe,QAAQ,GAAG,WAAW,QAAA,EAAS;AAAA;AAAA,QAC/C,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa,MAAA;AAAA,QACxC,CAACC,qBAAU,GAAG,SAAA,EAAW,QAAA;AAAS,OACpC;AAAA,MACA,IAAA,EAAM,OAAA,CAAQ,iBAAA,IAAqB,CAAA,SAAA,EAAY,SAAS,CAAA;AAAA,KAC1D;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACF,6BAAA,CAAe,QAAQ,GAAG,MAAM,IAAA,IAAQ,YAAA;AAAA;AAAA,QACzC,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa,UAAA;AAAA,QACxC,CAACE,6BAAkB,GAAG,KAAA,CAAM,IAAA,IAAQ;AAAA,OACtC;AAAA,MACA,IAAA,EAAM,CAAA,aAAA,EAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,KAClC;AAAA,EACF;AACF;AAQO,MAAM,cAAA,GAAiB,CAAC,IAAA,EAAoB,MAAA,KAA+C;AAChG,EAAA,OAAO,CAAC,EAAE,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,gBAAgB,CAAA,IAAK,MAAA,EAAQ,gBAAA,EAAkB,QAAA,CAAS,IAAI,CAAA,CAAA;AAC9F;;;;;"}
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const core = require('@sentry/core');
4
- const internalTypes = require('./internal-types.js');
5
4
  const utils = require('./utils.js');
5
+ const serverUtils = require('@sentry/server-utils');
6
6
 
7
7
  function getV3PatchOperation(operationName) {
8
8
  return (original) => {
@@ -15,7 +15,7 @@ function getV3PatchOperation(operationName) {
15
15
  return original.call(this, server, ns, ops, options, callback);
16
16
  }
17
17
  }
18
- const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, ops[0], operationName));
18
+ const span = serverUtils.startMongoSpan(utils.getV3SpanAttributes(ns, server, ops[0], operationName));
19
19
  const patchedCallback = utils.patchEnd(span, resultHandler);
20
20
  if (typeof options === "function") {
21
21
  return original.call(this, server, ns, ops, patchedCallback);
@@ -36,9 +36,8 @@ function getV3PatchCommand() {
36
36
  return original.call(this, server, ns, cmd, options, callback);
37
37
  }
38
38
  }
39
- const commandType = utils.getCommandType(cmd);
40
- const operationName = commandType === internalTypes.MongodbCommandType.UNKNOWN ? void 0 : commandType;
41
- const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cmd, operationName));
39
+ const operationName = serverUtils.getV3CommandOperation(cmd);
40
+ const span = serverUtils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cmd, operationName));
42
41
  const patchedCallback = utils.patchEnd(span, resultHandler);
43
42
  if (typeof options === "function") {
44
43
  return original.call(this, server, ns, cmd, patchedCallback);
@@ -58,7 +57,7 @@ function getV4PatchCommandCallback() {
58
57
  }
59
58
  let span = void 0;
60
59
  if (!utils.shouldSkipInstrumentation()) {
61
- span = utils.startMongoSpan(utils.getV4SpanAttributes(this, ns, cmd, commandType));
60
+ span = serverUtils.startMongoSpan(utils.getV4SpanAttributes(this, ns, cmd, commandType));
62
61
  }
63
62
  const patchedCallback = utils.patchEnd(span, resultHandler);
64
63
  return original.call(this, ns, cmd, options, patchedCallback);
@@ -76,7 +75,7 @@ function getV4PatchCommandPromise() {
76
75
  }
77
76
  let span = void 0;
78
77
  if (!utils.shouldSkipInstrumentation()) {
79
- span = utils.startMongoSpan(utils.getV4SpanAttributes(this, ns, cmd, commandType));
78
+ span = serverUtils.startMongoSpan(utils.getV4SpanAttributes(this, ns, cmd, commandType));
80
79
  }
81
80
  const patchedCallback = utils.patchEnd(span, resultHandler);
82
81
  const result = original.apply(this, args);
@@ -99,7 +98,7 @@ function getV3PatchFind() {
99
98
  return original.call(this, server, ns, cmd, cursorState, options, callback);
100
99
  }
101
100
  }
102
- const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cmd, "find"));
101
+ const span = serverUtils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cmd, "find"));
103
102
  const patchedCallback = utils.patchEnd(span, resultHandler);
104
103
  if (typeof options === "function") {
105
104
  return original.call(this, server, ns, cmd, cursorState, patchedCallback);
@@ -120,7 +119,7 @@ function getV3PatchCursor() {
120
119
  return original.call(this, server, ns, cursorState, batchSize, options, callback);
121
120
  }
122
121
  }
123
- const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cursorState.cmd, "getMore"));
122
+ const span = serverUtils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cursorState.cmd, "getMore"));
124
123
  const patchedCallback = utils.patchEnd(span, resultHandler);
125
124
  if (typeof options === "function") {
126
125
  return original.call(this, server, ns, cursorState, batchSize, patchedCallback);
@@ -1 +1 @@
1
- {"version":3,"file":"patches.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/patches.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 { getActiveSpan, withActiveSpan } from '@sentry/core';\nimport type {\n CursorState,\n MongodbNamespace,\n MongoInternalCommand,\n MongoInternalTopology,\n V4Connection,\n V4ConnectionPool,\n WireProtocolInternal,\n} from './internal-types';\nimport { MongodbCommandType } from './internal-types';\nimport {\n getCommandType,\n getV3SpanAttributes,\n getV4SpanAttributes,\n patchEnd,\n shouldSkipInstrumentation,\n startMongoSpan,\n} from './utils';\n\n/** Creates spans for v3 common operations (insert/update/remove). */\nexport function getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n return (original: WireProtocolInternal[typeof operationName]) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof ops !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, options);\n } else {\n return original.call(this, server, ns, ops, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, ops[0] as any, operationName));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, patchedCallback);\n } else {\n return original.call(this, server, ns, ops, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v3 command operation. */\nexport function getV3PatchCommand() {\n return (original: WireProtocolInternal['command']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, options);\n } else {\n return original.call(this, server, ns, cmd, options, callback);\n }\n }\n\n const commandType = getCommandType(cmd);\n const operationName = commandType === MongodbCommandType.UNKNOWN ? undefined : commandType;\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cmd, operationName));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v4 (<6.4) callback-style command operation. */\nexport function getV4PatchCommandCallback() {\n return (original: V4Connection['commandCallback']) => {\n return function patchedV4ServerCommand(\n this: any,\n ns: MongodbNamespace,\n cmd: any,\n options: undefined | unknown,\n callback: any,\n ) {\n const resultHandler = callback;\n const commandType = Object.keys(cmd)[0];\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.call(this, ns, cmd, options, callback);\n }\n\n let span = undefined;\n if (!shouldSkipInstrumentation()) {\n span = startMongoSpan(getV4SpanAttributes(this, ns, cmd, commandType));\n }\n const patchedCallback = patchEnd(span, resultHandler);\n\n return original.call(this, ns, cmd, options, patchedCallback);\n };\n };\n}\n\n/** Creates spans for the v4 (>=6.4) promise-style command operation. */\nexport function getV4PatchCommandPromise() {\n return (original: V4Connection['commandPromise']) => {\n return function patchedV4ServerCommand(this: any, ...args: Parameters<V4Connection['commandPromise']>) {\n const [ns, cmd] = args;\n const commandType = Object.keys(cmd)[0];\n const resultHandler = () => undefined;\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.apply(this, args);\n }\n\n let span = undefined;\n if (!shouldSkipInstrumentation()) {\n span = startMongoSpan(getV4SpanAttributes(this, ns, cmd, commandType));\n }\n\n const patchedCallback = patchEnd(span, resultHandler);\n\n const result = original.apply(this, args);\n result.then(\n (res: any) => patchedCallback(null, res),\n (err: any) => patchedCallback(err),\n );\n\n return result;\n };\n };\n}\n\n/** Creates spans for the v3 find operation. */\nexport function getV3PatchFind() {\n return (original: WireProtocolInternal['query']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n cursorState: CursorState,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, options);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cmd, 'find'));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v3 getMore (cursor) operation. */\nexport function getV3PatchCursor() {\n return (original: WireProtocolInternal['getMore']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n batchSize: number,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, options);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore'));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, patchedCallback);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, patchedCallback);\n }\n };\n };\n}\n\n// This patch will become unnecessary once https://jira.mongodb.org/browse/NODE-5639 is done.\nexport function getV4ConnectionPoolCheckOut() {\n return (original: V4ConnectionPool['checkOut']) => {\n return function patchedCheckout(this: unknown, callback: (error: any, connection: any) => void) {\n // The pool runs the callback in a detached context, so re-activate the span that was\n // active when `checkOut` was called — otherwise the pooled operation finds no parent.\n const parentSpan = getActiveSpan();\n return original.call(this, function (this: unknown, ...args: [any, any]) {\n return withActiveSpan(parentSpan ?? null, () => callback.apply(this, args));\n });\n };\n };\n}\n"],"names":["shouldSkipInstrumentation","startMongoSpan","getV3SpanAttributes","patchEnd","getCommandType","MongodbCommandType","getV4SpanAttributes","getActiveSpan","withActiveSpan"],"mappings":"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"}
1
+ {"version":3,"file":"patches.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/patches.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 { getActiveSpan, withActiveSpan } from '@sentry/core';\nimport type {\n CursorState,\n MongodbNamespace,\n MongoInternalCommand,\n MongoInternalTopology,\n V4Connection,\n V4ConnectionPool,\n WireProtocolInternal,\n} from './internal-types';\nimport {\n getV3CommandOperation,\n getV3SpanAttributes,\n getV4SpanAttributes,\n patchEnd,\n shouldSkipInstrumentation,\n startMongoSpan,\n} from './utils';\n\n/** Creates spans for v3 common operations (insert/update/remove). */\nexport function getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n return (original: WireProtocolInternal[typeof operationName]) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof ops !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, options);\n } else {\n return original.call(this, server, ns, ops, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, ops[0] as any, operationName));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, patchedCallback);\n } else {\n return original.call(this, server, ns, ops, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v3 command operation. */\nexport function getV3PatchCommand() {\n return (original: WireProtocolInternal['command']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, options);\n } else {\n return original.call(this, server, ns, cmd, options, callback);\n }\n }\n\n const operationName = getV3CommandOperation(cmd as unknown as Record<string, unknown>);\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cmd, operationName));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v4 (<6.4) callback-style command operation. */\nexport function getV4PatchCommandCallback() {\n return (original: V4Connection['commandCallback']) => {\n return function patchedV4ServerCommand(\n this: any,\n ns: MongodbNamespace,\n cmd: any,\n options: undefined | unknown,\n callback: any,\n ) {\n const resultHandler = callback;\n const commandType = Object.keys(cmd)[0];\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.call(this, ns, cmd, options, callback);\n }\n\n let span = undefined;\n if (!shouldSkipInstrumentation()) {\n span = startMongoSpan(getV4SpanAttributes(this, ns, cmd, commandType));\n }\n const patchedCallback = patchEnd(span, resultHandler);\n\n return original.call(this, ns, cmd, options, patchedCallback);\n };\n };\n}\n\n/** Creates spans for the v4 (>=6.4) promise-style command operation. */\nexport function getV4PatchCommandPromise() {\n return (original: V4Connection['commandPromise']) => {\n return function patchedV4ServerCommand(this: any, ...args: Parameters<V4Connection['commandPromise']>) {\n const [ns, cmd] = args;\n const commandType = Object.keys(cmd)[0];\n const resultHandler = () => undefined;\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.apply(this, args);\n }\n\n let span = undefined;\n if (!shouldSkipInstrumentation()) {\n span = startMongoSpan(getV4SpanAttributes(this, ns, cmd, commandType));\n }\n\n const patchedCallback = patchEnd(span, resultHandler);\n\n const result = original.apply(this, args);\n result.then(\n (res: any) => patchedCallback(null, res),\n (err: any) => patchedCallback(err),\n );\n\n return result;\n };\n };\n}\n\n/** Creates spans for the v3 find operation. */\nexport function getV3PatchFind() {\n return (original: WireProtocolInternal['query']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n cursorState: CursorState,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, options);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cmd, 'find'));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v3 getMore (cursor) operation. */\nexport function getV3PatchCursor() {\n return (original: WireProtocolInternal['getMore']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n batchSize: number,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, options);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore'));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, patchedCallback);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, patchedCallback);\n }\n };\n };\n}\n\n// This patch will become unnecessary once https://jira.mongodb.org/browse/NODE-5639 is done.\nexport function getV4ConnectionPoolCheckOut() {\n return (original: V4ConnectionPool['checkOut']) => {\n return function patchedCheckout(this: unknown, callback: (error: any, connection: any) => void) {\n // The pool runs the callback in a detached context, so re-activate the span that was\n // active when `checkOut` was called — otherwise the pooled operation finds no parent.\n const parentSpan = getActiveSpan();\n return original.call(this, function (this: unknown, ...args: [any, any]) {\n return withActiveSpan(parentSpan ?? null, () => callback.apply(this, args));\n });\n };\n };\n}\n"],"names":["shouldSkipInstrumentation","startMongoSpan","getV3SpanAttributes","patchEnd","getV3CommandOperation","getV4SpanAttributes","getActiveSpan","withActiveSpan"],"mappings":"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"}
@@ -1,127 +1,14 @@
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');
5
- const semconv = require('./semconv.js');
6
- const internalTypes = require('./internal-types.js');
4
+ const serverUtils = require('@sentry/server-utils');
7
5
 
8
6
  const ORIGIN = "auto.db.otel.mongo";
9
- function serializeDbStatement(commandObj) {
10
- return JSON.stringify(scrubStatement(commandObj));
11
- }
12
- function scrubStatement(value) {
13
- if (Array.isArray(value)) {
14
- return value.map((element) => scrubStatement(element));
15
- }
16
- if (isCommandObj(value)) {
17
- const initial = {};
18
- return Object.entries(value).map(([key, element]) => [key, scrubStatement(element)]).reduce((prev, current) => {
19
- if (isCommandEntry(current)) {
20
- prev[current[0]] = current[1];
21
- }
22
- return prev;
23
- }, initial);
24
- }
25
- return "?";
26
- }
27
- function isCommandObj(value) {
28
- return core.isObjectLike(value) && !isBuffer(value);
29
- }
30
- function isBuffer(value) {
31
- return typeof Buffer !== "undefined" && Buffer.isBuffer(value);
32
- }
33
- function isCommandEntry(value) {
34
- return Array.isArray(value);
35
- }
36
- function getCommandType(command) {
37
- if (command.createIndexes !== void 0) {
38
- return internalTypes.MongodbCommandType.CREATE_INDEXES;
39
- } else if (command.findandmodify !== void 0) {
40
- return internalTypes.MongodbCommandType.FIND_AND_MODIFY;
41
- } else if (command.ismaster !== void 0) {
42
- return internalTypes.MongodbCommandType.IS_MASTER;
43
- } else if (command.count !== void 0) {
44
- return internalTypes.MongodbCommandType.COUNT;
45
- } else if (command.aggregate !== void 0) {
46
- return internalTypes.MongodbCommandType.AGGREGATE;
47
- } else {
48
- return internalTypes.MongodbCommandType.UNKNOWN;
49
- }
50
- }
51
7
  function getV4SpanAttributes(connectionCtx, ns, command, operation) {
52
- let host, port;
53
- if (connectionCtx) {
54
- const hostParts = typeof connectionCtx.address === "string" ? connectionCtx.address.split(":") : "";
55
- if (hostParts.length === 2) {
56
- host = hostParts[0];
57
- port = hostParts[1];
58
- }
59
- }
60
- let commandObj;
61
- if (command?.documents && command.documents[0]) {
62
- commandObj = command.documents[0];
63
- } else if (command?.cursors) {
64
- commandObj = command.cursors;
65
- } else {
66
- commandObj = command;
67
- }
68
- return getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation);
8
+ return serverUtils.getV4SpanAttributes(connectionCtx, ns, command, operation, ORIGIN);
69
9
  }
70
10
  function getV3SpanAttributes(ns, topology, command, operation) {
71
- let host;
72
- let port;
73
- if (topology?.s) {
74
- host = topology.s.options?.host ?? topology.s.host;
75
- port = (topology.s.options?.port ?? topology.s.port)?.toString();
76
- if (host == null || port == null) {
77
- const address = topology.description?.address;
78
- if (address) {
79
- const addressSegments = address.split(":");
80
- host = addressSegments[0];
81
- port = addressSegments[1];
82
- }
83
- }
84
- }
85
- const [dbName, dbCollection] = ns.toString().split(".");
86
- const commandObj = command?.query ?? command?.q ?? command;
87
- return getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);
88
- }
89
- function getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation) {
90
- const attributes$1 = {
91
- [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
92
- // eslint-disable-next-line typescript/no-deprecated
93
- [attributes.DB_SYSTEM]: semconv.DB_SYSTEM_VALUE_MONGODB,
94
- // eslint-disable-next-line typescript/no-deprecated
95
- [attributes.DB_NAME]: dbName,
96
- // eslint-disable-next-line typescript/no-deprecated
97
- [semconv.ATTR_DB_MONGODB_COLLECTION]: dbCollection,
98
- // eslint-disable-next-line typescript/no-deprecated
99
- [attributes.DB_OPERATION]: operation,
100
- // eslint-disable-next-line typescript/no-deprecated
101
- [semconv.ATTR_DB_CONNECTION_STRING]: `mongodb://${host}:${port}/${dbName}`
102
- };
103
- if (host && port) {
104
- attributes$1[attributes.NET_PEER_NAME] = host;
105
- const portNumber = parseInt(port, 10);
106
- if (!isNaN(portNumber)) {
107
- attributes$1[attributes.NET_PEER_PORT] = portNumber;
108
- }
109
- }
110
- if (commandObj) {
111
- try {
112
- attributes$1[attributes.DB_STATEMENT] = serializeDbStatement(commandObj);
113
- } catch {
114
- }
115
- }
116
- return attributes$1;
117
- }
118
- function startMongoSpan(attributes$1) {
119
- return core.startInactiveSpan({
120
- // eslint-disable-next-line typescript/no-deprecated
121
- name: `mongodb.${attributes$1[attributes.DB_OPERATION] || "command"}`,
122
- kind: core.SPAN_KIND.CLIENT,
123
- attributes: attributes$1
124
- });
11
+ return serverUtils.getV3SpanAttributes(ns, topology, command, operation, ORIGIN);
125
12
  }
126
13
  function patchEnd(span, resultHandler) {
127
14
  const parentSpan = core.getActiveSpan();
@@ -144,10 +31,10 @@ function shouldSkipInstrumentation() {
144
31
  return !core.getActiveSpan();
145
32
  }
146
33
 
147
- exports.getCommandType = getCommandType;
34
+ exports.getV3CommandOperation = serverUtils.getV3CommandOperation;
35
+ exports.startMongoSpan = serverUtils.startMongoSpan;
148
36
  exports.getV3SpanAttributes = getV3SpanAttributes;
149
37
  exports.getV4SpanAttributes = getV4SpanAttributes;
150
38
  exports.patchEnd = patchEnd;
151
39
  exports.shouldSkipInstrumentation = shouldSkipInstrumentation;
152
- exports.startMongoSpan = startMongoSpan;
153
40
  //# sourceMappingURL=utils.js.map
@@ -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 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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"}
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 * - The db/net attribute extraction, `db.statement` scrubbing and span\n * builder are shared with the orchestrion mongodb integration in\n * `@sentry/server-utils` so the two emit an identical span shape.\n * Only the OTel-specific callback/context helpers below remain here.\n */\n\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport { getActiveSpan, SPAN_STATUS_ERROR, withActiveSpan } from '@sentry/core';\nimport {\n getV3CommandOperation,\n getV3SpanAttributes as sharedGetV3SpanAttributes,\n getV4SpanAttributes as sharedGetV4SpanAttributes,\n startMongoSpan,\n} from '@sentry/server-utils';\n\nconst ORIGIN = 'auto.db.otel.mongo';\n\nexport { getV3CommandOperation, startMongoSpan };\n\n/** Determine a span's attributes from the v4 connection context (OTel origin). */\nexport function getV4SpanAttributes(connectionCtx: any, ns: any, command?: any, operation?: string): SpanAttributes {\n return sharedGetV4SpanAttributes(connectionCtx, ns, command, operation, ORIGIN);\n}\n\n/** Determine a span's attributes from the v3 topology (OTel origin). */\nexport function getV3SpanAttributes(ns: string, topology: any, command?: any, operation?: string): SpanAttributes {\n return sharedGetV3SpanAttributes(ns, topology, command, operation, ORIGIN);\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":["sharedGetV4SpanAttributes","sharedGetV3SpanAttributes","getActiveSpan","SPAN_STATUS_ERROR","withActiveSpan"],"mappings":";;;;;AAuBA,MAAM,MAAA,GAAS,oBAAA;AAKR,SAAS,mBAAA,CAAoB,aAAA,EAAoB,EAAA,EAAS,OAAA,EAAe,SAAA,EAAoC;AAClH,EAAA,OAAOA,+BAAA,CAA0B,aAAA,EAAe,EAAA,EAAI,OAAA,EAAS,WAAW,MAAM,CAAA;AAChF;AAGO,SAAS,mBAAA,CAAoB,EAAA,EAAY,QAAA,EAAe,OAAA,EAAe,SAAA,EAAoC;AAChH,EAAA,OAAOC,+BAAA,CAA0B,EAAA,EAAI,QAAA,EAAU,OAAA,EAAS,WAAW,MAAM,CAAA;AAC3E;AAOO,SAAS,QAAA,CAAS,MAAwB,aAAA,EAAmC;AAClF,EAAA,MAAM,aAAaC,kBAAA,EAAc;AACjC,EAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,EAAA,OAAO,SAAS,cAAwB,IAAA,EAAiB;AACvD,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,SAAA,GAAY,IAAA;AACZ,MAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AACpB,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,UAAA,IAAA,CAAK,UAAU,EAAE,IAAA,EAAMC,wBAAmB,OAAA,EAAS,KAAA,CAAM,SAAS,CAAA;AAAA,QACpE;AACA,QAAA,IAAA,CAAK,GAAA,EAAI;AAAA,MACX;AAAA,IACF;AAEA,IAAA,OAAOC,mBAAA,CAAe,cAAc,IAAA,EAAM,MAAM,cAAc,KAAA,CAAM,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,EACjF,CAAA;AACF;AAIO,SAAS,yBAAA,GAAqC;AACnD,EAAA,OAAO,CAACF,kBAAA,EAAc;AACxB;;;;;;;;;"}
@@ -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');
5
4
  const core = require('@sentry/core');
5
+ const serverUtils = require('@sentry/server-utils');
6
6
  const utils = require('./utils.js');
7
7
 
8
8
  const PACKAGE_NAME = "@sentry/instrumentation-mongoose";
@@ -111,7 +111,13 @@ class MongooseInstrumentation extends instrumentation.InstrumentationBase {
111
111
  return (originalAggregate) => {
112
112
  return function exec(callback) {
113
113
  const parentSpan = this[_STORED_PARENT_SPAN];
114
- const span = self._startSpan(this._model.collection, this._model?.modelName, "aggregate", parentSpan);
114
+ const span = serverUtils.startMongooseLegacySpan({
115
+ collection: this._model.collection,
116
+ modelName: this._model?.modelName,
117
+ operation: "aggregate",
118
+ origin: ORIGIN,
119
+ parentSpan
120
+ });
115
121
  return self._handleResponse(span, originalAggregate, this, arguments, callback);
116
122
  };
117
123
  };
@@ -124,7 +130,13 @@ class MongooseInstrumentation extends instrumentation.InstrumentationBase {
124
130
  return originalExec.apply(this, arguments);
125
131
  }
126
132
  const parentSpan = this[_STORED_PARENT_SPAN];
127
- const span = self._startSpan(this.mongooseCollection, this.model.modelName, this.op, parentSpan);
133
+ const span = serverUtils.startMongooseLegacySpan({
134
+ collection: this.mongooseCollection,
135
+ modelName: this.model.modelName,
136
+ operation: this.op,
137
+ origin: ORIGIN,
138
+ parentSpan
139
+ });
128
140
  return self._handleResponse(span, originalExec, this, arguments, callback);
129
141
  };
130
142
  };
@@ -133,7 +145,12 @@ class MongooseInstrumentation extends instrumentation.InstrumentationBase {
133
145
  const self = this;
134
146
  return (originalOnModelFunction) => {
135
147
  return function method(options, callback) {
136
- const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op);
148
+ const span = serverUtils.startMongooseLegacySpan({
149
+ collection: this.constructor.collection,
150
+ modelName: this.constructor.modelName,
151
+ operation: op,
152
+ origin: ORIGIN
153
+ });
137
154
  if (options instanceof Function) {
138
155
  callback = options;
139
156
  }
@@ -152,7 +169,12 @@ class MongooseInstrumentation extends instrumentation.InstrumentationBase {
152
169
  } else if (typeof options === "function") {
153
170
  actualCallback = options;
154
171
  }
155
- const span = self._startSpan(this.constructor.collection, this.constructor.modelName, op);
172
+ const span = serverUtils.startMongooseLegacySpan({
173
+ collection: this.constructor.collection,
174
+ modelName: this.constructor.modelName,
175
+ operation: op,
176
+ origin: ORIGIN
177
+ });
156
178
  const result = self._handleResponse(span, originalMethod, this, arguments, actualCallback);
157
179
  if (result && typeof result === "object") {
158
180
  result[_ALREADY_INSTRUMENTED] = true;
@@ -168,7 +190,12 @@ class MongooseInstrumentation extends instrumentation.InstrumentationBase {
168
190
  if (typeof options === "function") {
169
191
  callback = options;
170
192
  }
171
- const span = self._startSpan(this.collection, this.modelName, op);
193
+ const span = serverUtils.startMongooseLegacySpan({
194
+ collection: this.collection,
195
+ modelName: this.modelName,
196
+ operation: op,
197
+ origin: ORIGIN
198
+ });
172
199
  return self._handleResponse(span, original, this, arguments, callback);
173
200
  };
174
201
  };
@@ -195,23 +222,6 @@ class MongooseInstrumentation extends instrumentation.InstrumentationBase {
195
222
  };
196
223
  };
197
224
  }
198
- _startSpan(collection, modelName, operation, parentSpan) {
199
- const attributes$1 = {
200
- ...utils.getAttributesFromCollection(collection),
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",
205
- // keep for backwards compatibility
206
- [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN
207
- };
208
- return core.startInactiveSpan({
209
- name: `mongoose.${modelName}.${operation}`,
210
- kind: core.SPAN_KIND.CLIENT,
211
- attributes: attributes$1,
212
- parentSpan
213
- });
214
- }
215
225
  _handleResponse(span, exec, originalThis, args, callback) {
216
226
  return core.withActiveSpan(span, () => {
217
227
  if (callback instanceof Function) {