@sentry/node 8.54.0 → 9.0.0-alpha.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 (282) hide show
  1. package/build/cjs/cron/common.js +1 -1
  2. package/build/cjs/cron/cron.js +1 -1
  3. package/build/cjs/cron/index.js +1 -1
  4. package/build/cjs/cron/node-cron.js +10 -11
  5. package/build/cjs/cron/node-cron.js.map +1 -1
  6. package/build/cjs/cron/node-schedule.js +2 -6
  7. package/build/cjs/cron/node-schedule.js.map +1 -1
  8. package/build/cjs/debug-build.js +1 -1
  9. package/build/cjs/index.js +3 -15
  10. package/build/cjs/index.js.map +1 -1
  11. package/build/cjs/integrations/anr/index.js +8 -13
  12. package/build/cjs/integrations/anr/index.js.map +1 -1
  13. package/build/cjs/integrations/childProcess.js +19 -24
  14. package/build/cjs/integrations/childProcess.js.map +1 -1
  15. package/build/cjs/integrations/console.js +1 -1
  16. package/build/cjs/integrations/context.js +16 -19
  17. package/build/cjs/integrations/context.js.map +1 -1
  18. package/build/cjs/integrations/contextlines.js +6 -10
  19. package/build/cjs/integrations/contextlines.js.map +1 -1
  20. package/build/cjs/integrations/fs.js +1 -1
  21. package/build/cjs/integrations/http/SentryHttpInstrumentation.js +99 -19
  22. package/build/cjs/integrations/http/SentryHttpInstrumentation.js.map +1 -1
  23. package/build/cjs/integrations/http/index.js +32 -46
  24. package/build/cjs/integrations/http/index.js.map +1 -1
  25. package/build/cjs/integrations/http/vendor/getRequestInfo.js +1 -1
  26. package/build/cjs/integrations/http/vendor/getRequestInfo.js.map +1 -1
  27. package/build/cjs/integrations/local-variables/common.js +1 -1
  28. package/build/cjs/integrations/local-variables/index.js +1 -1
  29. package/build/cjs/integrations/local-variables/local-variables-async.js +4 -8
  30. package/build/cjs/integrations/local-variables/local-variables-async.js.map +1 -1
  31. package/build/cjs/integrations/local-variables/local-variables-sync.js +18 -22
  32. package/build/cjs/integrations/local-variables/local-variables-sync.js.map +1 -1
  33. package/build/cjs/integrations/modules.js +2 -2
  34. package/build/cjs/integrations/modules.js.map +1 -1
  35. package/build/cjs/integrations/node-fetch.js +3 -7
  36. package/build/cjs/integrations/node-fetch.js.map +1 -1
  37. package/build/cjs/integrations/onuncaughtexception.js +1 -1
  38. package/build/cjs/integrations/onunhandledrejection.js +1 -1
  39. package/build/cjs/integrations/processSession.js +36 -0
  40. package/build/cjs/integrations/processSession.js.map +1 -0
  41. package/build/cjs/integrations/spotlight.js +2 -2
  42. package/build/cjs/integrations/spotlight.js.map +1 -1
  43. package/build/cjs/integrations/tracing/amqplib.js +1 -1
  44. package/build/cjs/integrations/tracing/connect.js +2 -2
  45. package/build/cjs/integrations/tracing/connect.js.map +1 -1
  46. package/build/cjs/integrations/tracing/dataloader.js +2 -6
  47. package/build/cjs/integrations/tracing/dataloader.js.map +1 -1
  48. package/build/cjs/integrations/tracing/express.js +4 -31
  49. package/build/cjs/integrations/tracing/express.js.map +1 -1
  50. package/build/cjs/integrations/tracing/fastify.js +3 -7
  51. package/build/cjs/integrations/tracing/fastify.js.map +1 -1
  52. package/build/cjs/integrations/tracing/genericPool.js +1 -1
  53. package/build/cjs/integrations/tracing/graphql.js +5 -5
  54. package/build/cjs/integrations/tracing/graphql.js.map +1 -1
  55. package/build/cjs/integrations/tracing/hapi/index.js +5 -9
  56. package/build/cjs/integrations/tracing/hapi/index.js.map +1 -1
  57. package/build/cjs/integrations/tracing/index.js +1 -6
  58. package/build/cjs/integrations/tracing/index.js.map +1 -1
  59. package/build/cjs/integrations/tracing/kafka.js +1 -1
  60. package/build/cjs/integrations/tracing/knex.js +2 -2
  61. package/build/cjs/integrations/tracing/knex.js.map +1 -1
  62. package/build/cjs/integrations/tracing/koa.js +4 -8
  63. package/build/cjs/integrations/tracing/koa.js.map +1 -1
  64. package/build/cjs/integrations/tracing/lrumemoizer.js +1 -1
  65. package/build/cjs/integrations/tracing/mongo.js +1 -1
  66. package/build/cjs/integrations/tracing/mongoose.js +1 -1
  67. package/build/cjs/integrations/tracing/mysql.js +1 -1
  68. package/build/cjs/integrations/tracing/mysql2.js +1 -1
  69. package/build/cjs/integrations/tracing/postgres.js +1 -1
  70. package/build/cjs/integrations/tracing/prisma.js +21 -67
  71. package/build/cjs/integrations/tracing/prisma.js.map +1 -1
  72. package/build/cjs/integrations/tracing/redis.js +4 -8
  73. package/build/cjs/integrations/tracing/redis.js.map +1 -1
  74. package/build/cjs/integrations/tracing/tedious.js +3 -7
  75. package/build/cjs/integrations/tracing/tedious.js.map +1 -1
  76. package/build/cjs/integrations/tracing/vercelai/index.js +14 -20
  77. package/build/cjs/integrations/tracing/vercelai/index.js.map +1 -1
  78. package/build/cjs/integrations/tracing/vercelai/instrumentation.js +1 -1
  79. package/build/cjs/nodeVersion.js +1 -1
  80. package/build/cjs/otel/contextManager.js +2 -2
  81. package/build/cjs/otel/contextManager.js.map +1 -1
  82. package/build/cjs/otel/instrument.js +1 -1
  83. package/build/cjs/proxy/base.js +30 -33
  84. package/build/cjs/proxy/base.js.map +1 -1
  85. package/build/cjs/proxy/index.js +3 -8
  86. package/build/cjs/proxy/index.js.map +1 -1
  87. package/build/cjs/proxy/parse-proxy-response.js +2 -2
  88. package/build/cjs/proxy/parse-proxy-response.js.map +1 -1
  89. package/build/cjs/sdk/api.js +2 -2
  90. package/build/cjs/sdk/api.js.map +1 -1
  91. package/build/cjs/sdk/client.js +3 -8
  92. package/build/cjs/sdk/client.js.map +1 -1
  93. package/build/cjs/sdk/index.js +5 -58
  94. package/build/cjs/sdk/index.js.map +1 -1
  95. package/build/cjs/sdk/initOtel.js +8 -22
  96. package/build/cjs/sdk/initOtel.js.map +1 -1
  97. package/build/cjs/transports/http.js +10 -16
  98. package/build/cjs/transports/http.js.map +1 -1
  99. package/build/cjs/utils/addOriginToSpan.js +1 -1
  100. package/build/cjs/utils/commonjs.js +1 -1
  101. package/build/cjs/utils/createMissingInstrumentationContext.js +1 -1
  102. package/build/cjs/utils/debug.js +1 -1
  103. package/build/cjs/utils/ensureIsWrapped.js +2 -6
  104. package/build/cjs/utils/ensureIsWrapped.js.map +1 -1
  105. package/build/cjs/utils/envToBool.js +2 -2
  106. package/build/cjs/utils/envToBool.js.map +1 -1
  107. package/build/cjs/utils/errorhandling.js +2 -3
  108. package/build/cjs/utils/errorhandling.js.map +1 -1
  109. package/build/cjs/utils/getRequestUrl.js +1 -1
  110. package/build/cjs/utils/module.js +1 -1
  111. package/build/cjs/utils/module.js.map +1 -1
  112. package/build/cjs/utils/redisCache.js +1 -4
  113. package/build/cjs/utils/redisCache.js.map +1 -1
  114. package/build/esm/cron/node-cron.js +9 -7
  115. package/build/esm/cron/node-cron.js.map +1 -1
  116. package/build/esm/cron/node-schedule.js +1 -2
  117. package/build/esm/cron/node-schedule.js.map +1 -1
  118. package/build/esm/index.js +3 -4
  119. package/build/esm/index.js.map +1 -1
  120. package/build/esm/integrations/anr/index.js +8 -9
  121. package/build/esm/integrations/anr/index.js.map +1 -1
  122. package/build/esm/integrations/anr/worker-script.js +2 -2
  123. package/build/esm/integrations/childProcess.js +20 -24
  124. package/build/esm/integrations/childProcess.js.map +1 -1
  125. package/build/esm/integrations/context.js +15 -15
  126. package/build/esm/integrations/context.js.map +1 -1
  127. package/build/esm/integrations/contextlines.js +5 -6
  128. package/build/esm/integrations/contextlines.js.map +1 -1
  129. package/build/esm/integrations/http/SentryHttpInstrumentation.js +99 -20
  130. package/build/esm/integrations/http/SentryHttpInstrumentation.js.map +1 -1
  131. package/build/esm/integrations/http/index.js +32 -43
  132. package/build/esm/integrations/http/index.js.map +1 -1
  133. package/build/esm/integrations/http/vendor/getRequestInfo.js.map +1 -1
  134. package/build/esm/integrations/local-variables/local-variables-async.js +3 -4
  135. package/build/esm/integrations/local-variables/local-variables-async.js.map +1 -1
  136. package/build/esm/integrations/local-variables/local-variables-sync.js +17 -18
  137. package/build/esm/integrations/local-variables/local-variables-sync.js.map +1 -1
  138. package/build/esm/integrations/local-variables/worker-script.js +2 -2
  139. package/build/esm/integrations/modules.js +1 -1
  140. package/build/esm/integrations/modules.js.map +1 -1
  141. package/build/esm/integrations/node-fetch.js +3 -4
  142. package/build/esm/integrations/node-fetch.js.map +1 -1
  143. package/build/esm/integrations/processSession.js +34 -0
  144. package/build/esm/integrations/processSession.js.map +1 -0
  145. package/build/esm/integrations/spotlight.js +1 -1
  146. package/build/esm/integrations/spotlight.js.map +1 -1
  147. package/build/esm/integrations/tracing/connect.js +1 -1
  148. package/build/esm/integrations/tracing/connect.js.map +1 -1
  149. package/build/esm/integrations/tracing/dataloader.js +1 -2
  150. package/build/esm/integrations/tracing/dataloader.js.map +1 -1
  151. package/build/esm/integrations/tracing/express.js +4 -28
  152. package/build/esm/integrations/tracing/express.js.map +1 -1
  153. package/build/esm/integrations/tracing/fastify.js +2 -3
  154. package/build/esm/integrations/tracing/fastify.js.map +1 -1
  155. package/build/esm/integrations/tracing/graphql.js +4 -4
  156. package/build/esm/integrations/tracing/graphql.js.map +1 -1
  157. package/build/esm/integrations/tracing/hapi/index.js +4 -5
  158. package/build/esm/integrations/tracing/hapi/index.js.map +1 -1
  159. package/build/esm/integrations/tracing/index.js +0 -5
  160. package/build/esm/integrations/tracing/index.js.map +1 -1
  161. package/build/esm/integrations/tracing/knex.js +1 -1
  162. package/build/esm/integrations/tracing/knex.js.map +1 -1
  163. package/build/esm/integrations/tracing/koa.js +3 -4
  164. package/build/esm/integrations/tracing/koa.js.map +1 -1
  165. package/build/esm/integrations/tracing/prisma.js +21 -64
  166. package/build/esm/integrations/tracing/prisma.js.map +1 -1
  167. package/build/esm/integrations/tracing/redis.js +4 -5
  168. package/build/esm/integrations/tracing/redis.js.map +1 -1
  169. package/build/esm/integrations/tracing/tedious.js +2 -3
  170. package/build/esm/integrations/tracing/tedious.js.map +1 -1
  171. package/build/esm/integrations/tracing/vercelai/index.js +13 -16
  172. package/build/esm/integrations/tracing/vercelai/index.js.map +1 -1
  173. package/build/esm/otel/contextManager.js +1 -1
  174. package/build/esm/otel/contextManager.js.map +1 -1
  175. package/build/esm/package.json +1 -1
  176. package/build/esm/proxy/base.js +29 -29
  177. package/build/esm/proxy/base.js.map +1 -1
  178. package/build/esm/proxy/index.js +2 -3
  179. package/build/esm/proxy/index.js.map +1 -1
  180. package/build/esm/proxy/parse-proxy-response.js +1 -1
  181. package/build/esm/proxy/parse-proxy-response.js.map +1 -1
  182. package/build/esm/sdk/api.js +1 -1
  183. package/build/esm/sdk/api.js.map +1 -1
  184. package/build/esm/sdk/client.js +2 -3
  185. package/build/esm/sdk/client.js.map +1 -1
  186. package/build/esm/sdk/index.js +5 -58
  187. package/build/esm/sdk/index.js.map +1 -1
  188. package/build/esm/sdk/initOtel.js +7 -18
  189. package/build/esm/sdk/initOtel.js.map +1 -1
  190. package/build/esm/transports/http.js +9 -12
  191. package/build/esm/transports/http.js.map +1 -1
  192. package/build/esm/utils/ensureIsWrapped.js +1 -2
  193. package/build/esm/utils/ensureIsWrapped.js.map +1 -1
  194. package/build/esm/utils/envToBool.js +1 -1
  195. package/build/esm/utils/envToBool.js.map +1 -1
  196. package/build/esm/utils/errorhandling.js +1 -2
  197. package/build/esm/utils/errorhandling.js.map +1 -1
  198. package/build/esm/utils/module.js.map +1 -1
  199. package/build/esm/utils/redisCache.js +0 -3
  200. package/build/esm/utils/redisCache.js.map +1 -1
  201. package/build/types/cron/node-cron.d.ts +1 -1
  202. package/build/types/cron/node-cron.d.ts.map +1 -1
  203. package/build/types/index.d.ts +4 -6
  204. package/build/types/index.d.ts.map +1 -1
  205. package/build/types/integrations/childProcess.d.ts +7 -7
  206. package/build/types/integrations/childProcess.d.ts.map +1 -1
  207. package/build/types/integrations/http/SentryHttpInstrumentation.d.ts +30 -0
  208. package/build/types/integrations/http/SentryHttpInstrumentation.d.ts.map +1 -1
  209. package/build/types/integrations/http/index.d.ts +11 -8
  210. package/build/types/integrations/http/index.d.ts.map +1 -1
  211. package/build/types/integrations/processSession.d.ts +5 -0
  212. package/build/types/integrations/processSession.d.ts.map +1 -0
  213. package/build/types/integrations/tracing/express.d.ts.map +1 -1
  214. package/build/types/integrations/tracing/hapi/types.d.ts +1 -0
  215. package/build/types/integrations/tracing/hapi/types.d.ts.map +1 -1
  216. package/build/types/integrations/tracing/index.d.ts.map +1 -1
  217. package/build/types/integrations/tracing/prisma.d.ts +11 -12
  218. package/build/types/integrations/tracing/prisma.d.ts.map +1 -1
  219. package/build/types/integrations/tracing/vercelai/index.d.ts.map +1 -1
  220. package/build/types/otel/contextManager.d.ts +1 -1
  221. package/build/types/proxy/helpers.d.ts +1 -0
  222. package/build/types/proxy/helpers.d.ts.map +1 -1
  223. package/build/types/proxy/parse-proxy-response.d.ts +1 -0
  224. package/build/types/proxy/parse-proxy-response.d.ts.map +1 -1
  225. package/build/types/sdk/index.d.ts.map +1 -1
  226. package/build/types/sdk/initOtel.d.ts +1 -3
  227. package/build/types/sdk/initOtel.d.ts.map +1 -1
  228. package/build/types/transports/http-module.d.ts +1 -0
  229. package/build/types/transports/http-module.d.ts.map +1 -1
  230. package/build/types/transports/http.d.ts +1 -0
  231. package/build/types/transports/http.d.ts.map +1 -1
  232. package/build/types/types.d.ts +2 -48
  233. package/build/types/types.d.ts.map +1 -1
  234. package/build/types/utils/errorhandling.d.ts.map +1 -1
  235. package/build/types-ts3.8/cron/node-cron.d.ts +1 -1
  236. package/build/types-ts3.8/index.d.ts +4 -6
  237. package/build/types-ts3.8/integrations/childProcess.d.ts +7 -7
  238. package/build/types-ts3.8/integrations/http/SentryHttpInstrumentation.d.ts +29 -0
  239. package/build/types-ts3.8/integrations/http/index.d.ts +11 -8
  240. package/build/types-ts3.8/integrations/processSession.d.ts +5 -0
  241. package/build/types-ts3.8/integrations/tracing/prisma.d.ts +11 -12
  242. package/build/types-ts3.8/otel/contextManager.d.ts +1 -1
  243. package/build/types-ts3.8/sdk/initOtel.d.ts +1 -3
  244. package/build/types-ts3.8/types.d.ts +2 -48
  245. package/package.json +8 -9
  246. package/build/cjs/integrations/tracing/nest/helpers.js +0 -100
  247. package/build/cjs/integrations/tracing/nest/helpers.js.map +0 -1
  248. package/build/cjs/integrations/tracing/nest/nest.js +0 -148
  249. package/build/cjs/integrations/tracing/nest/nest.js.map +0 -1
  250. package/build/cjs/integrations/tracing/nest/sentry-nest-event-instrumentation.js +0 -117
  251. package/build/cjs/integrations/tracing/nest/sentry-nest-event-instrumentation.js.map +0 -1
  252. package/build/cjs/integrations/tracing/nest/sentry-nest-instrumentation.js +0 -301
  253. package/build/cjs/integrations/tracing/nest/sentry-nest-instrumentation.js.map +0 -1
  254. package/build/esm/integrations/tracing/nest/helpers.js +0 -91
  255. package/build/esm/integrations/tracing/nest/helpers.js.map +0 -1
  256. package/build/esm/integrations/tracing/nest/nest.js +0 -141
  257. package/build/esm/integrations/tracing/nest/nest.js.map +0 -1
  258. package/build/esm/integrations/tracing/nest/sentry-nest-event-instrumentation.js +0 -115
  259. package/build/esm/integrations/tracing/nest/sentry-nest-event-instrumentation.js.map +0 -1
  260. package/build/esm/integrations/tracing/nest/sentry-nest-instrumentation.js +0 -295
  261. package/build/esm/integrations/tracing/nest/sentry-nest-instrumentation.js.map +0 -1
  262. package/build/types/integrations/tracing/nest/helpers.d.ts +0 -36
  263. package/build/types/integrations/tracing/nest/helpers.d.ts.map +0 -1
  264. package/build/types/integrations/tracing/nest/nest.d.ts +0 -19
  265. package/build/types/integrations/tracing/nest/nest.d.ts.map +0 -1
  266. package/build/types/integrations/tracing/nest/sentry-nest-event-instrumentation.d.ts +0 -27
  267. package/build/types/integrations/tracing/nest/sentry-nest-event-instrumentation.d.ts.map +0 -1
  268. package/build/types/integrations/tracing/nest/sentry-nest-instrumentation.d.ts +0 -37
  269. package/build/types/integrations/tracing/nest/sentry-nest-instrumentation.d.ts.map +0 -1
  270. package/build/types/integrations/tracing/nest/types.d.ts +0 -84
  271. package/build/types/integrations/tracing/nest/types.d.ts.map +0 -1
  272. package/build/types/integrations/tracing/prisma/vendor/v5-tracing-helper.d.ts +0 -38
  273. package/build/types/integrations/tracing/prisma/vendor/v5-tracing-helper.d.ts.map +0 -1
  274. package/build/types/integrations/tracing/prisma/vendor/v6-tracing-helper.d.ts +0 -31
  275. package/build/types/integrations/tracing/prisma/vendor/v6-tracing-helper.d.ts.map +0 -1
  276. package/build/types-ts3.8/integrations/tracing/nest/helpers.d.ts +0 -36
  277. package/build/types-ts3.8/integrations/tracing/nest/nest.d.ts +0 -19
  278. package/build/types-ts3.8/integrations/tracing/nest/sentry-nest-event-instrumentation.d.ts +0 -27
  279. package/build/types-ts3.8/integrations/tracing/nest/sentry-nest-instrumentation.d.ts +0 -37
  280. package/build/types-ts3.8/integrations/tracing/nest/types.d.ts +0 -84
  281. package/build/types-ts3.8/integrations/tracing/prisma/vendor/v5-tracing-helper.d.ts +0 -44
  282. package/build/types-ts3.8/integrations/tracing/prisma/vendor/v6-tracing-helper.d.ts +0 -34
@@ -3,39 +3,6 @@ import type { Instrumentation } from '@opentelemetry/instrumentation';
3
3
  import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-base';
4
4
  import type { ClientOptions, Options, SamplingContext, Scope, Span, TracePropagationTargets } from '@sentry/core';
5
5
  import type { NodeTransportOptions } from './transports';
6
- /**
7
- * Note: In the next major version of the Sentry SDK this interface will be removed and the SDK will by default only wrap
8
- * ESM modules that are required to be wrapped by OpenTelemetry Instrumentation.
9
- */
10
- export interface EsmLoaderHookOptions {
11
- /**
12
- * Provide a list of modules to wrap with `import-in-the-middle`.
13
- *
14
- * @deprecated It is recommended to use `onlyIncludeInstrumentedModules: true` instead of manually defining modules to include and exclude.
15
- */
16
- include?: Array<string | RegExp>;
17
- /**
18
- * Provide a list of modules to prevent them from being wrapped with `import-in-the-middle`.
19
- *
20
- * @deprecated It is recommended to use `onlyIncludeInstrumentedModules: true` instead of manually defining modules to include and exclude.
21
- */
22
- exclude?: Array<string | RegExp>;
23
- /**
24
- * When set to `true`, `import-in-the-middle` will only wrap ESM modules that are specifically instrumented by
25
- * OpenTelemetry plugins. This is useful to avoid issues where `import-in-the-middle` is not compatible with some of
26
- * your dependencies.
27
- *
28
- * **Note**: This feature will only work if you `Sentry.init()` the SDK before the instrumented modules are loaded.
29
- * This can be achieved via the Node `--import` CLI flag or by loading your app via async `import()` after calling
30
- * `Sentry.init()`.
31
- *
32
- * Defaults to `false`.
33
- *
34
- * Note: In the next major version of the Sentry SDK this option will be removed and the SDK will by default only wrap
35
- * ESM modules that are required to be wrapped by OpenTelemetry Instrumentation.
36
- */
37
- onlyIncludeInstrumentedModules?: boolean;
38
- }
39
6
  export interface BaseNodeOptions {
40
7
  /**
41
8
  * List of strings/regex controlling to which outgoing requests
@@ -64,8 +31,7 @@ export interface BaseNodeOptions {
64
31
  * Profiling is enabled if either this or `profilesSampleRate` is defined. If both are defined, `profilesSampleRate` is
65
32
  * ignored.
66
33
  *
67
- * Will automatically be passed a context object of default and optional custom data. See
68
- * {@link Transaction.samplingContext} and {@link Hub.startTransaction}.
34
+ * Will automatically be passed a context object of default and optional custom data.
69
35
  *
70
36
  * @returns A sample rate between 0 and 1 (0 drops the profile, 1 guarantees it will be sent). Returning `true` is
71
37
  * equivalent to returning 1 and returning `false` is equivalent to returning 0.
@@ -127,21 +93,9 @@ export interface BaseNodeOptions {
127
93
  * with certain libraries. If you run into problems running your app with this enabled,
128
94
  * please raise an issue in https://github.com/getsentry/sentry-javascript.
129
95
  *
130
- * You can optionally exclude specific modules or only include specific modules from being instrumented by providing
131
- * an object with `include` or `exclude` properties.
132
- *
133
- * ```js
134
- * registerEsmLoaderHooks: {
135
- * exclude: ['openai'],
136
- * }
137
- * ```
138
- *
139
96
  * Defaults to `true`.
140
- *
141
- * Note: In the next major version of the SDK, the possibility to provide fine-grained control will be removed from this option.
142
- * This means that it will only be possible to pass `true` or `false`. The default value will continue to be `true`.
143
97
  */
144
- registerEsmLoaderHooks?: boolean | EsmLoaderHookOptions;
98
+ registerEsmLoaderHooks?: boolean;
145
99
  /**
146
100
  * Configures in which interval client reports will be flushed. Defaults to `60_000` (milliseconds).
147
101
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAElH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAEjC;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAEjC;;;;;;;;;;;;;OAaG;IAEH,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;;;;;;OAeG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,MAAM,GAAG,OAAO,CAAC;IAEzE,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE7B;;;;;;;;;OASG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,eAAe,EAAE,CAAC;IAElD;;OAEG;IACH,2BAA2B,CAAC,EAAE,aAAa,EAAE,CAAC;IAE9C;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;;;;;;;;;;;;;;;;OAmBG;IAEH,sBAAsB,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAC;IAExD;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;OAGG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAEzC,kEAAkE;IAClE,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CAC/C;AAED;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO,CAAC,oBAAoB,CAAC,EAAE,eAAe;CAAG;AAEtF;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa,CAAC,oBAAoB,CAAC,EAAE,eAAe;CAAG;AAElG,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,KAAK,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAElH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;;;;;;OAeG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE,eAAe,KAAK,MAAM,GAAG,OAAO,CAAC;IAEzE,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAE7B;;;;;;;;;OASG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,eAAe,EAAE,CAAC;IAElD;;OAEG;IACH,2BAA2B,CAAC,EAAE,aAAa,EAAE,CAAC;IAE9C;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;OAGG;IACH,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAEzC,kEAAkE;IAClE,YAAY,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CAC/C;AAED;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO,CAAC,oBAAoB,CAAC,EAAE,eAAe;CAAG;AAEtF;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,aAAa,CAAC,oBAAoB,CAAC,EAAE,eAAe;CAAG;AAElG,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,KAAK,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,YAAY,GAAG,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"errorhandling.d.ts","sourceRoot":"","sources":["../../../src/utils/errorhandling.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA6BtD"}
1
+ {"version":3,"file":"errorhandling.d.ts","sourceRoot":"","sources":["../../../src/utils/errorhandling.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA4BtD"}
@@ -3,7 +3,7 @@ export interface NodeCronOptions {
3
3
  timezone?: string;
4
4
  }
5
5
  export interface NodeCron {
6
- schedule: (cronExpression: string, callback: () => void, options: NodeCronOptions) => unknown;
6
+ schedule: (cronExpression: string, callback: () => void, options: NodeCronOptions | undefined) => unknown;
7
7
  }
8
8
  /**
9
9
  * Wraps the `node-cron` library with check-in monitoring.
@@ -19,7 +19,6 @@ export { mongooseIntegration } from './integrations/tracing/mongoose';
19
19
  export { mysqlIntegration } from './integrations/tracing/mysql';
20
20
  export { mysql2Integration } from './integrations/tracing/mysql2';
21
21
  export { redisIntegration } from './integrations/tracing/redis';
22
- export { nestIntegration, setupNestErrorHandler } from './integrations/tracing/nest/nest';
23
22
  export { postgresIntegration } from './integrations/tracing/postgres';
24
23
  export { prismaIntegration } from './integrations/tracing/prisma';
25
24
  export { hapiIntegration, setupHapiErrorHandler } from './integrations/tracing/hapi';
@@ -31,7 +30,7 @@ export { tediousIntegration } from './integrations/tracing/tedious';
31
30
  export { genericPoolIntegration } from './integrations/tracing/genericPool';
32
31
  export { dataloaderIntegration } from './integrations/tracing/dataloader';
33
32
  export { amqplibIntegration } from './integrations/tracing/amqplib';
34
- export { processThreadBreadcrumbIntegration, childProcessIntegration } from './integrations/childProcess';
33
+ export { childProcessIntegration } from './integrations/childProcess';
35
34
  export { SentryContextManager } from './otel/contextManager';
36
35
  export { generateInstrumentOnce } from './otel/instrument';
37
36
  export { init, getDefaultIntegrations, getDefaultIntegrationsWithoutPerformance, initWithoutDefaultIntegrations, validateOpenTelemetrySetup, } from './sdk';
@@ -43,8 +42,7 @@ export { makeNodeTransport } from './transports';
43
42
  export { NodeClient } from './sdk/client';
44
43
  export { cron } from './cron';
45
44
  export { NodeOptions } from './types';
46
- export { addRequestDataToEvent, DEFAULT_USER_INCLUDES, extractRequestData } from '@sentry/core';
47
- export { addOpenTelemetryInstrumentation, setOpenTelemetryContextAsyncContextStrategy as setNodeAsyncContextStrategy, } from '@sentry/opentelemetry';
48
- export { addBreadcrumb, isInitialized, getGlobalScope, lastEventId, close, createTransport, flush, SDK_VERSION, getSpanStatusFromHttpCode, setHttpStatus, captureCheckIn, withMonitor, requestDataIntegration, functionToStringIntegration, inboundFiltersIntegration, linkedErrorsIntegration, addEventProcessor, setContext, setExtra, setExtras, setTag, setTags, setUser, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, setCurrentClient, Scope, setMeasurement, getSpanDescendants, parameterize, getClient, getCurrentHub, getCurrentScope, getIsolationScope, getTraceData, getTraceMetaTags, continueTrace, withScope, withIsolationScope, captureException, captureEvent, captureMessage, captureFeedback, captureConsoleIntegration, debugIntegration, dedupeIntegration, extraErrorDataIntegration, rewriteFramesIntegration, sessionTimingIntegration, metricsDefault as metrics, startSession, captureSession, endSession, addIntegration, startSpan, startSpanManual, startInactiveSpan, startNewTrace, suppressTracing, getActiveSpan, withActiveSpan, getRootSpan, spanToJSON, spanToTraceHeader, spanToBaggageHeader, trpcMiddleware, updateSpanName, zodErrorsIntegration, profiler, } from '@sentry/core';
49
- export { Breadcrumb, BreadcrumbHint, PolymorphicRequest, Request, RequestEventData, SdkInfo, Event, EventHint, ErrorEvent, Exception, Session, SeverityLevel, StackFrame, Stacktrace, Thread, User, Span, } from '@sentry/core';
45
+ export { setOpenTelemetryContextAsyncContextStrategy as setNodeAsyncContextStrategy, } from '@sentry/opentelemetry';
46
+ export { addBreadcrumb, isInitialized, getGlobalScope, lastEventId, close, createTransport, flush, SDK_VERSION, getSpanStatusFromHttpCode, setHttpStatus, captureCheckIn, withMonitor, requestDataIntegration, functionToStringIntegration, inboundFiltersIntegration, linkedErrorsIntegration, addEventProcessor, setContext, setExtra, setExtras, setTag, setTags, setUser, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, setCurrentClient, Scope, setMeasurement, getSpanDescendants, parameterize, getClient, getCurrentScope, getIsolationScope, getTraceData, getTraceMetaTags, continueTrace, withScope, withIsolationScope, captureException, captureEvent, captureMessage, captureFeedback, captureConsoleIntegration, dedupeIntegration, extraErrorDataIntegration, rewriteFramesIntegration, startSession, captureSession, endSession, addIntegration, startSpan, startSpanManual, startInactiveSpan, startNewTrace, suppressTracing, getActiveSpan, withActiveSpan, getRootSpan, spanToJSON, spanToTraceHeader, spanToBaggageHeader, trpcMiddleware, updateSpanName, zodErrorsIntegration, profiler, } from '@sentry/core';
47
+ export { Breadcrumb, BreadcrumbHint, PolymorphicRequest, RequestEventData, SdkInfo, Event, EventHint, ErrorEvent, Exception, Session, SeverityLevel, StackFrame, Stacktrace, Thread, User, Span, } from '@sentry/core';
50
48
  //# sourceMappingURL=index.d.ts.map
@@ -5,16 +5,16 @@ interface Options {
5
5
  * @default false
6
6
  */
7
7
  includeChildProcessArgs?: boolean;
8
+ /**
9
+ * Whether to capture errors from worker threads.
10
+ *
11
+ * @default true
12
+ */
13
+ captureWorkerErrors?: boolean;
8
14
  }
9
15
  /**
10
- * Capture breadcrumbs for child processes and worker threads.
16
+ * Capture breadcrumbs and events for child processes and worker threads.
11
17
  */
12
18
  export declare const childProcessIntegration: (options?: Options | undefined) => import("@sentry/core").Integration;
13
- /**
14
- * Capture breadcrumbs for child processes and worker threads.
15
- *
16
- * @deprecated Use `childProcessIntegration` integration instead. Functionally they are the same. `processThreadBreadcrumbIntegration` will be removed in the next major version.
17
- */
18
- export declare const processThreadBreadcrumbIntegration: (options?: Options | undefined) => import("@sentry/core").Integration;
19
19
  export {};
20
20
  //# sourceMappingURL=childProcess.d.ts.map
@@ -1,7 +1,9 @@
1
1
  /// <reference types="node" />
2
2
  import { RequestOptions } from 'node:http';
3
+ import { EventEmitter } from 'node:stream';
3
4
  import { InstrumentationConfig } from '@opentelemetry/instrumentation';
4
5
  import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';
6
+ import { Scope } from '@sentry/core';
5
7
  type SentryHttpInstrumentationOptions = InstrumentationConfig & {
6
8
  /**
7
9
  * Whether breadcrumbs should be recorded for requests.
@@ -19,6 +21,19 @@ type SentryHttpInstrumentationOptions = InstrumentationConfig & {
19
21
  * @param request Contains the {@type RequestOptions} object used to make the outgoing request.
20
22
  */
21
23
  ignoreOutgoingRequests?: (url: string, request: RequestOptions) => boolean;
24
+ /**
25
+ * Whether the integration should create [Sessions](https://docs.sentry.io/product/releases/health/#sessions) for incoming requests to track the health and crash-free rate of your releases in Sentry.
26
+ * Read more about Release Health: https://docs.sentry.io/product/releases/health/
27
+ *
28
+ * Defaults to `true`.
29
+ */
30
+ trackIncomingRequestsAsSessions?: boolean;
31
+ /**
32
+ * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.
33
+ *
34
+ * Defaults to `60000` (60s).
35
+ */
36
+ sessionFlushingDelayMS?: number;
22
37
  };
23
38
  /**
24
39
  * This custom HTTP instrumentation is used to isolate incoming requests and annotate them with additional information.
@@ -55,5 +70,19 @@ export declare class SentryHttpInstrumentation extends InstrumentationBase<Sentr
55
70
  /** Path the outgoing get function for breadcrumbs. */
56
71
  private _getPatchOutgoingGetFunction;
57
72
  }
73
+ /**
74
+ * Starts a session and tracks it in the context of a given isolation scope.
75
+ * When the passed response is finished, the session is put into a task and is
76
+ * aggregated with other sessions that may happen in a certain time window
77
+ * (sessionFlushingDelayMs).
78
+ *
79
+ * The sessions are always aggregated by the client that is on the current scope
80
+ * at the time of ending the response (if there is one).
81
+ */
82
+ export declare function recordRequestSession({ requestIsolationScope, response, sessionFlushingDelayMS, }: {
83
+ requestIsolationScope: Scope;
84
+ response: EventEmitter;
85
+ sessionFlushingDelayMS?: number;
86
+ }): void;
58
87
  export {};
59
88
  //# sourceMappingURL=SentryHttpInstrumentation.d.ts.map
@@ -4,6 +4,7 @@ import { HttpInstrumentationConfig } from '@opentelemetry/instrumentation-http';
4
4
  import { HttpInstrumentation } from '@opentelemetry/instrumentation-http';
5
5
  import { Span } from '@sentry/core';
6
6
  import { HTTPModuleRequestIncomingMessage } from '../../transports/http-module';
7
+ import { NodeClientOptions } from '../../types';
7
8
  interface HttpOptions {
8
9
  /**
9
10
  * Whether breadcrumbs should be recorded for outgoing requests.
@@ -14,6 +15,8 @@ interface HttpOptions {
14
15
  * If set to false, do not emit any spans.
15
16
  * This will ensure that the default HttpInstrumentation from OpenTelemetry is not setup,
16
17
  * only the Sentry-specific instrumentation for request isolation is applied.
18
+ *
19
+ * If `skipOpenTelemetrySetup: true` is configured, this defaults to `false`, otherwise it defaults to `true`.
17
20
  */
18
21
  spans?: boolean;
19
22
  /**
@@ -21,10 +24,14 @@ interface HttpOptions {
21
24
  * Read more about Release Health: https://docs.sentry.io/product/releases/health/
22
25
  *
23
26
  * Defaults to `true`.
24
- *
25
- * Note: If `autoSessionTracking` is set to `false` in `Sentry.init()` or the Client owning this integration, this option will be ignored.
26
27
  */
27
28
  trackIncomingRequestsAsSessions?: boolean;
29
+ /**
30
+ * Number of milliseconds until sessions tracked with `trackIncomingRequestsAsSessions` will be flushed as a session aggregate.
31
+ *
32
+ * Defaults to `60000` (60s).
33
+ */
34
+ sessionFlushingDelayMS?: number;
28
35
  /**
29
36
  * Do not capture spans or breadcrumbs for outgoing HTTP requests to URLs where the given callback returns `true`.
30
37
  * This controls both span & breadcrumb creation - spans will be non recording if tracing is disabled.
@@ -66,15 +73,11 @@ interface HttpOptions {
66
73
  _experimentalConfig?: ConstructorParameters<typeof HttpInstrumentation>[0];
67
74
  };
68
75
  }
69
- export declare const instrumentSentryHttp: ((options?: {
70
- breadcrumbs?: HttpOptions['breadcrumbs'];
71
- ignoreOutgoingRequests?: HttpOptions['ignoreOutgoingRequests'];
72
- } | undefined) => void) & {
73
- id: string;
74
- };
75
76
  export declare const instrumentOtelHttp: ((options?: HttpInstrumentationConfig | undefined) => void) & {
76
77
  id: string;
77
78
  };
79
+ /** Exported only for tests. */
80
+ export declare function _shouldInstrumentSpans(options: HttpOptions, clientOptions?: Partial<NodeClientOptions>): boolean;
78
81
  /**
79
82
  * The http integration instruments Node's internal http and https modules.
80
83
  * It creates breadcrumbs and spans for outgoing HTTP requests which will be attached to the currently active span.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Records a Session for the current process to track release health.
3
+ */
4
+ export declare const processSessionIntegration: () => import("@sentry/core").Integration;
5
+ //# sourceMappingURL=processSession.d.ts.map
@@ -5,19 +5,10 @@ export declare const instrumentPrisma: ((options?: {
5
5
  id: string;
6
6
  };
7
7
  /**
8
- * Adds Sentry tracing instrumentation for the [Prisma](https://www.npmjs.com/package/prisma) ORM.
8
+ * Adds Sentry tracing instrumentation for the [prisma](https://www.npmjs.com/package/prisma) library.
9
9
  * For more information, see the [`prismaIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/prisma/).
10
10
  *
11
- * Make sure `previewFeatures = ["tracing"]` is added to the generator block in your Prisma schema.
12
- *
13
- * ```prisma
14
- * generator client {
15
- * provider = "prisma-client-js"
16
- * previewFeatures = ["tracing"]
17
- * }
18
- * ```
19
- *
20
- * NOTE: By default, this integration works with Prisma version 5.
11
+ * NOTE: By default, this integration works with Prisma version 6.
21
12
  * To get performance instrumentation for other Prisma versions,
22
13
  * 1. Install the `@prisma/instrumentation` package with the desired version.
23
14
  * 1. Pass a `new PrismaInstrumentation()` instance as exported from `@prisma/instrumentation` to the `prismaInstrumentation` option of this integration:
@@ -36,12 +27,20 @@ export declare const instrumentPrisma: ((options?: {
36
27
  * ```
37
28
  *
38
29
  * The passed instrumentation instance will override the default instrumentation instance the integration would use, while the `prismaIntegration` will still ensure data compatibility for the various Prisma versions.
30
+ * 1. Depending on your Prisma version (prior to version 6), add `previewFeatures = ["tracing"]` to the client generator block of your Prisma schema:
31
+ *
32
+ * ```
33
+ * generator client {
34
+ * provider = "prisma-client-js"
35
+ * previewFeatures = ["tracing"]
36
+ * }
37
+ * ```
39
38
  */
40
39
  export declare const prismaIntegration: (args_0?: {
41
40
  /**
42
41
  * Overrides the instrumentation used by the Sentry SDK with the passed in instrumentation instance.
43
42
  *
44
- * NOTE: By default, the Sentry SDK uses the Prisma v5 instrumentation. Use this option if you need performance instrumentation different Prisma versions.
43
+ * NOTE: By default, the Sentry SDK uses the Prisma v6 instrumentation. Use this option if you need performance instrumentation different Prisma versions.
45
44
  *
46
45
  * For more information refer to the documentation of `prismaIntegration()` or see https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/prisma/
47
46
  */
@@ -1,7 +1,7 @@
1
1
  import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';
2
2
  /**
3
3
  * This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.
4
- * It ensures that we create a new hub per context, so that the OTEL Context & the Sentry Hub are always in sync.
4
+ * It ensures that we create a new hub per context, so that the OTEL Context & the Sentry Scopes are always in sync.
5
5
  *
6
6
  * Note that we currently only support AsyncHooks with this,
7
7
  * but since this should work for Node 14+ anyhow that should be good enough.
@@ -1,6 +1,5 @@
1
1
  import { SpanProcessor } from '@opentelemetry/sdk-trace-base';
2
2
  import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
3
- import { EsmLoaderHookOptions } from '../types';
4
3
  import { NodeClient } from './client';
5
4
  interface AdditionalOpenTelemetryOptions {
6
5
  /** Additional SpanProcessor instances that should be used. */
@@ -11,11 +10,10 @@ interface AdditionalOpenTelemetryOptions {
11
10
  */
12
11
  export declare function initOpenTelemetry(client: NodeClient, options?: AdditionalOpenTelemetryOptions): void;
13
12
  /** Initialize the ESM loader. */
14
- export declare function maybeInitializeEsmLoader(esmHookConfig?: EsmLoaderHookOptions): void;
13
+ export declare function maybeInitializeEsmLoader(): void;
15
14
  interface NodePreloadOptions {
16
15
  debug?: boolean;
17
16
  integrations?: string[];
18
- registerEsmLoaderHooks?: EsmLoaderHookOptions;
19
17
  }
20
18
  /**
21
19
  * Preload OpenTelemetry for Node.
@@ -3,39 +3,6 @@ import { Instrumentation } from '@opentelemetry/instrumentation';
3
3
  import { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-base';
4
4
  import { ClientOptions, Options, SamplingContext, Scope, Span, TracePropagationTargets } from '@sentry/core';
5
5
  import { NodeTransportOptions } from './transports';
6
- /**
7
- * Note: In the next major version of the Sentry SDK this interface will be removed and the SDK will by default only wrap
8
- * ESM modules that are required to be wrapped by OpenTelemetry Instrumentation.
9
- */
10
- export interface EsmLoaderHookOptions {
11
- /**
12
- * Provide a list of modules to wrap with `import-in-the-middle`.
13
- *
14
- * @deprecated It is recommended to use `onlyIncludeInstrumentedModules: true` instead of manually defining modules to include and exclude.
15
- */
16
- include?: Array<string | RegExp>;
17
- /**
18
- * Provide a list of modules to prevent them from being wrapped with `import-in-the-middle`.
19
- *
20
- * @deprecated It is recommended to use `onlyIncludeInstrumentedModules: true` instead of manually defining modules to include and exclude.
21
- */
22
- exclude?: Array<string | RegExp>;
23
- /**
24
- * When set to `true`, `import-in-the-middle` will only wrap ESM modules that are specifically instrumented by
25
- * OpenTelemetry plugins. This is useful to avoid issues where `import-in-the-middle` is not compatible with some of
26
- * your dependencies.
27
- *
28
- * **Note**: This feature will only work if you `Sentry.init()` the SDK before the instrumented modules are loaded.
29
- * This can be achieved via the Node `--import` CLI flag or by loading your app via async `import()` after calling
30
- * `Sentry.init()`.
31
- *
32
- * Defaults to `false`.
33
- *
34
- * Note: In the next major version of the Sentry SDK this option will be removed and the SDK will by default only wrap
35
- * ESM modules that are required to be wrapped by OpenTelemetry Instrumentation.
36
- */
37
- onlyIncludeInstrumentedModules?: boolean;
38
- }
39
6
  export interface BaseNodeOptions {
40
7
  /**
41
8
  * List of strings/regex controlling to which outgoing requests
@@ -64,8 +31,7 @@ export interface BaseNodeOptions {
64
31
  * Profiling is enabled if either this or `profilesSampleRate` is defined. If both are defined, `profilesSampleRate` is
65
32
  * ignored.
66
33
  *
67
- * Will automatically be passed a context object of default and optional custom data. See
68
- * {@link Transaction.samplingContext} and {@link Hub.startTransaction}.
34
+ * Will automatically be passed a context object of default and optional custom data.
69
35
  *
70
36
  * @returns A sample rate between 0 and 1 (0 drops the profile, 1 guarantees it will be sent). Returning `true` is
71
37
  * equivalent to returning 1 and returning `false` is equivalent to returning 0.
@@ -127,21 +93,9 @@ export interface BaseNodeOptions {
127
93
  * with certain libraries. If you run into problems running your app with this enabled,
128
94
  * please raise an issue in https://github.com/getsentry/sentry-javascript.
129
95
  *
130
- * You can optionally exclude specific modules or only include specific modules from being instrumented by providing
131
- * an object with `include` or `exclude` properties.
132
- *
133
- * ```js
134
- * registerEsmLoaderHooks: {
135
- * exclude: ['openai'],
136
- * }
137
- * ```
138
- *
139
96
  * Defaults to `true`.
140
- *
141
- * Note: In the next major version of the SDK, the possibility to provide fine-grained control will be removed from this option.
142
- * This means that it will only be possible to pass `true` or `false`. The default value will continue to be `true`.
143
97
  */
144
- registerEsmLoaderHooks?: boolean | EsmLoaderHookOptions;
98
+ registerEsmLoaderHooks?: boolean;
145
99
  /**
146
100
  * Configures in which interval client reports will be flushed. Defaults to `60_000` (milliseconds).
147
101
  */
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@sentry/node",
3
- "version": "8.54.0",
3
+ "version": "9.0.0-alpha.0",
4
4
  "description": "Sentry Node SDK using OpenTelemetry for performance instrumentation",
5
5
  "repository": "git://github.com/getsentry/sentry-javascript.git",
6
6
  "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node",
7
7
  "author": "Sentry",
8
8
  "license": "MIT",
9
9
  "engines": {
10
- "node": ">=14.18"
10
+ "node": ">=18"
11
11
  },
12
12
  "files": [
13
13
  "/build"
@@ -55,7 +55,7 @@
55
55
  }
56
56
  },
57
57
  "typesVersions": {
58
- "<4.9": {
58
+ "<5.0": {
59
59
  "build/types/index.d.ts": [
60
60
  "build/types-ts3.8/index.d.ts"
61
61
  ]
@@ -88,7 +88,6 @@
88
88
  "@opentelemetry/instrumentation-mongoose": "0.46.0",
89
89
  "@opentelemetry/instrumentation-mysql": "0.45.0",
90
90
  "@opentelemetry/instrumentation-mysql2": "0.45.0",
91
- "@opentelemetry/instrumentation-nestjs-core": "0.44.0",
92
91
  "@opentelemetry/instrumentation-pg": "0.50.0",
93
92
  "@opentelemetry/instrumentation-redis-4": "0.46.0",
94
93
  "@opentelemetry/instrumentation-tedious": "0.18.0",
@@ -96,13 +95,13 @@
96
95
  "@opentelemetry/resources": "^1.30.1",
97
96
  "@opentelemetry/sdk-trace-base": "^1.30.1",
98
97
  "@opentelemetry/semantic-conventions": "^1.28.0",
99
- "@prisma/instrumentation": "5.22.0",
100
- "@sentry/core": "8.54.0",
101
- "@sentry/opentelemetry": "8.54.0",
102
- "import-in-the-middle": "^1.11.2"
98
+ "@prisma/instrumentation": "6.2.1",
99
+ "@sentry/core": "9.0.0-alpha.0",
100
+ "@sentry/opentelemetry": "9.0.0-alpha.0",
101
+ "import-in-the-middle": "^1.12.0"
103
102
  },
104
103
  "devDependencies": {
105
- "@types/node": "^14.18.0"
104
+ "@types/node": "^18.19.1"
106
105
  },
107
106
  "scripts": {
108
107
  "build": "run-p build:transpile build:types",
@@ -1,100 +0,0 @@
1
- var {
2
- _nullishCoalesce
3
- } = require('@sentry/core');
4
-
5
- Object.defineProperty(exports, '__esModule', { value: true });
6
-
7
- const core = require('@sentry/core');
8
-
9
- const sentryPatched = 'sentryPatched';
10
-
11
- /**
12
- * Helper checking if a concrete target class is already patched.
13
- *
14
- * We already guard duplicate patching with isWrapped. However, isWrapped checks whether a file has been patched, whereas we use this check for concrete target classes.
15
- * This check might not be necessary, but better to play it safe.
16
- */
17
- function isPatched(target) {
18
- if (target.sentryPatched) {
19
- return true;
20
- }
21
-
22
- core.addNonEnumerableProperty(target, sentryPatched, true);
23
- return false;
24
- }
25
-
26
- /**
27
- * Returns span options for nest middleware spans.
28
- */
29
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
30
- function getMiddlewareSpanOptions(target, name = undefined) {
31
- const span_name = _nullishCoalesce(name, () => ( target.name)); // fallback to class name if no name is provided
32
-
33
- return {
34
- name: span_name,
35
- attributes: {
36
- [core.SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'middleware.nestjs',
37
- [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.middleware.nestjs',
38
- },
39
- };
40
- }
41
-
42
- /**
43
- * Returns span options for nest event spans.
44
- */
45
- function getEventSpanOptions(event)
46
-
47
- {
48
- return {
49
- name: `event ${event}`,
50
- attributes: {
51
- [core.SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'event.nestjs',
52
- [core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.event.nestjs',
53
- },
54
- forceTransaction: true,
55
- };
56
- }
57
-
58
- /**
59
- * Adds instrumentation to a js observable and attaches the span to an active parent span.
60
- */
61
- function instrumentObservable(observable, activeSpan) {
62
- if (activeSpan) {
63
- // eslint-disable-next-line @typescript-eslint/unbound-method
64
- observable.subscribe = new Proxy(observable.subscribe, {
65
- apply: (originalSubscribe, thisArgSubscribe, argsSubscribe) => {
66
- return core.withActiveSpan(activeSpan, () => {
67
- const subscription = originalSubscribe.apply(thisArgSubscribe, argsSubscribe);
68
- subscription.add(() => activeSpan.end());
69
- return subscription;
70
- });
71
- },
72
- });
73
- }
74
- }
75
-
76
- /**
77
- * Proxies the next() call in a nestjs middleware to end the span when it is called.
78
- */
79
- function getNextProxy(next, span, prevSpan) {
80
- return new Proxy(next, {
81
- apply: (originalNext, thisArgNext, argsNext) => {
82
- span.end();
83
-
84
- if (prevSpan) {
85
- return core.withActiveSpan(prevSpan, () => {
86
- return Reflect.apply(originalNext, thisArgNext, argsNext);
87
- });
88
- } else {
89
- return Reflect.apply(originalNext, thisArgNext, argsNext);
90
- }
91
- },
92
- });
93
- }
94
-
95
- exports.getEventSpanOptions = getEventSpanOptions;
96
- exports.getMiddlewareSpanOptions = getMiddlewareSpanOptions;
97
- exports.getNextProxy = getNextProxy;
98
- exports.instrumentObservable = instrumentObservable;
99
- exports.isPatched = isPatched;
100
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../src/integrations/tracing/nest/helpers.ts"],"sourcesContent":["import type { Span } from '@sentry/core';\nimport {\n SEMANTIC_ATTRIBUTE_SENTRY_OP,\n SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,\n addNonEnumerableProperty,\n withActiveSpan,\n} from '@sentry/core';\nimport type { CatchTarget, InjectableTarget, NextFunction, Observable, Subscription } from './types';\n\nconst sentryPatched = 'sentryPatched';\n\n/**\n * Helper checking if a concrete target class is already patched.\n *\n * We already guard duplicate patching with isWrapped. However, isWrapped checks whether a file has been patched, whereas we use this check for concrete target classes.\n * This check might not be necessary, but better to play it safe.\n */\nexport function isPatched(target: InjectableTarget | CatchTarget): boolean {\n if (target.sentryPatched) {\n return true;\n }\n\n addNonEnumerableProperty(target, sentryPatched, true);\n return false;\n}\n\n/**\n * Returns span options for nest middleware spans.\n */\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function getMiddlewareSpanOptions(target: InjectableTarget | CatchTarget, name: string | undefined = undefined) {\n const span_name = name ?? target.name; // fallback to class name if no name is provided\n\n return {\n name: span_name,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'middleware.nestjs',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.middleware.nestjs',\n },\n };\n}\n\n/**\n * Returns span options for nest event spans.\n */\nexport function getEventSpanOptions(event: string): {\n name: string;\n attributes: Record<string, string>;\n forceTransaction: boolean;\n} {\n return {\n name: `event ${event}`,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'event.nestjs',\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.event.nestjs',\n },\n forceTransaction: true,\n };\n}\n\n/**\n * Adds instrumentation to a js observable and attaches the span to an active parent span.\n */\nexport function instrumentObservable(observable: Observable<unknown>, activeSpan: Span | undefined): void {\n if (activeSpan) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n observable.subscribe = new Proxy(observable.subscribe, {\n apply: (originalSubscribe, thisArgSubscribe, argsSubscribe) => {\n return withActiveSpan(activeSpan, () => {\n const subscription: Subscription = originalSubscribe.apply(thisArgSubscribe, argsSubscribe);\n subscription.add(() => activeSpan.end());\n return subscription;\n });\n },\n });\n }\n}\n\n/**\n * Proxies the next() call in a nestjs middleware to end the span when it is called.\n */\nexport function getNextProxy(next: NextFunction, span: Span, prevSpan: undefined | Span): NextFunction {\n return new Proxy(next, {\n apply: (originalNext, thisArgNext, argsNext) => {\n span.end();\n\n if (prevSpan) {\n return withActiveSpan(prevSpan, () => {\n return Reflect.apply(originalNext, thisArgNext, argsNext);\n });\n } else {\n return Reflect.apply(originalNext, thisArgNext, argsNext);\n }\n },\n });\n}\n"],"names":["addNonEnumerableProperty","SEMANTIC_ATTRIBUTE_SENTRY_OP","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","withActiveSpan"],"mappings":";;;;;;;;AASA,CAAM,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAgB,CAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;;AAErC,CAAA,CAAA;CACA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;CACA;CACA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;CACA,EAAA,CAAA,CAAA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,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;IACA,CAAA;IACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA;EACA,CAAA;AACA;;AAEA,CAAA,CAAA;CACA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA;CACA,CAAA;AACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,UAAA,EAAA;EACA,CAAA,EAAA,CAAA,UAAA,EAAA;IACA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAA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"}