@sentry/node 10.55.0 → 10.57.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 (185) hide show
  1. package/build/cjs/integrations/node-fetch/vendored/undici.js +2 -3
  2. package/build/cjs/integrations/node-fetch/vendored/undici.js.map +1 -1
  3. package/build/cjs/integrations/tracing/InstrumentationNodeModuleFile.js +15 -0
  4. package/build/cjs/integrations/tracing/InstrumentationNodeModuleFile.js.map +1 -0
  5. package/build/cjs/integrations/tracing/amqplib/vendored/amqplib.js +9 -9
  6. package/build/cjs/integrations/tracing/amqplib/vendored/amqplib.js.map +1 -1
  7. package/build/cjs/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  8. package/build/cjs/integrations/tracing/anthropic-ai/index.js.map +1 -1
  9. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js +3 -5
  10. package/build/cjs/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  11. package/build/cjs/integrations/tracing/express.js +3 -5
  12. package/build/cjs/integrations/tracing/express.js.map +1 -1
  13. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js +10 -11
  14. package/build/cjs/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  15. package/build/cjs/integrations/tracing/fastify/vendored/instrumentation.js +3 -4
  16. package/build/cjs/integrations/tracing/fastify/vendored/instrumentation.js.map +1 -1
  17. package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js +2 -1
  18. package/build/cjs/integrations/tracing/firebase/otel/patches/firestore.js.map +1 -1
  19. package/build/cjs/integrations/tracing/firebase/otel/patches/functions.js +2 -1
  20. package/build/cjs/integrations/tracing/firebase/otel/patches/functions.js.map +1 -1
  21. package/build/cjs/integrations/tracing/google-genai/index.js.map +1 -1
  22. package/build/cjs/integrations/tracing/google-genai/instrumentation.js +2 -1
  23. package/build/cjs/integrations/tracing/google-genai/instrumentation.js.map +1 -1
  24. package/build/cjs/integrations/tracing/graphql/vendored/instrumentation.js +4 -3
  25. package/build/cjs/integrations/tracing/graphql/vendored/instrumentation.js.map +1 -1
  26. package/build/cjs/integrations/tracing/hapi/vendored/instrumentation.js +2 -5
  27. package/build/cjs/integrations/tracing/hapi/vendored/instrumentation.js.map +1 -1
  28. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js +3 -2
  29. package/build/cjs/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  30. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js +3 -4
  31. package/build/cjs/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  32. package/build/cjs/integrations/tracing/langchain/index.js.map +1 -1
  33. package/build/cjs/integrations/tracing/langchain/instrumentation.js +3 -2
  34. package/build/cjs/integrations/tracing/langchain/instrumentation.js.map +1 -1
  35. package/build/cjs/integrations/tracing/langgraph/index.js.map +1 -1
  36. package/build/cjs/integrations/tracing/langgraph/instrumentation.js +7 -5
  37. package/build/cjs/integrations/tracing/langgraph/instrumentation.js.map +1 -1
  38. package/build/cjs/integrations/tracing/lrumemoizer/vendored/instrumentation.js +8 -11
  39. package/build/cjs/integrations/tracing/lrumemoizer/vendored/instrumentation.js.map +1 -1
  40. package/build/cjs/integrations/tracing/mongo/vendored/instrumentation.js +7 -6
  41. package/build/cjs/integrations/tracing/mongo/vendored/instrumentation.js.map +1 -1
  42. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js +3 -2
  43. package/build/cjs/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  44. package/build/cjs/integrations/tracing/openai/index.js.map +1 -1
  45. package/build/cjs/integrations/tracing/postgres/vendored/instrumentation.js +5 -5
  46. package/build/cjs/integrations/tracing/postgres/vendored/instrumentation.js.map +1 -1
  47. package/build/cjs/integrations/tracing/postgresjs.js +3 -2
  48. package/build/cjs/integrations/tracing/postgresjs.js.map +1 -1
  49. package/build/cjs/integrations/tracing/redis/index.js +3 -2
  50. package/build/cjs/integrations/tracing/redis/index.js.map +1 -1
  51. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js +1 -1
  52. package/build/cjs/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  53. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js +4 -3
  54. package/build/cjs/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  55. package/build/cjs/integrations/tracing/utils/sql-common.js.map +1 -1
  56. package/build/cjs/integrations/tracing/vercelai/instrumentation.js +6 -5
  57. package/build/cjs/integrations/tracing/vercelai/instrumentation.js.map +1 -1
  58. package/build/cjs/utils/setHttpServerSpanRouteAttribute.js +21 -0
  59. package/build/cjs/utils/setHttpServerSpanRouteAttribute.js.map +1 -0
  60. package/build/esm/integrations/node-fetch/vendored/undici.js +3 -4
  61. package/build/esm/integrations/node-fetch/vendored/undici.js.map +1 -1
  62. package/build/esm/integrations/tracing/InstrumentationNodeModuleFile.js +13 -0
  63. package/build/esm/integrations/tracing/InstrumentationNodeModuleFile.js.map +1 -0
  64. package/build/esm/integrations/tracing/amqplib/vendored/amqplib.js +7 -7
  65. package/build/esm/integrations/tracing/amqplib/vendored/amqplib.js.map +1 -1
  66. package/build/esm/integrations/tracing/amqplib/vendored/utils.js.map +1 -1
  67. package/build/esm/integrations/tracing/anthropic-ai/index.js.map +1 -1
  68. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js +3 -5
  69. package/build/esm/integrations/tracing/connect/vendored/instrumentation.js.map +1 -1
  70. package/build/esm/integrations/tracing/express.js +3 -5
  71. package/build/esm/integrations/tracing/express.js.map +1 -1
  72. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js +3 -4
  73. package/build/esm/integrations/tracing/fastify/v3/instrumentation.js.map +1 -1
  74. package/build/esm/integrations/tracing/fastify/vendored/instrumentation.js +3 -4
  75. package/build/esm/integrations/tracing/fastify/vendored/instrumentation.js.map +1 -1
  76. package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js +2 -1
  77. package/build/esm/integrations/tracing/firebase/otel/patches/firestore.js.map +1 -1
  78. package/build/esm/integrations/tracing/firebase/otel/patches/functions.js +2 -1
  79. package/build/esm/integrations/tracing/firebase/otel/patches/functions.js.map +1 -1
  80. package/build/esm/integrations/tracing/google-genai/index.js.map +1 -1
  81. package/build/esm/integrations/tracing/google-genai/instrumentation.js +2 -1
  82. package/build/esm/integrations/tracing/google-genai/instrumentation.js.map +1 -1
  83. package/build/esm/integrations/tracing/graphql/vendored/instrumentation.js +2 -1
  84. package/build/esm/integrations/tracing/graphql/vendored/instrumentation.js.map +1 -1
  85. package/build/esm/integrations/tracing/hapi/vendored/instrumentation.js +2 -5
  86. package/build/esm/integrations/tracing/hapi/vendored/instrumentation.js.map +1 -1
  87. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js +2 -1
  88. package/build/esm/integrations/tracing/knex/vendored/instrumentation.js.map +1 -1
  89. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js +3 -4
  90. package/build/esm/integrations/tracing/koa/vendored/instrumentation.js.map +1 -1
  91. package/build/esm/integrations/tracing/langchain/index.js.map +1 -1
  92. package/build/esm/integrations/tracing/langchain/instrumentation.js +2 -1
  93. package/build/esm/integrations/tracing/langchain/instrumentation.js.map +1 -1
  94. package/build/esm/integrations/tracing/langgraph/index.js.map +1 -1
  95. package/build/esm/integrations/tracing/langgraph/instrumentation.js +5 -3
  96. package/build/esm/integrations/tracing/langgraph/instrumentation.js.map +1 -1
  97. package/build/esm/integrations/tracing/lrumemoizer/vendored/instrumentation.js +8 -11
  98. package/build/esm/integrations/tracing/lrumemoizer/vendored/instrumentation.js.map +1 -1
  99. package/build/esm/integrations/tracing/mongo/vendored/instrumentation.js +2 -1
  100. package/build/esm/integrations/tracing/mongo/vendored/instrumentation.js.map +1 -1
  101. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js +2 -1
  102. package/build/esm/integrations/tracing/mysql2/vendored/instrumentation.js.map +1 -1
  103. package/build/esm/integrations/tracing/openai/index.js.map +1 -1
  104. package/build/esm/integrations/tracing/postgres/vendored/instrumentation.js +5 -5
  105. package/build/esm/integrations/tracing/postgres/vendored/instrumentation.js.map +1 -1
  106. package/build/esm/integrations/tracing/postgresjs.js +3 -2
  107. package/build/esm/integrations/tracing/postgresjs.js.map +1 -1
  108. package/build/esm/integrations/tracing/redis/index.js +3 -2
  109. package/build/esm/integrations/tracing/redis/index.js.map +1 -1
  110. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js +1 -1
  111. package/build/esm/integrations/tracing/redis/vendored/ioredis-instrumentation.js.map +1 -1
  112. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js +2 -1
  113. package/build/esm/integrations/tracing/redis/vendored/redis-instrumentation.js.map +1 -1
  114. package/build/esm/integrations/tracing/utils/sql-common.js.map +1 -1
  115. package/build/esm/integrations/tracing/vercelai/instrumentation.js +6 -5
  116. package/build/esm/integrations/tracing/vercelai/instrumentation.js.map +1 -1
  117. package/build/esm/package.json +1 -1
  118. package/build/esm/utils/setHttpServerSpanRouteAttribute.js +19 -0
  119. package/build/esm/utils/setHttpServerSpanRouteAttribute.js.map +1 -0
  120. package/build/types/integrations/node-fetch/vendored/undici.d.ts.map +1 -1
  121. package/build/types/integrations/tracing/InstrumentationNodeModuleFile.d.ts +9 -0
  122. package/build/types/integrations/tracing/InstrumentationNodeModuleFile.d.ts.map +1 -0
  123. package/build/types/integrations/tracing/amqplib/vendored/amqplib.d.ts.map +1 -1
  124. package/build/types/integrations/tracing/amqplib/vendored/utils.d.ts +2 -2
  125. package/build/types/integrations/tracing/amqplib/vendored/utils.d.ts.map +1 -1
  126. package/build/types/integrations/tracing/anthropic-ai/index.d.ts +8 -7
  127. package/build/types/integrations/tracing/anthropic-ai/index.d.ts.map +1 -1
  128. package/build/types/integrations/tracing/connect/vendored/instrumentation.d.ts.map +1 -1
  129. package/build/types/integrations/tracing/express.d.ts.map +1 -1
  130. package/build/types/integrations/tracing/fastify/v3/instrumentation.d.ts.map +1 -1
  131. package/build/types/integrations/tracing/fastify/vendored/instrumentation.d.ts.map +1 -1
  132. package/build/types/integrations/tracing/firebase/otel/patches/firestore.d.ts.map +1 -1
  133. package/build/types/integrations/tracing/firebase/otel/patches/functions.d.ts.map +1 -1
  134. package/build/types/integrations/tracing/google-genai/index.d.ts +8 -7
  135. package/build/types/integrations/tracing/google-genai/index.d.ts.map +1 -1
  136. package/build/types/integrations/tracing/google-genai/instrumentation.d.ts.map +1 -1
  137. package/build/types/integrations/tracing/graphql/vendored/instrumentation.d.ts.map +1 -1
  138. package/build/types/integrations/tracing/hapi/vendored/instrumentation.d.ts.map +1 -1
  139. package/build/types/integrations/tracing/knex/vendored/instrumentation.d.ts.map +1 -1
  140. package/build/types/integrations/tracing/koa/vendored/instrumentation.d.ts.map +1 -1
  141. package/build/types/integrations/tracing/langchain/index.d.ts +9 -8
  142. package/build/types/integrations/tracing/langchain/index.d.ts.map +1 -1
  143. package/build/types/integrations/tracing/langchain/instrumentation.d.ts.map +1 -1
  144. package/build/types/integrations/tracing/langgraph/index.d.ts +8 -7
  145. package/build/types/integrations/tracing/langgraph/index.d.ts.map +1 -1
  146. package/build/types/integrations/tracing/langgraph/instrumentation.d.ts.map +1 -1
  147. package/build/types/integrations/tracing/lrumemoizer/vendored/instrumentation.d.ts +2 -2
  148. package/build/types/integrations/tracing/lrumemoizer/vendored/instrumentation.d.ts.map +1 -1
  149. package/build/types/integrations/tracing/mongo/vendored/instrumentation.d.ts.map +1 -1
  150. package/build/types/integrations/tracing/mysql2/vendored/instrumentation.d.ts.map +1 -1
  151. package/build/types/integrations/tracing/openai/index.d.ts +8 -7
  152. package/build/types/integrations/tracing/openai/index.d.ts.map +1 -1
  153. package/build/types/integrations/tracing/postgres/vendored/instrumentation.d.ts.map +1 -1
  154. package/build/types/integrations/tracing/postgresjs.d.ts.map +1 -1
  155. package/build/types/integrations/tracing/redis/index.d.ts +4 -1
  156. package/build/types/integrations/tracing/redis/index.d.ts.map +1 -1
  157. package/build/types/integrations/tracing/redis/vendored/redis-instrumentation.d.ts.map +1 -1
  158. package/build/types/integrations/tracing/utils/sql-common.d.ts +1 -1
  159. package/build/types/integrations/tracing/utils/sql-common.d.ts.map +1 -1
  160. package/build/types/integrations/tracing/vercelai/instrumentation.d.ts +2 -2
  161. package/build/types/integrations/tracing/vercelai/instrumentation.d.ts.map +1 -1
  162. package/build/types/integrations/tracing/vercelai/types.d.ts +6 -4
  163. package/build/types/integrations/tracing/vercelai/types.d.ts.map +1 -1
  164. package/build/types/utils/setHttpServerSpanRouteAttribute.d.ts +9 -0
  165. package/build/types/utils/setHttpServerSpanRouteAttribute.d.ts.map +1 -0
  166. package/build/types-ts3.8/integrations/tracing/InstrumentationNodeModuleFile.d.ts +9 -0
  167. package/build/types-ts3.8/integrations/tracing/amqplib/vendored/utils.d.ts +2 -2
  168. package/build/types-ts3.8/integrations/tracing/anthropic-ai/index.d.ts +8 -7
  169. package/build/types-ts3.8/integrations/tracing/google-genai/index.d.ts +8 -7
  170. package/build/types-ts3.8/integrations/tracing/langchain/index.d.ts +9 -8
  171. package/build/types-ts3.8/integrations/tracing/langgraph/index.d.ts +8 -7
  172. package/build/types-ts3.8/integrations/tracing/lrumemoizer/vendored/instrumentation.d.ts +2 -2
  173. package/build/types-ts3.8/integrations/tracing/openai/index.d.ts +8 -7
  174. package/build/types-ts3.8/integrations/tracing/redis/index.d.ts +4 -1
  175. package/build/types-ts3.8/integrations/tracing/vercelai/instrumentation.d.ts +2 -2
  176. package/build/types-ts3.8/integrations/tracing/vercelai/types.d.ts +6 -4
  177. package/build/types-ts3.8/utils/setHttpServerSpanRouteAttribute.d.ts +9 -0
  178. package/package.json +5 -4
  179. package/build/cjs/integrations/tracing/redis/redis-dc-subscriber.js +0 -151
  180. package/build/cjs/integrations/tracing/redis/redis-dc-subscriber.js.map +0 -1
  181. package/build/esm/integrations/tracing/redis/redis-dc-subscriber.js +0 -149
  182. package/build/esm/integrations/tracing/redis/redis-dc-subscriber.js.map +0 -1
  183. package/build/types/integrations/tracing/redis/redis-dc-subscriber.d.ts +0 -17
  184. package/build/types/integrations/tracing/redis/redis-dc-subscriber.d.ts.map +0 -1
  185. package/build/types-ts3.8/integrations/tracing/redis/redis-dc-subscriber.d.ts +0 -17
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\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 */\n/* eslint-disable */\n\nimport { context, trace, Span, SpanKind, SpanStatusCode, UpDownCounter, type Attributes } from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n safeExecuteInTheMiddle,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport {\n ATTR_DB_COLLECTION_NAME,\n ATTR_DB_NAMESPACE,\n ATTR_DB_OPERATION_NAME,\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\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_NAME_VALUE_MONGODB,\n DB_SYSTEM_VALUE_MONGODB,\n METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport { MongoDBInstrumentationConfig, CommandResult } from './types';\nimport {\n CursorState,\n ServerSession,\n MongodbCommandType,\n MongoInternalCommand,\n MongodbNamespace,\n MongoInternalTopology,\n WireProtocolInternal,\n V4Connection,\n V4ConnectionPool,\n Replacer,\n} from './internal-types';\nimport { V4Connect, V4Session } from './internal-types';\nimport { SDK_VERSION } from '@sentry/core';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mongodb';\n\nconst DEFAULT_CONFIG: MongoDBInstrumentationConfig = {\n requireParentSpan: true,\n};\n\n/** mongodb instrumentation plugin for OpenTelemetry */\nexport class MongoDBInstrumentation extends InstrumentationBase<MongoDBInstrumentationConfig> {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n declare private _connectionsUsage: UpDownCounter;\n declare private _poolName: string;\n\n constructor(config: MongoDBInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, { ...DEFAULT_CONFIG, ...config });\n this._setSemconvStabilityFromEnv();\n }\n\n // Used for testing.\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n this._dbSemconvStability = semconvStabilityFromStr('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n\n override setConfig(config: MongoDBInstrumentationConfig = {}) {\n super.setConfig({ ...DEFAULT_CONFIG, ...config });\n }\n\n override _updateMetricInstruments() {\n this._connectionsUsage = this.meter.createUpDownCounter(METRIC_DB_CLIENT_CONNECTIONS_USAGE, {\n description: 'The number of connections that are currently in state described by the state attribute.',\n unit: '{connection}',\n });\n }\n\n /**\n * Convenience function for updating the `db.client.connections.usage` metric.\n * The name \"count\" comes from the eventual replacement for this metric per\n * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n */\n private _connCountAdd(n: number, poolName: string, state: string) {\n this._connectionsUsage?.add(n, { 'pool.name': poolName, state });\n }\n\n init() {\n const { v3PatchConnection: v3PatchConnection, v3UnpatchConnection: v3UnpatchConnection } =\n this._getV3ConnectionPatches();\n\n const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches();\n const { v4PatchConnectionCallback, v4PatchConnectionPromise, v4UnpatchConnection } = this._getV4ConnectionPatches();\n const { v4PatchConnectionPool, v4UnpatchConnectionPool } = this._getV4ConnectionPoolPatches();\n const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches();\n\n return [\n new InstrumentationNodeModuleDefinition('mongodb', ['>=3.3.0 <4'], undefined, undefined, [\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/core/wireprotocol/index.js',\n ['>=3.3.0 <4'],\n v3PatchConnection,\n v3UnpatchConnection,\n ),\n ]),\n new InstrumentationNodeModuleDefinition('mongodb', ['>=4.0.0 <8'], undefined, undefined, [\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection.js',\n ['>=4.0.0 <6.4'],\n v4PatchConnectionCallback,\n v4UnpatchConnection,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection.js',\n ['>=6.4.0 <8'],\n v4PatchConnectionPromise,\n v4UnpatchConnection,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection_pool.js',\n ['>=4.0.0 <6.4'],\n v4PatchConnectionPool,\n v4UnpatchConnectionPool,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connect.js',\n ['>=4.0.0 <8'],\n v4PatchConnect,\n v4UnpatchConnect,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/sessions.js',\n ['>=4.0.0 <8'],\n v4PatchSessions,\n v4UnpatchSessions,\n ),\n ]),\n ];\n }\n\n private _getV3ConnectionPatches<T extends WireProtocolInternal>() {\n return {\n v3PatchConnection: (moduleExports: T) => {\n // patch insert operation\n if (isWrapped(moduleExports.insert)) {\n this._unwrap(moduleExports, 'insert');\n }\n this._wrap(moduleExports, 'insert', this._getV3PatchOperation('insert'));\n // patch remove operation\n if (isWrapped(moduleExports.remove)) {\n this._unwrap(moduleExports, 'remove');\n }\n this._wrap(moduleExports, 'remove', this._getV3PatchOperation('remove'));\n // patch update operation\n if (isWrapped(moduleExports.update)) {\n this._unwrap(moduleExports, 'update');\n }\n this._wrap(moduleExports, 'update', this._getV3PatchOperation('update'));\n // patch other command\n if (isWrapped(moduleExports.command)) {\n this._unwrap(moduleExports, 'command');\n }\n this._wrap(moduleExports, 'command', this._getV3PatchCommand());\n // patch query\n if (isWrapped(moduleExports.query)) {\n this._unwrap(moduleExports, 'query');\n }\n this._wrap(moduleExports, 'query', this._getV3PatchFind());\n // patch get more operation on cursor\n if (isWrapped(moduleExports.getMore)) {\n this._unwrap(moduleExports, 'getMore');\n }\n this._wrap(moduleExports, 'getMore', this._getV3PatchCursor());\n return moduleExports;\n },\n v3UnpatchConnection: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports, 'insert');\n this._unwrap(moduleExports, 'remove');\n this._unwrap(moduleExports, 'update');\n this._unwrap(moduleExports, 'command');\n this._unwrap(moduleExports, 'query');\n this._unwrap(moduleExports, 'getMore');\n },\n };\n }\n\n private _getV4SessionsPatches<T extends V4Session>() {\n return {\n v4PatchSessions: (moduleExports: any) => {\n if (isWrapped(moduleExports.acquire)) {\n this._unwrap(moduleExports, 'acquire');\n }\n this._wrap(moduleExports.ServerSessionPool.prototype, 'acquire', this._getV4AcquireCommand());\n\n if (isWrapped(moduleExports.release)) {\n this._unwrap(moduleExports, 'release');\n }\n this._wrap(moduleExports.ServerSessionPool.prototype, 'release', this._getV4ReleaseCommand());\n return moduleExports;\n },\n v4UnpatchSessions: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n if (isWrapped(moduleExports.acquire)) {\n this._unwrap(moduleExports, 'acquire');\n }\n if (isWrapped(moduleExports.release)) {\n this._unwrap(moduleExports, 'release');\n }\n },\n };\n }\n\n private _getV4AcquireCommand() {\n const instrumentation = this;\n return (original: V4Session['acquire']) => {\n return function patchAcquire(this: any) {\n const nSessionsBeforeAcquire = this.sessions.length;\n const session = original.call(this);\n const nSessionsAfterAcquire = this.sessions.length;\n\n if (nSessionsBeforeAcquire === nSessionsAfterAcquire) {\n //no session in the pool. a new session was created and used\n instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n } else if (nSessionsBeforeAcquire - 1 === nSessionsAfterAcquire) {\n //a session was already in the pool. remove it from the pool and use it.\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n }\n return session;\n };\n };\n }\n\n private _getV4ReleaseCommand() {\n const instrumentation = this;\n return (original: V4Session['release']) => {\n return function patchRelease(this: any, session: ServerSession) {\n const cmdPromise = original.call(this, session);\n\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'used');\n instrumentation._connCountAdd(1, instrumentation._poolName, 'idle');\n return cmdPromise;\n };\n };\n }\n\n private _getV4ConnectionPoolPatches<T extends V4ConnectionPool>() {\n return {\n v4PatchConnectionPool: (moduleExports: any) => {\n const poolPrototype = moduleExports.ConnectionPool.prototype;\n\n if (isWrapped(poolPrototype.checkOut)) {\n this._unwrap(poolPrototype, 'checkOut');\n }\n\n this._wrap(poolPrototype, 'checkOut', this._getV4ConnectionPoolCheckOut());\n return moduleExports;\n },\n v4UnpatchConnectionPool: (moduleExports?: any) => {\n if (moduleExports === undefined) return;\n\n this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut');\n },\n };\n }\n\n private _getV4ConnectPatches<T extends V4Connect>() {\n return {\n v4PatchConnect: (moduleExports: any) => {\n if (isWrapped(moduleExports.connect)) {\n this._unwrap(moduleExports, 'connect');\n }\n\n this._wrap(moduleExports, 'connect', this._getV4ConnectCommand());\n return moduleExports;\n },\n v4UnpatchConnect: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n\n this._unwrap(moduleExports, 'connect');\n },\n };\n }\n\n // This patch will become unnecessary once\n // https://jira.mongodb.org/browse/NODE-5639 is done.\n private _getV4ConnectionPoolCheckOut() {\n return (original: V4ConnectionPool['checkOut']) => {\n return function patchedCheckout(this: unknown, callback: any) {\n const patchedCallback = context.bind(context.active(), callback);\n return original.call(this, patchedCallback);\n };\n };\n }\n\n private _getV4ConnectCommand() {\n const instrumentation = this;\n\n return (original: V4Connect['connectCallback'] | V4Connect['connectPromise']) => {\n return function patchedConnect(this: unknown, options: any, callback: any) {\n // from v6.4 `connect` method only accepts an options param and returns a promise\n // with the connection\n if (original.length === 1) {\n const result = (original as V4Connect['connectPromise']).call(this, options);\n if (result && typeof result.then === 'function') {\n result.then(\n () => instrumentation.setPoolName(options),\n // this handler is set to pass the lint rules\n () => undefined,\n );\n }\n return result;\n }\n\n // Earlier versions expects a callback param and return void\n const patchedCallback = function (err: any, conn: any) {\n if (err || !conn) {\n callback(err, conn);\n return;\n }\n instrumentation.setPoolName(options);\n callback(err, conn);\n };\n\n return (original as V4Connect['connectCallback']).call(this, options, patchedCallback);\n };\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private _getV4ConnectionPatches<T extends V4Connection>() {\n return {\n v4PatchConnectionCallback: (moduleExports: any) => {\n // patch insert operation\n if (isWrapped(moduleExports.Connection.prototype.command)) {\n this._unwrap(moduleExports.Connection.prototype, 'command');\n }\n\n this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandCallback());\n return moduleExports;\n },\n v4PatchConnectionPromise: (moduleExports: any) => {\n // patch insert operation\n if (isWrapped(moduleExports.Connection.prototype.command)) {\n this._unwrap(moduleExports.Connection.prototype, 'command');\n }\n\n this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandPromise());\n return moduleExports;\n },\n v4UnpatchConnection: (moduleExports?: any) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports.Connection.prototype, 'command');\n },\n };\n }\n\n /** Creates spans for common operations */\n private _getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n const instrumentation = this;\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 currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler = typeof options === 'function' ? options : callback;\n if (skipInstrumentation || 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 attributes = instrumentation._getV3SpanAttributes(\n ns,\n server,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ops[0] as any,\n operationName,\n );\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._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 command operation */\n private _getV3PatchCommand() {\n const instrumentation = this;\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 currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (skipInstrumentation || 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 = MongoDBInstrumentation._getCommandType(cmd);\n const operationName = commandType === MongodbCommandType.UNKNOWN ? undefined : commandType;\n const attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, operationName);\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._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 command operation */\n private _getV4PatchCommandCallback() {\n const instrumentation = this;\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 currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\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 (!skipInstrumentation) {\n const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType);\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType);\n\n return original.call(this, ns, cmd, options, patchedCallback);\n };\n };\n }\n\n private _getV4PatchCommandPromise() {\n const instrumentation = this;\n return (original: V4Connection['commandPromise']) => {\n return function patchedV4ServerCommand(this: any, ...args: Parameters<V4Connection['commandPromise']>) {\n const [ns, cmd] = args;\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\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 (!skipInstrumentation) {\n const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType);\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n\n const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType);\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 find operation */\n private _getV3PatchFind() {\n const instrumentation = this;\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 currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (skipInstrumentation || 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 attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, 'find');\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._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 find operation */\n private _getV3PatchCursor() {\n const instrumentation = this;\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 currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (skipInstrumentation || 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 attributes = instrumentation._getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore');\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._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 /**\n * Get the mongodb command type from the object.\n * @param command Internal mongodb command object\n */\n private static _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 context\n * @param connectionCtx mongodb internal connection context\n * @param ns mongodb namespace\n * @param command mongodb internal representation of a command\n */\n private _getV4SpanAttributes(\n connectionCtx: any,\n ns: MongodbNamespace,\n command?: any,\n operation?: string,\n ): Attributes {\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 // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\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 this._getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation);\n }\n\n /**\n * Determine a span's attributes by fetching related metadata from the context\n * @param ns mongodb namespace\n * @param topology mongodb internal representation of the network topology\n * @param command mongodb internal representation of a command\n */\n private _getV3SpanAttributes(\n ns: string,\n topology: MongoInternalTopology,\n command?: MongoInternalCommand,\n operation?: string | undefined,\n ): Attributes {\n // Extract host/port info.\n let host: undefined | string;\n let port: undefined | string;\n if (topology && 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 // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n const commandObj = command?.query ?? command?.q ?? command;\n\n return this._getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);\n }\n\n private _getSpanAttributes(\n dbName?: string,\n dbCollection?: string,\n host?: undefined | string,\n port?: undefined | string,\n commandObj?: any,\n operation?: string | undefined,\n ): Attributes {\n const attributes: Attributes = {};\n\n if (this._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MONGODB;\n attributes[ATTR_DB_NAME] = dbName;\n attributes[ATTR_DB_MONGODB_COLLECTION] = dbCollection;\n attributes[ATTR_DB_OPERATION] = operation;\n attributes[ATTR_DB_CONNECTION_STRING] = `mongodb://${host}:${port}/${dbName}`;\n }\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB;\n attributes[ATTR_DB_NAMESPACE] = dbName;\n attributes[ATTR_DB_OPERATION_NAME] = operation;\n attributes[ATTR_DB_COLLECTION_NAME] = dbCollection;\n }\n\n if (host && port) {\n if (this._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_NAME] = host;\n }\n if (this._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_ADDRESS] = host;\n }\n const portNumber = parseInt(port, 10);\n if (!isNaN(portNumber)) {\n if (this._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_PORT] = portNumber;\n }\n if (this._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_PORT] = portNumber;\n }\n }\n }\n\n if (commandObj) {\n const { dbStatementSerializer: configDbStatementSerializer } = this.getConfig();\n const dbStatementSerializer =\n typeof configDbStatementSerializer === 'function'\n ? configDbStatementSerializer\n : this._defaultDbStatementSerializer.bind(this);\n\n safeExecuteInTheMiddle(\n () => {\n const query = dbStatementSerializer(commandObj);\n if (this._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = query;\n }\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = query;\n }\n },\n err => {\n if (err) {\n this._diag.error('Error running dbStatementSerializer hook', err);\n }\n },\n true,\n );\n }\n\n return attributes;\n }\n\n private _spanNameFromAttrs(attributes: Attributes): string {\n let spanName;\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n // https://opentelemetry.io/docs/specs/semconv/database/database-spans/#name\n spanName =\n [attributes[ATTR_DB_OPERATION_NAME], attributes[ATTR_DB_COLLECTION_NAME]].filter(attr => attr).join(' ') ||\n DB_SYSTEM_NAME_VALUE_MONGODB;\n } else {\n spanName = `mongodb.${attributes[ATTR_DB_OPERATION] || 'command'}`;\n }\n return spanName;\n }\n\n private _getDefaultDbStatementReplacer(): Replacer {\n const seen = new WeakSet();\n return (_key, value) => {\n // undefined, boolean, number, bigint, string, symbol, function || null\n if (typeof value !== 'object' || !value) return '?';\n\n // objects (including arrays)\n if (seen.has(value)) return '[Circular]';\n seen.add(value);\n return value;\n };\n }\n\n private _defaultDbStatementSerializer(commandObj: Record<string, unknown>) {\n const { enhancedDatabaseReporting } = this.getConfig();\n\n if (enhancedDatabaseReporting) {\n return JSON.stringify(commandObj);\n }\n\n return JSON.stringify(commandObj, this._getDefaultDbStatementReplacer());\n }\n\n /**\n * Triggers the response hook in case it is defined.\n * @param span The span to add the results to.\n * @param result The command result\n */\n private _handleExecutionResult(span: Span, result: CommandResult) {\n const { responseHook } = this.getConfig();\n if (typeof responseHook === 'function') {\n safeExecuteInTheMiddle(\n () => {\n responseHook(span, { data: result });\n },\n err => {\n if (err) {\n this._diag.error('Error running response hook', err);\n }\n },\n true,\n );\n }\n }\n\n /**\n * Ends a created span.\n * @param span The created span to end.\n * @param resultHandler A callback function.\n * @param connectionId: The connection ID of the Command response.\n */\n private _patchEnd(\n span: Span | undefined,\n resultHandler: Function,\n connectionId?: number,\n commandType?: string,\n ): Function {\n // mongodb is using \"tick\" when calling a callback, this way the context\n // in final callback (resultHandler) is lost\n const activeContext = context.active();\n const instrumentation = this;\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({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n } else {\n const result = args[1] as CommandResult;\n instrumentation._handleExecutionResult(span, result);\n }\n span.end();\n }\n\n if (commandType === 'endSessions') {\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n }\n }\n\n return context.with(activeContext, () => {\n return resultHandler.apply(this, args);\n });\n };\n }\n private setPoolName(options: any) {\n const host = options.hostAddress?.host;\n const port = options.hostAddress?.port;\n const database = options.dbName;\n const poolName = `mongodb://${host}:${port}/${database}`;\n this._poolName = poolName;\n }\n\n private _checkSkipInstrumentation(currentSpan: Span | undefined) {\n const requireParentSpan = this.getConfig().requireParentSpan;\n const hasNoParentSpan = currentSpan === undefined;\n return requireParentSpan === true && hasNoParentSpan;\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","semconvStabilityFromStr","METRIC_DB_CLIENT_CONNECTIONS_USAGE","InstrumentationNodeModuleDefinition","InstrumentationNodeModuleFile","isWrapped","context","trace","SpanKind","MongodbCommandType","SemconvStability","ATTR_DB_SYSTEM","DB_SYSTEM_VALUE_MONGODB","ATTR_DB_NAME","ATTR_DB_MONGODB_COLLECTION","ATTR_DB_OPERATION","ATTR_DB_CONNECTION_STRING","ATTR_DB_SYSTEM_NAME","DB_SYSTEM_NAME_VALUE_MONGODB","ATTR_DB_NAMESPACE","ATTR_DB_OPERATION_NAME","ATTR_DB_COLLECTION_NAME","ATTR_NET_PEER_NAME","ATTR_SERVER_ADDRESS","ATTR_NET_PEER_PORT","ATTR_SERVER_PORT","safeExecuteInTheMiddle","ATTR_DB_STATEMENT","ATTR_DB_QUERY_TEXT","SpanStatusCode"],"mappings":";;;;;;;;;AAqEA,MAAM,YAAA,GAAe,iCAAA;AAErB,MAAM,cAAA,GAA+C;AAAA,EACnD,iBAAA,EAAmB;AACrB,CAAA;AAGO,MAAM,+BAA+BA,mCAAA,CAAkD;AAAA,EAM5F,WAAA,CAAY,MAAA,GAAuC,EAAC,EAAG;AACrD,IAAA,KAAA,CAAM,cAAcC,gBAAA,EAAa,EAAE,GAAG,cAAA,EAAgB,GAAG,QAAQ,CAAA;AACjE,IAAA,IAAA,CAAK,2BAAA,EAA4B;AAAA,EACnC;AAAA;AAAA,EAGQ,2BAAA,GAA8B;AACpC,IAAA,IAAA,CAAK,oBAAA,GAAuBC,uCAAA,CAAwB,MAAA,EAAQ,OAAA,CAAQ,IAAI,6BAA6B,CAAA;AACrG,IAAA,IAAA,CAAK,mBAAA,GAAsBA,uCAAA,CAAwB,UAAA,EAAY,OAAA,CAAQ,IAAI,6BAA6B,CAAA;AAAA,EAC1G;AAAA,EAES,SAAA,CAAU,MAAA,GAAuC,EAAC,EAAG;AAC5D,IAAA,KAAA,CAAM,UAAU,EAAE,GAAG,cAAA,EAAgB,GAAG,QAAQ,CAAA;AAAA,EAClD;AAAA,EAES,wBAAA,GAA2B;AAClC,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAA,CAAK,KAAA,CAAM,mBAAA,CAAoBC,0CAAA,EAAoC;AAAA,MAC1F,WAAA,EAAa,yFAAA;AAAA,MACb,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,aAAA,CAAc,CAAA,EAAW,QAAA,EAAkB,KAAA,EAAe;AAChE,IAAA,IAAA,CAAK,mBAAmB,GAAA,CAAI,CAAA,EAAG,EAAE,WAAA,EAAa,QAAA,EAAU,OAAO,CAAA;AAAA,EACjE;AAAA,EAEA,IAAA,GAAO;AACL,IAAA,MAAM,EAAE,iBAAA,EAAsC,mBAAA,EAAyC,GACrF,KAAK,uBAAA,EAAwB;AAE/B,IAAA,MAAM,EAAE,cAAA,EAAgB,gBAAA,EAAiB,GAAI,KAAK,oBAAA,EAAqB;AACvE,IAAA,MAAM,EAAE,yBAAA,EAA2B,wBAAA,EAA0B,mBAAA,EAAoB,GAAI,KAAK,uBAAA,EAAwB;AAClH,IAAA,MAAM,EAAE,qBAAA,EAAuB,uBAAA,EAAwB,GAAI,KAAK,2BAAA,EAA4B;AAC5F,IAAA,MAAM,EAAE,eAAA,EAAiB,iBAAA,EAAkB,GAAI,KAAK,qBAAA,EAAsB;AAE1E,IAAA,OAAO;AAAA,MACL,IAAIC,mDAAA,CAAoC,SAAA,EAAW,CAAC,YAAY,CAAA,EAAG,QAAW,MAAA,EAAW;AAAA,QACvF,IAAIC,6CAAA;AAAA,UACF,wCAAA;AAAA,UACA,CAAC,YAAY,CAAA;AAAA,UACb,iBAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAAA,MACD,IAAID,mDAAA,CAAoC,SAAA,EAAW,CAAC,YAAY,CAAA,EAAG,QAAW,MAAA,EAAW;AAAA,QACvF,IAAIC,6CAAA;AAAA,UACF,gCAAA;AAAA,UACA,CAAC,cAAc,CAAA;AAAA,UACf,yBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAIA,6CAAA;AAAA,UACF,gCAAA;AAAA,UACA,CAAC,YAAY,CAAA;AAAA,UACb,wBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAIA,6CAAA;AAAA,UACF,qCAAA;AAAA,UACA,CAAC,cAAc,CAAA;AAAA,UACf,qBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAIA,6CAAA;AAAA,UACF,6BAAA;AAAA,UACA,CAAC,YAAY,CAAA;AAAA,UACb,cAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAIA,6CAAA;AAAA,UACF,yBAAA;AAAA,UACA,CAAC,YAAY,CAAA;AAAA,UACb,eAAA;AAAA,UACA;AAAA;AACF,OACD;AAAA,KACH;AAAA,EACF;AAAA,EAEQ,uBAAA,GAA0D;AAChE,IAAA,OAAO;AAAA,MACL,iBAAA,EAAmB,CAAC,aAAA,KAAqB;AAEvC,QAAA,IAAIC,yBAAA,CAAU,aAAA,CAAc,MAAM,CAAA,EAAG;AACnC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,QAAQ,CAAA;AAAA,QACtC;AACA,QAAA,IAAA,CAAK,MAAM,aAAA,EAAe,QAAA,EAAU,IAAA,CAAK,oBAAA,CAAqB,QAAQ,CAAC,CAAA;AAEvE,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,MAAM,CAAA,EAAG;AACnC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,QAAQ,CAAA;AAAA,QACtC;AACA,QAAA,IAAA,CAAK,MAAM,aAAA,EAAe,QAAA,EAAU,IAAA,CAAK,oBAAA,CAAqB,QAAQ,CAAC,CAAA;AAEvE,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,MAAM,CAAA,EAAG;AACnC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,QAAQ,CAAA;AAAA,QACtC;AACA,QAAA,IAAA,CAAK,MAAM,aAAA,EAAe,QAAA,EAAU,IAAA,CAAK,oBAAA,CAAqB,QAAQ,CAAC,CAAA;AAEvE,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,OAAO,CAAA,EAAG;AACpC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,SAAS,CAAA;AAAA,QACvC;AACA,QAAA,IAAA,CAAK,KAAA,CAAM,aAAA,EAAe,SAAA,EAAW,IAAA,CAAK,oBAAoB,CAAA;AAE9D,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,KAAK,CAAA,EAAG;AAClC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,OAAO,CAAA;AAAA,QACrC;AACA,QAAA,IAAA,CAAK,KAAA,CAAM,aAAA,EAAe,OAAA,EAAS,IAAA,CAAK,iBAAiB,CAAA;AAEzD,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,OAAO,CAAA,EAAG;AACpC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,SAAS,CAAA;AAAA,QACvC;AACA,QAAA,IAAA,CAAK,KAAA,CAAM,aAAA,EAAe,SAAA,EAAW,IAAA,CAAK,mBAAmB,CAAA;AAC7D,QAAA,OAAO,aAAA;AAAA,MACT,CAAA;AAAA,MACA,mBAAA,EAAqB,CAAC,aAAA,KAAsB;AAC1C,QAAA,IAAI,kBAAkB,MAAA,EAAW;AACjC,QAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,QAAQ,CAAA;AACpC,QAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,QAAQ,CAAA;AACpC,QAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,QAAQ,CAAA;AACpC,QAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,SAAS,CAAA;AACrC,QAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,OAAO,CAAA;AACnC,QAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,SAAS,CAAA;AAAA,MACvC;AAAA,KACF;AAAA,EACF;AAAA,EAEQ,qBAAA,GAA6C;AACnD,IAAA,OAAO;AAAA,MACL,eAAA,EAAiB,CAAC,aAAA,KAAuB;AACvC,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,OAAO,CAAA,EAAG;AACpC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,SAAS,CAAA;AAAA,QACvC;AACA,QAAA,IAAA,CAAK,MAAM,aAAA,CAAc,iBAAA,CAAkB,WAAW,SAAA,EAAW,IAAA,CAAK,sBAAsB,CAAA;AAE5F,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,OAAO,CAAA,EAAG;AACpC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,SAAS,CAAA;AAAA,QACvC;AACA,QAAA,IAAA,CAAK,MAAM,aAAA,CAAc,iBAAA,CAAkB,WAAW,SAAA,EAAW,IAAA,CAAK,sBAAsB,CAAA;AAC5F,QAAA,OAAO,aAAA;AAAA,MACT,CAAA;AAAA,MACA,iBAAA,EAAmB,CAAC,aAAA,KAAsB;AACxC,QAAA,IAAI,kBAAkB,MAAA,EAAW;AACjC,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,OAAO,CAAA,EAAG;AACpC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,SAAS,CAAA;AAAA,QACvC;AACA,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,OAAO,CAAA,EAAG;AACpC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,SAAS,CAAA;AAAA,QACvC;AAAA,MACF;AAAA,KACF;AAAA,EACF;AAAA,EAEQ,oBAAA,GAAuB;AAC7B,IAAA,MAAM,eAAA,GAAkB,IAAA;AACxB,IAAA,OAAO,CAAC,QAAA,KAAmC;AACzC,MAAA,OAAO,SAAS,YAAA,GAAwB;AACtC,QAAA,MAAM,sBAAA,GAAyB,KAAK,QAAA,CAAS,MAAA;AAC7C,QAAA,MAAM,OAAA,GAAU,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAClC,QAAA,MAAM,qBAAA,GAAwB,KAAK,QAAA,CAAS,MAAA;AAE5C,QAAA,IAAI,2BAA2B,qBAAA,EAAuB;AAEpD,UAAA,eAAA,CAAgB,aAAA,CAAc,CAAA,EAAG,eAAA,CAAgB,SAAA,EAAW,MAAM,CAAA;AAAA,QACpE,CAAA,MAAA,IAAW,sBAAA,GAAyB,CAAA,KAAM,qBAAA,EAAuB;AAE/D,UAAA,eAAA,CAAgB,aAAA,CAAc,EAAA,EAAI,eAAA,CAAgB,SAAA,EAAW,MAAM,CAAA;AACnE,UAAA,eAAA,CAAgB,aAAA,CAAc,CAAA,EAAG,eAAA,CAAgB,SAAA,EAAW,MAAM,CAAA;AAAA,QACpE;AACA,QAAA,OAAO,OAAA;AAAA,MACT,CAAA;AAAA,IACF,CAAA;AAAA,EACF;AAAA,EAEQ,oBAAA,GAAuB;AAC7B,IAAA,MAAM,eAAA,GAAkB,IAAA;AACxB,IAAA,OAAO,CAAC,QAAA,KAAmC;AACzC,MAAA,OAAO,SAAS,aAAwB,OAAA,EAAwB;AAC9D,QAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,OAAO,CAAA;AAE9C,QAAA,eAAA,CAAgB,aAAA,CAAc,EAAA,EAAI,eAAA,CAAgB,SAAA,EAAW,MAAM,CAAA;AACnE,QAAA,eAAA,CAAgB,aAAA,CAAc,CAAA,EAAG,eAAA,CAAgB,SAAA,EAAW,MAAM,CAAA;AAClE,QAAA,OAAO,UAAA;AAAA,MACT,CAAA;AAAA,IACF,CAAA;AAAA,EACF;AAAA,EAEQ,2BAAA,GAA0D;AAChE,IAAA,OAAO;AAAA,MACL,qBAAA,EAAuB,CAAC,aAAA,KAAuB;AAC7C,QAAA,MAAM,aAAA,GAAgB,cAAc,cAAA,CAAe,SAAA;AAEnD,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,QAAQ,CAAA,EAAG;AACrC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,UAAU,CAAA;AAAA,QACxC;AAEA,QAAA,IAAA,CAAK,KAAA,CAAM,aAAA,EAAe,UAAA,EAAY,IAAA,CAAK,8BAA8B,CAAA;AACzE,QAAA,OAAO,aAAA;AAAA,MACT,CAAA;AAAA,MACA,uBAAA,EAAyB,CAAC,aAAA,KAAwB;AAChD,QAAA,IAAI,kBAAkB,MAAA,EAAW;AAEjC,QAAA,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,cAAA,CAAe,SAAA,EAAW,UAAU,CAAA;AAAA,MACjE;AAAA,KACF;AAAA,EACF;AAAA,EAEQ,oBAAA,GAA4C;AAClD,IAAA,OAAO;AAAA,MACL,cAAA,EAAgB,CAAC,aAAA,KAAuB;AACtC,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,OAAO,CAAA,EAAG;AACpC,UAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,SAAS,CAAA;AAAA,QACvC;AAEA,QAAA,IAAA,CAAK,KAAA,CAAM,aAAA,EAAe,SAAA,EAAW,IAAA,CAAK,sBAAsB,CAAA;AAChE,QAAA,OAAO,aAAA;AAAA,MACT,CAAA;AAAA,MACA,gBAAA,EAAkB,CAAC,aAAA,KAAsB;AACvC,QAAA,IAAI,kBAAkB,MAAA,EAAW;AAEjC,QAAA,IAAA,CAAK,OAAA,CAAQ,eAAe,SAAS,CAAA;AAAA,MACvC;AAAA,KACF;AAAA,EACF;AAAA;AAAA;AAAA,EAIQ,4BAAA,GAA+B;AACrC,IAAA,OAAO,CAAC,QAAA,KAA2C;AACjD,MAAA,OAAO,SAAS,gBAA+B,QAAA,EAAe;AAC5D,QAAA,MAAM,kBAAkBC,WAAA,CAAQ,IAAA,CAAKA,WAAA,CAAQ,MAAA,IAAU,QAAQ,CAAA;AAC/D,QAAA,OAAO,QAAA,CAAS,IAAA,CAAK,IAAA,EAAM,eAAe,CAAA;AAAA,MAC5C,CAAA;AAAA,IACF,CAAA;AAAA,EACF;AAAA,EAEQ,oBAAA,GAAuB;AAC7B,IAAA,MAAM,eAAA,GAAkB,IAAA;AAExB,IAAA,OAAO,CAAC,QAAA,KAAyE;AAC/E,MAAA,OAAO,SAAS,cAAA,CAA8B,OAAA,EAAc,QAAA,EAAe;AAGzE,QAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,UAAA,MAAM,MAAA,GAAU,QAAA,CAAyC,IAAA,CAAK,IAAA,EAAM,OAAO,CAAA;AAC3E,UAAA,IAAI,MAAA,IAAU,OAAO,MAAA,CAAO,IAAA,KAAS,UAAA,EAAY;AAC/C,YAAA,MAAA,CAAO,IAAA;AAAA,cACL,MAAM,eAAA,CAAgB,WAAA,CAAY,OAAO,CAAA;AAAA;AAAA,cAEzC,MAAM;AAAA,aACR;AAAA,UACF;AACA,UAAA,OAAO,MAAA;AAAA,QACT;AAGA,QAAA,MAAM,eAAA,GAAkB,SAAU,GAAA,EAAU,IAAA,EAAW;AACrD,UAAA,IAAI,GAAA,IAAO,CAAC,IAAA,EAAM;AAChB,YAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAClB,YAAA;AAAA,UACF;AACA,UAAA,eAAA,CAAgB,YAAY,OAAO,CAAA;AACnC,UAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,QACpB,CAAA;AAEA,QAAA,OAAQ,QAAA,CAA0C,IAAA,CAAK,IAAA,EAAM,OAAA,EAAS,eAAe,CAAA;AAAA,MACvF,CAAA;AAAA,IACF,CAAA;AAAA,EACF;AAAA;AAAA,EAGQ,uBAAA,GAAkD;AACxD,IAAA,OAAO;AAAA,MACL,yBAAA,EAA2B,CAAC,aAAA,KAAuB;AAEjD,QAAA,IAAID,yBAAA,CAAU,aAAA,CAAc,UAAA,CAAW,SAAA,CAAU,OAAO,CAAA,EAAG;AACzD,UAAA,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,UAAA,CAAW,SAAA,EAAW,SAAS,CAAA;AAAA,QAC5D;AAEA,QAAA,IAAA,CAAK,MAAM,aAAA,CAAc,UAAA,CAAW,WAAW,SAAA,EAAW,IAAA,CAAK,4BAA4B,CAAA;AAC3F,QAAA,OAAO,aAAA;AAAA,MACT,CAAA;AAAA,MACA,wBAAA,EAA0B,CAAC,aAAA,KAAuB;AAEhD,QAAA,IAAIA,yBAAA,CAAU,aAAA,CAAc,UAAA,CAAW,SAAA,CAAU,OAAO,CAAA,EAAG;AACzD,UAAA,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,UAAA,CAAW,SAAA,EAAW,SAAS,CAAA;AAAA,QAC5D;AAEA,QAAA,IAAA,CAAK,MAAM,aAAA,CAAc,UAAA,CAAW,WAAW,SAAA,EAAW,IAAA,CAAK,2BAA2B,CAAA;AAC1F,QAAA,OAAO,aAAA;AAAA,MACT,CAAA;AAAA,MACA,mBAAA,EAAqB,CAAC,aAAA,KAAwB;AAC5C,QAAA,IAAI,kBAAkB,MAAA,EAAW;AACjC,QAAA,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,UAAA,CAAW,SAAA,EAAW,SAAS,CAAA;AAAA,MAC5D;AAAA,KACF;AAAA,EACF;AAAA;AAAA,EAGQ,qBAAqB,aAAA,EAA+C;AAC1E,IAAA,MAAM,eAAA,GAAkB,IAAA;AACxB,IAAA,OAAO,CAAC,QAAA,KAAyD;AAC/D,MAAA,OAAO,SAAS,oBAAA,CAEd,MAAA,EACA,EAAA,EACA,GAAA,EACA,SACA,QAAA,EACA;AACA,QAAA,MAAM,WAAA,GAAcE,SAAA,CAAM,OAAA,CAAQD,WAAA,CAAQ,QAAQ,CAAA;AAClD,QAAA,MAAM,mBAAA,GAAsB,eAAA,CAAgB,yBAAA,CAA0B,WAAW,CAAA;AAEjF,QAAA,MAAM,aAAA,GAAgB,OAAO,OAAA,KAAY,UAAA,GAAa,OAAA,GAAU,QAAA;AAChE,QAAA,IAAI,uBAAuB,OAAO,aAAA,KAAkB,UAAA,IAAc,OAAO,QAAQ,QAAA,EAAU;AACzF,UAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AACjC,YAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,MAAA,EAAQ,EAAA,EAAI,KAAK,OAAO,CAAA;AAAA,UACrD,CAAA,MAAO;AACL,YAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,QAAQ,EAAA,EAAI,GAAA,EAAK,SAAS,QAAQ,CAAA;AAAA,UAC/D;AAAA,QACF;AAEA,QAAA,MAAM,aAAa,eAAA,CAAgB,oBAAA;AAAA,UACjC,EAAA;AAAA,UACA,MAAA;AAAA;AAAA,UAEA,IAAI,CAAC,CAAA;AAAA,UACL;AAAA,SACF;AACA,QAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,kBAAA,CAAmB,UAAU,CAAA;AAC9D,QAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,MAAA,CAAO,SAAA,CAAU,QAAA,EAAU;AAAA,UACtD,MAAME,YAAA,CAAS,MAAA;AAAA,UACf;AAAA,SACD,CAAA;AAED,QAAA,MAAM,eAAA,GAAkB,eAAA,CAAgB,SAAA,CAAU,IAAA,EAAM,aAAa,CAAA;AAErE,QAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AACjC,UAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,MAAA,EAAQ,EAAA,EAAI,KAAK,eAAe,CAAA;AAAA,QAC7D,CAAA,MAAO;AACL,UAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,QAAQ,EAAA,EAAI,GAAA,EAAK,SAAS,eAAe,CAAA;AAAA,QACtE;AAAA,MACF,CAAA;AAAA,IACF,CAAA;AAAA,EACF;AAAA;AAAA,EAGQ,kBAAA,GAAqB;AAC3B,IAAA,MAAM,eAAA,GAAkB,IAAA;AACxB,IAAA,OAAO,CAAC,QAAA,KAA8C;AACpD,MAAA,OAAO,SAAS,oBAAA,CAEd,MAAA,EACA,EAAA,EACA,GAAA,EACA,SACA,QAAA,EACA;AACA,QAAA,MAAM,WAAA,GAAcD,SAAA,CAAM,OAAA,CAAQD,WAAA,CAAQ,QAAQ,CAAA;AAClD,QAAA,MAAM,mBAAA,GAAsB,eAAA,CAAgB,yBAAA,CAA0B,WAAW,CAAA;AAEjF,QAAA,MAAM,aAAA,GAAgB,OAAO,OAAA,KAAY,UAAA,GAAa,OAAA,GAAU,QAAA;AAEhE,QAAA,IAAI,uBAAuB,OAAO,aAAA,KAAkB,UAAA,IAAc,OAAO,QAAQ,QAAA,EAAU;AACzF,UAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AACjC,YAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,MAAA,EAAQ,EAAA,EAAI,KAAK,OAAO,CAAA;AAAA,UACrD,CAAA,MAAO;AACL,YAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,QAAQ,EAAA,EAAI,GAAA,EAAK,SAAS,QAAQ,CAAA;AAAA,UAC/D;AAAA,QACF;AAEA,QAAA,MAAM,WAAA,GAAc,sBAAA,CAAuB,eAAA,CAAgB,GAAG,CAAA;AAC9D,QAAA,MAAM,aAAA,GAAgB,WAAA,KAAgBG,gCAAA,CAAmB,OAAA,GAAU,MAAA,GAAY,WAAA;AAC/E,QAAA,MAAM,aAAa,eAAA,CAAgB,oBAAA,CAAqB,EAAA,EAAI,MAAA,EAAQ,KAAK,aAAa,CAAA;AACtF,QAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,kBAAA,CAAmB,UAAU,CAAA;AAC9D,QAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,MAAA,CAAO,SAAA,CAAU,QAAA,EAAU;AAAA,UACtD,MAAMD,YAAA,CAAS,MAAA;AAAA,UACf;AAAA,SACD,CAAA;AAED,QAAA,MAAM,eAAA,GAAkB,eAAA,CAAgB,SAAA,CAAU,IAAA,EAAM,aAAa,CAAA;AAErE,QAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AACjC,UAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,MAAA,EAAQ,EAAA,EAAI,KAAK,eAAe,CAAA;AAAA,QAC7D,CAAA,MAAO;AACL,UAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,QAAQ,EAAA,EAAI,GAAA,EAAK,SAAS,eAAe,CAAA;AAAA,QACtE;AAAA,MACF,CAAA;AAAA,IACF,CAAA;AAAA,EACF;AAAA;AAAA,EAGQ,0BAAA,GAA6B;AACnC,IAAA,MAAM,eAAA,GAAkB,IAAA;AACxB,IAAA,OAAO,CAAC,QAAA,KAA8C;AACpD,MAAA,OAAO,SAAS,sBAAA,CAEd,EAAA,EACA,GAAA,EACA,SACA,QAAA,EACA;AACA,QAAA,MAAM,WAAA,GAAcD,SAAA,CAAM,OAAA,CAAQD,WAAA,CAAQ,QAAQ,CAAA;AAClD,QAAA,MAAM,mBAAA,GAAsB,eAAA,CAAgB,yBAAA,CAA0B,WAAW,CAAA;AACjF,QAAA,MAAM,aAAA,GAAgB,QAAA;AACtB,QAAA,MAAM,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,GAAG,EAAE,CAAC,CAAA;AAEtC,QAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,GAAA,CAAI,QAAA,IAAY,IAAI,KAAA,EAAO;AACxD,UAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,EAAA,EAAI,GAAA,EAAK,SAAS,QAAQ,CAAA;AAAA,QACvD;AAEA,QAAA,IAAI,IAAA,GAAO,MAAA;AACX,QAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,UAAA,MAAM,aAAa,eAAA,CAAgB,oBAAA,CAAqB,IAAA,EAAM,EAAA,EAAI,KAAK,WAAW,CAAA;AAClF,UAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,kBAAA,CAAmB,UAAU,CAAA;AAC9D,UAAA,IAAA,GAAO,eAAA,CAAgB,MAAA,CAAO,SAAA,CAAU,QAAA,EAAU;AAAA,YAChD,MAAME,YAAA,CAAS,MAAA;AAAA,YACf;AAAA,WACD,CAAA;AAAA,QACH;AACA,QAAA,MAAM,kBAAkB,eAAA,CAAgB,SAAA,CAAU,MAAM,aAAA,EAAe,IAAA,CAAK,IAAI,WAAW,CAAA;AAE3F,QAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,EAAA,EAAI,GAAA,EAAK,SAAS,eAAe,CAAA;AAAA,MAC9D,CAAA;AAAA,IACF,CAAA;AAAA,EACF;AAAA,EAEQ,yBAAA,GAA4B;AAClC,IAAA,MAAM,eAAA,GAAkB,IAAA;AACxB,IAAA,OAAO,CAAC,QAAA,KAA6C;AACnD,MAAA,OAAO,SAAS,0BAAqC,IAAA,EAAkD;AACrG,QAAA,MAAM,CAAC,EAAA,EAAI,GAAG,CAAA,GAAI,IAAA;AAClB,QAAA,MAAM,WAAA,GAAcD,SAAA,CAAM,OAAA,CAAQD,WAAA,CAAQ,QAAQ,CAAA;AAClD,QAAA,MAAM,mBAAA,GAAsB,eAAA,CAAgB,yBAAA,CAA0B,WAAW,CAAA;AAEjF,QAAA,MAAM,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,GAAG,EAAE,CAAC,CAAA;AACtC,QAAA,MAAM,gBAAgB,MAAM,MAAA;AAE5B,QAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,GAAA,CAAI,QAAA,IAAY,IAAI,KAAA,EAAO;AACxD,UAAA,OAAO,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA;AAAA,QAClC;AAEA,QAAA,IAAI,IAAA,GAAO,MAAA;AACX,QAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,UAAA,MAAM,aAAa,eAAA,CAAgB,oBAAA,CAAqB,IAAA,EAAM,EAAA,EAAI,KAAK,WAAW,CAAA;AAClF,UAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,kBAAA,CAAmB,UAAU,CAAA;AAC9D,UAAA,IAAA,GAAO,eAAA,CAAgB,MAAA,CAAO,SAAA,CAAU,QAAA,EAAU;AAAA,YAChD,MAAME,YAAA,CAAS,MAAA;AAAA,YACf;AAAA,WACD,CAAA;AAAA,QACH;AAEA,QAAA,MAAM,kBAAkB,eAAA,CAAgB,SAAA,CAAU,MAAM,aAAA,EAAe,IAAA,CAAK,IAAI,WAAW,CAAA;AAE3F,QAAA,MAAM,MAAA,GAAS,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA;AACxC,QAAA,MAAA,CAAO,IAAA;AAAA,UACL,CAAC,GAAA,KAAa,eAAA,CAAgB,IAAA,EAAM,GAAG,CAAA;AAAA,UACvC,CAAC,GAAA,KAAa,eAAA,CAAgB,GAAG;AAAA,SACnC;AAEA,QAAA,OAAO,MAAA;AAAA,MACT,CAAA;AAAA,IACF,CAAA;AAAA,EACF;AAAA;AAAA,EAGQ,eAAA,GAAkB;AACxB,IAAA,MAAM,eAAA,GAAkB,IAAA;AACxB,IAAA,OAAO,CAAC,QAAA,KAA4C;AAClD,MAAA,OAAO,SAAS,oBAAA,CAEd,MAAA,EACA,IACA,GAAA,EACA,WAAA,EACA,SACA,QAAA,EACA;AACA,QAAA,MAAM,WAAA,GAAcD,SAAA,CAAM,OAAA,CAAQD,WAAA,CAAQ,QAAQ,CAAA;AAClD,QAAA,MAAM,mBAAA,GAAsB,eAAA,CAAgB,yBAAA,CAA0B,WAAW,CAAA;AACjF,QAAA,MAAM,aAAA,GAAgB,OAAO,OAAA,KAAY,UAAA,GAAa,OAAA,GAAU,QAAA;AAEhE,QAAA,IAAI,uBAAuB,OAAO,aAAA,KAAkB,UAAA,IAAc,OAAO,QAAQ,QAAA,EAAU;AACzF,UAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AACjC,YAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,QAAQ,EAAA,EAAI,GAAA,EAAK,aAAa,OAAO,CAAA;AAAA,UAClE,CAAA,MAAO;AACL,YAAA,OAAO,QAAA,CAAS,KAAK,IAAA,EAAM,MAAA,EAAQ,IAAI,GAAA,EAAK,WAAA,EAAa,SAAS,QAAQ,CAAA;AAAA,UAC5E;AAAA,QACF;AAEA,QAAA,MAAM,aAAa,eAAA,CAAgB,oBAAA,CAAqB,EAAA,EAAI,MAAA,EAAQ,KAAK,MAAM,CAAA;AAC/E,QAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,kBAAA,CAAmB,UAAU,CAAA;AAC9D,QAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,MAAA,CAAO,SAAA,CAAU,QAAA,EAAU;AAAA,UACtD,MAAME,YAAA,CAAS,MAAA;AAAA,UACf;AAAA,SACD,CAAA;AAED,QAAA,MAAM,eAAA,GAAkB,eAAA,CAAgB,SAAA,CAAU,IAAA,EAAM,aAAa,CAAA;AAErE,QAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AACjC,UAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,QAAQ,EAAA,EAAI,GAAA,EAAK,aAAa,eAAe,CAAA;AAAA,QAC1E,CAAA,MAAO;AACL,UAAA,OAAO,QAAA,CAAS,KAAK,IAAA,EAAM,MAAA,EAAQ,IAAI,GAAA,EAAK,WAAA,EAAa,SAAS,eAAe,CAAA;AAAA,QACnF;AAAA,MACF,CAAA;AAAA,IACF,CAAA;AAAA,EACF;AAAA;AAAA,EAGQ,iBAAA,GAAoB;AAC1B,IAAA,MAAM,eAAA,GAAkB,IAAA;AACxB,IAAA,OAAO,CAAC,QAAA,KAA8C;AACpD,MAAA,OAAO,SAAS,oBAAA,CAEd,MAAA,EACA,IACA,WAAA,EACA,SAAA,EACA,SACA,QAAA,EACA;AACA,QAAA,MAAM,WAAA,GAAcD,SAAA,CAAM,OAAA,CAAQD,WAAA,CAAQ,QAAQ,CAAA;AAClD,QAAA,MAAM,mBAAA,GAAsB,eAAA,CAAgB,yBAAA,CAA0B,WAAW,CAAA;AAEjF,QAAA,MAAM,aAAA,GAAgB,OAAO,OAAA,KAAY,UAAA,GAAa,OAAA,GAAU,QAAA;AAEhE,QAAA,IAAI,mBAAA,IAAuB,OAAO,aAAA,KAAkB,UAAA,EAAY;AAC9D,UAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AACjC,YAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,QAAQ,EAAA,EAAI,WAAA,EAAa,WAAW,OAAO,CAAA;AAAA,UACxE,CAAA,MAAO;AACL,YAAA,OAAO,QAAA,CAAS,KAAK,IAAA,EAAM,MAAA,EAAQ,IAAI,WAAA,EAAa,SAAA,EAAW,SAAS,QAAQ,CAAA;AAAA,UAClF;AAAA,QACF;AAEA,QAAA,MAAM,aAAa,eAAA,CAAgB,oBAAA,CAAqB,IAAI,MAAA,EAAQ,WAAA,CAAY,KAAK,SAAS,CAAA;AAC9F,QAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,kBAAA,CAAmB,UAAU,CAAA;AAC9D,QAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,MAAA,CAAO,SAAA,CAAU,QAAA,EAAU;AAAA,UACtD,MAAME,YAAA,CAAS,MAAA;AAAA,UACf;AAAA,SACD,CAAA;AAED,QAAA,MAAM,eAAA,GAAkB,eAAA,CAAgB,SAAA,CAAU,IAAA,EAAM,aAAa,CAAA;AAErE,QAAA,IAAI,OAAO,YAAY,UAAA,EAAY;AACjC,UAAA,OAAO,SAAS,IAAA,CAAK,IAAA,EAAM,QAAQ,EAAA,EAAI,WAAA,EAAa,WAAW,eAAe,CAAA;AAAA,QAChF,CAAA,MAAO;AACL,UAAA,OAAO,QAAA,CAAS,KAAK,IAAA,EAAM,MAAA,EAAQ,IAAI,WAAA,EAAa,SAAA,EAAW,SAAS,eAAe,CAAA;AAAA,QACzF;AAAA,MACF,CAAA;AAAA,IACF,CAAA;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAe,gBAAgB,OAAA,EAAmD;AAChF,IAAA,IAAI,OAAA,CAAQ,kBAAkB,MAAA,EAAW;AACvC,MAAA,OAAOC,gCAAA,CAAmB,cAAA;AAAA,IAC5B,CAAA,MAAA,IAAW,OAAA,CAAQ,aAAA,KAAkB,MAAA,EAAW;AAC9C,MAAA,OAAOA,gCAAA,CAAmB,eAAA;AAAA,IAC5B,CAAA,MAAA,IAAW,OAAA,CAAQ,QAAA,KAAa,MAAA,EAAW;AACzC,MAAA,OAAOA,gCAAA,CAAmB,SAAA;AAAA,IAC5B,CAAA,MAAA,IAAW,OAAA,CAAQ,KAAA,KAAU,MAAA,EAAW;AACtC,MAAA,OAAOA,gCAAA,CAAmB,KAAA;AAAA,IAC5B,CAAA,MAAA,IAAW,OAAA,CAAQ,SAAA,KAAc,MAAA,EAAW;AAC1C,MAAA,OAAOA,gCAAA,CAAmB,SAAA;AAAA,IAC5B,CAAA,MAAO;AACL,MAAA,OAAOA,gCAAA,CAAmB,OAAA;AAAA,IAC5B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,oBAAA,CACN,aAAA,EACA,EAAA,EACA,OAAA,EACA,SAAA,EACY;AACZ,IAAA,IAAI,IAAA,EAAM,IAAA;AACV,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,MAAM,SAAA,GAAY,OAAO,aAAA,CAAc,OAAA,KAAY,WAAW,aAAA,CAAc,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA,GAAI,EAAA;AACjG,MAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,QAAA,IAAA,GAAO,UAAU,CAAC,CAAA;AAClB,QAAA,IAAA,GAAO,UAAU,CAAC,CAAA;AAAA,MACpB;AAAA,IACF;AAEA,IAAA,IAAI,UAAA;AACJ,IAAA,IAAI,OAAA,EAAS,SAAA,IAAa,OAAA,CAAQ,SAAA,CAAU,CAAC,CAAA,EAAG;AAC9C,MAAA,UAAA,GAAa,OAAA,CAAQ,UAAU,CAAC,CAAA;AAAA,IAClC,CAAA,MAAA,IAAW,SAAS,OAAA,EAAS;AAC3B,MAAA,UAAA,GAAa,OAAA,CAAQ,OAAA;AAAA,IACvB,CAAA,MAAO;AACL,MAAA,UAAA,GAAa,OAAA;AAAA,IACf;AAEA,IAAA,OAAO,IAAA,CAAK,mBAAmB,EAAA,CAAG,EAAA,EAAI,GAAG,UAAA,EAAY,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,SAAS,CAAA;AAAA,EACxF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,oBAAA,CACN,EAAA,EACA,QAAA,EACA,OAAA,EACA,SAAA,EACY;AAEZ,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,IAAA;AACJ,IAAA,IAAI,QAAA,IAAY,SAAS,CAAA,EAAG;AAC1B,MAAA,IAAA,GAAO,QAAA,CAAS,CAAA,CAAE,OAAA,EAAS,IAAA,IAAQ,SAAS,CAAA,CAAE,IAAA;AAC9C,MAAA,IAAA,GAAA,CAAQ,SAAS,CAAA,CAAE,OAAA,EAAS,QAAQ,QAAA,CAAS,CAAA,CAAE,OAAO,QAAA,EAAS;AAC/D,MAAA,IAAI,IAAA,IAAQ,IAAA,IAAQ,IAAA,IAAQ,IAAA,EAAM;AAChC,QAAA,MAAM,OAAA,GAAU,SAAS,WAAA,EAAa,OAAA;AACtC,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,MAAM,eAAA,GAAkB,OAAA,CAAQ,KAAA,CAAM,GAAG,CAAA;AACzC,UAAA,IAAA,GAAO,gBAAgB,CAAC,CAAA;AACxB,UAAA,IAAA,GAAO,gBAAgB,CAAC,CAAA;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAMA,IAAA,MAAM,CAAC,QAAQ,YAAY,CAAA,GAAI,GAAG,QAAA,EAAS,CAAE,MAAM,GAAG,CAAA;AAEtD,IAAA,MAAM,UAAA,GAAa,OAAA,EAAS,KAAA,IAAS,OAAA,EAAS,CAAA,IAAK,OAAA;AAEnD,IAAA,OAAO,KAAK,kBAAA,CAAmB,MAAA,EAAQ,cAAc,IAAA,EAAM,IAAA,EAAM,YAAY,SAAS,CAAA;AAAA,EACxF;AAAA,EAEQ,mBACN,MAAA,EACA,YAAA,EACA,IAAA,EACA,IAAA,EACA,YACA,SAAA,EACY;AACZ,IAAA,MAAM,aAAyB,EAAC;AAEhC,IAAA,IAAI,IAAA,CAAK,mBAAA,GAAsBC,gCAAA,CAAiB,GAAA,EAAK;AACnD,MAAA,UAAA,CAAWC,sBAAc,CAAA,GAAIC,+BAAA;AAC7B,MAAA,UAAA,CAAWC,oBAAY,CAAA,GAAI,MAAA;AAC3B,MAAA,UAAA,CAAWC,kCAA0B,CAAA,GAAI,YAAA;AACzC,MAAA,UAAA,CAAWC,yBAAiB,CAAA,GAAI,SAAA;AAChC,MAAA,UAAA,CAAWC,iCAAyB,CAAA,GAAI,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,EAAI,IAAI,IAAI,MAAM,CAAA,CAAA;AAAA,IAC7E;AACA,IAAA,IAAI,IAAA,CAAK,mBAAA,GAAsBN,gCAAA,CAAiB,MAAA,EAAQ;AACtD,MAAA,UAAA,CAAWO,uCAAmB,CAAA,GAAIC,oCAAA;AAClC,MAAA,UAAA,CAAWC,qCAAiB,CAAA,GAAI,MAAA;AAChC,MAAA,UAAA,CAAWC,0CAAsB,CAAA,GAAI,SAAA;AACrC,MAAA,UAAA,CAAWC,2CAAuB,CAAA,GAAI,YAAA;AAAA,IACxC;AAEA,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,IAAI,IAAA,CAAK,oBAAA,GAAuBX,gCAAA,CAAiB,GAAA,EAAK;AACpD,QAAA,UAAA,CAAWY,0BAAkB,CAAA,GAAI,IAAA;AAAA,MACnC;AACA,MAAA,IAAI,IAAA,CAAK,oBAAA,GAAuBZ,gCAAA,CAAiB,MAAA,EAAQ;AACvD,QAAA,UAAA,CAAWa,uCAAmB,CAAA,GAAI,IAAA;AAAA,MACpC;AACA,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,EAAM,EAAE,CAAA;AACpC,MAAA,IAAI,CAAC,KAAA,CAAM,UAAU,CAAA,EAAG;AACtB,QAAA,IAAI,IAAA,CAAK,oBAAA,GAAuBb,gCAAA,CAAiB,GAAA,EAAK;AACpD,UAAA,UAAA,CAAWc,0BAAkB,CAAA,GAAI,UAAA;AAAA,QACnC;AACA,QAAA,IAAI,IAAA,CAAK,oBAAA,GAAuBd,gCAAA,CAAiB,MAAA,EAAQ;AACvD,UAAA,UAAA,CAAWe,oCAAgB,CAAA,GAAI,UAAA;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,MAAM,EAAE,qBAAA,EAAuB,2BAAA,EAA4B,GAAI,KAAK,SAAA,EAAU;AAC9E,MAAA,MAAM,qBAAA,GACJ,OAAO,2BAAA,KAAgC,UAAA,GACnC,8BACA,IAAA,CAAK,6BAAA,CAA8B,KAAK,IAAI,CAAA;AAElD,MAAAC,sCAAA;AAAA,QACE,MAAM;AACJ,UAAA,MAAM,KAAA,GAAQ,sBAAsB,UAAU,CAAA;AAC9C,UAAA,IAAI,IAAA,CAAK,mBAAA,GAAsBhB,gCAAA,CAAiB,GAAA,EAAK;AACnD,YAAA,UAAA,CAAWiB,yBAAiB,CAAA,GAAI,KAAA;AAAA,UAClC;AACA,UAAA,IAAI,IAAA,CAAK,mBAAA,GAAsBjB,gCAAA,CAAiB,MAAA,EAAQ;AACtD,YAAA,UAAA,CAAWkB,sCAAkB,CAAA,GAAI,KAAA;AAAA,UACnC;AAAA,QACF,CAAA;AAAA,QACA,CAAA,GAAA,KAAO;AACL,UAAA,IAAI,GAAA,EAAK;AACP,YAAA,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,0CAAA,EAA4C,GAAG,CAAA;AAAA,UAClE;AAAA,QACF,CAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAEA,IAAA,OAAO,UAAA;AAAA,EACT;AAAA,EAEQ,mBAAmB,UAAA,EAAgC;AACzD,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI,IAAA,CAAK,mBAAA,GAAsBlB,gCAAA,CAAiB,MAAA,EAAQ;AAEtD,MAAA,QAAA,GACE,CAAC,UAAA,CAAWU,0CAAsB,CAAA,EAAG,WAAWC,2CAAuB,CAAC,CAAA,CAAE,MAAA,CAAO,CAAA,IAAA,KAAQ,IAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,IACvGH,oCAAA;AAAA,IACJ,CAAA,MAAO;AACL,MAAA,QAAA,GAAW,CAAA,QAAA,EAAW,UAAA,CAAWH,yBAAiB,CAAA,IAAK,SAAS,CAAA,CAAA;AAAA,IAClE;AACA,IAAA,OAAO,QAAA;AAAA,EACT;AAAA,EAEQ,8BAAA,GAA2C;AACjD,IAAA,MAAM,IAAA,uBAAW,OAAA,EAAQ;AACzB,IAAA,OAAO,CAAC,MAAM,KAAA,KAAU;AAEtB,MAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,OAAO,OAAO,GAAA;AAGhD,MAAA,IAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,EAAG,OAAO,YAAA;AAC5B,MAAA,IAAA,CAAK,IAAI,KAAK,CAAA;AACd,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,EACF;AAAA,EAEQ,8BAA8B,UAAA,EAAqC;AACzE,IAAA,MAAM,EAAE,yBAAA,EAA0B,GAAI,IAAA,CAAK,SAAA,EAAU;AAErD,IAAA,IAAI,yBAAA,EAA2B;AAC7B,MAAA,OAAO,IAAA,CAAK,UAAU,UAAU,CAAA;AAAA,IAClC;AAEA,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,UAAA,EAAY,IAAA,CAAK,gCAAgC,CAAA;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,sBAAA,CAAuB,MAAY,MAAA,EAAuB;AAChE,IAAA,MAAM,EAAE,YAAA,EAAa,GAAI,IAAA,CAAK,SAAA,EAAU;AACxC,IAAA,IAAI,OAAO,iBAAiB,UAAA,EAAY;AACtC,MAAAW,sCAAA;AAAA,QACE,MAAM;AACJ,UAAA,YAAA,CAAa,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AAAA,QACrC,CAAA;AAAA,QACA,CAAA,GAAA,KAAO;AACL,UAAA,IAAI,GAAA,EAAK;AACP,YAAA,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,6BAAA,EAA+B,GAAG,CAAA;AAAA,UACrD;AAAA,QACF,CAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,SAAA,CACN,IAAA,EACA,aAAA,EACA,YAAA,EACA,WAAA,EACU;AAGV,IAAA,MAAM,aAAA,GAAgBpB,YAAQ,MAAA,EAAO;AACrC,IAAA,MAAM,eAAA,GAAkB,IAAA;AACxB,IAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,IAAA,OAAO,SAAS,cAAwB,IAAA,EAAiB;AACvD,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,SAAA,GAAY,IAAA;AACZ,QAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AACpB,QAAA,IAAI,IAAA,EAAM;AACR,UAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,YAAA,IAAA,CAAK,SAAA,CAAU;AAAA,cACb,MAAMuB,kBAAA,CAAe,KAAA;AAAA,cACrB,SAAS,KAAA,CAAM;AAAA,aAChB,CAAA;AAAA,UACH,CAAA,MAAO;AACL,YAAA,MAAM,MAAA,GAAS,KAAK,CAAC,CAAA;AACrB,YAAA,eAAA,CAAgB,sBAAA,CAAuB,MAAM,MAAM,CAAA;AAAA,UACrD;AACA,UAAA,IAAA,CAAK,GAAA,EAAI;AAAA,QACX;AAEA,QAAA,IAAI,gBAAgB,aAAA,EAAe;AACjC,UAAA,eAAA,CAAgB,aAAA,CAAc,EAAA,EAAI,eAAA,CAAgB,SAAA,EAAW,MAAM,CAAA;AAAA,QACrE;AAAA,MACF;AAEA,MAAA,OAAOvB,WAAA,CAAQ,IAAA,CAAK,aAAA,EAAe,MAAM;AACvC,QAAA,OAAO,aAAA,CAAc,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA;AAAA,MACvC,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,EACF;AAAA,EACQ,YAAY,OAAA,EAAc;AAChC,IAAA,MAAM,IAAA,GAAO,QAAQ,WAAA,EAAa,IAAA;AAClC,IAAA,MAAM,IAAA,GAAO,QAAQ,WAAA,EAAa,IAAA;AAClC,IAAA,MAAM,WAAW,OAAA,CAAQ,MAAA;AACzB,IAAA,MAAM,WAAW,CAAA,UAAA,EAAa,IAAI,CAAA,CAAA,EAAI,IAAI,IAAI,QAAQ,CAAA,CAAA;AACtD,IAAA,IAAA,CAAK,SAAA,GAAY,QAAA;AAAA,EACnB;AAAA,EAEQ,0BAA0B,WAAA,EAA+B;AAC/D,IAAA,MAAM,iBAAA,GAAoB,IAAA,CAAK,SAAA,EAAU,CAAE,iBAAA;AAC3C,IAAA,MAAM,kBAAkB,WAAA,KAAgB,MAAA;AACxC,IAAA,OAAO,sBAAsB,IAAA,IAAQ,eAAA;AAAA,EACvC;AACF;;;;"}
1
+ {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\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 */\n/* eslint-disable */\n\nimport { context, trace, Span, SpanKind, SpanStatusCode, UpDownCounter, type Attributes } from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n safeExecuteInTheMiddle,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile';\nimport {\n ATTR_DB_COLLECTION_NAME,\n ATTR_DB_NAMESPACE,\n ATTR_DB_OPERATION_NAME,\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n ATTR_SERVER_ADDRESS,\n ATTR_SERVER_PORT,\n} from '@opentelemetry/semantic-conventions';\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_NAME_VALUE_MONGODB,\n DB_SYSTEM_VALUE_MONGODB,\n METRIC_DB_CLIENT_CONNECTIONS_USAGE,\n} from './semconv';\nimport { MongoDBInstrumentationConfig, CommandResult } from './types';\nimport {\n CursorState,\n ServerSession,\n MongodbCommandType,\n MongoInternalCommand,\n MongodbNamespace,\n MongoInternalTopology,\n WireProtocolInternal,\n V4Connection,\n V4ConnectionPool,\n Replacer,\n} from './internal-types';\nimport { V4Connect, V4Session } from './internal-types';\nimport { SDK_VERSION } from '@sentry/core';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mongodb';\n\nconst DEFAULT_CONFIG: MongoDBInstrumentationConfig = {\n requireParentSpan: true,\n};\n\n/** mongodb instrumentation plugin for OpenTelemetry */\nexport class MongoDBInstrumentation extends InstrumentationBase<MongoDBInstrumentationConfig> {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n declare private _connectionsUsage: UpDownCounter;\n declare private _poolName: string;\n\n constructor(config: MongoDBInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, { ...DEFAULT_CONFIG, ...config });\n this._setSemconvStabilityFromEnv();\n }\n\n // Used for testing.\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n this._dbSemconvStability = semconvStabilityFromStr('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n\n override setConfig(config: MongoDBInstrumentationConfig = {}) {\n super.setConfig({ ...DEFAULT_CONFIG, ...config });\n }\n\n override _updateMetricInstruments() {\n this._connectionsUsage = this.meter.createUpDownCounter(METRIC_DB_CLIENT_CONNECTIONS_USAGE, {\n description: 'The number of connections that are currently in state described by the state attribute.',\n unit: '{connection}',\n });\n }\n\n /**\n * Convenience function for updating the `db.client.connections.usage` metric.\n * The name \"count\" comes from the eventual replacement for this metric per\n * https://opentelemetry.io/docs/specs/semconv/non-normative/db-migration/#database-client-connection-count\n */\n private _connCountAdd(n: number, poolName: string, state: string) {\n this._connectionsUsage?.add(n, { 'pool.name': poolName, state });\n }\n\n init() {\n const { v3PatchConnection: v3PatchConnection, v3UnpatchConnection: v3UnpatchConnection } =\n this._getV3ConnectionPatches();\n\n const { v4PatchConnect, v4UnpatchConnect } = this._getV4ConnectPatches();\n const { v4PatchConnectionCallback, v4PatchConnectionPromise, v4UnpatchConnection } = this._getV4ConnectionPatches();\n const { v4PatchConnectionPool, v4UnpatchConnectionPool } = this._getV4ConnectionPoolPatches();\n const { v4PatchSessions, v4UnpatchSessions } = this._getV4SessionsPatches();\n\n return [\n new InstrumentationNodeModuleDefinition('mongodb', ['>=3.3.0 <4'], undefined, undefined, [\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/core/wireprotocol/index.js',\n ['>=3.3.0 <4'],\n v3PatchConnection,\n v3UnpatchConnection,\n ),\n ]),\n new InstrumentationNodeModuleDefinition('mongodb', ['>=4.0.0 <8'], undefined, undefined, [\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection.js',\n ['>=4.0.0 <6.4'],\n v4PatchConnectionCallback,\n v4UnpatchConnection,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection.js',\n ['>=6.4.0 <8'],\n v4PatchConnectionPromise,\n v4UnpatchConnection,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connection_pool.js',\n ['>=4.0.0 <6.4'],\n v4PatchConnectionPool,\n v4UnpatchConnectionPool,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/cmap/connect.js',\n ['>=4.0.0 <8'],\n v4PatchConnect,\n v4UnpatchConnect,\n ),\n new InstrumentationNodeModuleFile(\n 'mongodb/lib/sessions.js',\n ['>=4.0.0 <8'],\n v4PatchSessions,\n v4UnpatchSessions,\n ),\n ]),\n ];\n }\n\n private _getV3ConnectionPatches<T extends WireProtocolInternal>() {\n return {\n v3PatchConnection: (moduleExports: T) => {\n // patch insert operation\n if (isWrapped(moduleExports.insert)) {\n this._unwrap(moduleExports, 'insert');\n }\n this._wrap(moduleExports, 'insert', this._getV3PatchOperation('insert'));\n // patch remove operation\n if (isWrapped(moduleExports.remove)) {\n this._unwrap(moduleExports, 'remove');\n }\n this._wrap(moduleExports, 'remove', this._getV3PatchOperation('remove'));\n // patch update operation\n if (isWrapped(moduleExports.update)) {\n this._unwrap(moduleExports, 'update');\n }\n this._wrap(moduleExports, 'update', this._getV3PatchOperation('update'));\n // patch other command\n if (isWrapped(moduleExports.command)) {\n this._unwrap(moduleExports, 'command');\n }\n this._wrap(moduleExports, 'command', this._getV3PatchCommand());\n // patch query\n if (isWrapped(moduleExports.query)) {\n this._unwrap(moduleExports, 'query');\n }\n this._wrap(moduleExports, 'query', this._getV3PatchFind());\n // patch get more operation on cursor\n if (isWrapped(moduleExports.getMore)) {\n this._unwrap(moduleExports, 'getMore');\n }\n this._wrap(moduleExports, 'getMore', this._getV3PatchCursor());\n return moduleExports;\n },\n v3UnpatchConnection: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports, 'insert');\n this._unwrap(moduleExports, 'remove');\n this._unwrap(moduleExports, 'update');\n this._unwrap(moduleExports, 'command');\n this._unwrap(moduleExports, 'query');\n this._unwrap(moduleExports, 'getMore');\n },\n };\n }\n\n private _getV4SessionsPatches<T extends V4Session>() {\n return {\n v4PatchSessions: (moduleExports: any) => {\n if (isWrapped(moduleExports.acquire)) {\n this._unwrap(moduleExports, 'acquire');\n }\n this._wrap(moduleExports.ServerSessionPool.prototype, 'acquire', this._getV4AcquireCommand());\n\n if (isWrapped(moduleExports.release)) {\n this._unwrap(moduleExports, 'release');\n }\n this._wrap(moduleExports.ServerSessionPool.prototype, 'release', this._getV4ReleaseCommand());\n return moduleExports;\n },\n v4UnpatchSessions: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n if (isWrapped(moduleExports.acquire)) {\n this._unwrap(moduleExports, 'acquire');\n }\n if (isWrapped(moduleExports.release)) {\n this._unwrap(moduleExports, 'release');\n }\n },\n };\n }\n\n private _getV4AcquireCommand() {\n const instrumentation = this;\n return (original: V4Session['acquire']) => {\n return function patchAcquire(this: any) {\n const nSessionsBeforeAcquire = this.sessions.length;\n const session = original.call(this);\n const nSessionsAfterAcquire = this.sessions.length;\n\n if (nSessionsBeforeAcquire === nSessionsAfterAcquire) {\n //no session in the pool. a new session was created and used\n instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n } else if (nSessionsBeforeAcquire - 1 === nSessionsAfterAcquire) {\n //a session was already in the pool. remove it from the pool and use it.\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n instrumentation._connCountAdd(1, instrumentation._poolName, 'used');\n }\n return session;\n };\n };\n }\n\n private _getV4ReleaseCommand() {\n const instrumentation = this;\n return (original: V4Session['release']) => {\n return function patchRelease(this: any, session: ServerSession) {\n const cmdPromise = original.call(this, session);\n\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'used');\n instrumentation._connCountAdd(1, instrumentation._poolName, 'idle');\n return cmdPromise;\n };\n };\n }\n\n private _getV4ConnectionPoolPatches<T extends V4ConnectionPool>() {\n return {\n v4PatchConnectionPool: (moduleExports: any) => {\n const poolPrototype = moduleExports.ConnectionPool.prototype;\n\n if (isWrapped(poolPrototype.checkOut)) {\n this._unwrap(poolPrototype, 'checkOut');\n }\n\n this._wrap(poolPrototype, 'checkOut', this._getV4ConnectionPoolCheckOut());\n return moduleExports;\n },\n v4UnpatchConnectionPool: (moduleExports?: any) => {\n if (moduleExports === undefined) return;\n\n this._unwrap(moduleExports.ConnectionPool.prototype, 'checkOut');\n },\n };\n }\n\n private _getV4ConnectPatches<T extends V4Connect>() {\n return {\n v4PatchConnect: (moduleExports: any) => {\n if (isWrapped(moduleExports.connect)) {\n this._unwrap(moduleExports, 'connect');\n }\n\n this._wrap(moduleExports, 'connect', this._getV4ConnectCommand());\n return moduleExports;\n },\n v4UnpatchConnect: (moduleExports?: T) => {\n if (moduleExports === undefined) return;\n\n this._unwrap(moduleExports, 'connect');\n },\n };\n }\n\n // This patch will become unnecessary once\n // https://jira.mongodb.org/browse/NODE-5639 is done.\n private _getV4ConnectionPoolCheckOut() {\n return (original: V4ConnectionPool['checkOut']) => {\n return function patchedCheckout(this: unknown, callback: any) {\n const patchedCallback = context.bind(context.active(), callback);\n return original.call(this, patchedCallback);\n };\n };\n }\n\n private _getV4ConnectCommand() {\n const instrumentation = this;\n\n return (original: V4Connect['connectCallback'] | V4Connect['connectPromise']) => {\n return function patchedConnect(this: unknown, options: any, callback: any) {\n // from v6.4 `connect` method only accepts an options param and returns a promise\n // with the connection\n if (original.length === 1) {\n const result = (original as V4Connect['connectPromise']).call(this, options);\n if (result && typeof result.then === 'function') {\n result.then(\n () => instrumentation.setPoolName(options),\n // this handler is set to pass the lint rules\n () => undefined,\n );\n }\n return result;\n }\n\n // Earlier versions expects a callback param and return void\n const patchedCallback = function (err: any, conn: any) {\n if (err || !conn) {\n callback(err, conn);\n return;\n }\n instrumentation.setPoolName(options);\n callback(err, conn);\n };\n\n return (original as V4Connect['connectCallback']).call(this, options, patchedCallback);\n };\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private _getV4ConnectionPatches<T extends V4Connection>() {\n return {\n v4PatchConnectionCallback: (moduleExports: any) => {\n // patch insert operation\n if (isWrapped(moduleExports.Connection.prototype.command)) {\n this._unwrap(moduleExports.Connection.prototype, 'command');\n }\n\n this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandCallback());\n return moduleExports;\n },\n v4PatchConnectionPromise: (moduleExports: any) => {\n // patch insert operation\n if (isWrapped(moduleExports.Connection.prototype.command)) {\n this._unwrap(moduleExports.Connection.prototype, 'command');\n }\n\n this._wrap(moduleExports.Connection.prototype, 'command', this._getV4PatchCommandPromise());\n return moduleExports;\n },\n v4UnpatchConnection: (moduleExports?: any) => {\n if (moduleExports === undefined) return;\n this._unwrap(moduleExports.Connection.prototype, 'command');\n },\n };\n }\n\n /** Creates spans for common operations */\n private _getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n const instrumentation = this;\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 currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler = typeof options === 'function' ? options : callback;\n if (skipInstrumentation || 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 attributes = instrumentation._getV3SpanAttributes(\n ns,\n server,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ops[0] as any,\n operationName,\n );\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._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 command operation */\n private _getV3PatchCommand() {\n const instrumentation = this;\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 currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (skipInstrumentation || 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 = MongoDBInstrumentation._getCommandType(cmd);\n const operationName = commandType === MongodbCommandType.UNKNOWN ? undefined : commandType;\n const attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, operationName);\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._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 command operation */\n private _getV4PatchCommandCallback() {\n const instrumentation = this;\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 currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\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 (!skipInstrumentation) {\n const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType);\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType);\n\n return original.call(this, ns, cmd, options, patchedCallback);\n };\n };\n }\n\n private _getV4PatchCommandPromise() {\n const instrumentation = this;\n return (original: V4Connection['commandPromise']) => {\n return function patchedV4ServerCommand(this: any, ...args: Parameters<V4Connection['commandPromise']>) {\n const [ns, cmd] = args;\n const currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\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 (!skipInstrumentation) {\n const attributes = instrumentation._getV4SpanAttributes(this, ns, cmd, commandType);\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n\n const patchedCallback = instrumentation._patchEnd(span, resultHandler, this.id, commandType);\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 find operation */\n private _getV3PatchFind() {\n const instrumentation = this;\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 currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (skipInstrumentation || 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 attributes = instrumentation._getV3SpanAttributes(ns, server, cmd, 'find');\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._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 find operation */\n private _getV3PatchCursor() {\n const instrumentation = this;\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 currentSpan = trace.getSpan(context.active());\n const skipInstrumentation = instrumentation._checkSkipInstrumentation(currentSpan);\n\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (skipInstrumentation || 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 attributes = instrumentation._getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore');\n const spanName = instrumentation._spanNameFromAttrs(attributes);\n const span = instrumentation.tracer.startSpan(spanName, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n\n const patchedCallback = instrumentation._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 /**\n * Get the mongodb command type from the object.\n * @param command Internal mongodb command object\n */\n private static _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 context\n * @param connectionCtx mongodb internal connection context\n * @param ns mongodb namespace\n * @param command mongodb internal representation of a command\n */\n private _getV4SpanAttributes(\n connectionCtx: any,\n ns: MongodbNamespace,\n command?: any,\n operation?: string,\n ): Attributes {\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 // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\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 this._getSpanAttributes(ns.db, ns.collection, host, port, commandObj, operation);\n }\n\n /**\n * Determine a span's attributes by fetching related metadata from the context\n * @param ns mongodb namespace\n * @param topology mongodb internal representation of the network topology\n * @param command mongodb internal representation of a command\n */\n private _getV3SpanAttributes(\n ns: string,\n topology: MongoInternalTopology,\n command?: MongoInternalCommand,\n operation?: string | undefined,\n ): Attributes {\n // Extract host/port info.\n let host: undefined | string;\n let port: undefined | string;\n if (topology && 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 // capture parameters within the query as well if enhancedDatabaseReporting is enabled.\n const commandObj = command?.query ?? command?.q ?? command;\n\n return this._getSpanAttributes(dbName, dbCollection, host, port, commandObj, operation);\n }\n\n private _getSpanAttributes(\n dbName?: string,\n dbCollection?: string,\n host?: undefined | string,\n port?: undefined | string,\n commandObj?: any,\n operation?: string | undefined,\n ): Attributes {\n const attributes: Attributes = {};\n\n if (this._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MONGODB;\n attributes[ATTR_DB_NAME] = dbName;\n attributes[ATTR_DB_MONGODB_COLLECTION] = dbCollection;\n attributes[ATTR_DB_OPERATION] = operation;\n attributes[ATTR_DB_CONNECTION_STRING] = `mongodb://${host}:${port}/${dbName}`;\n }\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MONGODB;\n attributes[ATTR_DB_NAMESPACE] = dbName;\n attributes[ATTR_DB_OPERATION_NAME] = operation;\n attributes[ATTR_DB_COLLECTION_NAME] = dbCollection;\n }\n\n if (host && port) {\n if (this._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_NAME] = host;\n }\n if (this._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_ADDRESS] = host;\n }\n const portNumber = parseInt(port, 10);\n if (!isNaN(portNumber)) {\n if (this._netSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_NET_PEER_PORT] = portNumber;\n }\n if (this._netSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_SERVER_PORT] = portNumber;\n }\n }\n }\n\n if (commandObj) {\n const { dbStatementSerializer: configDbStatementSerializer } = this.getConfig();\n const dbStatementSerializer =\n typeof configDbStatementSerializer === 'function'\n ? configDbStatementSerializer\n : this._defaultDbStatementSerializer.bind(this);\n\n safeExecuteInTheMiddle(\n () => {\n const query = dbStatementSerializer(commandObj);\n if (this._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_STATEMENT] = query;\n }\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_QUERY_TEXT] = query;\n }\n },\n err => {\n if (err) {\n this._diag.error('Error running dbStatementSerializer hook', err);\n }\n },\n true,\n );\n }\n\n return attributes;\n }\n\n private _spanNameFromAttrs(attributes: Attributes): string {\n let spanName;\n if (this._dbSemconvStability & SemconvStability.STABLE) {\n // https://opentelemetry.io/docs/specs/semconv/database/database-spans/#name\n spanName =\n [attributes[ATTR_DB_OPERATION_NAME], attributes[ATTR_DB_COLLECTION_NAME]].filter(attr => attr).join(' ') ||\n DB_SYSTEM_NAME_VALUE_MONGODB;\n } else {\n spanName = `mongodb.${attributes[ATTR_DB_OPERATION] || 'command'}`;\n }\n return spanName;\n }\n\n private _getDefaultDbStatementReplacer(): Replacer {\n const seen = new WeakSet();\n return (_key, value) => {\n // undefined, boolean, number, bigint, string, symbol, function || null\n if (typeof value !== 'object' || !value) return '?';\n\n // objects (including arrays)\n if (seen.has(value)) return '[Circular]';\n seen.add(value);\n return value;\n };\n }\n\n private _defaultDbStatementSerializer(commandObj: Record<string, unknown>) {\n const { enhancedDatabaseReporting } = this.getConfig();\n\n if (enhancedDatabaseReporting) {\n return JSON.stringify(commandObj);\n }\n\n return JSON.stringify(commandObj, this._getDefaultDbStatementReplacer());\n }\n\n /**\n * Triggers the response hook in case it is defined.\n * @param span The span to add the results to.\n * @param result The command result\n */\n private _handleExecutionResult(span: Span, result: CommandResult) {\n const { responseHook } = this.getConfig();\n if (typeof responseHook === 'function') {\n safeExecuteInTheMiddle(\n () => {\n responseHook(span, { data: result });\n },\n err => {\n if (err) {\n this._diag.error('Error running response hook', err);\n }\n },\n true,\n );\n }\n }\n\n /**\n * Ends a created span.\n * @param span The created span to end.\n * @param resultHandler A callback function.\n * @param connectionId: The connection ID of the Command response.\n */\n private _patchEnd(\n span: Span | undefined,\n resultHandler: Function,\n connectionId?: number,\n commandType?: string,\n ): Function {\n // mongodb is using \"tick\" when calling a callback, this way the context\n // in final callback (resultHandler) is lost\n const activeContext = context.active();\n const instrumentation = this;\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({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n } else {\n const result = args[1] as CommandResult;\n instrumentation._handleExecutionResult(span, result);\n }\n span.end();\n }\n\n if (commandType === 'endSessions') {\n instrumentation._connCountAdd(-1, instrumentation._poolName, 'idle');\n }\n }\n\n return context.with(activeContext, () => {\n return resultHandler.apply(this, args);\n });\n };\n }\n private setPoolName(options: any) {\n const host = options.hostAddress?.host;\n const port = options.hostAddress?.port;\n const database = options.dbName;\n const poolName = `mongodb://${host}:${port}/${database}`;\n this._poolName = poolName;\n }\n\n private _checkSkipInstrumentation(currentSpan: Span | undefined) {\n const requireParentSpan = this.getConfig().requireParentSpan;\n const hasNoParentSpan = currentSpan === undefined;\n return requireParentSpan === true && hasNoParentSpan;\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","semconvStabilityFromStr","METRIC_DB_CLIENT_CONNECTIONS_USAGE","InstrumentationNodeModuleDefinition","InstrumentationNodeModuleFile","isWrapped","context","trace","SpanKind","MongodbCommandType","SemconvStability","ATTR_DB_SYSTEM","DB_SYSTEM_VALUE_MONGODB","ATTR_DB_NAME","ATTR_DB_MONGODB_COLLECTION","ATTR_DB_OPERATION","ATTR_DB_CONNECTION_STRING","ATTR_DB_SYSTEM_NAME","DB_SYSTEM_NAME_VALUE_MONGODB","ATTR_DB_NAMESPACE","ATTR_DB_OPERATION_NAME","ATTR_DB_COLLECTION_NAME","ATTR_NET_PEER_NAME","ATTR_SERVER_ADDRESS","ATTR_NET_PEER_PORT","ATTR_SERVER_PORT","safeExecuteInTheMiddle","ATTR_DB_STATEMENT","ATTR_DB_QUERY_TEXT","SpanStatusCode"],"mappings":"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"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3
3
  const api = require('@opentelemetry/api');
4
4
  const core = require('@sentry/core');
5
5
  const instrumentation = require('@opentelemetry/instrumentation');
6
+ const InstrumentationNodeModuleFile = require('../../InstrumentationNodeModuleFile.js');
6
7
  const semconv = require('./semconv.js');
7
8
  const sqlCommon = require('../../utils/sql-common.js');
8
9
  const utils = require('./utils.js');
@@ -51,7 +52,7 @@ class MySQL2Instrumentation extends instrumentation.InstrumentationBase {
51
52
  () => {
52
53
  },
53
54
  [
54
- new instrumentation.InstrumentationNodeModuleFile(
55
+ new InstrumentationNodeModuleFile.InstrumentationNodeModuleFile(
55
56
  "mysql2/promise.js",
56
57
  supportedVersions,
57
58
  (moduleExports) => {
@@ -61,7 +62,7 @@ class MySQL2Instrumentation extends instrumentation.InstrumentationBase {
61
62
  () => {
62
63
  }
63
64
  ),
64
- new instrumentation.InstrumentationNodeModuleFile(
65
+ new InstrumentationNodeModuleFile.InstrumentationNodeModuleFile(
65
66
  "mysql2/lib/connection.js",
66
67
  supportedVersions,
67
68
  (moduleExports) => {
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mysql2/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql2\n * - Upstream version: @opentelemetry/instrumentation-mysql2@0.64.0\n * - Types from 'mysql2' inlined as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n */\n/* eslint-disable */\n\nimport * as api from '@opentelemetry/api';\nimport { SDK_VERSION } from '@sentry/core';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n safeExecuteInTheMiddle,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { DB_SYSTEM_VALUE_MYSQL, ATTR_DB_STATEMENT, ATTR_DB_SYSTEM } from './semconv';\nimport { addSqlCommenterComment } from '../../utils/sql-common';\nimport type { Connection, Query, QueryOptions, QueryError, FieldPacket, FormatFunction } from './mysql2-types';\nimport { MySQL2InstrumentationConfig } from './types';\nimport { getConnectionAttributes, getConnectionPrototypeToInstrument, getQueryText, getSpanName, once } from './utils';\nimport {\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mysql2';\n\nconst supportedVersions = ['>=1.4.2 <4'];\n\nexport class MySQL2Instrumentation extends InstrumentationBase<MySQL2InstrumentationConfig> {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n\n constructor(config: MySQL2InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n this._setSemconvStabilityFromEnv();\n }\n\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n this._dbSemconvStability = semconvStabilityFromStr('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n\n protected init() {\n let format: FormatFunction | undefined;\n function setFormatFunction(moduleExports: any) {\n if (!format && moduleExports.format) {\n format = moduleExports.format;\n }\n }\n const patch = (ConnectionPrototype: Connection) => {\n if (isWrapped(ConnectionPrototype.query)) {\n this._unwrap(ConnectionPrototype, 'query');\n }\n this._wrap(ConnectionPrototype, 'query', this._patchQuery(format, false) as any);\n if (isWrapped(ConnectionPrototype.execute)) {\n this._unwrap(ConnectionPrototype, 'execute');\n }\n this._wrap(ConnectionPrototype, 'execute', this._patchQuery(format, true) as any);\n };\n const unpatch = (ConnectionPrototype: Connection) => {\n this._unwrap(ConnectionPrototype, 'query');\n this._unwrap(ConnectionPrototype, 'execute');\n };\n return [\n new InstrumentationNodeModuleDefinition(\n 'mysql2',\n supportedVersions,\n (moduleExports: any) => {\n setFormatFunction(moduleExports);\n return moduleExports;\n },\n () => {},\n [\n new InstrumentationNodeModuleFile(\n 'mysql2/promise.js',\n supportedVersions,\n (moduleExports: any) => {\n setFormatFunction(moduleExports);\n return moduleExports;\n },\n () => {},\n ),\n new InstrumentationNodeModuleFile(\n 'mysql2/lib/connection.js',\n supportedVersions,\n (moduleExports: any) => {\n const ConnectionPrototype: Connection = getConnectionPrototypeToInstrument(moduleExports);\n patch(ConnectionPrototype);\n return moduleExports;\n },\n (moduleExports: any) => {\n if (moduleExports === undefined) return;\n const ConnectionPrototype: Connection = getConnectionPrototypeToInstrument(moduleExports);\n unpatch(ConnectionPrototype);\n },\n ),\n ],\n ),\n ];\n }\n\n private _patchQuery(format: FormatFunction | undefined, isPrepared: boolean) {\n return (originalQuery: Function): Function => {\n const thisPlugin = this;\n return function query(\n this: Connection,\n query: string | Query | QueryOptions,\n _valuesOrCallback?: unknown[] | Function,\n _callback?: Function,\n ) {\n let values;\n if (Array.isArray(_valuesOrCallback)) {\n values = _valuesOrCallback;\n } else if (arguments[2]) {\n values = [_valuesOrCallback];\n }\n const { maskStatement, maskStatementHook, responseHook } = thisPlugin.getConfig();\n\n const attributes: api.Attributes = getConnectionAttributes(\n this.config,\n thisPlugin._dbSemconvStability,\n thisPlugin._netSemconvStability,\n );\n const dbQueryText = getQueryText(query, format, values, maskStatement, maskStatementHook);\n if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n attributes[ATTR_DB_STATEMENT] = dbQueryText;\n }\n if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n }\n\n const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n kind: api.SpanKind.CLIENT,\n attributes,\n });\n\n if (!isPrepared && thisPlugin.getConfig().addSqlCommenterCommentToQueries) {\n arguments[0] = query =\n typeof query === 'string'\n ? addSqlCommenterComment(span, query)\n : Object.assign(query, {\n sql: addSqlCommenterComment(span, query.sql),\n });\n }\n\n const endSpan = once((err?: any, results?: any) => {\n if (err) {\n span.setStatus({\n code: api.SpanStatusCode.ERROR,\n message: err.message,\n });\n } else {\n if (typeof responseHook === 'function') {\n safeExecuteInTheMiddle(\n () => {\n responseHook(span, {\n queryResults: results,\n });\n },\n err => {\n if (err) {\n thisPlugin._diag.warn('Failed executing responseHook', err);\n }\n },\n true,\n );\n }\n }\n\n span.end();\n });\n\n if (arguments.length === 1) {\n if (typeof (query as any).onResult === 'function') {\n thisPlugin._wrap(query as any, 'onResult', thisPlugin._patchCallbackQuery(endSpan));\n }\n\n const streamableQuery: Query = originalQuery.apply(this, arguments);\n\n streamableQuery\n .once('error', (err: any) => {\n endSpan(err);\n })\n .once('result', (results: any) => {\n endSpan(undefined, results);\n });\n\n return streamableQuery;\n }\n\n if (typeof arguments[1] === 'function') {\n thisPlugin._wrap(arguments, 1, thisPlugin._patchCallbackQuery(endSpan));\n } else if (typeof arguments[2] === 'function') {\n thisPlugin._wrap(arguments, 2, thisPlugin._patchCallbackQuery(endSpan));\n }\n\n return originalQuery.apply(this, arguments);\n };\n };\n }\n\n private _patchCallbackQuery(endSpan: Function) {\n return (originalCallback: Function) => {\n return function (err: QueryError | null, results?: any, _fields?: FieldPacket[]) {\n endSpan(err, results);\n return originalCallback(...arguments);\n };\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","semconvStabilityFromStr","isWrapped","InstrumentationNodeModuleDefinition","InstrumentationNodeModuleFile","getConnectionPrototypeToInstrument","getConnectionAttributes","getQueryText","SemconvStability","ATTR_DB_SYSTEM","DB_SYSTEM_VALUE_MYSQL","ATTR_DB_STATEMENT","ATTR_DB_SYSTEM_NAME","DB_SYSTEM_NAME_VALUE_MYSQL","ATTR_DB_QUERY_TEXT","getSpanName","addSqlCommenterComment","once","safeExecuteInTheMiddle","err"],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/mysql2/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mysql2\n * - Upstream version: @opentelemetry/instrumentation-mysql2@0.64.0\n * - Types from 'mysql2' inlined as simplified interfaces\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n */\n/* eslint-disable */\n\nimport * as api from '@opentelemetry/api';\nimport { SDK_VERSION } from '@sentry/core';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n isWrapped,\n safeExecuteInTheMiddle,\n SemconvStability,\n semconvStabilityFromStr,\n} from '@opentelemetry/instrumentation';\nimport { InstrumentationNodeModuleFile } from '../../InstrumentationNodeModuleFile';\nimport { DB_SYSTEM_VALUE_MYSQL, ATTR_DB_STATEMENT, ATTR_DB_SYSTEM } from './semconv';\nimport { addSqlCommenterComment } from '../../utils/sql-common';\nimport type { Connection, Query, QueryOptions, QueryError, FieldPacket, FormatFunction } from './mysql2-types';\nimport { MySQL2InstrumentationConfig } from './types';\nimport { getConnectionAttributes, getConnectionPrototypeToInstrument, getQueryText, getSpanName, once } from './utils';\nimport {\n ATTR_DB_QUERY_TEXT,\n ATTR_DB_SYSTEM_NAME,\n DB_SYSTEM_NAME_VALUE_MYSQL,\n} from '@opentelemetry/semantic-conventions';\n\nconst PACKAGE_NAME = '@sentry/instrumentation-mysql2';\n\nconst supportedVersions = ['>=1.4.2 <4'];\n\nexport class MySQL2Instrumentation extends InstrumentationBase<MySQL2InstrumentationConfig> {\n private _netSemconvStability!: SemconvStability;\n private _dbSemconvStability!: SemconvStability;\n\n constructor(config: MySQL2InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n this._setSemconvStabilityFromEnv();\n }\n\n private _setSemconvStabilityFromEnv() {\n this._netSemconvStability = semconvStabilityFromStr('http', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n this._dbSemconvStability = semconvStabilityFromStr('database', process.env.OTEL_SEMCONV_STABILITY_OPT_IN);\n }\n\n protected init() {\n let format: FormatFunction | undefined;\n function setFormatFunction(moduleExports: any) {\n if (!format && moduleExports.format) {\n format = moduleExports.format;\n }\n }\n const patch = (ConnectionPrototype: Connection) => {\n if (isWrapped(ConnectionPrototype.query)) {\n this._unwrap(ConnectionPrototype, 'query');\n }\n this._wrap(ConnectionPrototype, 'query', this._patchQuery(format, false) as any);\n if (isWrapped(ConnectionPrototype.execute)) {\n this._unwrap(ConnectionPrototype, 'execute');\n }\n this._wrap(ConnectionPrototype, 'execute', this._patchQuery(format, true) as any);\n };\n const unpatch = (ConnectionPrototype: Connection) => {\n this._unwrap(ConnectionPrototype, 'query');\n this._unwrap(ConnectionPrototype, 'execute');\n };\n return [\n new InstrumentationNodeModuleDefinition(\n 'mysql2',\n supportedVersions,\n (moduleExports: any) => {\n setFormatFunction(moduleExports);\n return moduleExports;\n },\n () => {},\n [\n new InstrumentationNodeModuleFile(\n 'mysql2/promise.js',\n supportedVersions,\n (moduleExports: any) => {\n setFormatFunction(moduleExports);\n return moduleExports;\n },\n () => {},\n ),\n new InstrumentationNodeModuleFile(\n 'mysql2/lib/connection.js',\n supportedVersions,\n (moduleExports: any) => {\n const ConnectionPrototype: Connection = getConnectionPrototypeToInstrument(moduleExports);\n patch(ConnectionPrototype);\n return moduleExports;\n },\n (moduleExports: any) => {\n if (moduleExports === undefined) return;\n const ConnectionPrototype: Connection = getConnectionPrototypeToInstrument(moduleExports);\n unpatch(ConnectionPrototype);\n },\n ),\n ],\n ),\n ];\n }\n\n private _patchQuery(format: FormatFunction | undefined, isPrepared: boolean) {\n return (originalQuery: Function): Function => {\n const thisPlugin = this;\n return function query(\n this: Connection,\n query: string | Query | QueryOptions,\n _valuesOrCallback?: unknown[] | Function,\n _callback?: Function,\n ) {\n let values;\n if (Array.isArray(_valuesOrCallback)) {\n values = _valuesOrCallback;\n } else if (arguments[2]) {\n values = [_valuesOrCallback];\n }\n const { maskStatement, maskStatementHook, responseHook } = thisPlugin.getConfig();\n\n const attributes: api.Attributes = getConnectionAttributes(\n this.config,\n thisPlugin._dbSemconvStability,\n thisPlugin._netSemconvStability,\n );\n const dbQueryText = getQueryText(query, format, values, maskStatement, maskStatementHook);\n if (thisPlugin._dbSemconvStability & SemconvStability.OLD) {\n attributes[ATTR_DB_SYSTEM] = DB_SYSTEM_VALUE_MYSQL;\n attributes[ATTR_DB_STATEMENT] = dbQueryText;\n }\n if (thisPlugin._dbSemconvStability & SemconvStability.STABLE) {\n attributes[ATTR_DB_SYSTEM_NAME] = DB_SYSTEM_NAME_VALUE_MYSQL;\n attributes[ATTR_DB_QUERY_TEXT] = dbQueryText;\n }\n\n const span = thisPlugin.tracer.startSpan(getSpanName(query), {\n kind: api.SpanKind.CLIENT,\n attributes,\n });\n\n if (!isPrepared && thisPlugin.getConfig().addSqlCommenterCommentToQueries) {\n arguments[0] = query =\n typeof query === 'string'\n ? addSqlCommenterComment(span, query)\n : Object.assign(query, {\n sql: addSqlCommenterComment(span, query.sql),\n });\n }\n\n const endSpan = once((err?: any, results?: any) => {\n if (err) {\n span.setStatus({\n code: api.SpanStatusCode.ERROR,\n message: err.message,\n });\n } else {\n if (typeof responseHook === 'function') {\n safeExecuteInTheMiddle(\n () => {\n responseHook(span, {\n queryResults: results,\n });\n },\n err => {\n if (err) {\n thisPlugin._diag.warn('Failed executing responseHook', err);\n }\n },\n true,\n );\n }\n }\n\n span.end();\n });\n\n if (arguments.length === 1) {\n if (typeof (query as any).onResult === 'function') {\n thisPlugin._wrap(query as any, 'onResult', thisPlugin._patchCallbackQuery(endSpan));\n }\n\n const streamableQuery: Query = originalQuery.apply(this, arguments);\n\n streamableQuery\n .once('error', (err: any) => {\n endSpan(err);\n })\n .once('result', (results: any) => {\n endSpan(undefined, results);\n });\n\n return streamableQuery;\n }\n\n if (typeof arguments[1] === 'function') {\n thisPlugin._wrap(arguments, 1, thisPlugin._patchCallbackQuery(endSpan));\n } else if (typeof arguments[2] === 'function') {\n thisPlugin._wrap(arguments, 2, thisPlugin._patchCallbackQuery(endSpan));\n }\n\n return originalQuery.apply(this, arguments);\n };\n };\n }\n\n private _patchCallbackQuery(endSpan: Function) {\n return (originalCallback: Function) => {\n return function (err: QueryError | null, results?: any, _fields?: FieldPacket[]) {\n endSpan(err, results);\n return originalCallback(...arguments);\n };\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","semconvStabilityFromStr","isWrapped","InstrumentationNodeModuleDefinition","InstrumentationNodeModuleFile","getConnectionPrototypeToInstrument","getConnectionAttributes","getQueryText","SemconvStability","ATTR_DB_SYSTEM","DB_SYSTEM_VALUE_MYSQL","ATTR_DB_STATEMENT","ATTR_DB_SYSTEM_NAME","DB_SYSTEM_NAME_VALUE_MYSQL","ATTR_DB_QUERY_TEXT","getSpanName","addSqlCommenterComment","once","safeExecuteInTheMiddle","err"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/openai/index.ts"],"sourcesContent":["import type { IntegrationFn, OpenAiOptions } from '@sentry/core';\nimport { defineIntegration, OPENAI_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryOpenAiInstrumentation } from './instrumentation';\n\nexport const instrumentOpenAi = generateInstrumentOnce<OpenAiOptions>(\n OPENAI_INTEGRATION_NAME,\n options => new SentryOpenAiInstrumentation(options),\n);\n\nconst _openAiIntegration = ((options: OpenAiOptions = {}) => {\n return {\n name: OPENAI_INTEGRATION_NAME,\n setupOnce() {\n instrumentOpenAi(options);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the OpenAI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments OpenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.openAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record prompt messages (default: respects `sendDefaultPii` client option)\n * - `recordOutputs`: Whether to record response text (default: respects `sendDefaultPii` client option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs ONLY if `sendDefaultPii` is set to `true` in your Sentry client options\n * - Otherwise, inputs and outputs are NOT recorded unless explicitly enabled\n *\n * @example\n * ```javascript\n * // Record inputs and outputs when sendDefaultPii is false\n * Sentry.init({\n * integrations: [\n * Sentry.openAIIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of sendDefaultPii\n * Sentry.init({\n * sendDefaultPii: true,\n * integrations: [\n * Sentry.openAIIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n */\nexport const openAIIntegration = defineIntegration(_openAiIntegration);\n"],"names":["generateInstrumentOnce","OPENAI_INTEGRATION_NAME","SentryOpenAiInstrumentation","defineIntegration"],"mappings":";;;;;;AAKO,MAAM,gBAAA,GAAmBA,+BAAA;AAAA,EAC9BC,4BAAA;AAAA,EACA,CAAA,OAAA,KAAW,IAAIC,2CAAA,CAA4B,OAAO;AACpD;AAEA,MAAM,kBAAA,IAAsB,CAAC,OAAA,GAAyB,EAAC,KAAM;AAC3D,EAAA,OAAO;AAAA,IACL,IAAA,EAAMD,4BAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,gBAAA,CAAiB,OAAO,CAAA;AAAA,IAC1B;AAAA,GACF;AACF,CAAA,CAAA;AAuDO,MAAM,iBAAA,GAAoBE,uBAAkB,kBAAkB;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/openai/index.ts"],"sourcesContent":["import type { IntegrationFn, OpenAiOptions } from '@sentry/core';\nimport { defineIntegration, OPENAI_INTEGRATION_NAME } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { SentryOpenAiInstrumentation } from './instrumentation';\n\nexport const instrumentOpenAi = generateInstrumentOnce<OpenAiOptions>(\n OPENAI_INTEGRATION_NAME,\n options => new SentryOpenAiInstrumentation(options),\n);\n\nconst _openAiIntegration = ((options: OpenAiOptions = {}) => {\n return {\n name: OPENAI_INTEGRATION_NAME,\n setupOnce() {\n instrumentOpenAi(options);\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the OpenAI SDK.\n *\n * This integration is enabled by default.\n *\n * When configured, this integration automatically instruments OpenAI SDK client instances\n * to capture telemetry data following OpenTelemetry Semantic Conventions for Generative AI.\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.openAIIntegration()],\n * });\n * ```\n *\n * ## Options\n *\n * - `recordInputs`: Whether to record input messages/prompts (default: follows `dataCollection.genAI.inputs`, or the deprecated `sendDefaultPii` option)\n * - `recordOutputs`: Whether to record response text (default: follows `dataCollection.genAI.outputs`, or the deprecated `sendDefaultPii` option)\n *\n * ### Default Behavior\n *\n * By default, the integration will:\n * - Record inputs and outputs based on `dataCollection.genAI` in your Sentry client options\n * (or the deprecated `sendDefaultPii` option, for backwards compatibility)\n * - Integration-level `recordInputs`/`recordOutputs` options take precedence over global config\n *\n * @example\n * ```javascript\n * // Always record inputs and outputs regardless of global dataCollection config\n * Sentry.init({\n * integrations: [\n * Sentry.openAIIntegration({\n * recordInputs: true,\n * recordOutputs: true\n * })\n * ],\n * });\n *\n * // Never record inputs/outputs regardless of global dataCollection config\n * Sentry.init({\n * dataCollection: { genAI: { inputs: true, outputs: true } },\n * integrations: [\n * Sentry.openAIIntegration({\n * recordInputs: false,\n * recordOutputs: false\n * })\n * ],\n * });\n * ```\n *\n */\nexport const openAIIntegration = defineIntegration(_openAiIntegration);\n"],"names":["generateInstrumentOnce","OPENAI_INTEGRATION_NAME","SentryOpenAiInstrumentation","defineIntegration"],"mappings":";;;;;;AAKO,MAAM,gBAAA,GAAmBA,+BAAA;AAAA,EAC9BC,4BAAA;AAAA,EACA,CAAA,OAAA,KAAW,IAAIC,2CAAA,CAA4B,OAAO;AACpD;AAEA,MAAM,kBAAA,IAAsB,CAAC,OAAA,GAAyB,EAAC,KAAM;AAC3D,EAAA,OAAO;AAAA,IACL,IAAA,EAAMD,4BAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,gBAAA,CAAiB,OAAO,CAAA;AAAA,IAC1B;AAAA,GACF;AACF,CAAA,CAAA;AAwDO,MAAM,iBAAA,GAAoBE,uBAAkB,kBAAkB;;;;;"}
@@ -1,13 +1,13 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const instrumentation = require('@opentelemetry/instrumentation');
4
+ const InstrumentationNodeModuleFile = require('../../InstrumentationNodeModuleFile.js');
4
5
  const api = require('@opentelemetry/api');
5
6
  const internalTypes = require('./internal-types.js');
6
7
  const utils = require('./utils.js');
7
8
  const sqlCommon = require('../../utils/sql-common.js');
8
9
  const core = require('@sentry/core');
9
10
  const SpanNames = require('./enums/SpanNames.js');
10
- const core$1 = require('@opentelemetry/core');
11
11
  const semanticConventions = require('@opentelemetry/semantic-conventions');
12
12
  const semconv = require('./semconv.js');
13
13
 
@@ -56,13 +56,13 @@ class PgInstrumentation extends instrumentation.InstrumentationBase {
56
56
  init() {
57
57
  const SUPPORTED_PG_VERSIONS = [">=8.0.3 <9"];
58
58
  const SUPPORTED_PG_POOL_VERSIONS = [">=2.0.0 <4"];
59
- const modulePgNativeClient = new instrumentation.InstrumentationNodeModuleFile(
59
+ const modulePgNativeClient = new InstrumentationNodeModuleFile.InstrumentationNodeModuleFile(
60
60
  "pg/lib/native/client.js",
61
61
  SUPPORTED_PG_VERSIONS,
62
62
  this._patchPgClient.bind(this),
63
63
  this._unpatchPgClient.bind(this)
64
64
  );
65
- const modulePgClient = new instrumentation.InstrumentationNodeModuleFile(
65
+ const modulePgClient = new InstrumentationNodeModuleFile.InstrumentationNodeModuleFile(
66
66
  "pg/lib/client.js",
67
67
  SUPPORTED_PG_VERSIONS,
68
68
  this._patchPgClient.bind(this),
@@ -174,7 +174,7 @@ class PgInstrumentation extends instrumentation.InstrumentationBase {
174
174
  metricsAttributes[key] = attributes[key];
175
175
  }
176
176
  });
177
- const durationSeconds = core$1.hrTimeToMilliseconds(core$1.hrTimeDuration(startTime, core$1.hrTime())) / 1e3;
177
+ const durationSeconds = core.timestampInSeconds() - startTime;
178
178
  this._operationDuration.record(durationSeconds, metricsAttributes);
179
179
  }
180
180
  _getClientQueryPatch() {
@@ -185,7 +185,7 @@ class PgInstrumentation extends instrumentation.InstrumentationBase {
185
185
  if (utils.shouldSkipInstrumentation(plugin.getConfig())) {
186
186
  return original.apply(this, args);
187
187
  }
188
- const startTime = core$1.hrTime();
188
+ const startTime = core.timestampInSeconds();
189
189
  const arg0 = args[0];
190
190
  const firstArgIsString = typeof arg0 === "string";
191
191
  const firstArgIsQueryObjectWithText = utils.isObjectWithTextString(arg0);