@sentry/node 10.65.0 → 10.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/build/cjs/index.js +30 -27
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/integrations/tracing/dataloader/index.js +7 -2
  4. package/build/cjs/integrations/tracing/dataloader/index.js.map +1 -1
  5. package/build/cjs/integrations/tracing/graphql/vendored/utils.js +4 -2
  6. package/build/cjs/integrations/tracing/graphql/vendored/utils.js.map +1 -1
  7. package/build/cjs/integrations/tracing/index.js +2 -2
  8. package/build/cjs/integrations/tracing/index.js.map +1 -1
  9. package/build/cjs/integrations/tracing/knex/index.js +6 -1
  10. package/build/cjs/integrations/tracing/knex/index.js.map +1 -1
  11. package/build/cjs/integrations/tracing/koa/vendored/utils.js +4 -1
  12. package/build/cjs/integrations/tracing/koa/vendored/utils.js.map +1 -1
  13. package/build/cjs/integrations/tracing/mongo/vendored/patches.js +8 -9
  14. package/build/cjs/integrations/tracing/mongo/vendored/patches.js.map +1 -1
  15. package/build/cjs/integrations/tracing/mongo/vendored/utils.js +5 -118
  16. package/build/cjs/integrations/tracing/mongo/vendored/utils.js.map +1 -1
  17. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js +33 -23
  18. package/build/cjs/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  19. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js +0 -16
  20. package/build/cjs/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  21. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js +2 -2
  22. package/build/cjs/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -1
  23. package/build/cjs/sdk/index.js +13 -3
  24. package/build/cjs/sdk/index.js.map +1 -1
  25. package/build/cjs/sdk/initOtel.js +26 -2
  26. package/build/cjs/sdk/initOtel.js.map +1 -1
  27. package/build/esm/index.js +3 -2
  28. package/build/esm/index.js.map +1 -1
  29. package/build/esm/integrations/tracing/dataloader/index.js +7 -2
  30. package/build/esm/integrations/tracing/dataloader/index.js.map +1 -1
  31. package/build/esm/integrations/tracing/graphql/vendored/utils.js +5 -3
  32. package/build/esm/integrations/tracing/graphql/vendored/utils.js.map +1 -1
  33. package/build/esm/integrations/tracing/index.js +1 -1
  34. package/build/esm/integrations/tracing/index.js.map +1 -1
  35. package/build/esm/integrations/tracing/knex/index.js +6 -1
  36. package/build/esm/integrations/tracing/knex/index.js.map +1 -1
  37. package/build/esm/integrations/tracing/koa/vendored/utils.js +5 -2
  38. package/build/esm/integrations/tracing/koa/vendored/utils.js.map +1 -1
  39. package/build/esm/integrations/tracing/mongo/vendored/patches.js +3 -4
  40. package/build/esm/integrations/tracing/mongo/vendored/patches.js.map +1 -1
  41. package/build/esm/integrations/tracing/mongo/vendored/utils.js +6 -118
  42. package/build/esm/integrations/tracing/mongo/vendored/utils.js.map +1 -1
  43. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js +35 -25
  44. package/build/esm/integrations/tracing/mongoose/vendored/mongoose.js.map +1 -1
  45. package/build/esm/integrations/tracing/mongoose/vendored/utils.js +1 -16
  46. package/build/esm/integrations/tracing/mongoose/vendored/utils.js.map +1 -1
  47. package/build/esm/package.json +1 -1
  48. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js +2 -2
  49. package/build/esm/sdk/experimentalUseDiagnosticsChannelInjection.js.map +1 -1
  50. package/build/esm/sdk/index.js +13 -4
  51. package/build/esm/sdk/index.js.map +1 -1
  52. package/build/esm/sdk/initOtel.js +27 -3
  53. package/build/esm/sdk/initOtel.js.map +1 -1
  54. package/build/types/index.d.ts +3 -2
  55. package/build/types/index.d.ts.map +1 -1
  56. package/build/types/integrations/tracing/dataloader/index.d.ts.map +1 -1
  57. package/build/types/integrations/tracing/graphql/vendored/utils.d.ts.map +1 -1
  58. package/build/types/integrations/tracing/knex/index.d.ts.map +1 -1
  59. package/build/types/integrations/tracing/koa/vendored/utils.d.ts.map +1 -1
  60. package/build/types/integrations/tracing/mongo/vendored/patches.d.ts.map +1 -1
  61. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts +6 -15
  62. package/build/types/integrations/tracing/mongo/vendored/utils.d.ts.map +1 -1
  63. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts +0 -1
  64. package/build/types/integrations/tracing/mongoose/vendored/mongoose.d.ts.map +1 -1
  65. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts +1 -3
  66. package/build/types/integrations/tracing/mongoose/vendored/utils.d.ts.map +1 -1
  67. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +2 -1
  68. package/build/types/sdk/experimentalUseDiagnosticsChannelInjection.d.ts.map +1 -1
  69. package/build/types/sdk/index.d.ts +18 -0
  70. package/build/types/sdk/index.d.ts.map +1 -1
  71. package/build/types/sdk/initOtel.d.ts.map +1 -1
  72. package/build/types-ts3.8/index.d.ts +3 -2
  73. package/build/types-ts3.8/integrations/tracing/mongo/vendored/utils.d.ts +6 -15
  74. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/mongoose.d.ts +0 -1
  75. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/utils.d.ts +1 -3
  76. package/build/types-ts3.8/sdk/experimentalUseDiagnosticsChannelInjection.d.ts +2 -1
  77. package/build/types-ts3.8/sdk/index.d.ts +18 -0
  78. package/package.json +6 -6
  79. package/build/cjs/integrations/tracing/mongo/vendored/internal-types.js +0 -14
  80. package/build/cjs/integrations/tracing/mongo/vendored/internal-types.js.map +0 -1
  81. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js +0 -10
  82. package/build/cjs/integrations/tracing/mongo/vendored/semconv.js.map +0 -1
  83. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js +0 -6
  84. package/build/cjs/integrations/tracing/mongoose/vendored/semconv.js.map +0 -1
  85. package/build/cjs/integrations/tracing/prisma/index.js +0 -109
  86. package/build/cjs/integrations/tracing/prisma/index.js.map +0 -1
  87. package/build/cjs/integrations/tracing/prisma/vendored/active-tracing-helper.js +0 -145
  88. package/build/cjs/integrations/tracing/prisma/vendored/active-tracing-helper.js.map +0 -1
  89. package/build/cjs/integrations/tracing/prisma/vendored/constants.js +0 -14
  90. package/build/cjs/integrations/tracing/prisma/vendored/constants.js.map +0 -1
  91. package/build/cjs/integrations/tracing/prisma/vendored/global.js +0 -28
  92. package/build/cjs/integrations/tracing/prisma/vendored/global.js.map +0 -1
  93. package/build/cjs/integrations/tracing/prisma/vendored/instrumentation.js +0 -33
  94. package/build/cjs/integrations/tracing/prisma/vendored/instrumentation.js.map +0 -1
  95. package/build/esm/integrations/tracing/mongo/vendored/internal-types.js +0 -12
  96. package/build/esm/integrations/tracing/mongo/vendored/internal-types.js.map +0 -1
  97. package/build/esm/integrations/tracing/mongo/vendored/semconv.js +0 -6
  98. package/build/esm/integrations/tracing/mongo/vendored/semconv.js.map +0 -1
  99. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js +0 -4
  100. package/build/esm/integrations/tracing/mongoose/vendored/semconv.js.map +0 -1
  101. package/build/esm/integrations/tracing/prisma/index.js +0 -106
  102. package/build/esm/integrations/tracing/prisma/index.js.map +0 -1
  103. package/build/esm/integrations/tracing/prisma/vendored/active-tracing-helper.js +0 -143
  104. package/build/esm/integrations/tracing/prisma/vendored/active-tracing-helper.js.map +0 -1
  105. package/build/esm/integrations/tracing/prisma/vendored/constants.js +0 -9
  106. package/build/esm/integrations/tracing/prisma/vendored/constants.js.map +0 -1
  107. package/build/esm/integrations/tracing/prisma/vendored/global.js +0 -24
  108. package/build/esm/integrations/tracing/prisma/vendored/global.js.map +0 -1
  109. package/build/esm/integrations/tracing/prisma/vendored/instrumentation.js +0 -31
  110. package/build/esm/integrations/tracing/prisma/vendored/instrumentation.js.map +0 -1
  111. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts +0 -17
  112. package/build/types/integrations/tracing/mongo/vendored/semconv.d.ts.map +0 -1
  113. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -9
  114. package/build/types/integrations/tracing/mongoose/vendored/semconv.d.ts.map +0 -1
  115. package/build/types/integrations/tracing/prisma/index.d.ts +0 -34
  116. package/build/types/integrations/tracing/prisma/index.d.ts.map +0 -1
  117. package/build/types/integrations/tracing/prisma/vendored/active-tracing-helper.d.ts +0 -16
  118. package/build/types/integrations/tracing/prisma/vendored/active-tracing-helper.d.ts.map +0 -1
  119. package/build/types/integrations/tracing/prisma/vendored/constants.d.ts +0 -5
  120. package/build/types/integrations/tracing/prisma/vendored/constants.d.ts.map +0 -1
  121. package/build/types/integrations/tracing/prisma/vendored/global.d.ts +0 -5
  122. package/build/types/integrations/tracing/prisma/vendored/global.d.ts.map +0 -1
  123. package/build/types/integrations/tracing/prisma/vendored/instrumentation.d.ts +0 -15
  124. package/build/types/integrations/tracing/prisma/vendored/instrumentation.d.ts.map +0 -1
  125. package/build/types/integrations/tracing/prisma/vendored/types.d.ts +0 -34
  126. package/build/types/integrations/tracing/prisma/vendored/types.d.ts.map +0 -1
  127. package/build/types/integrations/tracing/prisma/vendored/v5-tracing-helper.d.ts +0 -38
  128. package/build/types/integrations/tracing/prisma/vendored/v5-tracing-helper.d.ts.map +0 -1
  129. package/build/types/integrations/tracing/prisma/vendored/v6-tracing-helper.d.ts +0 -31
  130. package/build/types/integrations/tracing/prisma/vendored/v6-tracing-helper.d.ts.map +0 -1
  131. package/build/types-ts3.8/integrations/tracing/mongo/vendored/semconv.d.ts +0 -17
  132. package/build/types-ts3.8/integrations/tracing/mongoose/vendored/semconv.d.ts +0 -9
  133. package/build/types-ts3.8/integrations/tracing/prisma/index.d.ts +0 -34
  134. package/build/types-ts3.8/integrations/tracing/prisma/vendored/active-tracing-helper.d.ts +0 -16
  135. package/build/types-ts3.8/integrations/tracing/prisma/vendored/constants.d.ts +0 -5
  136. package/build/types-ts3.8/integrations/tracing/prisma/vendored/global.d.ts +0 -5
  137. package/build/types-ts3.8/integrations/tracing/prisma/vendored/instrumentation.d.ts +0 -15
  138. package/build/types-ts3.8/integrations/tracing/prisma/vendored/types.d.ts +0 -37
  139. package/build/types-ts3.8/integrations/tracing/prisma/vendored/v5-tracing-helper.d.ts +0 -44
  140. package/build/types-ts3.8/integrations/tracing/prisma/vendored/v6-tracing-helper.d.ts +0 -34
@@ -2,9 +2,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const http = require('./integrations/http.js');
4
4
  const nodeFetch = require('./integrations/node-fetch.js');
5
- const index$5 = require('./integrations/fs/index.js');
5
+ const index$6 = require('./integrations/fs/index.js');
6
6
  const express = require('./integrations/tracing/express.js');
7
- const index$4 = require('./integrations/tracing/fastify/index.js');
7
+ const index$5 = require('./integrations/tracing/fastify/index.js');
8
8
  const index$a = require('./integrations/tracing/graphql/index.js');
9
9
  const index$d = require('./integrations/tracing/kafka/index.js');
10
10
  const index$i = require('./integrations/tracing/lrumemoizer/index.js');
@@ -12,20 +12,20 @@ const index$j = require('./integrations/tracing/mongo/index.js');
12
12
  const index$k = require('./integrations/tracing/mongoose/index.js');
13
13
  const index$m = require('./integrations/tracing/mysql/index.js');
14
14
  const index$l = require('./integrations/tracing/mysql2/index.js');
15
- const index$q = require('./integrations/tracing/redis/index.js');
15
+ const index$p = require('./integrations/tracing/redis/index.js');
16
16
  const index$o = require('./integrations/tracing/postgres/index.js');
17
17
  const postgresjs = require('./integrations/tracing/postgresjs.js');
18
- const index$p = require('./integrations/tracing/prisma/index.js');
18
+ const serverUtils = require('@sentry/server-utils');
19
19
  const index$b = require('./integrations/tracing/hapi/index.js');
20
20
  const index$c = require('./integrations/tracing/hono/index.js');
21
21
  const index$f = require('./integrations/tracing/koa/index.js');
22
- const index$2 = require('./integrations/tracing/connect/index.js');
22
+ const index$3 = require('./integrations/tracing/connect/index.js');
23
23
  const index$e = require('./integrations/tracing/knex/index.js');
24
- const index$r = require('./integrations/tracing/tedious/index.js');
25
- const index$6 = require('./integrations/tracing/genericPool/index.js');
26
- const index$3 = require('./integrations/tracing/dataloader/index.js');
24
+ const index$q = require('./integrations/tracing/tedious/index.js');
25
+ const index$7 = require('./integrations/tracing/genericPool/index.js');
26
+ const index$4 = require('./integrations/tracing/dataloader/index.js');
27
27
  const index = require('./integrations/tracing/amqplib/index.js');
28
- const index$s = require('./integrations/tracing/vercelai/index.js');
28
+ const index$r = require('./integrations/tracing/vercelai/index.js');
29
29
  const index$n = require('./integrations/tracing/openai/index.js');
30
30
  const index$1 = require('./integrations/tracing/anthropic-ai/index.js');
31
31
  const index$9 = require('./integrations/tracing/google-genai/index.js');
@@ -37,10 +37,11 @@ const statsig = require('./integrations/featureFlagShims/statsig.js');
37
37
  const unleash = require('./integrations/featureFlagShims/unleash.js');
38
38
  const growthbook = require('./integrations/featureFlagShims/growthbook.js');
39
39
  const firebase = require('./integrations/tracing/firebase/firebase.js');
40
- const index$8 = require('./sdk/index.js');
40
+ const index$2 = require('./sdk/index.js');
41
41
  const experimentalUseDiagnosticsChannelInjection = require('./sdk/experimentalUseDiagnosticsChannelInjection.js');
42
+ const diagnosticsChannelInjection = require('./sdk/diagnosticsChannelInjection.js');
42
43
  const initOtel = require('./sdk/initOtel.js');
43
- const index$7 = require('./integrations/tracing/index.js');
44
+ const index$8 = require('./integrations/tracing/index.js');
44
45
  const opentelemetry = require('@sentry/opentelemetry');
45
46
  const core = require('@sentry/core');
46
47
  const nodeCore = require('@sentry/node-core');
@@ -49,11 +50,11 @@ const nodeCore = require('@sentry/node-core');
49
50
 
50
51
  exports.httpIntegration = http.httpIntegration;
51
52
  exports.nativeNodeFetchIntegration = nodeFetch.nativeNodeFetchIntegration;
52
- exports.fsIntegration = index$5.fsIntegration;
53
+ exports.fsIntegration = index$6.fsIntegration;
53
54
  exports.expressIntegration = express.expressIntegration;
54
55
  exports.setupExpressErrorHandler = express.setupExpressErrorHandler;
55
- exports.fastifyIntegration = index$4.fastifyIntegration;
56
- exports.setupFastifyErrorHandler = index$4.setupFastifyErrorHandler;
56
+ exports.fastifyIntegration = index$5.fastifyIntegration;
57
+ exports.setupFastifyErrorHandler = index$5.setupFastifyErrorHandler;
57
58
  exports.graphqlIntegration = index$a.graphqlIntegration;
58
59
  exports.kafkaIntegration = index$d.kafkaIntegration;
59
60
  exports.lruMemoizerIntegration = index$i.lruMemoizerIntegration;
@@ -61,24 +62,24 @@ exports.mongoIntegration = index$j.mongoIntegration;
61
62
  exports.mongooseIntegration = index$k.mongooseIntegration;
62
63
  exports.mysqlIntegration = index$m.mysqlIntegration;
63
64
  exports.mysql2Integration = index$l.mysql2Integration;
64
- exports.redisIntegration = index$q.redisIntegration;
65
+ exports.redisIntegration = index$p.redisIntegration;
65
66
  exports.postgresIntegration = index$o.postgresIntegration;
66
67
  exports.postgresJsIntegration = postgresjs.postgresJsIntegration;
67
- exports.prismaIntegration = index$p.prismaIntegration;
68
+ exports.prismaIntegration = serverUtils.prismaIntegration;
68
69
  exports.hapiIntegration = index$b.hapiIntegration;
69
70
  exports.setupHapiErrorHandler = index$b.setupHapiErrorHandler;
70
71
  exports.honoIntegration = index$c.honoIntegration;
71
72
  exports.setupHonoErrorHandler = index$c.setupHonoErrorHandler;
72
73
  exports.koaIntegration = index$f.koaIntegration;
73
74
  exports.setupKoaErrorHandler = index$f.setupKoaErrorHandler;
74
- exports.connectIntegration = index$2.connectIntegration;
75
- exports.setupConnectErrorHandler = index$2.setupConnectErrorHandler;
75
+ exports.connectIntegration = index$3.connectIntegration;
76
+ exports.setupConnectErrorHandler = index$3.setupConnectErrorHandler;
76
77
  exports.knexIntegration = index$e.knexIntegration;
77
- exports.tediousIntegration = index$r.tediousIntegration;
78
- exports.genericPoolIntegration = index$6.genericPoolIntegration;
79
- exports.dataloaderIntegration = index$3.dataloaderIntegration;
78
+ exports.tediousIntegration = index$q.tediousIntegration;
79
+ exports.genericPoolIntegration = index$7.genericPoolIntegration;
80
+ exports.dataloaderIntegration = index$4.dataloaderIntegration;
80
81
  exports.amqplibIntegration = index.amqplibIntegration;
81
- exports.vercelAIIntegration = index$s.vercelAIIntegration;
82
+ exports.vercelAIIntegration = index$r.vercelAIIntegration;
82
83
  exports.openAIIntegration = index$n.openAIIntegration;
83
84
  exports.anthropicAIIntegration = index$1.anthropicAIIntegration;
84
85
  exports.googleGenAIIntegration = index$9.googleGenAIIntegration;
@@ -92,15 +93,17 @@ exports.statsigIntegration = statsig.statsigIntegrationShim;
92
93
  exports.unleashIntegration = unleash.unleashIntegrationShim;
93
94
  exports.growthbookIntegration = growthbook.growthbookIntegrationShim;
94
95
  exports.firebaseIntegration = firebase.firebaseIntegration;
95
- exports.getDefaultIntegrations = index$8.getDefaultIntegrations;
96
- exports.getDefaultIntegrationsWithoutPerformance = index$8.getDefaultIntegrationsWithoutPerformance;
97
- exports.init = index$8.init;
98
- exports.initWithoutDefaultIntegrations = index$8.initWithoutDefaultIntegrations;
96
+ exports.applyDiagnosticsChannelInjectionIntegrations = index$2.applyDiagnosticsChannelInjectionIntegrations;
97
+ exports.getDefaultIntegrations = index$2.getDefaultIntegrations;
98
+ exports.getDefaultIntegrationsWithoutPerformance = index$2.getDefaultIntegrationsWithoutPerformance;
99
+ exports.init = index$2.init;
100
+ exports.initWithoutDefaultIntegrations = index$2.initWithoutDefaultIntegrations;
99
101
  exports.diagnosticsChannelInjectionIntegrations = experimentalUseDiagnosticsChannelInjection.diagnosticsChannelInjectionIntegrations;
100
102
  exports.experimentalUseDiagnosticsChannelInjection = experimentalUseDiagnosticsChannelInjection.experimentalUseDiagnosticsChannelInjection;
103
+ exports.isDiagnosticsChannelInjectionEnabled = diagnosticsChannelInjection.isDiagnosticsChannelInjectionEnabled;
101
104
  exports.initOpenTelemetry = initOtel.initOpenTelemetry;
102
105
  exports.preloadOpenTelemetry = initOtel.preloadOpenTelemetry;
103
- exports.getAutoPerformanceIntegrations = index$7.getAutoPerformanceIntegrations;
106
+ exports.getAutoPerformanceIntegrations = index$8.getAutoPerformanceIntegrations;
104
107
  exports.setNodeAsyncContextStrategy = opentelemetry.setOpenTelemetryContextAsyncContextStrategy;
105
108
  exports.SDK_VERSION = core.SDK_VERSION;
106
109
  exports.SEMANTIC_ATTRIBUTE_SENTRY_OP = core.SEMANTIC_ATTRIBUTE_SENTRY_OP;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,8 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
- const instrumentation = require('./vendored/instrumentation.js');
4
3
  const core = require('@sentry/core');
5
4
  const nodeCore = require('@sentry/node-core');
5
+ const orchestrion = require('@sentry/server-utils/orchestrion');
6
+ const instrumentation = require('./vendored/instrumentation.js');
6
7
 
7
8
  const INTEGRATION_NAME = "Dataloader";
8
9
  const instrumentDataloader = nodeCore.generateInstrumentOnce(INTEGRATION_NAME, () => new instrumentation.DataloaderInstrumentation());
@@ -10,7 +11,11 @@ const _dataloaderIntegration = (() => {
10
11
  return {
11
12
  name: INTEGRATION_NAME,
12
13
  setupOnce() {
13
- instrumentDataloader();
14
+ if (orchestrion.isOrchestrionInjected()) {
15
+ orchestrion.dataloaderChannelIntegration().setupOnce?.();
16
+ } else {
17
+ instrumentDataloader();
18
+ }
14
19
  }
15
20
  };
16
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/dataloader/index.ts"],"sourcesContent":["import { DataloaderInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Dataloader' as const;\n\nexport const instrumentDataloader = generateInstrumentOnce(INTEGRATION_NAME, () => new DataloaderInstrumentation());\n\nconst _dataloaderIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentDataloader();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [dataloader](https://www.npmjs.com/package/dataloader) library.\n *\n * For more information, see the [`dataloaderIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/dataloader/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.dataloaderIntegration()],\n * });\n * ```\n */\nexport const dataloaderIntegration = defineIntegration(_dataloaderIntegration);\n"],"names":["generateInstrumentOnce","DataloaderInstrumentation","defineIntegration"],"mappings":";;;;;;AAKA,MAAM,gBAAA,GAAmB,YAAA;AAElB,MAAM,uBAAuBA,+BAAA,CAAuB,gBAAA,EAAkB,MAAM,IAAIC,2CAA2B;AAElH,MAAM,0BAA0B,MAAM;AACpC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,oBAAA,EAAqB;AAAA,IACvB;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,qBAAA,GAAwBC,uBAAkB,sBAAsB;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/dataloader/index.ts"],"sourcesContent":["import type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { dataloaderChannelIntegration, isOrchestrionInjected } from '@sentry/server-utils/orchestrion';\nimport { DataloaderInstrumentation } from './vendored/instrumentation';\n\nconst INTEGRATION_NAME = 'Dataloader' as const;\n\nexport const instrumentDataloader = generateInstrumentOnce(INTEGRATION_NAME, () => new DataloaderInstrumentation());\n\nconst _dataloaderIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // Decide here, not in the factory: the runtime channel injection runs inside `Sentry.init()`,\n // after the integrations array has already been built, so `isOrchestrionInjected()` is only\n // reliable by `setupOnce`. When the diagnostics channels are injected (runtime hook or bundler\n // plugin), subscribe to them; otherwise fall back to the vendored OTel instrumentation.\n if (isOrchestrionInjected()) {\n dataloaderChannelIntegration().setupOnce?.();\n } else {\n instrumentDataloader();\n }\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [dataloader](https://www.npmjs.com/package/dataloader) library.\n *\n * For more information, see the [`dataloaderIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/dataloader/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.dataloaderIntegration()],\n * });\n * ```\n */\nexport const dataloaderIntegration = defineIntegration(_dataloaderIntegration);\n"],"names":["generateInstrumentOnce","DataloaderInstrumentation","isOrchestrionInjected","dataloaderChannelIntegration","defineIntegration"],"mappings":";;;;;;;AAMA,MAAM,gBAAA,GAAmB,YAAA;AAElB,MAAM,uBAAuBA,+BAAA,CAAuB,gBAAA,EAAkB,MAAM,IAAIC,2CAA2B;AAElH,MAAM,0BAA0B,MAAM;AACpC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AAKV,MAAA,IAAIC,mCAAsB,EAAG;AAC3B,QAAAC,wCAAA,GAA+B,SAAA,IAAY;AAAA,MAC7C,CAAA,MAAO;AACL,QAAA,oBAAA,EAAqB;AAAA,MACvB;AAAA,IACF;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,qBAAA,GAAwBC,uBAAkB,sBAAsB;;;;;"}
@@ -10,8 +10,10 @@ const isPromise = (value) => {
10
10
  return typeof value?.then === "function";
11
11
  };
12
12
  function addSpanSource(span, loc, start, end) {
13
- const source = getSourceFromLocation(loc, start, end);
14
- span.setAttribute(AttributeNames.AttributeNames.SOURCE, source);
13
+ if (core.getClient()?.getDataCollectionOptions().graphQL.document === true) {
14
+ const source = getSourceFromLocation(loc, start, end);
15
+ span.setAttribute(AttributeNames.AttributeNames.SOURCE, source);
16
+ }
15
17
  }
16
18
  function createFieldIfNotExists(contextValue, info, path) {
17
19
  let field = getField(contextValue, path);
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/graphql/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-graphql\n * - Upstream version: @opentelemetry/instrumentation-graphql@0.66.0\n * - Types from `graphql` package inlined as simplified interfaces\n * - Minor TypeScript strictness adjustments\n * - Span lifecycle migrated from the OpenTelemetry tracer to the @sentry/core span API\n */\n\nimport type {\n DocumentNode,\n GraphQLFieldResolver,\n GraphQLObjectType,\n GraphQLOutputType,\n GraphQLResolveInfo,\n GraphQLType,\n GraphQLUnionType,\n Location,\n Maybe,\n Token,\n} from './graphql-types';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport { isObjectLike, SPAN_STATUS_ERROR, startInactiveSpan, withActiveSpan } from '@sentry/core';\nimport { AllowedOperationTypes, SpanNames, TokenKind } from './enum';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols';\nimport type { GraphQLField, GraphQLPath, ObjectWithGraphQLData, OtelPatched } from './internal-types';\nimport type { GraphQLInstrumentationParsedConfig } from './types';\n\nconst OPERATION_VALUES = Object.values(AllowedOperationTypes);\n\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isPromise.ts\nexport const isPromise = (value: any): value is Promise<unknown> => {\n return typeof value?.then === 'function';\n};\n\nexport function addSpanSource(span: Span, loc?: Location, start?: number, end?: number): void {\n const source = getSourceFromLocation(loc, start, end);\n span.setAttribute(AttributeNames.SOURCE, source);\n}\n\nfunction createFieldIfNotExists(\n contextValue: any,\n info: GraphQLResolveInfo,\n path: string[],\n): {\n field: GraphQLField;\n spanAdded: boolean;\n} {\n let field = getField(contextValue, path);\n if (field) {\n return { field, spanAdded: false };\n }\n\n const parentSpan = getParentFieldSpan(contextValue, path);\n\n field = {\n span: createResolverSpan(contextValue, info, path, parentSpan),\n };\n\n addField(contextValue, path, field);\n\n return { field, spanAdded: true };\n}\n\nfunction createResolverSpan(contextValue: any, info: GraphQLResolveInfo, path: string[], parentSpan?: Span): Span {\n const attributes: SpanAttributes = {\n [AttributeNames.FIELD_NAME]: info.fieldName,\n [AttributeNames.FIELD_PATH]: path.join('.'),\n [AttributeNames.FIELD_TYPE]: info.returnType.toString(),\n [AttributeNames.PARENT_NAME]: info.parentType.name,\n };\n\n const span = startInactiveSpan({\n name: `${SpanNames.RESOLVE} ${attributes[AttributeNames.FIELD_PATH]}`,\n attributes,\n parentSpan,\n });\n\n const document = contextValue[OTEL_GRAPHQL_DATA_SYMBOL].source;\n const fieldNode = info.fieldNodes.find(fieldNode => fieldNode.kind === 'Field');\n\n if (fieldNode) {\n addSpanSource(span, document.loc, fieldNode.loc?.start, fieldNode.loc?.end);\n }\n\n return span;\n}\n\nexport function endSpan(span: Span, error?: Error): void {\n if (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: error.message });\n }\n span.end();\n}\n\nexport function getOperation(document: DocumentNode, operationName?: Maybe<string>): DefinitionNodeLike | undefined {\n if (!document || !Array.isArray(document.definitions)) {\n return undefined;\n }\n\n if (operationName) {\n return document.definitions\n .filter(definition => OPERATION_VALUES.indexOf(definition?.operation) !== -1)\n .find(definition => operationName === definition?.name?.value);\n } else {\n return document.definitions.find(definition => OPERATION_VALUES.indexOf(definition?.operation) !== -1);\n }\n}\n\ntype DefinitionNodeLike = DocumentNode['definitions'][number];\n\nfunction addField(contextValue: any, path: string[], field: GraphQLField) {\n return (contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')] = field);\n}\n\nfunction getField(contextValue: any, path: string[]): GraphQLField {\n return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')];\n}\n\nfunction getParentFieldSpan(contextValue: any, path: string[]): Span {\n for (let i = path.length - 1; i > 0; i--) {\n const field = getField(contextValue, path.slice(0, i));\n\n if (field) {\n return field.span;\n }\n }\n\n return getRootSpan(contextValue);\n}\n\nfunction getRootSpan(contextValue: any): Span {\n return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].span;\n}\n\nfunction pathToArray(path: GraphQLPath): string[] {\n const flattened: string[] = [];\n let curr: GraphQLPath | undefined = path;\n while (curr) {\n flattened.push(String(curr.key));\n curr = curr.prev;\n }\n return flattened.reverse();\n}\n\nfunction repeatBreak(i: number): string {\n return repeatChar('\\n', i);\n}\n\nfunction repeatSpace(i: number): string {\n return repeatChar(' ', i);\n}\n\nfunction repeatChar(char: string, to: number): string {\n let text = '';\n for (let i = 0; i < to; i++) {\n text += char;\n }\n return text;\n}\n\nconst KindsToBeRemoved: string[] = [TokenKind.FLOAT, TokenKind.STRING, TokenKind.INT, TokenKind.BLOCK_STRING];\n\nexport function getSourceFromLocation(loc?: Location, inputStart?: number, inputEnd?: number): string {\n let source = '';\n\n if (loc?.startToken) {\n const start = typeof inputStart === 'number' ? inputStart : loc.start;\n const end = typeof inputEnd === 'number' ? inputEnd : loc.end;\n\n let next: Token | null = loc.startToken.next;\n let previousLine: number | undefined = 1;\n while (next) {\n if (next.start < start) {\n next = next.next;\n previousLine = next?.line;\n continue;\n }\n if (next.end > end) {\n next = next.next;\n previousLine = next?.line;\n continue;\n }\n let value = next.value || next.kind;\n let space = '';\n if (KindsToBeRemoved.indexOf(next.kind) >= 0) {\n value = '*';\n }\n if (next.kind === TokenKind.STRING) {\n value = `\"${value}\"`;\n }\n if (next.kind === TokenKind.EOF) {\n value = '';\n }\n if (next.line > previousLine!) {\n source += repeatBreak(next.line - previousLine!);\n previousLine = next.line;\n space = repeatSpace(next.column - 1);\n } else {\n if (next.line === next.prev?.line) {\n space = repeatSpace(next.start - (next.prev?.end || 0));\n }\n }\n source += space + value;\n if (next) {\n next = next.next!;\n }\n }\n }\n\n return source;\n}\n\nexport function wrapFields(\n type: Maybe<GraphQLObjectType & OtelPatched>,\n getConfig: () => GraphQLInstrumentationParsedConfig,\n): void {\n if (!type || (type as any)[OTEL_PATCHED_SYMBOL]) {\n return;\n }\n const fields = type.getFields();\n\n (type as any)[OTEL_PATCHED_SYMBOL] = true;\n\n Object.keys(fields).forEach(key => {\n const field = fields[key];\n\n if (!field) {\n return;\n }\n\n if (field.resolve) {\n // The shared structural types narrow the resolver context to `ObjectWithGraphQLData`; cast back\n // to the field's own resolver type (behavior is unchanged — this is a type-only adjustment).\n field.resolve = wrapFieldResolver(getConfig, field.resolve) as GraphQLFieldResolver;\n }\n\n if (field.type) {\n const unwrappedTypes = unwrapType(field.type);\n for (const unwrappedType of unwrappedTypes) {\n wrapFields(unwrappedType as any, getConfig);\n }\n }\n });\n}\n\nfunction unwrapType(type: GraphQLOutputType): readonly GraphQLObjectType[] {\n // unwrap wrapping types (non-nullable and list types)\n if ('ofType' in type) {\n // The structural index signature widens `ofType` to `unknown`, so narrow it back explicitly.\n return unwrapType(type.ofType as GraphQLOutputType);\n }\n\n // unwrap union types\n if (isGraphQLUnionType(type)) {\n return type.getTypes();\n }\n\n // return object types\n if (isGraphQLObjectType(type)) {\n return [type];\n }\n\n return [];\n}\n\nfunction isGraphQLUnionType(type: GraphQLType): type is GraphQLUnionType {\n return 'getTypes' in type && typeof type.getTypes === 'function';\n}\n\nfunction isGraphQLObjectType(type: GraphQLType): type is GraphQLObjectType {\n return 'getFields' in type && typeof type.getFields === 'function';\n}\n\nconst handleResolveSpanError = (resolveSpan: Span, err: any, shouldEndSpan: boolean) => {\n if (!shouldEndSpan) {\n return;\n }\n resolveSpan.setStatus({\n code: SPAN_STATUS_ERROR,\n message: err.message,\n });\n resolveSpan.end();\n};\n\nconst handleResolveSpanSuccess = (resolveSpan: Span, shouldEndSpan: boolean) => {\n if (!shouldEndSpan) {\n return;\n }\n resolveSpan.end();\n};\n\nexport function wrapFieldResolver<TSource = any, TContext = any, TArgs = any>(\n getConfig: () => GraphQLInstrumentationParsedConfig,\n fieldResolver: Maybe<GraphQLFieldResolver<TSource, TContext, TArgs> & OtelPatched>,\n isDefaultResolver = false,\n): GraphQLFieldResolver<TSource, TContext & ObjectWithGraphQLData, TArgs> & OtelPatched {\n if ((wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] || typeof fieldResolver !== 'function') {\n return fieldResolver!;\n }\n\n function wrappedFieldResolver(\n this: GraphQLFieldResolver<TSource, TContext, TArgs>,\n source: TSource,\n args: TArgs,\n contextValue: TContext & ObjectWithGraphQLData,\n info: GraphQLResolveInfo,\n ) {\n if (!fieldResolver) {\n return undefined;\n }\n const config = getConfig();\n\n // follows what graphql is doing to decide if this is a trivial resolver\n // for which we don't need to create a resolve span\n if (\n config.ignoreTrivialResolveSpans &&\n isDefaultResolver &&\n (isObjectLike(source) || typeof source === 'function')\n ) {\n const property = (source as any)[info.fieldName];\n // a function execution is not trivial and should be recorder.\n // property which is not a function is just a value and we don't want a \"resolve\" span for it\n if (typeof property !== 'function') {\n return fieldResolver.call(this, source, args, contextValue, info);\n }\n }\n\n if (!contextValue[OTEL_GRAPHQL_DATA_SYMBOL]) {\n return fieldResolver.call(this, source, args, contextValue, info);\n }\n const path = pathToArray(info?.path);\n\n const { field, spanAdded } = createFieldIfNotExists(contextValue, info, path);\n const span = field.span;\n const shouldEndSpan = spanAdded;\n\n return withActiveSpan(span, () => {\n try {\n const res = fieldResolver.call(this, source, args, contextValue, info);\n if (isPromise(res)) {\n return res.then(\n (r: any) => {\n handleResolveSpanSuccess(span, shouldEndSpan);\n return r;\n },\n (err: Error) => {\n handleResolveSpanError(span, err, shouldEndSpan);\n throw err;\n },\n );\n } else {\n handleResolveSpanSuccess(span, shouldEndSpan);\n return res;\n }\n } catch (err: any) {\n handleResolveSpanError(span, err, shouldEndSpan);\n throw err;\n }\n });\n }\n\n (wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] = true;\n\n return wrappedFieldResolver;\n}\n"],"names":["AllowedOperationTypes","AttributeNames","startInactiveSpan","SpanNames","OTEL_GRAPHQL_DATA_SYMBOL","fieldNode","SPAN_STATUS_ERROR","TokenKind","OTEL_PATCHED_SYMBOL","isObjectLike","withActiveSpan"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/graphql/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-graphql\n * - Upstream version: @opentelemetry/instrumentation-graphql@0.66.0\n * - Types from `graphql` package inlined as simplified interfaces\n * - Minor TypeScript strictness adjustments\n * - Span lifecycle migrated from the OpenTelemetry tracer to the @sentry/core span API\n */\n\nimport type {\n DocumentNode,\n GraphQLFieldResolver,\n GraphQLObjectType,\n GraphQLOutputType,\n GraphQLResolveInfo,\n GraphQLType,\n GraphQLUnionType,\n Location,\n Maybe,\n Token,\n} from './graphql-types';\nimport type { Span, SpanAttributes } from '@sentry/core';\nimport { getClient, isObjectLike, SPAN_STATUS_ERROR, startInactiveSpan, withActiveSpan } from '@sentry/core';\nimport { AllowedOperationTypes, SpanNames, TokenKind } from './enum';\nimport { AttributeNames } from './enums/AttributeNames';\nimport { OTEL_GRAPHQL_DATA_SYMBOL, OTEL_PATCHED_SYMBOL } from './symbols';\nimport type { GraphQLField, GraphQLPath, ObjectWithGraphQLData, OtelPatched } from './internal-types';\nimport type { GraphQLInstrumentationParsedConfig } from './types';\n\nconst OPERATION_VALUES = Object.values(AllowedOperationTypes);\n\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/isPromise.ts\nexport const isPromise = (value: any): value is Promise<unknown> => {\n return typeof value?.then === 'function';\n};\n\nexport function addSpanSource(span: Span, loc?: Location, start?: number, end?: number): void {\n if (getClient()?.getDataCollectionOptions().graphQL.document === true) {\n const source = getSourceFromLocation(loc, start, end);\n span.setAttribute(AttributeNames.SOURCE, source);\n }\n}\n\nfunction createFieldIfNotExists(\n contextValue: any,\n info: GraphQLResolveInfo,\n path: string[],\n): {\n field: GraphQLField;\n spanAdded: boolean;\n} {\n let field = getField(contextValue, path);\n if (field) {\n return { field, spanAdded: false };\n }\n\n const parentSpan = getParentFieldSpan(contextValue, path);\n\n field = {\n span: createResolverSpan(contextValue, info, path, parentSpan),\n };\n\n addField(contextValue, path, field);\n\n return { field, spanAdded: true };\n}\n\nfunction createResolverSpan(contextValue: any, info: GraphQLResolveInfo, path: string[], parentSpan?: Span): Span {\n const attributes: SpanAttributes = {\n [AttributeNames.FIELD_NAME]: info.fieldName,\n [AttributeNames.FIELD_PATH]: path.join('.'),\n [AttributeNames.FIELD_TYPE]: info.returnType.toString(),\n [AttributeNames.PARENT_NAME]: info.parentType.name,\n };\n\n const span = startInactiveSpan({\n name: `${SpanNames.RESOLVE} ${attributes[AttributeNames.FIELD_PATH]}`,\n attributes,\n parentSpan,\n });\n\n const document = contextValue[OTEL_GRAPHQL_DATA_SYMBOL].source;\n const fieldNode = info.fieldNodes.find(fieldNode => fieldNode.kind === 'Field');\n\n if (fieldNode) {\n addSpanSource(span, document.loc, fieldNode.loc?.start, fieldNode.loc?.end);\n }\n\n return span;\n}\n\nexport function endSpan(span: Span, error?: Error): void {\n if (error) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: error.message });\n }\n span.end();\n}\n\nexport function getOperation(document: DocumentNode, operationName?: Maybe<string>): DefinitionNodeLike | undefined {\n if (!document || !Array.isArray(document.definitions)) {\n return undefined;\n }\n\n if (operationName) {\n return document.definitions\n .filter(definition => OPERATION_VALUES.indexOf(definition?.operation) !== -1)\n .find(definition => operationName === definition?.name?.value);\n } else {\n return document.definitions.find(definition => OPERATION_VALUES.indexOf(definition?.operation) !== -1);\n }\n}\n\ntype DefinitionNodeLike = DocumentNode['definitions'][number];\n\nfunction addField(contextValue: any, path: string[], field: GraphQLField) {\n return (contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')] = field);\n}\n\nfunction getField(contextValue: any, path: string[]): GraphQLField {\n return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].fields[path.join('.')];\n}\n\nfunction getParentFieldSpan(contextValue: any, path: string[]): Span {\n for (let i = path.length - 1; i > 0; i--) {\n const field = getField(contextValue, path.slice(0, i));\n\n if (field) {\n return field.span;\n }\n }\n\n return getRootSpan(contextValue);\n}\n\nfunction getRootSpan(contextValue: any): Span {\n return contextValue[OTEL_GRAPHQL_DATA_SYMBOL].span;\n}\n\nfunction pathToArray(path: GraphQLPath): string[] {\n const flattened: string[] = [];\n let curr: GraphQLPath | undefined = path;\n while (curr) {\n flattened.push(String(curr.key));\n curr = curr.prev;\n }\n return flattened.reverse();\n}\n\nfunction repeatBreak(i: number): string {\n return repeatChar('\\n', i);\n}\n\nfunction repeatSpace(i: number): string {\n return repeatChar(' ', i);\n}\n\nfunction repeatChar(char: string, to: number): string {\n let text = '';\n for (let i = 0; i < to; i++) {\n text += char;\n }\n return text;\n}\n\nconst KindsToBeRemoved: string[] = [TokenKind.FLOAT, TokenKind.STRING, TokenKind.INT, TokenKind.BLOCK_STRING];\n\nexport function getSourceFromLocation(loc?: Location, inputStart?: number, inputEnd?: number): string {\n let source = '';\n\n if (loc?.startToken) {\n const start = typeof inputStart === 'number' ? inputStart : loc.start;\n const end = typeof inputEnd === 'number' ? inputEnd : loc.end;\n\n let next: Token | null = loc.startToken.next;\n let previousLine: number | undefined = 1;\n while (next) {\n if (next.start < start) {\n next = next.next;\n previousLine = next?.line;\n continue;\n }\n if (next.end > end) {\n next = next.next;\n previousLine = next?.line;\n continue;\n }\n let value = next.value || next.kind;\n let space = '';\n if (KindsToBeRemoved.indexOf(next.kind) >= 0) {\n value = '*';\n }\n if (next.kind === TokenKind.STRING) {\n value = `\"${value}\"`;\n }\n if (next.kind === TokenKind.EOF) {\n value = '';\n }\n if (next.line > previousLine!) {\n source += repeatBreak(next.line - previousLine!);\n previousLine = next.line;\n space = repeatSpace(next.column - 1);\n } else {\n if (next.line === next.prev?.line) {\n space = repeatSpace(next.start - (next.prev?.end || 0));\n }\n }\n source += space + value;\n if (next) {\n next = next.next!;\n }\n }\n }\n\n return source;\n}\n\nexport function wrapFields(\n type: Maybe<GraphQLObjectType & OtelPatched>,\n getConfig: () => GraphQLInstrumentationParsedConfig,\n): void {\n if (!type || (type as any)[OTEL_PATCHED_SYMBOL]) {\n return;\n }\n const fields = type.getFields();\n\n (type as any)[OTEL_PATCHED_SYMBOL] = true;\n\n Object.keys(fields).forEach(key => {\n const field = fields[key];\n\n if (!field) {\n return;\n }\n\n if (field.resolve) {\n // The shared structural types narrow the resolver context to `ObjectWithGraphQLData`; cast back\n // to the field's own resolver type (behavior is unchanged — this is a type-only adjustment).\n field.resolve = wrapFieldResolver(getConfig, field.resolve) as GraphQLFieldResolver;\n }\n\n if (field.type) {\n const unwrappedTypes = unwrapType(field.type);\n for (const unwrappedType of unwrappedTypes) {\n wrapFields(unwrappedType as any, getConfig);\n }\n }\n });\n}\n\nfunction unwrapType(type: GraphQLOutputType): readonly GraphQLObjectType[] {\n // unwrap wrapping types (non-nullable and list types)\n if ('ofType' in type) {\n // The structural index signature widens `ofType` to `unknown`, so narrow it back explicitly.\n return unwrapType(type.ofType as GraphQLOutputType);\n }\n\n // unwrap union types\n if (isGraphQLUnionType(type)) {\n return type.getTypes();\n }\n\n // return object types\n if (isGraphQLObjectType(type)) {\n return [type];\n }\n\n return [];\n}\n\nfunction isGraphQLUnionType(type: GraphQLType): type is GraphQLUnionType {\n return 'getTypes' in type && typeof type.getTypes === 'function';\n}\n\nfunction isGraphQLObjectType(type: GraphQLType): type is GraphQLObjectType {\n return 'getFields' in type && typeof type.getFields === 'function';\n}\n\nconst handleResolveSpanError = (resolveSpan: Span, err: any, shouldEndSpan: boolean) => {\n if (!shouldEndSpan) {\n return;\n }\n resolveSpan.setStatus({\n code: SPAN_STATUS_ERROR,\n message: err.message,\n });\n resolveSpan.end();\n};\n\nconst handleResolveSpanSuccess = (resolveSpan: Span, shouldEndSpan: boolean) => {\n if (!shouldEndSpan) {\n return;\n }\n resolveSpan.end();\n};\n\nexport function wrapFieldResolver<TSource = any, TContext = any, TArgs = any>(\n getConfig: () => GraphQLInstrumentationParsedConfig,\n fieldResolver: Maybe<GraphQLFieldResolver<TSource, TContext, TArgs> & OtelPatched>,\n isDefaultResolver = false,\n): GraphQLFieldResolver<TSource, TContext & ObjectWithGraphQLData, TArgs> & OtelPatched {\n if ((wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] || typeof fieldResolver !== 'function') {\n return fieldResolver!;\n }\n\n function wrappedFieldResolver(\n this: GraphQLFieldResolver<TSource, TContext, TArgs>,\n source: TSource,\n args: TArgs,\n contextValue: TContext & ObjectWithGraphQLData,\n info: GraphQLResolveInfo,\n ) {\n if (!fieldResolver) {\n return undefined;\n }\n const config = getConfig();\n\n // follows what graphql is doing to decide if this is a trivial resolver\n // for which we don't need to create a resolve span\n if (\n config.ignoreTrivialResolveSpans &&\n isDefaultResolver &&\n (isObjectLike(source) || typeof source === 'function')\n ) {\n const property = (source as any)[info.fieldName];\n // a function execution is not trivial and should be recorder.\n // property which is not a function is just a value and we don't want a \"resolve\" span for it\n if (typeof property !== 'function') {\n return fieldResolver.call(this, source, args, contextValue, info);\n }\n }\n\n if (!contextValue[OTEL_GRAPHQL_DATA_SYMBOL]) {\n return fieldResolver.call(this, source, args, contextValue, info);\n }\n const path = pathToArray(info?.path);\n\n const { field, spanAdded } = createFieldIfNotExists(contextValue, info, path);\n const span = field.span;\n const shouldEndSpan = spanAdded;\n\n return withActiveSpan(span, () => {\n try {\n const res = fieldResolver.call(this, source, args, contextValue, info);\n if (isPromise(res)) {\n return res.then(\n (r: any) => {\n handleResolveSpanSuccess(span, shouldEndSpan);\n return r;\n },\n (err: Error) => {\n handleResolveSpanError(span, err, shouldEndSpan);\n throw err;\n },\n );\n } else {\n handleResolveSpanSuccess(span, shouldEndSpan);\n return res;\n }\n } catch (err: any) {\n handleResolveSpanError(span, err, shouldEndSpan);\n throw err;\n }\n });\n }\n\n (wrappedFieldResolver as OtelPatched)[OTEL_PATCHED_SYMBOL] = true;\n\n return wrappedFieldResolver;\n}\n"],"names":["AllowedOperationTypes","getClient","AttributeNames","startInactiveSpan","SpanNames","OTEL_GRAPHQL_DATA_SYMBOL","fieldNode","SPAN_STATUS_ERROR","TokenKind","OTEL_PATCHED_SYMBOL","isObjectLike","withActiveSpan"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
+ const serverUtils = require('@sentry/server-utils');
3
4
  const http = require('../http.js');
4
5
  const index$g = require('./amqplib/index.js');
5
6
  const index$k = require('./anthropic-ai/index.js');
@@ -24,7 +25,6 @@ const index$a = require('./mysql2/index.js');
24
25
  const index$j = require('./openai/index.js');
25
26
  const index$b = require('./postgres/index.js');
26
27
  const postgresjs = require('./postgresjs.js');
27
- const index$n = require('./prisma/index.js');
28
28
  const index$d = require('./redis/index.js');
29
29
  const index$e = require('./tedious/index.js');
30
30
  const index$i = require('./vercelai/index.js');
@@ -42,7 +42,7 @@ function getAutoPerformanceIntegrations() {
42
42
  index$a.mysql2Integration(),
43
43
  index$d.redisIntegration(),
44
44
  index$b.postgresIntegration(),
45
- index$n.prismaIntegration(),
45
+ serverUtils.prismaIntegration(),
46
46
  index$2.hapiIntegration(),
47
47
  index$5.koaIntegration(),
48
48
  index.connectIntegration(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/integrations/tracing/index.ts"],"sourcesContent":["import type { Integration } from '@sentry/core';\nimport { instrumentSentryHttp } from '../http';\nimport { amqplibIntegration, instrumentAmqplib } from './amqplib';\nimport { anthropicAIIntegration, instrumentAnthropicAi } from './anthropic-ai';\nimport { connectIntegration, instrumentConnect } from './connect';\nimport { expressIntegration, instrumentExpress } from './express';\nimport { fastifyIntegration, instrumentFastifyV3 } from './fastify';\nimport { firebaseIntegration, instrumentFirebase } from './firebase';\nimport { genericPoolIntegration, instrumentGenericPool } from './genericPool';\nimport { googleGenAIIntegration, instrumentGoogleGenAI } from './google-genai';\nimport { graphqlIntegration, instrumentGraphql } from './graphql';\nimport { hapiIntegration, instrumentHapi } from './hapi';\nimport { honoIntegration, instrumentHono } from './hono';\nimport { instrumentKafka, kafkaIntegration } from './kafka';\nimport { instrumentKoa, koaIntegration } from './koa';\nimport { instrumentLangChain, langChainIntegration } from './langchain';\nimport { instrumentLangGraph, langGraphIntegration } from './langgraph';\nimport { instrumentLruMemoizer, lruMemoizerIntegration } from './lrumemoizer';\nimport { instrumentMongo, mongoIntegration } from './mongo';\nimport { instrumentMongoose, mongooseIntegration } from './mongoose';\nimport { instrumentMysql, mysqlIntegration } from './mysql';\nimport { instrumentMysql2, mysql2Integration } from './mysql2';\nimport { instrumentOpenAi, openAIIntegration } from './openai';\nimport { instrumentPostgres, postgresIntegration } from './postgres';\nimport { instrumentPostgresJs, postgresJsIntegration } from './postgresjs';\nimport { prismaIntegration } from './prisma';\nimport { instrumentRedis, redisIntegration } from './redis';\nimport { instrumentTedious, tediousIntegration } from './tedious';\nimport { instrumentVercelAi, vercelAIIntegration } from './vercelai';\n\n/**\n * With OTEL, all performance integrations will be added, as OTEL only initializes them when the patched package is actually required.\n */\nexport function getAutoPerformanceIntegrations(): Integration[] {\n return [\n expressIntegration(),\n fastifyIntegration(),\n graphqlIntegration(),\n // eslint-disable-next-line typescript/no-deprecated\n honoIntegration(),\n mongoIntegration(),\n mongooseIntegration(),\n mysqlIntegration(),\n mysql2Integration(),\n redisIntegration(),\n postgresIntegration(),\n prismaIntegration(),\n hapiIntegration(),\n koaIntegration(),\n connectIntegration(),\n tediousIntegration(),\n genericPoolIntegration(),\n kafkaIntegration(),\n amqplibIntegration(),\n lruMemoizerIntegration(),\n // AI providers\n // LangChain must come first to disable AI provider integrations before they instrument\n langChainIntegration(),\n langGraphIntegration(),\n vercelAIIntegration(),\n openAIIntegration(),\n anthropicAIIntegration(),\n googleGenAIIntegration(),\n postgresJsIntegration(),\n firebaseIntegration(),\n ];\n}\n\n/**\n * Get a list of methods to instrument OTEL, when preload instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getOpenTelemetryInstrumentationToPreload(): (((options?: any) => void) & { id: string })[] {\n return [\n instrumentSentryHttp,\n instrumentExpress,\n instrumentConnect,\n instrumentFastifyV3,\n instrumentHapi,\n instrumentHono,\n instrumentKafka,\n instrumentKoa,\n instrumentLruMemoizer,\n instrumentMongo,\n instrumentMongoose,\n instrumentMysql,\n instrumentMysql2,\n instrumentPostgres,\n instrumentHapi,\n instrumentGraphql,\n instrumentRedis,\n instrumentTedious,\n instrumentGenericPool,\n instrumentAmqplib,\n instrumentLangChain,\n instrumentVercelAi,\n instrumentOpenAi,\n instrumentPostgresJs,\n instrumentFirebase,\n instrumentAnthropicAi,\n instrumentGoogleGenAI,\n instrumentLangGraph,\n ];\n}\n"],"names":["expressIntegration","fastifyIntegration","graphqlIntegration","honoIntegration","mongoIntegration","mongooseIntegration","mysqlIntegration","mysql2Integration","redisIntegration","postgresIntegration","prismaIntegration","hapiIntegration","koaIntegration","connectIntegration","tediousIntegration","genericPoolIntegration","kafkaIntegration","amqplibIntegration","lruMemoizerIntegration","langChainIntegration","langGraphIntegration","vercelAIIntegration","openAIIntegration","anthropicAIIntegration","googleGenAIIntegration","postgresJsIntegration","firebaseIntegration","instrumentSentryHttp","instrumentExpress","instrumentConnect","instrumentFastifyV3","instrumentHapi","instrumentHono","instrumentKafka","instrumentKoa","instrumentLruMemoizer","instrumentMongo","instrumentMongoose","instrumentMysql","instrumentMysql2","instrumentPostgres","instrumentGraphql","instrumentRedis","instrumentTedious","instrumentGenericPool","instrumentAmqplib","instrumentLangChain","instrumentVercelAi","instrumentOpenAi","instrumentPostgresJs","instrumentFirebase","instrumentAnthropicAi","instrumentGoogleGenAI","instrumentLangGraph"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCO,SAAS,8BAAA,GAAgD;AAC9D,EAAA,OAAO;AAAA,IACLA,0BAAA,EAAmB;AAAA,IACnBC,0BAAA,EAAmB;AAAA,IACnBC,0BAAA,EAAmB;AAAA;AAAA,IAEnBC,uBAAA,EAAgB;AAAA,IAChBC,wBAAA,EAAiB;AAAA,IACjBC,2BAAA,EAAoB;AAAA,IACpBC,wBAAA,EAAiB;AAAA,IACjBC,yBAAA,EAAkB;AAAA,IAClBC,wBAAA,EAAiB;AAAA,IACjBC,2BAAA,EAAoB;AAAA,IACpBC,yBAAA,EAAkB;AAAA,IAClBC,uBAAA,EAAgB;AAAA,IAChBC,sBAAA,EAAe;AAAA,IACfC,wBAAA,EAAmB;AAAA,IACnBC,0BAAA,EAAmB;AAAA,IACnBC,8BAAA,EAAuB;AAAA,IACvBC,wBAAA,EAAiB;AAAA,IACjBC,0BAAA,EAAmB;AAAA,IACnBC,8BAAA,EAAuB;AAAA;AAAA;AAAA,IAGvBC,4BAAA,EAAqB;AAAA,IACrBC,4BAAA,EAAqB;AAAA,IACrBC,2BAAA,EAAoB;AAAA,IACpBC,yBAAA,EAAkB;AAAA,IAClBC,8BAAA,EAAuB;AAAA,IACvBC,8BAAA,EAAuB;AAAA,IACvBC,gCAAA,EAAsB;AAAA,IACtBC,4BAAA;AAAoB,GACtB;AACF;AAMO,SAAS,wCAAA,GAA2F;AACzG,EAAA,OAAO;AAAA,IACLC,yBAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,2BAAA;AAAA,IACAC,sBAAA;AAAA,IACAC,sBAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,qBAAA;AAAA,IACAC,6BAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,0BAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,wBAAA;AAAA,IACAC,0BAAA;AAAA,IACAT,sBAAA;AAAA,IACAU,yBAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,6BAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,2BAAA;AAAA,IACAC,0BAAA;AAAA,IACAC,wBAAA;AAAA,IACAC,+BAAA;AAAA,IACAC,2BAAA;AAAA,IACAC,6BAAA;AAAA,IACAC,6BAAA;AAAA,IACAC;AAAA,GACF;AACF;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/integrations/tracing/index.ts"],"sourcesContent":["import type { Integration } from '@sentry/core';\nimport { prismaIntegration } from '@sentry/server-utils';\nimport { instrumentSentryHttp } from '../http';\nimport { amqplibIntegration, instrumentAmqplib } from './amqplib';\nimport { anthropicAIIntegration, instrumentAnthropicAi } from './anthropic-ai';\nimport { connectIntegration, instrumentConnect } from './connect';\nimport { expressIntegration, instrumentExpress } from './express';\nimport { fastifyIntegration, instrumentFastifyV3 } from './fastify';\nimport { firebaseIntegration, instrumentFirebase } from './firebase';\nimport { genericPoolIntegration, instrumentGenericPool } from './genericPool';\nimport { googleGenAIIntegration, instrumentGoogleGenAI } from './google-genai';\nimport { graphqlIntegration, instrumentGraphql } from './graphql';\nimport { hapiIntegration, instrumentHapi } from './hapi';\nimport { honoIntegration, instrumentHono } from './hono';\nimport { instrumentKafka, kafkaIntegration } from './kafka';\nimport { instrumentKoa, koaIntegration } from './koa';\nimport { instrumentLangChain, langChainIntegration } from './langchain';\nimport { instrumentLangGraph, langGraphIntegration } from './langgraph';\nimport { instrumentLruMemoizer, lruMemoizerIntegration } from './lrumemoizer';\nimport { instrumentMongo, mongoIntegration } from './mongo';\nimport { instrumentMongoose, mongooseIntegration } from './mongoose';\nimport { instrumentMysql, mysqlIntegration } from './mysql';\nimport { instrumentMysql2, mysql2Integration } from './mysql2';\nimport { instrumentOpenAi, openAIIntegration } from './openai';\nimport { instrumentPostgres, postgresIntegration } from './postgres';\nimport { instrumentPostgresJs, postgresJsIntegration } from './postgresjs';\nimport { instrumentRedis, redisIntegration } from './redis';\nimport { instrumentTedious, tediousIntegration } from './tedious';\nimport { instrumentVercelAi, vercelAIIntegration } from './vercelai';\n\n/**\n * With OTEL, all performance integrations will be added, as OTEL only initializes them when the patched package is actually required.\n */\nexport function getAutoPerformanceIntegrations(): Integration[] {\n return [\n expressIntegration(),\n fastifyIntegration(),\n graphqlIntegration(),\n // eslint-disable-next-line typescript/no-deprecated\n honoIntegration(),\n mongoIntegration(),\n mongooseIntegration(),\n mysqlIntegration(),\n mysql2Integration(),\n redisIntegration(),\n postgresIntegration(),\n prismaIntegration(),\n hapiIntegration(),\n koaIntegration(),\n connectIntegration(),\n tediousIntegration(),\n genericPoolIntegration(),\n kafkaIntegration(),\n amqplibIntegration(),\n lruMemoizerIntegration(),\n // AI providers\n // LangChain must come first to disable AI provider integrations before they instrument\n langChainIntegration(),\n langGraphIntegration(),\n vercelAIIntegration(),\n openAIIntegration(),\n anthropicAIIntegration(),\n googleGenAIIntegration(),\n postgresJsIntegration(),\n firebaseIntegration(),\n ];\n}\n\n/**\n * Get a list of methods to instrument OTEL, when preload instrumentation.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getOpenTelemetryInstrumentationToPreload(): (((options?: any) => void) & { id: string })[] {\n return [\n instrumentSentryHttp,\n instrumentExpress,\n instrumentConnect,\n instrumentFastifyV3,\n instrumentHapi,\n instrumentHono,\n instrumentKafka,\n instrumentKoa,\n instrumentLruMemoizer,\n instrumentMongo,\n instrumentMongoose,\n instrumentMysql,\n instrumentMysql2,\n instrumentPostgres,\n instrumentHapi,\n instrumentGraphql,\n instrumentRedis,\n instrumentTedious,\n instrumentGenericPool,\n instrumentAmqplib,\n instrumentLangChain,\n instrumentVercelAi,\n instrumentOpenAi,\n instrumentPostgresJs,\n instrumentFirebase,\n instrumentAnthropicAi,\n instrumentGoogleGenAI,\n instrumentLangGraph,\n ];\n}\n"],"names":["expressIntegration","fastifyIntegration","graphqlIntegration","honoIntegration","mongoIntegration","mongooseIntegration","mysqlIntegration","mysql2Integration","redisIntegration","postgresIntegration","prismaIntegration","hapiIntegration","koaIntegration","connectIntegration","tediousIntegration","genericPoolIntegration","kafkaIntegration","amqplibIntegration","lruMemoizerIntegration","langChainIntegration","langGraphIntegration","vercelAIIntegration","openAIIntegration","anthropicAIIntegration","googleGenAIIntegration","postgresJsIntegration","firebaseIntegration","instrumentSentryHttp","instrumentExpress","instrumentConnect","instrumentFastifyV3","instrumentHapi","instrumentHono","instrumentKafka","instrumentKoa","instrumentLruMemoizer","instrumentMongo","instrumentMongoose","instrumentMysql","instrumentMysql2","instrumentPostgres","instrumentGraphql","instrumentRedis","instrumentTedious","instrumentGenericPool","instrumentAmqplib","instrumentLangChain","instrumentVercelAi","instrumentOpenAi","instrumentPostgresJs","instrumentFirebase","instrumentAnthropicAi","instrumentGoogleGenAI","instrumentLangGraph"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCO,SAAS,8BAAA,GAAgD;AAC9D,EAAA,OAAO;AAAA,IACLA,0BAAA,EAAmB;AAAA,IACnBC,0BAAA,EAAmB;AAAA,IACnBC,0BAAA,EAAmB;AAAA;AAAA,IAEnBC,uBAAA,EAAgB;AAAA,IAChBC,wBAAA,EAAiB;AAAA,IACjBC,2BAAA,EAAoB;AAAA,IACpBC,wBAAA,EAAiB;AAAA,IACjBC,yBAAA,EAAkB;AAAA,IAClBC,wBAAA,EAAiB;AAAA,IACjBC,2BAAA,EAAoB;AAAA,IACpBC,6BAAA,EAAkB;AAAA,IAClBC,uBAAA,EAAgB;AAAA,IAChBC,sBAAA,EAAe;AAAA,IACfC,wBAAA,EAAmB;AAAA,IACnBC,0BAAA,EAAmB;AAAA,IACnBC,8BAAA,EAAuB;AAAA,IACvBC,wBAAA,EAAiB;AAAA,IACjBC,0BAAA,EAAmB;AAAA,IACnBC,8BAAA,EAAuB;AAAA;AAAA;AAAA,IAGvBC,4BAAA,EAAqB;AAAA,IACrBC,4BAAA,EAAqB;AAAA,IACrBC,2BAAA,EAAoB;AAAA,IACpBC,yBAAA,EAAkB;AAAA,IAClBC,8BAAA,EAAuB;AAAA,IACvBC,8BAAA,EAAuB;AAAA,IACvBC,gCAAA,EAAsB;AAAA,IACtBC,4BAAA;AAAoB,GACtB;AACF;AAMO,SAAS,wCAAA,GAA2F;AACzG,EAAA,OAAO;AAAA,IACLC,yBAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,2BAAA;AAAA,IACAC,sBAAA;AAAA,IACAC,sBAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,qBAAA;AAAA,IACAC,6BAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,0BAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,wBAAA;AAAA,IACAC,0BAAA;AAAA,IACAT,sBAAA;AAAA,IACAU,yBAAA;AAAA,IACAC,uBAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,6BAAA;AAAA,IACAC,yBAAA;AAAA,IACAC,2BAAA;AAAA,IACAC,0BAAA;AAAA,IACAC,wBAAA;AAAA,IACAC,+BAAA;AAAA,IACAC,2BAAA;AAAA,IACAC,6BAAA;AAAA,IACAC,6BAAA;AAAA,IACAC;AAAA,GACF;AACF;;;;;"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
3
3
  const instrumentation = require('./vendored/instrumentation.js');
4
4
  const core = require('@sentry/core');
5
5
  const nodeCore = require('@sentry/node-core');
6
+ const orchestrion = require('@sentry/server-utils/orchestrion');
6
7
 
7
8
  const INTEGRATION_NAME = "Knex";
8
9
  const instrumentKnex = nodeCore.generateInstrumentOnce(INTEGRATION_NAME, () => new instrumentation.KnexInstrumentation());
@@ -10,7 +11,11 @@ const _knexIntegration = (() => {
10
11
  return {
11
12
  name: INTEGRATION_NAME,
12
13
  setupOnce() {
13
- instrumentKnex();
14
+ if (orchestrion.isOrchestrionInjected()) {
15
+ orchestrion.knexChannelIntegration().setupOnce?.();
16
+ } else {
17
+ instrumentKnex();
18
+ }
14
19
  }
15
20
  };
16
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/knex/index.ts"],"sourcesContent":["import { KnexInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Knex' as const;\n\nexport const instrumentKnex = generateInstrumentOnce(INTEGRATION_NAME, () => new KnexInstrumentation());\n\nconst _knexIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentKnex();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Knex integration\n *\n * Capture tracing data for [Knex](https://knexjs.org/).\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.knexIntegration()],\n * });\n * ```\n */\nexport const knexIntegration = defineIntegration(_knexIntegration);\n"],"names":["generateInstrumentOnce","KnexInstrumentation","defineIntegration"],"mappings":";;;;;;AAKA,MAAM,gBAAA,GAAmB,MAAA;AAElB,MAAM,iBAAiBA,+BAAA,CAAuB,gBAAA,EAAkB,MAAM,IAAIC,qCAAqB;AAEtG,MAAM,oBAAoB,MAAM;AAC9B,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,cAAA,EAAe;AAAA,IACjB;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,eAAA,GAAkBC,uBAAkB,gBAAgB;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/knex/index.ts"],"sourcesContent":["import { KnexInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\nimport { isOrchestrionInjected, knexChannelIntegration } from '@sentry/server-utils/orchestrion';\n\nconst INTEGRATION_NAME = 'Knex' as const;\n\nexport const instrumentKnex = generateInstrumentOnce(INTEGRATION_NAME, () => new KnexInstrumentation());\n\nconst _knexIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n // Prefer the diagnostics-channel subscriber when orchestrion injected its channels; otherwise\n // fall back to the vendored OTel instrumentation. `isOrchestrionInjected()` is only reliable by\n // `setupOnce` (the runtime injection runs during `Sentry.init()`, after integrations are built).\n if (isOrchestrionInjected()) {\n knexChannelIntegration().setupOnce?.();\n } else {\n instrumentKnex();\n }\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Knex integration\n *\n * Capture tracing data for [Knex](https://knexjs.org/).\n *\n * @example\n * ```javascript\n * import * as Sentry from '@sentry/node';\n *\n * Sentry.init({\n * integrations: [Sentry.knexIntegration()],\n * });\n * ```\n */\nexport const knexIntegration = defineIntegration(_knexIntegration);\n"],"names":["generateInstrumentOnce","KnexInstrumentation","isOrchestrionInjected","knexChannelIntegration","defineIntegration"],"mappings":";;;;;;;AAMA,MAAM,gBAAA,GAAmB,MAAA;AAElB,MAAM,iBAAiBA,+BAAA,CAAuB,gBAAA,EAAkB,MAAM,IAAIC,qCAAqB;AAEtG,MAAM,oBAAoB,MAAM;AAC9B,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AAIV,MAAA,IAAIC,mCAAsB,EAAG;AAC3B,QAAAC,kCAAA,GAAyB,SAAA,IAAY;AAAA,MACvC,CAAA,MAAO;AACL,QAAA,cAAA,EAAe;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,eAAA,GAAkBC,uBAAkB,gBAAgB;;;;;"}
@@ -9,6 +9,7 @@ const getMiddlewareMetadata = (context, layer, isRouter, layerPath) => {
9
9
  return {
10
10
  attributes: {
11
11
  [AttributeNames.AttributeNames.KOA_NAME]: layerPath?.toString(),
12
+ // TODO(v11): remove, replaced by http.route
12
13
  [AttributeNames.AttributeNames.KOA_TYPE]: types.KoaLayerType.ROUTER,
13
14
  [attributes.HTTP_ROUTE]: layerPath?.toString()
14
15
  },
@@ -18,7 +19,9 @@ const getMiddlewareMetadata = (context, layer, isRouter, layerPath) => {
18
19
  return {
19
20
  attributes: {
20
21
  [AttributeNames.AttributeNames.KOA_NAME]: layer.name ?? "middleware",
21
- [AttributeNames.AttributeNames.KOA_TYPE]: types.KoaLayerType.MIDDLEWARE
22
+ // TODO(v11): remove, replaced by code.function.name
23
+ [AttributeNames.AttributeNames.KOA_TYPE]: types.KoaLayerType.MIDDLEWARE,
24
+ [attributes.CODE_FUNCTION_NAME]: layer.name ?? "middleware"
22
25
  },
23
26
  name: `middleware - ${layer.name}`
24
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/koa/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-koa\n * - Upstream version: @opentelemetry/instrumentation-koa@0.66.0\n */\n\nimport { KoaLayerType, type KoaInstrumentationConfig } from './types';\nimport type { KoaContext, KoaMiddleware } from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport type { Attributes } from '@opentelemetry/api';\nimport { HTTP_ROUTE } from '@sentry/conventions/attributes';\n\nexport const getMiddlewareMetadata = (\n context: KoaContext,\n layer: KoaMiddleware,\n isRouter: boolean,\n layerPath?: string | RegExp,\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (isRouter) {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layerPath?.toString(),\n [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER,\n [HTTP_ROUTE]: layerPath?.toString(),\n },\n name: context._matchedRouteName || `router - ${layerPath}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layer.name ?? 'middleware',\n [AttributeNames.KOA_TYPE]: KoaLayerType.MIDDLEWARE,\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nexport const isLayerIgnored = (type: KoaLayerType, config?: KoaInstrumentationConfig): boolean => {\n return !!(Array.isArray(config?.ignoreLayersType) && config?.ignoreLayersType?.includes(type));\n};\n"],"names":["AttributeNames","KoaLayerType","HTTP_ROUTE"],"mappings":";;;;;;AAeO,MAAM,qBAAA,GAAwB,CACnC,OAAA,EACA,KAAA,EACA,UACA,SAAA,KAIG;AACH,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACA,6BAAA,CAAe,QAAQ,GAAG,WAAW,QAAA,EAAS;AAAA,QAC/C,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa,MAAA;AAAA,QACxC,CAACC,qBAAU,GAAG,SAAA,EAAW,QAAA;AAAS,OACpC;AAAA,MACA,IAAA,EAAM,OAAA,CAAQ,iBAAA,IAAqB,CAAA,SAAA,EAAY,SAAS,CAAA;AAAA,KAC1D;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACF,6BAAA,CAAe,QAAQ,GAAG,MAAM,IAAA,IAAQ,YAAA;AAAA,QACzC,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa;AAAA,OAC1C;AAAA,MACA,IAAA,EAAM,CAAA,aAAA,EAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,KAClC;AAAA,EACF;AACF;AAQO,MAAM,cAAA,GAAiB,CAAC,IAAA,EAAoB,MAAA,KAA+C;AAChG,EAAA,OAAO,CAAC,EAAE,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,gBAAgB,CAAA,IAAK,MAAA,EAAQ,gBAAA,EAAkB,QAAA,CAAS,IAAI,CAAA,CAAA;AAC9F;;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../src/integrations/tracing/koa/vendored/utils.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-koa\n * - Upstream version: @opentelemetry/instrumentation-koa@0.66.0\n */\n\nimport { KoaLayerType, type KoaInstrumentationConfig } from './types';\nimport type { KoaContext, KoaMiddleware } from './internal-types';\nimport { AttributeNames } from './enums/AttributeNames';\nimport type { Attributes } from '@opentelemetry/api';\nimport { CODE_FUNCTION_NAME, HTTP_ROUTE } from '@sentry/conventions/attributes';\n\nexport const getMiddlewareMetadata = (\n context: KoaContext,\n layer: KoaMiddleware,\n isRouter: boolean,\n layerPath?: string | RegExp,\n): {\n attributes: Attributes;\n name: string;\n} => {\n if (isRouter) {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layerPath?.toString(), // TODO(v11): remove, replaced by http.route\n [AttributeNames.KOA_TYPE]: KoaLayerType.ROUTER,\n [HTTP_ROUTE]: layerPath?.toString(),\n },\n name: context._matchedRouteName || `router - ${layerPath}`,\n };\n } else {\n return {\n attributes: {\n [AttributeNames.KOA_NAME]: layer.name ?? 'middleware', // TODO(v11): remove, replaced by code.function.name\n [AttributeNames.KOA_TYPE]: KoaLayerType.MIDDLEWARE,\n [CODE_FUNCTION_NAME]: layer.name ?? 'middleware',\n },\n name: `middleware - ${layer.name}`,\n };\n }\n};\n\n/**\n * Check whether the given request is ignored by configuration\n * @param [list] List of ignore patterns\n * @param [onException] callback for doing something when an exception has\n * occurred\n */\nexport const isLayerIgnored = (type: KoaLayerType, config?: KoaInstrumentationConfig): boolean => {\n return !!(Array.isArray(config?.ignoreLayersType) && config?.ignoreLayersType?.includes(type));\n};\n"],"names":["AttributeNames","KoaLayerType","HTTP_ROUTE","CODE_FUNCTION_NAME"],"mappings":";;;;;;AAeO,MAAM,qBAAA,GAAwB,CACnC,OAAA,EACA,KAAA,EACA,UACA,SAAA,KAIG;AACH,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACA,6BAAA,CAAe,QAAQ,GAAG,WAAW,QAAA,EAAS;AAAA;AAAA,QAC/C,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa,MAAA;AAAA,QACxC,CAACC,qBAAU,GAAG,SAAA,EAAW,QAAA;AAAS,OACpC;AAAA,MACA,IAAA,EAAM,OAAA,CAAQ,iBAAA,IAAqB,CAAA,SAAA,EAAY,SAAS,CAAA;AAAA,KAC1D;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO;AAAA,MACL,UAAA,EAAY;AAAA,QACV,CAACF,6BAAA,CAAe,QAAQ,GAAG,MAAM,IAAA,IAAQ,YAAA;AAAA;AAAA,QACzC,CAACA,6BAAA,CAAe,QAAQ,GAAGC,kBAAA,CAAa,UAAA;AAAA,QACxC,CAACE,6BAAkB,GAAG,KAAA,CAAM,IAAA,IAAQ;AAAA,OACtC;AAAA,MACA,IAAA,EAAM,CAAA,aAAA,EAAgB,KAAA,CAAM,IAAI,CAAA;AAAA,KAClC;AAAA,EACF;AACF;AAQO,MAAM,cAAA,GAAiB,CAAC,IAAA,EAAoB,MAAA,KAA+C;AAChG,EAAA,OAAO,CAAC,EAAE,KAAA,CAAM,OAAA,CAAQ,MAAA,EAAQ,gBAAgB,CAAA,IAAK,MAAA,EAAQ,gBAAA,EAAkB,QAAA,CAAS,IAAI,CAAA,CAAA;AAC9F;;;;;"}
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
 
3
3
  const core = require('@sentry/core');
4
- const internalTypes = require('./internal-types.js');
5
4
  const utils = require('./utils.js');
5
+ const serverUtils = require('@sentry/server-utils');
6
6
 
7
7
  function getV3PatchOperation(operationName) {
8
8
  return (original) => {
@@ -15,7 +15,7 @@ function getV3PatchOperation(operationName) {
15
15
  return original.call(this, server, ns, ops, options, callback);
16
16
  }
17
17
  }
18
- const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, ops[0], operationName));
18
+ const span = serverUtils.startMongoSpan(utils.getV3SpanAttributes(ns, server, ops[0], operationName));
19
19
  const patchedCallback = utils.patchEnd(span, resultHandler);
20
20
  if (typeof options === "function") {
21
21
  return original.call(this, server, ns, ops, patchedCallback);
@@ -36,9 +36,8 @@ function getV3PatchCommand() {
36
36
  return original.call(this, server, ns, cmd, options, callback);
37
37
  }
38
38
  }
39
- const commandType = utils.getCommandType(cmd);
40
- const operationName = commandType === internalTypes.MongodbCommandType.UNKNOWN ? void 0 : commandType;
41
- const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cmd, operationName));
39
+ const operationName = serverUtils.getV3CommandOperation(cmd);
40
+ const span = serverUtils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cmd, operationName));
42
41
  const patchedCallback = utils.patchEnd(span, resultHandler);
43
42
  if (typeof options === "function") {
44
43
  return original.call(this, server, ns, cmd, patchedCallback);
@@ -58,7 +57,7 @@ function getV4PatchCommandCallback() {
58
57
  }
59
58
  let span = void 0;
60
59
  if (!utils.shouldSkipInstrumentation()) {
61
- span = utils.startMongoSpan(utils.getV4SpanAttributes(this, ns, cmd, commandType));
60
+ span = serverUtils.startMongoSpan(utils.getV4SpanAttributes(this, ns, cmd, commandType));
62
61
  }
63
62
  const patchedCallback = utils.patchEnd(span, resultHandler);
64
63
  return original.call(this, ns, cmd, options, patchedCallback);
@@ -76,7 +75,7 @@ function getV4PatchCommandPromise() {
76
75
  }
77
76
  let span = void 0;
78
77
  if (!utils.shouldSkipInstrumentation()) {
79
- span = utils.startMongoSpan(utils.getV4SpanAttributes(this, ns, cmd, commandType));
78
+ span = serverUtils.startMongoSpan(utils.getV4SpanAttributes(this, ns, cmd, commandType));
80
79
  }
81
80
  const patchedCallback = utils.patchEnd(span, resultHandler);
82
81
  const result = original.apply(this, args);
@@ -99,7 +98,7 @@ function getV3PatchFind() {
99
98
  return original.call(this, server, ns, cmd, cursorState, options, callback);
100
99
  }
101
100
  }
102
- const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cmd, "find"));
101
+ const span = serverUtils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cmd, "find"));
103
102
  const patchedCallback = utils.patchEnd(span, resultHandler);
104
103
  if (typeof options === "function") {
105
104
  return original.call(this, server, ns, cmd, cursorState, patchedCallback);
@@ -120,7 +119,7 @@ function getV3PatchCursor() {
120
119
  return original.call(this, server, ns, cursorState, batchSize, options, callback);
121
120
  }
122
121
  }
123
- const span = utils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cursorState.cmd, "getMore"));
122
+ const span = serverUtils.startMongoSpan(utils.getV3SpanAttributes(ns, server, cursorState.cmd, "getMore"));
124
123
  const patchedCallback = utils.patchEnd(span, resultHandler);
125
124
  if (typeof options === "function") {
126
125
  return original.call(this, server, ns, cursorState, batchSize, patchedCallback);
@@ -1 +1 @@
1
- {"version":3,"file":"patches.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/patches.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.0\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport { getActiveSpan, withActiveSpan } from '@sentry/core';\nimport type {\n CursorState,\n MongodbNamespace,\n MongoInternalCommand,\n MongoInternalTopology,\n V4Connection,\n V4ConnectionPool,\n WireProtocolInternal,\n} from './internal-types';\nimport { MongodbCommandType } from './internal-types';\nimport {\n getCommandType,\n getV3SpanAttributes,\n getV4SpanAttributes,\n patchEnd,\n shouldSkipInstrumentation,\n startMongoSpan,\n} from './utils';\n\n/** Creates spans for v3 common operations (insert/update/remove). */\nexport function getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n return (original: WireProtocolInternal[typeof operationName]) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof ops !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, options);\n } else {\n return original.call(this, server, ns, ops, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, ops[0] as any, operationName));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, patchedCallback);\n } else {\n return original.call(this, server, ns, ops, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v3 command operation. */\nexport function getV3PatchCommand() {\n return (original: WireProtocolInternal['command']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, options);\n } else {\n return original.call(this, server, ns, cmd, options, callback);\n }\n }\n\n const commandType = getCommandType(cmd);\n const operationName = commandType === MongodbCommandType.UNKNOWN ? undefined : commandType;\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cmd, operationName));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v4 (<6.4) callback-style command operation. */\nexport function getV4PatchCommandCallback() {\n return (original: V4Connection['commandCallback']) => {\n return function patchedV4ServerCommand(\n this: any,\n ns: MongodbNamespace,\n cmd: any,\n options: undefined | unknown,\n callback: any,\n ) {\n const resultHandler = callback;\n const commandType = Object.keys(cmd)[0];\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.call(this, ns, cmd, options, callback);\n }\n\n let span = undefined;\n if (!shouldSkipInstrumentation()) {\n span = startMongoSpan(getV4SpanAttributes(this, ns, cmd, commandType));\n }\n const patchedCallback = patchEnd(span, resultHandler);\n\n return original.call(this, ns, cmd, options, patchedCallback);\n };\n };\n}\n\n/** Creates spans for the v4 (>=6.4) promise-style command operation. */\nexport function getV4PatchCommandPromise() {\n return (original: V4Connection['commandPromise']) => {\n return function patchedV4ServerCommand(this: any, ...args: Parameters<V4Connection['commandPromise']>) {\n const [ns, cmd] = args;\n const commandType = Object.keys(cmd)[0];\n const resultHandler = () => undefined;\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.apply(this, args);\n }\n\n let span = undefined;\n if (!shouldSkipInstrumentation()) {\n span = startMongoSpan(getV4SpanAttributes(this, ns, cmd, commandType));\n }\n\n const patchedCallback = patchEnd(span, resultHandler);\n\n const result = original.apply(this, args);\n result.then(\n (res: any) => patchedCallback(null, res),\n (err: any) => patchedCallback(err),\n );\n\n return result;\n };\n };\n}\n\n/** Creates spans for the v3 find operation. */\nexport function getV3PatchFind() {\n return (original: WireProtocolInternal['query']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n cursorState: CursorState,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, options);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cmd, 'find'));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v3 getMore (cursor) operation. */\nexport function getV3PatchCursor() {\n return (original: WireProtocolInternal['getMore']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n batchSize: number,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, options);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore'));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, patchedCallback);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, patchedCallback);\n }\n };\n };\n}\n\n// This patch will become unnecessary once https://jira.mongodb.org/browse/NODE-5639 is done.\nexport function getV4ConnectionPoolCheckOut() {\n return (original: V4ConnectionPool['checkOut']) => {\n return function patchedCheckout(this: unknown, callback: (error: any, connection: any) => void) {\n // The pool runs the callback in a detached context, so re-activate the span that was\n // active when `checkOut` was called — otherwise the pooled operation finds no parent.\n const parentSpan = getActiveSpan();\n return original.call(this, function (this: unknown, ...args: [any, any]) {\n return withActiveSpan(parentSpan ?? null, () => callback.apply(this, args));\n });\n };\n };\n}\n"],"names":["shouldSkipInstrumentation","startMongoSpan","getV3SpanAttributes","patchEnd","getCommandType","MongodbCommandType","getV4SpanAttributes","getActiveSpan","withActiveSpan"],"mappings":"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"}
1
+ {"version":3,"file":"patches.js","sources":["../../../../../../src/integrations/tracing/mongo/vendored/patches.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-mongodb\n * - Upstream version: @opentelemetry/instrumentation-mongodb@0.71.0\n * - Refactored to use Sentry's span APIs instead of OpenTelemetry tracing APIs\n */\n\nimport { getActiveSpan, withActiveSpan } from '@sentry/core';\nimport type {\n CursorState,\n MongodbNamespace,\n MongoInternalCommand,\n MongoInternalTopology,\n V4Connection,\n V4ConnectionPool,\n WireProtocolInternal,\n} from './internal-types';\nimport {\n getV3CommandOperation,\n getV3SpanAttributes,\n getV4SpanAttributes,\n patchEnd,\n shouldSkipInstrumentation,\n startMongoSpan,\n} from './utils';\n\n/** Creates spans for v3 common operations (insert/update/remove). */\nexport function getV3PatchOperation(operationName: 'insert' | 'update' | 'remove') {\n return (original: WireProtocolInternal[typeof operationName]) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n ops: unknown[],\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof ops !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, options);\n } else {\n return original.call(this, server, ns, ops, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, ops[0] as any, operationName));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, ops, patchedCallback);\n } else {\n return original.call(this, server, ns, ops, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v3 command operation. */\nexport function getV3PatchCommand() {\n return (original: WireProtocolInternal['command']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, options);\n } else {\n return original.call(this, server, ns, cmd, options, callback);\n }\n }\n\n const operationName = getV3CommandOperation(cmd as unknown as Record<string, unknown>);\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cmd, operationName));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v4 (<6.4) callback-style command operation. */\nexport function getV4PatchCommandCallback() {\n return (original: V4Connection['commandCallback']) => {\n return function patchedV4ServerCommand(\n this: any,\n ns: MongodbNamespace,\n cmd: any,\n options: undefined | unknown,\n callback: any,\n ) {\n const resultHandler = callback;\n const commandType = Object.keys(cmd)[0];\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.call(this, ns, cmd, options, callback);\n }\n\n let span = undefined;\n if (!shouldSkipInstrumentation()) {\n span = startMongoSpan(getV4SpanAttributes(this, ns, cmd, commandType));\n }\n const patchedCallback = patchEnd(span, resultHandler);\n\n return original.call(this, ns, cmd, options, patchedCallback);\n };\n };\n}\n\n/** Creates spans for the v4 (>=6.4) promise-style command operation. */\nexport function getV4PatchCommandPromise() {\n return (original: V4Connection['commandPromise']) => {\n return function patchedV4ServerCommand(this: any, ...args: Parameters<V4Connection['commandPromise']>) {\n const [ns, cmd] = args;\n const commandType = Object.keys(cmd)[0];\n const resultHandler = () => undefined;\n\n if (typeof cmd !== 'object' || cmd.ismaster || cmd.hello) {\n return original.apply(this, args);\n }\n\n let span = undefined;\n if (!shouldSkipInstrumentation()) {\n span = startMongoSpan(getV4SpanAttributes(this, ns, cmd, commandType));\n }\n\n const patchedCallback = patchEnd(span, resultHandler);\n\n const result = original.apply(this, args);\n result.then(\n (res: any) => patchedCallback(null, res),\n (err: any) => patchedCallback(err),\n );\n\n return result;\n };\n };\n}\n\n/** Creates spans for the v3 find operation. */\nexport function getV3PatchFind() {\n return (original: WireProtocolInternal['query']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cmd: MongoInternalCommand,\n cursorState: CursorState,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function' || typeof cmd !== 'object') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, options);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cmd, 'find'));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cmd, cursorState, patchedCallback);\n } else {\n return original.call(this, server, ns, cmd, cursorState, options, patchedCallback);\n }\n };\n };\n}\n\n/** Creates spans for the v3 getMore (cursor) operation. */\nexport function getV3PatchCursor() {\n return (original: WireProtocolInternal['getMore']) => {\n return function patchedServerCommand(\n this: unknown,\n server: MongoInternalTopology,\n ns: string,\n cursorState: CursorState,\n batchSize: number,\n options: unknown | Function,\n callback?: Function,\n ) {\n const resultHandler = typeof options === 'function' ? options : callback;\n\n if (shouldSkipInstrumentation() || typeof resultHandler !== 'function') {\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, options);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, callback);\n }\n }\n\n const span = startMongoSpan(getV3SpanAttributes(ns, server, cursorState.cmd, 'getMore'));\n\n const patchedCallback = patchEnd(span, resultHandler);\n // handle when options is the callback to send the correct number of args\n if (typeof options === 'function') {\n return original.call(this, server, ns, cursorState, batchSize, patchedCallback);\n } else {\n return original.call(this, server, ns, cursorState, batchSize, options, patchedCallback);\n }\n };\n };\n}\n\n// This patch will become unnecessary once https://jira.mongodb.org/browse/NODE-5639 is done.\nexport function getV4ConnectionPoolCheckOut() {\n return (original: V4ConnectionPool['checkOut']) => {\n return function patchedCheckout(this: unknown, callback: (error: any, connection: any) => void) {\n // The pool runs the callback in a detached context, so re-activate the span that was\n // active when `checkOut` was called — otherwise the pooled operation finds no parent.\n const parentSpan = getActiveSpan();\n return original.call(this, function (this: unknown, ...args: [any, any]) {\n return withActiveSpan(parentSpan ?? null, () => callback.apply(this, args));\n });\n };\n };\n}\n"],"names":["shouldSkipInstrumentation","startMongoSpan","getV3SpanAttributes","patchEnd","getV3CommandOperation","getV4SpanAttributes","getActiveSpan","withActiveSpan"],"mappings":"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"}