From 17a5d3829c1ea05158e9e383b98651be960c1867 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Tue, 6 Feb 2024 18:18:33 -0500 Subject: [PATCH 001/106] build(profiling-node): make sure debug build plugin is used (#10534) Fixes https://github.com/getsentry/sentry-javascript/issues/10525 When writing the rollup config, we didn't include the debug build plugin. This led to things not be replaced properly as `profiling-node` bundles everything into a single file. This was also causing issues in our CI: https://github.com/getsentry/sentry-javascript/actions/runs/7804351046/job/21287026518?pr=10527 Backporting this fix to v7 so we can do a `7.100.1` release after we merge this in. --- .github/workflows/build.yml | 12 +- dev-packages/e2e-tests/package.json | 3 +- packages/profiling-node/rollup.npm.config.mjs | 31 ++-- yarn.lock | 144 ++++++++++++++++++ 4 files changed, 161 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b30882983ddb..f35e8b2b9d73 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -87,10 +87,12 @@ jobs: id: changed with: filters: | + workflow: &workflow + - '.github/**' shared: &shared + - *workflow - '*.{js,ts,json,yml,lock}' - 'CHANGELOG.md' - - '.github/**' - 'jest/**' - 'scripts/**' - 'packages/core/**' @@ -137,8 +139,11 @@ jobs: - *shared - 'packages/node/**' - 'packages/profiling-node/**' + - 'dev-packages/e2e-tests/test-applications/node-profiling/**' profiling_node_bindings: + - *workflow - 'packages/profiling-node/bindings/**' + - 'dev-packages/e2e-tests/test-applications/node-profiling/**' deno: - *shared - *browser @@ -1128,11 +1133,6 @@ jobs: - name: Build Profiling tarball run: yarn build:tarball --scope @sentry/profiling-node - - - name: Install esbuild - if: ${{ matrix.test-application == 'node-profiling' }} - working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }} - run: yarn add esbuild@0.19.11 # End rebuild profiling - name: Restore tarball cache diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index 9e0808b52693..1a583e39b848 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -22,7 +22,8 @@ "dotenv": "16.0.3", "glob": "8.0.3", "ts-node": "10.9.1", - "yaml": "2.2.2" + "yaml": "2.2.2", + "esbuild": "0.20.0" }, "volta": { "node": "18.17.1", diff --git a/packages/profiling-node/rollup.npm.config.mjs b/packages/profiling-node/rollup.npm.config.mjs index 51e812488bb1..057d5b8c60a6 100644 --- a/packages/profiling-node/rollup.npm.config.mjs +++ b/packages/profiling-node/rollup.npm.config.mjs @@ -1,25 +1,12 @@ import commonjs from '@rollup/plugin-commonjs'; import resolve from '@rollup/plugin-node-resolve'; import typescript from '@rollup/plugin-typescript'; -import { makeBaseNPMConfig, makeNPMConfigVariants, plugins } from '@sentry-internal/rollup-utils'; - -const configs = makeNPMConfigVariants(makeBaseNPMConfig()); -const cjsConfig = configs.find(config => config.output.format === 'cjs'); - -if (!cjsConfig) { - throw new Error('CJS config is required for profiling-node.'); -} - -const config = { - ...cjsConfig, - input: 'src/index.ts', - output: { ...cjsConfig.output, file: 'lib/index.js', format: 'cjs', dir: undefined, preserveModules: false }, - plugins: [ - plugins.makeLicensePlugin('Sentry Node Profiling'), - resolve(), - commonjs(), - typescript({ tsconfig: './tsconfig.json' }), - ], -}; - -export default config; +import { makeBaseNPMConfig } from '@sentry-internal/rollup-utils'; + +export default makeBaseNPMConfig({ + packageSpecificConfig: { + input: 'src/index.ts', + output: { file: 'lib/index.js', format: 'cjs', dir: undefined, preserveModules: false }, + plugins: [resolve(), commonjs(), typescript({ tsconfig: './tsconfig.json' })], + }, +}); diff --git a/yarn.lock b/yarn.lock index 66dd13126498..ddf84ad0e320 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2729,6 +2729,11 @@ broccoli-funnel "^3.0.5" ember-cli-babel "^7.26.11" +"@esbuild/aix-ppc64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.0.tgz#509621cca4e67caf0d18561a0c56f8b70237472f" + integrity sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw== + "@esbuild/android-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz#cf91e86df127aa3d141744edafcba0abdc577d23" @@ -2749,6 +2754,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.9.tgz#683794bdc3d27222d3eced7b74cad15979548031" integrity sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ== +"@esbuild/android-arm64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.0.tgz#109a6fdc4a2783fc26193d2687827045d8fef5ab" + integrity sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q== + "@esbuild/android-arm@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz#025b6246d3f68b7bbaa97069144fb5fb70f2fff2" @@ -2769,6 +2779,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.9.tgz#21a4de41f07b2af47401c601d64dfdefd056c595" integrity sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA== +"@esbuild/android-arm@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.0.tgz#1397a2c54c476c4799f9b9073550ede496c94ba5" + integrity sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g== + "@esbuild/android-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz#c820e0fef982f99a85c4b8bfdd582835f04cd96e" @@ -2789,6 +2804,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.9.tgz#e2d7674bc025ddc8699f0cc76cb97823bb63c252" integrity sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA== +"@esbuild/android-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.0.tgz#2b615abefb50dc0a70ac313971102f4ce2fdb3ca" + integrity sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ== + "@esbuild/darwin-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz#edef4487af6b21afabba7be5132c26d22379b220" @@ -2809,6 +2829,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.9.tgz#ae7a582289cc5c0bac15d4b9020a90cb7288f1e9" integrity sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw== +"@esbuild/darwin-arm64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.0.tgz#5c122ed799eb0c35b9d571097f77254964c276a2" + integrity sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ== + "@esbuild/darwin-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz#42829168730071c41ef0d028d8319eea0e2904b4" @@ -2829,6 +2854,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.9.tgz#8a216c66dcf51addeeb843d8cfaeff712821d12b" integrity sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ== +"@esbuild/darwin-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.0.tgz#9561d277002ba8caf1524f209de2b22e93d170c1" + integrity sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw== + "@esbuild/freebsd-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz#1f4af488bfc7e9ced04207034d398e793b570a27" @@ -2849,6 +2879,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.9.tgz#63d4f603e421252c3cd836b18d01545be7c6c440" integrity sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g== +"@esbuild/freebsd-arm64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.0.tgz#84178986a3138e8500d17cc380044868176dd821" + integrity sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ== + "@esbuild/freebsd-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz#636306f19e9bc981e06aa1d777302dad8fddaf72" @@ -2869,6 +2904,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.9.tgz#a3db52595be65360eae4de1d1fa3c1afd942e1e4" integrity sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA== +"@esbuild/freebsd-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.0.tgz#3f9ce53344af2f08d178551cd475629147324a83" + integrity sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ== + "@esbuild/linux-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz#a003f7ff237c501e095d4f3a09e58fc7b25a4aca" @@ -2889,6 +2929,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.9.tgz#4ae5811ce9f8d7df5eb9edd9765ea9401a534f13" integrity sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ== +"@esbuild/linux-arm64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.0.tgz#24efa685515689df4ecbc13031fa0a9dda910a11" + integrity sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw== + "@esbuild/linux-arm@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz#b591e6a59d9c4fe0eeadd4874b157ab78cf5f196" @@ -2909,6 +2954,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.9.tgz#9807e92cfd335f46326394805ad488e646e506f2" integrity sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw== +"@esbuild/linux-arm@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.0.tgz#6b586a488e02e9b073a75a957f2952b3b6e87b4c" + integrity sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg== + "@esbuild/linux-ia32@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz#24333a11027ef46a18f57019450a5188918e2a54" @@ -2929,6 +2979,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.9.tgz#18892c10f3106652b16f9da88a0362dc95ed46c7" integrity sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q== +"@esbuild/linux-ia32@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.0.tgz#84ce7864f762708dcebc1b123898a397dea13624" + integrity sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w== + "@esbuild/linux-loong64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz#d5ad459d41ed42bbd4d005256b31882ec52227d8" @@ -2949,6 +3004,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.9.tgz#dc2ebf9a125db0a1bba18c2bbfd4fbdcbcaf61c2" integrity sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA== +"@esbuild/linux-loong64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.0.tgz#1922f571f4cae1958e3ad29439c563f7d4fd9037" + integrity sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw== + "@esbuild/linux-mips64el@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz#4e5967a665c38360b0a8205594377d4dcf9c3726" @@ -2969,6 +3029,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.9.tgz#4c2f7c5d901015e3faf1563c4a89a50776cb07fd" integrity sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw== +"@esbuild/linux-mips64el@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.0.tgz#7ca1bd9df3f874d18dbf46af009aebdb881188fe" + integrity sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ== + "@esbuild/linux-ppc64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz#206443a02eb568f9fdf0b438fbd47d26e735afc8" @@ -2989,6 +3054,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.9.tgz#8385332713b4e7812869622163784a5633f76fc4" integrity sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ== +"@esbuild/linux-ppc64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.0.tgz#8f95baf05f9486343bceeb683703875d698708a4" + integrity sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw== + "@esbuild/linux-riscv64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz#c351e433d009bf256e798ad048152c8d76da2fc9" @@ -3009,6 +3079,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.9.tgz#23f1db24fa761be311874f32036c06249aa20cba" integrity sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg== +"@esbuild/linux-riscv64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.0.tgz#ca63b921d5fe315e28610deb0c195e79b1a262ca" + integrity sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA== + "@esbuild/linux-s390x@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz#661f271e5d59615b84b6801d1c2123ad13d9bd87" @@ -3029,6 +3104,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.9.tgz#2dffe497726b897c9f0109e774006e25b33b4fd0" integrity sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw== +"@esbuild/linux-s390x@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.0.tgz#cb3d069f47dc202f785c997175f2307531371ef8" + integrity sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ== + "@esbuild/linux-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz#e4ba18e8b149a89c982351443a377c723762b85f" @@ -3049,6 +3129,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.9.tgz#ceb1d62cd830724ff5b218e5d3172a8bad59420e" integrity sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A== +"@esbuild/linux-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz#ac617e0dc14e9758d3d7efd70288c14122557dc7" + integrity sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg== + "@esbuild/netbsd-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz#7d4f4041e30c5c07dd24ffa295c73f06038ec775" @@ -3069,6 +3154,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.9.tgz#0cbca65e9ef4d3fc41502d3e055e6f49479a8f18" integrity sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug== +"@esbuild/netbsd-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.0.tgz#6cc778567f1513da6e08060e0aeb41f82eb0f53c" + integrity sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ== + "@esbuild/openbsd-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz#970fa7f8470681f3e6b1db0cc421a4af8060ec35" @@ -3089,6 +3179,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.9.tgz#1f57adfbee09c743292c6758a3642e875bcad1cf" integrity sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw== +"@esbuild/openbsd-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.0.tgz#76848bcf76b4372574fb4d06cd0ed1fb29ec0fbe" + integrity sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA== + "@esbuild/sunos-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz#abc60e7c4abf8b89fb7a4fe69a1484132238022c" @@ -3109,6 +3204,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.9.tgz#116be6adbd2c7479edeeb5f6ea0441002ab4cb9c" integrity sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw== +"@esbuild/sunos-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.0.tgz#ea4cd0639bf294ad51bc08ffbb2dac297e9b4706" + integrity sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g== + "@esbuild/win32-arm64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz#7b0ff9e8c3265537a7a7b1fd9a24e7bd39fcd87a" @@ -3129,6 +3229,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.9.tgz#2be22131ab18af4693fd737b161d1ef34de8ca9d" integrity sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg== +"@esbuild/win32-arm64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.0.tgz#a5c171e4a7f7e4e8be0e9947a65812c1535a7cf0" + integrity sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ== + "@esbuild/win32-ia32@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz#e90fe5267d71a7b7567afdc403dfd198c292eb09" @@ -3149,6 +3254,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.9.tgz#e10ead5a55789b167b4225d2469324538768af7c" integrity sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg== +"@esbuild/win32-ia32@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz#f8ac5650c412d33ea62d7551e0caf82da52b7f85" + integrity sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg== + "@esbuild/win32-x64@0.16.17": version "0.16.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" @@ -3169,6 +3279,11 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.9.tgz#b2da6219b603e3fa371a78f53f5361260d0c5585" integrity sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ== +"@esbuild/win32-x64@0.20.0": + version "0.20.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.0.tgz#2efddf82828aac85e64cef62482af61c29561bee" + integrity sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg== + "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -14740,6 +14855,35 @@ esbuild@0.13.8: esbuild-windows-64 "0.13.8" esbuild-windows-arm64 "0.13.8" +esbuild@0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.0.tgz#a7170b63447286cd2ff1f01579f09970e6965da4" + integrity sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA== + optionalDependencies: + "@esbuild/aix-ppc64" "0.20.0" + "@esbuild/android-arm" "0.20.0" + "@esbuild/android-arm64" "0.20.0" + "@esbuild/android-x64" "0.20.0" + "@esbuild/darwin-arm64" "0.20.0" + "@esbuild/darwin-x64" "0.20.0" + "@esbuild/freebsd-arm64" "0.20.0" + "@esbuild/freebsd-x64" "0.20.0" + "@esbuild/linux-arm" "0.20.0" + "@esbuild/linux-arm64" "0.20.0" + "@esbuild/linux-ia32" "0.20.0" + "@esbuild/linux-loong64" "0.20.0" + "@esbuild/linux-mips64el" "0.20.0" + "@esbuild/linux-ppc64" "0.20.0" + "@esbuild/linux-riscv64" "0.20.0" + "@esbuild/linux-s390x" "0.20.0" + "@esbuild/linux-x64" "0.20.0" + "@esbuild/netbsd-x64" "0.20.0" + "@esbuild/openbsd-x64" "0.20.0" + "@esbuild/sunos-x64" "0.20.0" + "@esbuild/win32-arm64" "0.20.0" + "@esbuild/win32-ia32" "0.20.0" + "@esbuild/win32-x64" "0.20.0" + esbuild@^0.16.14, esbuild@^0.16.3: version "0.16.17" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" From 5a9f460de247657597ab6e2b9d3bed6e60abd680 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 7 Feb 2024 03:04:56 -0500 Subject: [PATCH 002/106] build: Only run profiling e2e test if bindings have changed (#10542) In CI currently on develop, we are stuck in a situation where we don't build bindings which means that the e2e tests always fail. Let's only run the profiling e2e tests whenever we change bindings, and make it a little more liberal for when we do run CI for changing bindings. --- .github/workflows/build.yml | 129 +++++++++++++++++++++++++++--------- 1 file changed, 96 insertions(+), 33 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f35e8b2b9d73..1b4eb8e140fc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -117,6 +117,11 @@ jobs: - *shared - *browser - 'packages/ember/**' + node: + - *shared + - 'packages/node/**' + - 'packages/node-experimental/**' + - 'dev-packages/node-integration-tests/**' nextjs: - *shared - *browser @@ -129,20 +134,15 @@ jobs: - 'packages/remix/**' - 'packages/node/**' - 'packages/react/**' - node: - - *shared - - 'packages/node/**' - - 'packages/node-experimental/**' - - 'packages/profiling-node/**' - - 'dev-packages/node-integration-tests/**' profiling_node: - *shared - 'packages/node/**' + - 'packages/node-experimental/**' - 'packages/profiling-node/**' - 'dev-packages/e2e-tests/test-applications/node-profiling/**' profiling_node_bindings: - *workflow - - 'packages/profiling-node/bindings/**' + - 'packages/profiling-node/**' - 'dev-packages/e2e-tests/test-applications/node-profiling/**' deno: - *shared @@ -559,7 +559,7 @@ jobs: job_profiling_node_unit_tests: name: Node Profiling Unit Tests needs: [job_get_metadata, job_build] - if: needs.job_get_metadata.outputs.changed_node =='true' || needs.job_get_metadata.outputs.changed_profiling_node == 'true' || github.event_name != 'pull_request' + if: needs.job_get_metadata.outputs.changed_node == 'true' || needs.job_get_metadata.outputs.changed_profiling_node == 'true' || github.event_name != 'pull_request' runs-on: ubuntu-latest timeout-minutes: 10 steps: @@ -1069,7 +1069,6 @@ jobs: 'node-experimental-fastify-app', 'node-hapi-app', 'node-exports-test-app', - 'node-profiling', 'vue-3' ] build-command: @@ -1091,7 +1090,6 @@ jobs: - test-application: 'nextjs-app-dir' build-command: 'test:build-13' label: 'nextjs-app-dir (next@13)' - steps: - name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }}) uses: actions/checkout@v4 @@ -1112,29 +1110,6 @@ jobs: env: DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} - # Rebuild profiling by compiling TS and pull the precompiled binary artifacts - - name: Build Profiling Node - if: | - (needs.job_get_metadata.outputs.changed_profiling_node_bindings == 'true') || - (needs.job_get_metadata.outputs.is_release == 'true') || - (github.event_name != 'pull_request') - run: yarn lerna run build:lib --scope @sentry/profiling-node - - - name: Extract Profiling Node Prebuilt Binaries - # @TODO: v4 breaks convenient merging of same name artifacts - # https://github.com/actions/upload-artifact/issues/478 - if: | - (needs.job_get_metadata.outputs.changed_profiling_node_bindings == 'true') || - (github.event_name != 'pull_request') - uses: actions/download-artifact@v3 - with: - name: profiling-node-binaries-${{ github.sha }} - path: ${{ github.workspace }}/packages/profiling-node/lib/ - - - name: Build Profiling tarball - run: yarn build:tarball --scope @sentry/profiling-node - # End rebuild profiling - - name: Restore tarball cache uses: actions/cache/restore@v4 with: @@ -1176,6 +1151,93 @@ jobs: directory: dist workingDirectory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }} + job_profiling_e2e_tests: + name: E2E ${{ matrix.label || matrix.test-application }} Test + # We only run E2E tests for non-fork PRs because the E2E tests require secrets to work and they can't be accessed from forks + # Dependabot PRs sadly also don't have access to secrets, so we skip them as well + # We need to add the `always()` check here because the previous step has this as well :( + # See: https://github.com/actions/runner/issues/2205 + if: + # Only run profiling e2e tests if profiling node bindings have changed + always() && needs.job_e2e_prepare.result == 'success' && + (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && + github.actor != 'dependabot[bot]' && ( + (needs.job_get_metadata.outputs.changed_profiling_node_bindings == 'true') || + (needs.job_get_metadata.outputs.is_release == 'true') || + (github.event_name != 'pull_request') + ) + needs: [job_get_metadata, job_build, job_e2e_prepare] + runs-on: ubuntu-20.04 + timeout-minutes: 10 + env: + E2E_TEST_AUTH_TOKEN: ${{ secrets.E2E_TEST_AUTH_TOKEN }} + E2E_TEST_DSN: ${{ secrets.E2E_TEST_DSN }} + E2E_TEST_SENTRY_ORG_SLUG: 'sentry-javascript-sdks' + E2E_TEST_SENTRY_TEST_PROJECT: 'sentry-javascript-e2e-tests' + strategy: + fail-fast: false + matrix: + test-application: ['node-profiling'] + build-command: + - false + label: + - false + steps: + - name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }}) + uses: actions/checkout@v4 + with: + ref: ${{ env.HEAD_COMMIT }} + - uses: pnpm/action-setup@v2 + with: + version: 8.3.1 + - name: Set up Node + uses: actions/setup-node@v4 + with: + node-version-file: 'dev-packages/e2e-tests/package.json' + - name: Restore caches + uses: ./.github/actions/restore-cache + env: + DEPENDENCY_CACHE_KEY: ${{ needs.job_build.outputs.dependency_cache_key }} + - name: Build Profiling Node + run: yarn lerna run build:lib --scope @sentry/profiling-node + - name: Extract Profiling Node Prebuilt Binaries + uses: actions/download-artifact@v3 + with: + name: profiling-node-binaries-${{ github.sha }} + path: ${{ github.workspace }}/packages/profiling-node/lib/ + - name: Build Profiling tarball + run: yarn build:tarball --scope @sentry/profiling-node + - name: Restore tarball cache + uses: actions/cache/restore@v4 + with: + path: ${{ github.workspace }}/packages/*/*.tgz + key: ${{ env.BUILD_PROFILING_NODE_CACHE_TARBALL_KEY }} + + - name: Get node version + id: versions + run: | + echo "echo node=$(jq -r '.volta.node' dev-packages/e2e-tests/package.json)" >> $GITHUB_OUTPUT + + - name: Validate Verdaccio + run: yarn test:validate + working-directory: dev-packages/e2e-tests + + - name: Prepare Verdaccio + run: yarn test:prepare + working-directory: dev-packages/e2e-tests + env: + E2E_TEST_PUBLISH_SCRIPT_NODE_VERSION: ${{ steps.versions.outputs.node }} + + - name: Build E2E app + working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }} + timeout-minutes: 5 + run: yarn ${{ matrix.build-command || 'test:build' }} + + - name: Run E2E test + working-directory: dev-packages/e2e-tests/test-applications/${{ matrix.test-application }} + timeout-minutes: 5 + run: yarn test:assert + job_required_jobs_passed: name: All required jobs passed or were skipped needs: @@ -1195,6 +1257,7 @@ jobs: job_browser_loader_tests, job_remix_integration_tests, job_e2e_tests, + job_profiling_e2e_tests, job_artifacts, job_lint, job_check_format, From 11576d62c083a7963280e8655b84b4ef25b2f605 Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Wed, 7 Feb 2024 04:55:46 -0330 Subject: [PATCH 003/106] fix(feedback): Replay breadcrumb for feedback events was incorrect (#10536) We are creating a replay breadcrumb when user feedback was submitted, however, the it was not typed correctly, which the timestamp not being included in the proper location. --- .../replay/src/coreHandlers/util/addFeedbackBreadcrumb.ts | 7 ++++--- packages/replay/src/types/replayFrame.ts | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/replay/src/coreHandlers/util/addFeedbackBreadcrumb.ts b/packages/replay/src/coreHandlers/util/addFeedbackBreadcrumb.ts index 0e08b459d3ca..39fc2923cabd 100644 --- a/packages/replay/src/coreHandlers/util/addFeedbackBreadcrumb.ts +++ b/packages/replay/src/coreHandlers/util/addFeedbackBreadcrumb.ts @@ -1,7 +1,7 @@ import { EventType } from '@sentry-internal/rrweb'; import type { FeedbackEvent } from '@sentry/types'; -import type { ReplayContainer } from '../../types'; +import type { ReplayBreadcrumbFrameEvent, ReplayContainer } from '../../types'; /** * Add a feedback breadcrumb event to replay. @@ -21,16 +21,17 @@ export function addFeedbackBreadcrumb(replay: ReplayContainer, event: FeedbackEv type: EventType.Custom, timestamp: event.timestamp * 1000, data: { - timestamp: event.timestamp, tag: 'breadcrumb', payload: { + timestamp: event.timestamp, + type: 'default', category: 'sentry.feedback', data: { feedbackId: event.event_id, }, }, }, - }); + } as ReplayBreadcrumbFrameEvent); return false; }); diff --git a/packages/replay/src/types/replayFrame.ts b/packages/replay/src/types/replayFrame.ts index 3a595e47a4cf..48dc4aa72a2a 100644 --- a/packages/replay/src/types/replayFrame.ts +++ b/packages/replay/src/types/replayFrame.ts @@ -128,7 +128,7 @@ interface ReplayOptionFrame { } interface ReplayFeedbackFrameData { - feedback_id: string; + feedbackId: string; } interface ReplayFeedbackFrame extends ReplayBaseBreadcrumbFrame { From 08a06ae71f9c42255174d5163cc2992c62db9fb2 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 7 Feb 2024 10:34:09 +0100 Subject: [PATCH 004/106] meta(changelog): Update changelog for 7.100.1 --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75a70e414df3..7ee384bf46c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 7.100.1 + +This release contains build fixes for profiling-node. + +- build(profiling-node): make sure debug build plugin is used #10534 +- build: Only run profiling e2e test if bindings have changed #10542 +- fix(feedback): Replay breadcrumb for feedback events was incorrect #10536 + ## 7.100.0 ### Important Changes From 424a9c1200f821e83770ceb12e6473b869a13bce Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Wed, 7 Feb 2024 09:37:44 +0000 Subject: [PATCH 005/106] release: 7.100.1 --- .../browser-integration-tests/package.json | 6 +++--- dev-packages/e2e-tests/package.json | 6 +++--- .../node-integration-tests/package.json | 8 ++++---- dev-packages/overhead-metrics/package.json | 2 +- dev-packages/rollup-utils/package.json | 2 +- lerna.json | 2 +- packages/angular-ivy/package.json | 10 +++++----- packages/angular/package.json | 10 +++++----- packages/astro/package.json | 12 ++++++------ packages/browser/package.json | 18 +++++++++--------- packages/bun/package.json | 10 +++++----- packages/core/package.json | 6 +++--- packages/core/src/version.ts | 2 +- packages/deno/package.json | 10 +++++----- packages/ember/package.json | 10 +++++----- packages/eslint-config-sdk/package.json | 6 +++--- packages/eslint-plugin-sdk/package.json | 2 +- packages/feedback/package.json | 8 ++++---- packages/gatsby/package.json | 10 +++++----- packages/hub/package.json | 8 ++++---- packages/integration-shims/package.json | 6 +++--- packages/integrations/package.json | 10 +++++----- packages/nextjs/package.json | 16 ++++++++-------- packages/node-experimental/package.json | 12 ++++++------ packages/node/package.json | 10 +++++----- packages/opentelemetry-node/package.json | 10 +++++----- packages/opentelemetry/package.json | 8 ++++---- packages/profiling-node/package.json | 2 +- packages/react/package.json | 10 +++++----- packages/remix/package.json | 12 ++++++------ packages/replay-canvas/package.json | 10 +++++----- packages/replay-worker/package.json | 2 +- packages/replay/package.json | 12 ++++++------ packages/serverless/package.json | 10 +++++----- packages/svelte/package.json | 10 +++++----- packages/sveltekit/package.json | 16 ++++++++-------- packages/tracing-internal/package.json | 8 ++++---- packages/tracing/package.json | 14 +++++++------- packages/types/package.json | 2 +- packages/typescript/package.json | 2 +- packages/utils/package.json | 4 ++-- packages/vercel-edge/package.json | 10 +++++----- packages/vue/package.json | 10 +++++----- packages/wasm/package.json | 10 +++++----- 44 files changed, 182 insertions(+), 182 deletions(-) diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 7f12a2c7d954..8bac002a1b6b 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/browser-integration-tests", - "version": "7.100.0", + "version": "7.100.1", "main": "index.js", "license": "MIT", "engines": { @@ -47,8 +47,8 @@ "@babel/preset-typescript": "^7.16.7", "@playwright/test": "^1.40.1", "@sentry-internal/rrweb": "2.11.0", - "@sentry/browser": "7.100.0", - "@sentry/tracing": "7.100.0", + "@sentry/browser": "7.100.1", + "@sentry/tracing": "7.100.1", "axios": "1.6.0", "babel-loader": "^8.2.2", "html-webpack-plugin": "^5.5.0", diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index 1a583e39b848..3baaeee56825 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/e2e-tests", - "version": "7.100.0", + "version": "7.100.1", "license": "MIT", "private": true, "scripts": { @@ -20,10 +20,10 @@ "@types/glob": "8.0.0", "@types/node": "^14.6.4", "dotenv": "16.0.3", + "esbuild": "0.20.0", "glob": "8.0.3", "ts-node": "10.9.1", - "yaml": "2.2.2", - "esbuild": "0.20.0" + "yaml": "2.2.2" }, "volta": { "node": "18.17.1", diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index d9679c29dc27..08b10bb97add 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/node-integration-tests", - "version": "7.100.0", + "version": "7.100.1", "license": "MIT", "engines": { "node": ">=10" @@ -29,9 +29,9 @@ "dependencies": { "@hapi/hapi": "^20.3.0", "@prisma/client": "3.15.2", - "@sentry/node": "7.100.0", - "@sentry/tracing": "7.100.0", - "@sentry/types": "7.100.0", + "@sentry/node": "7.100.1", + "@sentry/tracing": "7.100.1", + "@sentry/types": "7.100.1", "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21", "@types/pg": "^8.6.5", diff --git a/dev-packages/overhead-metrics/package.json b/dev-packages/overhead-metrics/package.json index 4e99daa10705..f865db0f81aa 100644 --- a/dev-packages/overhead-metrics/package.json +++ b/dev-packages/overhead-metrics/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "7.100.0", + "version": "7.100.1", "name": "@sentry-internal/overhead-metrics", "main": "index.js", "author": "Sentry", diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index 600c8cc19a58..c0205a951b64 100644 --- a/dev-packages/rollup-utils/package.json +++ b/dev-packages/rollup-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/rollup-utils", - "version": "7.100.0", + "version": "7.100.1", "description": "Rollup utilities used at Sentry for the Sentry JavaScript SDK", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/rollup-utils", diff --git a/lerna.json b/lerna.json index 820271b98438..f31be731288e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "7.100.0", + "version": "7.100.1", "npmClient": "yarn" } diff --git a/packages/angular-ivy/package.json b/packages/angular-ivy/package.json index b79371b7a4f6..7feff602bb33 100644 --- a/packages/angular-ivy/package.json +++ b/packages/angular-ivy/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular-ivy", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Angular with full Ivy Support", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular-ivy", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/angular/package.json b/packages/angular/package.json index d6668d7c2af0..2b29363605c6 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Angular", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/astro/package.json b/packages/astro/package.json index b26f7561d644..d00157e0acc1 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/astro", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Astro", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/astro", @@ -49,11 +49,11 @@ "astro": ">=3.x || >=4.0.0-beta" }, "dependencies": { - "@sentry/browser": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/node": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/node": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "@sentry/vite-plugin": "^2.8.0" }, "devDependencies": { diff --git a/packages/browser/package.json b/packages/browser/package.json index db4a7315a346..30034af79116 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -29,16 +29,16 @@ "access": "public" }, "dependencies": { - "@sentry-internal/feedback": "7.100.0", - "@sentry-internal/replay-canvas": "7.100.0", - "@sentry-internal/tracing": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/replay": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry-internal/feedback": "7.100.1", + "@sentry-internal/replay-canvas": "7.100.1", + "@sentry-internal/tracing": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/replay": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.100.0", + "@sentry-internal/integration-shims": "7.100.1", "@types/md5": "2.1.33", "btoa": "^1.2.1", "chai": "^4.1.2", diff --git a/packages/bun/package.json b/packages/bun/package.json index 74ccdc24611e..108f804635fe 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bun", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for bun", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/bun", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.0", - "@sentry/node": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/core": "7.100.1", + "@sentry/node": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "devDependencies": { "bun-types": "latest" diff --git a/packages/core/package.json b/packages/core/package.json index 24b1157174e6..0eafc2185970 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "7.100.0", + "version": "7.100.1", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -29,8 +29,8 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 180a606f1fa3..74db1f7dcf49 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = '7.100.0'; +export const SDK_VERSION = '7.100.1'; diff --git a/packages/deno/package.json b/packages/deno/package.json index b9ef8fec8bc2..a13354440679 100644 --- a/packages/deno/package.json +++ b/packages/deno/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/deno", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Deno", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/deno", @@ -17,10 +17,10 @@ "index.d.ts" ], "dependencies": { - "@sentry/browser": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.5", diff --git a/packages/ember/package.json b/packages/ember/package.json index e0ed8133ffc5..6169a32b523e 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Ember.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/ember", @@ -32,10 +32,10 @@ }, "dependencies": { "@embroider/macros": "^1.9.0", - "@sentry/browser": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "ember-auto-import": "^1.12.1 || ^2.4.3", "ember-cli-babel": "^7.26.11", "ember-cli-htmlbars": "^6.1.1", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index 0849cfc388b1..087fea6f09ae 100644 --- a/packages/eslint-config-sdk/package.json +++ b/packages/eslint-config-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config-sdk", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK eslint config", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-config-sdk", @@ -22,8 +22,8 @@ "access": "public" }, "dependencies": { - "@sentry-internal/eslint-plugin-sdk": "7.100.0", - "@sentry-internal/typescript": "7.100.0", + "@sentry-internal/eslint-plugin-sdk": "7.100.1", + "@sentry-internal/typescript": "7.100.1", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "eslint-config-prettier": "^6.11.0", diff --git a/packages/eslint-plugin-sdk/package.json b/packages/eslint-plugin-sdk/package.json index e5c16a64c307..6ecd86e2e7ca 100644 --- a/packages/eslint-plugin-sdk/package.json +++ b/packages/eslint-plugin-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-plugin-sdk", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK eslint plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-plugin-sdk", diff --git a/packages/feedback/package.json b/packages/feedback/package.json index 060defb0510c..5b533cb3c830 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/feedback", - "version": "7.100.0", + "version": "7.100.1", "description": "Sentry SDK integration for user feedback", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/feedback", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "scripts": { "build": "run-p build:transpile build:types build:bundle", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 4fca577e0bc8..f7a0a7a29c67 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Gatsby.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/gatsby", @@ -37,10 +37,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.0", - "@sentry/react": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry/core": "7.100.1", + "@sentry/react": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "@sentry/webpack-plugin": "1.19.0" }, "peerDependencies": { diff --git a/packages/hub/package.json b/packages/hub/package.json index b3dcf9f3045f..afc715f643eb 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "7.100.0", + "version": "7.100.1", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/integration-shims/package.json b/packages/integration-shims/package.json index 5bc5f40f039d..b67e6d82a599 100644 --- a/packages/integration-shims/package.json +++ b/packages/integration-shims/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-shims", - "version": "7.100.0", + "version": "7.100.1", "description": "Shims for integrations in Sentry SDK.", "main": "build/cjs/index.js", "module": "build/esm/index.js", @@ -39,8 +39,8 @@ "url": "https://github.com/getsentry/sentry-javascript/issues" }, "dependencies": { - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "engines": { "node": ">=12" diff --git a/packages/integrations/package.json b/packages/integrations/package.json index c232487a6e95..b0a2056745f7 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "7.100.0", + "version": "7.100.1", "description": "Pluggable integrations that can be used to enhance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -29,13 +29,13 @@ } }, "dependencies": { - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "localforage": "^1.8.1" }, "devDependencies": { - "@sentry/browser": "7.100.0", + "@sentry/browser": "7.100.1", "chai": "^4.1.2" }, "scripts": { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 59a83f0b80a9..53a9ee6ffcf3 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Next.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nextjs", @@ -25,13 +25,13 @@ }, "dependencies": { "@rollup/plugin-commonjs": "24.0.0", - "@sentry/core": "7.100.0", - "@sentry/integrations": "7.100.0", - "@sentry/node": "7.100.0", - "@sentry/react": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", - "@sentry/vercel-edge": "7.100.0", + "@sentry/core": "7.100.1", + "@sentry/integrations": "7.100.1", + "@sentry/node": "7.100.1", + "@sentry/react": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", + "@sentry/vercel-edge": "7.100.1", "@sentry/webpack-plugin": "1.21.0", "chalk": "3.0.0", "resolve": "1.22.8", diff --git a/packages/node-experimental/package.json b/packages/node-experimental/package.json index 5ee77ee6fc00..0b81845fc043 100644 --- a/packages/node-experimental/package.json +++ b/packages/node-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node-experimental", - "version": "7.100.0", + "version": "7.100.1", "description": "Experimental version of a Node SDK using OpenTelemetry for performance instrumentation", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node-experimental", @@ -49,11 +49,11 @@ "@opentelemetry/sdk-trace-base": "1.21.0", "@opentelemetry/semantic-conventions": "1.21.0", "@prisma/instrumentation": "5.9.0", - "@sentry/core": "7.100.0", - "@sentry/node": "7.100.0", - "@sentry/opentelemetry": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/core": "7.100.1", + "@sentry/node": "7.100.1", + "@sentry/opentelemetry": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "optionalDependencies": { "opentelemetry-instrumentation-fetch-node": "1.1.0" diff --git a/packages/node/package.json b/packages/node/package.json index 6b538d1a2246..0d0347bc3c26 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry-internal/tracing": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "devDependencies": { "@types/cookie": "0.5.2", diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index 95e6bc8da8fd..8f9a7c01b906 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry-node", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for OpenTelemetry Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry-node", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "peerDependencies": { "@opentelemetry/api": "1.x", @@ -45,7 +45,7 @@ "@opentelemetry/sdk-trace-base": "^1.17.1", "@opentelemetry/sdk-trace-node": "^1.17.1", "@opentelemetry/semantic-conventions": "^1.17.1", - "@sentry/node": "7.100.0" + "@sentry/node": "7.100.1" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index 508c8468992c..74e75310e232 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry utilities for OpenTelemetry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0", diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index 8118230deb07..29fed9f5a217 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/profiling-node", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Node.js Profiling", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/profiling-node", diff --git a/packages/react/package.json b/packages/react/package.json index f4898621fd4a..ff87bbde942c 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for React.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { diff --git a/packages/remix/package.json b/packages/remix/package.json index 2d5a5e3eb9ec..ab2882440830 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/remix", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Remix", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/remix", @@ -35,11 +35,11 @@ }, "dependencies": { "@sentry/cli": "^2.28.0", - "@sentry/core": "7.100.0", - "@sentry/node": "7.100.0", - "@sentry/react": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry/core": "7.100.1", + "@sentry/node": "7.100.1", + "@sentry/react": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "glob": "^10.3.4", "yargs": "^17.6.0" }, diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index 4da137fdcc98..e136e75b0e03 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-canvas", - "version": "7.100.0", + "version": "7.100.1", "description": "Replay canvas integration", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -59,10 +59,10 @@ "@sentry-internal/rrweb": "2.11.0" }, "dependencies": { - "@sentry/core": "7.100.0", - "@sentry/replay": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/core": "7.100.1", + "@sentry/replay": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "engines": { "node": ">=12" diff --git a/packages/replay-worker/package.json b/packages/replay-worker/package.json index c36a2b1892cc..6b01aa0eaf4a 100644 --- a/packages/replay-worker/package.json +++ b/packages/replay-worker/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-worker", - "version": "7.100.0", + "version": "7.100.1", "description": "Worker for @sentry/replay", "main": "build/npm/esm/index.js", "module": "build/npm/esm/index.js", diff --git a/packages/replay/package.json b/packages/replay/package.json index 60c6c637b4c5..5a2bd74efb19 100644 --- a/packages/replay/package.json +++ b/packages/replay/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/replay", - "version": "7.100.0", + "version": "7.100.1", "description": "User replays for Sentry", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -53,17 +53,17 @@ "homepage": "https://docs.sentry.io/platforms/javascript/session-replay/", "devDependencies": { "@babel/core": "^7.17.5", - "@sentry-internal/replay-worker": "7.100.0", + "@sentry-internal/replay-worker": "7.100.1", "@sentry-internal/rrweb": "2.11.0", "@sentry-internal/rrweb-snapshot": "2.11.0", "fflate": "^0.8.1", "jsdom-worker": "^0.2.1" }, "dependencies": { - "@sentry-internal/tracing": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry-internal/tracing": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "engines": { "node": ">=12" diff --git a/packages/serverless/package.json b/packages/serverless/package.json index e94ed265dcdc..4b43c8a0f206 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/serverless", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for various serverless solutions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.0", - "@sentry/node": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry/core": "7.100.1", + "@sentry/node": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "@types/aws-lambda": "^8.10.62", "@types/express": "^4.17.14" }, diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 6406acf463e5..537f9ac15869 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/svelte", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Svelte", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/svelte", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "magic-string": "^0.30.0" }, "peerDependencies": { diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index 9b62eb76fa57..a518d18703d4 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sveltekit", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for SvelteKit", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/sveltekit", @@ -37,13 +37,13 @@ "@sveltejs/kit": "1.x || 2.x" }, "dependencies": { - "@sentry-internal/tracing": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/integrations": "7.100.0", - "@sentry/node": "7.100.0", - "@sentry/svelte": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry-internal/tracing": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/integrations": "7.100.1", + "@sentry/node": "7.100.1", + "@sentry/svelte": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "@sentry/vite-plugin": "^0.6.1", "magicast": "0.2.8", "sorcery": "0.11.0" diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json index 1783c2dc075b..52521ca890f9 100644 --- a/packages/tracing-internal/package.json +++ b/packages/tracing-internal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/tracing", - "version": "7.100.0", + "version": "7.100.1", "description": "Sentry Internal Tracing Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "devDependencies": { "@types/express": "^4.17.14" diff --git a/packages/tracing/package.json b/packages/tracing/package.json index cbcbb217493e..594243e1a51f 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/tracing", - "version": "7.100.0", + "version": "7.100.1", "description": "Sentry Performance Monitoring Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing", @@ -29,14 +29,14 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.100.0" + "@sentry-internal/tracing": "7.100.1" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.100.0", - "@sentry/browser": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0", + "@sentry-internal/integration-shims": "7.100.1", + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1", "@types/express": "^4.17.14" }, "scripts": { diff --git a/packages/types/package.json b/packages/types/package.json index bd2250fe145e..e3dacfc8b017 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "7.100.0", + "version": "7.100.1", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 4e241c89cb38..26ef62e6f079 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "7.100.0", + "version": "7.100.1", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript", diff --git a/packages/utils/package.json b/packages/utils/package.json index f3ad380a7c4d..e66530f64b90 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "7.100.0", + "version": "7.100.1", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -29,7 +29,7 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.100.0" + "@sentry/types": "7.100.1" }, "devDependencies": { "@types/array.prototype.flat": "^1.2.1", diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 4257a3a83713..34d21a327a71 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vercel-edge", - "version": "7.100.0", + "version": "7.100.1", "description": "Offical Sentry SDK for the Vercel Edge Runtime", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vercel-edge", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry-internal/tracing": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "devDependencies": { "@edge-runtime/jest-environment": "2.2.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index f2d93043dd94..25f38869174f 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "7.100.0", + "version": "7.100.1", "description": "Official Sentry SDK for Vue.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vue", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "peerDependencies": { "vue": "2.x || 3.x" diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 8f77b463c7c5..794cbe122124 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "7.100.0", + "version": "7.100.1", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.100.0", - "@sentry/core": "7.100.0", - "@sentry/types": "7.100.0", - "@sentry/utils": "7.100.0" + "@sentry/browser": "7.100.1", + "@sentry/core": "7.100.1", + "@sentry/types": "7.100.1", + "@sentry/utils": "7.100.1" }, "scripts": { "build": "run-p build:transpile build:bundle build:types", From 43b8a3d7490a6723a5e1eabde77593f9ceb484ee Mon Sep 17 00:00:00 2001 From: Leo Thorp Date: Fri, 9 Feb 2024 01:52:40 -0700 Subject: [PATCH 006/106] docs(nextjs): Fix function name in deprecation message (#10583) --- packages/nextjs/src/common/wrapApiHandlerWithSentry.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nextjs/src/common/wrapApiHandlerWithSentry.ts b/packages/nextjs/src/common/wrapApiHandlerWithSentry.ts index 62124e46912e..ed591055d0a3 100644 --- a/packages/nextjs/src/common/wrapApiHandlerWithSentry.ts +++ b/packages/nextjs/src/common/wrapApiHandlerWithSentry.ts @@ -45,7 +45,7 @@ export const withSentryAPI = wrapApiHandlerWithSentry; * @param parameterizedRoute The route whose handler is being wrapped. Meant for internal use only. * @returns A wrapped version of the handler * - * @deprecated Use `wrapApiWithSentry()` instead + * @deprecated Use `wrapApiHandlerWithSentry()` instead */ export function withSentry(apiHandler: NextApiHandler, parameterizedRoute?: string): NextApiHandler { return new Proxy(apiHandler, { From 8ac381c7f51aac72f3ce0100af5c4c93f75ed0b1 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Mon, 12 Feb 2024 09:42:24 +0100 Subject: [PATCH 007/106] feat(core): Deprecate the `Hub` constructor (#10584) --- MIGRATION.md | 39 +++++++++++++++++ .../bun/test/integrations/bunserver.test.ts | 1 + packages/core/src/hub.ts | 43 +++++++++++++++++++ packages/core/test/lib/base.test.ts | 9 ++++ packages/core/test/lib/exports.test.ts | 3 ++ packages/core/test/lib/integration.test.ts | 4 ++ packages/core/test/lib/scope.test.ts | 1 + packages/core/test/lib/sdk.test.ts | 1 + .../tracing/dynamicSamplingContext.test.ts | 1 + packages/core/test/lib/tracing/errors.test.ts | 1 + packages/core/test/lib/tracing/trace.test.ts | 4 ++ .../deno/test/__snapshots__/mod.test.ts.snap | 4 +- packages/deno/test/mod.test.ts | 1 + packages/node-experimental/src/sdk/hub.ts | 2 +- packages/node/test/handlers.test.ts | 14 ++++++ packages/node/test/integrations/http.test.ts | 7 +++ .../node/test/integrations/undici.test.ts | 2 + .../test/propagator.test.ts | 3 +- .../test/spanprocessor.test.ts | 4 ++ .../opentelemetry/test/propagator.test.ts | 4 +- packages/sveltekit/test/server/handle.test.ts | 1 + .../test/browser/backgroundtab.test.ts | 1 + 22 files changed, 145 insertions(+), 5 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index e315bf77ccfd..ac8affd8c71a 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -272,6 +272,45 @@ If you are using the `Hub` right now, see the following table on how to migrate | endSession() | `Sentry.endSession()` | | shouldSendDefaultPii() | REMOVED - The closest equivalent is `Sentry.getClient().getOptions().sendDefaultPii` | +The `Hub` constructor is also deprecated and will be removed in the next major version. If you are creating Hubs for +multi-client use like so: + +```ts +// OLD +const hub = new Hub(); +hub.bindClient(client); +makeMain(hub); +``` + +instead initialize the client as follows: + +```ts +// NEW +Sentry.withIsolationScope(() => { + Sentry.setCurrentClient(client); + client.init(); +}); +``` + +If you are using the Hub to capture events like so: + +```ts +// OLD +const client = new Client(); +const hub = new Hub(client); +hub.captureException(); +``` + +instead capture isolated events as follows: + +```ts +// NEW +const client = new Client(); +const scope = new Scope(); +scope.setClient(client); +scope.captureException(); +``` + ## Deprecate `client.setupIntegrations()` Instead, use the new `client.init()` method. You should probably not use this directly and instead use `Sentry.init()`, diff --git a/packages/bun/test/integrations/bunserver.test.ts b/packages/bun/test/integrations/bunserver.test.ts index bd62881b8ccf..fd55e56ff50f 100644 --- a/packages/bun/test/integrations/bunserver.test.ts +++ b/packages/bun/test/integrations/bunserver.test.ts @@ -19,6 +19,7 @@ describe('Bun Serve Integration', () => { beforeEach(() => { const options = getDefaultBunClientOptions({ tracesSampleRate: 1, debug: true }); client = new BunClient(options); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/core/src/hub.ts b/packages/core/src/hub.ts index d0f7c1cf4430..3785ab61fec3 100644 --- a/packages/core/src/hub.ts +++ b/packages/core/src/hub.ts @@ -121,6 +121,46 @@ export class Hub implements HubInterface { * @param client bound to the hub. * @param scope bound to the hub. * @param version number, higher number means higher priority. + * + * @deprecated Instantiation of Hub objects is deprecated and the constructor will be removed in version 8 of the SDK. + * + * If you are currently using the Hub for multi-client use like so: + * + * ``` + * // OLD + * const hub = new Hub(); + * hub.bindClient(client); + * makeMain(hub) + * ``` + * + * instead initialize the client as follows: + * + * ``` + * // NEW + * Sentry.withIsolationScope(() => { + * Sentry.setCurrentClient(client); + * client.init(); + * }); + * ``` + * + * If you are using the Hub to capture events like so: + * + * ``` + * // OLD + * const client = new Client(); + * const hub = new Hub(client); + * hub.captureException() + * ``` + * + * instead capture isolated events as follows: + * + * ``` + * // NEW + * const client = new Client(); + * const scope = new Scope(); + * scope.setClient(client); + * scope.captureException(); + * ``` */ public constructor( client?: Client, @@ -749,6 +789,7 @@ function getGlobalHub(registry: Carrier = getMainCarrier()): Hub { // eslint-disable-next-line deprecation/deprecation getHubFromCarrier(registry).isOlderThan(API_VERSION) ) { + // eslint-disable-next-line deprecation/deprecation setHubOnCarrier(registry, new Hub()); } @@ -774,6 +815,7 @@ export function ensureHubOnCarrier(carrier: Carrier, parent: Hub = getGlobalHub( const scope = parent.getScope(); // eslint-disable-next-line deprecation/deprecation const isolationScope = parent.getIsolationScope(); + // eslint-disable-next-line deprecation/deprecation setHubOnCarrier(carrier, new Hub(client, scope.clone(), isolationScope.clone())); } } @@ -823,6 +865,7 @@ function hasHubOnCarrier(carrier: Carrier): boolean { * @hidden */ export function getHubFromCarrier(carrier: Carrier): Hub { + // eslint-disable-next-line deprecation/deprecation return getGlobalSingleton('hub', () => new Hub(), carrier); } diff --git a/packages/core/test/lib/base.test.ts b/packages/core/test/lib/base.test.ts index 197ffa189779..855ea73da056 100644 --- a/packages/core/test/lib/base.test.ts +++ b/packages/core/test/lib/base.test.ts @@ -119,6 +119,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({}); const client = new TestClient(options); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); scope.addBreadcrumb({ message: 'hello' }, 100); @@ -134,6 +135,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({}); const client = new TestClient(options); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); scope.addBreadcrumb({ message: 'hello' }, 100); @@ -149,6 +151,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({ maxBreadcrumbs: 1 }); const client = new TestClient(options); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); scope.addBreadcrumb({ message: 'hello' }, 100); @@ -165,6 +168,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({}); const client = new TestClient(options); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); scope.addBreadcrumb({ message: 'hello' }); @@ -181,6 +185,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({ beforeBreadcrumb }); const client = new TestClient(options); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); // eslint-disable-next-line deprecation/deprecation @@ -196,6 +201,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({ beforeBreadcrumb }); const client = new TestClient(options); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); // eslint-disable-next-line deprecation/deprecation @@ -211,6 +217,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({ beforeBreadcrumb }); const client = new TestClient(options); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); // eslint-disable-next-line deprecation/deprecation @@ -226,6 +233,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({ beforeBreadcrumb }); const client = new TestClient(options); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); // eslint-disable-next-line deprecation/deprecation @@ -620,6 +628,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({ dsn: PUBLIC_DSN, maxBreadcrumbs: 1 }); const client = new TestClient(options); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); // eslint-disable-next-line deprecation/deprecation hub.addBreadcrumb({ message: '1' }); diff --git a/packages/core/test/lib/exports.test.ts b/packages/core/test/lib/exports.test.ts index cb4c9fbdd16d..e611c25e42dd 100644 --- a/packages/core/test/lib/exports.test.ts +++ b/packages/core/test/lib/exports.test.ts @@ -31,6 +31,7 @@ function getTestClient(): TestClient { describe('withScope', () => { beforeEach(() => { const client = getTestClient(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -173,6 +174,7 @@ describe('withScope', () => { describe('session APIs', () => { beforeEach(() => { const client = getTestClient(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -326,6 +328,7 @@ describe('isInitialized', () => { it('returns true if client is setup', () => { const client = getTestClient(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/core/test/lib/integration.test.ts b/packages/core/test/lib/integration.test.ts index e819f9413aec..a86c83903152 100644 --- a/packages/core/test/lib/integration.test.ts +++ b/packages/core/test/lib/integration.test.ts @@ -617,6 +617,7 @@ describe('addIntegration', () => { } const client = getTestClient(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -635,6 +636,7 @@ describe('addIntegration', () => { setupOnce = jest.fn(); } + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -660,6 +662,7 @@ describe('addIntegration', () => { } const client = getTestClient(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -683,6 +686,7 @@ describe('addIntegration', () => { } const client = getTestClient(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/core/test/lib/scope.test.ts b/packages/core/test/lib/scope.test.ts index 4b4242ce7dc6..88e275cc84dd 100644 --- a/packages/core/test/lib/scope.test.ts +++ b/packages/core/test/lib/scope.test.ts @@ -522,6 +522,7 @@ describe('withActiveSpan()', () => { const options = getDefaultTestClientOptions({ enableTracing: true }); const client = new TestClient(options); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); makeMain(hub); // eslint-disable-line deprecation/deprecation }); diff --git a/packages/core/test/lib/sdk.test.ts b/packages/core/test/lib/sdk.test.ts index c9d18c02c78e..c56bb8b11620 100644 --- a/packages/core/test/lib/sdk.test.ts +++ b/packages/core/test/lib/sdk.test.ts @@ -87,6 +87,7 @@ describe('SDK', () => { describe('captureCheckIn', () => { afterEach(function () { + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/core/test/lib/tracing/dynamicSamplingContext.test.ts b/packages/core/test/lib/tracing/dynamicSamplingContext.test.ts index 01c99e3b87fd..db79c8850200 100644 --- a/packages/core/test/lib/tracing/dynamicSamplingContext.test.ts +++ b/packages/core/test/lib/tracing/dynamicSamplingContext.test.ts @@ -9,6 +9,7 @@ describe('getDynamicSamplingContextFromSpan', () => { beforeEach(() => { const options = getDefaultTestClientOptions({ tracesSampleRate: 1.0, release: '1.0.1' }); const client = new TestClient(options); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/core/test/lib/tracing/errors.test.ts b/packages/core/test/lib/tracing/errors.test.ts index b83820865ede..35a80f60265a 100644 --- a/packages/core/test/lib/tracing/errors.test.ts +++ b/packages/core/test/lib/tracing/errors.test.ts @@ -34,6 +34,7 @@ describe('registerErrorHandlers()', () => { mockAddGlobalErrorInstrumentationHandler.mockClear(); mockAddGlobalUnhandledRejectionInstrumentationHandler.mockClear(); const options = getDefaultBrowserClientOptions({ enableTracing: true }); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(new BrowserClient(options)); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/core/test/lib/tracing/trace.test.ts b/packages/core/test/lib/tracing/trace.test.ts index 4c9190e56b6a..bb5302bb54db 100644 --- a/packages/core/test/lib/tracing/trace.test.ts +++ b/packages/core/test/lib/tracing/trace.test.ts @@ -36,6 +36,7 @@ describe('startSpan', () => { beforeEach(() => { const options = getDefaultTestClientOptions({ tracesSampleRate: 0.0 }); client = new TestClient(options); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -427,6 +428,7 @@ describe('startSpanManual', () => { beforeEach(() => { const options = getDefaultTestClientOptions({ tracesSampleRate: 1 }); client = new TestClient(options); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -537,6 +539,7 @@ describe('startInactiveSpan', () => { beforeEach(() => { const options = getDefaultTestClientOptions({ tracesSampleRate: 1 }); client = new TestClient(options); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -662,6 +665,7 @@ describe('continueTrace', () => { beforeEach(() => { const options = getDefaultTestClientOptions({ tracesSampleRate: 0.0 }); client = new TestClient(options); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/deno/test/__snapshots__/mod.test.ts.snap b/packages/deno/test/__snapshots__/mod.test.ts.snap index 607d87b968bc..d728072d38d6 100644 --- a/packages/deno/test/__snapshots__/mod.test.ts.snap +++ b/packages/deno/test/__snapshots__/mod.test.ts.snap @@ -82,7 +82,7 @@ snapshot[`captureException 1`] = ` filename: "app:///test/mod.test.ts", function: "", in_app: true, - lineno: 46, + lineno: 47, post_context: [ "", " await delay(200);", @@ -108,7 +108,7 @@ snapshot[`captureException 1`] = ` filename: "app:///test/mod.test.ts", function: "something", in_app: true, - lineno: 43, + lineno: 44, post_context: [ " }", "", diff --git a/packages/deno/test/mod.test.ts b/packages/deno/test/mod.test.ts index 657ce0a1f233..aae0963b8da5 100644 --- a/packages/deno/test/mod.test.ts +++ b/packages/deno/test/mod.test.ts @@ -22,6 +22,7 @@ function getTestClient( }); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); return [hub, client]; diff --git a/packages/node-experimental/src/sdk/hub.ts b/packages/node-experimental/src/sdk/hub.ts index b2ffaa16b364..1ae123c92d9c 100644 --- a/packages/node-experimental/src/sdk/hub.ts +++ b/packages/node-experimental/src/sdk/hub.ts @@ -144,7 +144,7 @@ export function getCurrentHub(): Hub { */ export function makeMain(hub: Hub): Hub { // eslint-disable-next-line no-console - console.warn('makeMain is a noop in @sentry/node-experimental. Use `setCurrentScope` instead.'); + console.warn('makeMain is a noop in @sentry/node-experimental. Use `setCurrentClient` instead.'); return hub; } diff --git a/packages/node/test/handlers.test.ts b/packages/node/test/handlers.test.ts index 8438a3fc2acd..34e00f06b9c6 100644 --- a/packages/node/test/handlers.test.ts +++ b/packages/node/test/handlers.test.ts @@ -66,6 +66,7 @@ describe('requestHandler', () => { it('autoSessionTracking is enabled, sets requestSession status to ok, when handling a request', () => { const options = getDefaultNodeClientOptions({ autoSessionTracking: true, release: '1.2' }); client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); jest.spyOn(sentryCore, 'getCurrentHub').mockReturnValue(hub); @@ -80,6 +81,7 @@ describe('requestHandler', () => { it('autoSessionTracking is disabled, does not set requestSession, when handling a request', () => { const options = getDefaultNodeClientOptions({ autoSessionTracking: false, release: '1.2' }); client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); jest.spyOn(sentryCore, 'getCurrentHub').mockReturnValue(hub); @@ -94,6 +96,7 @@ describe('requestHandler', () => { it('autoSessionTracking is enabled, calls _captureRequestSession, on response finish', done => { const options = getDefaultNodeClientOptions({ autoSessionTracking: true, release: '1.2' }); client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); jest.spyOn(sentryCore, 'getCurrentHub').mockReturnValue(hub); @@ -116,6 +119,7 @@ describe('requestHandler', () => { it('autoSessionTracking is disabled, does not call _captureRequestSession, on response finish', done => { const options = getDefaultNodeClientOptions({ autoSessionTracking: false, release: '1.2' }); client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); jest.spyOn(sentryCore, 'getCurrentHub').mockReturnValue(hub); @@ -162,6 +166,7 @@ describe('requestHandler', () => { }); it('stores request and request data options in `sdkProcessingMetadata`', () => { + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(new NodeClient(getDefaultNodeClientOptions())); jest.spyOn(sentryCore, 'getCurrentHub').mockReturnValue(hub); mockAsyncContextStrategy(() => hub); @@ -198,6 +203,7 @@ describe('tracingHandler', () => { } beforeEach(() => { + // eslint-disable-next-line deprecation/deprecation hub = new Hub(new NodeClient(getDefaultNodeClientOptions({ tracesSampleRate: 1.0 }))); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -322,6 +328,7 @@ describe('tracingHandler', () => { it('extracts request data for sampling context', () => { const tracesSampler = jest.fn(); const options = getDefaultNodeClientOptions({ tracesSampler }); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(new NodeClient(options)); mockAsyncContextStrategy(() => hub); @@ -344,6 +351,7 @@ describe('tracingHandler', () => { it('puts its transaction on the scope', () => { const options = getDefaultNodeClientOptions({ tracesSampleRate: 1.0 }); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(new NodeClient(options)); jest.spyOn(sentryCore, 'getCurrentHub').mockReturnValue(hub); @@ -474,6 +482,7 @@ describe('tracingHandler', () => { it('stores request in transaction metadata', () => { const options = getDefaultNodeClientOptions({ tracesSampleRate: 1.0 }); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(new NodeClient(options)); jest.spyOn(sentryCore, 'getCurrentHub').mockReturnValue(hub); @@ -532,6 +541,7 @@ describe('errorHandler()', () => { client.initSessionFlusher(); const scope = getCurrentScope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); jest.spyOn(client, '_captureRequestSession'); @@ -548,6 +558,7 @@ describe('errorHandler()', () => { client = new NodeClient(options); const scope = getCurrentScope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); jest.spyOn(client, '_captureRequestSession'); @@ -566,6 +577,7 @@ describe('errorHandler()', () => { // by the`requestHandler`) client.initSessionFlusher(); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); mockAsyncContextStrategy(() => hub); @@ -588,6 +600,7 @@ describe('errorHandler()', () => { // by the`requestHandler`) client.initSessionFlusher(); const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client, scope); jest.spyOn(client, '_captureRequestSession'); @@ -602,6 +615,7 @@ describe('errorHandler()', () => { const options = getDefaultNodeClientOptions({}); client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); mockAsyncContextStrategy(() => hub); // eslint-disable-next-line deprecation/deprecation diff --git a/packages/node/test/integrations/http.test.ts b/packages/node/test/integrations/http.test.ts index 0b1d81edd29c..cfc6bc9550c7 100644 --- a/packages/node/test/integrations/http.test.ts +++ b/packages/node/test/integrations/http.test.ts @@ -67,6 +67,7 @@ describe('tracing', () => { ...customOptions, }); const client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -270,6 +271,7 @@ describe('tracing', () => { environment: 'production', instrumenter: 'otel', }); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(new NodeClient(options)); // eslint-disable-next-line deprecation/deprecation @@ -371,6 +373,7 @@ describe('tracing', () => { }); const client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -622,6 +625,7 @@ describe('default protocols', () => { }, }); const client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -715,6 +719,7 @@ describe('httpIntegration', () => { environment: 'production', }); const client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -775,6 +780,7 @@ describe('httpIntegration', () => { describe('_shouldCreateSpans', () => { beforeEach(function () { + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -796,6 +802,7 @@ describe('_shouldCreateSpans', () => { describe('_getShouldCreateSpanForRequest', () => { beforeEach(function () { + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/node/test/integrations/undici.test.ts b/packages/node/test/integrations/undici.test.ts index f280b3d4018a..27d6d9ed5ca8 100644 --- a/packages/node/test/integrations/undici.test.ts +++ b/packages/node/test/integrations/undici.test.ts @@ -35,6 +35,7 @@ const DEFAULT_OPTIONS = getDefaultNodeClientOptions({ beforeEach(() => { const client = new NodeClient(DEFAULT_OPTIONS); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -387,6 +388,7 @@ conditionalTest({ min: 16 })('Undici integration', () => { environment: 'production', }); const client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/opentelemetry-node/test/propagator.test.ts b/packages/opentelemetry-node/test/propagator.test.ts index ddd4594c5157..494b3aff7f07 100644 --- a/packages/opentelemetry-node/test/propagator.test.ts +++ b/packages/opentelemetry-node/test/propagator.test.ts @@ -47,7 +47,8 @@ describe('SentryPropagator', () => { }), }; // @ts-expect-error Use mock client for unit tests - const hub: Hub = new Hub(client); + // eslint-disable-next-line deprecation/deprecation + const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/opentelemetry-node/test/spanprocessor.test.ts b/packages/opentelemetry-node/test/spanprocessor.test.ts index 940f5c38bdab..072ba35881f8 100644 --- a/packages/opentelemetry-node/test/spanprocessor.test.ts +++ b/packages/opentelemetry-node/test/spanprocessor.test.ts @@ -46,6 +46,7 @@ describe('SentrySpanProcessor', () => { SPAN_MAP.clear(); client = new NodeClient(DEFAULT_NODE_CLIENT_OPTIONS); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -964,6 +965,7 @@ describe('SentrySpanProcessor', () => { return null; }, }); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -1011,6 +1013,7 @@ describe('SentrySpanProcessor', () => { return null; }, }); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); @@ -1058,6 +1061,7 @@ describe('SentrySpanProcessor', () => { sentryTransaction = transaction; }); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/opentelemetry/test/propagator.test.ts b/packages/opentelemetry/test/propagator.test.ts index a4eb98ab2126..012542d47e35 100644 --- a/packages/opentelemetry/test/propagator.test.ts +++ b/packages/opentelemetry/test/propagator.test.ts @@ -40,8 +40,10 @@ describe('SentryPropagator', () => { publicKey: 'abc', }), }; + // @ts-expect-error Use mock client for unit tests - const hub: Hub = new Hub(client); + // eslint-disable-next-line deprecation/deprecation + const hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/sveltekit/test/server/handle.test.ts b/packages/sveltekit/test/server/handle.test.ts index 6465cbfe5da5..5498d80ea0ed 100644 --- a/packages/sveltekit/test/server/handle.test.ts +++ b/packages/sveltekit/test/server/handle.test.ts @@ -91,6 +91,7 @@ beforeAll(() => { beforeEach(() => { const options = getDefaultNodeClientOptions({ tracesSampleRate: 1.0 }); client = new NodeClient(options); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(client); // eslint-disable-next-line deprecation/deprecation makeMain(hub); diff --git a/packages/tracing-internal/test/browser/backgroundtab.test.ts b/packages/tracing-internal/test/browser/backgroundtab.test.ts index 27cba1d934fa..8eae89eb3a65 100644 --- a/packages/tracing-internal/test/browser/backgroundtab.test.ts +++ b/packages/tracing-internal/test/browser/backgroundtab.test.ts @@ -15,6 +15,7 @@ conditionalTest({ min: 10 })('registerBackgroundTabDetection', () => { global.document = dom.window.document; const options = getDefaultBrowserClientOptions({ tracesSampleRate: 1 }); + // eslint-disable-next-line deprecation/deprecation hub = new Hub(new TestClient(options)); // eslint-disable-next-line deprecation/deprecation makeMain(hub); From 613a1aae358252866ef41cd41724f132b10c2d73 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Mon, 12 Feb 2024 13:52:09 +0100 Subject: [PATCH 008/106] docs: Fix deprecation message for span data/attributes (#10608) This was apparently left over from some in-between state, users should actually use `spanToJSON(span)` there to get attributes. Backporting this (#10604 ) to v7! --- packages/core/src/tracing/span.ts | 6 +++--- packages/types/src/span.ts | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/core/src/tracing/span.ts b/packages/core/src/tracing/span.ts index 165677455d7f..28a2de56475d 100644 --- a/packages/core/src/tracing/span.ts +++ b/packages/core/src/tracing/span.ts @@ -67,13 +67,13 @@ export class SpanRecorder { export class Span implements SpanInterface { /** * Tags for the span. - * @deprecated Use `getSpanAttributes(span)` instead. + * @deprecated Use `spanToJSON(span).atttributes` instead. */ public tags: { [key: string]: Primitive }; /** * Data for the span. - * @deprecated Use `getSpanAttributes(span)` instead. + * @deprecated Use `spanToJSON(span).atttributes` instead. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any public data: { [key: string]: any }; @@ -263,7 +263,7 @@ export class Span implements SpanInterface { /** * Attributes for the span. - * @deprecated Use `getSpanAttributes(span)` instead. + * @deprecated Use `spanToJSON(span).atttributes` instead. */ public get attributes(): SpanAttributes { return this._attributes; diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index 73c2fbdaaaa8..fc7f1077368e 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -226,19 +226,19 @@ export interface Span extends Omit { /** * Tags for the span. - * @deprecated Use `getSpanAttributes(span)` instead. + * @deprecated Use `spanToJSON(span).atttributes` instead. */ tags: { [key: string]: Primitive }; /** * Data for the span. - * @deprecated Use `getSpanAttributes(span)` instead. + * @deprecated Use `spanToJSON(span).atttributes` instead. */ data: { [key: string]: any }; /** * Attributes for the span. - * @deprecated Use `getSpanAttributes(span)` instead. + * @deprecated Use `spanToJSON(span).atttributes` instead. */ attributes: SpanAttributes; From ac7cb3370b55cc60a0e00e6a01f2a84226d922b6 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 7 Feb 2024 13:29:20 +0100 Subject: [PATCH 009/106] feat(replay): Add `getReplay` utility function (#10510) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As pointed out here, and I also did notice that myself, it is not super nice - as you need to provide a generic integration to `getIntegrationByName`, which is annoying to do in a type safe way, esp. if you want to avoid deprecations: ```ts const client = getClient(); const replay = client && client.getIntegrationByName && client.getIntegrationByName>('Replay'); ``` So IMHO a small utility `Sentry.getReplay()` is not unreasonable for this 🤔 --- packages/browser/src/index.ts | 1 + packages/replay/src/index.ts | 2 + packages/replay/src/util/getReplay.ts | 13 ++++++ .../replay/test/unit/util/getReplay.test.ts | 42 +++++++++++++++++++ packages/replay/test/utils/TestClient.ts | 2 +- 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 packages/replay/src/util/getReplay.ts create mode 100644 packages/replay/test/unit/util/getReplay.test.ts diff --git a/packages/browser/src/index.ts b/packages/browser/src/index.ts index 2be5c71c4518..59ef74cdbfb5 100644 --- a/packages/browser/src/index.ts +++ b/packages/browser/src/index.ts @@ -27,6 +27,7 @@ export { // eslint-disable-next-line deprecation/deprecation Replay, replayIntegration, + getReplay, } from '@sentry/replay'; export type { ReplayEventType, diff --git a/packages/replay/src/index.ts b/packages/replay/src/index.ts index 6471ff9e87ce..d16fd7733c20 100644 --- a/packages/replay/src/index.ts +++ b/packages/replay/src/index.ts @@ -19,5 +19,7 @@ export type { CanvasManagerOptions, } from './types'; +export { getReplay } from './util/getReplay'; + // TODO (v8): Remove deprecated types export * from './types/deprecated'; diff --git a/packages/replay/src/util/getReplay.ts b/packages/replay/src/util/getReplay.ts new file mode 100644 index 000000000000..278505f15338 --- /dev/null +++ b/packages/replay/src/util/getReplay.ts @@ -0,0 +1,13 @@ +import { getClient } from '@sentry/core'; +import type { replayIntegration } from '../integration'; + +/** + * This is a small utility to get a type-safe instance of the Replay integration. + */ +// eslint-disable-next-line deprecation/deprecation +export function getReplay(): ReturnType | undefined { + const client = getClient(); + return ( + client && client.getIntegrationByName && client.getIntegrationByName>('Replay') + ); +} diff --git a/packages/replay/test/unit/util/getReplay.test.ts b/packages/replay/test/unit/util/getReplay.test.ts new file mode 100644 index 000000000000..7f614d4fdc33 --- /dev/null +++ b/packages/replay/test/unit/util/getReplay.test.ts @@ -0,0 +1,42 @@ +import { getCurrentScope } from '@sentry/core'; +import { replayIntegration } from '../../../src/integration'; +import { getReplay } from '../../../src/util/getReplay'; +import { getDefaultClientOptions, init } from '../../utils/TestClient'; + +describe('getReplay', () => { + beforeEach(() => { + getCurrentScope().setClient(undefined); + }); + + it('works without a client', () => { + const actual = getReplay(); + expect(actual).toBeUndefined(); + }); + + it('works with a client without Replay', () => { + init( + getDefaultClientOptions({ + dsn: 'https://dsn@ingest.f00.f00/1', + }), + ); + + const actual = getReplay(); + expect(actual).toBeUndefined(); + }); + + it('works with a client with Replay xxx', () => { + const replay = replayIntegration(); + init( + getDefaultClientOptions({ + integrations: [replay], + replaysOnErrorSampleRate: 0, + replaysSessionSampleRate: 0, + }), + ); + + const actual = getReplay(); + expect(actual).toBeDefined(); + expect(actual === replay).toBe(true); + expect(replay.getReplayId()).toBe(undefined); + }); +}); diff --git a/packages/replay/test/utils/TestClient.ts b/packages/replay/test/utils/TestClient.ts index da131aec8fd2..26a14f2a9795 100644 --- a/packages/replay/test/utils/TestClient.ts +++ b/packages/replay/test/utils/TestClient.ts @@ -39,7 +39,7 @@ export function init(options: TestClientOptions): void { initAndBind(TestClient, options); } -export function getDefaultClientOptions(options: Partial = {}): ClientOptions { +export function getDefaultClientOptions(options: Partial = {}): ClientOptions { return { integrations: [], dsn: 'https://username@domain/123', From 7b3a22d67648a26e44c4b16dd8f23cf77b3d295a Mon Sep 17 00:00:00 2001 From: Michi Hoffmann Date: Mon, 12 Feb 2024 16:16:16 +0100 Subject: [PATCH 010/106] feat(core): Add metric summaries to spans (#10554) Co-authored-by: Abhijeet Prasad --- .../tracing/metric-summaries/scenario.js | 56 ++++++++++++ .../suites/tracing/metric-summaries/test.ts | 91 +++++++++++++++++++ packages/core/src/metrics/aggregator.ts | 11 ++- .../core/src/metrics/browser-aggregator.ts | 27 +++--- packages/core/src/metrics/constants.ts | 2 +- packages/core/src/metrics/metric-summary.ts | 91 +++++++++++++++++++ packages/core/src/metrics/utils.ts | 2 +- packages/core/src/tracing/span.ts | 2 + packages/core/src/tracing/transaction.ts | 2 + packages/types/src/event.ts | 3 +- packages/types/src/index.ts | 7 +- packages/types/src/span.ts | 9 ++ 12 files changed, 286 insertions(+), 17 deletions(-) create mode 100644 dev-packages/node-integration-tests/suites/tracing/metric-summaries/scenario.js create mode 100644 dev-packages/node-integration-tests/suites/tracing/metric-summaries/test.ts create mode 100644 packages/core/src/metrics/metric-summary.ts diff --git a/dev-packages/node-integration-tests/suites/tracing/metric-summaries/scenario.js b/dev-packages/node-integration-tests/suites/tracing/metric-summaries/scenario.js new file mode 100644 index 000000000000..ef68afb06576 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/tracing/metric-summaries/scenario.js @@ -0,0 +1,56 @@ +const { loggingTransport } = require('@sentry-internal/node-integration-tests'); +const Sentry = require('@sentry/node'); + +Sentry.init({ + dsn: 'https://public@dsn.ingest.sentry.io/1337', + release: '1.0', + tracesSampleRate: 1.0, + transport: loggingTransport, + _experiments: { + metricsAggregator: true, + }, +}); + +// Stop the process from exiting before the transaction is sent +setInterval(() => {}, 1000); + +Sentry.startSpan( + { + name: 'Test Transaction', + op: 'transaction', + }, + () => { + Sentry.metrics.increment('root-counter', 1, { + tags: { + email: 'jon.doe@example.com', + }, + }); + Sentry.metrics.increment('root-counter', 1, { + tags: { + email: 'jane.doe@example.com', + }, + }); + + Sentry.startSpan( + { + name: 'Some other span', + op: 'transaction', + }, + () => { + Sentry.metrics.increment('root-counter'); + Sentry.metrics.increment('root-counter'); + Sentry.metrics.increment('root-counter', 2); + + Sentry.metrics.set('root-set', 'some-value'); + Sentry.metrics.set('root-set', 'another-value'); + Sentry.metrics.set('root-set', 'another-value'); + + Sentry.metrics.gauge('root-gauge', 42); + Sentry.metrics.gauge('root-gauge', 20); + + Sentry.metrics.distribution('root-distribution', 42); + Sentry.metrics.distribution('root-distribution', 20); + }, + ); + }, +); diff --git a/dev-packages/node-integration-tests/suites/tracing/metric-summaries/test.ts b/dev-packages/node-integration-tests/suites/tracing/metric-summaries/test.ts new file mode 100644 index 000000000000..94f5fdc30c70 --- /dev/null +++ b/dev-packages/node-integration-tests/suites/tracing/metric-summaries/test.ts @@ -0,0 +1,91 @@ +import { createRunner } from '../../../utils/runner'; + +const EXPECTED_TRANSACTION = { + transaction: 'Test Transaction', + _metrics_summary: { + 'c:root-counter@none': [ + { + min: 1, + max: 1, + count: 1, + sum: 1, + tags: { + release: '1.0', + transaction: 'Test Transaction', + email: 'jon.doe@example.com', + }, + }, + { + min: 1, + max: 1, + count: 1, + sum: 1, + tags: { + release: '1.0', + transaction: 'Test Transaction', + email: 'jane.doe@example.com', + }, + }, + ], + }, + spans: expect.arrayContaining([ + expect.objectContaining({ + description: 'Some other span', + op: 'transaction', + _metrics_summary: { + 'c:root-counter@none': [ + { + min: 1, + max: 2, + count: 3, + sum: 4, + tags: { + release: '1.0', + transaction: 'Test Transaction', + }, + }, + ], + 's:root-set@none': [ + { + min: 0, + max: 1, + count: 3, + sum: 2, + tags: { + release: '1.0', + transaction: 'Test Transaction', + }, + }, + ], + 'g:root-gauge@none': [ + { + min: 20, + max: 42, + count: 2, + sum: 62, + tags: { + release: '1.0', + transaction: 'Test Transaction', + }, + }, + ], + 'd:root-distribution@none': [ + { + min: 20, + max: 42, + count: 2, + sum: 62, + tags: { + release: '1.0', + transaction: 'Test Transaction', + }, + }, + ], + }, + }), + ]), +}; + +test('Should add metric summaries to spans', done => { + createRunner(__dirname, 'scenario.js').expect({ transaction: EXPECTED_TRANSACTION }).start(done); +}); diff --git a/packages/core/src/metrics/aggregator.ts b/packages/core/src/metrics/aggregator.ts index 6a49fda5918b..2b331082ab3e 100644 --- a/packages/core/src/metrics/aggregator.ts +++ b/packages/core/src/metrics/aggregator.ts @@ -6,8 +6,9 @@ import type { Primitive, } from '@sentry/types'; import { timestampInSeconds } from '@sentry/utils'; -import { DEFAULT_FLUSH_INTERVAL, MAX_WEIGHT, NAME_AND_TAG_KEY_NORMALIZATION_REGEX } from './constants'; +import { DEFAULT_FLUSH_INTERVAL, MAX_WEIGHT, NAME_AND_TAG_KEY_NORMALIZATION_REGEX, SET_METRIC_TYPE } from './constants'; import { METRIC_MAP } from './instance'; +import { updateMetricSummaryOnActiveSpan } from './metric-summary'; import type { MetricBucket, MetricType } from './types'; import { getBucketKey, sanitizeTags } from './utils'; @@ -62,7 +63,11 @@ export class MetricsAggregator implements MetricsAggregatorBase { const tags = sanitizeTags(unsanitizedTags); const bucketKey = getBucketKey(metricType, name, unit, tags); + let bucketItem = this._buckets.get(bucketKey); + // If this is a set metric, we need to calculate the delta from the previous weight. + const previousWeight = bucketItem && metricType === SET_METRIC_TYPE ? bucketItem.metric.weight : 0; + if (bucketItem) { bucketItem.metric.add(value); // TODO(abhi): Do we need this check? @@ -82,6 +87,10 @@ export class MetricsAggregator implements MetricsAggregatorBase { this._buckets.set(bucketKey, bucketItem); } + // If value is a string, it's a set metric so calculate the delta from the previous weight. + const val = typeof value === 'string' ? bucketItem.metric.weight - previousWeight : value; + updateMetricSummaryOnActiveSpan(metricType, name, val, unit, unsanitizedTags, bucketKey); + // We need to keep track of the total weight of the buckets so that we can // flush them when we exceed the max weight. this._bucketsTotalWeight += bucketItem.metric.weight; diff --git a/packages/core/src/metrics/browser-aggregator.ts b/packages/core/src/metrics/browser-aggregator.ts index 5b5c81353024..40cfa1d404ab 100644 --- a/packages/core/src/metrics/browser-aggregator.ts +++ b/packages/core/src/metrics/browser-aggregator.ts @@ -1,14 +1,8 @@ -import type { - Client, - ClientOptions, - MeasurementUnit, - MetricBucketItem, - MetricsAggregator, - Primitive, -} from '@sentry/types'; +import type { Client, ClientOptions, MeasurementUnit, MetricsAggregator, Primitive } from '@sentry/types'; import { timestampInSeconds } from '@sentry/utils'; -import { DEFAULT_BROWSER_FLUSH_INTERVAL, NAME_AND_TAG_KEY_NORMALIZATION_REGEX } from './constants'; +import { DEFAULT_BROWSER_FLUSH_INTERVAL, NAME_AND_TAG_KEY_NORMALIZATION_REGEX, SET_METRIC_TYPE } from './constants'; import { METRIC_MAP } from './instance'; +import { updateMetricSummaryOnActiveSpan } from './metric-summary'; import type { MetricBucket, MetricType } from './types'; import { getBucketKey, sanitizeTags } from './utils'; @@ -46,7 +40,11 @@ export class BrowserMetricsAggregator implements MetricsAggregator { const tags = sanitizeTags(unsanitizedTags); const bucketKey = getBucketKey(metricType, name, unit, tags); - const bucketItem: MetricBucketItem | undefined = this._buckets.get(bucketKey); + + let bucketItem = this._buckets.get(bucketKey); + // If this is a set metric, we need to calculate the delta from the previous weight. + const previousWeight = bucketItem && metricType === SET_METRIC_TYPE ? bucketItem.metric.weight : 0; + if (bucketItem) { bucketItem.metric.add(value); // TODO(abhi): Do we need this check? @@ -54,7 +52,7 @@ export class BrowserMetricsAggregator implements MetricsAggregator { bucketItem.timestamp = timestamp; } } else { - this._buckets.set(bucketKey, { + bucketItem = { // @ts-expect-error we don't need to narrow down the type of value here, saves bundle size. metric: new METRIC_MAP[metricType](value), timestamp, @@ -62,8 +60,13 @@ export class BrowserMetricsAggregator implements MetricsAggregator { name, unit, tags, - }); + }; + this._buckets.set(bucketKey, bucketItem); } + + // If value is a string, it's a set metric so calculate the delta from the previous weight. + const val = typeof value === 'string' ? bucketItem.metric.weight - previousWeight : value; + updateMetricSummaryOnActiveSpan(metricType, name, val, unit, unsanitizedTags, bucketKey); } /** diff --git a/packages/core/src/metrics/constants.ts b/packages/core/src/metrics/constants.ts index e89e0fd1562b..a5f3a87f57d5 100644 --- a/packages/core/src/metrics/constants.ts +++ b/packages/core/src/metrics/constants.ts @@ -21,7 +21,7 @@ export const NAME_AND_TAG_KEY_NORMALIZATION_REGEX = /[^a-zA-Z0-9_/.-]+/g; * * See: https://develop.sentry.dev/sdk/metrics/#normalization */ -export const TAG_VALUE_NORMALIZATION_REGEX = /[^\w\d_:/@.{}[\]$-]+/g; +export const TAG_VALUE_NORMALIZATION_REGEX = /[^\w\d\s_:/@.{}[\]$-]+/g; /** * This does not match spec in https://develop.sentry.dev/sdk/metrics diff --git a/packages/core/src/metrics/metric-summary.ts b/packages/core/src/metrics/metric-summary.ts new file mode 100644 index 000000000000..bf2e828dae1b --- /dev/null +++ b/packages/core/src/metrics/metric-summary.ts @@ -0,0 +1,91 @@ +import type { MeasurementUnit, Span } from '@sentry/types'; +import type { MetricSummary } from '@sentry/types'; +import type { Primitive } from '@sentry/types'; +import { dropUndefinedKeys } from '@sentry/utils'; +import { getActiveSpan } from '../tracing'; +import type { MetricType } from './types'; + +/** + * key: bucketKey + * value: [exportKey, MetricSummary] + */ +type MetricSummaryStorage = Map; + +let SPAN_METRIC_SUMMARY: WeakMap | undefined; + +function getMetricStorageForSpan(span: Span): MetricSummaryStorage | undefined { + return SPAN_METRIC_SUMMARY ? SPAN_METRIC_SUMMARY.get(span) : undefined; +} + +/** + * Fetches the metric summary if it exists for the passed span + */ +export function getMetricSummaryJsonForSpan(span: Span): Record> | undefined { + const storage = getMetricStorageForSpan(span); + + if (!storage) { + return undefined; + } + const output: Record> = {}; + + for (const [, [exportKey, summary]] of storage) { + if (!output[exportKey]) { + output[exportKey] = []; + } + + output[exportKey].push(dropUndefinedKeys(summary)); + } + + return output; +} + +/** + * Updates the metric summary on the currently active span + */ +export function updateMetricSummaryOnActiveSpan( + metricType: MetricType, + sanitizedName: string, + value: number, + unit: MeasurementUnit, + tags: Record, + bucketKey: string, +): void { + const span = getActiveSpan(); + if (span) { + const storage = getMetricStorageForSpan(span) || new Map(); + + const exportKey = `${metricType}:${sanitizedName}@${unit}`; + const bucketItem = storage.get(bucketKey); + + if (bucketItem) { + const [, summary] = bucketItem; + storage.set(bucketKey, [ + exportKey, + { + min: Math.min(summary.min, value), + max: Math.max(summary.max, value), + count: (summary.count += 1), + sum: (summary.sum += value), + tags: summary.tags, + }, + ]); + } else { + storage.set(bucketKey, [ + exportKey, + { + min: value, + max: value, + count: 1, + sum: value, + tags, + }, + ]); + } + + if (!SPAN_METRIC_SUMMARY) { + SPAN_METRIC_SUMMARY = new WeakMap(); + } + + SPAN_METRIC_SUMMARY.set(span, storage); + } +} diff --git a/packages/core/src/metrics/utils.ts b/packages/core/src/metrics/utils.ts index a6674bcf30e1..7b1cf96a8462 100644 --- a/packages/core/src/metrics/utils.ts +++ b/packages/core/src/metrics/utils.ts @@ -62,7 +62,7 @@ export function sanitizeTags(unsanitizedTags: Record): Record for (const key in unsanitizedTags) { if (Object.prototype.hasOwnProperty.call(unsanitizedTags, key)) { const sanitizedKey = key.replace(NAME_AND_TAG_KEY_NORMALIZATION_REGEX, '_'); - tags[sanitizedKey] = String(unsanitizedTags[key]).replace(TAG_VALUE_NORMALIZATION_REGEX, '_'); + tags[sanitizedKey] = String(unsanitizedTags[key]).replace(TAG_VALUE_NORMALIZATION_REGEX, ''); } } return tags; diff --git a/packages/core/src/tracing/span.ts b/packages/core/src/tracing/span.ts index 28a2de56475d..1c178fc05fbe 100644 --- a/packages/core/src/tracing/span.ts +++ b/packages/core/src/tracing/span.ts @@ -16,6 +16,7 @@ import type { import { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; +import { getMetricSummaryJsonForSpan } from '../metrics/metric-summary'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes'; import { getRootSpan } from '../utils/getRootSpan'; import { @@ -624,6 +625,7 @@ export class Span implements SpanInterface { timestamp: this._endTime, trace_id: this._traceId, origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined, + _metrics_summary: getMetricSummaryJsonForSpan(this), }); } diff --git a/packages/core/src/tracing/transaction.ts b/packages/core/src/tracing/transaction.ts index 026723929471..709aa628f42e 100644 --- a/packages/core/src/tracing/transaction.ts +++ b/packages/core/src/tracing/transaction.ts @@ -15,6 +15,7 @@ import { dropUndefinedKeys, logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import type { Hub } from '../hub'; import { getCurrentHub } from '../hub'; +import { getMetricSummaryJsonForSpan } from '../metrics/metric-summary'; import { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes'; import { spanTimeInputToSeconds, spanToJSON, spanToTraceContext } from '../utils/spanUtils'; import { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext'; @@ -331,6 +332,7 @@ export class Transaction extends SpanClass implements TransactionInterface { capturedSpanIsolationScope, dynamicSamplingContext: getDynamicSamplingContextFromSpan(this), }, + _metrics_summary: getMetricSummaryJsonForSpan(this), ...(source && { transaction_info: { source, diff --git a/packages/types/src/event.ts b/packages/types/src/event.ts index 50322f18fbc6..15b253c666c8 100644 --- a/packages/types/src/event.ts +++ b/packages/types/src/event.ts @@ -11,7 +11,7 @@ import type { Request } from './request'; import type { CaptureContext } from './scope'; import type { SdkInfo } from './sdkinfo'; import type { Severity, SeverityLevel } from './severity'; -import type { Span, SpanJSON } from './span'; +import type { MetricSummary, Span, SpanJSON } from './span'; import type { Thread } from './thread'; import type { TransactionSource } from './transaction'; import type { User } from './user'; @@ -73,6 +73,7 @@ export interface ErrorEvent extends Event { } export interface TransactionEvent extends Event { type: 'transaction'; + _metrics_summary?: Record>; } /** JSDoc */ diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index 5970383febc3..d4fcd439ae4a 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -99,6 +99,7 @@ export type { SpanJSON, SpanContextData, TraceFlag, + MetricSummary, } from './span'; export type { StackFrame } from './stackframe'; export type { Stacktrace, StackParser, StackLineParser, StackLineParserFn } from './stacktrace'; @@ -150,5 +151,9 @@ export type { export type { BrowserClientReplayOptions, BrowserClientProfilingOptions } from './browseroptions'; export type { CheckIn, MonitorConfig, FinishedCheckIn, InProgressCheckIn, SerializedCheckIn } from './checkin'; -export type { MetricsAggregator, MetricBucketItem, MetricInstance } from './metrics'; +export type { + MetricsAggregator, + MetricBucketItem, + MetricInstance, +} from './metrics'; export type { ParameterizedString } from './parameterize'; diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index fc7f1077368e..6aa6ea1113f6 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -31,6 +31,14 @@ export type SpanAttributes = Partial<{ }> & Record; +export type MetricSummary = { + min: number; + max: number; + count: number; + sum: number; + tags?: Record | undefined; +}; + /** This type is aligned with the OpenTelemetry TimeInput type. */ export type SpanTimeInput = HrTime | number | Date; @@ -47,6 +55,7 @@ export interface SpanJSON { timestamp?: number; trace_id: string; origin?: SpanOrigin; + _metrics_summary?: Record>; } // These are aligned with OpenTelemetry trace flags From 150b25784944ffe3429c19b80bef028a4808e7ad Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Mon, 12 Feb 2024 11:52:11 +0100 Subject: [PATCH 011/106] fix(sveltekit): Properly await sourcemaps flattening (#10602) We didn't properly await sourcemaps flattening via sorcery before proceeding to upload them. The reason is that the async callbacks in `forEach` weren't awaited. A `for` loop is the better approach here. Wondering if we should lint against async `forEach` callbacks. This behaviour could have caused various inconsistencies. My suspicion is that the timing worked _well enough_ in most cases but we definitely want to properly await this step. Thanks to @MSDev201 for bringing this up! Unfortunately this likely won't fix #10589 as a whole :( --- packages/sveltekit/src/vite/sourceMaps.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/sveltekit/src/vite/sourceMaps.ts b/packages/sveltekit/src/vite/sourceMaps.ts index eea862e9d901..2f5fd28ac1f8 100644 --- a/packages/sveltekit/src/vite/sourceMaps.ts +++ b/packages/sveltekit/src/vite/sourceMaps.ts @@ -166,7 +166,7 @@ export async function makeCustomSentryVitePlugin(options?: CustomSentryVitePlugi // eslint-disable-next-line no-console debug && console.log('[Source Maps Plugin] Flattening source maps'); - jsFiles.forEach(async file => { + for (const file of jsFiles) { try { await (sorcery as Sorcery).load(file).then(async chain => { if (!chain) { @@ -202,7 +202,7 @@ export async function makeCustomSentryVitePlugin(options?: CustomSentryVitePlugi ); await fs.promises.writeFile(mapFile, cleanedMapContent); } - }); + } try { // @ts-expect-error - this hook exists on the plugin! From cbd672173eef2c5c154ef1916f76d865ab71e418 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 9 Feb 2024 16:25:35 +0100 Subject: [PATCH 012/106] fix(sveltekit): Avoid capturing Http 4xx errors on the client (#10571) Add the Http 400 avoidance logic from our server-side `load` function instrumentation to the client-side wrapper. Didn't know that these errors were a thing on the client side but now that we know, we definitely don't want to capture them. Co-authored-by: Francesco Novy --- packages/sveltekit/src/client/load.ts | 8 +++++-- packages/sveltekit/test/client/load.test.ts | 24 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/packages/sveltekit/src/client/load.ts b/packages/sveltekit/src/client/load.ts index 14528959d34e..3e454bdb364a 100644 --- a/packages/sveltekit/src/client/load.ts +++ b/packages/sveltekit/src/client/load.ts @@ -4,7 +4,7 @@ import { addNonEnumerableProperty, objectify } from '@sentry/utils'; import type { LoadEvent } from '@sveltejs/kit'; import type { SentryWrappedFlag } from '../common/utils'; -import { isRedirect } from '../common/utils'; +import { isHttpError, isRedirect } from '../common/utils'; type PatchedLoadEvent = LoadEvent & Partial; @@ -14,7 +14,11 @@ function sendErrorToSentry(e: unknown): unknown { const objectifiedErr = objectify(e); // We don't want to capture thrown `Redirect`s as these are not errors but expected behaviour - if (isRedirect(objectifiedErr)) { + // Neither 4xx errors, given that they are not valuable. + if ( + isRedirect(objectifiedErr) || + (isHttpError(objectifiedErr) && objectifiedErr.status < 500 && objectifiedErr.status >= 400) + ) { return objectifiedErr; } diff --git a/packages/sveltekit/test/client/load.test.ts b/packages/sveltekit/test/client/load.test.ts index e839b5a9cba5..ca7c1d625224 100644 --- a/packages/sveltekit/test/client/load.test.ts +++ b/packages/sveltekit/test/client/load.test.ts @@ -69,6 +69,30 @@ describe('wrapLoadWithSentry', () => { expect(mockCaptureException).not.toHaveBeenCalled(); }); + it.each([400, 404, 499])("doesn't call captureException for thrown `HttpError`s with status %s", async status => { + async function load(_: Parameters[0]): Promise> { + throw { status, body: 'error' }; + } + + const wrappedLoad = wrapLoadWithSentry(load); + const res = wrappedLoad(MOCK_LOAD_ARGS); + await expect(res).rejects.toThrow(); + + expect(mockCaptureException).not.toHaveBeenCalled(); + }); + + it.each([500, 501, 599])('calls captureException for thrown `HttpError`s with status %s', async status => { + async function load(_: Parameters[0]): Promise> { + throw { status, body: 'error' }; + } + + const wrappedLoad = wrapLoadWithSentry(load); + const res = wrappedLoad(MOCK_LOAD_ARGS); + await expect(res).rejects.toThrow(); + + expect(mockCaptureException).toHaveBeenCalledTimes(1); + }); + describe('calls trace function', async () => { it('creates a load span', async () => { async function load({ params }: Parameters[0]): Promise> { From 13f7dc842d61b7dc4d5535670c0c8601adcff722 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 9 Feb 2024 16:26:09 +0100 Subject: [PATCH 013/106] fix(angular-ivy): Add `exports` field to `package.json` (#10569) Add an `exports` field to the `package.json` for `@sentry/angular-ivy`. While it seems like regular Angular apps didn't need it, tools like `vitest` expect the field as soon as `type: "module"` is specified. --- Co-authored-by: Andrei Alecu --- packages/angular-ivy/scripts/prepack.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/angular-ivy/scripts/prepack.ts b/packages/angular-ivy/scripts/prepack.ts index b9ec3f0d787f..bc9159954b39 100644 --- a/packages/angular-ivy/scripts/prepack.ts +++ b/packages/angular-ivy/scripts/prepack.ts @@ -6,6 +6,7 @@ type PackageJson = { type?: string; nx?: string; volta?: any; + exports?: Record>; }; const buildDir = path.join(process.cwd(), 'build'); @@ -18,6 +19,18 @@ const pkgJson: PackageJson = JSON.parse(fs.readFileSync(pkjJsonPath).toString()) delete pkgJson.main; pkgJson.type = 'module'; +pkgJson.exports = { + '.': { + es2015: './fesm2015/sentry-angular-ivy.js', + esm2015: './esm2015/sentry-angular-ivy.js', + fesm2015: './fesm2015/sentry-angular-ivy.js', + import: './fesm2015/sentry-angular-ivy.js', + require: './bundles/sentry-angular-ivy.umd.js', + types: './sentry-angular-ivy.d.ts', + }, + './*': './*', +}; + // no need to keep around other properties that are only relevant for our reop: delete pkgJson.nx; delete pkgJson.volta; From 8ba1d778512e8367d77662d99173a9ffa8fd9267 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Tue, 13 Feb 2024 13:59:24 +0100 Subject: [PATCH 014/106] feat: Export semantic attribute keys from SDK packages (#10637) Add exports for our semantic attributes keys from the SDK packages so that users don't have to install `@sentry/core` explicitly. --- packages/astro/src/index.server.ts | 4 ++++ packages/browser/src/exports.ts | 7 +++++++ packages/bun/src/index.ts | 4 ++++ packages/deno/src/index.ts | 5 +++++ packages/node-experimental/src/index.ts | 4 ++++ packages/node/src/index.ts | 9 +++++++++ packages/remix/src/index.server.ts | 4 ++++ packages/serverless/src/index.ts | 4 ++++ packages/sveltekit/src/server/index.ts | 4 ++++ packages/vercel-edge/src/index.ts | 4 ++++ 10 files changed, 49 insertions(+) diff --git a/packages/astro/src/index.server.ts b/packages/astro/src/index.server.ts index 98e5486894db..e4e94e23b894 100644 --- a/packages/astro/src/index.server.ts +++ b/packages/astro/src/index.server.ts @@ -93,6 +93,10 @@ export { continueTrace, cron, parameterize, + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, } from '@sentry/node'; // We can still leave this for the carrier init and type exports diff --git a/packages/browser/src/exports.ts b/packages/browser/src/exports.ts index e9e947de8559..1b959e05c397 100644 --- a/packages/browser/src/exports.ts +++ b/packages/browser/src/exports.ts @@ -76,6 +76,13 @@ export { parameterize, } from '@sentry/core'; +export { + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, +} from '@sentry/core'; + export { WINDOW } from './helpers'; export { BrowserClient } from './client'; export { makeFetchTransport, makeXHRTransport } from './transports'; diff --git a/packages/bun/src/index.ts b/packages/bun/src/index.ts index b51083052c8b..363e25d93371 100644 --- a/packages/bun/src/index.ts +++ b/packages/bun/src/index.ts @@ -117,6 +117,10 @@ export { onUncaughtExceptionIntegration, onUnhandledRejectionIntegration, spotlightIntegration, + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, } from '@sentry/node'; export { BunClient } from './client'; diff --git a/packages/deno/src/index.ts b/packages/deno/src/index.ts index d42ad97fedb8..9a25923b2c42 100644 --- a/packages/deno/src/index.ts +++ b/packages/deno/src/index.ts @@ -85,7 +85,12 @@ export { linkedErrorsIntegration, functionToStringIntegration, requestDataIntegration, + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, } from '@sentry/core'; + export type { SpanStatusType } from '@sentry/core'; export { DenoClient } from './client'; diff --git a/packages/node-experimental/src/index.ts b/packages/node-experimental/src/index.ts index b5ffeb6de0c9..ce3f4f85a214 100644 --- a/packages/node-experimental/src/index.ts +++ b/packages/node-experimental/src/index.ts @@ -98,6 +98,10 @@ export { functionToStringIntegration, inboundFiltersIntegration, linkedErrorsIntegration, + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, } from '@sentry/node'; export type { diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 8d0a82ecbfe6..0efd5b3923a2 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -90,7 +90,16 @@ export { linkedErrorsIntegration, requestDataIntegration, } from '@sentry/core'; + +export { + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, +} from '@sentry/core'; + export type { SpanStatusType } from '@sentry/core'; + export { autoDiscoverNodePerformanceMonitoringIntegrations } from './tracing'; export { NodeClient } from './client'; diff --git a/packages/remix/src/index.server.ts b/packages/remix/src/index.server.ts index a34250100287..b50f1334aa0a 100644 --- a/packages/remix/src/index.server.ts +++ b/packages/remix/src/index.server.ts @@ -104,6 +104,10 @@ export { runWithAsyncContext, // eslint-disable-next-line deprecation/deprecation enableAnrDetection, + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, } from '@sentry/node'; // Keeping the `*` exports for backwards compatibility and types diff --git a/packages/serverless/src/index.ts b/packages/serverless/src/index.ts index 24ee21115f0b..34917a4b28e4 100644 --- a/packages/serverless/src/index.ts +++ b/packages/serverless/src/index.ts @@ -107,4 +107,8 @@ export { httpIntegration, nativeNodeFetchintegration, spotlightIntegration, + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, } from '@sentry/node'; diff --git a/packages/sveltekit/src/server/index.ts b/packages/sveltekit/src/server/index.ts index 7a886334cfbc..e3e03e4ca127 100644 --- a/packages/sveltekit/src/server/index.ts +++ b/packages/sveltekit/src/server/index.ts @@ -99,6 +99,10 @@ export { runWithAsyncContext, // eslint-disable-next-line deprecation/deprecation enableAnrDetection, + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, } from '@sentry/node'; // We can still leave this for the carrier init and type exports diff --git a/packages/vercel-edge/src/index.ts b/packages/vercel-edge/src/index.ts index 8288c8ca5374..fb3624de22f2 100644 --- a/packages/vercel-edge/src/index.ts +++ b/packages/vercel-edge/src/index.ts @@ -86,6 +86,10 @@ export { inboundFiltersIntegration, linkedErrorsIntegration, requestDataIntegration, + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, + SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, + SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, } from '@sentry/core'; export type { SpanStatusType } from '@sentry/core'; From 88cc7589a771fe9e166e892ddd363ab979e34478 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Tue, 13 Feb 2024 11:54:56 +0100 Subject: [PATCH 015/106] feat(core): Make custom tracing methods return spans & set default op (#10633) This should make using these much easier: * add a default `op` to the spans, so users don't need to specify them. * Return the created span (or undefined), ensuring users don't need to do all the checking for op etc. themselves. Also make some small adjustments to ember & angular instrumentation to leverage some of these changes. --- packages/angular/src/tracing.ts | 1 - .../sentry-performance.ts | 17 +- .../src/browser/browserTracingIntegration.ts | 28 +- .../browser/browserTracingIntegration.test.ts | 373 ++++++++++++++++++ packages/tracing-internal/test/utils/utils.ts | 20 + 5 files changed, 422 insertions(+), 17 deletions(-) create mode 100644 packages/tracing-internal/test/browser/browserTracingIntegration.test.ts create mode 100644 packages/tracing-internal/test/utils/utils.ts diff --git a/packages/angular/src/tracing.ts b/packages/angular/src/tracing.ts index 5b2f74615c45..43c6227b0f8e 100644 --- a/packages/angular/src/tracing.ts +++ b/packages/angular/src/tracing.ts @@ -129,7 +129,6 @@ export class TraceService implements OnDestroy { if (!getActiveSpan()) { startBrowserTracingNavigationSpan(client, { name: strippedUrl, - op: 'navigation', origin: 'auto.navigation.angular', attributes: { [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', diff --git a/packages/ember/addon/instance-initializers/sentry-performance.ts b/packages/ember/addon/instance-initializers/sentry-performance.ts index f4c47998ea90..9046ead7c7fc 100644 --- a/packages/ember/addon/instance-initializers/sentry-performance.ts +++ b/packages/ember/addon/instance-initializers/sentry-performance.ts @@ -11,7 +11,7 @@ import type { ExtendedBackburner } from '@sentry/ember/runloop'; import type { Span } from '@sentry/types'; import { GLOBAL_OBJ, browserPerformanceTimeOrigin, timestampInSeconds } from '@sentry/utils'; -import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core'; +import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core'; import type { BrowserClient } from '..'; import { getActiveSpan, startInactiveSpan } from '..'; import type { EmberRouterMain, EmberSentryConfig, GlobalConfig, OwnConfig } from '../types'; @@ -115,17 +115,18 @@ export function _instrumentEmberRouter( browserTracingOptions.instrumentPageLoad !== false ) { const routeInfo = routerService.recognize(url); - Sentry.startBrowserTracingPageLoadSpan(client, { + activeRootSpan = Sentry.startBrowserTracingPageLoadSpan(client, { name: `route:${routeInfo.name}`, - op: 'pageload', origin: 'auto.pageload.ember', + attributes: { + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route', + }, tags: { url, toRoute: routeInfo.name, 'routing.instrumentation': '@sentry/ember', }, }); - activeRootSpan = getActiveSpan(); } const finishActiveTransaction = (_: unknown, nextInstance: unknown): void => { @@ -147,10 +148,12 @@ export function _instrumentEmberRouter( const { fromRoute, toRoute } = getTransitionInformation(transition, routerService); activeRootSpan?.end(); - Sentry.startBrowserTracingNavigationSpan(client, { + activeRootSpan = Sentry.startBrowserTracingNavigationSpan(client, { name: `route:${toRoute}`, - op: 'navigation', origin: 'auto.navigation.ember', + attributes: { + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route', + }, tags: { fromRoute, toRoute, @@ -158,8 +161,6 @@ export function _instrumentEmberRouter( }, }); - activeRootSpan = getActiveSpan(); - transitionSpan = startInactiveSpan({ attributes: { [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ui.ember', diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index 31660eff00a7..b27575e147cf 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -1,5 +1,6 @@ -/* eslint-disable max-lines, complexity */ +/* eslint-disable max-lines */ import type { IdleTransaction } from '@sentry/core'; +import { getActiveSpan } from '@sentry/core'; import { getCurrentHub } from '@sentry/core'; import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, @@ -237,7 +238,6 @@ export const browserTracingIntegration = ((_options: Partial { @@ -325,7 +328,10 @@ export const browserTracingIntegration = ((_options: Partial { + // Clean up JSDom + Object.defineProperty(WINDOW, 'document', { value: originalGlobalDocument }); + Object.defineProperty(WINDOW, 'location', { value: originalGlobalLocation }); + Object.defineProperty(WINDOW, 'history', { value: originalGlobalHistory }); +}); + +describe('browserTracingIntegration', () => { + afterEach(() => { + getCurrentScope().clear(); + }); + + it('works with tracing enabled', () => { + const client = new TestClient( + getDefaultClientOptions({ + tracesSampleRate: 1, + integrations: [browserTracingIntegration()], + }), + ); + setCurrentClient(client); + client.init(); + + const span = getActiveSpan(); + expect(span).toBeDefined(); + expect(spanIsSampled(span!)).toBe(true); + expect(spanToJSON(span!)).toEqual({ + description: '/', + op: 'pageload', + origin: 'auto.pageload.browser', + data: { + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'pageload', + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.pageload.browser', + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: 1, + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', + }, + span_id: expect.any(String), + start_timestamp: expect.any(Number), + trace_id: expect.any(String), + }); + }); + + it('works with tracing disabled', () => { + const client = new TestClient( + getDefaultClientOptions({ + integrations: [browserTracingIntegration()], + }), + ); + setCurrentClient(client); + client.init(); + + const span = getActiveSpan(); + expect(span).toBeDefined(); + expect(spanIsSampled(span!)).toBe(false); + }); + + it('works with tracing enabled but unsampled', () => { + const client = new TestClient( + getDefaultClientOptions({ + tracesSampleRate: 0, + integrations: [browserTracingIntegration()], + }), + ); + setCurrentClient(client); + client.init(); + + const span = getActiveSpan(); + expect(span).toBeDefined(); + expect(spanIsSampled(span!)).toBe(false); + }); + + conditionalTest({ min: 10 })('navigation', () => { + it('starts navigation when URL changes', () => { + const client = new TestClient( + getDefaultClientOptions({ + tracesSampleRate: 1, + integrations: [browserTracingIntegration()], + }), + ); + setCurrentClient(client); + client.init(); + + const span = getActiveSpan(); + expect(span).toBeDefined(); + expect(spanIsSampled(span!)).toBe(true); + expect(span!.isRecording()).toBe(true); + expect(spanToJSON(span!)).toEqual({ + description: '/', + op: 'pageload', + origin: 'auto.pageload.browser', + data: { + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'pageload', + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.pageload.browser', + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: 1, + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', + }, + span_id: expect.any(String), + start_timestamp: expect.any(Number), + trace_id: expect.any(String), + }); + + // this is what is used to get the span name - JSDOM does not update this on it's own! + const dom = new JSDOM(undefined, { url: 'https://example.com/test' }); + Object.defineProperty(global, 'location', { value: dom.window.document.location, writable: true }); + + WINDOW.history.pushState({}, '', '/test'); + + expect(span!.isRecording()).toBe(false); + + const span2 = getActiveSpan(); + expect(span2).toBeDefined(); + expect(spanIsSampled(span2!)).toBe(true); + expect(span2!.isRecording()).toBe(true); + expect(spanToJSON(span2!)).toEqual({ + description: '/test', + op: 'navigation', + origin: 'auto.navigation.browser', + data: { + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation', + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.navigation.browser', + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: 1, + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', + }, + span_id: expect.any(String), + start_timestamp: expect.any(Number), + trace_id: expect.any(String), + }); + + // this is what is used to get the span name - JSDOM does not update this on it's own! + const dom2 = new JSDOM(undefined, { url: 'https://example.com/test2' }); + Object.defineProperty(global, 'location', { value: dom2.window.document.location, writable: true }); + + WINDOW.history.pushState({}, '', '/test2'); + + expect(span2!.isRecording()).toBe(false); + + const span3 = getActiveSpan(); + expect(span3).toBeDefined(); + expect(spanIsSampled(span3!)).toBe(true); + expect(span3!.isRecording()).toBe(true); + expect(spanToJSON(span3!)).toEqual({ + description: '/test2', + op: 'navigation', + origin: 'auto.navigation.browser', + data: { + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation', + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.navigation.browser', + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: 1, + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'url', + }, + span_id: expect.any(String), + start_timestamp: expect.any(Number), + trace_id: expect.any(String), + }); + }); + }); + + describe('startBrowserTracingPageLoadSpan', () => { + it('works without integration setup', () => { + const client = new TestClient( + getDefaultClientOptions({ + integrations: [], + }), + ); + setCurrentClient(client); + client.init(); + + const span = startBrowserTracingPageLoadSpan(client, { name: 'test span' }); + + expect(span).toBeUndefined(); + }); + + it('works with unsampled span', () => { + const client = new TestClient( + getDefaultClientOptions({ + tracesSampleRate: 0, + integrations: [browserTracingIntegration({ instrumentPageLoad: false })], + }), + ); + setCurrentClient(client); + client.init(); + + const span = startBrowserTracingPageLoadSpan(client, { name: 'test span' }); + + expect(span).toBeDefined(); + expect(spanIsSampled(span!)).toBe(false); + }); + + it('works with integration setup', () => { + const client = new TestClient( + getDefaultClientOptions({ + tracesSampleRate: 1, + integrations: [browserTracingIntegration({ instrumentPageLoad: false })], + }), + ); + setCurrentClient(client); + client.init(); + + const span = startBrowserTracingPageLoadSpan(client, { name: 'test span' }); + + expect(span).toBeDefined(); + expect(spanToJSON(span!)).toEqual({ + description: 'test span', + op: 'pageload', + origin: 'manual', + data: { + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'pageload', + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'manual', + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: 1, + }, + span_id: expect.any(String), + start_timestamp: expect.any(Number), + trace_id: expect.any(String), + }); + expect(spanIsSampled(span!)).toBe(true); + }); + + it('allows to overwrite properties', () => { + const client = new TestClient( + getDefaultClientOptions({ + tracesSampleRate: 1, + integrations: [browserTracingIntegration({ instrumentPageLoad: false })], + }), + ); + setCurrentClient(client); + client.init(); + + const span = startBrowserTracingPageLoadSpan(client, { + name: 'test span', + origin: 'auto.test', + attributes: { testy: 'yes' }, + }); + + expect(span).toBeDefined(); + expect(spanToJSON(span!)).toEqual({ + description: 'test span', + op: 'pageload', + origin: 'auto.test', + data: { + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'pageload', + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.test', + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: 1, + testy: 'yes', + }, + span_id: expect.any(String), + start_timestamp: expect.any(Number), + trace_id: expect.any(String), + }); + }); + }); + + describe('startBrowserTracingNavigationSpan', () => { + it('works without integration setup', () => { + const client = new TestClient( + getDefaultClientOptions({ + integrations: [], + }), + ); + setCurrentClient(client); + client.init(); + + const span = startBrowserTracingNavigationSpan(client, { name: 'test span' }); + + expect(span).toBeUndefined(); + }); + + it('works with unsampled span', () => { + const client = new TestClient( + getDefaultClientOptions({ + tracesSampleRate: 0, + integrations: [browserTracingIntegration({ instrumentNavigation: false })], + }), + ); + setCurrentClient(client); + client.init(); + + const span = startBrowserTracingNavigationSpan(client, { name: 'test span' }); + + expect(span).toBeDefined(); + expect(spanIsSampled(span!)).toBe(false); + }); + + it('works with integration setup', () => { + const client = new TestClient( + getDefaultClientOptions({ + tracesSampleRate: 1, + integrations: [browserTracingIntegration({ instrumentNavigation: false })], + }), + ); + setCurrentClient(client); + client.init(); + + const span = startBrowserTracingNavigationSpan(client, { name: 'test span' }); + + expect(span).toBeDefined(); + expect(spanToJSON(span!)).toEqual({ + description: 'test span', + op: 'navigation', + origin: 'manual', + data: { + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation', + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'manual', + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: 1, + }, + span_id: expect.any(String), + start_timestamp: expect.any(Number), + trace_id: expect.any(String), + }); + expect(spanIsSampled(span!)).toBe(true); + }); + + it('allows to overwrite properties', () => { + const client = new TestClient( + getDefaultClientOptions({ + tracesSampleRate: 1, + integrations: [browserTracingIntegration({ instrumentNavigation: false })], + }), + ); + setCurrentClient(client); + client.init(); + + const span = startBrowserTracingNavigationSpan(client, { + name: 'test span', + origin: 'auto.test', + attributes: { testy: 'yes' }, + }); + + expect(span).toBeDefined(); + expect(spanToJSON(span!)).toEqual({ + description: 'test span', + op: 'navigation', + origin: 'auto.test', + data: { + [SEMANTIC_ATTRIBUTE_SENTRY_OP]: 'navigation', + [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.test', + [SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE]: 1, + testy: 'yes', + }, + span_id: expect.any(String), + start_timestamp: expect.any(Number), + trace_id: expect.any(String), + }); + }); + }); +}); diff --git a/packages/tracing-internal/test/utils/utils.ts b/packages/tracing-internal/test/utils/utils.ts new file mode 100644 index 000000000000..0652be303ed4 --- /dev/null +++ b/packages/tracing-internal/test/utils/utils.ts @@ -0,0 +1,20 @@ +import { parseSemver } from '@sentry/utils'; + +export const NODE_VERSION = parseSemver(process.versions.node) as { major: number; minor: number; patch: number }; + +/** + * Returns`describe` or `describe.skip` depending on allowed major versions of Node. + * + * @param {{ min?: number; max?: number }} allowedVersion + * @return {*} {jest.Describe} + */ +export const conditionalTest = (allowedVersion: { min?: number; max?: number }): jest.Describe => { + const major = NODE_VERSION.major; + if (!major) { + return describe.skip as jest.Describe; + } + + return major < (allowedVersion.min || -Infinity) || major > (allowedVersion.max || Infinity) + ? (describe.skip as jest.Describe) + : (describe as any); +}; From 42cf5e7eae06a5b2157f2e5bbe3407679c996545 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Tue, 13 Feb 2024 14:24:21 +0100 Subject: [PATCH 016/106] build: bump size limit --- .size-limit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.size-limit.js b/.size-limit.js index 5e94a923e656..51f1e0c711f7 100644 --- a/.size-limit.js +++ b/.size-limit.js @@ -115,7 +115,7 @@ module.exports = [ path: 'packages/browser/build/bundles/bundle.tracing.min.js', gzip: false, brotli: false, - limit: '105 KB', + limit: '112 KB', }, { name: '@sentry/browser - ES6 CDN Bundle (minified & uncompressed)', From 41ad9c87c9a9adf301a24ed2cffdaf6001d0ee1b Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Tue, 13 Feb 2024 14:37:45 +0100 Subject: [PATCH 017/106] meta(changelog): Update changelog for v7.101.0 (#10640) Updates the changelog for v7.101.0. Note, we need to also pick the changelog updates onto develop (also 7.100.x changes) after we published. --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ee384bf46c3..e0d99d6e4ded 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 7.101.0 + +- feat: Export semantic attribute keys from SDK packages (#10637) +- feat(core): Add metric summaries to spans (#10554) +- feat(core): Deprecate the `Hub` constructor (#10584) +- feat(core): Make custom tracing methods return spans & set default op (#10633) +- feat(replay): Add `getReplay` utility function (#10510) +- fix(angular-ivy): Add `exports` field to `package.json` (#10569) +- fix(sveltekit): Avoid capturing Http 4xx errors on the client (#10571) +- fix(sveltekit): Properly await sourcemaps flattening (#10602) + ## 7.100.1 This release contains build fixes for profiling-node. From b4d4a83096b53b88e79b54b7f2ea422f26df7de4 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 13 Feb 2024 13:41:50 +0000 Subject: [PATCH 018/106] release: 7.101.0 --- .../browser-integration-tests/package.json | 6 +++--- dev-packages/e2e-tests/package.json | 2 +- .../node-integration-tests/package.json | 8 ++++---- dev-packages/overhead-metrics/package.json | 2 +- dev-packages/rollup-utils/package.json | 2 +- lerna.json | 2 +- packages/angular-ivy/package.json | 10 +++++----- packages/angular/package.json | 10 +++++----- packages/astro/package.json | 12 ++++++------ packages/browser/package.json | 18 +++++++++--------- packages/bun/package.json | 10 +++++----- packages/core/package.json | 6 +++--- packages/core/src/version.ts | 2 +- packages/deno/package.json | 10 +++++----- packages/ember/package.json | 10 +++++----- packages/eslint-config-sdk/package.json | 6 +++--- packages/eslint-plugin-sdk/package.json | 2 +- packages/feedback/package.json | 8 ++++---- packages/gatsby/package.json | 10 +++++----- packages/hub/package.json | 8 ++++---- packages/integration-shims/package.json | 6 +++--- packages/integrations/package.json | 10 +++++----- packages/nextjs/package.json | 16 ++++++++-------- packages/node-experimental/package.json | 12 ++++++------ packages/node/package.json | 10 +++++----- packages/opentelemetry-node/package.json | 10 +++++----- packages/opentelemetry/package.json | 8 ++++---- packages/profiling-node/package.json | 2 +- packages/react/package.json | 10 +++++----- packages/remix/package.json | 12 ++++++------ packages/replay-canvas/package.json | 10 +++++----- packages/replay-worker/package.json | 2 +- packages/replay/package.json | 12 ++++++------ packages/serverless/package.json | 10 +++++----- packages/svelte/package.json | 10 +++++----- packages/sveltekit/package.json | 16 ++++++++-------- packages/tracing-internal/package.json | 8 ++++---- packages/tracing/package.json | 14 +++++++------- packages/types/package.json | 2 +- packages/typescript/package.json | 2 +- packages/utils/package.json | 4 ++-- packages/vercel-edge/package.json | 10 +++++----- packages/vue/package.json | 10 +++++----- packages/wasm/package.json | 10 +++++----- 44 files changed, 180 insertions(+), 180 deletions(-) diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 8bac002a1b6b..930430c5a778 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/browser-integration-tests", - "version": "7.100.1", + "version": "7.101.0", "main": "index.js", "license": "MIT", "engines": { @@ -47,8 +47,8 @@ "@babel/preset-typescript": "^7.16.7", "@playwright/test": "^1.40.1", "@sentry-internal/rrweb": "2.11.0", - "@sentry/browser": "7.100.1", - "@sentry/tracing": "7.100.1", + "@sentry/browser": "7.101.0", + "@sentry/tracing": "7.101.0", "axios": "1.6.0", "babel-loader": "^8.2.2", "html-webpack-plugin": "^5.5.0", diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index 3baaeee56825..59df3c5de584 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/e2e-tests", - "version": "7.100.1", + "version": "7.101.0", "license": "MIT", "private": true, "scripts": { diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index 08b10bb97add..17526f00539f 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/node-integration-tests", - "version": "7.100.1", + "version": "7.101.0", "license": "MIT", "engines": { "node": ">=10" @@ -29,9 +29,9 @@ "dependencies": { "@hapi/hapi": "^20.3.0", "@prisma/client": "3.15.2", - "@sentry/node": "7.100.1", - "@sentry/tracing": "7.100.1", - "@sentry/types": "7.100.1", + "@sentry/node": "7.101.0", + "@sentry/tracing": "7.101.0", + "@sentry/types": "7.101.0", "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21", "@types/pg": "^8.6.5", diff --git a/dev-packages/overhead-metrics/package.json b/dev-packages/overhead-metrics/package.json index f865db0f81aa..845fa03fceb1 100644 --- a/dev-packages/overhead-metrics/package.json +++ b/dev-packages/overhead-metrics/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "7.100.1", + "version": "7.101.0", "name": "@sentry-internal/overhead-metrics", "main": "index.js", "author": "Sentry", diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index c0205a951b64..cf4f7ece6e1b 100644 --- a/dev-packages/rollup-utils/package.json +++ b/dev-packages/rollup-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/rollup-utils", - "version": "7.100.1", + "version": "7.101.0", "description": "Rollup utilities used at Sentry for the Sentry JavaScript SDK", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/rollup-utils", diff --git a/lerna.json b/lerna.json index f31be731288e..a37b12340a86 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "7.100.1", + "version": "7.101.0", "npmClient": "yarn" } diff --git a/packages/angular-ivy/package.json b/packages/angular-ivy/package.json index 7feff602bb33..c2e5119b1af3 100644 --- a/packages/angular-ivy/package.json +++ b/packages/angular-ivy/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular-ivy", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Angular with full Ivy Support", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular-ivy", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/browser": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/angular/package.json b/packages/angular/package.json index 2b29363605c6..2b647843d5a6 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Angular", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/browser": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/astro/package.json b/packages/astro/package.json index d00157e0acc1..36544191f080 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/astro", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Astro", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/astro", @@ -49,11 +49,11 @@ "astro": ">=3.x || >=4.0.0-beta" }, "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/node": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/browser": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/node": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "@sentry/vite-plugin": "^2.8.0" }, "devDependencies": { diff --git a/packages/browser/package.json b/packages/browser/package.json index 30034af79116..15381c6326bb 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -29,16 +29,16 @@ "access": "public" }, "dependencies": { - "@sentry-internal/feedback": "7.100.1", - "@sentry-internal/replay-canvas": "7.100.1", - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/replay": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/feedback": "7.101.0", + "@sentry-internal/replay-canvas": "7.101.0", + "@sentry-internal/tracing": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/replay": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.100.1", + "@sentry-internal/integration-shims": "7.101.0", "@types/md5": "2.1.33", "btoa": "^1.2.1", "chai": "^4.1.2", diff --git a/packages/bun/package.json b/packages/bun/package.json index 108f804635fe..24b1b170be9c 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bun", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for bun", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/bun", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/node": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.0", + "@sentry/node": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "devDependencies": { "bun-types": "latest" diff --git a/packages/core/package.json b/packages/core/package.json index 0eafc2185970..98e8db5b37ed 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "7.100.1", + "version": "7.101.0", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -29,8 +29,8 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 74db1f7dcf49..f22b9a50aeef 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = '7.100.1'; +export const SDK_VERSION = '7.101.0'; diff --git a/packages/deno/package.json b/packages/deno/package.json index a13354440679..0ac809f6b3a3 100644 --- a/packages/deno/package.json +++ b/packages/deno/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/deno", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Deno", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/deno", @@ -17,10 +17,10 @@ "index.d.ts" ], "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/browser": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.5", diff --git a/packages/ember/package.json b/packages/ember/package.json index 6169a32b523e..817b06a8cf07 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Ember.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/ember", @@ -32,10 +32,10 @@ }, "dependencies": { "@embroider/macros": "^1.9.0", - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/browser": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "ember-auto-import": "^1.12.1 || ^2.4.3", "ember-cli-babel": "^7.26.11", "ember-cli-htmlbars": "^6.1.1", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index 087fea6f09ae..2dc6bc26b12b 100644 --- a/packages/eslint-config-sdk/package.json +++ b/packages/eslint-config-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config-sdk", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK eslint config", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-config-sdk", @@ -22,8 +22,8 @@ "access": "public" }, "dependencies": { - "@sentry-internal/eslint-plugin-sdk": "7.100.1", - "@sentry-internal/typescript": "7.100.1", + "@sentry-internal/eslint-plugin-sdk": "7.101.0", + "@sentry-internal/typescript": "7.101.0", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "eslint-config-prettier": "^6.11.0", diff --git a/packages/eslint-plugin-sdk/package.json b/packages/eslint-plugin-sdk/package.json index 6ecd86e2e7ca..080cf333fa04 100644 --- a/packages/eslint-plugin-sdk/package.json +++ b/packages/eslint-plugin-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-plugin-sdk", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK eslint plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-plugin-sdk", diff --git a/packages/feedback/package.json b/packages/feedback/package.json index 5b533cb3c830..80e8eb374b2c 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/feedback", - "version": "7.100.1", + "version": "7.101.0", "description": "Sentry SDK integration for user feedback", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/feedback", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "scripts": { "build": "run-p build:transpile build:types build:bundle", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index f7a0a7a29c67..c6799c098c2e 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Gatsby.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/gatsby", @@ -37,10 +37,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/react": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/core": "7.101.0", + "@sentry/react": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "@sentry/webpack-plugin": "1.19.0" }, "peerDependencies": { diff --git a/packages/hub/package.json b/packages/hub/package.json index afc715f643eb..e7495499705e 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "7.100.1", + "version": "7.101.0", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/integration-shims/package.json b/packages/integration-shims/package.json index b67e6d82a599..0008b3ca6128 100644 --- a/packages/integration-shims/package.json +++ b/packages/integration-shims/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-shims", - "version": "7.100.1", + "version": "7.101.0", "description": "Shims for integrations in Sentry SDK.", "main": "build/cjs/index.js", "module": "build/esm/index.js", @@ -39,8 +39,8 @@ "url": "https://github.com/getsentry/sentry-javascript/issues" }, "dependencies": { - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "engines": { "node": ">=12" diff --git a/packages/integrations/package.json b/packages/integrations/package.json index b0a2056745f7..10ce02a7b3d1 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "7.100.1", + "version": "7.101.0", "description": "Pluggable integrations that can be used to enhance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -29,13 +29,13 @@ } }, "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "localforage": "^1.8.1" }, "devDependencies": { - "@sentry/browser": "7.100.1", + "@sentry/browser": "7.101.0", "chai": "^4.1.2" }, "scripts": { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 53a9ee6ffcf3..9e173e8ecdd9 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Next.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nextjs", @@ -25,13 +25,13 @@ }, "dependencies": { "@rollup/plugin-commonjs": "24.0.0", - "@sentry/core": "7.100.1", - "@sentry/integrations": "7.100.1", - "@sentry/node": "7.100.1", - "@sentry/react": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", - "@sentry/vercel-edge": "7.100.1", + "@sentry/core": "7.101.0", + "@sentry/integrations": "7.101.0", + "@sentry/node": "7.101.0", + "@sentry/react": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", + "@sentry/vercel-edge": "7.101.0", "@sentry/webpack-plugin": "1.21.0", "chalk": "3.0.0", "resolve": "1.22.8", diff --git a/packages/node-experimental/package.json b/packages/node-experimental/package.json index 0b81845fc043..c612036b39f3 100644 --- a/packages/node-experimental/package.json +++ b/packages/node-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node-experimental", - "version": "7.100.1", + "version": "7.101.0", "description": "Experimental version of a Node SDK using OpenTelemetry for performance instrumentation", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node-experimental", @@ -49,11 +49,11 @@ "@opentelemetry/sdk-trace-base": "1.21.0", "@opentelemetry/semantic-conventions": "1.21.0", "@prisma/instrumentation": "5.9.0", - "@sentry/core": "7.100.1", - "@sentry/node": "7.100.1", - "@sentry/opentelemetry": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.0", + "@sentry/node": "7.101.0", + "@sentry/opentelemetry": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "optionalDependencies": { "opentelemetry-instrumentation-fetch-node": "1.1.0" diff --git a/packages/node/package.json b/packages/node/package.json index 0d0347bc3c26..ebc631a73a2c 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/tracing": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "devDependencies": { "@types/cookie": "0.5.2", diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index 8f9a7c01b906..8d56f14a57b8 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry-node", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for OpenTelemetry Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry-node", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "peerDependencies": { "@opentelemetry/api": "1.x", @@ -45,7 +45,7 @@ "@opentelemetry/sdk-trace-base": "^1.17.1", "@opentelemetry/sdk-trace-node": "^1.17.1", "@opentelemetry/semantic-conventions": "^1.17.1", - "@sentry/node": "7.100.1" + "@sentry/node": "7.101.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index 74e75310e232..8f624c309001 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry utilities for OpenTelemetry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0", diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index 29fed9f5a217..c9ba65fa26d3 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/profiling-node", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Node.js Profiling", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/profiling-node", diff --git a/packages/react/package.json b/packages/react/package.json index ff87bbde942c..67d7d87b029c 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for React.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/browser": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { diff --git a/packages/remix/package.json b/packages/remix/package.json index ab2882440830..f184c98e6559 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/remix", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Remix", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/remix", @@ -35,11 +35,11 @@ }, "dependencies": { "@sentry/cli": "^2.28.0", - "@sentry/core": "7.100.1", - "@sentry/node": "7.100.1", - "@sentry/react": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/core": "7.101.0", + "@sentry/node": "7.101.0", + "@sentry/react": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "glob": "^10.3.4", "yargs": "^17.6.0" }, diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index e136e75b0e03..45f0843765c1 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-canvas", - "version": "7.100.1", + "version": "7.101.0", "description": "Replay canvas integration", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -59,10 +59,10 @@ "@sentry-internal/rrweb": "2.11.0" }, "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/replay": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.0", + "@sentry/replay": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "engines": { "node": ">=12" diff --git a/packages/replay-worker/package.json b/packages/replay-worker/package.json index 6b01aa0eaf4a..ae5e5e09c873 100644 --- a/packages/replay-worker/package.json +++ b/packages/replay-worker/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-worker", - "version": "7.100.1", + "version": "7.101.0", "description": "Worker for @sentry/replay", "main": "build/npm/esm/index.js", "module": "build/npm/esm/index.js", diff --git a/packages/replay/package.json b/packages/replay/package.json index 5a2bd74efb19..1f4c3b6e9708 100644 --- a/packages/replay/package.json +++ b/packages/replay/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/replay", - "version": "7.100.1", + "version": "7.101.0", "description": "User replays for Sentry", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -53,17 +53,17 @@ "homepage": "https://docs.sentry.io/platforms/javascript/session-replay/", "devDependencies": { "@babel/core": "^7.17.5", - "@sentry-internal/replay-worker": "7.100.1", + "@sentry-internal/replay-worker": "7.101.0", "@sentry-internal/rrweb": "2.11.0", "@sentry-internal/rrweb-snapshot": "2.11.0", "fflate": "^0.8.1", "jsdom-worker": "^0.2.1" }, "dependencies": { - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/tracing": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "engines": { "node": ">=12" diff --git a/packages/serverless/package.json b/packages/serverless/package.json index 4b43c8a0f206..ba95056609f5 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/serverless", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for various serverless solutions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/node": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/core": "7.101.0", + "@sentry/node": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "@types/aws-lambda": "^8.10.62", "@types/express": "^4.17.14" }, diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 537f9ac15869..5a1787f2b643 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/svelte", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Svelte", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/svelte", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/browser": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "magic-string": "^0.30.0" }, "peerDependencies": { diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index a518d18703d4..7a49bdd7c26b 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sveltekit", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for SvelteKit", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/sveltekit", @@ -37,13 +37,13 @@ "@sveltejs/kit": "1.x || 2.x" }, "dependencies": { - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/integrations": "7.100.1", - "@sentry/node": "7.100.1", - "@sentry/svelte": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry-internal/tracing": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/integrations": "7.101.0", + "@sentry/node": "7.101.0", + "@sentry/svelte": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "@sentry/vite-plugin": "^0.6.1", "magicast": "0.2.8", "sorcery": "0.11.0" diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json index 52521ca890f9..929de81e40e4 100644 --- a/packages/tracing-internal/package.json +++ b/packages/tracing-internal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/tracing", - "version": "7.100.1", + "version": "7.101.0", "description": "Sentry Internal Tracing Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "devDependencies": { "@types/express": "^4.17.14" diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 594243e1a51f..73e566707ff3 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/tracing", - "version": "7.100.1", + "version": "7.101.0", "description": "Sentry Performance Monitoring Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing", @@ -29,14 +29,14 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.100.1" + "@sentry-internal/tracing": "7.101.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.100.1", - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry-internal/integration-shims": "7.101.0", + "@sentry/browser": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0", "@types/express": "^4.17.14" }, "scripts": { diff --git a/packages/types/package.json b/packages/types/package.json index e3dacfc8b017..13c9dd7967cf 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "7.100.1", + "version": "7.101.0", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 26ef62e6f079..9dbcc9290190 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "7.100.1", + "version": "7.101.0", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript", diff --git a/packages/utils/package.json b/packages/utils/package.json index e66530f64b90..9402e215e641 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "7.100.1", + "version": "7.101.0", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -29,7 +29,7 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.100.1" + "@sentry/types": "7.101.0" }, "devDependencies": { "@types/array.prototype.flat": "^1.2.1", diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 34d21a327a71..e471773603bc 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vercel-edge", - "version": "7.100.1", + "version": "7.101.0", "description": "Offical Sentry SDK for the Vercel Edge Runtime", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vercel-edge", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/tracing": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "devDependencies": { "@edge-runtime/jest-environment": "2.2.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index 25f38869174f..e42835b805d4 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "7.100.1", + "version": "7.101.0", "description": "Official Sentry SDK for Vue.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vue", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/browser": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "peerDependencies": { "vue": "2.x || 3.x" diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 794cbe122124..7cb8e1b475bf 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "7.100.1", + "version": "7.101.0", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/browser": "7.101.0", + "@sentry/core": "7.101.0", + "@sentry/types": "7.101.0", + "@sentry/utils": "7.101.0" }, "scripts": { "build": "run-p build:transpile build:bundle build:types", From dfe1f728515a78e32e71644266240cb2470f6a12 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 13 Feb 2024 18:39:27 +0100 Subject: [PATCH 019/106] fix(nextjs): Remove `webpack://` prefix more broadly from source map `sources` field (#10641) --- packages/nextjs/src/config/webpack.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nextjs/src/config/webpack.ts b/packages/nextjs/src/config/webpack.ts index 75f27bb9e649..dcaa757cb767 100644 --- a/packages/nextjs/src/config/webpack.ts +++ b/packages/nextjs/src/config/webpack.ts @@ -764,7 +764,7 @@ export function getWebpackPluginOptions( project: process.env.SENTRY_PROJECT, authToken: process.env.SENTRY_AUTH_TOKEN, configFile: hasSentryProperties ? 'sentry.properties' : undefined, - stripPrefix: ['webpack://_N_E/'], + stripPrefix: ['webpack://_N_E/', 'webpack://'], urlPrefix, entries: [], // The webpack plugin's release injection breaks the `app` directory - we inject the release manually with the value injection loader instead. release: getSentryRelease(buildId), From cce125db59358631053f91eb2a1aa92cb5d3048e Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 14 Feb 2024 19:23:32 +0100 Subject: [PATCH 020/106] meta: Update CHANGELOG for 7.101.1 (#10663) --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0d99d6e4ded..9c131ad256ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 7.101.1 + +In version 7.101.0 the `@sentry/hub` package was missing due to a publishing issue. This release contains the package +again. + +- fix(nextjs): Remove `webpack://` prefix more broadly from source map `sources` field (#10641) + ## 7.101.0 - feat: Export semantic attribute keys from SDK packages (#10637) From 2a3a85b56c6e5c91b010dc66f0c2cbcc74ca1c03 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Thu, 15 Feb 2024 09:15:30 +0100 Subject: [PATCH 021/106] tests: Fix failing Next.js test (#10670) --- packages/nextjs/test/config/webpack/sentryWebpackPlugin.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/nextjs/test/config/webpack/sentryWebpackPlugin.test.ts b/packages/nextjs/test/config/webpack/sentryWebpackPlugin.test.ts index db17062041c8..ddcc8965a6c1 100644 --- a/packages/nextjs/test/config/webpack/sentryWebpackPlugin.test.ts +++ b/packages/nextjs/test/config/webpack/sentryWebpackPlugin.test.ts @@ -35,7 +35,7 @@ describe('Sentry webpack plugin config', () => { org: 'squirrelChasers', // from user webpack plugin config project: 'simulator', // from user webpack plugin config authToken: 'dogsarebadatkeepingsecrets', // picked up from env - stripPrefix: ['webpack://_N_E/'], // default + stripPrefix: ['webpack://_N_E/', 'webpack://'], // default urlPrefix: '~/_next', // default entries: [], release: 'doGsaREgReaT', // picked up from env From a2d83b4008fba1d044deadc57c66c18c7f937f9b Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 15 Feb 2024 09:42:07 +0100 Subject: [PATCH 022/106] chore(ci): Ensure "Build & Test" workflow runs on `v7` (#10671) --- .github/workflows/build.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1b4eb8e140fc..3d02857a3611 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,6 +3,7 @@ on: push: branches: - develop + - v7 - master - release/** pull_request: @@ -168,7 +169,8 @@ jobs: changed_browser_integration: ${{ steps.changed.outputs.browser_integration }} changed_any_code: ${{ steps.changed.outputs.any_code }} # Note: These next three have to be checked as strings ('true'/'false')! - is_develop: ${{ github.ref == 'refs/heads/develop' }} + # is_develop for v7 now also means we're on the `v7` branch. + is_develop: ${{ github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/v7' }} is_release: ${{ startsWith(github.ref, 'refs/heads/release/') }} # When merging into master, or from master is_gitflow_sync: ${{ github.head_ref == 'master' || github.ref == 'refs/heads/master' }} @@ -313,7 +315,7 @@ jobs: with: github_token: ${{ secrets.GITHUB_TOKEN }} skip_step: build - main_branch: develop + main_branch: v7 # When on release branch, we want to always run # Else, we fall back to the default handling of the action run_for_branch: ${{ (needs.job_get_metadata.outputs.is_release == 'true' && 'true') || '' }} From e4696dcc0e928c741bebce2311afdee86479fbfa Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 15 Feb 2024 09:34:36 +0000 Subject: [PATCH 023/106] release: 7.101.1 --- .../browser-integration-tests/package.json | 6 +++--- dev-packages/e2e-tests/package.json | 2 +- .../node-integration-tests/package.json | 8 ++++---- dev-packages/overhead-metrics/package.json | 2 +- dev-packages/rollup-utils/package.json | 2 +- lerna.json | 2 +- packages/angular-ivy/package.json | 10 +++++----- packages/angular/package.json | 10 +++++----- packages/astro/package.json | 12 ++++++------ packages/browser/package.json | 18 +++++++++--------- packages/bun/package.json | 10 +++++----- packages/core/package.json | 6 +++--- packages/core/src/version.ts | 2 +- packages/deno/package.json | 10 +++++----- packages/ember/package.json | 10 +++++----- packages/eslint-config-sdk/package.json | 6 +++--- packages/eslint-plugin-sdk/package.json | 2 +- packages/feedback/package.json | 8 ++++---- packages/gatsby/package.json | 10 +++++----- packages/hub/package.json | 8 ++++---- packages/integration-shims/package.json | 6 +++--- packages/integrations/package.json | 10 +++++----- packages/nextjs/package.json | 16 ++++++++-------- packages/node-experimental/package.json | 12 ++++++------ packages/node/package.json | 10 +++++----- packages/opentelemetry-node/package.json | 10 +++++----- packages/opentelemetry/package.json | 8 ++++---- packages/profiling-node/package.json | 2 +- packages/react/package.json | 10 +++++----- packages/remix/package.json | 12 ++++++------ packages/replay-canvas/package.json | 10 +++++----- packages/replay-worker/package.json | 2 +- packages/replay/package.json | 12 ++++++------ packages/serverless/package.json | 10 +++++----- packages/svelte/package.json | 10 +++++----- packages/sveltekit/package.json | 16 ++++++++-------- packages/tracing-internal/package.json | 8 ++++---- packages/tracing/package.json | 14 +++++++------- packages/types/package.json | 2 +- packages/typescript/package.json | 2 +- packages/utils/package.json | 4 ++-- packages/vercel-edge/package.json | 10 +++++----- packages/vue/package.json | 10 +++++----- packages/wasm/package.json | 10 +++++----- 44 files changed, 180 insertions(+), 180 deletions(-) diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 930430c5a778..5c9bd89f5bb5 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/browser-integration-tests", - "version": "7.101.0", + "version": "7.101.1", "main": "index.js", "license": "MIT", "engines": { @@ -47,8 +47,8 @@ "@babel/preset-typescript": "^7.16.7", "@playwright/test": "^1.40.1", "@sentry-internal/rrweb": "2.11.0", - "@sentry/browser": "7.101.0", - "@sentry/tracing": "7.101.0", + "@sentry/browser": "7.101.1", + "@sentry/tracing": "7.101.1", "axios": "1.6.0", "babel-loader": "^8.2.2", "html-webpack-plugin": "^5.5.0", diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index 59df3c5de584..382ce40f8eac 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/e2e-tests", - "version": "7.101.0", + "version": "7.101.1", "license": "MIT", "private": true, "scripts": { diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index 17526f00539f..e79dfd086a78 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/node-integration-tests", - "version": "7.101.0", + "version": "7.101.1", "license": "MIT", "engines": { "node": ">=10" @@ -29,9 +29,9 @@ "dependencies": { "@hapi/hapi": "^20.3.0", "@prisma/client": "3.15.2", - "@sentry/node": "7.101.0", - "@sentry/tracing": "7.101.0", - "@sentry/types": "7.101.0", + "@sentry/node": "7.101.1", + "@sentry/tracing": "7.101.1", + "@sentry/types": "7.101.1", "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21", "@types/pg": "^8.6.5", diff --git a/dev-packages/overhead-metrics/package.json b/dev-packages/overhead-metrics/package.json index 845fa03fceb1..b39b56bab5a2 100644 --- a/dev-packages/overhead-metrics/package.json +++ b/dev-packages/overhead-metrics/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "7.101.0", + "version": "7.101.1", "name": "@sentry-internal/overhead-metrics", "main": "index.js", "author": "Sentry", diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index cf4f7ece6e1b..dac067a36238 100644 --- a/dev-packages/rollup-utils/package.json +++ b/dev-packages/rollup-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/rollup-utils", - "version": "7.101.0", + "version": "7.101.1", "description": "Rollup utilities used at Sentry for the Sentry JavaScript SDK", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/rollup-utils", diff --git a/lerna.json b/lerna.json index a37b12340a86..b293c0a7e0b8 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "7.101.0", + "version": "7.101.1", "npmClient": "yarn" } diff --git a/packages/angular-ivy/package.json b/packages/angular-ivy/package.json index c2e5119b1af3..76d5db113719 100644 --- a/packages/angular-ivy/package.json +++ b/packages/angular-ivy/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular-ivy", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Angular with full Ivy Support", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular-ivy", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/angular/package.json b/packages/angular/package.json index 2b647843d5a6..e851bd7b4105 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Angular", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/astro/package.json b/packages/astro/package.json index 36544191f080..1934e2c09ffa 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/astro", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Astro", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/astro", @@ -49,11 +49,11 @@ "astro": ">=3.x || >=4.0.0-beta" }, "dependencies": { - "@sentry/browser": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/node": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/node": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "@sentry/vite-plugin": "^2.8.0" }, "devDependencies": { diff --git a/packages/browser/package.json b/packages/browser/package.json index 15381c6326bb..4d93133cb79e 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -29,16 +29,16 @@ "access": "public" }, "dependencies": { - "@sentry-internal/feedback": "7.101.0", - "@sentry-internal/replay-canvas": "7.101.0", - "@sentry-internal/tracing": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/replay": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry-internal/feedback": "7.101.1", + "@sentry-internal/replay-canvas": "7.101.1", + "@sentry-internal/tracing": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/replay": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.101.0", + "@sentry-internal/integration-shims": "7.101.1", "@types/md5": "2.1.33", "btoa": "^1.2.1", "chai": "^4.1.2", diff --git a/packages/bun/package.json b/packages/bun/package.json index 24b1b170be9c..ec8947006d92 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bun", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for bun", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/bun", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.0", - "@sentry/node": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/core": "7.101.1", + "@sentry/node": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "devDependencies": { "bun-types": "latest" diff --git a/packages/core/package.json b/packages/core/package.json index 98e8db5b37ed..cd9dea8a043d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "7.101.0", + "version": "7.101.1", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -29,8 +29,8 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index f22b9a50aeef..88c596d8a252 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = '7.101.0'; +export const SDK_VERSION = '7.101.1'; diff --git a/packages/deno/package.json b/packages/deno/package.json index 0ac809f6b3a3..731f89844e8b 100644 --- a/packages/deno/package.json +++ b/packages/deno/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/deno", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Deno", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/deno", @@ -17,10 +17,10 @@ "index.d.ts" ], "dependencies": { - "@sentry/browser": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.5", diff --git a/packages/ember/package.json b/packages/ember/package.json index 817b06a8cf07..be6679822e14 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Ember.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/ember", @@ -32,10 +32,10 @@ }, "dependencies": { "@embroider/macros": "^1.9.0", - "@sentry/browser": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "ember-auto-import": "^1.12.1 || ^2.4.3", "ember-cli-babel": "^7.26.11", "ember-cli-htmlbars": "^6.1.1", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index 2dc6bc26b12b..11a4a4c33daa 100644 --- a/packages/eslint-config-sdk/package.json +++ b/packages/eslint-config-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config-sdk", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK eslint config", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-config-sdk", @@ -22,8 +22,8 @@ "access": "public" }, "dependencies": { - "@sentry-internal/eslint-plugin-sdk": "7.101.0", - "@sentry-internal/typescript": "7.101.0", + "@sentry-internal/eslint-plugin-sdk": "7.101.1", + "@sentry-internal/typescript": "7.101.1", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "eslint-config-prettier": "^6.11.0", diff --git a/packages/eslint-plugin-sdk/package.json b/packages/eslint-plugin-sdk/package.json index 080cf333fa04..197fdfea8c18 100644 --- a/packages/eslint-plugin-sdk/package.json +++ b/packages/eslint-plugin-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-plugin-sdk", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK eslint plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-plugin-sdk", diff --git a/packages/feedback/package.json b/packages/feedback/package.json index 80e8eb374b2c..28e23092ef0d 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/feedback", - "version": "7.101.0", + "version": "7.101.1", "description": "Sentry SDK integration for user feedback", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/feedback", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "scripts": { "build": "run-p build:transpile build:types build:bundle", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index c6799c098c2e..2eb792cbeae8 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Gatsby.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/gatsby", @@ -37,10 +37,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.0", - "@sentry/react": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry/core": "7.101.1", + "@sentry/react": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "@sentry/webpack-plugin": "1.19.0" }, "peerDependencies": { diff --git a/packages/hub/package.json b/packages/hub/package.json index e7495499705e..ee2ae145f103 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "7.101.0", + "version": "7.101.1", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/integration-shims/package.json b/packages/integration-shims/package.json index 0008b3ca6128..2660e6aee9f1 100644 --- a/packages/integration-shims/package.json +++ b/packages/integration-shims/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-shims", - "version": "7.101.0", + "version": "7.101.1", "description": "Shims for integrations in Sentry SDK.", "main": "build/cjs/index.js", "module": "build/esm/index.js", @@ -39,8 +39,8 @@ "url": "https://github.com/getsentry/sentry-javascript/issues" }, "dependencies": { - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "engines": { "node": ">=12" diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 10ce02a7b3d1..a0c299a40374 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "7.101.0", + "version": "7.101.1", "description": "Pluggable integrations that can be used to enhance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -29,13 +29,13 @@ } }, "dependencies": { - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "localforage": "^1.8.1" }, "devDependencies": { - "@sentry/browser": "7.101.0", + "@sentry/browser": "7.101.1", "chai": "^4.1.2" }, "scripts": { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 9e173e8ecdd9..34b006cc4941 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Next.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nextjs", @@ -25,13 +25,13 @@ }, "dependencies": { "@rollup/plugin-commonjs": "24.0.0", - "@sentry/core": "7.101.0", - "@sentry/integrations": "7.101.0", - "@sentry/node": "7.101.0", - "@sentry/react": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", - "@sentry/vercel-edge": "7.101.0", + "@sentry/core": "7.101.1", + "@sentry/integrations": "7.101.1", + "@sentry/node": "7.101.1", + "@sentry/react": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", + "@sentry/vercel-edge": "7.101.1", "@sentry/webpack-plugin": "1.21.0", "chalk": "3.0.0", "resolve": "1.22.8", diff --git a/packages/node-experimental/package.json b/packages/node-experimental/package.json index c612036b39f3..896fcaba2265 100644 --- a/packages/node-experimental/package.json +++ b/packages/node-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node-experimental", - "version": "7.101.0", + "version": "7.101.1", "description": "Experimental version of a Node SDK using OpenTelemetry for performance instrumentation", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node-experimental", @@ -49,11 +49,11 @@ "@opentelemetry/sdk-trace-base": "1.21.0", "@opentelemetry/semantic-conventions": "1.21.0", "@prisma/instrumentation": "5.9.0", - "@sentry/core": "7.101.0", - "@sentry/node": "7.101.0", - "@sentry/opentelemetry": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/core": "7.101.1", + "@sentry/node": "7.101.1", + "@sentry/opentelemetry": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "optionalDependencies": { "opentelemetry-instrumentation-fetch-node": "1.1.0" diff --git a/packages/node/package.json b/packages/node/package.json index ebc631a73a2c..4a77fd80ebd6 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry-internal/tracing": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "devDependencies": { "@types/cookie": "0.5.2", diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index 8d56f14a57b8..5496b60cf0ec 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry-node", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for OpenTelemetry Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry-node", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "peerDependencies": { "@opentelemetry/api": "1.x", @@ -45,7 +45,7 @@ "@opentelemetry/sdk-trace-base": "^1.17.1", "@opentelemetry/sdk-trace-node": "^1.17.1", "@opentelemetry/semantic-conventions": "^1.17.1", - "@sentry/node": "7.101.0" + "@sentry/node": "7.101.1" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index 8f624c309001..7e393d73db60 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry utilities for OpenTelemetry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0", diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index c9ba65fa26d3..1f97da36b7c2 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/profiling-node", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Node.js Profiling", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/profiling-node", diff --git a/packages/react/package.json b/packages/react/package.json index 67d7d87b029c..878d68ba988d 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for React.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { diff --git a/packages/remix/package.json b/packages/remix/package.json index f184c98e6559..9ce5afc45ae8 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/remix", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Remix", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/remix", @@ -35,11 +35,11 @@ }, "dependencies": { "@sentry/cli": "^2.28.0", - "@sentry/core": "7.101.0", - "@sentry/node": "7.101.0", - "@sentry/react": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry/core": "7.101.1", + "@sentry/node": "7.101.1", + "@sentry/react": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "glob": "^10.3.4", "yargs": "^17.6.0" }, diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index 45f0843765c1..f92a4927cbe4 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-canvas", - "version": "7.101.0", + "version": "7.101.1", "description": "Replay canvas integration", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -59,10 +59,10 @@ "@sentry-internal/rrweb": "2.11.0" }, "dependencies": { - "@sentry/core": "7.101.0", - "@sentry/replay": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/core": "7.101.1", + "@sentry/replay": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "engines": { "node": ">=12" diff --git a/packages/replay-worker/package.json b/packages/replay-worker/package.json index ae5e5e09c873..5931395eb419 100644 --- a/packages/replay-worker/package.json +++ b/packages/replay-worker/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-worker", - "version": "7.101.0", + "version": "7.101.1", "description": "Worker for @sentry/replay", "main": "build/npm/esm/index.js", "module": "build/npm/esm/index.js", diff --git a/packages/replay/package.json b/packages/replay/package.json index 1f4c3b6e9708..d9fe98ace439 100644 --- a/packages/replay/package.json +++ b/packages/replay/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/replay", - "version": "7.101.0", + "version": "7.101.1", "description": "User replays for Sentry", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -53,17 +53,17 @@ "homepage": "https://docs.sentry.io/platforms/javascript/session-replay/", "devDependencies": { "@babel/core": "^7.17.5", - "@sentry-internal/replay-worker": "7.101.0", + "@sentry-internal/replay-worker": "7.101.1", "@sentry-internal/rrweb": "2.11.0", "@sentry-internal/rrweb-snapshot": "2.11.0", "fflate": "^0.8.1", "jsdom-worker": "^0.2.1" }, "dependencies": { - "@sentry-internal/tracing": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry-internal/tracing": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "engines": { "node": ">=12" diff --git a/packages/serverless/package.json b/packages/serverless/package.json index ba95056609f5..acfd8150b1f6 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/serverless", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for various serverless solutions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.0", - "@sentry/node": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry/core": "7.101.1", + "@sentry/node": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "@types/aws-lambda": "^8.10.62", "@types/express": "^4.17.14" }, diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 5a1787f2b643..5be7bef3c5b5 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/svelte", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Svelte", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/svelte", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "magic-string": "^0.30.0" }, "peerDependencies": { diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index 7a49bdd7c26b..3181e7c6459e 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sveltekit", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for SvelteKit", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/sveltekit", @@ -37,13 +37,13 @@ "@sveltejs/kit": "1.x || 2.x" }, "dependencies": { - "@sentry-internal/tracing": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/integrations": "7.101.0", - "@sentry/node": "7.101.0", - "@sentry/svelte": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry-internal/tracing": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/integrations": "7.101.1", + "@sentry/node": "7.101.1", + "@sentry/svelte": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "@sentry/vite-plugin": "^0.6.1", "magicast": "0.2.8", "sorcery": "0.11.0" diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json index 929de81e40e4..0cc9387b4187 100644 --- a/packages/tracing-internal/package.json +++ b/packages/tracing-internal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/tracing", - "version": "7.101.0", + "version": "7.101.1", "description": "Sentry Internal Tracing Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "devDependencies": { "@types/express": "^4.17.14" diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 73e566707ff3..68e80d303d62 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/tracing", - "version": "7.101.0", + "version": "7.101.1", "description": "Sentry Performance Monitoring Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing", @@ -29,14 +29,14 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.101.0" + "@sentry-internal/tracing": "7.101.1" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.101.0", - "@sentry/browser": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0", + "@sentry-internal/integration-shims": "7.101.1", + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "@types/express": "^4.17.14" }, "scripts": { diff --git a/packages/types/package.json b/packages/types/package.json index 13c9dd7967cf..49d5aaa58d11 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "7.101.0", + "version": "7.101.1", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 9dbcc9290190..54a72854abd3 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "7.101.0", + "version": "7.101.1", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript", diff --git a/packages/utils/package.json b/packages/utils/package.json index 9402e215e641..67ebd4e84786 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "7.101.0", + "version": "7.101.1", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -29,7 +29,7 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.101.0" + "@sentry/types": "7.101.1" }, "devDependencies": { "@types/array.prototype.flat": "^1.2.1", diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index e471773603bc..974cc6f06292 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vercel-edge", - "version": "7.101.0", + "version": "7.101.1", "description": "Offical Sentry SDK for the Vercel Edge Runtime", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vercel-edge", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry-internal/tracing": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "devDependencies": { "@edge-runtime/jest-environment": "2.2.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index e42835b805d4..572f26535cee 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "7.101.0", + "version": "7.101.1", "description": "Official Sentry SDK for Vue.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vue", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "peerDependencies": { "vue": "2.x || 3.x" diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 7cb8e1b475bf..3aa3362239ed 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "7.101.0", + "version": "7.101.1", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.0", - "@sentry/core": "7.101.0", - "@sentry/types": "7.101.0", - "@sentry/utils": "7.101.0" + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "scripts": { "build": "run-p build:transpile build:bundle build:types", From 38bd3f2536acccaf5af497a539d4103bee2f4bd0 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Fri, 16 Feb 2024 16:46:08 -0500 Subject: [PATCH 024/106] Fixes latest route name and source not updating correctly --- .../src/browser/browserTracingIntegration.ts | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index b27575e147cf..787ec09af256 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -188,8 +188,10 @@ export const browserTracingIntegration = ((_options: Partial { @@ -470,7 +471,7 @@ function registerInteractionListener( inflightInteractionTransaction = undefined; } - if (!latestRouteName) { + if (!latestRoute.name) { DEBUG_BUILD && logger.warn(`[Tracing] Did not create ${op} transaction because _latestRouteName is missing.`); return undefined; } @@ -478,11 +479,11 @@ function registerInteractionListener( const { location } = WINDOW; const context: TransactionContext = { - name: latestRouteName, + name: latestRoute.name, op, trimEnd: true, data: { - [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: latestRouteSource || 'url', + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: latestRoute.source || 'url', }, }; From 0639e97c832f2317c477afcdbc1223910e6270dd Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Fri, 16 Feb 2024 16:53:45 -0500 Subject: [PATCH 025/106] Adds exclusive time and measurements to spans --- packages/core/src/semanticAttributes.ts | 5 +++++ packages/core/src/tracing/span.ts | 13 ++++++++++++- packages/types/src/span.ts | 9 ++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/packages/core/src/semanticAttributes.ts b/packages/core/src/semanticAttributes.ts index afd0d123090f..2cb2c59f473c 100644 --- a/packages/core/src/semanticAttributes.ts +++ b/packages/core/src/semanticAttributes.ts @@ -19,3 +19,8 @@ export const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op'; * Use this attribute to represent the origin of a span. */ export const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin'; + +/** + * Use this attribute to represent measurements of a span. + */ +export const SEMANTIC_ATTRIBUTE_MEASUREMENTS = 'measurements'; diff --git a/packages/core/src/tracing/span.ts b/packages/core/src/tracing/span.ts index 1c178fc05fbe..c6af15524c10 100644 --- a/packages/core/src/tracing/span.ts +++ b/packages/core/src/tracing/span.ts @@ -1,6 +1,7 @@ /* eslint-disable max-lines */ import type { Instrumenter, + Measurements, Primitive, Span as SpanInterface, SpanAttributeValue, @@ -17,7 +18,11 @@ import { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/ut import { DEBUG_BUILD } from '../debug-build'; import { getMetricSummaryJsonForSpan } from '../metrics/metric-summary'; -import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes'; +import { + SEMANTIC_ATTRIBUTE_MEASUREMENTS, + SEMANTIC_ATTRIBUTE_SENTRY_OP, + SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, +} from '../semanticAttributes'; import { getRootSpan } from '../utils/getRootSpan'; import { TRACE_FLAG_NONE, @@ -115,6 +120,7 @@ export class Span implements SpanInterface { protected _endTime?: number; /** Internal keeper of the status */ protected _status?: SpanStatusType | string; + protected _exclusiveTime?: number; private _logMessage?: string; @@ -159,6 +165,9 @@ export class Span implements SpanInterface { if (spanContext.endTimestamp) { this._endTime = spanContext.endTimestamp; } + if (spanContext.exclusiveTime) { + this._exclusiveTime = spanContext.exclusiveTime; + } } // This rule conflicts with another eslint rule :( @@ -626,6 +635,8 @@ export class Span implements SpanInterface { trace_id: this._traceId, origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined, _metrics_summary: getMetricSummaryJsonForSpan(this), + exclusive_time: this._exclusiveTime, + measurements: this._attributes[SEMANTIC_ATTRIBUTE_MEASUREMENTS] as Measurements | undefined, }); } diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index 6aa6ea1113f6..84fe450e483c 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -1,5 +1,6 @@ import type { TraceContext } from './context'; import type { Instrumenter } from './instrumenter'; +import type { Measurements } from './measurement'; import type { Primitive } from './misc'; import type { HrTime } from './opentelemetry'; import type { Transaction } from './transaction'; @@ -21,7 +22,8 @@ export type SpanAttributeValue = | boolean | Array | Array - | Array; + | Array + | Measurements; export type SpanAttributes = Partial<{ 'sentry.origin': string; @@ -178,6 +180,11 @@ export interface SpanContext { * The origin of the span, giving context about what created the span. */ origin?: SpanOrigin; + + /** + * Exclusive time in milliseconds. + */ + exclusiveTime?: number; } /** Span holding trace_id, span_id */ From 2b84c46d1e2d1a3869a4087d015506b4626d4f58 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Sat, 17 Feb 2024 12:01:20 -0500 Subject: [PATCH 026/106] Adds span envelope and datacategory --- packages/core/src/index.ts | 1 + packages/core/src/span.ts | 22 ++++++++++++++++++++++ packages/types/src/datacategory.ts | 4 +++- packages/types/src/envelope.ts | 11 +++++++++-- packages/types/src/index.ts | 2 ++ 5 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 packages/core/src/span.ts diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 849e34f6c92b..53db1e1743fe 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -79,6 +79,7 @@ export { export { applyScopeDataToEvent, mergeScopeData } from './utils/applyScopeDataToEvent'; export { prepareEvent } from './utils/prepareEvent'; export { createCheckInEnvelope } from './checkin'; +export { createSpanEnvelope } from './span'; export { hasTracingEnabled } from './utils/hasTracingEnabled'; export { isSentryRequestUrl } from './utils/isSentryRequestUrl'; export { handleCallbackErrors } from './utils/handleCallbackErrors'; diff --git a/packages/core/src/span.ts b/packages/core/src/span.ts new file mode 100644 index 000000000000..a14298fa9fe4 --- /dev/null +++ b/packages/core/src/span.ts @@ -0,0 +1,22 @@ +import type { SpanEnvelope, SpanItem } from '@sentry/types'; +import type { Span } from '@sentry/types/build/types/span'; +import { createEnvelope } from '@sentry/utils'; + +/** + * Create envelope from Span item. + */ +export function createSpanEnvelope(span: Span): SpanEnvelope { + const headers: SpanEnvelope[0] = { + sent_at: new Date().toISOString(), + }; + + const item = createSpanItem(span); + return createEnvelope(headers, [item]); +} + +function createSpanItem(span: Span): SpanItem { + const spanHeaders: SpanItem[0] = { + type: 'span', + }; + return [spanHeaders, span]; +} diff --git a/packages/types/src/datacategory.ts b/packages/types/src/datacategory.ts index ca2acd29e235..b86c1bafdc9e 100644 --- a/packages/types/src/datacategory.ts +++ b/packages/types/src/datacategory.ts @@ -27,4 +27,6 @@ export type DataCategory = // Feedback type event (v2) | 'feedback' // Unknown data category - | 'unknown'; + | 'unknown' + // Span + | 'span'; diff --git a/packages/types/src/envelope.ts b/packages/types/src/envelope.ts index 98bb9145a547..fe08ce1962d1 100644 --- a/packages/types/src/envelope.ts +++ b/packages/types/src/envelope.ts @@ -7,6 +7,7 @@ import type { Profile } from './profiling'; import type { ReplayEvent, ReplayRecordingData } from './replay'; import type { SdkInfo } from './sdkinfo'; import type { SerializedSession, Session, SessionAggregates } from './session'; +import type { Span } from './span'; import type { Transaction } from './transaction'; import type { UserFeedback } from './user'; @@ -41,7 +42,8 @@ export type EnvelopeItemType = | 'replay_event' | 'replay_recording' | 'check_in' - | 'statsd'; + | 'statsd' + | 'span'; export type BaseEnvelopeHeaders = { [key: string]: unknown; @@ -82,6 +84,7 @@ type ReplayRecordingItemHeaders = { type: 'replay_recording'; length: number }; type CheckInItemHeaders = { type: 'check_in' }; type StatsdItemHeaders = { type: 'statsd'; length: number }; type ProfileItemHeaders = { type: 'profile' }; +type SpanItemHeaders = { type: 'span' }; // TODO (v8): Replace `Event` with `SerializedEvent` export type EventItem = BaseEnvelopeItem; @@ -98,6 +101,7 @@ type ReplayRecordingItem = BaseEnvelopeItem; export type FeedbackItem = BaseEnvelopeItem; export type ProfileItem = BaseEnvelopeItem; +export type SpanItem = BaseEnvelopeItem; export type EventEnvelopeHeaders = { event_id: string; sent_at: string; trace?: DynamicSamplingContext }; type SessionEnvelopeHeaders = { sent_at: string }; @@ -105,6 +109,7 @@ type CheckInEnvelopeHeaders = { trace?: DynamicSamplingContext }; type ClientReportEnvelopeHeaders = BaseEnvelopeHeaders; type ReplayEnvelopeHeaders = BaseEnvelopeHeaders; type StatsdEnvelopeHeaders = BaseEnvelopeHeaders; +type SpanEnvelopeHeaders = BaseEnvelopeHeaders; export type EventEnvelope = BaseEnvelope< EventEnvelopeHeaders, @@ -115,6 +120,7 @@ export type ClientReportEnvelope = BaseEnvelope; export type StatsdEnvelope = BaseEnvelope; +export type SpanEnvelope = BaseEnvelope; export type Envelope = | EventEnvelope @@ -122,5 +128,6 @@ export type Envelope = | ClientReportEnvelope | ReplayEnvelope | CheckInEnvelope - | StatsdEnvelope; + | StatsdEnvelope + | SpanEnvelope; export type EnvelopeItem = Envelope[1][number]; diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index d4fcd439ae4a..a167f45aa5eb 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -45,6 +45,8 @@ export type { StatsdItem, StatsdEnvelope, ProfileItem, + SpanEnvelope, + SpanItem, } from './envelope'; export type { ExtendedError } from './error'; export type { Event, EventHint, EventType, ErrorEvent, TransactionEvent, SerializedEvent } from './event'; From b4b349cf1e19c14f9f09b54ae90280f9600571ca Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Sat, 17 Feb 2024 12:17:38 -0500 Subject: [PATCH 027/106] Datacategory map --- packages/utils/src/envelope.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/utils/src/envelope.ts b/packages/utils/src/envelope.ts index c716ab282dfe..1aa87938ed8c 100644 --- a/packages/utils/src/envelope.ts +++ b/packages/utils/src/envelope.ts @@ -209,6 +209,7 @@ const ITEM_TYPE_TO_DATA_CATEGORY_MAP: Record = { replay_recording: 'replay', check_in: 'monitor', feedback: 'feedback', + span: 'span', // TODO: This is a temporary workaround until we have a proper data category for metrics statsd: 'unknown', }; From 9ae7f95b3152d26ea2e4c7ceb7b471debdc95feb Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Sun, 18 Feb 2024 18:36:22 -0500 Subject: [PATCH 028/106] Creates interaction spans with inp when inp is detected --- .../src/browser/browserTracingIntegration.ts | 54 +++++++++++++++ .../src/browser/instrument.ts | 25 ++++++- .../src/browser/metrics/index.ts | 66 ++++++++++++++++++- .../src/browser/web-vitals/types.ts | 2 + 4 files changed, 143 insertions(+), 4 deletions(-) diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index 787ec09af256..1bd706c49106 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -29,8 +29,10 @@ import { import { DEBUG_BUILD } from '../common/debug-build'; import { registerBackgroundTabDetection } from './backgroundtab'; +import { addPerformanceInstrumentationHandler } from './instrument'; import { addPerformanceEntries, + startTrackingINP, startTrackingInteractions, startTrackingLongTasks, startTrackingWebVitals, @@ -38,6 +40,7 @@ import { import type { RequestInstrumentationOptions } from './request'; import { defaultRequestInstrumentationOptions, instrumentOutgoingRequests } from './request'; import { WINDOW } from './types'; +import type { InteractionRouteNameMapping } from './web-vitals/types'; export const BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing'; @@ -127,6 +130,7 @@ export interface BrowserTracingOptions extends RequestInstrumentationOptions { */ _experiments: Partial<{ enableInteractions: boolean; + enableInp: boolean; }>; /** @@ -181,6 +185,12 @@ export const browserTracingIntegration = ((_options: Partial { + for (const entry of entries) { + if (isPerformanceEventTiming(entry)) { + const duration = entry.duration; + const keys = Object.keys(interactionIdtoRouteNameMapping); + const minInteractionId = + keys.length > 0 + ? keys.reduce((a, b) => { + return interactionIdtoRouteNameMapping[a].duration < interactionIdtoRouteNameMapping[b].duration + ? a + : b; + }) + : undefined; + if (minInteractionId === undefined || duration > interactionIdtoRouteNameMapping[minInteractionId].duration) { + const interactionId = entry.interactionId; + const routeName = latestRoute.name; + if (interactionId && routeName) { + if (minInteractionId && Object.keys(interactionIdtoRouteNameMapping).length >= MAX_INTERACTIONS) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete interactionIdtoRouteNameMapping[minInteractionId]; + } + interactionIdtoRouteNameMapping[interactionId] = { routeName, duration }; + } + } + } + } + }); +} + function getSource(context: TransactionContext): TransactionSource | undefined { const sourceFromAttributes = context.attributes && context.attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]; // eslint-disable-next-line deprecation/deprecation diff --git a/packages/tracing-internal/src/browser/instrument.ts b/packages/tracing-internal/src/browser/instrument.ts index 2a4e7acaf3b1..085db9ca3a5d 100644 --- a/packages/tracing-internal/src/browser/instrument.ts +++ b/packages/tracing-internal/src/browser/instrument.ts @@ -3,12 +3,13 @@ import { getFunctionName, logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../common/debug-build'; import { onCLS } from './web-vitals/getCLS'; import { onFID } from './web-vitals/getFID'; +import { onINP } from './web-vitals/getINP'; import { onLCP } from './web-vitals/getLCP'; import { observe } from './web-vitals/lib/observe'; type InstrumentHandlerTypePerformanceObserver = 'longtask' | 'event' | 'navigation' | 'paint' | 'resource'; -type InstrumentHandlerTypeMetric = 'cls' | 'lcp' | 'fid'; +type InstrumentHandlerTypeMetric = 'cls' | 'lcp' | 'fid' | 'inp'; // We provide this here manually instead of relying on a global, as this is not available in non-browser environements // And we do not want to expose such types @@ -86,6 +87,7 @@ const instrumented: { [key in InstrumentHandlerType]?: boolean } = {}; let _previousCls: Metric | undefined; let _previousFid: Metric | undefined; let _previousLcp: Metric | undefined; +let _previousInp: Metric | undefined; /** * Add a callback that will be triggered when a CLS metric is available. @@ -123,9 +125,19 @@ export function addFidInstrumentationHandler(callback: (data: { metric: Metric } return addMetricObserver('fid', callback, instrumentFid, _previousFid); } +/** + * Add a callback that will be triggered when a INP metric is available. + * Returns a cleanup callback which can be called to remove the instrumentation handler. + */ +export function addInpInstrumentationHandler( + callback: (data: { metric: Omit & { entries: PerformanceEventTiming[] } }) => void, +): CleanupHandlerCallback { + return addMetricObserver('inp', callback, instrumentInp, _previousInp); +} + export function addPerformanceInstrumentationHandler( type: 'event', - callback: (data: { entries: (PerformanceEntry & { target?: unknown | null })[] }) => void, + callback: (data: { entries: ((PerformanceEntry & { target?: unknown | null }) | PerformanceEventTiming)[] }) => void, ): CleanupHandlerCallback; export function addPerformanceInstrumentationHandler( type: InstrumentHandlerTypePerformanceObserver, @@ -199,6 +211,15 @@ function instrumentLcp(): StopListening { }); } +function instrumentInp(): void { + return onINP(metric => { + triggerHandlers('inp', { + metric, + }); + _previousInp = metric; + }); +} + function addMetricObserver( type: InstrumentHandlerTypeMetric, callback: InstrumentHandlerCallback, diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index 4c9c25111e11..31106260dac1 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -1,6 +1,6 @@ /* eslint-disable max-lines */ import type { IdleTransaction, Transaction } from '@sentry/core'; -import { getActiveTransaction, setMeasurement } from '@sentry/core'; +import { SEMANTIC_ATTRIBUTE_MEASUREMENTS, Span, getActiveTransaction, getClient, setMeasurement } from '@sentry/core'; import type { Measurements, SpanContext } from '@sentry/types'; import { browserPerformanceTimeOrigin, getComponentName, htmlTreeAsString, logger, parseUrl } from '@sentry/utils'; @@ -9,14 +9,21 @@ import { DEBUG_BUILD } from '../../common/debug-build'; import { addClsInstrumentationHandler, addFidInstrumentationHandler, + addInpInstrumentationHandler, addLcpInstrumentationHandler, addPerformanceInstrumentationHandler, } from '../instrument'; import { WINDOW } from '../types'; import { getVisibilityWatcher } from '../web-vitals/lib/getVisibilityWatcher'; -import type { NavigatorDeviceMemory, NavigatorNetworkInformation } from '../web-vitals/types'; +import type { + InteractionRouteNameMapping, + NavigatorDeviceMemory, + NavigatorNetworkInformation, +} from '../web-vitals/types'; import { _startChild, isMeasurementValue } from './utils'; +import { createSpanEnvelope } from '@sentry/core'; + const MAX_INT_AS_BYTES = 2147483647; /** @@ -127,6 +134,22 @@ export function startTrackingInteractions(): void { }); } +/** + * Start tracking INP webvital events. + */ +export function startTrackingINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping): () => void { + const performance = getBrowserPerformanceAPI(); + if (performance && browserPerformanceTimeOrigin) { + const inpCallback = _trackINP(interactionIdtoRouteNameMapping); + + return (): void => { + inpCallback(); + }; + } + + return () => undefined; +} + /** Starts tracking the Cumulative Layout Shift on the current page. */ function _trackCLS(): () => void { return addClsInstrumentationHandler(({ metric }) => { @@ -171,6 +194,45 @@ function _trackFID(): () => void { }); } +/** Starts tracking the Interaction to Next Paint on the current page. */ +function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping): () => void { + return addInpInstrumentationHandler(({ metric }) => { + const entry = metric.entries.find(e => e.name === 'click'); + const client = getClient(); + if (!entry || !client) { + return; + } + const { release, environment } = client.getOptions(); + /** Build the INP span, create an envelope from the span, and then send the envelope */ + const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime); + const duration = msToSec(metric.value); + const routeName = + entry.interactionId !== undefined ? interactionIdtoRouteNameMapping[entry.interactionId].routeName : undefined; + const span = new Span({ + startTimestamp: startTime, + endTimestamp: startTime + duration, + op: 'ui.interaction.click', + name: entry.target?.nodeName, + attributes: { + [SEMANTIC_ATTRIBUTE_MEASUREMENTS]: { + inp: { value: metric.value, unit: 'millisecond' }, + }, + release, + environment, + transaction: routeName, + }, + exclusiveTime: metric.value, + }); + const envelope = span ? createSpanEnvelope(span) : undefined; + const transport = client && client.getTransport(); + if (transport && envelope) { + transport.send(envelope).then(null, reason => { + DEBUG_BUILD && logger.error('Error while sending interaction:', reason); + }); + } + }); +} + /** Add performance related spans to a transaction */ export function addPerformanceEntries(transaction: Transaction): void { const performance = getBrowserPerformanceAPI(); diff --git a/packages/tracing-internal/src/browser/web-vitals/types.ts b/packages/tracing-internal/src/browser/web-vitals/types.ts index b4096b2678f6..fd4a31311074 100644 --- a/packages/tracing-internal/src/browser/web-vitals/types.ts +++ b/packages/tracing-internal/src/browser/web-vitals/types.ts @@ -162,3 +162,5 @@ declare global { element?: Element; } } + +export type InteractionRouteNameMapping = { [key: string]: { routeName: string; duration: number } }; From 84a6021ab4f31be2df93e2b14603345d8245d450 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Mon, 19 Feb 2024 11:33:53 -0500 Subject: [PATCH 029/106] Adds sampling rate to inp spans --- .../src/browser/browserTracingIntegration.ts | 30 +++++-- .../src/browser/metrics/index.ts | 78 +++++++++++++++---- .../src/browser/web-vitals/types.ts | 5 +- 3 files changed, 91 insertions(+), 22 deletions(-) diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index 1bd706c49106..44870db9e7c5 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -198,9 +198,12 @@ export const browserTracingIntegration = ((_options: Partial { @@ -497,7 +503,7 @@ function registerInteractionListener( op, trimEnd: true, data: { - [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: latestRoute.source || 'url', + [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: latestRoute.context ? getSource(latestRoute.context) : undefined || 'url', }, }; @@ -527,7 +533,10 @@ const MAX_INTERACTIONS = 10; /** Creates a listener on interaction entries, and maps interactionIds to the origin path of the interaction */ function registerInpInteractionListener( interactionIdtoRouteNameMapping: InteractionRouteNameMapping, - latestRoute: { name: string | undefined; source: TransactionSource | undefined }, + latestRoute: { + name: string | undefined; + context: TransactionContext | undefined; + }, ): void { addPerformanceInstrumentationHandler('event', ({ entries }) => { for (const entry of entries) { @@ -545,12 +554,17 @@ function registerInpInteractionListener( if (minInteractionId === undefined || duration > interactionIdtoRouteNameMapping[minInteractionId].duration) { const interactionId = entry.interactionId; const routeName = latestRoute.name; - if (interactionId && routeName) { + const parentContext = latestRoute.context; + if (interactionId && routeName && parentContext) { if (minInteractionId && Object.keys(interactionIdtoRouteNameMapping).length >= MAX_INTERACTIONS) { // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete interactionIdtoRouteNameMapping[minInteractionId]; } - interactionIdtoRouteNameMapping[interactionId] = { routeName, duration }; + interactionIdtoRouteNameMapping[interactionId] = { + routeName, + duration, + parentContext, + }; } } } diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index 31106260dac1..df5f757e4ce7 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -1,7 +1,15 @@ /* eslint-disable max-lines */ import type { IdleTransaction, Transaction } from '@sentry/core'; -import { SEMANTIC_ATTRIBUTE_MEASUREMENTS, Span, getActiveTransaction, getClient, setMeasurement } from '@sentry/core'; -import type { Measurements, SpanContext } from '@sentry/types'; +import { + SEMANTIC_ATTRIBUTE_MEASUREMENTS, + Span, + getActiveTransaction, + getClient, + hasTracingEnabled, + isValidSampleRate, + setMeasurement, +} from '@sentry/core'; +import type { ClientOptions, Measurements, SpanContext, TransactionContext } from '@sentry/types'; import { browserPerformanceTimeOrigin, getComponentName, htmlTreeAsString, logger, parseUrl } from '@sentry/utils'; import { spanToJSON } from '@sentry/core'; @@ -202,12 +210,14 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) if (!entry || !client) { return; } - const { release, environment } = client.getOptions(); + const options = client.getOptions(); /** Build the INP span, create an envelope from the span, and then send the envelope */ const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime); const duration = msToSec(metric.value); - const routeName = - entry.interactionId !== undefined ? interactionIdtoRouteNameMapping[entry.interactionId].routeName : undefined; + const { routeName, parentContext } = + entry.interactionId !== undefined + ? interactionIdtoRouteNameMapping[entry.interactionId] + : { routeName: undefined, parentContext: undefined }; const span = new Span({ startTimestamp: startTime, endTimestamp: startTime + duration, @@ -217,18 +227,28 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) [SEMANTIC_ATTRIBUTE_MEASUREMENTS]: { inp: { value: metric.value, unit: 'millisecond' }, }, - release, - environment, + release: options.release, + environment: options.environment, transaction: routeName, }, exclusiveTime: metric.value, }); - const envelope = span ? createSpanEnvelope(span) : undefined; - const transport = client && client.getTransport(); - if (transport && envelope) { - transport.send(envelope).then(null, reason => { - DEBUG_BUILD && logger.error('Error while sending interaction:', reason); - }); + + /** Check to see if the span should be sampled */ + const sampleRate = getSampleRate(parentContext, options); + if (!sampleRate) { + return; + } + + if (Math.random() < (sampleRate as number | boolean)) { + const envelope = span ? createSpanEnvelope(span) : undefined; + const transport = client && client.getTransport(); + if (transport && envelope) { + transport.send(envelope).then(null, reason => { + DEBUG_BUILD && logger.error('Error while sending interaction:', reason); + }); + } + return; } }); } @@ -631,3 +651,35 @@ export function _addTtfbToMeasurements( } } } + +/** Taken from @sentry/core sampling.ts */ +function getSampleRate(transactionContext: TransactionContext | undefined, options: ClientOptions): number | boolean { + if (!hasTracingEnabled(options)) { + return false; + } + let sampleRate; + if (transactionContext !== undefined && typeof options.tracesSampler === 'function') { + sampleRate = options.tracesSampler({ + transactionContext, + name: transactionContext.name, + parentSampled: transactionContext.parentSampled, + attributes: { + // eslint-disable-next-line deprecation/deprecation + ...transactionContext.data, + ...transactionContext.attributes, + }, + location: WINDOW.location, + }); + } else if (transactionContext?.sampled !== undefined) { + sampleRate = transactionContext.sampled; + } else if (typeof options.tracesSampleRate !== 'undefined') { + sampleRate = options.tracesSampleRate; + } else { + sampleRate = 1; + } + if (!isValidSampleRate(sampleRate)) { + DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.'); + return false; + } + return sampleRate; +} diff --git a/packages/tracing-internal/src/browser/web-vitals/types.ts b/packages/tracing-internal/src/browser/web-vitals/types.ts index fd4a31311074..1f7d344401f6 100644 --- a/packages/tracing-internal/src/browser/web-vitals/types.ts +++ b/packages/tracing-internal/src/browser/web-vitals/types.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import type { TransactionContext } from '@sentry/types'; import type { FirstInputPolyfillCallback } from './types/polyfills'; export * from './types/base'; @@ -163,4 +164,6 @@ declare global { } } -export type InteractionRouteNameMapping = { [key: string]: { routeName: string; duration: number } }; +export type InteractionRouteNameMapping = { + [key: string]: { routeName: string; duration: number; parentContext: TransactionContext }; +}; From 6bd6ff8845e1e8afc5af0351e3353ce779e422a0 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Mon, 19 Feb 2024 11:34:26 -0500 Subject: [PATCH 030/106] export isValidSampleRate --- packages/core/src/tracing/index.ts | 1 + packages/core/src/tracing/sampling.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/core/src/tracing/index.ts b/packages/core/src/tracing/index.ts index d1e1c7f65b44..998a73147822 100644 --- a/packages/core/src/tracing/index.ts +++ b/packages/core/src/tracing/index.ts @@ -27,3 +27,4 @@ export { } from './trace'; export { getDynamicSamplingContextFromClient, getDynamicSamplingContextFromSpan } from './dynamicSamplingContext'; export { setMeasurement } from './measurement'; +export { isValidSampleRate } from './sampling'; diff --git a/packages/core/src/tracing/sampling.ts b/packages/core/src/tracing/sampling.ts index 427a7076d6d0..4b1bbef47d9d 100644 --- a/packages/core/src/tracing/sampling.ts +++ b/packages/core/src/tracing/sampling.ts @@ -103,7 +103,7 @@ export function sampleTransaction( /** * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1). */ -function isValidSampleRate(rate: unknown): boolean { +export function isValidSampleRate(rate: unknown): boolean { // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck // eslint-disable-next-line @typescript-eslint/no-explicit-any if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) { From 0cc946d18f306bdb825879b05c59d5c478b1500c Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 20 Feb 2024 10:16:20 +0100 Subject: [PATCH 031/106] fix: Export session API (#10712) --- .github/workflows/enforce-license-compliance.yml | 4 ++-- packages/browser/src/exports.ts | 3 +++ packages/bun/src/index.ts | 3 +++ packages/deno/src/index.ts | 3 +++ packages/node/src/index.ts | 3 +++ packages/serverless/src/index.ts | 3 +++ 6 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/enforce-license-compliance.yml b/.github/workflows/enforce-license-compliance.yml index 176758b840a3..b6fcd418e01e 100644 --- a/.github/workflows/enforce-license-compliance.yml +++ b/.github/workflows/enforce-license-compliance.yml @@ -2,9 +2,9 @@ name: Enforce License Compliance on: push: - branches: [master, develop, release/*] + branches: [master, develop, release/*, v7] pull_request: - branches: [master, develop] + branches: [master, develop, v7] jobs: enforce-license-compliance: diff --git a/packages/browser/src/exports.ts b/packages/browser/src/exports.ts index 1b959e05c397..84e032607a5d 100644 --- a/packages/browser/src/exports.ts +++ b/packages/browser/src/exports.ts @@ -74,6 +74,9 @@ export { functionToStringIntegration, inboundFiltersIntegration, parameterize, + startSession, + captureSession, + endSession, } from '@sentry/core'; export { diff --git a/packages/bun/src/index.ts b/packages/bun/src/index.ts index 363e25d93371..3fcbde19fbbf 100644 --- a/packages/bun/src/index.ts +++ b/packages/bun/src/index.ts @@ -88,6 +88,9 @@ export { linkedErrorsIntegration, requestDataIntegration, parameterize, + startSession, + captureSession, + endSession, } from '@sentry/core'; export type { SpanStatusType } from '@sentry/core'; export { diff --git a/packages/deno/src/index.ts b/packages/deno/src/index.ts index 9a25923b2c42..64082a4f24ca 100644 --- a/packages/deno/src/index.ts +++ b/packages/deno/src/index.ts @@ -89,6 +89,9 @@ export { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, + startSession, + captureSession, + endSession, } from '@sentry/core'; export type { SpanStatusType } from '@sentry/core'; diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 0efd5b3923a2..9b2a21d01dbc 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -89,6 +89,9 @@ export { inboundFiltersIntegration, linkedErrorsIntegration, requestDataIntegration, + startSession, + captureSession, + endSession, } from '@sentry/core'; export { diff --git a/packages/serverless/src/index.ts b/packages/serverless/src/index.ts index 34917a4b28e4..e77e18c72d15 100644 --- a/packages/serverless/src/index.ts +++ b/packages/serverless/src/index.ts @@ -111,4 +111,7 @@ export { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, + startSession, + captureSession, + endSession, } from '@sentry/node'; From b327157bd81d041a59005569dc7a03774fdfcc49 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Tue, 20 Feb 2024 11:00:34 +0100 Subject: [PATCH 032/106] fix(core): Fix scope capturing via `captureContext` function (#10735) (#10737) Backport to v7. In https://github.com/getsentry/sentry-javascript/pull/9801, we introduced a regression that if you pass a function as `captureContext` to capture methods, the returned scope is not used. The cause for this was a confusion on my end, based on the slightly weird way this works in `scope.update(fn)` - we don't actually merge this or update the scope based on the return value of `fn`, but `fn` receives the `scope` as argument, does nothing with the return type of `fn` and just returns it - which we didn't use, because I assumed that `scope.update` would actually return the scope (also, the return type of it is `this` which is not correct there). This PR changes this so that the returned scope of `fn` is actually merged with the scope, same as if you'd pass a `scope` directly - so this is fundamentally the same now: ```js const otherScope = new Scope(); scope.update(otherScope); scope.update(() => otherScope); ``` (which before would have had vastly different outcomes!) I added a bunch of tests to verify how this works/should work. Fixes https://github.com/getsentry/sentry-javascript/issues/10686 --- packages/core/src/scope.ts | 66 ++-- packages/core/test/lib/prepareEvent.test.ts | 126 +++++++ packages/core/test/lib/scope.test.ts | 394 +++++++++++++++++++- 3 files changed, 551 insertions(+), 35 deletions(-) diff --git a/packages/core/src/scope.ts b/packages/core/src/scope.ts index 01546a84be25..3e174899f592 100644 --- a/packages/core/src/scope.ts +++ b/packages/core/src/scope.ts @@ -378,50 +378,48 @@ export class Scope implements ScopeInterface { return this; } - if (typeof captureContext === 'function') { - const updatedScope = (captureContext as (scope: T) => T)(this); - return updatedScope instanceof Scope ? updatedScope : this; - } + const scopeToMerge = typeof captureContext === 'function' ? captureContext(this) : captureContext; + + if (scopeToMerge instanceof Scope) { + const scopeData = scopeToMerge.getScopeData(); - if (captureContext instanceof Scope) { - this._tags = { ...this._tags, ...captureContext._tags }; - this._extra = { ...this._extra, ...captureContext._extra }; - this._contexts = { ...this._contexts, ...captureContext._contexts }; - if (captureContext._user && Object.keys(captureContext._user).length) { - this._user = captureContext._user; + this._tags = { ...this._tags, ...scopeData.tags }; + this._extra = { ...this._extra, ...scopeData.extra }; + this._contexts = { ...this._contexts, ...scopeData.contexts }; + if (scopeData.user && Object.keys(scopeData.user).length) { + this._user = scopeData.user; } - if (captureContext._level) { - this._level = captureContext._level; + if (scopeData.level) { + this._level = scopeData.level; } - if (captureContext._fingerprint) { - this._fingerprint = captureContext._fingerprint; + if (scopeData.fingerprint.length) { + this._fingerprint = scopeData.fingerprint; } - if (captureContext._requestSession) { - this._requestSession = captureContext._requestSession; + if (scopeToMerge.getRequestSession()) { + this._requestSession = scopeToMerge.getRequestSession(); } - if (captureContext._propagationContext) { - this._propagationContext = captureContext._propagationContext; + if (scopeData.propagationContext) { + this._propagationContext = scopeData.propagationContext; } - } else if (isPlainObject(captureContext)) { - // eslint-disable-next-line no-param-reassign - captureContext = captureContext as ScopeContext; - this._tags = { ...this._tags, ...captureContext.tags }; - this._extra = { ...this._extra, ...captureContext.extra }; - this._contexts = { ...this._contexts, ...captureContext.contexts }; - if (captureContext.user) { - this._user = captureContext.user; + } else if (isPlainObject(scopeToMerge)) { + const scopeContext = captureContext as ScopeContext; + this._tags = { ...this._tags, ...scopeContext.tags }; + this._extra = { ...this._extra, ...scopeContext.extra }; + this._contexts = { ...this._contexts, ...scopeContext.contexts }; + if (scopeContext.user) { + this._user = scopeContext.user; } - if (captureContext.level) { - this._level = captureContext.level; + if (scopeContext.level) { + this._level = scopeContext.level; } - if (captureContext.fingerprint) { - this._fingerprint = captureContext.fingerprint; + if (scopeContext.fingerprint) { + this._fingerprint = scopeContext.fingerprint; } - if (captureContext.requestSession) { - this._requestSession = captureContext.requestSession; + if (scopeContext.requestSession) { + this._requestSession = scopeContext.requestSession; } - if (captureContext.propagationContext) { - this._propagationContext = captureContext.propagationContext; + if (scopeContext.propagationContext) { + this._propagationContext = scopeContext.propagationContext; } } diff --git a/packages/core/test/lib/prepareEvent.test.ts b/packages/core/test/lib/prepareEvent.test.ts index cb3c616b7390..3829e87780c0 100644 --- a/packages/core/test/lib/prepareEvent.test.ts +++ b/packages/core/test/lib/prepareEvent.test.ts @@ -379,4 +379,130 @@ describe('prepareEvent', () => { }, }); }); + + describe('captureContext', () => { + it('works with scope & captureContext=POJO', async () => { + const scope = new Scope(); + scope.setTags({ + initial: 'aa', + foo: 'foo', + }); + + const event = { message: 'foo' }; + + const options = {} as ClientOptions; + const client = { + getEventProcessors() { + return [] as EventProcessor[]; + }, + } as Client; + + const processedEvent = await prepareEvent( + options, + event, + { + captureContext: { tags: { foo: 'bar' } }, + integrations: [], + }, + scope, + client, + ); + + expect(processedEvent).toEqual({ + timestamp: expect.any(Number), + event_id: expect.any(String), + environment: 'production', + message: 'foo', + sdkProcessingMetadata: {}, + tags: { initial: 'aa', foo: 'bar' }, + }); + }); + + it('works with scope & captureContext=scope instance', async () => { + const scope = new Scope(); + scope.setTags({ + initial: 'aa', + foo: 'foo', + }); + + const event = { message: 'foo' }; + + const options = {} as ClientOptions; + const client = { + getEventProcessors() { + return [] as EventProcessor[]; + }, + } as Client; + + const captureContext = new Scope(); + captureContext.setTags({ foo: 'bar' }); + + const processedEvent = await prepareEvent( + options, + event, + { + captureContext, + integrations: [], + }, + scope, + client, + ); + + expect(processedEvent).toEqual({ + timestamp: expect.any(Number), + event_id: expect.any(String), + environment: 'production', + message: 'foo', + sdkProcessingMetadata: {}, + tags: { initial: 'aa', foo: 'bar' }, + }); + }); + + it('works with scope & captureContext=function', async () => { + const scope = new Scope(); + scope.setTags({ + initial: 'aa', + foo: 'foo', + }); + + const event = { message: 'foo' }; + + const options = {} as ClientOptions; + const client = { + getEventProcessors() { + return [] as EventProcessor[]; + }, + } as Client; + + const captureContextScope = new Scope(); + captureContextScope.setTags({ foo: 'bar' }); + + const captureContext = jest.fn(passedScope => { + expect(passedScope).toEqual(scope); + return captureContextScope; + }); + + const processedEvent = await prepareEvent( + options, + event, + { + captureContext, + integrations: [], + }, + scope, + client, + ); + + expect(captureContext).toHaveBeenCalledTimes(1); + + expect(processedEvent).toEqual({ + timestamp: expect.any(Number), + event_id: expect.any(String), + environment: 'production', + message: 'foo', + sdkProcessingMetadata: {}, + tags: { initial: 'aa', foo: 'bar' }, + }); + }); + }); }); diff --git a/packages/core/test/lib/scope.test.ts b/packages/core/test/lib/scope.test.ts index 88e275cc84dd..79b5e4b17f0b 100644 --- a/packages/core/test/lib/scope.test.ts +++ b/packages/core/test/lib/scope.test.ts @@ -1,4 +1,4 @@ -import type { Attachment, Breadcrumb, Client, Event } from '@sentry/types'; +import type { Attachment, Breadcrumb, Client, Event, RequestSessionStatus } from '@sentry/types'; import { Hub, addTracingExtensions, @@ -103,6 +103,398 @@ describe('Scope', () => { }); }); + describe('init', () => { + test('it creates a propagation context', () => { + const scope = new Scope(); + + expect(scope.getScopeData().propagationContext).toEqual({ + traceId: expect.any(String), + spanId: expect.any(String), + sampled: undefined, + dsc: undefined, + parentSpanId: undefined, + }); + }); + }); + + describe('attributes modification', () => { + test('setFingerprint', () => { + const scope = new Scope(); + scope.setFingerprint(['abcd']); + expect(scope['_fingerprint']).toEqual(['abcd']); + }); + + test('setExtra', () => { + const scope = new Scope(); + scope.setExtra('a', 1); + expect(scope['_extra']).toEqual({ a: 1 }); + }); + + test('setExtras', () => { + const scope = new Scope(); + scope.setExtras({ a: 1 }); + expect(scope['_extra']).toEqual({ a: 1 }); + }); + + test('setExtras with undefined overrides the value', () => { + const scope = new Scope(); + scope.setExtra('a', 1); + scope.setExtras({ a: undefined }); + expect(scope['_extra']).toEqual({ a: undefined }); + }); + + test('setTag', () => { + const scope = new Scope(); + scope.setTag('a', 'b'); + expect(scope['_tags']).toEqual({ a: 'b' }); + }); + + test('setTags', () => { + const scope = new Scope(); + scope.setTags({ a: 'b' }); + expect(scope['_tags']).toEqual({ a: 'b' }); + }); + + test('setUser', () => { + const scope = new Scope(); + scope.setUser({ id: '1' }); + expect(scope['_user']).toEqual({ id: '1' }); + }); + + test('setUser with null unsets the user', () => { + const scope = new Scope(); + scope.setUser({ id: '1' }); + scope.setUser(null); + expect(scope['_user']).toEqual({}); + }); + + test('addBreadcrumb', () => { + const scope = new Scope(); + scope.addBreadcrumb({ message: 'test' }); + expect(scope['_breadcrumbs'][0]).toHaveProperty('message', 'test'); + }); + + test('addBreadcrumb can be limited to hold up to N breadcrumbs', () => { + const scope = new Scope(); + for (let i = 0; i < 10; i++) { + scope.addBreadcrumb({ message: 'test' }, 5); + } + expect(scope['_breadcrumbs']).toHaveLength(5); + }); + + test('addBreadcrumb can go over DEFAULT_MAX_BREADCRUMBS value', () => { + const scope = new Scope(); + for (let i = 0; i < 120; i++) { + scope.addBreadcrumb({ message: 'test' }, 111); + } + expect(scope['_breadcrumbs']).toHaveLength(111); + }); + + test('setLevel', () => { + const scope = new Scope(); + scope.setLevel('fatal'); + expect(scope['_level']).toEqual('fatal'); + }); + + test('setContext', () => { + const scope = new Scope(); + scope.setContext('os', { id: '1' }); + expect(scope['_contexts'].os).toEqual({ id: '1' }); + }); + + test('setContext with null unsets it', () => { + const scope = new Scope(); + scope.setContext('os', { id: '1' }); + scope.setContext('os', null); + expect(scope['_user']).toEqual({}); + }); + + test('setSpan', () => { + const scope = new Scope(); + const span = { fake: 'span' } as any; + // eslint-disable-next-line deprecation/deprecation + scope.setSpan(span); + expect(scope['_span']).toEqual(span); + }); + + test('setSpan with no value unsets it', () => { + const scope = new Scope(); + // eslint-disable-next-line deprecation/deprecation + scope.setSpan({ fake: 'span' } as any); + // eslint-disable-next-line deprecation/deprecation + scope.setSpan(); + expect(scope['_span']).toEqual(undefined); + }); + + test('setProcessingMetadata', () => { + const scope = new Scope(); + scope.setSDKProcessingMetadata({ dogs: 'are great!' }); + expect(scope['_sdkProcessingMetadata'].dogs).toEqual('are great!'); + }); + + test('set and get propagation context', () => { + const scope = new Scope(); + const oldPropagationContext = scope.getPropagationContext(); + scope.setPropagationContext({ + traceId: '86f39e84263a4de99c326acab3bfe3bd', + spanId: '6e0c63257de34c92', + sampled: true, + }); + expect(scope.getPropagationContext()).not.toEqual(oldPropagationContext); + expect(scope.getPropagationContext()).toEqual({ + traceId: '86f39e84263a4de99c326acab3bfe3bd', + spanId: '6e0c63257de34c92', + sampled: true, + }); + }); + + test('chaining', () => { + const scope = new Scope(); + scope.setLevel('fatal').setUser({ id: '1' }); + expect(scope['_level']).toEqual('fatal'); + expect(scope['_user']).toEqual({ id: '1' }); + }); + }); + + describe('clone', () => { + test('basic inheritance', () => { + const parentScope = new Scope(); + parentScope.setExtra('a', 1); + const scope = parentScope.clone(); + expect(parentScope['_extra']).toEqual(scope['_extra']); + }); + + test('_requestSession clone', () => { + const parentScope = new Scope(); + parentScope.setRequestSession({ status: 'errored' }); + const scope = parentScope.clone(); + expect(parentScope.getRequestSession()).toEqual(scope.getRequestSession()); + }); + + test('parent changed inheritance', () => { + const parentScope = new Scope(); + const scope = parentScope.clone(); + parentScope.setExtra('a', 2); + expect(scope['_extra']).toEqual({}); + expect(parentScope['_extra']).toEqual({ a: 2 }); + }); + + test('child override inheritance', () => { + const parentScope = new Scope(); + parentScope.setExtra('a', 1); + + const scope = parentScope.clone(); + scope.setExtra('a', 2); + expect(parentScope['_extra']).toEqual({ a: 1 }); + expect(scope['_extra']).toEqual({ a: 2 }); + }); + + test('child override should set the value of parent _requestSession', () => { + // Test that ensures if the status value of `status` of `_requestSession` is changed in a child scope + // that it should also change in parent scope because we are copying the reference to the object + const parentScope = new Scope(); + parentScope.setRequestSession({ status: 'errored' }); + + const scope = parentScope.clone(); + const requestSession = scope.getRequestSession(); + if (requestSession) { + requestSession.status = 'ok'; + } + + expect(parentScope.getRequestSession()).toEqual({ status: 'ok' }); + expect(scope.getRequestSession()).toEqual({ status: 'ok' }); + }); + + test('should clone propagation context', () => { + const parentScope = new Scope(); + const scope = parentScope.clone(); + + expect(scope.getScopeData().propagationContext).toEqual(parentScope.getScopeData().propagationContext); + }); + }); + + test('clear', () => { + const scope = new Scope(); + const oldPropagationContext = scope.getScopeData().propagationContext; + scope.setExtra('a', 2); + scope.setTag('a', 'b'); + scope.setUser({ id: '1' }); + scope.setFingerprint(['abcd']); + scope.addBreadcrumb({ message: 'test' }); + scope.setRequestSession({ status: 'ok' }); + expect(scope['_extra']).toEqual({ a: 2 }); + scope.clear(); + expect(scope['_extra']).toEqual({}); + expect(scope['_requestSession']).toEqual(undefined); + expect(scope['_propagationContext']).toEqual({ + traceId: expect.any(String), + spanId: expect.any(String), + sampled: undefined, + }); + expect(scope['_propagationContext']).not.toEqual(oldPropagationContext); + }); + + test('clearBreadcrumbs', () => { + const scope = new Scope(); + scope.addBreadcrumb({ message: 'test' }); + expect(scope['_breadcrumbs']).toHaveLength(1); + scope.clearBreadcrumbs(); + expect(scope['_breadcrumbs']).toHaveLength(0); + }); + + describe('update', () => { + let scope: Scope; + + beforeEach(() => { + scope = new Scope(); + scope.setTags({ foo: '1', bar: '2' }); + scope.setExtras({ foo: '1', bar: '2' }); + scope.setContext('foo', { id: '1' }); + scope.setContext('bar', { id: '2' }); + scope.setUser({ id: '1337' }); + scope.setLevel('info'); + scope.setFingerprint(['foo']); + scope.setRequestSession({ status: 'ok' }); + }); + + test('given no data, returns the original scope', () => { + const updatedScope = scope.update(); + expect(updatedScope).toEqual(scope); + }); + + test('given neither function, Scope or plain object, returns original scope', () => { + // @ts-expect-error we want to be able to update scope with string + const updatedScope = scope.update('wat'); + expect(updatedScope).toEqual(scope); + }); + + test('given callback function, pass it the scope and returns original or modified scope', () => { + const cb = jest + .fn() + .mockImplementationOnce(v => v) + .mockImplementationOnce(v => { + v.setTag('foo', 'bar'); + return v; + }); + + let updatedScope = scope.update(cb); + expect(cb).toHaveBeenNthCalledWith(1, scope); + expect(updatedScope).toEqual(scope); + + updatedScope = scope.update(cb); + expect(cb).toHaveBeenNthCalledWith(2, scope); + expect(updatedScope).toEqual(scope); + }); + + test('given callback function, when it doesnt return instanceof Scope, ignore it and return original scope', () => { + const cb = jest.fn().mockImplementationOnce(_v => 'wat'); + const updatedScope = scope.update(cb); + expect(cb).toHaveBeenCalledWith(scope); + expect(updatedScope).toEqual(scope); + }); + + test('given another instance of Scope, it should merge two together, with the passed scope having priority', () => { + const localScope = new Scope(); + localScope.setTags({ bar: '3', baz: '4' }); + localScope.setExtras({ bar: '3', baz: '4' }); + localScope.setContext('bar', { id: '3' }); + localScope.setContext('baz', { id: '4' }); + localScope.setUser({ id: '42' }); + localScope.setLevel('warning'); + localScope.setFingerprint(['bar']); + (localScope as any)._requestSession = { status: 'ok' }; + + const updatedScope = scope.update(localScope) as any; + + expect(updatedScope._tags).toEqual({ + bar: '3', + baz: '4', + foo: '1', + }); + expect(updatedScope._extra).toEqual({ + bar: '3', + baz: '4', + foo: '1', + }); + expect(updatedScope._contexts).toEqual({ + bar: { id: '3' }, + baz: { id: '4' }, + foo: { id: '1' }, + }); + expect(updatedScope._user).toEqual({ id: '42' }); + expect(updatedScope._level).toEqual('warning'); + expect(updatedScope._fingerprint).toEqual(['bar']); + expect(updatedScope._requestSession.status).toEqual('ok'); + // @ts-expect-error accessing private property for test + expect(updatedScope._propagationContext).toEqual(localScope._propagationContext); + }); + + test('given an empty instance of Scope, it should preserve all the original scope data', () => { + const updatedScope = scope.update(new Scope()) as any; + + expect(updatedScope._tags).toEqual({ + bar: '2', + foo: '1', + }); + expect(updatedScope._extra).toEqual({ + bar: '2', + foo: '1', + }); + expect(updatedScope._contexts).toEqual({ + bar: { id: '2' }, + foo: { id: '1' }, + }); + expect(updatedScope._user).toEqual({ id: '1337' }); + expect(updatedScope._level).toEqual('info'); + expect(updatedScope._fingerprint).toEqual(['foo']); + expect(updatedScope._requestSession.status).toEqual('ok'); + }); + + test('given a plain object, it should merge two together, with the passed object having priority', () => { + const localAttributes = { + contexts: { bar: { id: '3' }, baz: { id: '4' } }, + extra: { bar: '3', baz: '4' }, + fingerprint: ['bar'], + level: 'warning' as const, + tags: { bar: '3', baz: '4' }, + user: { id: '42' }, + requestSession: { status: 'errored' as RequestSessionStatus }, + propagationContext: { + traceId: '8949daf83f4a4a70bee4c1eb9ab242ed', + spanId: 'a024ad8fea82680e', + sampled: true, + }, + }; + + const updatedScope = scope.update(localAttributes) as any; + + expect(updatedScope._tags).toEqual({ + bar: '3', + baz: '4', + foo: '1', + }); + expect(updatedScope._extra).toEqual({ + bar: '3', + baz: '4', + foo: '1', + }); + expect(updatedScope._contexts).toEqual({ + bar: { id: '3' }, + baz: { id: '4' }, + foo: { id: '1' }, + }); + expect(updatedScope._user).toEqual({ id: '42' }); + expect(updatedScope._level).toEqual('warning'); + expect(updatedScope._fingerprint).toEqual(['bar']); + expect(updatedScope._requestSession).toEqual({ status: 'errored' }); + expect(updatedScope._propagationContext).toEqual({ + traceId: '8949daf83f4a4a70bee4c1eb9ab242ed', + spanId: 'a024ad8fea82680e', + sampled: true, + }); + }); + }); + describe('global scope', () => { beforeEach(() => { setGlobalScope(undefined); From 03a6773a8b5470e84d3ca5663851c526b4a79b17 Mon Sep 17 00:00:00 2001 From: Luca Forstner Date: Tue, 20 Feb 2024 11:34:03 +0100 Subject: [PATCH 033/106] meta(changelog): Update changelog for 7.102.0 (#10740) --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c131ad256ea..d308f26bec85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 7.102.0 + +- fix: Export session API (#10712) +- fix(core): Fix scope capturing via `captureContext` function (#10737) + ## 7.101.1 In version 7.101.0 the `@sentry/hub` package was missing due to a publishing issue. This release contains the package From 4c0fa37a39008b1256a2e51e977a2278bc58f7c7 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 20 Feb 2024 10:37:47 +0000 Subject: [PATCH 034/106] release: 7.102.0 --- .../browser-integration-tests/package.json | 6 +++--- dev-packages/e2e-tests/package.json | 2 +- .../node-integration-tests/package.json | 8 ++++---- dev-packages/overhead-metrics/package.json | 2 +- dev-packages/rollup-utils/package.json | 2 +- lerna.json | 2 +- packages/angular-ivy/package.json | 10 +++++----- packages/angular/package.json | 10 +++++----- packages/astro/package.json | 12 ++++++------ packages/browser/package.json | 18 +++++++++--------- packages/bun/package.json | 10 +++++----- packages/core/package.json | 6 +++--- packages/core/src/version.ts | 2 +- packages/deno/package.json | 10 +++++----- packages/ember/package.json | 10 +++++----- packages/eslint-config-sdk/package.json | 6 +++--- packages/eslint-plugin-sdk/package.json | 2 +- packages/feedback/package.json | 8 ++++---- packages/gatsby/package.json | 10 +++++----- packages/hub/package.json | 8 ++++---- packages/integration-shims/package.json | 6 +++--- packages/integrations/package.json | 10 +++++----- packages/nextjs/package.json | 16 ++++++++-------- packages/node-experimental/package.json | 12 ++++++------ packages/node/package.json | 10 +++++----- packages/opentelemetry-node/package.json | 10 +++++----- packages/opentelemetry/package.json | 8 ++++---- packages/profiling-node/package.json | 2 +- packages/react/package.json | 10 +++++----- packages/remix/package.json | 12 ++++++------ packages/replay-canvas/package.json | 10 +++++----- packages/replay-worker/package.json | 2 +- packages/replay/package.json | 12 ++++++------ packages/serverless/package.json | 10 +++++----- packages/svelte/package.json | 10 +++++----- packages/sveltekit/package.json | 16 ++++++++-------- packages/tracing-internal/package.json | 8 ++++---- packages/tracing/package.json | 14 +++++++------- packages/types/package.json | 2 +- packages/typescript/package.json | 2 +- packages/utils/package.json | 4 ++-- packages/vercel-edge/package.json | 10 +++++----- packages/vue/package.json | 10 +++++----- packages/wasm/package.json | 10 +++++----- 44 files changed, 180 insertions(+), 180 deletions(-) diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 5c9bd89f5bb5..7c34cd75e001 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/browser-integration-tests", - "version": "7.101.1", + "version": "7.102.0", "main": "index.js", "license": "MIT", "engines": { @@ -47,8 +47,8 @@ "@babel/preset-typescript": "^7.16.7", "@playwright/test": "^1.40.1", "@sentry-internal/rrweb": "2.11.0", - "@sentry/browser": "7.101.1", - "@sentry/tracing": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/tracing": "7.102.0", "axios": "1.6.0", "babel-loader": "^8.2.2", "html-webpack-plugin": "^5.5.0", diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index 382ce40f8eac..a820311928d6 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/e2e-tests", - "version": "7.101.1", + "version": "7.102.0", "license": "MIT", "private": true, "scripts": { diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index e79dfd086a78..daa64d44369d 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/node-integration-tests", - "version": "7.101.1", + "version": "7.102.0", "license": "MIT", "engines": { "node": ">=10" @@ -29,9 +29,9 @@ "dependencies": { "@hapi/hapi": "^20.3.0", "@prisma/client": "3.15.2", - "@sentry/node": "7.101.1", - "@sentry/tracing": "7.101.1", - "@sentry/types": "7.101.1", + "@sentry/node": "7.102.0", + "@sentry/tracing": "7.102.0", + "@sentry/types": "7.102.0", "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21", "@types/pg": "^8.6.5", diff --git a/dev-packages/overhead-metrics/package.json b/dev-packages/overhead-metrics/package.json index b39b56bab5a2..dd5d7223eec0 100644 --- a/dev-packages/overhead-metrics/package.json +++ b/dev-packages/overhead-metrics/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "7.101.1", + "version": "7.102.0", "name": "@sentry-internal/overhead-metrics", "main": "index.js", "author": "Sentry", diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index dac067a36238..b0e7e5f303c8 100644 --- a/dev-packages/rollup-utils/package.json +++ b/dev-packages/rollup-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/rollup-utils", - "version": "7.101.1", + "version": "7.102.0", "description": "Rollup utilities used at Sentry for the Sentry JavaScript SDK", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/rollup-utils", diff --git a/lerna.json b/lerna.json index b293c0a7e0b8..8928a30696bf 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "7.101.1", + "version": "7.102.0", "npmClient": "yarn" } diff --git a/packages/angular-ivy/package.json b/packages/angular-ivy/package.json index 76d5db113719..2c3338abf4b1 100644 --- a/packages/angular-ivy/package.json +++ b/packages/angular-ivy/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular-ivy", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Angular with full Ivy Support", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular-ivy", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/angular/package.json b/packages/angular/package.json index e851bd7b4105..e3b90a277a1b 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Angular", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/astro/package.json b/packages/astro/package.json index 1934e2c09ffa..84b3607e2a43 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/astro", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Astro", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/astro", @@ -49,11 +49,11 @@ "astro": ">=3.x || >=4.0.0-beta" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "@sentry/vite-plugin": "^2.8.0" }, "devDependencies": { diff --git a/packages/browser/package.json b/packages/browser/package.json index 4d93133cb79e..ba5ce249e486 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -29,16 +29,16 @@ "access": "public" }, "dependencies": { - "@sentry-internal/feedback": "7.101.1", - "@sentry-internal/replay-canvas": "7.101.1", - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/replay": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry-internal/feedback": "7.102.0", + "@sentry-internal/replay-canvas": "7.102.0", + "@sentry-internal/tracing": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/replay": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.101.1", + "@sentry-internal/integration-shims": "7.102.0", "@types/md5": "2.1.33", "btoa": "^1.2.1", "chai": "^4.1.2", diff --git a/packages/bun/package.json b/packages/bun/package.json index ec8947006d92..3a811266425d 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bun", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for bun", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/bun", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { "bun-types": "latest" diff --git a/packages/core/package.json b/packages/core/package.json index cd9dea8a043d..254b2744ba84 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "7.101.1", + "version": "7.102.0", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -29,8 +29,8 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 88c596d8a252..fdd361fa4ea6 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = '7.101.1'; +export const SDK_VERSION = '7.102.0'; diff --git a/packages/deno/package.json b/packages/deno/package.json index 731f89844e8b..20d134d038b2 100644 --- a/packages/deno/package.json +++ b/packages/deno/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/deno", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Deno", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/deno", @@ -17,10 +17,10 @@ "index.d.ts" ], "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.5", diff --git a/packages/ember/package.json b/packages/ember/package.json index be6679822e14..a1769d737789 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Ember.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/ember", @@ -32,10 +32,10 @@ }, "dependencies": { "@embroider/macros": "^1.9.0", - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "ember-auto-import": "^1.12.1 || ^2.4.3", "ember-cli-babel": "^7.26.11", "ember-cli-htmlbars": "^6.1.1", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index 11a4a4c33daa..4f54ec3ea6cf 100644 --- a/packages/eslint-config-sdk/package.json +++ b/packages/eslint-config-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config-sdk", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK eslint config", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-config-sdk", @@ -22,8 +22,8 @@ "access": "public" }, "dependencies": { - "@sentry-internal/eslint-plugin-sdk": "7.101.1", - "@sentry-internal/typescript": "7.101.1", + "@sentry-internal/eslint-plugin-sdk": "7.102.0", + "@sentry-internal/typescript": "7.102.0", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "eslint-config-prettier": "^6.11.0", diff --git a/packages/eslint-plugin-sdk/package.json b/packages/eslint-plugin-sdk/package.json index 197fdfea8c18..173d6d70c0ef 100644 --- a/packages/eslint-plugin-sdk/package.json +++ b/packages/eslint-plugin-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-plugin-sdk", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK eslint plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-plugin-sdk", diff --git a/packages/feedback/package.json b/packages/feedback/package.json index 28e23092ef0d..37c8dee0a99b 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/feedback", - "version": "7.101.1", + "version": "7.102.0", "description": "Sentry SDK integration for user feedback", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/feedback", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "scripts": { "build": "run-p build:transpile build:types build:bundle", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 2eb792cbeae8..47869ad9733e 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Gatsby.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/gatsby", @@ -37,10 +37,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/react": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/core": "7.102.0", + "@sentry/react": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "@sentry/webpack-plugin": "1.19.0" }, "peerDependencies": { diff --git a/packages/hub/package.json b/packages/hub/package.json index ee2ae145f103..92557161ecc2 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "7.101.1", + "version": "7.102.0", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/integration-shims/package.json b/packages/integration-shims/package.json index 2660e6aee9f1..5fd8570ebbd6 100644 --- a/packages/integration-shims/package.json +++ b/packages/integration-shims/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-shims", - "version": "7.101.1", + "version": "7.102.0", "description": "Shims for integrations in Sentry SDK.", "main": "build/cjs/index.js", "module": "build/esm/index.js", @@ -39,8 +39,8 @@ "url": "https://github.com/getsentry/sentry-javascript/issues" }, "dependencies": { - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "engines": { "node": ">=12" diff --git a/packages/integrations/package.json b/packages/integrations/package.json index a0c299a40374..6cc7b2856e70 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "7.101.1", + "version": "7.102.0", "description": "Pluggable integrations that can be used to enhance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -29,13 +29,13 @@ } }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "localforage": "^1.8.1" }, "devDependencies": { - "@sentry/browser": "7.101.1", + "@sentry/browser": "7.102.0", "chai": "^4.1.2" }, "scripts": { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 34b006cc4941..992fca424462 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Next.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nextjs", @@ -25,13 +25,13 @@ }, "dependencies": { "@rollup/plugin-commonjs": "24.0.0", - "@sentry/core": "7.101.1", - "@sentry/integrations": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/react": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", - "@sentry/vercel-edge": "7.101.1", + "@sentry/core": "7.102.0", + "@sentry/integrations": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/react": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", + "@sentry/vercel-edge": "7.102.0", "@sentry/webpack-plugin": "1.21.0", "chalk": "3.0.0", "resolve": "1.22.8", diff --git a/packages/node-experimental/package.json b/packages/node-experimental/package.json index 896fcaba2265..414622781dff 100644 --- a/packages/node-experimental/package.json +++ b/packages/node-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node-experimental", - "version": "7.101.1", + "version": "7.102.0", "description": "Experimental version of a Node SDK using OpenTelemetry for performance instrumentation", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node-experimental", @@ -49,11 +49,11 @@ "@opentelemetry/sdk-trace-base": "1.21.0", "@opentelemetry/semantic-conventions": "1.21.0", "@prisma/instrumentation": "5.9.0", - "@sentry/core": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/opentelemetry": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/opentelemetry": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "optionalDependencies": { "opentelemetry-instrumentation-fetch-node": "1.1.0" diff --git a/packages/node/package.json b/packages/node/package.json index 4a77fd80ebd6..9dc1324c5a09 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry-internal/tracing": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { "@types/cookie": "0.5.2", diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index 5496b60cf0ec..ab570c928e4a 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry-node", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for OpenTelemetry Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry-node", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "peerDependencies": { "@opentelemetry/api": "1.x", @@ -45,7 +45,7 @@ "@opentelemetry/sdk-trace-base": "^1.17.1", "@opentelemetry/sdk-trace-node": "^1.17.1", "@opentelemetry/semantic-conventions": "^1.17.1", - "@sentry/node": "7.101.1" + "@sentry/node": "7.102.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index 7e393d73db60..9601938bb509 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry utilities for OpenTelemetry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0", diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index 1f97da36b7c2..30a2c1b9b654 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/profiling-node", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Node.js Profiling", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/profiling-node", diff --git a/packages/react/package.json b/packages/react/package.json index 878d68ba988d..962d2772a932 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for React.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { diff --git a/packages/remix/package.json b/packages/remix/package.json index 9ce5afc45ae8..fdb216e483df 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/remix", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Remix", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/remix", @@ -35,11 +35,11 @@ }, "dependencies": { "@sentry/cli": "^2.28.0", - "@sentry/core": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/react": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/core": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/react": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "glob": "^10.3.4", "yargs": "^17.6.0" }, diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index f92a4927cbe4..70d0a8c83438 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-canvas", - "version": "7.101.1", + "version": "7.102.0", "description": "Replay canvas integration", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -59,10 +59,10 @@ "@sentry-internal/rrweb": "2.11.0" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/replay": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/replay": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "engines": { "node": ">=12" diff --git a/packages/replay-worker/package.json b/packages/replay-worker/package.json index 5931395eb419..b3ffa6037486 100644 --- a/packages/replay-worker/package.json +++ b/packages/replay-worker/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-worker", - "version": "7.101.1", + "version": "7.102.0", "description": "Worker for @sentry/replay", "main": "build/npm/esm/index.js", "module": "build/npm/esm/index.js", diff --git a/packages/replay/package.json b/packages/replay/package.json index d9fe98ace439..147df1826afe 100644 --- a/packages/replay/package.json +++ b/packages/replay/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/replay", - "version": "7.101.1", + "version": "7.102.0", "description": "User replays for Sentry", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -53,17 +53,17 @@ "homepage": "https://docs.sentry.io/platforms/javascript/session-replay/", "devDependencies": { "@babel/core": "^7.17.5", - "@sentry-internal/replay-worker": "7.101.1", + "@sentry-internal/replay-worker": "7.102.0", "@sentry-internal/rrweb": "2.11.0", "@sentry-internal/rrweb-snapshot": "2.11.0", "fflate": "^0.8.1", "jsdom-worker": "^0.2.1" }, "dependencies": { - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry-internal/tracing": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "engines": { "node": ">=12" diff --git a/packages/serverless/package.json b/packages/serverless/package.json index acfd8150b1f6..25869d27951b 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/serverless", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for various serverless solutions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/core": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "@types/aws-lambda": "^8.10.62", "@types/express": "^4.17.14" }, diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 5be7bef3c5b5..15c12c4056b3 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/svelte", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Svelte", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/svelte", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "magic-string": "^0.30.0" }, "peerDependencies": { diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index 3181e7c6459e..18d97a2e35ae 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sveltekit", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for SvelteKit", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/sveltekit", @@ -37,13 +37,13 @@ "@sveltejs/kit": "1.x || 2.x" }, "dependencies": { - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/integrations": "7.101.1", - "@sentry/node": "7.101.1", - "@sentry/svelte": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry-internal/tracing": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/integrations": "7.102.0", + "@sentry/node": "7.102.0", + "@sentry/svelte": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "@sentry/vite-plugin": "^0.6.1", "magicast": "0.2.8", "sorcery": "0.11.0" diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json index 0cc9387b4187..5503d81c8047 100644 --- a/packages/tracing-internal/package.json +++ b/packages/tracing-internal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/tracing", - "version": "7.101.1", + "version": "7.102.0", "description": "Sentry Internal Tracing Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { "@types/express": "^4.17.14" diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 68e80d303d62..f7f094cf44fe 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/tracing", - "version": "7.101.1", + "version": "7.102.0", "description": "Sentry Performance Monitoring Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing", @@ -29,14 +29,14 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.101.1" + "@sentry-internal/tracing": "7.102.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.101.1", - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1", + "@sentry-internal/integration-shims": "7.102.0", + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0", "@types/express": "^4.17.14" }, "scripts": { diff --git a/packages/types/package.json b/packages/types/package.json index 49d5aaa58d11..7e34350fa94e 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "7.101.1", + "version": "7.102.0", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 54a72854abd3..ebb7a6a60aff 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "7.101.1", + "version": "7.102.0", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript", diff --git a/packages/utils/package.json b/packages/utils/package.json index 67ebd4e84786..975dbe7af5cb 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "7.101.1", + "version": "7.102.0", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -29,7 +29,7 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.101.1" + "@sentry/types": "7.102.0" }, "devDependencies": { "@types/array.prototype.flat": "^1.2.1", diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 974cc6f06292..9cdc8884b64c 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vercel-edge", - "version": "7.101.1", + "version": "7.102.0", "description": "Offical Sentry SDK for the Vercel Edge Runtime", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vercel-edge", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry-internal/tracing": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "devDependencies": { "@edge-runtime/jest-environment": "2.2.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index 572f26535cee..5dde349a470d 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "7.101.1", + "version": "7.102.0", "description": "Official Sentry SDK for Vue.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vue", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "peerDependencies": { "vue": "2.x || 3.x" diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 3aa3362239ed..23194f5ea523 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "7.101.1", + "version": "7.102.0", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.101.1", - "@sentry/core": "7.101.1", - "@sentry/types": "7.101.1", - "@sentry/utils": "7.101.1" + "@sentry/browser": "7.102.0", + "@sentry/core": "7.102.0", + "@sentry/types": "7.102.0", + "@sentry/utils": "7.102.0" }, "scripts": { "build": "run-p build:transpile build:bundle build:types", From f7d70a07f3d8c25b54aaeefafb2d767760baec5b Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Tue, 20 Feb 2024 10:42:36 -0500 Subject: [PATCH 035/106] measurements no longer an invalid type --- packages/core/test/lib/tracing/span.test.ts | 3 --- packages/types/src/span.ts | 1 + 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/core/test/lib/tracing/span.test.ts b/packages/core/test/lib/tracing/span.test.ts index b3c08987d4b2..a233ebb06cc0 100644 --- a/packages/core/test/lib/tracing/span.test.ts +++ b/packages/core/test/lib/tracing/span.test.ts @@ -105,9 +105,6 @@ describe('span', () => { it('disallows invalid attribute types', () => { const span = new Span(); - /** @ts-expect-error this is invalid */ - span.setAttribute('str', {}); - /** @ts-expect-error this is invalid */ span.setAttribute('str', null); diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index 84fe450e483c..1e33a135bb6b 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -30,6 +30,7 @@ export type SpanAttributes = Partial<{ 'sentry.op': string; 'sentry.source': string; 'sentry.sample_rate': number; + measurements: Measurements; }> & Record; From 01f63866a6e583de171cb6638c0c466f4139e0d8 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Thu, 15 Feb 2024 11:37:27 +0100 Subject: [PATCH 036/106] ref: Make span types more robust (#10660) With more strict TS settings, these could lead to problems: 1. `startChild()` should return a span interface, to match the interface implementation. 2. All properties that are optional in span/transactions need to also accept `| undefined` to be really correct - otherwise when we extend this and set `undefined` explicitly it complains there. Fixes https://github.com/getsentry/sentry-javascript/issues/10654 --- packages/core/src/tracing/span.ts | 10 +++--- packages/core/src/tracing/transaction.ts | 2 +- .../test/integrations/apollo-nestjs.test.ts | 7 ++-- .../tracing/test/integrations/apollo.test.ts | 7 ++-- .../tracing/test/integrations/graphql.test.ts | 7 ++-- .../test/integrations/node/mongo.test.ts | 7 ++-- .../test/integrations/node/postgres.test.ts | 9 ++--- packages/tracing/test/span.test.ts | 4 +-- packages/types/src/span.ts | 36 +++++++++---------- packages/types/src/transaction.ts | 4 +-- 10 files changed, 49 insertions(+), 44 deletions(-) diff --git a/packages/core/src/tracing/span.ts b/packages/core/src/tracing/span.ts index 1c178fc05fbe..5ded23cc386d 100644 --- a/packages/core/src/tracing/span.ts +++ b/packages/core/src/tracing/span.ts @@ -105,16 +105,16 @@ export class Span implements SpanInterface { protected _traceId: string; protected _spanId: string; - protected _parentSpanId?: string; + protected _parentSpanId?: string | undefined; protected _sampled: boolean | undefined; - protected _name?: string; + protected _name?: string | undefined; protected _attributes: SpanAttributes; /** Epoch timestamp in seconds when the span started. */ protected _startTime: number; /** Epoch timestamp in seconds when the span ended. */ - protected _endTime?: number; + protected _endTime?: number | undefined; /** Internal keeper of the status */ - protected _status?: SpanStatusType | string; + protected _status?: SpanStatusType | string | undefined; private _logMessage?: string; @@ -385,7 +385,7 @@ export class Span implements SpanInterface { */ public startChild( spanContext?: Pick>, - ): Span { + ): SpanInterface { const childSpan = new Span({ ...spanContext, parentSpanId: this._spanId, diff --git a/packages/core/src/tracing/transaction.ts b/packages/core/src/tracing/transaction.ts index 709aa628f42e..a399137d1301 100644 --- a/packages/core/src/tracing/transaction.ts +++ b/packages/core/src/tracing/transaction.ts @@ -35,7 +35,7 @@ export class Transaction extends SpanClass implements TransactionInterface { private _contexts: Contexts; - private _trimEnd?: boolean; + private _trimEnd?: boolean | undefined; // DO NOT yet remove this property, it is used in a hack for v7 backwards compatibility. private _frozenDynamicSamplingContext: Readonly> | undefined; diff --git a/packages/tracing/test/integrations/apollo-nestjs.test.ts b/packages/tracing/test/integrations/apollo-nestjs.test.ts index 7e9866146385..51f82f210e59 100644 --- a/packages/tracing/test/integrations/apollo-nestjs.test.ts +++ b/packages/tracing/test/integrations/apollo-nestjs.test.ts @@ -1,9 +1,10 @@ /* eslint-disable deprecation/deprecation */ /* eslint-disable @typescript-eslint/unbound-method */ -import { Hub, Scope } from '@sentry/core'; +import { Hub, Scope, Span as SpanClass } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { logger } from '@sentry/utils'; -import { Integrations, Span } from '../../src'; +import { Integrations } from '../../src'; import { getTestClient } from '../testutils'; type ApolloResolverGroup = { @@ -79,7 +80,7 @@ describe('setupOnce', () => { beforeEach(() => { scope = new Scope(); - parentSpan = new Span(); + parentSpan = new SpanClass(); childSpan = parentSpan.startChild(); jest.spyOn(scope, 'getSpan').mockReturnValueOnce(parentSpan); jest.spyOn(scope, 'setSpan'); diff --git a/packages/tracing/test/integrations/apollo.test.ts b/packages/tracing/test/integrations/apollo.test.ts index ea861dcdec1f..5de017275080 100644 --- a/packages/tracing/test/integrations/apollo.test.ts +++ b/packages/tracing/test/integrations/apollo.test.ts @@ -1,9 +1,10 @@ /* eslint-disable deprecation/deprecation */ /* eslint-disable @typescript-eslint/unbound-method */ -import { Hub, Scope } from '@sentry/core'; +import { Hub, Scope, Span as SpanClass } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { logger } from '@sentry/utils'; -import { Integrations, Span } from '../../src'; +import { Integrations } from '../../src'; import { getTestClient } from '../testutils'; type ApolloResolverGroup = { @@ -79,7 +80,7 @@ describe('setupOnce', () => { beforeEach(() => { scope = new Scope(); - parentSpan = new Span(); + parentSpan = new SpanClass(); childSpan = parentSpan.startChild(); jest.spyOn(scope, 'getSpan').mockReturnValueOnce(parentSpan); jest.spyOn(scope, 'setSpan'); diff --git a/packages/tracing/test/integrations/graphql.test.ts b/packages/tracing/test/integrations/graphql.test.ts index 06b9495d8061..7189a148130d 100644 --- a/packages/tracing/test/integrations/graphql.test.ts +++ b/packages/tracing/test/integrations/graphql.test.ts @@ -1,9 +1,10 @@ /* eslint-disable deprecation/deprecation */ /* eslint-disable @typescript-eslint/unbound-method */ -import { Hub, Scope } from '@sentry/core'; +import { Hub, Scope, Span as SpanClass } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { logger } from '@sentry/utils'; -import { Integrations, Span } from '../../src'; +import { Integrations } from '../../src'; import { getTestClient } from '../testutils'; const GQLExecute = { @@ -41,7 +42,7 @@ describe('setupOnce', () => { beforeEach(() => { scope = new Scope(); - parentSpan = new Span(); + parentSpan = new SpanClass(); childSpan = parentSpan.startChild(); jest.spyOn(scope, 'getSpan').mockReturnValueOnce(parentSpan); jest.spyOn(scope, 'setSpan'); diff --git a/packages/tracing/test/integrations/node/mongo.test.ts b/packages/tracing/test/integrations/node/mongo.test.ts index 8caa5f35750f..4a42a096de69 100644 --- a/packages/tracing/test/integrations/node/mongo.test.ts +++ b/packages/tracing/test/integrations/node/mongo.test.ts @@ -1,9 +1,10 @@ /* eslint-disable deprecation/deprecation */ /* eslint-disable @typescript-eslint/unbound-method */ -import { Hub, Scope } from '@sentry/core'; +import { Hub, Scope, Span as SpanClass } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { logger } from '@sentry/utils'; -import { Integrations, Span } from '../../../src'; +import { Integrations } from '../../../src'; import { getTestClient } from '../../testutils'; class Collection { @@ -63,7 +64,7 @@ describe('patchOperation()', () => { beforeEach(() => { scope = new Scope(); - parentSpan = new Span(); + parentSpan = new SpanClass(); childSpan = parentSpan.startChild(); testClient = getTestClient({}); jest.spyOn(scope, 'getSpan').mockReturnValueOnce(parentSpan); diff --git a/packages/tracing/test/integrations/node/postgres.test.ts b/packages/tracing/test/integrations/node/postgres.test.ts index c94b9870907b..800657d20fa1 100644 --- a/packages/tracing/test/integrations/node/postgres.test.ts +++ b/packages/tracing/test/integrations/node/postgres.test.ts @@ -1,10 +1,11 @@ /* eslint-disable deprecation/deprecation */ /* eslint-disable @typescript-eslint/unbound-method */ -import { Hub, Scope } from '@sentry/core'; +import { Hub, Scope, Span as SpanClass } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { loadModule, logger } from '@sentry/utils'; import pg from 'pg'; -import { Integrations, Span } from '../../../src'; +import { Integrations } from '../../../src'; import { getTestClient } from '../../testutils'; class PgClient { @@ -63,7 +64,7 @@ describe('setupOnce', () => { beforeEach(() => { scope = new Scope(); - parentSpan = new Span(); + parentSpan = new SpanClass(); childSpan = parentSpan.startChild(); jest.spyOn(scope, 'getSpan').mockReturnValueOnce(parentSpan); jest.spyOn(parentSpan, 'startChild').mockReturnValueOnce(childSpan); @@ -134,7 +135,7 @@ describe('setupOnce', () => { it('does not attempt resolution when module is passed directly', async () => { const scope = new Scope(); - jest.spyOn(scope, 'getSpan').mockReturnValueOnce(new Span()); + jest.spyOn(scope, 'getSpan').mockReturnValueOnce(new SpanClass()); new Integrations.Postgres({ module: mockModule }).setupOnce( () => undefined, diff --git a/packages/tracing/test/span.test.ts b/packages/tracing/test/span.test.ts index ae13f42ea698..798cc2a8263c 100644 --- a/packages/tracing/test/span.test.ts +++ b/packages/tracing/test/span.test.ts @@ -57,8 +57,8 @@ describe('Span', () => { const span2 = transaction.startChild(); const span3 = span2.startChild(); span3.end(); - expect(transaction.spanRecorder).toBe(span2.spanRecorder); - expect(transaction.spanRecorder).toBe(span3.spanRecorder); + expect(transaction.spanRecorder).toBe((span2 as Span).spanRecorder); + expect(transaction.spanRecorder).toBe((span3 as Span).spanRecorder); }); }); diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index 6aa6ea1113f6..69704d497b8f 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -104,43 +104,43 @@ export interface SpanContext { * * @deprecated Use `name` instead. */ - description?: string; + description?: string | undefined; /** * Human-readable identifier for the span. Alias for span.description. */ - name?: string; + name?: string | undefined; /** * Operation of the Span. */ - op?: string; + op?: string | undefined; /** * Completion status of the Span. * See: {@sentry/tracing SpanStatus} for possible values */ - status?: string; + status?: string | undefined; /** * Parent Span ID */ - parentSpanId?: string; + parentSpanId?: string | undefined; /** * Was this span chosen to be sent as part of the sample? */ - sampled?: boolean; + sampled?: boolean | undefined; /** * Span ID */ - spanId?: string; + spanId?: string | undefined; /** * Trace ID */ - traceId?: string; + traceId?: string | undefined; /** * Tags of the Span. @@ -162,22 +162,22 @@ export interface SpanContext { /** * Timestamp in seconds (epoch time) indicating when the span started. */ - startTimestamp?: number; + startTimestamp?: number | undefined; /** * Timestamp in seconds (epoch time) indicating when the span ended. */ - endTimestamp?: number; + endTimestamp?: number | undefined; /** * The instrumenter that created this span. */ - instrumenter?: Instrumenter; + instrumenter?: Instrumenter | undefined; /** * The origin of the span, giving context about what created the span. */ - origin?: SpanOrigin; + origin?: SpanOrigin | undefined; } /** Span holding trace_id, span_id */ @@ -194,7 +194,7 @@ export interface Span extends Omit { * @deprecated Use `startSpan()` functions to set, `span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'op') * to update and `spanToJSON().op` to read the op instead */ - op?: string; + op?: string | undefined; /** * The ID of the span. @@ -207,7 +207,7 @@ export interface Span extends Omit { * * @deprecated Use `spanToJSON(span).parent_span_id` instead. */ - parentSpanId?: string; + parentSpanId?: string | undefined; /** * The ID of the trace. @@ -219,7 +219,7 @@ export interface Span extends Omit { * Was this span chosen to be sent as part of the sample? * @deprecated Use `isRecording()` instead. */ - sampled?: boolean; + sampled?: boolean | undefined; /** * Timestamp in seconds (epoch time) indicating when the span started. @@ -231,7 +231,7 @@ export interface Span extends Omit { * Timestamp in seconds (epoch time) indicating when the span ended. * @deprecated Use `spanToJSON()` instead. */ - endTimestamp?: number; + endTimestamp?: number | undefined; /** * Tags for the span. @@ -271,14 +271,14 @@ export interface Span extends Omit { * * @deprecated Use `.setStatus` to set or update and `spanToJSON()` to read the status. */ - status?: string; + status?: string | undefined; /** * The origin of the span, giving context about what created the span. * * @deprecated Use `startSpan` function to set and `spanToJSON(span).origin` to read the origin instead. */ - origin?: SpanOrigin; + origin?: SpanOrigin | undefined; /** * Get context data for this span. diff --git a/packages/types/src/transaction.ts b/packages/types/src/transaction.ts index b297dd0ea9c2..fbcf8b38f02d 100644 --- a/packages/types/src/transaction.ts +++ b/packages/types/src/transaction.ts @@ -21,12 +21,12 @@ export interface TransactionContext extends SpanContext { * accounted for in child spans, like what happens in the idle transaction Tracing integration, where we finish the * transaction after a given "idle time" and we don't want this "idle time" to be part of the transaction. */ - trimEnd?: boolean; + trimEnd?: boolean | undefined; /** * If this transaction has a parent, the parent's sampling decision */ - parentSampled?: boolean; + parentSampled?: boolean | undefined; /** * Metadata associated with the transaction, for internal SDK use. From f40cba0e86aefca96d96689514e1b0a450f59d74 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 09:12:59 +0100 Subject: [PATCH 037/106] fix(tracing): Guard against missing `window.location` (#10659) We should also backport this to v7, probably. Closes https://github.com/getsentry/sentry-javascript/issues/10578 --- .../src/browser/browserTracingIntegration.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index b27575e147cf..d08ca952a0e0 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -257,7 +257,7 @@ export const browserTracingIntegration = ((_options: Partial { if (['interactive', 'complete'].includes(WINDOW.document.readyState)) { idleTransaction.sendAutoFinishSignal(); @@ -307,7 +307,7 @@ export const browserTracingIntegration = ((_options: Partial { @@ -335,7 +335,7 @@ export const browserTracingIntegration = ((_options: Partial { /** * This early return is there to account for some cases where a navigation transaction starts right after From 046422b11124ae6d551c34fce4f444ea28dd422f Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Wed, 21 Feb 2024 14:30:23 +0100 Subject: [PATCH 038/106] chore(publish): [v7] Use craft config from merge target branch for release preparation (#10763) Update our prepare release workflows on the `v7` branch to use the craft config from the merge target branch (which for v7 releases should always be `v7`) instead of the config from the default branch (`develop` in our case). --- .github/workflows/auto-release.yml | 1 + .github/workflows/release.yml | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/auto-release.yml b/.github/workflows/auto-release.yml index 26b6f695069f..9526e93d55c6 100644 --- a/.github/workflows/auto-release.yml +++ b/.github/workflows/auto-release.yml @@ -36,3 +36,4 @@ jobs: version: ${{ steps.version.outputs.group1 }} force: false merge_target: master + craft_config_from_merge_target: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cf4561746bb4..e55d7b9470fb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,7 @@ on: merge_target: description: Target branch to merge into. Uses the default branch as a fallback (optional) required: false - default: master + default: v7 jobs: release: runs-on: ubuntu-20.04 @@ -29,3 +29,5 @@ jobs: version: ${{ github.event.inputs.version }} force: ${{ github.event.inputs.force }} merge_target: ${{ github.event.inputs.merge_target }} + craft_config_from_merge_target: true + From 05c23931fe26eea2e97fad6c8aebb4ded95352fe Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 21 Feb 2024 14:19:14 -0500 Subject: [PATCH 039/106] update createSpanEnvelope to accept an array of spans --- packages/core/src/span.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/core/src/span.ts b/packages/core/src/span.ts index a14298fa9fe4..270d71fed6af 100644 --- a/packages/core/src/span.ts +++ b/packages/core/src/span.ts @@ -5,13 +5,13 @@ import { createEnvelope } from '@sentry/utils'; /** * Create envelope from Span item. */ -export function createSpanEnvelope(span: Span): SpanEnvelope { +export function createSpanEnvelope(spans: Span[]): SpanEnvelope { const headers: SpanEnvelope[0] = { sent_at: new Date().toISOString(), }; - const item = createSpanItem(span); - return createEnvelope(headers, [item]); + const items = spans.map(createSpanItem); + return createEnvelope(headers, items); } function createSpanItem(span: Span): SpanItem { From 2b495f10a97417ee8138cf6f00188d9807a387bd Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 21 Feb 2024 14:24:42 -0500 Subject: [PATCH 040/106] remove exclusiveTime as a field from spans --- packages/core/src/tracing/span.ts | 5 ----- packages/types/src/span.ts | 5 ----- 2 files changed, 10 deletions(-) diff --git a/packages/core/src/tracing/span.ts b/packages/core/src/tracing/span.ts index dc9ae19faffd..ca2c1f06cb57 100644 --- a/packages/core/src/tracing/span.ts +++ b/packages/core/src/tracing/span.ts @@ -120,7 +120,6 @@ export class Span implements SpanInterface { protected _endTime?: number | undefined; /** Internal keeper of the status */ protected _status?: SpanStatusType | string | undefined; - protected _exclusiveTime?: number; private _logMessage?: string; @@ -165,9 +164,6 @@ export class Span implements SpanInterface { if (spanContext.endTimestamp) { this._endTime = spanContext.endTimestamp; } - if (spanContext.exclusiveTime) { - this._exclusiveTime = spanContext.exclusiveTime; - } } // This rule conflicts with another eslint rule :( @@ -635,7 +631,6 @@ export class Span implements SpanInterface { trace_id: this._traceId, origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined, _metrics_summary: getMetricSummaryJsonForSpan(this), - exclusive_time: this._exclusiveTime, measurements: this._attributes[SEMANTIC_ATTRIBUTE_MEASUREMENTS] as Measurements | undefined, }); } diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index 5f60e3308959..0357d7f3be30 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -181,11 +181,6 @@ export interface SpanContext { * The origin of the span, giving context about what created the span. */ origin?: SpanOrigin | undefined; - - /** - * Exclusive time in milliseconds. - */ - exclusiveTime?: number; } /** Span holding trace_id, span_id */ From 91c7f0778da31ca3eb144f9a38fea3c793ba5759 Mon Sep 17 00:00:00 2001 From: Onur Temizkan Date: Wed, 21 Feb 2024 21:11:31 +0000 Subject: [PATCH 041/106] ref(remix): Make `@remix-run/router` a dependency (v7) (#10779) Backports #10479 to v7 branch Original PR Description: > Fixes: https://github.com/getsentry/sentry-javascript/issues/10349 > Related: https://github.com/getsentry/sentry-javascript/issues/5860 > Related: https://github.com/getsentry/sentry-javascript/pull/10458 > > Removes dynamic loading of `react-router-dom` and makes `@remix-run/router` a peer dependency. > > We don't need to dynamically load `react-router-dom` as our TypeScript version is now up-to-date. --- packages/remix/package.json | 1 + packages/remix/src/utils/instrumentServer.ts | 18 ++++------------- .../remix/src/utils/serverAdapters/express.ts | 18 +---------------- packages/remix/src/utils/vendor/response.ts | 20 ++++++++++--------- packages/remix/src/utils/vendor/types.ts | 6 +----- yarn.lock | 5 +++++ 6 files changed, 23 insertions(+), 45 deletions(-) diff --git a/packages/remix/package.json b/packages/remix/package.json index fdb216e483df..b6962cc8b86f 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -34,6 +34,7 @@ "access": "public" }, "dependencies": { + "@remix-run/router": "1.x", "@sentry/cli": "^2.28.0", "@sentry/core": "7.102.0", "@sentry/node": "7.102.0", diff --git a/packages/remix/src/utils/instrumentServer.ts b/packages/remix/src/utils/instrumentServer.ts index 94e8090ac433..1283f98fec1a 100644 --- a/packages/remix/src/utils/instrumentServer.ts +++ b/packages/remix/src/utils/instrumentServer.ts @@ -47,7 +47,6 @@ import type { EntryContext, FutureConfig, HandleDocumentRequestFunction, - ReactRouterDomPkg, RemixRequest, RequestHandler, ServerBuild, @@ -384,10 +383,6 @@ export function createRoutes(manifest: ServerRouteManifest, parentId?: string): /** * Starts a new transaction for the given request to be used by different `RequestHandler` wrappers. - * - * @param request - * @param routes - * @param pkg */ export function startRequestHandlerTransaction( hub: Hub, @@ -435,19 +430,14 @@ export function startRequestHandlerTransaction( /** * Get transaction name from routes and url */ -export function getTransactionName( - routes: ServerRoute[], - url: URL, - pkg?: ReactRouterDomPkg, -): [string, TransactionSource] { - const matches = matchServerRoutes(routes, url.pathname, pkg); +export function getTransactionName(routes: ServerRoute[], url: URL): [string, TransactionSource] { + const matches = matchServerRoutes(routes, url.pathname); const match = matches && getRequestMatch(url, matches); - return match === null ? [url.pathname, 'url'] : [match.route.id, 'route']; + return match === null ? [url.pathname, 'url'] : [match.route.id || 'no-route-id', 'route']; } function wrapRequestHandler(origRequestHandler: RequestHandler, build: ServerBuild): RequestHandler { const routes = createRoutes(build.routes); - const pkg = loadModule('react-router-dom'); return async function (this: unknown, request: RemixRequest, loadContext?: AppLoadContext): Promise { // This means that the request handler of the adapter (ex: express) is already wrapped. @@ -471,7 +461,7 @@ function wrapRequestHandler(origRequestHandler: RequestHandler, build: ServerBui } const url = new URL(request.url); - const [name, source] = getTransactionName(routes, url, pkg); + const [name, source] = getTransactionName(routes, url); scope.setSDKProcessingMetadata({ request: { diff --git a/packages/remix/src/utils/serverAdapters/express.ts b/packages/remix/src/utils/serverAdapters/express.ts index 8f05de780381..db38c351c90e 100644 --- a/packages/remix/src/utils/serverAdapters/express.ts +++ b/packages/remix/src/utils/serverAdapters/express.ts @@ -9,7 +9,6 @@ import { import { flush } from '@sentry/node'; import type { Transaction } from '@sentry/types'; import { extractRequestData, fill, isString, logger } from '@sentry/utils'; -import { cwd } from 'process'; import { DEBUG_BUILD } from '../debug-build'; import { createRoutes, getTransactionName, instrumentBuild, startRequestHandlerTransaction } from '../instrumentServer'; @@ -22,12 +21,9 @@ import type { ExpressRequestHandler, ExpressResponse, GetLoadContextFunction, - ReactRouterDomPkg, ServerBuild, } from '../vendor/types'; -let pkg: ReactRouterDomPkg; - function wrapExpressRequestHandler( origRequestHandler: ExpressRequestHandler, build: ServerBuild, @@ -40,18 +36,6 @@ function wrapExpressRequestHandler( res: ExpressResponse, next: ExpressNextFunction, ): Promise { - if (!pkg) { - try { - pkg = await import('react-router-dom'); - } catch (e) { - pkg = await import(`${cwd()}/node_modules/react-router-dom`); - } finally { - if (!pkg) { - DEBUG_BUILD && logger.error('Could not find `react-router-dom` package.'); - } - } - } - await runWithAsyncContext(async () => { // eslint-disable-next-line @typescript-eslint/unbound-method res.end = wrapEndMethod(res.end); @@ -70,7 +54,7 @@ function wrapExpressRequestHandler( const url = new URL(request.url); - const [name, source] = getTransactionName(routes, url, pkg); + const [name, source] = getTransactionName(routes, url); const transaction = startRequestHandlerTransaction(hub, name, source, { headers: { 'sentry-trace': (req.headers && isString(req.headers['sentry-trace']) && req.headers['sentry-trace']) || '', diff --git a/packages/remix/src/utils/vendor/response.ts b/packages/remix/src/utils/vendor/response.ts index 5def5cd28d99..8a8421ab06fd 100644 --- a/packages/remix/src/utils/vendor/response.ts +++ b/packages/remix/src/utils/vendor/response.ts @@ -6,7 +6,9 @@ // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -import type { DeferredData, ErrorResponse, ReactRouterDomPkg, RouteMatch, ServerRoute } from './types'; +import { matchRoutes } from '@remix-run/router'; +import type { AgnosticRouteMatch, AgnosticRouteObject } from '@remix-run/router'; +import type { DeferredData, ErrorResponse, ServerRoute } from './types'; /** * Based on Remix Implementation @@ -76,13 +78,9 @@ export const json: JsonFunction = (data, init = {}) => { export function matchServerRoutes( routes: ServerRoute[], pathname: string, - pkg?: ReactRouterDomPkg, -): RouteMatch[] | null { - if (!pkg) { - return null; - } +): AgnosticRouteMatch[] | null { + const matches = matchRoutes(routes, pathname); - const matches = pkg.matchRoutes(routes, pathname); if (!matches) { return null; } @@ -91,6 +89,7 @@ export function matchServerRoutes( params: match.params, pathname: match.pathname, route: match.route, + pathnameBase: match.pathnameBase, })); } @@ -115,10 +114,13 @@ export function isIndexRequestUrl(url: URL): boolean { /** * https://github.com/remix-run/remix/blob/97999d02493e8114c39d48b76944069d58526e8d/packages/remix-server-runtime/server.ts#L588-L596 */ -export function getRequestMatch(url: URL, matches: RouteMatch[]): RouteMatch { +export function getRequestMatch( + url: URL, + matches: AgnosticRouteMatch[], +): AgnosticRouteMatch { const match = matches.slice(-1)[0]; - if (!isIndexRequestUrl(url) && match.route.id.endsWith('/index')) { + if (!isIndexRequestUrl(url) && match.route.id?.endsWith('/index')) { return matches.slice(-2)[0]; } diff --git a/packages/remix/src/utils/vendor/types.ts b/packages/remix/src/utils/vendor/types.ts index c3041dd4805e..e3a3fa42fbea 100644 --- a/packages/remix/src/utils/vendor/types.ts +++ b/packages/remix/src/utils/vendor/types.ts @@ -78,7 +78,7 @@ export type ExpressResponse = Express.Response; export type ExpressNextFunction = Express.NextFunction; export interface Route { - index?: boolean; + index: false | undefined; caseSensitive?: boolean; id: string; parentId?: string; @@ -210,10 +210,6 @@ export interface DataFunction { (args: DataFunctionArgs): Promise | Response | Promise | AppData; } -export interface ReactRouterDomPkg { - matchRoutes: (routes: ServerRoute[], pathname: string) => RouteMatch[] | null; -} - // Taken from Remix Implementation // https://github.com/remix-run/remix/blob/97999d02493e8114c39d48b76944069d58526e8d/packages/remix-server-runtime/routeMatching.ts#L6-L10 export interface RouteMatch { diff --git a/yarn.lock b/yarn.lock index ddf84ad0e320..4eba7bf0fa1f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5239,6 +5239,11 @@ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.0.2.tgz#1c17eadb2fa77f80a796ad5ea9bf108e6993ef06" integrity sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ== +"@remix-run/router@1.x": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.0.tgz#461a952c2872dd82c8b2e9b74c4dfaff569123e2" + integrity sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ== + "@remix-run/server-runtime@1.5.1": version "1.5.1" resolved "https://registry.yarnpkg.com/@remix-run/server-runtime/-/server-runtime-1.5.1.tgz#5272b01e6dce109dc10bd68447ceae2d039315b2" From 37698951467c7b3b3ed607ab78ccf0734039eb38 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 22 Feb 2024 14:22:55 +0100 Subject: [PATCH 042/106] meta: Update CHANGELOG for 7.102.1 (#10788) Changelog for 7.102.1 --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d308f26bec85..db2bfac1ec43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 7.102.1 + +- fix(performance): Fixes latest route name and source for interactions not updating properly on navigation (#10702) +- fix(tracing): Guard against missing `window.location` (#10659) +- ref: Make span types more robust (#10660) +- ref(remix): Make `@remix-run/router` a dependency (v7) (#10779) + ## 7.102.0 - fix: Export session API (#10712) From 26ec3bd7ef7c48360de7305f22978d03f219763c Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 22 Feb 2024 14:01:21 +0000 Subject: [PATCH 043/106] release: 7.102.1 --- .../browser-integration-tests/package.json | 6 +++--- dev-packages/e2e-tests/package.json | 2 +- .../node-integration-tests/package.json | 8 ++++---- dev-packages/overhead-metrics/package.json | 2 +- dev-packages/rollup-utils/package.json | 2 +- lerna.json | 2 +- packages/angular-ivy/package.json | 10 +++++----- packages/angular/package.json | 10 +++++----- packages/astro/package.json | 12 ++++++------ packages/browser/package.json | 18 +++++++++--------- packages/bun/package.json | 10 +++++----- packages/core/package.json | 6 +++--- packages/core/src/version.ts | 2 +- packages/deno/package.json | 10 +++++----- packages/ember/package.json | 10 +++++----- packages/eslint-config-sdk/package.json | 6 +++--- packages/eslint-plugin-sdk/package.json | 2 +- packages/feedback/package.json | 8 ++++---- packages/gatsby/package.json | 10 +++++----- packages/hub/package.json | 8 ++++---- packages/integration-shims/package.json | 6 +++--- packages/integrations/package.json | 10 +++++----- packages/nextjs/package.json | 16 ++++++++-------- packages/node-experimental/package.json | 12 ++++++------ packages/node/package.json | 10 +++++----- packages/opentelemetry-node/package.json | 10 +++++----- packages/opentelemetry/package.json | 8 ++++---- packages/profiling-node/package.json | 2 +- packages/react/package.json | 10 +++++----- packages/remix/package.json | 12 ++++++------ packages/replay-canvas/package.json | 10 +++++----- packages/replay-worker/package.json | 2 +- packages/replay/package.json | 12 ++++++------ packages/serverless/package.json | 10 +++++----- packages/svelte/package.json | 10 +++++----- packages/sveltekit/package.json | 16 ++++++++-------- packages/tracing-internal/package.json | 8 ++++---- packages/tracing/package.json | 14 +++++++------- packages/types/package.json | 2 +- packages/typescript/package.json | 2 +- packages/utils/package.json | 4 ++-- packages/vercel-edge/package.json | 10 +++++----- packages/vue/package.json | 10 +++++----- packages/wasm/package.json | 10 +++++----- 44 files changed, 180 insertions(+), 180 deletions(-) diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 7c34cd75e001..d41be8237ef4 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/browser-integration-tests", - "version": "7.102.0", + "version": "7.102.1", "main": "index.js", "license": "MIT", "engines": { @@ -47,8 +47,8 @@ "@babel/preset-typescript": "^7.16.7", "@playwright/test": "^1.40.1", "@sentry-internal/rrweb": "2.11.0", - "@sentry/browser": "7.102.0", - "@sentry/tracing": "7.102.0", + "@sentry/browser": "7.102.1", + "@sentry/tracing": "7.102.1", "axios": "1.6.0", "babel-loader": "^8.2.2", "html-webpack-plugin": "^5.5.0", diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index a820311928d6..85bc65ee2867 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/e2e-tests", - "version": "7.102.0", + "version": "7.102.1", "license": "MIT", "private": true, "scripts": { diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index daa64d44369d..2e8276e9440d 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/node-integration-tests", - "version": "7.102.0", + "version": "7.102.1", "license": "MIT", "engines": { "node": ">=10" @@ -29,9 +29,9 @@ "dependencies": { "@hapi/hapi": "^20.3.0", "@prisma/client": "3.15.2", - "@sentry/node": "7.102.0", - "@sentry/tracing": "7.102.0", - "@sentry/types": "7.102.0", + "@sentry/node": "7.102.1", + "@sentry/tracing": "7.102.1", + "@sentry/types": "7.102.1", "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21", "@types/pg": "^8.6.5", diff --git a/dev-packages/overhead-metrics/package.json b/dev-packages/overhead-metrics/package.json index dd5d7223eec0..fb8cf456c728 100644 --- a/dev-packages/overhead-metrics/package.json +++ b/dev-packages/overhead-metrics/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "7.102.0", + "version": "7.102.1", "name": "@sentry-internal/overhead-metrics", "main": "index.js", "author": "Sentry", diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index b0e7e5f303c8..29b0761a332a 100644 --- a/dev-packages/rollup-utils/package.json +++ b/dev-packages/rollup-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/rollup-utils", - "version": "7.102.0", + "version": "7.102.1", "description": "Rollup utilities used at Sentry for the Sentry JavaScript SDK", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/rollup-utils", diff --git a/lerna.json b/lerna.json index 8928a30696bf..856d72d97ed5 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "7.102.0", + "version": "7.102.1", "npmClient": "yarn" } diff --git a/packages/angular-ivy/package.json b/packages/angular-ivy/package.json index 2c3338abf4b1..0771f0660f7d 100644 --- a/packages/angular-ivy/package.json +++ b/packages/angular-ivy/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular-ivy", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Angular with full Ivy Support", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular-ivy", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/browser": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/angular/package.json b/packages/angular/package.json index e3b90a277a1b..947c85fb55c7 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Angular", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/browser": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/astro/package.json b/packages/astro/package.json index 84b3607e2a43..aa3e22411de6 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/astro", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Astro", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/astro", @@ -49,11 +49,11 @@ "astro": ">=3.x || >=4.0.0-beta" }, "dependencies": { - "@sentry/browser": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/node": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/browser": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/node": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "@sentry/vite-plugin": "^2.8.0" }, "devDependencies": { diff --git a/packages/browser/package.json b/packages/browser/package.json index ba5ce249e486..bc7d8ca7c55d 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -29,16 +29,16 @@ "access": "public" }, "dependencies": { - "@sentry-internal/feedback": "7.102.0", - "@sentry-internal/replay-canvas": "7.102.0", - "@sentry-internal/tracing": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/replay": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry-internal/feedback": "7.102.1", + "@sentry-internal/replay-canvas": "7.102.1", + "@sentry-internal/tracing": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/replay": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.102.0", + "@sentry-internal/integration-shims": "7.102.1", "@types/md5": "2.1.33", "btoa": "^1.2.1", "chai": "^4.1.2", diff --git a/packages/bun/package.json b/packages/bun/package.json index 3a811266425d..6c73b54a5171 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bun", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for bun", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/bun", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.0", - "@sentry/node": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/core": "7.102.1", + "@sentry/node": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "devDependencies": { "bun-types": "latest" diff --git a/packages/core/package.json b/packages/core/package.json index 254b2744ba84..31f6d86de94f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "7.102.0", + "version": "7.102.1", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -29,8 +29,8 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index fdd361fa4ea6..60076a712960 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = '7.102.0'; +export const SDK_VERSION = '7.102.1'; diff --git a/packages/deno/package.json b/packages/deno/package.json index 20d134d038b2..b2d738d02b3c 100644 --- a/packages/deno/package.json +++ b/packages/deno/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/deno", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Deno", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/deno", @@ -17,10 +17,10 @@ "index.d.ts" ], "dependencies": { - "@sentry/browser": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/browser": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.5", diff --git a/packages/ember/package.json b/packages/ember/package.json index a1769d737789..7d459b16971d 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Ember.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/ember", @@ -32,10 +32,10 @@ }, "dependencies": { "@embroider/macros": "^1.9.0", - "@sentry/browser": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/browser": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "ember-auto-import": "^1.12.1 || ^2.4.3", "ember-cli-babel": "^7.26.11", "ember-cli-htmlbars": "^6.1.1", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index 4f54ec3ea6cf..36a158f9acca 100644 --- a/packages/eslint-config-sdk/package.json +++ b/packages/eslint-config-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config-sdk", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK eslint config", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-config-sdk", @@ -22,8 +22,8 @@ "access": "public" }, "dependencies": { - "@sentry-internal/eslint-plugin-sdk": "7.102.0", - "@sentry-internal/typescript": "7.102.0", + "@sentry-internal/eslint-plugin-sdk": "7.102.1", + "@sentry-internal/typescript": "7.102.1", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "eslint-config-prettier": "^6.11.0", diff --git a/packages/eslint-plugin-sdk/package.json b/packages/eslint-plugin-sdk/package.json index 173d6d70c0ef..e553781bd7e2 100644 --- a/packages/eslint-plugin-sdk/package.json +++ b/packages/eslint-plugin-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-plugin-sdk", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK eslint plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-plugin-sdk", diff --git a/packages/feedback/package.json b/packages/feedback/package.json index 37c8dee0a99b..a04aab050a8c 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/feedback", - "version": "7.102.0", + "version": "7.102.1", "description": "Sentry SDK integration for user feedback", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/feedback", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "scripts": { "build": "run-p build:transpile build:types build:bundle", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 47869ad9733e..470db765bdb9 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Gatsby.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/gatsby", @@ -37,10 +37,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.0", - "@sentry/react": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/core": "7.102.1", + "@sentry/react": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "@sentry/webpack-plugin": "1.19.0" }, "peerDependencies": { diff --git a/packages/hub/package.json b/packages/hub/package.json index 92557161ecc2..acb979386125 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "7.102.0", + "version": "7.102.1", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/integration-shims/package.json b/packages/integration-shims/package.json index 5fd8570ebbd6..33e476d0195c 100644 --- a/packages/integration-shims/package.json +++ b/packages/integration-shims/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-shims", - "version": "7.102.0", + "version": "7.102.1", "description": "Shims for integrations in Sentry SDK.", "main": "build/cjs/index.js", "module": "build/esm/index.js", @@ -39,8 +39,8 @@ "url": "https://github.com/getsentry/sentry-javascript/issues" }, "dependencies": { - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "engines": { "node": ">=12" diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 6cc7b2856e70..cd9947b6afff 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "7.102.0", + "version": "7.102.1", "description": "Pluggable integrations that can be used to enhance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -29,13 +29,13 @@ } }, "dependencies": { - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "localforage": "^1.8.1" }, "devDependencies": { - "@sentry/browser": "7.102.0", + "@sentry/browser": "7.102.1", "chai": "^4.1.2" }, "scripts": { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 992fca424462..e0eb1498539d 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Next.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nextjs", @@ -25,13 +25,13 @@ }, "dependencies": { "@rollup/plugin-commonjs": "24.0.0", - "@sentry/core": "7.102.0", - "@sentry/integrations": "7.102.0", - "@sentry/node": "7.102.0", - "@sentry/react": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", - "@sentry/vercel-edge": "7.102.0", + "@sentry/core": "7.102.1", + "@sentry/integrations": "7.102.1", + "@sentry/node": "7.102.1", + "@sentry/react": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", + "@sentry/vercel-edge": "7.102.1", "@sentry/webpack-plugin": "1.21.0", "chalk": "3.0.0", "resolve": "1.22.8", diff --git a/packages/node-experimental/package.json b/packages/node-experimental/package.json index 414622781dff..d430eb706888 100644 --- a/packages/node-experimental/package.json +++ b/packages/node-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node-experimental", - "version": "7.102.0", + "version": "7.102.1", "description": "Experimental version of a Node SDK using OpenTelemetry for performance instrumentation", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node-experimental", @@ -49,11 +49,11 @@ "@opentelemetry/sdk-trace-base": "1.21.0", "@opentelemetry/semantic-conventions": "1.21.0", "@prisma/instrumentation": "5.9.0", - "@sentry/core": "7.102.0", - "@sentry/node": "7.102.0", - "@sentry/opentelemetry": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/core": "7.102.1", + "@sentry/node": "7.102.1", + "@sentry/opentelemetry": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "optionalDependencies": { "opentelemetry-instrumentation-fetch-node": "1.1.0" diff --git a/packages/node/package.json b/packages/node/package.json index 9dc1324c5a09..9982c7cc3b8c 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry-internal/tracing": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "devDependencies": { "@types/cookie": "0.5.2", diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index ab570c928e4a..58f893d87e73 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry-node", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for OpenTelemetry Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry-node", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "peerDependencies": { "@opentelemetry/api": "1.x", @@ -45,7 +45,7 @@ "@opentelemetry/sdk-trace-base": "^1.17.1", "@opentelemetry/sdk-trace-node": "^1.17.1", "@opentelemetry/semantic-conventions": "^1.17.1", - "@sentry/node": "7.102.0" + "@sentry/node": "7.102.1" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index 9601938bb509..4e20d4e30fc7 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry utilities for OpenTelemetry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0", diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index 30a2c1b9b654..dc74dcaee315 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/profiling-node", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Node.js Profiling", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/profiling-node", diff --git a/packages/react/package.json b/packages/react/package.json index 962d2772a932..f86fab1d41c7 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for React.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/browser": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { diff --git a/packages/remix/package.json b/packages/remix/package.json index b6962cc8b86f..f520163d1fc0 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/remix", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Remix", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/remix", @@ -36,11 +36,11 @@ "dependencies": { "@remix-run/router": "1.x", "@sentry/cli": "^2.28.0", - "@sentry/core": "7.102.0", - "@sentry/node": "7.102.0", - "@sentry/react": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/core": "7.102.1", + "@sentry/node": "7.102.1", + "@sentry/react": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "glob": "^10.3.4", "yargs": "^17.6.0" }, diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index 70d0a8c83438..3a5052b7e353 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-canvas", - "version": "7.102.0", + "version": "7.102.1", "description": "Replay canvas integration", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -59,10 +59,10 @@ "@sentry-internal/rrweb": "2.11.0" }, "dependencies": { - "@sentry/core": "7.102.0", - "@sentry/replay": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/core": "7.102.1", + "@sentry/replay": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "engines": { "node": ">=12" diff --git a/packages/replay-worker/package.json b/packages/replay-worker/package.json index b3ffa6037486..4179a367905a 100644 --- a/packages/replay-worker/package.json +++ b/packages/replay-worker/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-worker", - "version": "7.102.0", + "version": "7.102.1", "description": "Worker for @sentry/replay", "main": "build/npm/esm/index.js", "module": "build/npm/esm/index.js", diff --git a/packages/replay/package.json b/packages/replay/package.json index 147df1826afe..9cd9bf0fd174 100644 --- a/packages/replay/package.json +++ b/packages/replay/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/replay", - "version": "7.102.0", + "version": "7.102.1", "description": "User replays for Sentry", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -53,17 +53,17 @@ "homepage": "https://docs.sentry.io/platforms/javascript/session-replay/", "devDependencies": { "@babel/core": "^7.17.5", - "@sentry-internal/replay-worker": "7.102.0", + "@sentry-internal/replay-worker": "7.102.1", "@sentry-internal/rrweb": "2.11.0", "@sentry-internal/rrweb-snapshot": "2.11.0", "fflate": "^0.8.1", "jsdom-worker": "^0.2.1" }, "dependencies": { - "@sentry-internal/tracing": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry-internal/tracing": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "engines": { "node": ">=12" diff --git a/packages/serverless/package.json b/packages/serverless/package.json index 25869d27951b..96ec157e5d7c 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/serverless", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for various serverless solutions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.0", - "@sentry/node": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/core": "7.102.1", + "@sentry/node": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "@types/aws-lambda": "^8.10.62", "@types/express": "^4.17.14" }, diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 15c12c4056b3..a7213ab6c8da 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/svelte", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Svelte", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/svelte", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry/browser": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "magic-string": "^0.30.0" }, "peerDependencies": { diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index 18d97a2e35ae..f27d8fb16254 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sveltekit", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for SvelteKit", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/sveltekit", @@ -37,13 +37,13 @@ "@sveltejs/kit": "1.x || 2.x" }, "dependencies": { - "@sentry-internal/tracing": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/integrations": "7.102.0", - "@sentry/node": "7.102.0", - "@sentry/svelte": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry-internal/tracing": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/integrations": "7.102.1", + "@sentry/node": "7.102.1", + "@sentry/svelte": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "@sentry/vite-plugin": "^0.6.1", "magicast": "0.2.8", "sorcery": "0.11.0" diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json index 5503d81c8047..1e522126422d 100644 --- a/packages/tracing-internal/package.json +++ b/packages/tracing-internal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/tracing", - "version": "7.102.0", + "version": "7.102.1", "description": "Sentry Internal Tracing Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "devDependencies": { "@types/express": "^4.17.14" diff --git a/packages/tracing/package.json b/packages/tracing/package.json index f7f094cf44fe..43a97765b39e 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/tracing", - "version": "7.102.0", + "version": "7.102.1", "description": "Sentry Performance Monitoring Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing", @@ -29,14 +29,14 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.102.0" + "@sentry-internal/tracing": "7.102.1" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.102.0", - "@sentry/browser": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0", + "@sentry-internal/integration-shims": "7.102.1", + "@sentry/browser": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1", "@types/express": "^4.17.14" }, "scripts": { diff --git a/packages/types/package.json b/packages/types/package.json index 7e34350fa94e..0beb9e258a95 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "7.102.0", + "version": "7.102.1", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", diff --git a/packages/typescript/package.json b/packages/typescript/package.json index ebb7a6a60aff..9439dd7f065b 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "7.102.0", + "version": "7.102.1", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript", diff --git a/packages/utils/package.json b/packages/utils/package.json index 975dbe7af5cb..957b727b3dfa 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "7.102.0", + "version": "7.102.1", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -29,7 +29,7 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.102.0" + "@sentry/types": "7.102.1" }, "devDependencies": { "@types/array.prototype.flat": "^1.2.1", diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 9cdc8884b64c..8a60a9564fcd 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vercel-edge", - "version": "7.102.0", + "version": "7.102.1", "description": "Offical Sentry SDK for the Vercel Edge Runtime", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vercel-edge", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry-internal/tracing": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "devDependencies": { "@edge-runtime/jest-environment": "2.2.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index 5dde349a470d..07fe23036e3a 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "7.102.0", + "version": "7.102.1", "description": "Official Sentry SDK for Vue.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vue", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/browser": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "peerDependencies": { "vue": "2.x || 3.x" diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 23194f5ea523..cee621aafcfd 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "7.102.0", + "version": "7.102.1", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.102.0", - "@sentry/core": "7.102.0", - "@sentry/types": "7.102.0", - "@sentry/utils": "7.102.0" + "@sentry/browser": "7.102.1", + "@sentry/core": "7.102.1", + "@sentry/types": "7.102.1", + "@sentry/utils": "7.102.1" }, "scripts": { "build": "run-p build:transpile build:bundle build:types", From 38976f3e9e168e1b1176b4e819a7dc10df3a9744 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Thu, 22 Feb 2024 21:33:27 +0100 Subject: [PATCH 044/106] fix: Make breadcrumbs option optional in WinterCGFetch integration (#10792) --- packages/vercel-edge/src/integrations/wintercg-fetch.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/vercel-edge/src/integrations/wintercg-fetch.ts b/packages/vercel-edge/src/integrations/wintercg-fetch.ts index 507a34aedab4..0332a291e98e 100644 --- a/packages/vercel-edge/src/integrations/wintercg-fetch.ts +++ b/packages/vercel-edge/src/integrations/wintercg-fetch.ts @@ -131,10 +131,7 @@ export const WinterCGFetch = convertIntegrationFnToClass( INTEGRATION_NAME, winterCGFetchIntegration, ) as IntegrationClass void }> & { - new (options?: { - breadcrumbs: boolean; - shouldCreateSpanForRequest?: (url: string) => boolean; - }): Integration; + new (options?: Partial): Integration; }; // eslint-disable-next-line deprecation/deprecation From 5ee3045b92821c86c31d35135f9c554179f5a7a7 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 22 Feb 2024 16:38:59 -0500 Subject: [PATCH 045/106] fix --- packages/tracing-internal/src/browser/metrics/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index 31106260dac1..d22584599e25 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -220,10 +220,10 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) release, environment, transaction: routeName, + exclusiveTime: metric.value, }, - exclusiveTime: metric.value, }); - const envelope = span ? createSpanEnvelope(span) : undefined; + const envelope = span ? createSpanEnvelope([span]) : undefined; const transport = client && client.getTransport(); if (transport && envelope) { transport.send(envelope).then(null, reason => { From 3f0f5589a413251840d6c1d9128d9ecac056c656 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Mon, 26 Feb 2024 14:37:11 -0500 Subject: [PATCH 046/106] fix bad import --- packages/core/src/span.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/span.ts b/packages/core/src/span.ts index 270d71fed6af..405ceeddab30 100644 --- a/packages/core/src/span.ts +++ b/packages/core/src/span.ts @@ -1,5 +1,5 @@ import type { SpanEnvelope, SpanItem } from '@sentry/types'; -import type { Span } from '@sentry/types/build/types/span'; +import type { Span } from '@sentry/types'; import { createEnvelope } from '@sentry/utils'; /** From a10187d7c056cdd3f2e10db822a0b268e5ac71ed Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Tue, 27 Feb 2024 09:08:11 +0000 Subject: [PATCH 047/106] feat(core): Allow to pass `forceTransaction` to `startSpan()` APIs (backport) (#10819) This will ensure a span is sent as a transaction to Sentry. This only implements this option for the core implementation, not yet for OTEL - that is a follow up here: https://github.com/getsentry/sentry-javascript/pull/10807 This is a backport to v7 of https://github.com/getsentry/sentry-javascript/pull/10749 --- packages/core/src/tracing/trace.ts | 129 +++++--- packages/core/src/tracing/transaction.ts | 4 +- packages/core/test/lib/tracing/trace.test.ts | 315 ++++++++++++++++++- packages/types/src/startSpanOptions.ts | 7 + 4 files changed, 403 insertions(+), 52 deletions(-) diff --git a/packages/core/src/tracing/trace.ts b/packages/core/src/tracing/trace.ts index 832180ef3c72..44171e934c7d 100644 --- a/packages/core/src/tracing/trace.ts +++ b/packages/core/src/tracing/trace.ts @@ -1,6 +1,7 @@ import type { Scope, Span, SpanTimeInput, StartSpanOptions, TransactionContext } from '@sentry/types'; import { addNonEnumerableProperty, dropUndefinedKeys, logger, tracingContextFromHeaders } from '@sentry/utils'; +import { getDynamicSamplingContextFromSpan } from '.'; import { DEBUG_BUILD } from '../debug-build'; import { getCurrentScope, withScope } from '../exports'; @@ -8,9 +9,10 @@ import type { Hub } from '../hub'; import { runWithAsyncContext } from '../hub'; import { getIsolationScope } from '../hub'; import { getCurrentHub } from '../hub'; +import type { Scope as ScopeClass } from '../scope'; import { handleCallbackErrors } from '../utils/handleCallbackErrors'; import { hasTracingEnabled } from '../utils/hasTracingEnabled'; -import { spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils'; +import { spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils'; /** * Wraps a function with a transaction/span and finishes the span after the function is done. @@ -40,8 +42,13 @@ export function trace( // eslint-disable-next-line deprecation/deprecation const parentSpan = scope.getSpan(); - const ctx = normalizeContext(context); - const activeSpan = createChildSpanOrTransaction(hub, parentSpan, ctx); + const spanContext = normalizeContext(context); + const activeSpan = createChildSpanOrTransaction(hub, { + parentSpan, + spanContext, + forceTransaction: false, + scope, + }); // eslint-disable-next-line deprecation/deprecation scope.setSpan(activeSpan); @@ -73,7 +80,7 @@ export function trace( * and the `span` returned from the callback will be undefined. */ export function startSpan(context: StartSpanOptions, callback: (span: Span | undefined) => T): T { - const ctx = normalizeContext(context); + const spanContext = normalizeContext(context); return runWithAsyncContext(() => { return withScope(context.scope, scope => { @@ -83,10 +90,14 @@ export function startSpan(context: StartSpanOptions, callback: (span: Span | const parentSpan = scope.getSpan(); const shouldSkipSpan = context.onlyIfParent && !parentSpan; - const activeSpan = shouldSkipSpan ? undefined : createChildSpanOrTransaction(hub, parentSpan, ctx); - - // eslint-disable-next-line deprecation/deprecation - scope.setSpan(activeSpan); + const activeSpan = shouldSkipSpan + ? undefined + : createChildSpanOrTransaction(hub, { + parentSpan, + spanContext, + forceTransaction: context.forceTransaction, + scope, + }); return handleCallbackErrors( () => callback(activeSpan), @@ -125,7 +136,7 @@ export function startSpanManual( context: StartSpanOptions, callback: (span: Span | undefined, finish: () => void) => T, ): T { - const ctx = normalizeContext(context); + const spanContext = normalizeContext(context); return runWithAsyncContext(() => { return withScope(context.scope, scope => { @@ -135,10 +146,14 @@ export function startSpanManual( const parentSpan = scope.getSpan(); const shouldSkipSpan = context.onlyIfParent && !parentSpan; - const activeSpan = shouldSkipSpan ? undefined : createChildSpanOrTransaction(hub, parentSpan, ctx); - - // eslint-disable-next-line deprecation/deprecation - scope.setSpan(activeSpan); + const activeSpan = shouldSkipSpan + ? undefined + : createChildSpanOrTransaction(hub, { + parentSpan, + spanContext, + forceTransaction: context.forceTransaction, + scope, + }); function finishAndSetSpan(): void { activeSpan && activeSpan.end(); @@ -175,7 +190,7 @@ export function startInactiveSpan(context: StartSpanOptions): Span | undefined { return undefined; } - const ctx = normalizeContext(context); + const spanContext = normalizeContext(context); // eslint-disable-next-line deprecation/deprecation const hub = getCurrentHub(); const parentSpan = context.scope @@ -189,37 +204,19 @@ export function startInactiveSpan(context: StartSpanOptions): Span | undefined { return undefined; } - const isolationScope = getIsolationScope(); - const scope = getCurrentScope(); - - let span: Span | undefined; - - if (parentSpan) { - // eslint-disable-next-line deprecation/deprecation - span = parentSpan.startChild(ctx); - } else { - const { traceId, dsc, parentSpanId, sampled } = { - ...isolationScope.getPropagationContext(), - ...scope.getPropagationContext(), - }; - - // eslint-disable-next-line deprecation/deprecation - span = hub.startTransaction({ - traceId, - parentSpanId, - parentSampled: sampled, - ...ctx, - metadata: { - dynamicSamplingContext: dsc, - // eslint-disable-next-line deprecation/deprecation - ...ctx.metadata, - }, - }); - } + const scope = context.scope || getCurrentScope(); - setCapturedScopesOnSpan(span, scope, isolationScope); + // Even though we don't actually want to make this span active on the current scope, + // we need to make it active on a temporary scope that we use for event processing + // as otherwise, it won't pick the correct span for the event when processing it + const temporaryScope = (scope as ScopeClass).clone(); - return span; + return createChildSpanOrTransaction(hub, { + parentSpan, + spanContext, + forceTransaction: context.forceTransaction, + scope: temporaryScope, + }); } /** @@ -334,20 +331,46 @@ export const continueTrace: ContinueTrace = ( function createChildSpanOrTransaction( hub: Hub, - parentSpan: Span | undefined, - ctx: TransactionContext, + { + parentSpan, + spanContext, + forceTransaction, + scope, + }: { + parentSpan: Span | undefined; + spanContext: TransactionContext; + forceTransaction?: boolean; + scope: Scope; + }, ): Span | undefined { if (!hasTracingEnabled()) { return undefined; } const isolationScope = getIsolationScope(); - const scope = getCurrentScope(); let span: Span | undefined; - if (parentSpan) { + if (parentSpan && !forceTransaction) { + // eslint-disable-next-line deprecation/deprecation + span = parentSpan.startChild(spanContext); + } else if (parentSpan) { + // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope + const dsc = getDynamicSamplingContextFromSpan(parentSpan); + const { traceId, spanId: parentSpanId } = parentSpan.spanContext(); + const sampled = spanIsSampled(parentSpan); + // eslint-disable-next-line deprecation/deprecation - span = parentSpan.startChild(ctx); + span = hub.startTransaction({ + traceId, + parentSpanId, + parentSampled: sampled, + ...spanContext, + metadata: { + dynamicSamplingContext: dsc, + // eslint-disable-next-line deprecation/deprecation + ...spanContext.metadata, + }, + }); } else { const { traceId, dsc, parentSpanId, sampled } = { ...isolationScope.getPropagationContext(), @@ -359,15 +382,21 @@ function createChildSpanOrTransaction( traceId, parentSpanId, parentSampled: sampled, - ...ctx, + ...spanContext, metadata: { dynamicSamplingContext: dsc, // eslint-disable-next-line deprecation/deprecation - ...ctx.metadata, + ...spanContext.metadata, }, }); } + // We always set this as active span on the scope + // In the case of this being an inactive span, we ensure to pass a detached scope in here in the first place + // But by having this here, we can ensure that the lookup through `getCapturedScopesOnSpan` results in the correct scope & span combo + // eslint-disable-next-line deprecation/deprecation + scope.setSpan(span); + setCapturedScopesOnSpan(span, scope, isolationScope); return span; diff --git a/packages/core/src/tracing/transaction.ts b/packages/core/src/tracing/transaction.ts index a399137d1301..8f82c9b03d95 100644 --- a/packages/core/src/tracing/transaction.ts +++ b/packages/core/src/tracing/transaction.ts @@ -330,7 +330,9 @@ export class Transaction extends SpanClass implements TransactionInterface { ...metadata, capturedSpanScope, capturedSpanIsolationScope, - dynamicSamplingContext: getDynamicSamplingContextFromSpan(this), + ...dropUndefinedKeys({ + dynamicSamplingContext: getDynamicSamplingContextFromSpan(this), + }), }, _metrics_summary: getMetricSummaryJsonForSpan(this), ...(source && { diff --git a/packages/core/test/lib/tracing/trace.test.ts b/packages/core/test/lib/tracing/trace.test.ts index bb5302bb54db..8dbc440d1b76 100644 --- a/packages/core/test/lib/tracing/trace.test.ts +++ b/packages/core/test/lib/tracing/trace.test.ts @@ -1,4 +1,4 @@ -import type { Span as SpanType } from '@sentry/types'; +import type { Event, Span as SpanType } from '@sentry/types'; import { Hub, SEMANTIC_ATTRIBUTE_SENTRY_OP, @@ -323,6 +323,110 @@ describe('startSpan', () => { expect(getActiveSpan()).toBe(undefined); }); + it('allows to force a transaction with forceTransaction=true', async () => { + const options = getDefaultTestClientOptions({ tracesSampleRate: 1.0 }); + client = new TestClient(options); + setCurrentClient(client); + client.init(); + + const transactionEvents: Event[] = []; + + client.addEventProcessor(event => { + if (event.type === 'transaction') { + transactionEvents.push(event); + } + return event; + }); + + startSpan({ name: 'outer transaction' }, () => { + startSpan({ name: 'inner span' }, () => { + startSpan({ name: 'inner transaction', forceTransaction: true }, () => { + startSpan({ name: 'inner span 2' }, () => { + // all good + }); + }); + }); + }); + + await client.flush(); + + const normalizedTransactionEvents = transactionEvents.map(event => { + return { + ...event, + spans: event.spans?.map(span => ({ name: spanToJSON(span).description, id: span.spanContext().spanId })), + sdkProcessingMetadata: { + dynamicSamplingContext: event.sdkProcessingMetadata?.dynamicSamplingContext, + }, + }; + }); + + expect(normalizedTransactionEvents).toHaveLength(2); + + const outerTransaction = normalizedTransactionEvents.find(event => event.transaction === 'outer transaction'); + const innerTransaction = normalizedTransactionEvents.find(event => event.transaction === 'inner transaction'); + + const outerTraceId = outerTransaction?.contexts?.trace?.trace_id; + // The inner transaction should be a child of the last span of the outer transaction + const innerParentSpanId = outerTransaction?.spans?.[0].id; + const innerSpanId = innerTransaction?.contexts?.trace?.span_id; + + expect(outerTraceId).toBeDefined(); + expect(innerParentSpanId).toBeDefined(); + expect(innerSpanId).toBeDefined(); + // inner span ID should _not_ be the parent span ID, but the id of the new span + expect(innerSpanId).not.toEqual(innerParentSpanId); + + expect(outerTransaction?.contexts).toEqual({ + trace: { + data: { + 'sentry.sample_rate': 1, + 'sentry.origin': 'manual', + }, + span_id: expect.any(String), + trace_id: expect.any(String), + origin: 'manual', + }, + }); + expect(outerTransaction?.spans).toEqual([{ name: 'inner span', id: expect.any(String) }]); + expect(outerTransaction?.tags).toEqual({ + transaction: 'outer transaction', + }); + expect(outerTransaction?.sdkProcessingMetadata).toEqual({ + dynamicSamplingContext: { + environment: 'production', + trace_id: outerTraceId, + sample_rate: '1', + transaction: 'outer transaction', + sampled: 'true', + }, + }); + + expect(innerTransaction?.contexts).toEqual({ + trace: { + data: { + 'sentry.origin': 'manual', + }, + parent_span_id: innerParentSpanId, + span_id: expect.any(String), + trace_id: outerTraceId, + origin: 'manual', + }, + }); + expect(innerTransaction?.spans).toEqual([{ name: 'inner span 2', id: expect.any(String) }]); + expect(innerTransaction?.tags).toEqual({ + transaction: 'inner transaction', + }); + expect(innerTransaction?.sdkProcessingMetadata).toEqual({ + dynamicSamplingContext: { + environment: 'production', + trace_id: outerTraceId, + sample_rate: '1', + transaction: 'outer transaction', + sampled: 'true', + }, + }); + }); + it("picks up the trace id off the parent scope's propagation context", () => { expect.assertions(1); withScope(scope => { @@ -486,6 +590,114 @@ describe('startSpanManual', () => { expect(getActiveSpan()).toBe(undefined); }); + it('allows to force a transaction with forceTransaction=true', async () => { + const options = getDefaultTestClientOptions({ tracesSampleRate: 1.0 }); + client = new TestClient(options); + setCurrentClient(client); + client.init(); + + const transactionEvents: Event[] = []; + + client.addEventProcessor(event => { + if (event.type === 'transaction') { + transactionEvents.push(event); + } + return event; + }); + + startSpanManual({ name: 'outer transaction' }, span => { + startSpanManual({ name: 'inner span' }, span => { + startSpanManual({ name: 'inner transaction', forceTransaction: true }, span => { + startSpanManual({ name: 'inner span 2' }, span => { + // all good + span?.end(); + }); + span?.end(); + }); + span?.end(); + }); + span?.end(); + }); + + await client.flush(); + + const normalizedTransactionEvents = transactionEvents.map(event => { + return { + ...event, + spans: event.spans?.map(span => ({ name: spanToJSON(span).description, id: span.spanContext().spanId })), + sdkProcessingMetadata: { + dynamicSamplingContext: event.sdkProcessingMetadata?.dynamicSamplingContext, + }, + }; + }); + + expect(normalizedTransactionEvents).toHaveLength(2); + + const outerTransaction = normalizedTransactionEvents.find(event => event.transaction === 'outer transaction'); + const innerTransaction = normalizedTransactionEvents.find(event => event.transaction === 'inner transaction'); + + const outerTraceId = outerTransaction?.contexts?.trace?.trace_id; + // The inner transaction should be a child of the last span of the outer transaction + const innerParentSpanId = outerTransaction?.spans?.[0].id; + const innerSpanId = innerTransaction?.contexts?.trace?.span_id; + + expect(outerTraceId).toBeDefined(); + expect(innerParentSpanId).toBeDefined(); + expect(innerSpanId).toBeDefined(); + // inner span ID should _not_ be the parent span ID, but the id of the new span + expect(innerSpanId).not.toEqual(innerParentSpanId); + + expect(outerTransaction?.contexts).toEqual({ + trace: { + data: { + 'sentry.sample_rate': 1, + 'sentry.origin': 'manual', + }, + span_id: expect.any(String), + trace_id: expect.any(String), + origin: 'manual', + }, + }); + expect(outerTransaction?.spans).toEqual([{ name: 'inner span', id: expect.any(String) }]); + expect(outerTransaction?.tags).toEqual({ + transaction: 'outer transaction', + }); + expect(outerTransaction?.sdkProcessingMetadata).toEqual({ + dynamicSamplingContext: { + environment: 'production', + trace_id: outerTraceId, + sample_rate: '1', + transaction: 'outer transaction', + sampled: 'true', + }, + }); + + expect(innerTransaction?.contexts).toEqual({ + trace: { + data: { + 'sentry.origin': 'manual', + }, + parent_span_id: innerParentSpanId, + span_id: expect.any(String), + trace_id: outerTraceId, + origin: 'manual', + }, + }); + expect(innerTransaction?.spans).toEqual([{ name: 'inner span 2', id: expect.any(String) }]); + expect(innerTransaction?.tags).toEqual({ + transaction: 'inner transaction', + }); + expect(innerTransaction?.sdkProcessingMetadata).toEqual({ + dynamicSamplingContext: { + environment: 'production', + trace_id: outerTraceId, + sample_rate: '1', + transaction: 'outer transaction', + sampled: 'true', + }, + }); + }); + it('allows to pass a `startTime`', () => { const start = startSpanManual({ name: 'outer', startTime: [1234, 0] }, span => { span?.end(); @@ -586,6 +798,107 @@ describe('startInactiveSpan', () => { expect(getActiveSpan()).toBeUndefined(); }); + it('allows to force a transaction with forceTransaction=true', async () => { + const options = getDefaultTestClientOptions({ tracesSampleRate: 1.0 }); + client = new TestClient(options); + setCurrentClient(client); + client.init(); + + const transactionEvents: Event[] = []; + + client.addEventProcessor(event => { + if (event.type === 'transaction') { + transactionEvents.push(event); + } + return event; + }); + + startSpan({ name: 'outer transaction' }, () => { + startSpan({ name: 'inner span' }, () => { + const innerTransaction = startInactiveSpan({ name: 'inner transaction', forceTransaction: true }); + innerTransaction?.end(); + }); + }); + + await client.flush(); + + const normalizedTransactionEvents = transactionEvents.map(event => { + return { + ...event, + spans: event.spans?.map(span => ({ name: spanToJSON(span).description, id: span.spanContext().spanId })), + sdkProcessingMetadata: { + dynamicSamplingContext: event.sdkProcessingMetadata?.dynamicSamplingContext, + }, + }; + }); + + expect(normalizedTransactionEvents).toHaveLength(2); + + const outerTransaction = normalizedTransactionEvents.find(event => event.transaction === 'outer transaction'); + const innerTransaction = normalizedTransactionEvents.find(event => event.transaction === 'inner transaction'); + + const outerTraceId = outerTransaction?.contexts?.trace?.trace_id; + // The inner transaction should be a child of the last span of the outer transaction + const innerParentSpanId = outerTransaction?.spans?.[0].id; + const innerSpanId = innerTransaction?.contexts?.trace?.span_id; + + expect(outerTraceId).toBeDefined(); + expect(innerParentSpanId).toBeDefined(); + expect(innerSpanId).toBeDefined(); + // inner span ID should _not_ be the parent span ID, but the id of the new span + expect(innerSpanId).not.toEqual(innerParentSpanId); + + expect(outerTransaction?.contexts).toEqual({ + trace: { + data: { + 'sentry.sample_rate': 1, + 'sentry.origin': 'manual', + }, + span_id: expect.any(String), + trace_id: expect.any(String), + origin: 'manual', + }, + }); + expect(outerTransaction?.spans).toEqual([{ name: 'inner span', id: expect.any(String) }]); + expect(outerTransaction?.tags).toEqual({ + transaction: 'outer transaction', + }); + expect(outerTransaction?.sdkProcessingMetadata).toEqual({ + dynamicSamplingContext: { + environment: 'production', + trace_id: outerTraceId, + sample_rate: '1', + transaction: 'outer transaction', + sampled: 'true', + }, + }); + + expect(innerTransaction?.contexts).toEqual({ + trace: { + data: { + 'sentry.origin': 'manual', + }, + parent_span_id: innerParentSpanId, + span_id: expect.any(String), + trace_id: outerTraceId, + origin: 'manual', + }, + }); + expect(innerTransaction?.spans).toEqual([]); + expect(innerTransaction?.tags).toEqual({ + transaction: 'inner transaction', + }); + expect(innerTransaction?.sdkProcessingMetadata).toEqual({ + dynamicSamplingContext: { + environment: 'production', + trace_id: outerTraceId, + sample_rate: '1', + transaction: 'outer transaction', + sampled: 'true', + }, + }); + }); + it('allows to pass a `startTime`', () => { const span = startInactiveSpan({ name: 'outer', startTime: [1234, 0] }); expect(spanToJSON(span!).start_timestamp).toEqual(1234); diff --git a/packages/types/src/startSpanOptions.ts b/packages/types/src/startSpanOptions.ts index 57ff96b3169f..f095119c1ac5 100644 --- a/packages/types/src/startSpanOptions.ts +++ b/packages/types/src/startSpanOptions.ts @@ -20,6 +20,13 @@ export interface StartSpanOptions extends TransactionContext { /** An op for the span. This is a categorization for spans. */ op?: string; + /** + * If set to true, this span will be forced to be treated as a transaction in the Sentry UI, if possible and applicable. + * Note that it is up to the SDK to decide how exactly the span will be sent, which may change in future SDK versions. + * It is not guaranteed that a span started with this flag set to `true` will be sent as a transaction. + */ + forceTransaction?: boolean; + /** * The origin of the span - if it comes from auto instrumentation or manual instrumentation. * From c6314363eaad7d8ae4e12ea776539c2ad58d5d11 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Tue, 27 Feb 2024 09:35:01 +0000 Subject: [PATCH 048/106] meta(changelog): Add changelog for v7.103.0 (#10820) Small backport release. --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index db2bfac1ec43..842c512fdb02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,25 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 7.103.0 + +### Important Changes + +- **feat(core): Allow to pass `forceTransaction` to `startSpan()` APIs (#10819)** + +You can now pass `forceTransaction: true` to `startSpan()`, `startSpanManual()` and `startInactiveSpan()`. This allows +you to start a span that you want to be a transaction, if possible. Under the hood, the SDK will connect this span to +the running active span (if there is one), but still send the new span as a transaction to the Sentry backend, if +possible, ensuring it shows up as a transaction throughout the system. + +Please note that setting this to `true` does not _guarantee_ that this will be sent as a transaction, but that the SDK +will try to do so. You can enable this flag if this span is important to you and you want to ensure that you can see it +in the Sentry UI. + +### Other Changes + +- fix: Make breadcrumbs option optional in WinterCGFetch integration (#10792) + ## 7.102.1 - fix(performance): Fixes latest route name and source for interactions not updating properly on navigation (#10702) From ef9315d630e537d12e98a9b37c457436f332192e Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Tue, 27 Feb 2024 09:38:21 +0000 Subject: [PATCH 049/106] release: 7.103.0 --- .../browser-integration-tests/package.json | 6 +++--- dev-packages/e2e-tests/package.json | 2 +- .../node-integration-tests/package.json | 8 ++++---- dev-packages/overhead-metrics/package.json | 2 +- dev-packages/rollup-utils/package.json | 2 +- lerna.json | 2 +- packages/angular-ivy/package.json | 10 +++++----- packages/angular/package.json | 10 +++++----- packages/astro/package.json | 12 ++++++------ packages/browser/package.json | 18 +++++++++--------- packages/bun/package.json | 10 +++++----- packages/core/package.json | 6 +++--- packages/core/src/version.ts | 2 +- packages/deno/package.json | 10 +++++----- packages/ember/package.json | 10 +++++----- packages/eslint-config-sdk/package.json | 6 +++--- packages/eslint-plugin-sdk/package.json | 2 +- packages/feedback/package.json | 8 ++++---- packages/gatsby/package.json | 10 +++++----- packages/hub/package.json | 8 ++++---- packages/integration-shims/package.json | 6 +++--- packages/integrations/package.json | 10 +++++----- packages/nextjs/package.json | 16 ++++++++-------- packages/node-experimental/package.json | 12 ++++++------ packages/node/package.json | 10 +++++----- packages/opentelemetry-node/package.json | 10 +++++----- packages/opentelemetry/package.json | 8 ++++---- packages/profiling-node/package.json | 2 +- packages/react/package.json | 10 +++++----- packages/remix/package.json | 12 ++++++------ packages/replay-canvas/package.json | 10 +++++----- packages/replay-worker/package.json | 2 +- packages/replay/package.json | 12 ++++++------ packages/serverless/package.json | 10 +++++----- packages/svelte/package.json | 10 +++++----- packages/sveltekit/package.json | 16 ++++++++-------- packages/tracing-internal/package.json | 8 ++++---- packages/tracing/package.json | 14 +++++++------- packages/types/package.json | 2 +- packages/typescript/package.json | 2 +- packages/utils/package.json | 4 ++-- packages/vercel-edge/package.json | 10 +++++----- packages/vue/package.json | 10 +++++----- packages/wasm/package.json | 10 +++++----- 44 files changed, 180 insertions(+), 180 deletions(-) diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index d41be8237ef4..e6d10358e87e 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/browser-integration-tests", - "version": "7.102.1", + "version": "7.103.0", "main": "index.js", "license": "MIT", "engines": { @@ -47,8 +47,8 @@ "@babel/preset-typescript": "^7.16.7", "@playwright/test": "^1.40.1", "@sentry-internal/rrweb": "2.11.0", - "@sentry/browser": "7.102.1", - "@sentry/tracing": "7.102.1", + "@sentry/browser": "7.103.0", + "@sentry/tracing": "7.103.0", "axios": "1.6.0", "babel-loader": "^8.2.2", "html-webpack-plugin": "^5.5.0", diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index 85bc65ee2867..ea182d26498a 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/e2e-tests", - "version": "7.102.1", + "version": "7.103.0", "license": "MIT", "private": true, "scripts": { diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index 2e8276e9440d..87c4bf2b5a45 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/node-integration-tests", - "version": "7.102.1", + "version": "7.103.0", "license": "MIT", "engines": { "node": ">=10" @@ -29,9 +29,9 @@ "dependencies": { "@hapi/hapi": "^20.3.0", "@prisma/client": "3.15.2", - "@sentry/node": "7.102.1", - "@sentry/tracing": "7.102.1", - "@sentry/types": "7.102.1", + "@sentry/node": "7.103.0", + "@sentry/tracing": "7.103.0", + "@sentry/types": "7.103.0", "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21", "@types/pg": "^8.6.5", diff --git a/dev-packages/overhead-metrics/package.json b/dev-packages/overhead-metrics/package.json index fb8cf456c728..b0bc8432ab0b 100644 --- a/dev-packages/overhead-metrics/package.json +++ b/dev-packages/overhead-metrics/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "7.102.1", + "version": "7.103.0", "name": "@sentry-internal/overhead-metrics", "main": "index.js", "author": "Sentry", diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index 29b0761a332a..8d42571c6dbd 100644 --- a/dev-packages/rollup-utils/package.json +++ b/dev-packages/rollup-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/rollup-utils", - "version": "7.102.1", + "version": "7.103.0", "description": "Rollup utilities used at Sentry for the Sentry JavaScript SDK", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/rollup-utils", diff --git a/lerna.json b/lerna.json index 856d72d97ed5..7058d4779e25 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "7.102.1", + "version": "7.103.0", "npmClient": "yarn" } diff --git a/packages/angular-ivy/package.json b/packages/angular-ivy/package.json index 0771f0660f7d..0dc742e4ebee 100644 --- a/packages/angular-ivy/package.json +++ b/packages/angular-ivy/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular-ivy", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Angular with full Ivy Support", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular-ivy", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/angular/package.json b/packages/angular/package.json index 947c85fb55c7..df8a1b96be23 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Angular", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/astro/package.json b/packages/astro/package.json index aa3e22411de6..d9260ff71d2d 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/astro", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Astro", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/astro", @@ -49,11 +49,11 @@ "astro": ">=3.x || >=4.0.0-beta" }, "dependencies": { - "@sentry/browser": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/node": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/node": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "@sentry/vite-plugin": "^2.8.0" }, "devDependencies": { diff --git a/packages/browser/package.json b/packages/browser/package.json index bc7d8ca7c55d..56015f13eabc 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -29,16 +29,16 @@ "access": "public" }, "dependencies": { - "@sentry-internal/feedback": "7.102.1", - "@sentry-internal/replay-canvas": "7.102.1", - "@sentry-internal/tracing": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/replay": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry-internal/feedback": "7.103.0", + "@sentry-internal/replay-canvas": "7.103.0", + "@sentry-internal/tracing": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/replay": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.102.1", + "@sentry-internal/integration-shims": "7.103.0", "@types/md5": "2.1.33", "btoa": "^1.2.1", "chai": "^4.1.2", diff --git a/packages/bun/package.json b/packages/bun/package.json index 6c73b54a5171..294d72ed8ccc 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bun", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for bun", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/bun", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.1", - "@sentry/node": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/core": "7.103.0", + "@sentry/node": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "devDependencies": { "bun-types": "latest" diff --git a/packages/core/package.json b/packages/core/package.json index 31f6d86de94f..7b638e65c8b4 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "7.102.1", + "version": "7.103.0", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -29,8 +29,8 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 60076a712960..54e9730edd8a 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = '7.102.1'; +export const SDK_VERSION = '7.103.0'; diff --git a/packages/deno/package.json b/packages/deno/package.json index b2d738d02b3c..12d64584ee66 100644 --- a/packages/deno/package.json +++ b/packages/deno/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/deno", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Deno", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/deno", @@ -17,10 +17,10 @@ "index.d.ts" ], "dependencies": { - "@sentry/browser": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.5", diff --git a/packages/ember/package.json b/packages/ember/package.json index 7d459b16971d..8a4bad031a87 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Ember.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/ember", @@ -32,10 +32,10 @@ }, "dependencies": { "@embroider/macros": "^1.9.0", - "@sentry/browser": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "ember-auto-import": "^1.12.1 || ^2.4.3", "ember-cli-babel": "^7.26.11", "ember-cli-htmlbars": "^6.1.1", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index 36a158f9acca..fb6a4966de6e 100644 --- a/packages/eslint-config-sdk/package.json +++ b/packages/eslint-config-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config-sdk", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK eslint config", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-config-sdk", @@ -22,8 +22,8 @@ "access": "public" }, "dependencies": { - "@sentry-internal/eslint-plugin-sdk": "7.102.1", - "@sentry-internal/typescript": "7.102.1", + "@sentry-internal/eslint-plugin-sdk": "7.103.0", + "@sentry-internal/typescript": "7.103.0", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "eslint-config-prettier": "^6.11.0", diff --git a/packages/eslint-plugin-sdk/package.json b/packages/eslint-plugin-sdk/package.json index e553781bd7e2..dbef0738fc27 100644 --- a/packages/eslint-plugin-sdk/package.json +++ b/packages/eslint-plugin-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-plugin-sdk", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK eslint plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-plugin-sdk", diff --git a/packages/feedback/package.json b/packages/feedback/package.json index a04aab050a8c..c3f73325b5fc 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/feedback", - "version": "7.102.1", + "version": "7.103.0", "description": "Sentry SDK integration for user feedback", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/feedback", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "scripts": { "build": "run-p build:transpile build:types build:bundle", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 470db765bdb9..c8045929dc36 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Gatsby.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/gatsby", @@ -37,10 +37,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.1", - "@sentry/react": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry/core": "7.103.0", + "@sentry/react": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "@sentry/webpack-plugin": "1.19.0" }, "peerDependencies": { diff --git a/packages/hub/package.json b/packages/hub/package.json index acb979386125..b67e25a6ff4e 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "7.102.1", + "version": "7.103.0", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/integration-shims/package.json b/packages/integration-shims/package.json index 33e476d0195c..bc6010f84d50 100644 --- a/packages/integration-shims/package.json +++ b/packages/integration-shims/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-shims", - "version": "7.102.1", + "version": "7.103.0", "description": "Shims for integrations in Sentry SDK.", "main": "build/cjs/index.js", "module": "build/esm/index.js", @@ -39,8 +39,8 @@ "url": "https://github.com/getsentry/sentry-javascript/issues" }, "dependencies": { - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "engines": { "node": ">=12" diff --git a/packages/integrations/package.json b/packages/integrations/package.json index cd9947b6afff..36d3c28e1eab 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "7.102.1", + "version": "7.103.0", "description": "Pluggable integrations that can be used to enhance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -29,13 +29,13 @@ } }, "dependencies": { - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "localforage": "^1.8.1" }, "devDependencies": { - "@sentry/browser": "7.102.1", + "@sentry/browser": "7.103.0", "chai": "^4.1.2" }, "scripts": { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index e0eb1498539d..fb7ef746c406 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Next.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nextjs", @@ -25,13 +25,13 @@ }, "dependencies": { "@rollup/plugin-commonjs": "24.0.0", - "@sentry/core": "7.102.1", - "@sentry/integrations": "7.102.1", - "@sentry/node": "7.102.1", - "@sentry/react": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", - "@sentry/vercel-edge": "7.102.1", + "@sentry/core": "7.103.0", + "@sentry/integrations": "7.103.0", + "@sentry/node": "7.103.0", + "@sentry/react": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", + "@sentry/vercel-edge": "7.103.0", "@sentry/webpack-plugin": "1.21.0", "chalk": "3.0.0", "resolve": "1.22.8", diff --git a/packages/node-experimental/package.json b/packages/node-experimental/package.json index d430eb706888..dd9200c536fa 100644 --- a/packages/node-experimental/package.json +++ b/packages/node-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node-experimental", - "version": "7.102.1", + "version": "7.103.0", "description": "Experimental version of a Node SDK using OpenTelemetry for performance instrumentation", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node-experimental", @@ -49,11 +49,11 @@ "@opentelemetry/sdk-trace-base": "1.21.0", "@opentelemetry/semantic-conventions": "1.21.0", "@prisma/instrumentation": "5.9.0", - "@sentry/core": "7.102.1", - "@sentry/node": "7.102.1", - "@sentry/opentelemetry": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/core": "7.103.0", + "@sentry/node": "7.103.0", + "@sentry/opentelemetry": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "optionalDependencies": { "opentelemetry-instrumentation-fetch-node": "1.1.0" diff --git a/packages/node/package.json b/packages/node/package.json index 9982c7cc3b8c..285d6572d231 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry-internal/tracing": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "devDependencies": { "@types/cookie": "0.5.2", diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index 58f893d87e73..20cac2cd9998 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry-node", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for OpenTelemetry Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry-node", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "peerDependencies": { "@opentelemetry/api": "1.x", @@ -45,7 +45,7 @@ "@opentelemetry/sdk-trace-base": "^1.17.1", "@opentelemetry/sdk-trace-node": "^1.17.1", "@opentelemetry/semantic-conventions": "^1.17.1", - "@sentry/node": "7.102.1" + "@sentry/node": "7.103.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index 4e20d4e30fc7..e372f7f9f5cd 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry utilities for OpenTelemetry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0", diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index dc74dcaee315..2ef71ec20f3a 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/profiling-node", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Node.js Profiling", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/profiling-node", diff --git a/packages/react/package.json b/packages/react/package.json index f86fab1d41c7..eb9d63fcb0d9 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for React.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { diff --git a/packages/remix/package.json b/packages/remix/package.json index f520163d1fc0..ef69f57475f2 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/remix", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Remix", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/remix", @@ -36,11 +36,11 @@ "dependencies": { "@remix-run/router": "1.x", "@sentry/cli": "^2.28.0", - "@sentry/core": "7.102.1", - "@sentry/node": "7.102.1", - "@sentry/react": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry/core": "7.103.0", + "@sentry/node": "7.103.0", + "@sentry/react": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "glob": "^10.3.4", "yargs": "^17.6.0" }, diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index 3a5052b7e353..6ee9c21337b1 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-canvas", - "version": "7.102.1", + "version": "7.103.0", "description": "Replay canvas integration", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -59,10 +59,10 @@ "@sentry-internal/rrweb": "2.11.0" }, "dependencies": { - "@sentry/core": "7.102.1", - "@sentry/replay": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/core": "7.103.0", + "@sentry/replay": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "engines": { "node": ">=12" diff --git a/packages/replay-worker/package.json b/packages/replay-worker/package.json index 4179a367905a..cb011a70926b 100644 --- a/packages/replay-worker/package.json +++ b/packages/replay-worker/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-worker", - "version": "7.102.1", + "version": "7.103.0", "description": "Worker for @sentry/replay", "main": "build/npm/esm/index.js", "module": "build/npm/esm/index.js", diff --git a/packages/replay/package.json b/packages/replay/package.json index 9cd9bf0fd174..ccdef99da284 100644 --- a/packages/replay/package.json +++ b/packages/replay/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/replay", - "version": "7.102.1", + "version": "7.103.0", "description": "User replays for Sentry", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -53,17 +53,17 @@ "homepage": "https://docs.sentry.io/platforms/javascript/session-replay/", "devDependencies": { "@babel/core": "^7.17.5", - "@sentry-internal/replay-worker": "7.102.1", + "@sentry-internal/replay-worker": "7.103.0", "@sentry-internal/rrweb": "2.11.0", "@sentry-internal/rrweb-snapshot": "2.11.0", "fflate": "^0.8.1", "jsdom-worker": "^0.2.1" }, "dependencies": { - "@sentry-internal/tracing": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry-internal/tracing": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "engines": { "node": ">=12" diff --git a/packages/serverless/package.json b/packages/serverless/package.json index 96ec157e5d7c..5f85e25e6cb7 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/serverless", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for various serverless solutions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.1", - "@sentry/node": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry/core": "7.103.0", + "@sentry/node": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "@types/aws-lambda": "^8.10.62", "@types/express": "^4.17.14" }, diff --git a/packages/svelte/package.json b/packages/svelte/package.json index a7213ab6c8da..48e8eac0883d 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/svelte", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Svelte", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/svelte", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "magic-string": "^0.30.0" }, "peerDependencies": { diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index f27d8fb16254..e5c89aeecf8c 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sveltekit", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for SvelteKit", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/sveltekit", @@ -37,13 +37,13 @@ "@sveltejs/kit": "1.x || 2.x" }, "dependencies": { - "@sentry-internal/tracing": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/integrations": "7.102.1", - "@sentry/node": "7.102.1", - "@sentry/svelte": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry-internal/tracing": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/integrations": "7.103.0", + "@sentry/node": "7.103.0", + "@sentry/svelte": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "@sentry/vite-plugin": "^0.6.1", "magicast": "0.2.8", "sorcery": "0.11.0" diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json index 1e522126422d..68135a7e1382 100644 --- a/packages/tracing-internal/package.json +++ b/packages/tracing-internal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/tracing", - "version": "7.102.1", + "version": "7.103.0", "description": "Sentry Internal Tracing Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "devDependencies": { "@types/express": "^4.17.14" diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 43a97765b39e..6bf1647d1ba9 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/tracing", - "version": "7.102.1", + "version": "7.103.0", "description": "Sentry Performance Monitoring Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing", @@ -29,14 +29,14 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.102.1" + "@sentry-internal/tracing": "7.103.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.102.1", - "@sentry/browser": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1", + "@sentry-internal/integration-shims": "7.103.0", + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "@types/express": "^4.17.14" }, "scripts": { diff --git a/packages/types/package.json b/packages/types/package.json index 0beb9e258a95..65e27c0de895 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "7.102.1", + "version": "7.103.0", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 9439dd7f065b..bcdde2338ca4 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "7.102.1", + "version": "7.103.0", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript", diff --git a/packages/utils/package.json b/packages/utils/package.json index 957b727b3dfa..0bbc5dfda048 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "7.102.1", + "version": "7.103.0", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -29,7 +29,7 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.102.1" + "@sentry/types": "7.103.0" }, "devDependencies": { "@types/array.prototype.flat": "^1.2.1", diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 8a60a9564fcd..01cad5954726 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vercel-edge", - "version": "7.102.1", + "version": "7.103.0", "description": "Offical Sentry SDK for the Vercel Edge Runtime", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vercel-edge", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry-internal/tracing": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "devDependencies": { "@edge-runtime/jest-environment": "2.2.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index 07fe23036e3a..ec0cc5a639c9 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "7.102.1", + "version": "7.103.0", "description": "Official Sentry SDK for Vue.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vue", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "peerDependencies": { "vue": "2.x || 3.x" diff --git a/packages/wasm/package.json b/packages/wasm/package.json index cee621aafcfd..c2f5b035fa3d 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "7.102.1", + "version": "7.103.0", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.102.1", - "@sentry/core": "7.102.1", - "@sentry/types": "7.102.1", - "@sentry/utils": "7.102.1" + "@sentry/browser": "7.103.0", + "@sentry/core": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0" }, "scripts": { "build": "run-p build:transpile build:bundle build:types", From 690ecc1df6822a044dbb36ce36864a115ff318c9 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Tue, 27 Feb 2024 10:03:11 -0500 Subject: [PATCH 050/106] snake case --- packages/tracing-internal/src/browser/metrics/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index d22584599e25..235228b139d5 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -220,7 +220,7 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) release, environment, transaction: routeName, - exclusiveTime: metric.value, + exclusive_time: metric.value, }, }); const envelope = span ? createSpanEnvelope([span]) : undefined; From 811eaa4faec71f79a636de8f918d789b2a6c5532 Mon Sep 17 00:00:00 2001 From: Onur Temizkan Date: Tue, 27 Feb 2024 15:30:10 +0000 Subject: [PATCH 051/106] test(remix): Re-enable Remix E2E tests on v7 (#10816) Fixes and re-enables flaky Remix E2E tests for v7 branch. Ref: https://github.com/getsentry/sentry-javascript/pull/10290 --- .github/workflows/build.yml | 5 ++--- .../create-remix-app-v2/app/entry.client.tsx | 1 + .../create-remix-app-v2/app/entry.server.tsx | 1 + .../test-applications/create-remix-app-v2/remix.config.js | 1 - .../create-remix-app-v2/tests/behaviour-client.test.ts | 6 ++---- .../test-applications/create-remix-app/app/entry.client.tsx | 1 + .../test-applications/create-remix-app/app/entry.server.tsx | 1 + .../create-remix-app/tests/behaviour-client.test.ts | 6 ++---- 8 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3d02857a3611..52ad9f46570f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1055,9 +1055,8 @@ jobs: 'node-express-app', 'create-react-app', 'create-next-app', - # disabling remix e2e tests because of flakes - # 'create-remix-app', - # 'create-remix-app-v2', + 'create-remix-app', + 'create-remix-app-v2', 'debug-id-sourcemaps', 'nextjs-app-dir', 'nextjs-14', diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/app/entry.client.tsx b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/app/entry.client.tsx index 15cb6513a917..a56d13dddadc 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/app/entry.client.tsx +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/app/entry.client.tsx @@ -10,6 +10,7 @@ import { StrictMode, startTransition, useEffect } from 'react'; import { hydrateRoot } from 'react-dom/client'; Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions dsn: window.ENV.SENTRY_DSN, integrations: [ new Sentry.BrowserTracing({ diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/app/entry.server.tsx b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/app/entry.server.tsx index c2e0a480acab..d8e63095fa43 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/app/entry.server.tsx +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/app/entry.server.tsx @@ -19,6 +19,7 @@ installGlobals(); const ABORT_DELAY = 5_000; Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions dsn: process.env.E2E_TEST_DSN, // Performance Monitoring tracesSampleRate: 1.0, // Capture 100% of the transactions, reduce in production! diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/remix.config.js b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/remix.config.js index 92ed1ddc32eb..cb3c8c7a9fb7 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/remix.config.js +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/remix.config.js @@ -6,5 +6,4 @@ module.exports = { // serverBuildPath: 'build/index.js', // publicPath: '/build/', serverModuleFormat: 'cjs', - entry, }; diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/tests/behaviour-client.test.ts b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/tests/behaviour-client.test.ts index 3427ba3b679e..944dcb07b4bd 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/tests/behaviour-client.test.ts +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/tests/behaviour-client.test.ts @@ -47,8 +47,7 @@ test('Sends a client-side exception to Sentry', async ({ page }) => { .toBe(200); }); -// Skipping test because of flake -test.skip('Sends a pageload transaction to Sentry', async ({ page }) => { +test('Sends a pageload transaction to Sentry', async ({ page }) => { await page.goto('/'); const recordedTransactionsHandle = await page.waitForFunction(() => { @@ -107,8 +106,7 @@ test.skip('Sends a pageload transaction to Sentry', async ({ page }) => { expect(hadPageLoadTransaction).toBe(true); }); -// Skipped because of test flake -test.skip('Sends a navigation transaction to Sentry', async ({ page }) => { +test('Sends a navigation transaction to Sentry', async ({ page }) => { await page.goto('/'); // Give pageload transaction time to finish diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app/app/entry.client.tsx b/dev-packages/e2e-tests/test-applications/create-remix-app/app/entry.client.tsx index 15cb6513a917..a56d13dddadc 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app/app/entry.client.tsx +++ b/dev-packages/e2e-tests/test-applications/create-remix-app/app/entry.client.tsx @@ -10,6 +10,7 @@ import { StrictMode, startTransition, useEffect } from 'react'; import { hydrateRoot } from 'react-dom/client'; Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions dsn: window.ENV.SENTRY_DSN, integrations: [ new Sentry.BrowserTracing({ diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app/app/entry.server.tsx b/dev-packages/e2e-tests/test-applications/create-remix-app/app/entry.server.tsx index 6d137ec92d53..c2de73cdba63 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app/app/entry.server.tsx +++ b/dev-packages/e2e-tests/test-applications/create-remix-app/app/entry.server.tsx @@ -16,6 +16,7 @@ import { renderToPipeableStream } from 'react-dom/server'; const ABORT_DELAY = 5_000; Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions dsn: process.env.E2E_TEST_DSN, // Performance Monitoring tracesSampleRate: 1.0, // Capture 100% of the transactions, reduce in production! diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app/tests/behaviour-client.test.ts b/dev-packages/e2e-tests/test-applications/create-remix-app/tests/behaviour-client.test.ts index f760d9c5a629..944dcb07b4bd 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app/tests/behaviour-client.test.ts +++ b/dev-packages/e2e-tests/test-applications/create-remix-app/tests/behaviour-client.test.ts @@ -7,8 +7,7 @@ const authToken = process.env.E2E_TEST_AUTH_TOKEN; const sentryTestOrgSlug = process.env.E2E_TEST_SENTRY_ORG_SLUG; const sentryTestProject = process.env.E2E_TEST_SENTRY_TEST_PROJECT; -// skipping flaky test -test.skip('Sends a client-side exception to Sentry', async ({ page }) => { +test('Sends a client-side exception to Sentry', async ({ page }) => { await page.goto('/'); const exceptionButton = page.locator('id=exception-button'); @@ -48,8 +47,7 @@ test.skip('Sends a client-side exception to Sentry', async ({ page }) => { .toBe(200); }); -// skipping flaky test -test.skip('Sends a pageload transaction to Sentry', async ({ page }) => { +test('Sends a pageload transaction to Sentry', async ({ page }) => { await page.goto('/'); const recordedTransactionsHandle = await page.waitForFunction(() => { From 0559eabb3e0448f1c6e75bb46cdb08f923917ef9 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 28 Feb 2024 10:46:54 -0500 Subject: [PATCH 052/106] Adds profile id, replay id, and user to standalone INP spans if they exist --- packages/core/src/tracing/transaction.ts | 10 ++++++++++ .../src/browser/browserTracingIntegration.ts | 15 ++++++++++++++- .../src/browser/metrics/index.ts | 17 +++++++++++++++-- .../src/browser/web-vitals/types.ts | 11 +++++++++-- packages/types/src/transaction.ts | 6 ++++++ 5 files changed, 54 insertions(+), 5 deletions(-) diff --git a/packages/core/src/tracing/transaction.ts b/packages/core/src/tracing/transaction.ts index a399137d1301..ee2b478e35a9 100644 --- a/packages/core/src/tracing/transaction.ts +++ b/packages/core/src/tracing/transaction.ts @@ -258,6 +258,16 @@ export class Transaction extends SpanClass implements TransactionInterface { this._hub = hub; } + /** + * Get the profile id of the transaction. + */ + public getProfileId(): string | undefined { + if (this._contexts !== undefined && this._contexts['profile'] !== undefined) { + return this._contexts['profile'].profile_id as string; + } + return undefined; + } + /** * Finish the transaction & prepare the event to send to Sentry. */ diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index 24644569d071..11795a15a666 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -1,6 +1,6 @@ /* eslint-disable max-lines */ import type { IdleTransaction } from '@sentry/core'; -import { getActiveSpan } from '@sentry/core'; +import { getActiveSpan, getClient, getCurrentScope } from '@sentry/core'; import { getCurrentHub } from '@sentry/core'; import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, @@ -12,6 +12,7 @@ import { } from '@sentry/core'; import type { Client, + Integration, IntegrationFn, StartSpanOptions, Transaction, @@ -539,6 +540,15 @@ function registerInpInteractionListener( }, ): void { addPerformanceInstrumentationHandler('event', ({ entries }) => { + const client = getClient(); + // We need to get the replay, user, and activeTransaction from the current scope + // so that we can associate replay id, profile id, and a user display to the span + const replay = client?.getIntegrationByName?.('Replay') as + | (Integration & { getReplayId: () => string }) + | undefined; + // eslint-disable-next-line deprecation/deprecation + const activeTransaction = getActiveTransaction(); + const user = getCurrentScope()?.getUser(); for (const entry of entries) { if (isPerformanceEventTiming(entry)) { const duration = entry.duration; @@ -564,6 +574,9 @@ function registerInpInteractionListener( routeName, duration, parentContext, + user, + activeTransaction, + replay, }; } } diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index 5a8144e2af6d..aaf73442129e 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -214,10 +214,20 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) /** Build the INP span, create an envelope from the span, and then send the envelope */ const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime); const duration = msToSec(metric.value); - const { routeName, parentContext } = + const { routeName, parentContext, activeTransaction, user, replay } = entry.interactionId !== undefined ? interactionIdtoRouteNameMapping[entry.interactionId] - : { routeName: undefined, parentContext: undefined }; + : { + routeName: undefined, + parentContext: undefined, + activeTransaction: undefined, + user: undefined, + replay: undefined, + }; + // eslint-disable-next-line deprecation/deprecation + const userDisplay = user?.email || user?.id || user?.ip_address; + const profileId = activeTransaction?.getProfileId(); + const replayId = replay?.getReplayId(); const span = new Span({ startTimestamp: startTime, endTimestamp: startTime + duration, @@ -231,6 +241,9 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) environment: options.environment, transaction: routeName, exclusive_time: metric.value, + ...(userDisplay !== undefined && userDisplay !== '' ? { user: userDisplay } : {}), + ...(profileId !== undefined ? { profile_id: profileId } : {}), + ...(replayId !== undefined ? { replay_id: replayId } : {}), }, }); diff --git a/packages/tracing-internal/src/browser/web-vitals/types.ts b/packages/tracing-internal/src/browser/web-vitals/types.ts index 1f7d344401f6..1e994b455f9a 100644 --- a/packages/tracing-internal/src/browser/web-vitals/types.ts +++ b/packages/tracing-internal/src/browser/web-vitals/types.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import type { TransactionContext } from '@sentry/types'; +import type { Integration, Transaction, TransactionContext, User } from '@sentry/types'; import type { FirstInputPolyfillCallback } from './types/polyfills'; export * from './types/base'; @@ -165,5 +165,12 @@ declare global { } export type InteractionRouteNameMapping = { - [key: string]: { routeName: string; duration: number; parentContext: TransactionContext }; + [key: string]: { + routeName: string; + duration: number; + parentContext: TransactionContext; + user?: User; + activeTransaction?: Transaction; + replay?: Integration & { getReplayId: () => string }; + }; }; diff --git a/packages/types/src/transaction.ts b/packages/types/src/transaction.ts index fbcf8b38f02d..caae6c49027d 100644 --- a/packages/types/src/transaction.ts +++ b/packages/types/src/transaction.ts @@ -152,6 +152,12 @@ export interface Transaction extends TransactionContext, Omit; + + /** + * Get the profile id from the transaction + * @deprecated Use `toJSON()` or access the fields directly instead. + */ + getProfileId(): string | undefined; } /** From 7a019ea94799961cc6ac7282ce925a86e61f6dfd Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 28 Feb 2024 11:28:38 -0500 Subject: [PATCH 053/106] Revert "remove exclusiveTime as a field from spans" This reverts commit 2b495f10a97417ee8138cf6f00188d9807a387bd. --- packages/core/src/tracing/span.ts | 5 +++++ packages/types/src/span.ts | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/packages/core/src/tracing/span.ts b/packages/core/src/tracing/span.ts index ca2c1f06cb57..dc9ae19faffd 100644 --- a/packages/core/src/tracing/span.ts +++ b/packages/core/src/tracing/span.ts @@ -120,6 +120,7 @@ export class Span implements SpanInterface { protected _endTime?: number | undefined; /** Internal keeper of the status */ protected _status?: SpanStatusType | string | undefined; + protected _exclusiveTime?: number; private _logMessage?: string; @@ -164,6 +165,9 @@ export class Span implements SpanInterface { if (spanContext.endTimestamp) { this._endTime = spanContext.endTimestamp; } + if (spanContext.exclusiveTime) { + this._exclusiveTime = spanContext.exclusiveTime; + } } // This rule conflicts with another eslint rule :( @@ -631,6 +635,7 @@ export class Span implements SpanInterface { trace_id: this._traceId, origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined, _metrics_summary: getMetricSummaryJsonForSpan(this), + exclusive_time: this._exclusiveTime, measurements: this._attributes[SEMANTIC_ATTRIBUTE_MEASUREMENTS] as Measurements | undefined, }); } diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index 0357d7f3be30..5f60e3308959 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -181,6 +181,11 @@ export interface SpanContext { * The origin of the span, giving context about what created the span. */ origin?: SpanOrigin | undefined; + + /** + * Exclusive time in milliseconds. + */ + exclusiveTime?: number; } /** Span holding trace_id, span_id */ From 9b6d5a73220351ee9267174521fbfb0de82a7559 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 28 Feb 2024 12:45:31 -0500 Subject: [PATCH 054/106] htmlTreeAsString span name --- packages/tracing-internal/src/browser/metrics/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index 235228b139d5..c195d038af71 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -212,7 +212,7 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) startTimestamp: startTime, endTimestamp: startTime + duration, op: 'ui.interaction.click', - name: entry.target?.nodeName, + name: htmlTreeAsString(entry.target), attributes: { [SEMANTIC_ATTRIBUTE_MEASUREMENTS]: { inp: { value: metric.value, unit: 'millisecond' }, From bbdc8f032a64baa8be61cac87f5b8a9eb2986c9f Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Wed, 28 Feb 2024 17:39:12 -0500 Subject: [PATCH 055/106] pull profile id from attributes into top level because relay expects this --- packages/core/src/semanticAttributes.ts | 5 +++++ packages/core/src/tracing/span.ts | 2 ++ 2 files changed, 7 insertions(+) diff --git a/packages/core/src/semanticAttributes.ts b/packages/core/src/semanticAttributes.ts index 2cb2c59f473c..f595ef1aa39d 100644 --- a/packages/core/src/semanticAttributes.ts +++ b/packages/core/src/semanticAttributes.ts @@ -24,3 +24,8 @@ export const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin'; * Use this attribute to represent measurements of a span. */ export const SEMANTIC_ATTRIBUTE_MEASUREMENTS = 'measurements'; + +/** + * The id of the profile that this span occured in. + */ +export const SEMANTIC_ATTRIBUTE_PROFILE_ID = 'profile_id'; diff --git a/packages/core/src/tracing/span.ts b/packages/core/src/tracing/span.ts index ca2c1f06cb57..2b18f38bbb18 100644 --- a/packages/core/src/tracing/span.ts +++ b/packages/core/src/tracing/span.ts @@ -20,6 +20,7 @@ import { DEBUG_BUILD } from '../debug-build'; import { getMetricSummaryJsonForSpan } from '../metrics/metric-summary'; import { SEMANTIC_ATTRIBUTE_MEASUREMENTS, + SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, } from '../semanticAttributes'; @@ -632,6 +633,7 @@ export class Span implements SpanInterface { origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined, _metrics_summary: getMetricSummaryJsonForSpan(this), measurements: this._attributes[SEMANTIC_ATTRIBUTE_MEASUREMENTS] as Measurements | undefined, + profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] as string | undefined, }); } From 3eff09f531d805339793dee47a5d218428437ce6 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 10:55:56 -0500 Subject: [PATCH 056/106] measurements in span --- packages/core/src/semanticAttributes.ts | 5 ----- packages/core/src/tracing/span.ts | 11 +++++------ packages/core/src/tracing/transaction.ts | 4 ---- packages/types/src/span.ts | 5 +++++ 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/packages/core/src/semanticAttributes.ts b/packages/core/src/semanticAttributes.ts index 2cb2c59f473c..afd0d123090f 100644 --- a/packages/core/src/semanticAttributes.ts +++ b/packages/core/src/semanticAttributes.ts @@ -19,8 +19,3 @@ export const SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op'; * Use this attribute to represent the origin of a span. */ export const SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin'; - -/** - * Use this attribute to represent measurements of a span. - */ -export const SEMANTIC_ATTRIBUTE_MEASUREMENTS = 'measurements'; diff --git a/packages/core/src/tracing/span.ts b/packages/core/src/tracing/span.ts index dc9ae19faffd..6937f5502804 100644 --- a/packages/core/src/tracing/span.ts +++ b/packages/core/src/tracing/span.ts @@ -18,11 +18,7 @@ import { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/ut import { DEBUG_BUILD } from '../debug-build'; import { getMetricSummaryJsonForSpan } from '../metrics/metric-summary'; -import { - SEMANTIC_ATTRIBUTE_MEASUREMENTS, - SEMANTIC_ATTRIBUTE_SENTRY_OP, - SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, -} from '../semanticAttributes'; +import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes'; import { getRootSpan } from '../utils/getRootSpan'; import { TRACE_FLAG_NONE, @@ -122,6 +118,8 @@ export class Span implements SpanInterface { protected _status?: SpanStatusType | string | undefined; protected _exclusiveTime?: number; + protected _measurements: Measurements; + private _logMessage?: string; /** @@ -168,6 +166,7 @@ export class Span implements SpanInterface { if (spanContext.exclusiveTime) { this._exclusiveTime = spanContext.exclusiveTime; } + this._measurements = spanContext.measurements ? { ...spanContext.measurements } : {}; } // This rule conflicts with another eslint rule :( @@ -636,7 +635,7 @@ export class Span implements SpanInterface { origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] as SpanOrigin | undefined, _metrics_summary: getMetricSummaryJsonForSpan(this), exclusive_time: this._exclusiveTime, - measurements: this._attributes[SEMANTIC_ATTRIBUTE_MEASUREMENTS] as Measurements | undefined, + measurements: Object.keys(this._measurements).length > 0 ? this._measurements : undefined, }); } diff --git a/packages/core/src/tracing/transaction.ts b/packages/core/src/tracing/transaction.ts index 8f82c9b03d95..905aaf6c5040 100644 --- a/packages/core/src/tracing/transaction.ts +++ b/packages/core/src/tracing/transaction.ts @@ -3,7 +3,6 @@ import type { Contexts, DynamicSamplingContext, MeasurementUnit, - Measurements, SpanTimeInput, Transaction as TransactionInterface, TransactionContext, @@ -31,8 +30,6 @@ export class Transaction extends SpanClass implements TransactionInterface { protected _name: string; - private _measurements: Measurements; - private _contexts: Contexts; private _trimEnd?: boolean | undefined; @@ -53,7 +50,6 @@ export class Transaction extends SpanClass implements TransactionInterface { */ public constructor(transactionContext: TransactionContext, hub?: Hub) { super(transactionContext); - this._measurements = {}; this._contexts = {}; // eslint-disable-next-line deprecation/deprecation diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index 5f60e3308959..0ce44c3a1c07 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -186,6 +186,11 @@ export interface SpanContext { * Exclusive time in milliseconds. */ exclusiveTime?: number; + + /** + * Measurements of the Span. + */ + measurements?: Measurements; } /** Span holding trace_id, span_id */ From 1ed43e34f20caabf32f734b8823fe899627de0ab Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 11:04:54 -0500 Subject: [PATCH 057/106] update type --- packages/types/src/span.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/types/src/span.ts b/packages/types/src/span.ts index 0ce44c3a1c07..4b803b73464f 100644 --- a/packages/types/src/span.ts +++ b/packages/types/src/span.ts @@ -22,15 +22,13 @@ export type SpanAttributeValue = | boolean | Array | Array - | Array - | Measurements; + | Array; export type SpanAttributes = Partial<{ 'sentry.origin': string; 'sentry.op': string; 'sentry.source': string; 'sentry.sample_rate': number; - measurements: Measurements; }> & Record; From 7156838ab68e047ff1db0bbe6b7614e3f4099fa9 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 11:09:34 -0500 Subject: [PATCH 058/106] unchange test --- packages/core/test/lib/tracing/span.test.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/core/test/lib/tracing/span.test.ts b/packages/core/test/lib/tracing/span.test.ts index a233ebb06cc0..b3c08987d4b2 100644 --- a/packages/core/test/lib/tracing/span.test.ts +++ b/packages/core/test/lib/tracing/span.test.ts @@ -105,6 +105,9 @@ describe('span', () => { it('disallows invalid attribute types', () => { const span = new Span(); + /** @ts-expect-error this is invalid */ + span.setAttribute('str', {}); + /** @ts-expect-error this is invalid */ span.setAttribute('str', null); From e5f21abaf06a610aeace98f2ed358360cff6c9ef Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 14:06:36 -0500 Subject: [PATCH 059/106] refactor out some optional chaining --- .../src/browser/browserTracingIntegration.ts | 10 ++++++---- packages/tracing-internal/src/browser/metrics/index.ts | 6 +++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index 11795a15a666..5e57e2b0243f 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -543,12 +543,14 @@ function registerInpInteractionListener( const client = getClient(); // We need to get the replay, user, and activeTransaction from the current scope // so that we can associate replay id, profile id, and a user display to the span - const replay = client?.getIntegrationByName?.('Replay') as - | (Integration & { getReplayId: () => string }) - | undefined; + const replay = + client !== undefined && client.getIntegrationByName !== undefined + ? (client.getIntegrationByName('Replay') as Integration & { getReplayId: () => string }) + : undefined; // eslint-disable-next-line deprecation/deprecation const activeTransaction = getActiveTransaction(); - const user = getCurrentScope()?.getUser(); + const currentScope = getCurrentScope(); + const user = currentScope !== undefined ? currentScope.getUser() : undefined; for (const entry of entries) { if (isPerformanceEventTiming(entry)) { const duration = entry.duration; diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index aaf73442129e..de069d6baa52 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -224,10 +224,10 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) user: undefined, replay: undefined, }; + const userDisplay = user !== undefined ? user.email || user.id || user.ip_address : undefined; // eslint-disable-next-line deprecation/deprecation - const userDisplay = user?.email || user?.id || user?.ip_address; - const profileId = activeTransaction?.getProfileId(); - const replayId = replay?.getReplayId(); + const profileId = activeTransaction !== undefined ? activeTransaction.getProfileId() : undefined; + const replayId = replay !== undefined ? replay.getReplayId() : undefined; const span = new Span({ startTimestamp: startTime, endTimestamp: startTime + duration, From e6ea73df26bb2043ebcbd6e1d4f427bfeb17ccd0 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Thu, 29 Feb 2024 19:32:09 +0000 Subject: [PATCH 060/106] fix(profiling-node): Fix dependencies to point to current versions (#10861) --- packages/profiling-node/package.json | 8 +++--- yarn.lock | 40 ---------------------------- 2 files changed, 4 insertions(+), 44 deletions(-) diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index 2ef71ec20f3a..9fa57574420e 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -68,10 +68,10 @@ "node-abi": "^3.52.0" }, "devDependencies": { - "@sentry/core": "7.93.0", - "@sentry/node": "7.93.0", - "@sentry/types": "7.93.0", - "@sentry/utils": "7.93.0", + "@sentry/core": "7.103.0", + "@sentry/node": "7.103.0", + "@sentry/types": "7.103.0", + "@sentry/utils": "7.103.0", "@types/node": "16.18.70", "@types/node-abi": "^3.0.0", "clang-format": "^1.8.0", diff --git a/yarn.lock b/yarn.lock index 4eba7bf0fa1f..8383ea1e9de5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5580,15 +5580,6 @@ fflate "^0.4.4" mitt "^3.0.0" -"@sentry-internal/tracing@7.93.0": - version "7.93.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.93.0.tgz#8cee8b610695d828af75edd2929b64b7caf0385d" - integrity sha512-DjuhmQNywPp+8fxC9dvhGrqgsUb6wI/HQp25lS2Re7VxL1swCasvpkg8EOYP4iBniVQ86QK0uITkOIRc5tdY1w== - dependencies: - "@sentry/core" "7.93.0" - "@sentry/types" "7.93.0" - "@sentry/utils" "7.93.0" - "@sentry/bundler-plugin-core@0.6.1": version "0.6.1" resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-0.6.1.tgz#6c6a2ff3cdc98cd0ff1c30c59408cee9f067adf2" @@ -5683,37 +5674,6 @@ "@sentry/cli-win32-i686" "2.28.0" "@sentry/cli-win32-x64" "2.28.0" -"@sentry/core@7.93.0": - version "7.93.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.93.0.tgz#50a14bf305130dfef51810e4c97fcba4972a57ef" - integrity sha512-vZQSUiDn73n+yu2fEcH+Wpm4GbRmtxmnXnYCPgM6IjnXqkVm3awWAkzrheADblx3kmxrRiOlTXYHw9NTWs56fg== - dependencies: - "@sentry/types" "7.93.0" - "@sentry/utils" "7.93.0" - -"@sentry/node@7.93.0": - version "7.93.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.93.0.tgz#7786d05d1e3e984207a866b07df1bf891355892e" - integrity sha512-nUXPCZQm5Y9Ipv7iWXLNp5dbuyi1VvbJ3RtlwD7utgsNkRYB4ixtKE9w2QU8DZZAjaEF6w2X94OkYH6C932FWw== - dependencies: - "@sentry-internal/tracing" "7.93.0" - "@sentry/core" "7.93.0" - "@sentry/types" "7.93.0" - "@sentry/utils" "7.93.0" - https-proxy-agent "^5.0.0" - -"@sentry/types@7.93.0": - version "7.93.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.93.0.tgz#d76d26259b40cd0688e1d634462fbff31476c1ec" - integrity sha512-UnzUccNakhFRA/esWBWP+0v7cjNg+RilFBQC03Mv9OEMaZaS29zSbcOGtRzuFOXXLBdbr44BWADqpz3VW0XaNw== - -"@sentry/utils@7.93.0": - version "7.93.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.93.0.tgz#36225038661fe977baf01e4695ef84794d591e45" - integrity sha512-Iovj7tUnbgSkh/WrAaMrd5UuYjW7AzyzZlFDIUrwidsyIdUficjCG2OIxYzh76H6nYIx9SxewW0R54Q6XoB4uA== - dependencies: - "@sentry/types" "7.93.0" - "@sentry/vite-plugin@^0.6.1": version "0.6.1" resolved "https://registry.yarnpkg.com/@sentry/vite-plugin/-/vite-plugin-0.6.1.tgz#31eb744e8d87b1528eed8d41433647727a62e7c0" From 77f610b32aedbac0faf1c7d4ba6f5b633244d69e Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 14:33:10 -0500 Subject: [PATCH 061/106] update span creation --- packages/tracing-internal/src/browser/metrics/index.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index c195d038af71..26b86f8ef452 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -1,6 +1,6 @@ /* eslint-disable max-lines */ import type { IdleTransaction, Transaction } from '@sentry/core'; -import { SEMANTIC_ATTRIBUTE_MEASUREMENTS, Span, getActiveTransaction, getClient, setMeasurement } from '@sentry/core'; +import { Span, getActiveTransaction, getClient, setMeasurement } from '@sentry/core'; import type { Measurements, SpanContext } from '@sentry/types'; import { browserPerformanceTimeOrigin, getComponentName, htmlTreeAsString, logger, parseUrl } from '@sentry/utils'; @@ -214,13 +214,13 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) op: 'ui.interaction.click', name: htmlTreeAsString(entry.target), attributes: { - [SEMANTIC_ATTRIBUTE_MEASUREMENTS]: { - inp: { value: metric.value, unit: 'millisecond' }, - }, release, environment, transaction: routeName, - exclusive_time: metric.value, + }, + exclusiveTime: metric.value, + measurements: { + inp: { value: metric.value, unit: 'millisecond' }, }, }); const envelope = span ? createSpanEnvelope([span]) : undefined; From d943c8def648b43d119c75f61f61bf01505c937e Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 14:48:57 -0500 Subject: [PATCH 062/106] refactor optional check --- packages/tracing-internal/src/browser/metrics/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index 03f5a7a0c2ff..d51a9dfbb7c4 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -669,7 +669,7 @@ function getSampleRate(transactionContext: TransactionContext | undefined, optio }, location: WINDOW.location, }); - } else if (transactionContext?.sampled !== undefined) { + } else if (transactionContext !== undefined && transactionContext.sampled !== undefined) { sampleRate = transactionContext.sampled; } else if (typeof options.tracesSampleRate !== 'undefined') { sampleRate = options.tracesSampleRate; From 059508c2e62deac96fbf5aa0206d55950667f747 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 15:20:39 -0500 Subject: [PATCH 063/106] increase size limit by 1 kb --- .size-limit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.size-limit.js b/.size-limit.js index 51f1e0c711f7..ef140e160170 100644 --- a/.size-limit.js +++ b/.size-limit.js @@ -52,7 +52,7 @@ module.exports = [ path: 'packages/browser/build/npm/esm/index.js', import: '{ init, browserTracingIntegration }', gzip: true, - limit: '35 KB', + limit: '36 KB', }, { name: '@sentry/browser (incl. Feedback) - Webpack (gzipped)', From beed7f6b45c7f690dcc50fd76cac7d619740a267 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Thu, 29 Feb 2024 20:33:29 +0000 Subject: [PATCH 064/106] feat(profiling-node): [v7] Expose `nodeProfilingIntegration` (#10864) --- MIGRATION.md | 82 ++++++++++--------- packages/profiling-node/README.md | 4 +- packages/profiling-node/src/index.ts | 6 +- packages/profiling-node/src/integration.ts | 23 +++++- .../test/hubextensions.hub.test.ts | 2 + packages/profiling-node/test/index.test.ts | 1 + .../profiling-node/test/integration.test.ts | 9 ++ 7 files changed, 83 insertions(+), 44 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index ac8affd8c71a..20baed968b9e 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -157,46 +157,48 @@ integrations from the `Integrations.XXX` hash, is deprecated in favor of using t The following list shows how integrations should be migrated: -| Old | New | Packages | -| ---------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------- | -| `new BrowserTracing()` | `browserTracingIntegration()` | `@sentry/browser` | -| `new InboundFilters()` | `inboundFiltersIntegration()` | `@sentry/core`, `@sentry/browser`, `@sentry/node`, `@sentry/deno`, `@sentry/bun`, `@sentry/vercel-edge` | -| `new FunctionToString()` | `functionToStringIntegration()` | `@sentry/core`, `@sentry/browser`, `@sentry/node`, `@sentry/deno`, `@sentry/bun`, `@sentry/vercel-edge` | -| `new LinkedErrors()` | `linkedErrorsIntegration()` | `@sentry/core`, `@sentry/browser`, `@sentry/node`, `@sentry/deno`, `@sentry/bun`, `@sentry/vercel-edge` | -| `new ModuleMetadata()` | `moduleMetadataIntegration()` | `@sentry/core`, `@sentry/browser` | -| `new RequestData()` | `requestDataIntegration()` | `@sentry/core`, `@sentry/node`, `@sentry/deno`, `@sentry/bun`, `@sentry/vercel-edge` | -| `new Wasm() ` | `wasmIntegration()` | `@sentry/wasm` | -| `new Replay()` | `replayIntegration()` | `@sentry/browser` | -| `new ReplayCanvas()` | `replayCanvasIntegration()` | `@sentry/browser` | -| `new Feedback()` | `feedbackIntegration()` | `@sentry/browser` | -| `new CaptureConsole()` | `captureConsoleIntegration()` | `@sentry/integrations` | -| `new Debug()` | `debugIntegration()` | `@sentry/integrations` | -| `new Dedupe()` | `dedupeIntegration()` | `@sentry/browser`, `@sentry/integrations`, `@sentry/deno` | -| `new ExtraErrorData()` | `extraErrorDataIntegration()` | `@sentry/integrations` | -| `new ReportingObserver()` | `reportingObserverIntegration()` | `@sentry/integrations` | -| `new RewriteFrames()` | `rewriteFramesIntegration()` | `@sentry/integrations` | -| `new SessionTiming()` | `sessionTimingIntegration()` | `@sentry/integrations` | -| `new HttpClient()` | `httpClientIntegration()` | `@sentry/integrations` | -| `new ContextLines()` | `contextLinesIntegration()` | `@sentry/integrations`, `@sentry/node`, `@sentry/deno`, `@sentry/bun` | -| `new Breadcrumbs()` | `breadcrumbsIntegration()` | `@sentry/browser`, `@sentry/deno` | -| `new GlobalHandlers()` | `globalHandlersIntegration()` | `@sentry/browser` , `@sentry/deno` | -| `new HttpContext()` | `httpContextIntegration()` | `@sentry/browser` | -| `new TryCatch()` | `browserApiErrorsIntegration()` | `@sentry/browser`, `@sentry/deno` | -| `new VueIntegration()` | `vueIntegration()` | `@sentry/vue` | -| `new DenoContext()` | `denoContextIntegration()` | `@sentry/deno` | -| `new DenoCron()` | `denoCronIntegration()` | `@sentry/deno` | -| `new NormalizePaths()` | `normalizePathsIntegration()` | `@sentry/deno` | -| `new Console()` | `consoleIntegration()` | `@sentry/node` | -| `new Context()` | `nodeContextIntegration()` | `@sentry/node` | -| `new Modules()` | `modulesIntegration()` | `@sentry/node` | -| `new OnUncaughtException()` | `onUncaughtExceptionIntegration()` | `@sentry/node` | -| `new OnUnhandledRejection()` | `onUnhandledRejectionIntegration()` | `@sentry/node` | -| `new LocalVariables()` | `localVariablesIntegration()` | `@sentry/node` | -| `new Spotlight()` | `spotlightIntegration()` | `@sentry/node` | -| `new Anr()` | `anrIntegration()` | `@sentry/node` | -| `new Hapi()` | `hapiIntegration()` | `@sentry/node` | -| `new Undici()` | `nativeNodeFetchIntegration()` | `@sentry/node` | -| `new Http()` | `httpIntegration()` | `@sentry/node` | +| Old | New | Packages | +| ----------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `new BrowserTracing()` | `browserTracingIntegration()` | `@sentry/browser` | +| `new InboundFilters()` | `inboundFiltersIntegration()` | `@sentry/core`, `@sentry/browser`, `@sentry/node`, `@sentry/deno`, `@sentry/bun`, `@sentry/vercel-edge` | +| `new FunctionToString()` | `functionToStringIntegration()` | `@sentry/core`, `@sentry/browser`, `@sentry/node`, `@sentry/deno`, `@sentry/bun`, `@sentry/vercel-edge` | +| `new LinkedErrors()` | `linkedErrorsIntegration()` | `@sentry/core`, `@sentry/browser`, `@sentry/node`, `@sentry/deno`, `@sentry/bun`, `@sentry/vercel-edge` | +| `new ModuleMetadata()` | `moduleMetadataIntegration()` | `@sentry/core`, `@sentry/browser` | +| `new RequestData()` | `requestDataIntegration()` | `@sentry/core`, `@sentry/node`, `@sentry/deno`, `@sentry/bun`, `@sentry/vercel-edge` | +| `new Wasm() ` | `wasmIntegration()` | `@sentry/wasm` | +| `new Replay()` | `replayIntegration()` | `@sentry/browser` | +| `new ReplayCanvas()` | `replayCanvasIntegration()` | `@sentry/browser` | +| `new Feedback()` | `feedbackIntegration()` | `@sentry/browser` | +| `new CaptureConsole()` | `captureConsoleIntegration()` | `@sentry/integrations` | +| `new Debug()` | `debugIntegration()` | `@sentry/integrations` | +| `new Dedupe()` | `dedupeIntegration()` | `@sentry/browser`, `@sentry/integrations`, `@sentry/deno` | +| `new ExtraErrorData()` | `extraErrorDataIntegration()` | `@sentry/integrations` | +| `new ReportingObserver()` | `reportingObserverIntegration()` | `@sentry/integrations` | +| `new RewriteFrames()` | `rewriteFramesIntegration()` | `@sentry/integrations` | +| `new SessionTiming()` | `sessionTimingIntegration()` | `@sentry/integrations` | +| `new HttpClient()` | `httpClientIntegration()` | `@sentry/integrations` | +| `new ContextLines()` | `contextLinesIntegration()` | `@sentry/integrations`, `@sentry/node`, `@sentry/deno`, `@sentry/bun` | +| `new Breadcrumbs()` | `breadcrumbsIntegration()` | `@sentry/browser`, `@sentry/deno` | +| `new GlobalHandlers()` | `globalHandlersIntegration()` | `@sentry/browser` , `@sentry/deno` | +| `new HttpContext()` | `httpContextIntegration()` | `@sentry/browser` | +| `new TryCatch()` | `browserApiErrorsIntegration()` | `@sentry/browser`, `@sentry/deno` | +| `new VueIntegration()` | `vueIntegration()` | `@sentry/vue` | +| `new DenoContext()` | `denoContextIntegration()` | `@sentry/deno` | +| `new DenoCron()` | `denoCronIntegration()` | `@sentry/deno` | +| `new NormalizePaths()` | `normalizePathsIntegration()` | `@sentry/deno` | +| `new Console()` | `consoleIntegration()` | `@sentry/node` | +| `new Context()` | `nodeContextIntegration()` | `@sentry/node` | +| `new Modules()` | `modulesIntegration()` | `@sentry/node` | +| `new OnUncaughtException()` | `onUncaughtExceptionIntegration()` | `@sentry/node` | +| `new OnUnhandledRejection()` | `onUnhandledRejectionIntegration()` | `@sentry/node` | +| `new LocalVariables()` | `localVariablesIntegration()` | `@sentry/node` | +| `new Spotlight()` | `spotlightIntegration()` | `@sentry/node` | +| `new Anr()` | `anrIntegration()` | `@sentry/node` | +| `new Hapi()` | `hapiIntegration()` | `@sentry/node` | +| `new Undici()` | `nativeNodeFetchIntegration()` | `@sentry/node` | +| `new Http()` | `httpIntegration()` | `@sentry/node` | +| `new ProfilingIntegration()` | `nodeProfilingIntegration()` | `@sentry/profiling-node` | +| `new BrowserProfilingIntegration()` | `browserProfilingIntegration()` | `@sentry/browser` | ## Deprecate `hub.bindClient()` and `makeMain()` diff --git a/packages/profiling-node/README.md b/packages/profiling-node/README.md index 82d7ea97b4c6..734f080ba402 100644 --- a/packages/profiling-node/README.md +++ b/packages/profiling-node/README.md @@ -27,14 +27,14 @@ npm install --save @sentry/node @sentry/profiling-node ```javascript import * as Sentry from '@sentry/node'; -import { ProfilingIntegration } from '@sentry/profiling-node'; +import { nodeProfilingIntegration } from '@sentry/profiling-node'; Sentry.init({ dsn: 'https://7fa19397baaf433f919fbe02228d5470@o1137848.ingest.sentry.io/6625302', debug: true, tracesSampleRate: 1, profilesSampleRate: 1, // Set profiling sampling rate. - integrations: [new ProfilingIntegration()], + integrations: [nodeProfilingIntegration()], }); ``` diff --git a/packages/profiling-node/src/index.ts b/packages/profiling-node/src/index.ts index fee7c526929d..086fbb86de58 100644 --- a/packages/profiling-node/src/index.ts +++ b/packages/profiling-node/src/index.ts @@ -1 +1,5 @@ -export { ProfilingIntegration } from './integration'; +export { + // eslint-disable-next-line deprecation/deprecation + ProfilingIntegration, + nodeProfilingIntegration, +} from './integration'; diff --git a/packages/profiling-node/src/integration.ts b/packages/profiling-node/src/integration.ts index 28bf24f0d784..e17177a279a6 100644 --- a/packages/profiling-node/src/integration.ts +++ b/packages/profiling-node/src/integration.ts @@ -1,5 +1,13 @@ import type { NodeClient } from '@sentry/node'; -import type { Event, EventProcessor, Hub, Integration, Transaction } from '@sentry/types'; +import type { + Event, + EventProcessor, + Hub, + Integration, + IntegrationFn, + IntegrationFnResult, + Transaction, +} from '@sentry/types'; import { logger } from '@sentry/utils'; @@ -39,6 +47,8 @@ function addToProfileQueue(profile: RawThreadCpuProfile): void { * and inspect each event to see if it is a transaction event and if that transaction event * contains a profile on it's metadata. If that is the case, we create a profiling event envelope * and delete the profile from the transaction metadata. + * + * @deprecated Use `nodeProfilingIntegration` instead. */ export class ProfilingIntegration implements Integration { /** @@ -243,3 +253,14 @@ export class ProfilingIntegration implements Integration { return maybeRemoveProfileFromSdkMetadata(event); } } + +/** + * We need this integration in order to send data to Sentry. We hook into the event processor + * and inspect each event to see if it is a transaction event and if that transaction event + * contains a profile on it's metadata. If that is the case, we create a profiling event envelope + * and delete the profile from the transaction metadata. + */ +export const nodeProfilingIntegration = (() => { + // eslint-disable-next-line deprecation/deprecation + return new ProfilingIntegration() as unknown as IntegrationFnResult; +}) satisfies IntegrationFn; diff --git a/packages/profiling-node/test/hubextensions.hub.test.ts b/packages/profiling-node/test/hubextensions.hub.test.ts index 954f3300ffca..6c5e5f5e12f3 100644 --- a/packages/profiling-node/test/hubextensions.hub.test.ts +++ b/packages/profiling-node/test/hubextensions.hub.test.ts @@ -7,6 +7,7 @@ import { CpuProfilerBindings } from '../src/cpu_profiler'; import { ProfilingIntegration } from '../src/index'; function makeClientWithoutHooks(): [Sentry.NodeClient, Transport] { + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const transport = Sentry.makeNodeTransport({ url: 'https://7fa19397baaf433f919fbe02228d5470@o1137848.ingest.sentry.io/6625302', @@ -41,6 +42,7 @@ function makeClientWithoutHooks(): [Sentry.NodeClient, Transport] { } function makeClientWithHooks(): [Sentry.NodeClient, Transport] { + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const client = new Sentry.NodeClient({ stackParser: Sentry.defaultStackParser, diff --git a/packages/profiling-node/test/index.test.ts b/packages/profiling-node/test/index.test.ts index ab6aaebfb86a..ceccdbf199ba 100644 --- a/packages/profiling-node/test/index.test.ts +++ b/packages/profiling-node/test/index.test.ts @@ -23,6 +23,7 @@ function makeStaticTransport(): MockTransport { } function makeClientWithoutHooks(): [Sentry.NodeClient, MockTransport] { + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const transport = makeStaticTransport(); const client = new Sentry.NodeClient({ diff --git a/packages/profiling-node/test/integration.test.ts b/packages/profiling-node/test/integration.test.ts index 8f336600fa84..7efd1cd03878 100644 --- a/packages/profiling-node/test/integration.test.ts +++ b/packages/profiling-node/test/integration.test.ts @@ -43,10 +43,12 @@ describe('ProfilingIntegration', () => { jest.clearAllMocks(); }); it('has a name', () => { + // eslint-disable-next-line deprecation/deprecation expect(new ProfilingIntegration().name).toBe('ProfilingIntegration'); }); it('stores a reference to getCurrentHub', () => { + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const getCurrentHub = jest.fn().mockImplementation(() => { @@ -66,6 +68,7 @@ describe('ProfilingIntegration', () => { send: jest.fn().mockImplementation(() => Promise.resolve()), flush: jest.fn().mockImplementation(() => Promise.resolve()), }; + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const getCurrentHub = jest.fn((): Hub => { @@ -100,6 +103,7 @@ describe('ProfilingIntegration', () => { it('when Hub.getClient returns undefined', async () => { const logSpy = jest.spyOn(logger, 'log'); + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const getCurrentHub = jest.fn((): Hub => { @@ -115,6 +119,7 @@ describe('ProfilingIntegration', () => { }); it('when getDsn returns undefined', async () => { const logSpy = jest.spyOn(logger, 'log'); + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const getCurrentHub = jest.fn((): Hub => { @@ -136,6 +141,7 @@ describe('ProfilingIntegration', () => { }); it('when getTransport returns undefined', async () => { const logSpy = jest.spyOn(logger, 'log'); + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const getCurrentHub = jest.fn((): Hub => { @@ -165,6 +171,7 @@ describe('ProfilingIntegration', () => { send: jest.fn().mockImplementation(() => Promise.resolve()), flush: jest.fn().mockImplementation(() => Promise.resolve()), }; + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const getCurrentHub = jest.fn((): Hub => { @@ -198,6 +205,7 @@ describe('ProfilingIntegration', () => { send: jest.fn().mockImplementation(() => Promise.resolve()), flush: jest.fn().mockImplementation(() => Promise.resolve()), }; + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const emitter = new EventEmitter(); @@ -233,6 +241,7 @@ describe('ProfilingIntegration', () => { send: jest.fn().mockImplementation(() => Promise.resolve()), flush: jest.fn().mockImplementation(() => Promise.resolve()), }; + // eslint-disable-next-line deprecation/deprecation const integration = new ProfilingIntegration(); const emitter = new EventEmitter(); From 65bb1acff2ebdf83ae766ad2c691bd1042176b62 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 15:39:52 -0500 Subject: [PATCH 065/106] todo comment and update interactionIdtoRouteNameMapping replay to replayid --- packages/browser/src/profiling/utils.ts | 3 +++ .../src/browser/browserTracingIntegration.ts | 3 ++- packages/tracing-internal/src/browser/metrics/index.ts | 5 ++--- packages/tracing-internal/src/browser/web-vitals/types.ts | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/browser/src/profiling/utils.ts b/packages/browser/src/profiling/utils.ts index 9114884384b7..6ebec8511214 100644 --- a/packages/browser/src/profiling/utils.ts +++ b/packages/browser/src/profiling/utils.ts @@ -583,6 +583,9 @@ export function createProfilingEvent( return createProfilePayload(profile_id, start_timestamp, profile, event); } +// TODO (v8): We need to obtain profile ids in @sentry-internal/tracing, +// but we don't have access to this map because importing this map would +// cause a circular dependancy. We need to resolve this in v8. const PROFILE_MAP: Map = new Map(); /** * diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index 5e57e2b0243f..47bad615586d 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -547,6 +547,7 @@ function registerInpInteractionListener( client !== undefined && client.getIntegrationByName !== undefined ? (client.getIntegrationByName('Replay') as Integration & { getReplayId: () => string }) : undefined; + const replayId = replay !== undefined ? replay.getReplayId() : undefined; // eslint-disable-next-line deprecation/deprecation const activeTransaction = getActiveTransaction(); const currentScope = getCurrentScope(); @@ -578,7 +579,7 @@ function registerInpInteractionListener( parentContext, user, activeTransaction, - replay, + replayId, }; } } diff --git a/packages/tracing-internal/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts index 617405606726..b9c08f7dffaf 100644 --- a/packages/tracing-internal/src/browser/metrics/index.ts +++ b/packages/tracing-internal/src/browser/metrics/index.ts @@ -213,7 +213,7 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) /** Build the INP span, create an envelope from the span, and then send the envelope */ const startTime = msToSec((browserPerformanceTimeOrigin as number) + entry.startTime); const duration = msToSec(metric.value); - const { routeName, parentContext, activeTransaction, user, replay } = + const { routeName, parentContext, activeTransaction, user, replayId } = entry.interactionId !== undefined ? interactionIdtoRouteNameMapping[entry.interactionId] : { @@ -221,12 +221,11 @@ function _trackINP(interactionIdtoRouteNameMapping: InteractionRouteNameMapping) parentContext: undefined, activeTransaction: undefined, user: undefined, - replay: undefined, + replayId: undefined, }; const userDisplay = user !== undefined ? user.email || user.id || user.ip_address : undefined; // eslint-disable-next-line deprecation/deprecation const profileId = activeTransaction !== undefined ? activeTransaction.getProfileId() : undefined; - const replayId = replay !== undefined ? replay.getReplayId() : undefined; const span = new Span({ startTimestamp: startTime, endTimestamp: startTime + duration, diff --git a/packages/tracing-internal/src/browser/web-vitals/types.ts b/packages/tracing-internal/src/browser/web-vitals/types.ts index 1e994b455f9a..e82296157103 100644 --- a/packages/tracing-internal/src/browser/web-vitals/types.ts +++ b/packages/tracing-internal/src/browser/web-vitals/types.ts @@ -171,6 +171,6 @@ export type InteractionRouteNameMapping = { parentContext: TransactionContext; user?: User; activeTransaction?: Transaction; - replay?: Integration & { getReplayId: () => string }; + replayId?: string; }; }; From 9782eafae36355c60c949a1a99c6af2005c0beb0 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 15:45:17 -0500 Subject: [PATCH 066/106] comment --- .../tracing-internal/src/browser/browserTracingIntegration.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index 068e545d5996..a6bf345ed8c4 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -522,6 +522,7 @@ function isPerformanceEventTiming(entry: PerformanceEntry): entry is Performance return 'duration' in entry; } +/** We store up to 10 interaction candidates max to cap memory usage. This is the same cap as getINP from web-vitals */ const MAX_INTERACTIONS = 10; /** Creates a listener on interaction entries, and maps interactionIds to the origin path of the interaction */ From ac749fbb1e1489f8b41ab3fb93c1e28b6c9757e4 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 15:49:03 -0500 Subject: [PATCH 067/106] fix import --- packages/tracing-internal/src/browser/web-vitals/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tracing-internal/src/browser/web-vitals/types.ts b/packages/tracing-internal/src/browser/web-vitals/types.ts index e82296157103..adc95084bda9 100644 --- a/packages/tracing-internal/src/browser/web-vitals/types.ts +++ b/packages/tracing-internal/src/browser/web-vitals/types.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import type { Integration, Transaction, TransactionContext, User } from '@sentry/types'; +import type { Transaction, TransactionContext, User } from '@sentry/types'; import type { FirstInputPolyfillCallback } from './types/polyfills'; export * from './types/base'; From a3f235fe068c6cc2c0c302ccc8f279acba1c31bf Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 16:11:58 -0500 Subject: [PATCH 068/106] move enableInp off experiment --- .../src/browser/browserTracingIntegration.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/tracing-internal/src/browser/browserTracingIntegration.ts b/packages/tracing-internal/src/browser/browserTracingIntegration.ts index 19a80a373984..01dda5bcdcfc 100644 --- a/packages/tracing-internal/src/browser/browserTracingIntegration.ts +++ b/packages/tracing-internal/src/browser/browserTracingIntegration.ts @@ -107,6 +107,13 @@ export interface BrowserTracingOptions extends RequestInstrumentationOptions { */ enableLongTask: boolean; + /** + * If true, Sentry will capture INP web vitals as standalone spans . + * + * Default: false + */ + enableInp: boolean; + /** * _metricOptions allows the user to send options to change how metrics are collected. * @@ -131,7 +138,6 @@ export interface BrowserTracingOptions extends RequestInstrumentationOptions { */ _experiments: Partial<{ enableInteractions: boolean; - enableInp: boolean; }>; /** @@ -147,6 +153,7 @@ const DEFAULT_BROWSER_TRACING_OPTIONS: BrowserTracingOptions = { instrumentPageLoad: true, markBackgroundSpan: true, enableLongTask: true, + enableInp: false, _experiments: {}, ...defaultRequestInstrumentationOptions, }; @@ -188,7 +195,7 @@ export const browserTracingIntegration = ((_options: Partial Date: Thu, 29 Feb 2024 16:26:00 -0500 Subject: [PATCH 069/106] performanceeventtiming interface --- packages/tracing-internal/src/browser/instrument.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/tracing-internal/src/browser/instrument.ts b/packages/tracing-internal/src/browser/instrument.ts index 085db9ca3a5d..79b03258de1c 100644 --- a/packages/tracing-internal/src/browser/instrument.ts +++ b/packages/tracing-internal/src/browser/instrument.ts @@ -20,6 +20,13 @@ interface PerformanceEntry { readonly startTime: number; toJSON(): Record; } +interface PerformanceEventTiming extends PerformanceEntry { + processingStart: DOMHighResTimeStamp; + processingEnd: DOMHighResTimeStamp; + duration: DOMHighResTimeStamp; + cancelable?: boolean; + target?: Element; +} interface Metric { /** From 226c5436660538ce307e282afb9ca9b04098d56f Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 16:30:09 -0500 Subject: [PATCH 070/106] interactionId --- packages/tracing-internal/src/browser/instrument.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/tracing-internal/src/browser/instrument.ts b/packages/tracing-internal/src/browser/instrument.ts index 79b03258de1c..a6a1f2c12298 100644 --- a/packages/tracing-internal/src/browser/instrument.ts +++ b/packages/tracing-internal/src/browser/instrument.ts @@ -26,6 +26,7 @@ interface PerformanceEventTiming extends PerformanceEntry { duration: DOMHighResTimeStamp; cancelable?: boolean; target?: Element; + interactionId?: number; } interface Metric { From fc676fc82afcd213c8004ad8a303836aba8022f9 Mon Sep 17 00:00:00 2001 From: Edward Gou Date: Thu, 29 Feb 2024 16:43:43 -0500 Subject: [PATCH 071/106] use more primitive types --- packages/tracing-internal/src/browser/instrument.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/tracing-internal/src/browser/instrument.ts b/packages/tracing-internal/src/browser/instrument.ts index a6a1f2c12298..10c96a0c5aa3 100644 --- a/packages/tracing-internal/src/browser/instrument.ts +++ b/packages/tracing-internal/src/browser/instrument.ts @@ -21,11 +21,11 @@ interface PerformanceEntry { toJSON(): Record; } interface PerformanceEventTiming extends PerformanceEntry { - processingStart: DOMHighResTimeStamp; - processingEnd: DOMHighResTimeStamp; - duration: DOMHighResTimeStamp; + processingStart: number; + processingEnd: number; + duration: number; cancelable?: boolean; - target?: Element; + target?: unknown | null; interactionId?: number; } From 763eb1f19151ae4029adb7fc53f0cdeadb8d67a4 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 29 Feb 2024 17:07:11 -0500 Subject: [PATCH 072/106] fix(processing): [v7] Only mark aggregate errors as exception groups (#10866) Co-authored-by: Katie Byers --- packages/utils/src/aggregate-errors.ts | 3 +- packages/utils/test/aggregate-errors.test.ts | 51 ++++++++++++++------ 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/packages/utils/src/aggregate-errors.ts b/packages/utils/src/aggregate-errors.ts index 4547203b4fd2..864956ad4716 100644 --- a/packages/utils/src/aggregate-errors.ts +++ b/packages/utils/src/aggregate-errors.ts @@ -57,6 +57,7 @@ function aggregateExceptionsFromError( let newExceptions = [...prevExceptions]; + // Recursively call this function in order to walk down a chain of errors if (isInstanceOf(error[key], Error)) { applyExceptionGroupFieldsForParentException(exception, exceptionId); const newException = exceptionFromErrorImplementation(parser, error[key]); @@ -106,7 +107,7 @@ function applyExceptionGroupFieldsForParentException(exception: Exception, excep exception.mechanism = { ...exception.mechanism, - is_exception_group: true, + ...(exception.type === 'AggregateError' && { is_exception_group: true }), exception_id: exceptionId, }; } diff --git a/packages/utils/test/aggregate-errors.test.ts b/packages/utils/test/aggregate-errors.test.ts index 66b0f3fcfdb1..8d5fb3be6ded 100644 --- a/packages/utils/test/aggregate-errors.test.ts +++ b/packages/utils/test/aggregate-errors.test.ts @@ -4,8 +4,17 @@ import { applyAggregateErrorsToEvent, createStackParser } from '../src/index'; const stackParser = createStackParser([0, line => ({ filename: line })]); const exceptionFromError = (_stackParser: StackParser, ex: Error): Exception => { - return { value: ex.message, mechanism: { type: 'instrument', handled: true } }; + return { value: ex.message, type: ex.name, mechanism: { type: 'instrument', handled: true } }; }; +class FakeAggregateError extends Error { + public errors: Error[]; + + constructor(errors: Error[], message: string) { + super(message); + this.errors = errors; + this.name = 'AggregateError'; + } +} describe('applyAggregateErrorsToEvent()', () => { test('should not do anything if event does not contain an exception', () => { @@ -57,6 +66,7 @@ describe('applyAggregateErrorsToEvent()', () => { exception: { values: [ { + type: 'Error', value: 'Nested Error 2', mechanism: { exception_id: 2, @@ -67,22 +77,22 @@ describe('applyAggregateErrorsToEvent()', () => { }, }, { + type: 'Error', value: 'Nested Error 1', mechanism: { exception_id: 1, handled: true, parent_id: 0, - is_exception_group: true, source: 'cause', type: 'chained', }, }, { + type: 'Error', value: 'Root Error', mechanism: { exception_id: 0, handled: true, - is_exception_group: true, type: 'instrument', }, }, @@ -123,19 +133,21 @@ describe('applyAggregateErrorsToEvent()', () => { // Last exception in list should be the root exception expect(event.exception?.values?.[event.exception?.values.length - 1]).toStrictEqual({ + type: 'Error', value: 'Root Error', mechanism: { exception_id: 0, handled: true, - is_exception_group: true, type: 'instrument', }, }); }); test('should keep the original mechanism type for the root exception', () => { - const fakeAggregateError: ExtendedError = new Error('Root Error'); - fakeAggregateError.errors = [new Error('Nested Error 1'), new Error('Nested Error 2')]; + const fakeAggregateError = new FakeAggregateError( + [new Error('Nested Error 1'), new Error('Nested Error 2')], + 'Root Error', + ); const event: Event = { exception: { values: [exceptionFromError(stackParser, fakeAggregateError)] } }; const eventHint: EventHint = { originalException: fakeAggregateError }; @@ -147,10 +159,12 @@ describe('applyAggregateErrorsToEvent()', () => { test('should recursively walk mixed errors (Aggregate errors and based on `key`)', () => { const chainedError: ExtendedError = new Error('Nested Error 3'); chainedError.cause = new Error('Nested Error 4'); - const fakeAggregateError2: ExtendedError = new Error('AggregateError2'); - fakeAggregateError2.errors = [new Error('Nested Error 2'), chainedError]; - const fakeAggregateError1: ExtendedError = new Error('AggregateError1'); - fakeAggregateError1.errors = [new Error('Nested Error 1'), fakeAggregateError2]; + + const fakeAggregateError2 = new FakeAggregateError([new Error('Nested Error 2'), chainedError], 'AggregateError2'); + const fakeAggregateError1 = new FakeAggregateError( + [new Error('Nested Error 1'), fakeAggregateError2], + 'AggregateError1', + ); const event: Event = { exception: { values: [exceptionFromError(stackParser, fakeAggregateError1)] } }; const eventHint: EventHint = { originalException: fakeAggregateError1 }; @@ -167,17 +181,18 @@ describe('applyAggregateErrorsToEvent()', () => { source: 'cause', type: 'chained', }, + type: 'Error', value: 'Nested Error 4', }, { mechanism: { exception_id: 4, handled: true, - is_exception_group: true, parent_id: 2, source: 'errors[1]', type: 'chained', }, + type: 'Error', value: 'Nested Error 3', }, { @@ -188,6 +203,7 @@ describe('applyAggregateErrorsToEvent()', () => { source: 'errors[0]', type: 'chained', }, + type: 'Error', value: 'Nested Error 2', }, { @@ -199,6 +215,7 @@ describe('applyAggregateErrorsToEvent()', () => { source: 'errors[1]', type: 'chained', }, + type: 'AggregateError', value: 'AggregateError2', }, { @@ -209,6 +226,7 @@ describe('applyAggregateErrorsToEvent()', () => { source: 'errors[0]', type: 'chained', }, + type: 'Error', value: 'Nested Error 1', }, { @@ -218,6 +236,7 @@ describe('applyAggregateErrorsToEvent()', () => { is_exception_group: true, type: 'instrument', }, + type: 'AggregateError', value: 'AggregateError1', }, ], @@ -239,6 +258,7 @@ describe('applyAggregateErrorsToEvent()', () => { exception: { values: [ { + type: 'Error', value: 'Nested Error 2', mechanism: { exception_id: 2, @@ -249,22 +269,22 @@ describe('applyAggregateErrorsToEvent()', () => { }, }, { + type: 'Error', value: 'Nested Error 1', mechanism: { exception_id: 1, handled: true, parent_id: 0, - is_exception_group: true, source: 'cause', type: 'chained', }, }, { + type: 'Error', value: 'Root Error', mechanism: { exception_id: 0, handled: true, - is_exception_group: true, type: 'instrument', }, }, @@ -287,6 +307,7 @@ describe('applyAggregateErrorsToEvent()', () => { exception: { values: [ { + type: 'Error', value: 'Nested Error 2 ...', mechanism: { exception_id: 2, @@ -297,22 +318,22 @@ describe('applyAggregateErrorsToEvent()', () => { }, }, { + type: 'Error', value: 'Nested Error 1 ...', mechanism: { exception_id: 1, handled: true, parent_id: 0, - is_exception_group: true, source: 'cause', type: 'chained', }, }, { + type: 'Error', value: 'Root Error with...', mechanism: { exception_id: 0, handled: true, - is_exception_group: true, type: 'instrument', }, }, From c9e8fa9bee526c3c6cbd3fda5cfef2dc90c3e044 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 29 Feb 2024 17:08:32 -0500 Subject: [PATCH 073/106] meta: CHANGELOG for 7.104.0 --- CHANGELOG.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 842c512fdb02..e8bde67769dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,32 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 7.104.0 + +### Important Changes + +- **feat(performance): create Interaction standalone spans on inp events (#10709)** + +This release adds support for the INP web vital. This is currently only supported for Saas Sentry, and product support is released with +the upcoming `24.3.0` release of self-hosted. + +To opt-in to this feature, you can use the `enableInp` option in the `browserTracingIntegration`: + +```js +Sentry.init({ + integrations: [ + Sentry.browserTracingIntegration({ + enableInp: true, + }); + ] +}) +``` + +### Other Changes + +- feat(profiling-node): Expose `nodeProfilingIntegration` (#10864) +- fix(profiling-node): Fix dependencies to point to current versions (#10861) + ## 7.103.0 ### Important Changes From 3770187c0b534c78bc7371e17b168d7dc1b0ad46 Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Thu, 29 Feb 2024 12:43:11 -0330 Subject: [PATCH 074/106] fix(replay): Add `errorHandler` for replayCanvas integration (#10796) `errorHandler` for `CanvasManager` was added in the latest rrweb, but was not configured in our integration. --- packages/replay-canvas/src/canvas.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/replay-canvas/src/canvas.ts b/packages/replay-canvas/src/canvas.ts index 04f91af7d578..b2b7b52a792a 100644 --- a/packages/replay-canvas/src/canvas.ts +++ b/packages/replay-canvas/src/canvas.ts @@ -75,7 +75,20 @@ export const _replayCanvasIntegration = ((options: Partial enableManualSnapshot, recordCanvas: true, getCanvasManager: (options: CanvasManagerOptions) => { - const manager = new CanvasManager({ ...options, enableManualSnapshot }); + const manager = new CanvasManager({ + ...options, + enableManualSnapshot, + errorHandler: (err: unknown) => { + try { + if (typeof err === 'object') { + (err as Error & { __rrweb__?: boolean }).__rrweb__ = true; + } + } catch (error) { + // ignore errors here + // this can happen if the error is frozen or does not allow mutation for other reasons + } + }, + }); canvasManagerResolve(manager); return manager; }, From 17744cd078e8793f215837a5df574ea74c83a1fa Mon Sep 17 00:00:00 2001 From: Billy Vong Date: Thu, 29 Feb 2024 15:21:09 -0330 Subject: [PATCH 075/106] feat(feedback): Flush replays when feedback form opens (#10567) Flush replay when the feedback form is first opened instead of at submit time We are making this change because we have noticed a lot of feedback replays only consist of the user submitting the feedback and not what they did prior to submitting feedback. This may result in false positives if users open but do not submit feedback, but this should make replays from feedback more useful. --- CHANGELOG.md | 2 + .../{ => hasSampling}/init.js | 0 .../hasSampling/test.ts | 107 ++++++++++++++++++ packages/feedback/src/integration.ts | 10 +- packages/feedback/src/widget/createWidget.ts | 21 +++- .../replay/src/util/addGlobalListeners.ts | 2 - 6 files changed, 134 insertions(+), 8 deletions(-) rename dev-packages/browser-integration-tests/suites/feedback/captureFeedbackAndReplay/{ => hasSampling}/init.js (100%) create mode 100644 dev-packages/browser-integration-tests/suites/feedback/captureFeedbackAndReplay/hasSampling/test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index e8bde67769dc..7f9a8ddb9db5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,8 +27,10 @@ Sentry.init({ ### Other Changes +- feat(feedback): Flush replays when feedback form opens (#10567) - feat(profiling-node): Expose `nodeProfilingIntegration` (#10864) - fix(profiling-node): Fix dependencies to point to current versions (#10861) +- fix(replay): Add `errorHandler` for replayCanvas integration (#10796) ## 7.103.0 diff --git a/dev-packages/browser-integration-tests/suites/feedback/captureFeedbackAndReplay/init.js b/dev-packages/browser-integration-tests/suites/feedback/captureFeedbackAndReplay/hasSampling/init.js similarity index 100% rename from dev-packages/browser-integration-tests/suites/feedback/captureFeedbackAndReplay/init.js rename to dev-packages/browser-integration-tests/suites/feedback/captureFeedbackAndReplay/hasSampling/init.js diff --git a/dev-packages/browser-integration-tests/suites/feedback/captureFeedbackAndReplay/hasSampling/test.ts b/dev-packages/browser-integration-tests/suites/feedback/captureFeedbackAndReplay/hasSampling/test.ts new file mode 100644 index 000000000000..6868caf99545 --- /dev/null +++ b/dev-packages/browser-integration-tests/suites/feedback/captureFeedbackAndReplay/hasSampling/test.ts @@ -0,0 +1,107 @@ +import { expect } from '@playwright/test'; + +import { sentryTest } from '../../../../utils/fixtures'; +import { envelopeRequestParser, getEnvelopeType } from '../../../../utils/helpers'; +import { getCustomRecordingEvents, getReplayEvent, waitForReplayRequest } from '../../../../utils/replayHelpers'; + +sentryTest( + 'should capture feedback (@sentry-internal/feedback import)', + async ({ forceFlushReplay, getLocalTestPath, page }) => { + if (process.env.PW_BUNDLE) { + sentryTest.skip(); + } + + const reqPromise0 = waitForReplayRequest(page, 0); + const reqPromise1 = waitForReplayRequest(page, 1); + const reqPromise2 = waitForReplayRequest(page, 2); + const feedbackRequestPromise = page.waitForResponse(res => { + const req = res.request(); + + const postData = req.postData(); + if (!postData) { + return false; + } + + try { + return getEnvelopeType(req) === 'feedback'; + } catch (err) { + return false; + } + }); + + await page.route('https://dsn.ingest.sentry.io/**/*', route => { + return route.fulfill({ + status: 200, + contentType: 'application/json', + body: JSON.stringify({ id: 'test-id' }), + }); + }); + + const url = await getLocalTestPath({ testDir: __dirname }); + + const [, , replayReq0] = await Promise.all([page.goto(url), page.getByText('Report a Bug').click(), reqPromise0]); + + // Inputs are slow, these need to be serial + await page.locator('[name="name"]').fill('Jane Doe'); + await page.locator('[name="email"]').fill('janedoe@example.org'); + await page.locator('[name="message"]').fill('my example feedback'); + + // Force flush here, as inputs are slow and can cause click event to be in unpredictable segments + await Promise.all([forceFlushReplay(), reqPromise1]); + + const [, feedbackResp, replayReq2] = await Promise.all([ + page.getByLabel('Send Bug Report').click(), + feedbackRequestPromise, + reqPromise2, + ]); + + const feedbackEvent = envelopeRequestParser(feedbackResp.request()); + const replayEvent = getReplayEvent(replayReq0); + // Feedback breadcrumb is on second segment because we flush when "Report a Bug" is clicked + // And then the breadcrumb is sent when feedback form is submitted + const { breadcrumbs } = getCustomRecordingEvents(replayReq2); + + expect(breadcrumbs).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + category: 'sentry.feedback', + data: { feedbackId: expect.any(String) }, + timestamp: expect.any(Number), + type: 'default', + }), + ]), + ); + + expect(feedbackEvent).toEqual({ + type: 'feedback', + breadcrumbs: expect.any(Array), + contexts: { + feedback: { + contact_email: 'janedoe@example.org', + message: 'my example feedback', + name: 'Jane Doe', + replay_id: replayEvent.event_id, + source: 'widget', + url: expect.stringContaining('/dist/index.html'), + }, + }, + level: 'info', + timestamp: expect.any(Number), + event_id: expect.stringMatching(/\w{32}/), + environment: 'production', + sdk: { + integrations: expect.arrayContaining(['Feedback']), + version: expect.any(String), + name: 'sentry.javascript.browser', + packages: expect.anything(), + }, + request: { + url: expect.stringContaining('/dist/index.html'), + headers: { + 'User-Agent': expect.stringContaining(''), + }, + }, + platform: 'javascript', + }); + }, +); diff --git a/packages/feedback/src/integration.ts b/packages/feedback/src/integration.ts index 501f844abeaa..b70bf008d24d 100644 --- a/packages/feedback/src/integration.ts +++ b/packages/feedback/src/integration.ts @@ -79,17 +79,17 @@ export class Feedback implements Integration { private _hasInsertedActorStyles: boolean; public constructor({ + autoInject = true, id = 'sentry-feedback', + isEmailRequired = false, + isNameRequired = false, showBranding = true, - autoInject = true, showEmail = true, showName = true, useSentryUser = { email: 'email', name: 'username', }, - isEmailRequired = false, - isNameRequired = false, themeDark, themeLight, @@ -123,9 +123,9 @@ export class Feedback implements Integration { this._hasInsertedActorStyles = false; this.options = { - id, - showBranding, autoInject, + showBranding, + id, isEmailRequired, isNameRequired, showEmail, diff --git a/packages/feedback/src/widget/createWidget.ts b/packages/feedback/src/widget/createWidget.ts index b5e414803121..05b52ca64725 100644 --- a/packages/feedback/src/widget/createWidget.ts +++ b/packages/feedback/src/widget/createWidget.ts @@ -1,4 +1,4 @@ -import { getCurrentScope } from '@sentry/core'; +import { getClient, getCurrentScope } from '@sentry/core'; import { logger } from '@sentry/utils'; import type { FeedbackFormData, FeedbackInternalOptions, FeedbackWidget } from '../types'; @@ -9,6 +9,8 @@ import type { DialogComponent } from './Dialog'; import { Dialog } from './Dialog'; import { SuccessMessage } from './SuccessMessage'; +import { DEBUG_BUILD } from '../debug-build'; + interface CreateWidgetParams { /** * Shadow DOM to append to @@ -124,6 +126,21 @@ export function createWidget({ } } + /** + * Internal handler when dialog is opened + */ + function handleOpenDialog(): void { + // Flush replay if integration exists + const client = getClient(); + const replay = client && client.getIntegrationByName<{ name: string; flush: () => Promise }>('Replay'); + if (!replay) { + return; + } + replay.flush().catch(err => { + DEBUG_BUILD && logger.error(err); + }); + } + /** * Displays the default actor */ @@ -156,6 +173,7 @@ export function createWidget({ if (options.onFormOpen) { options.onFormOpen(); } + handleOpenDialog(); return; } @@ -208,6 +226,7 @@ export function createWidget({ if (options.onFormOpen) { options.onFormOpen(); } + handleOpenDialog(); } catch (err) { // TODO: Error handling? logger.error(err); diff --git a/packages/replay/src/util/addGlobalListeners.ts b/packages/replay/src/util/addGlobalListeners.ts index 85f253363c7a..f476d9c8cc68 100644 --- a/packages/replay/src/util/addGlobalListeners.ts +++ b/packages/replay/src/util/addGlobalListeners.ts @@ -66,8 +66,6 @@ export function addGlobalListeners(replay: ReplayContainer): void { const replayId = replay.getSessionId(); if (options && options.includeReplay && replay.isEnabled() && replayId) { // This should never reject - // eslint-disable-next-line @typescript-eslint/no-floating-promises - replay.flush(); if (feedbackEvent.contexts && feedbackEvent.contexts.feedback) { feedbackEvent.contexts.feedback.replay_id = replayId; } From 868a20e2fc664c45fd6b5125b502d59e60b5d3ca Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Thu, 29 Feb 2024 17:34:07 -0500 Subject: [PATCH 076/106] fix(feedback): Update typing for v7 --- CHANGELOG.md | 4 ++-- packages/feedback/src/util/sendFeedbackRequest.ts | 3 ++- packages/feedback/src/widget/createWidget.ts | 5 ++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f9a8ddb9db5..3949b325ee37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,8 +10,8 @@ - **feat(performance): create Interaction standalone spans on inp events (#10709)** -This release adds support for the INP web vital. This is currently only supported for Saas Sentry, and product support is released with -the upcoming `24.3.0` release of self-hosted. +This release adds support for the INP web vital. This is currently only supported for Saas Sentry, and product support +is released with the upcoming `24.3.0` release of self-hosted. To opt-in to this feature, you can use the `enableInp` option in the `browserTracingIntegration`: diff --git a/packages/feedback/src/util/sendFeedbackRequest.ts b/packages/feedback/src/util/sendFeedbackRequest.ts index f1629a00670a..2c995917193e 100644 --- a/packages/feedback/src/util/sendFeedbackRequest.ts +++ b/packages/feedback/src/util/sendFeedbackRequest.ts @@ -42,7 +42,8 @@ export async function sendFeedbackRequest( } const feedbackEvent = await prepareFeedbackEvent({ - scope, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + scope: scope as any, client, event: baseEvent, }); diff --git a/packages/feedback/src/widget/createWidget.ts b/packages/feedback/src/widget/createWidget.ts index 05b52ca64725..2332aa950b1c 100644 --- a/packages/feedback/src/widget/createWidget.ts +++ b/packages/feedback/src/widget/createWidget.ts @@ -132,7 +132,10 @@ export function createWidget({ function handleOpenDialog(): void { // Flush replay if integration exists const client = getClient(); - const replay = client && client.getIntegrationByName<{ name: string; flush: () => Promise }>('Replay'); + const replay = + client && + client.getIntegrationByName && + client.getIntegrationByName<{ name: string; flush: () => Promise; setupOnce: () => void }>('Replay'); if (!replay) { return; } From eadb6c884887feacecb8eab17569bb64de9b9e99 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Thu, 29 Feb 2024 22:56:53 +0000 Subject: [PATCH 077/106] release: 7.104.0 --- .../browser-integration-tests/package.json | 6 +++--- dev-packages/e2e-tests/package.json | 2 +- .../node-integration-tests/package.json | 8 ++++---- dev-packages/overhead-metrics/package.json | 2 +- dev-packages/rollup-utils/package.json | 2 +- lerna.json | 2 +- packages/angular-ivy/package.json | 10 +++++----- packages/angular/package.json | 10 +++++----- packages/astro/package.json | 12 ++++++------ packages/browser/package.json | 18 +++++++++--------- packages/bun/package.json | 10 +++++----- packages/core/package.json | 6 +++--- packages/core/src/version.ts | 2 +- packages/deno/package.json | 10 +++++----- packages/ember/package.json | 10 +++++----- packages/eslint-config-sdk/package.json | 6 +++--- packages/eslint-plugin-sdk/package.json | 2 +- packages/feedback/package.json | 8 ++++---- packages/gatsby/package.json | 10 +++++----- packages/hub/package.json | 8 ++++---- packages/integration-shims/package.json | 6 +++--- packages/integrations/package.json | 10 +++++----- packages/nextjs/package.json | 16 ++++++++-------- packages/node-experimental/package.json | 12 ++++++------ packages/node/package.json | 10 +++++----- packages/opentelemetry-node/package.json | 10 +++++----- packages/opentelemetry/package.json | 8 ++++---- packages/profiling-node/package.json | 10 +++++----- packages/react/package.json | 10 +++++----- packages/remix/package.json | 12 ++++++------ packages/replay-canvas/package.json | 10 +++++----- packages/replay-worker/package.json | 2 +- packages/replay/package.json | 12 ++++++------ packages/serverless/package.json | 10 +++++----- packages/svelte/package.json | 10 +++++----- packages/sveltekit/package.json | 16 ++++++++-------- packages/tracing-internal/package.json | 8 ++++---- packages/tracing/package.json | 14 +++++++------- packages/types/package.json | 2 +- packages/typescript/package.json | 2 +- packages/utils/package.json | 4 ++-- packages/vercel-edge/package.json | 10 +++++----- packages/vue/package.json | 10 +++++----- packages/wasm/package.json | 10 +++++----- 44 files changed, 184 insertions(+), 184 deletions(-) diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index e6d10358e87e..f0b701fc8267 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/browser-integration-tests", - "version": "7.103.0", + "version": "7.104.0", "main": "index.js", "license": "MIT", "engines": { @@ -47,8 +47,8 @@ "@babel/preset-typescript": "^7.16.7", "@playwright/test": "^1.40.1", "@sentry-internal/rrweb": "2.11.0", - "@sentry/browser": "7.103.0", - "@sentry/tracing": "7.103.0", + "@sentry/browser": "7.104.0", + "@sentry/tracing": "7.104.0", "axios": "1.6.0", "babel-loader": "^8.2.2", "html-webpack-plugin": "^5.5.0", diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index ea182d26498a..7c24af621282 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/e2e-tests", - "version": "7.103.0", + "version": "7.104.0", "license": "MIT", "private": true, "scripts": { diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index 87c4bf2b5a45..787eef16576c 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/node-integration-tests", - "version": "7.103.0", + "version": "7.104.0", "license": "MIT", "engines": { "node": ">=10" @@ -29,9 +29,9 @@ "dependencies": { "@hapi/hapi": "^20.3.0", "@prisma/client": "3.15.2", - "@sentry/node": "7.103.0", - "@sentry/tracing": "7.103.0", - "@sentry/types": "7.103.0", + "@sentry/node": "7.104.0", + "@sentry/tracing": "7.104.0", + "@sentry/types": "7.104.0", "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21", "@types/pg": "^8.6.5", diff --git a/dev-packages/overhead-metrics/package.json b/dev-packages/overhead-metrics/package.json index b0bc8432ab0b..81c12ef0a17f 100644 --- a/dev-packages/overhead-metrics/package.json +++ b/dev-packages/overhead-metrics/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "7.103.0", + "version": "7.104.0", "name": "@sentry-internal/overhead-metrics", "main": "index.js", "author": "Sentry", diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index 8d42571c6dbd..d8a6fd38d163 100644 --- a/dev-packages/rollup-utils/package.json +++ b/dev-packages/rollup-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/rollup-utils", - "version": "7.103.0", + "version": "7.104.0", "description": "Rollup utilities used at Sentry for the Sentry JavaScript SDK", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/rollup-utils", diff --git a/lerna.json b/lerna.json index 7058d4779e25..abe0a9b9183a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "7.103.0", + "version": "7.104.0", "npmClient": "yarn" } diff --git a/packages/angular-ivy/package.json b/packages/angular-ivy/package.json index 0dc742e4ebee..c4580f2d74d5 100644 --- a/packages/angular-ivy/package.json +++ b/packages/angular-ivy/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular-ivy", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Angular with full Ivy Support", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular-ivy", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/browser": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/angular/package.json b/packages/angular/package.json index df8a1b96be23..a4f20b9d708a 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Angular", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/browser": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/astro/package.json b/packages/astro/package.json index d9260ff71d2d..1bc22ad866d7 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/astro", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Astro", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/astro", @@ -49,11 +49,11 @@ "astro": ">=3.x || >=4.0.0-beta" }, "dependencies": { - "@sentry/browser": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/node": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/browser": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/node": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "@sentry/vite-plugin": "^2.8.0" }, "devDependencies": { diff --git a/packages/browser/package.json b/packages/browser/package.json index 56015f13eabc..c642d7869055 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -29,16 +29,16 @@ "access": "public" }, "dependencies": { - "@sentry-internal/feedback": "7.103.0", - "@sentry-internal/replay-canvas": "7.103.0", - "@sentry-internal/tracing": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/replay": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry-internal/feedback": "7.104.0", + "@sentry-internal/replay-canvas": "7.104.0", + "@sentry-internal/tracing": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/replay": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.103.0", + "@sentry-internal/integration-shims": "7.104.0", "@types/md5": "2.1.33", "btoa": "^1.2.1", "chai": "^4.1.2", diff --git a/packages/bun/package.json b/packages/bun/package.json index 294d72ed8ccc..92a6463d26f4 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bun", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for bun", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/bun", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.103.0", - "@sentry/node": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/core": "7.104.0", + "@sentry/node": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "devDependencies": { "bun-types": "latest" diff --git a/packages/core/package.json b/packages/core/package.json index 7b638e65c8b4..ca073fbb678d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "7.103.0", + "version": "7.104.0", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -29,8 +29,8 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 54e9730edd8a..251001133ea6 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = '7.103.0'; +export const SDK_VERSION = '7.104.0'; diff --git a/packages/deno/package.json b/packages/deno/package.json index 12d64584ee66..b60fefc1d70a 100644 --- a/packages/deno/package.json +++ b/packages/deno/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/deno", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Deno", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/deno", @@ -17,10 +17,10 @@ "index.d.ts" ], "dependencies": { - "@sentry/browser": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/browser": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.5", diff --git a/packages/ember/package.json b/packages/ember/package.json index 8a4bad031a87..2c7160602e5e 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Ember.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/ember", @@ -32,10 +32,10 @@ }, "dependencies": { "@embroider/macros": "^1.9.0", - "@sentry/browser": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/browser": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "ember-auto-import": "^1.12.1 || ^2.4.3", "ember-cli-babel": "^7.26.11", "ember-cli-htmlbars": "^6.1.1", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index fb6a4966de6e..2cf454e50165 100644 --- a/packages/eslint-config-sdk/package.json +++ b/packages/eslint-config-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config-sdk", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK eslint config", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-config-sdk", @@ -22,8 +22,8 @@ "access": "public" }, "dependencies": { - "@sentry-internal/eslint-plugin-sdk": "7.103.0", - "@sentry-internal/typescript": "7.103.0", + "@sentry-internal/eslint-plugin-sdk": "7.104.0", + "@sentry-internal/typescript": "7.104.0", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "eslint-config-prettier": "^6.11.0", diff --git a/packages/eslint-plugin-sdk/package.json b/packages/eslint-plugin-sdk/package.json index dbef0738fc27..07506dcc2755 100644 --- a/packages/eslint-plugin-sdk/package.json +++ b/packages/eslint-plugin-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-plugin-sdk", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK eslint plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-plugin-sdk", diff --git a/packages/feedback/package.json b/packages/feedback/package.json index c3f73325b5fc..09cfbc71aa93 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/feedback", - "version": "7.103.0", + "version": "7.104.0", "description": "Sentry SDK integration for user feedback", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/feedback", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "scripts": { "build": "run-p build:transpile build:types build:bundle", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index c8045929dc36..c383b083f8d9 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Gatsby.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/gatsby", @@ -37,10 +37,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.103.0", - "@sentry/react": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/core": "7.104.0", + "@sentry/react": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "@sentry/webpack-plugin": "1.19.0" }, "peerDependencies": { diff --git a/packages/hub/package.json b/packages/hub/package.json index b67e25a6ff4e..25f44b62820e 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "7.103.0", + "version": "7.104.0", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/integration-shims/package.json b/packages/integration-shims/package.json index bc6010f84d50..23a1c82b235e 100644 --- a/packages/integration-shims/package.json +++ b/packages/integration-shims/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-shims", - "version": "7.103.0", + "version": "7.104.0", "description": "Shims for integrations in Sentry SDK.", "main": "build/cjs/index.js", "module": "build/esm/index.js", @@ -39,8 +39,8 @@ "url": "https://github.com/getsentry/sentry-javascript/issues" }, "dependencies": { - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "engines": { "node": ">=12" diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 36d3c28e1eab..185a384fee90 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "7.103.0", + "version": "7.104.0", "description": "Pluggable integrations that can be used to enhance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -29,13 +29,13 @@ } }, "dependencies": { - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "localforage": "^1.8.1" }, "devDependencies": { - "@sentry/browser": "7.103.0", + "@sentry/browser": "7.104.0", "chai": "^4.1.2" }, "scripts": { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index fb7ef746c406..9214ed8899f7 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Next.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nextjs", @@ -25,13 +25,13 @@ }, "dependencies": { "@rollup/plugin-commonjs": "24.0.0", - "@sentry/core": "7.103.0", - "@sentry/integrations": "7.103.0", - "@sentry/node": "7.103.0", - "@sentry/react": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", - "@sentry/vercel-edge": "7.103.0", + "@sentry/core": "7.104.0", + "@sentry/integrations": "7.104.0", + "@sentry/node": "7.104.0", + "@sentry/react": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", + "@sentry/vercel-edge": "7.104.0", "@sentry/webpack-plugin": "1.21.0", "chalk": "3.0.0", "resolve": "1.22.8", diff --git a/packages/node-experimental/package.json b/packages/node-experimental/package.json index dd9200c536fa..06c13b4e3efb 100644 --- a/packages/node-experimental/package.json +++ b/packages/node-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node-experimental", - "version": "7.103.0", + "version": "7.104.0", "description": "Experimental version of a Node SDK using OpenTelemetry for performance instrumentation", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node-experimental", @@ -49,11 +49,11 @@ "@opentelemetry/sdk-trace-base": "1.21.0", "@opentelemetry/semantic-conventions": "1.21.0", "@prisma/instrumentation": "5.9.0", - "@sentry/core": "7.103.0", - "@sentry/node": "7.103.0", - "@sentry/opentelemetry": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/core": "7.104.0", + "@sentry/node": "7.104.0", + "@sentry/opentelemetry": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "optionalDependencies": { "opentelemetry-instrumentation-fetch-node": "1.1.0" diff --git a/packages/node/package.json b/packages/node/package.json index 285d6572d231..67bfb803e744 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry-internal/tracing": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "devDependencies": { "@types/cookie": "0.5.2", diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index 20cac2cd9998..83b69a54e525 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry-node", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for OpenTelemetry Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry-node", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "peerDependencies": { "@opentelemetry/api": "1.x", @@ -45,7 +45,7 @@ "@opentelemetry/sdk-trace-base": "^1.17.1", "@opentelemetry/sdk-trace-node": "^1.17.1", "@opentelemetry/semantic-conventions": "^1.17.1", - "@sentry/node": "7.103.0" + "@sentry/node": "7.104.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index e372f7f9f5cd..aa7d301e6800 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry utilities for OpenTelemetry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0", diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index 9fa57574420e..dc2fdb8fb11a 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/profiling-node", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Node.js Profiling", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/profiling-node", @@ -68,10 +68,10 @@ "node-abi": "^3.52.0" }, "devDependencies": { - "@sentry/core": "7.103.0", - "@sentry/node": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/core": "7.104.0", + "@sentry/node": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "@types/node": "16.18.70", "@types/node-abi": "^3.0.0", "clang-format": "^1.8.0", diff --git a/packages/react/package.json b/packages/react/package.json index eb9d63fcb0d9..a716034e6ae0 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for React.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/browser": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { diff --git a/packages/remix/package.json b/packages/remix/package.json index ef69f57475f2..b17247a57c94 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/remix", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Remix", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/remix", @@ -36,11 +36,11 @@ "dependencies": { "@remix-run/router": "1.x", "@sentry/cli": "^2.28.0", - "@sentry/core": "7.103.0", - "@sentry/node": "7.103.0", - "@sentry/react": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/core": "7.104.0", + "@sentry/node": "7.104.0", + "@sentry/react": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "glob": "^10.3.4", "yargs": "^17.6.0" }, diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index 6ee9c21337b1..d707713d1374 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-canvas", - "version": "7.103.0", + "version": "7.104.0", "description": "Replay canvas integration", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -59,10 +59,10 @@ "@sentry-internal/rrweb": "2.11.0" }, "dependencies": { - "@sentry/core": "7.103.0", - "@sentry/replay": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/core": "7.104.0", + "@sentry/replay": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "engines": { "node": ">=12" diff --git a/packages/replay-worker/package.json b/packages/replay-worker/package.json index cb011a70926b..a72e6b5e045d 100644 --- a/packages/replay-worker/package.json +++ b/packages/replay-worker/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-worker", - "version": "7.103.0", + "version": "7.104.0", "description": "Worker for @sentry/replay", "main": "build/npm/esm/index.js", "module": "build/npm/esm/index.js", diff --git a/packages/replay/package.json b/packages/replay/package.json index ccdef99da284..7a3ddd3378d0 100644 --- a/packages/replay/package.json +++ b/packages/replay/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/replay", - "version": "7.103.0", + "version": "7.104.0", "description": "User replays for Sentry", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -53,17 +53,17 @@ "homepage": "https://docs.sentry.io/platforms/javascript/session-replay/", "devDependencies": { "@babel/core": "^7.17.5", - "@sentry-internal/replay-worker": "7.103.0", + "@sentry-internal/replay-worker": "7.104.0", "@sentry-internal/rrweb": "2.11.0", "@sentry-internal/rrweb-snapshot": "2.11.0", "fflate": "^0.8.1", "jsdom-worker": "^0.2.1" }, "dependencies": { - "@sentry-internal/tracing": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry-internal/tracing": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "engines": { "node": ">=12" diff --git a/packages/serverless/package.json b/packages/serverless/package.json index 5f85e25e6cb7..6a9807bbc94c 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/serverless", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for various serverless solutions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.103.0", - "@sentry/node": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/core": "7.104.0", + "@sentry/node": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "@types/aws-lambda": "^8.10.62", "@types/express": "^4.17.14" }, diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 48e8eac0883d..99339e2e7c7d 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/svelte", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Svelte", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/svelte", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry/browser": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "magic-string": "^0.30.0" }, "peerDependencies": { diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index e5c89aeecf8c..63df51b03d05 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sveltekit", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for SvelteKit", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/sveltekit", @@ -37,13 +37,13 @@ "@sveltejs/kit": "1.x || 2.x" }, "dependencies": { - "@sentry-internal/tracing": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/integrations": "7.103.0", - "@sentry/node": "7.103.0", - "@sentry/svelte": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry-internal/tracing": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/integrations": "7.104.0", + "@sentry/node": "7.104.0", + "@sentry/svelte": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "@sentry/vite-plugin": "^0.6.1", "magicast": "0.2.8", "sorcery": "0.11.0" diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json index 68135a7e1382..205b1d7a745a 100644 --- a/packages/tracing-internal/package.json +++ b/packages/tracing-internal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/tracing", - "version": "7.103.0", + "version": "7.104.0", "description": "Sentry Internal Tracing Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "devDependencies": { "@types/express": "^4.17.14" diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 6bf1647d1ba9..c828ec219743 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/tracing", - "version": "7.103.0", + "version": "7.104.0", "description": "Sentry Performance Monitoring Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing", @@ -29,14 +29,14 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.103.0" + "@sentry-internal/tracing": "7.104.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.103.0", - "@sentry/browser": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0", + "@sentry-internal/integration-shims": "7.104.0", + "@sentry/browser": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0", "@types/express": "^4.17.14" }, "scripts": { diff --git a/packages/types/package.json b/packages/types/package.json index 65e27c0de895..7a6ce8df2d80 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "7.103.0", + "version": "7.104.0", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", diff --git a/packages/typescript/package.json b/packages/typescript/package.json index bcdde2338ca4..3e5ed0a9d1f1 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "7.103.0", + "version": "7.104.0", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript", diff --git a/packages/utils/package.json b/packages/utils/package.json index 0bbc5dfda048..f7804cac5c8d 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "7.103.0", + "version": "7.104.0", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -29,7 +29,7 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.103.0" + "@sentry/types": "7.104.0" }, "devDependencies": { "@types/array.prototype.flat": "^1.2.1", diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 01cad5954726..54b897c46e11 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vercel-edge", - "version": "7.103.0", + "version": "7.104.0", "description": "Offical Sentry SDK for the Vercel Edge Runtime", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vercel-edge", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry-internal/tracing": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "devDependencies": { "@edge-runtime/jest-environment": "2.2.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index ec0cc5a639c9..33111e301eaf 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "7.103.0", + "version": "7.104.0", "description": "Official Sentry SDK for Vue.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vue", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/browser": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "peerDependencies": { "vue": "2.x || 3.x" diff --git a/packages/wasm/package.json b/packages/wasm/package.json index c2f5b035fa3d..61aaf5d0e874 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "7.103.0", + "version": "7.104.0", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.103.0", - "@sentry/core": "7.103.0", - "@sentry/types": "7.103.0", - "@sentry/utils": "7.103.0" + "@sentry/browser": "7.104.0", + "@sentry/core": "7.104.0", + "@sentry/types": "7.104.0", + "@sentry/utils": "7.104.0" }, "scripts": { "build": "run-p build:transpile build:bundle build:types", From 7b1137996ff38cfaec913b2cedd0f579cd453255 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Fri, 1 Mar 2024 09:06:38 +0000 Subject: [PATCH 078/106] feat: Ensure `withActiveSpan` is exported everywhere [v7] (#10877) We forgot to re-export this everywhere, oops. --- packages/astro/src/index.server.ts | 1 + packages/browser/src/exports.ts | 1 + packages/bun/src/index.ts | 1 + packages/node/src/index.ts | 1 + packages/remix/src/index.server.ts | 1 + packages/serverless/src/index.ts | 1 + packages/sveltekit/src/server/index.ts | 1 + packages/vercel-edge/src/index.ts | 1 + 8 files changed, 8 insertions(+) diff --git a/packages/astro/src/index.server.ts b/packages/astro/src/index.server.ts index e4e94e23b894..ac534318ce24 100644 --- a/packages/astro/src/index.server.ts +++ b/packages/astro/src/index.server.ts @@ -90,6 +90,7 @@ export { startActiveSpan, startInactiveSpan, startSpanManual, + withActiveSpan, continueTrace, cron, parameterize, diff --git a/packages/browser/src/exports.ts b/packages/browser/src/exports.ts index 84e032607a5d..ae16b565879e 100644 --- a/packages/browser/src/exports.ts +++ b/packages/browser/src/exports.ts @@ -56,6 +56,7 @@ export { startSpan, startInactiveSpan, startSpanManual, + withActiveSpan, continueTrace, SDK_VERSION, setContext, diff --git a/packages/bun/src/index.ts b/packages/bun/src/index.ts index 3fcbde19fbbf..2082f910403e 100644 --- a/packages/bun/src/index.ts +++ b/packages/bun/src/index.ts @@ -81,6 +81,7 @@ export { startSpan, startInactiveSpan, startSpanManual, + withActiveSpan, continueTrace, metrics, functionToStringIntegration, diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 9b2a21d01dbc..8fb5ec6968b4 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -82,6 +82,7 @@ export { startActiveSpan, startInactiveSpan, startSpanManual, + withActiveSpan, continueTrace, parameterize, metrics, diff --git a/packages/remix/src/index.server.ts b/packages/remix/src/index.server.ts index b50f1334aa0a..fa1c20ecc22c 100644 --- a/packages/remix/src/index.server.ts +++ b/packages/remix/src/index.server.ts @@ -92,6 +92,7 @@ export { startSpan, startSpanManual, startInactiveSpan, + withActiveSpan, continueTrace, isInitialized, cron, diff --git a/packages/serverless/src/index.ts b/packages/serverless/src/index.ts index e77e18c72d15..d2a136c5ab34 100644 --- a/packages/serverless/src/index.ts +++ b/packages/serverless/src/index.ts @@ -82,6 +82,7 @@ export { startActiveSpan, startInactiveSpan, startSpanManual, + withActiveSpan, continueTrace, parameterize, requestDataIntegration, diff --git a/packages/sveltekit/src/server/index.ts b/packages/sveltekit/src/server/index.ts index e3e03e4ca127..1ee7e75b9136 100644 --- a/packages/sveltekit/src/server/index.ts +++ b/packages/sveltekit/src/server/index.ts @@ -88,6 +88,7 @@ export { startActiveSpan, startInactiveSpan, startSpanManual, + withActiveSpan, continueTrace, cron, parameterize, diff --git a/packages/vercel-edge/src/index.ts b/packages/vercel-edge/src/index.ts index fb3624de22f2..cb20844ffd93 100644 --- a/packages/vercel-edge/src/index.ts +++ b/packages/vercel-edge/src/index.ts @@ -80,6 +80,7 @@ export { startSpan, startInactiveSpan, startSpanManual, + withActiveSpan, continueTrace, metrics, functionToStringIntegration, From 0eac5104adb3ad14dcd1c4180feee789445975c7 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Fri, 1 Mar 2024 09:28:34 +0000 Subject: [PATCH 079/106] meta(changelog): Update changelog for v7.105.0 (#10880) Includes something we forgot to re-export before... --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3949b325ee37..ac04fae18f44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,25 @@ - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 7.105.0 + +### Important Changes + +- **feat: Ensure `withActiveSpan` is exported everywhere (#10877)** + +You can use the `withActiveSpan` method to ensure a certain span is the active span in a given callback. This can be +used to create a span as a child of a specific span with the `startSpan` API methods: + +```js +const parentSpan = Sentry.startInactiveSpan({ name: 'parent' }); +if (parentSpan) { + withActiveSpan(parentSpan, () => { + // This will be a direct child of parentSpan + const childSpan = Sentry.startInactiveSpan({ name: 'child' }); + }); +} +``` + ## 7.104.0 ### Important Changes From e23dc271efb3ac2b66ae4ce5747cf9482a664168 Mon Sep 17 00:00:00 2001 From: getsentry-bot Date: Fri, 1 Mar 2024 09:32:17 +0000 Subject: [PATCH 080/106] release: 7.105.0 --- .../browser-integration-tests/package.json | 6 +++--- dev-packages/e2e-tests/package.json | 2 +- .../node-integration-tests/package.json | 8 ++++---- dev-packages/overhead-metrics/package.json | 2 +- dev-packages/rollup-utils/package.json | 2 +- lerna.json | 2 +- packages/angular-ivy/package.json | 10 +++++----- packages/angular/package.json | 10 +++++----- packages/astro/package.json | 12 ++++++------ packages/browser/package.json | 18 +++++++++--------- packages/bun/package.json | 10 +++++----- packages/core/package.json | 6 +++--- packages/core/src/version.ts | 2 +- packages/deno/package.json | 10 +++++----- packages/ember/package.json | 10 +++++----- packages/eslint-config-sdk/package.json | 6 +++--- packages/eslint-plugin-sdk/package.json | 2 +- packages/feedback/package.json | 8 ++++---- packages/gatsby/package.json | 10 +++++----- packages/hub/package.json | 8 ++++---- packages/integration-shims/package.json | 6 +++--- packages/integrations/package.json | 10 +++++----- packages/nextjs/package.json | 16 ++++++++-------- packages/node-experimental/package.json | 12 ++++++------ packages/node/package.json | 10 +++++----- packages/opentelemetry-node/package.json | 10 +++++----- packages/opentelemetry/package.json | 8 ++++---- packages/profiling-node/package.json | 10 +++++----- packages/react/package.json | 10 +++++----- packages/remix/package.json | 12 ++++++------ packages/replay-canvas/package.json | 10 +++++----- packages/replay-worker/package.json | 2 +- packages/replay/package.json | 12 ++++++------ packages/serverless/package.json | 10 +++++----- packages/svelte/package.json | 10 +++++----- packages/sveltekit/package.json | 16 ++++++++-------- packages/tracing-internal/package.json | 8 ++++---- packages/tracing/package.json | 14 +++++++------- packages/types/package.json | 2 +- packages/typescript/package.json | 2 +- packages/utils/package.json | 4 ++-- packages/vercel-edge/package.json | 10 +++++----- packages/vue/package.json | 10 +++++----- packages/wasm/package.json | 10 +++++----- 44 files changed, 184 insertions(+), 184 deletions(-) diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index f0b701fc8267..d90e968b5d7b 100644 --- a/dev-packages/browser-integration-tests/package.json +++ b/dev-packages/browser-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/browser-integration-tests", - "version": "7.104.0", + "version": "7.105.0", "main": "index.js", "license": "MIT", "engines": { @@ -47,8 +47,8 @@ "@babel/preset-typescript": "^7.16.7", "@playwright/test": "^1.40.1", "@sentry-internal/rrweb": "2.11.0", - "@sentry/browser": "7.104.0", - "@sentry/tracing": "7.104.0", + "@sentry/browser": "7.105.0", + "@sentry/tracing": "7.105.0", "axios": "1.6.0", "babel-loader": "^8.2.2", "html-webpack-plugin": "^5.5.0", diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index 7c24af621282..21cf8cb8a7fb 100644 --- a/dev-packages/e2e-tests/package.json +++ b/dev-packages/e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/e2e-tests", - "version": "7.104.0", + "version": "7.105.0", "license": "MIT", "private": true, "scripts": { diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index 787eef16576c..b792f3f2a9af 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/node-integration-tests", - "version": "7.104.0", + "version": "7.105.0", "license": "MIT", "engines": { "node": ">=10" @@ -29,9 +29,9 @@ "dependencies": { "@hapi/hapi": "^20.3.0", "@prisma/client": "3.15.2", - "@sentry/node": "7.104.0", - "@sentry/tracing": "7.104.0", - "@sentry/types": "7.104.0", + "@sentry/node": "7.105.0", + "@sentry/tracing": "7.105.0", + "@sentry/types": "7.105.0", "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21", "@types/pg": "^8.6.5", diff --git a/dev-packages/overhead-metrics/package.json b/dev-packages/overhead-metrics/package.json index 81c12ef0a17f..e73a3854c429 100644 --- a/dev-packages/overhead-metrics/package.json +++ b/dev-packages/overhead-metrics/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "7.104.0", + "version": "7.105.0", "name": "@sentry-internal/overhead-metrics", "main": "index.js", "author": "Sentry", diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index d8a6fd38d163..4f0d850979ed 100644 --- a/dev-packages/rollup-utils/package.json +++ b/dev-packages/rollup-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/rollup-utils", - "version": "7.104.0", + "version": "7.105.0", "description": "Rollup utilities used at Sentry for the Sentry JavaScript SDK", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/rollup-utils", diff --git a/lerna.json b/lerna.json index abe0a9b9183a..5141df85e9dd 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "7.104.0", + "version": "7.105.0", "npmClient": "yarn" } diff --git a/packages/angular-ivy/package.json b/packages/angular-ivy/package.json index c4580f2d74d5..8b1c282b3160 100644 --- a/packages/angular-ivy/package.json +++ b/packages/angular-ivy/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular-ivy", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Angular with full Ivy Support", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular-ivy", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/browser": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/angular/package.json b/packages/angular/package.json index a4f20b9d708a..2b927f4eb18b 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Angular", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/angular", @@ -21,10 +21,10 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/browser": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/astro/package.json b/packages/astro/package.json index 1bc22ad866d7..f2b5e3843478 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/astro", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Astro", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/astro", @@ -49,11 +49,11 @@ "astro": ">=3.x || >=4.0.0-beta" }, "dependencies": { - "@sentry/browser": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/node": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/browser": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/node": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "@sentry/vite-plugin": "^2.8.0" }, "devDependencies": { diff --git a/packages/browser/package.json b/packages/browser/package.json index c642d7869055..cb79667c6d26 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for browsers", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser", @@ -29,16 +29,16 @@ "access": "public" }, "dependencies": { - "@sentry-internal/feedback": "7.104.0", - "@sentry-internal/replay-canvas": "7.104.0", - "@sentry-internal/tracing": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/replay": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry-internal/feedback": "7.105.0", + "@sentry-internal/replay-canvas": "7.105.0", + "@sentry-internal/tracing": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/replay": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.104.0", + "@sentry-internal/integration-shims": "7.105.0", "@types/md5": "2.1.33", "btoa": "^1.2.1", "chai": "^4.1.2", diff --git a/packages/bun/package.json b/packages/bun/package.json index 92a6463d26f4..b41655d3e06c 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bun", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for bun", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/bun", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.104.0", - "@sentry/node": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/core": "7.105.0", + "@sentry/node": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "devDependencies": { "bun-types": "latest" diff --git a/packages/core/package.json b/packages/core/package.json index ca073fbb678d..a3a2ce501ba7 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "7.104.0", + "version": "7.105.0", "description": "Base implementation for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/core", @@ -29,8 +29,8 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/core/src/version.ts b/packages/core/src/version.ts index 251001133ea6..ce2a3d44b5b7 100644 --- a/packages/core/src/version.ts +++ b/packages/core/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = '7.104.0'; +export const SDK_VERSION = '7.105.0'; diff --git a/packages/deno/package.json b/packages/deno/package.json index b60fefc1d70a..67adc4c5c2a6 100644 --- a/packages/deno/package.json +++ b/packages/deno/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/deno", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Deno", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/deno", @@ -17,10 +17,10 @@ "index.d.ts" ], "dependencies": { - "@sentry/browser": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/browser": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.5", diff --git a/packages/ember/package.json b/packages/ember/package.json index 2c7160602e5e..c80bb5256f25 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Ember.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/ember", @@ -32,10 +32,10 @@ }, "dependencies": { "@embroider/macros": "^1.9.0", - "@sentry/browser": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/browser": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "ember-auto-import": "^1.12.1 || ^2.4.3", "ember-cli-babel": "^7.26.11", "ember-cli-htmlbars": "^6.1.1", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index 2cf454e50165..8e56cd90746c 100644 --- a/packages/eslint-config-sdk/package.json +++ b/packages/eslint-config-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-config-sdk", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK eslint config", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-config-sdk", @@ -22,8 +22,8 @@ "access": "public" }, "dependencies": { - "@sentry-internal/eslint-plugin-sdk": "7.104.0", - "@sentry-internal/typescript": "7.104.0", + "@sentry-internal/eslint-plugin-sdk": "7.105.0", + "@sentry-internal/typescript": "7.105.0", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "eslint-config-prettier": "^6.11.0", diff --git a/packages/eslint-plugin-sdk/package.json b/packages/eslint-plugin-sdk/package.json index 07506dcc2755..866182e79269 100644 --- a/packages/eslint-plugin-sdk/package.json +++ b/packages/eslint-plugin-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/eslint-plugin-sdk", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK eslint plugin", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/eslint-plugin-sdk", diff --git a/packages/feedback/package.json b/packages/feedback/package.json index 09cfbc71aa93..a3774802b761 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/feedback", - "version": "7.104.0", + "version": "7.105.0", "description": "Sentry SDK integration for user feedback", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/feedback", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "scripts": { "build": "run-p build:transpile build:types build:bundle", diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index c383b083f8d9..6713a89f22b8 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Gatsby.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/gatsby", @@ -37,10 +37,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.104.0", - "@sentry/react": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/core": "7.105.0", + "@sentry/react": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "@sentry/webpack-plugin": "1.19.0" }, "peerDependencies": { diff --git a/packages/hub/package.json b/packages/hub/package.json index 25f44b62820e..411d7a2c68f6 100644 --- a/packages/hub/package.json +++ b/packages/hub/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/hub", - "version": "7.104.0", + "version": "7.105.0", "description": "Sentry hub which handles global state managment.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/hub", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/integration-shims/package.json b/packages/integration-shims/package.json index 23a1c82b235e..9ea37eea0e42 100644 --- a/packages/integration-shims/package.json +++ b/packages/integration-shims/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-shims", - "version": "7.104.0", + "version": "7.105.0", "description": "Shims for integrations in Sentry SDK.", "main": "build/cjs/index.js", "module": "build/esm/index.js", @@ -39,8 +39,8 @@ "url": "https://github.com/getsentry/sentry-javascript/issues" }, "dependencies": { - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "engines": { "node": ">=12" diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 185a384fee90..7f427483a51d 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/integrations", - "version": "7.104.0", + "version": "7.105.0", "description": "Pluggable integrations that can be used to enhance JS SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/integrations", @@ -29,13 +29,13 @@ } }, "dependencies": { - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "localforage": "^1.8.1" }, "devDependencies": { - "@sentry/browser": "7.104.0", + "@sentry/browser": "7.105.0", "chai": "^4.1.2" }, "scripts": { diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 9214ed8899f7..76265c443371 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Next.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nextjs", @@ -25,13 +25,13 @@ }, "dependencies": { "@rollup/plugin-commonjs": "24.0.0", - "@sentry/core": "7.104.0", - "@sentry/integrations": "7.104.0", - "@sentry/node": "7.104.0", - "@sentry/react": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", - "@sentry/vercel-edge": "7.104.0", + "@sentry/core": "7.105.0", + "@sentry/integrations": "7.105.0", + "@sentry/node": "7.105.0", + "@sentry/react": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", + "@sentry/vercel-edge": "7.105.0", "@sentry/webpack-plugin": "1.21.0", "chalk": "3.0.0", "resolve": "1.22.8", diff --git a/packages/node-experimental/package.json b/packages/node-experimental/package.json index 06c13b4e3efb..454845cbb8f1 100644 --- a/packages/node-experimental/package.json +++ b/packages/node-experimental/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node-experimental", - "version": "7.104.0", + "version": "7.105.0", "description": "Experimental version of a Node SDK using OpenTelemetry for performance instrumentation", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node-experimental", @@ -49,11 +49,11 @@ "@opentelemetry/sdk-trace-base": "1.21.0", "@opentelemetry/semantic-conventions": "1.21.0", "@prisma/instrumentation": "5.9.0", - "@sentry/core": "7.104.0", - "@sentry/node": "7.104.0", - "@sentry/opentelemetry": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/core": "7.105.0", + "@sentry/node": "7.105.0", + "@sentry/opentelemetry": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "optionalDependencies": { "opentelemetry-instrumentation-fetch-node": "1.1.0" diff --git a/packages/node/package.json b/packages/node/package.json index 67bfb803e744..2d5bd880dde8 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry-internal/tracing": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "devDependencies": { "@types/cookie": "0.5.2", diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index 83b69a54e525..5b81809efbd0 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry-node", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for OpenTelemetry Node.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry-node", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "peerDependencies": { "@opentelemetry/api": "1.x", @@ -45,7 +45,7 @@ "@opentelemetry/sdk-trace-base": "^1.17.1", "@opentelemetry/sdk-trace-node": "^1.17.1", "@opentelemetry/semantic-conventions": "^1.17.1", - "@sentry/node": "7.104.0" + "@sentry/node": "7.105.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index aa7d301e6800..266b9219c3e3 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry utilities for OpenTelemetry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/opentelemetry", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0", diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index dc2fdb8fb11a..5d854d322f53 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/profiling-node", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Node.js Profiling", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/profiling-node", @@ -68,10 +68,10 @@ "node-abi": "^3.52.0" }, "devDependencies": { - "@sentry/core": "7.104.0", - "@sentry/node": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/core": "7.105.0", + "@sentry/node": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "@types/node": "16.18.70", "@types/node-abi": "^3.0.0", "clang-format": "^1.8.0", diff --git a/packages/react/package.json b/packages/react/package.json index a716034e6ae0..cfaecbb1eddb 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for React.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/react", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/browser": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { diff --git a/packages/remix/package.json b/packages/remix/package.json index b17247a57c94..3f469e20552b 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/remix", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Remix", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/remix", @@ -36,11 +36,11 @@ "dependencies": { "@remix-run/router": "1.x", "@sentry/cli": "^2.28.0", - "@sentry/core": "7.104.0", - "@sentry/node": "7.104.0", - "@sentry/react": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/core": "7.105.0", + "@sentry/node": "7.105.0", + "@sentry/react": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "glob": "^10.3.4", "yargs": "^17.6.0" }, diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index d707713d1374..8a4a3c340440 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-canvas", - "version": "7.104.0", + "version": "7.105.0", "description": "Replay canvas integration", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -59,10 +59,10 @@ "@sentry-internal/rrweb": "2.11.0" }, "dependencies": { - "@sentry/core": "7.104.0", - "@sentry/replay": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/core": "7.105.0", + "@sentry/replay": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "engines": { "node": ">=12" diff --git a/packages/replay-worker/package.json b/packages/replay-worker/package.json index a72e6b5e045d..b15a8430d85b 100644 --- a/packages/replay-worker/package.json +++ b/packages/replay-worker/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-worker", - "version": "7.104.0", + "version": "7.105.0", "description": "Worker for @sentry/replay", "main": "build/npm/esm/index.js", "module": "build/npm/esm/index.js", diff --git a/packages/replay/package.json b/packages/replay/package.json index 7a3ddd3378d0..886c32acbd71 100644 --- a/packages/replay/package.json +++ b/packages/replay/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/replay", - "version": "7.104.0", + "version": "7.105.0", "description": "User replays for Sentry", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -53,17 +53,17 @@ "homepage": "https://docs.sentry.io/platforms/javascript/session-replay/", "devDependencies": { "@babel/core": "^7.17.5", - "@sentry-internal/replay-worker": "7.104.0", + "@sentry-internal/replay-worker": "7.105.0", "@sentry-internal/rrweb": "2.11.0", "@sentry-internal/rrweb-snapshot": "2.11.0", "fflate": "^0.8.1", "jsdom-worker": "^0.2.1" }, "dependencies": { - "@sentry-internal/tracing": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry-internal/tracing": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "engines": { "node": ">=12" diff --git a/packages/serverless/package.json b/packages/serverless/package.json index 6a9807bbc94c..39bcec2bd58a 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/serverless", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for various serverless solutions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.104.0", - "@sentry/node": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/core": "7.105.0", + "@sentry/node": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "@types/aws-lambda": "^8.10.62", "@types/express": "^4.17.14" }, diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 99339e2e7c7d..4b24ca10dfb9 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/svelte", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Svelte", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/svelte", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry/browser": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "magic-string": "^0.30.0" }, "peerDependencies": { diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index 63df51b03d05..500046c25d6e 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sveltekit", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for SvelteKit", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/sveltekit", @@ -37,13 +37,13 @@ "@sveltejs/kit": "1.x || 2.x" }, "dependencies": { - "@sentry-internal/tracing": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/integrations": "7.104.0", - "@sentry/node": "7.104.0", - "@sentry/svelte": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry-internal/tracing": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/integrations": "7.105.0", + "@sentry/node": "7.105.0", + "@sentry/svelte": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "@sentry/vite-plugin": "^0.6.1", "magicast": "0.2.8", "sorcery": "0.11.0" diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json index 205b1d7a745a..e35ab85a16b2 100644 --- a/packages/tracing-internal/package.json +++ b/packages/tracing-internal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/tracing", - "version": "7.104.0", + "version": "7.105.0", "description": "Sentry Internal Tracing Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal", @@ -29,9 +29,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "devDependencies": { "@types/express": "^4.17.14" diff --git a/packages/tracing/package.json b/packages/tracing/package.json index c828ec219743..e30652a97718 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/tracing", - "version": "7.104.0", + "version": "7.105.0", "description": "Sentry Performance Monitoring Package", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing", @@ -29,14 +29,14 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.104.0" + "@sentry-internal/tracing": "7.105.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "7.104.0", - "@sentry/browser": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0", + "@sentry-internal/integration-shims": "7.105.0", + "@sentry/browser": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0", "@types/express": "^4.17.14" }, "scripts": { diff --git a/packages/types/package.json b/packages/types/package.json index 7a6ce8df2d80..78ac86c7242a 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "7.104.0", + "version": "7.105.0", "description": "Types for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/types", diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 3e5ed0a9d1f1..3e04afce2057 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "7.104.0", + "version": "7.105.0", "description": "Typescript configuration used at Sentry", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/typescript", diff --git a/packages/utils/package.json b/packages/utils/package.json index f7804cac5c8d..983be1451140 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "7.104.0", + "version": "7.105.0", "description": "Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/utils", @@ -29,7 +29,7 @@ "access": "public" }, "dependencies": { - "@sentry/types": "7.104.0" + "@sentry/types": "7.105.0" }, "devDependencies": { "@types/array.prototype.flat": "^1.2.1", diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 54b897c46e11..d389a12da2f2 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vercel-edge", - "version": "7.104.0", + "version": "7.105.0", "description": "Offical Sentry SDK for the Vercel Edge Runtime", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vercel-edge", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry-internal/tracing": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry-internal/tracing": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "devDependencies": { "@edge-runtime/jest-environment": "2.2.3", diff --git a/packages/vue/package.json b/packages/vue/package.json index 33111e301eaf..06135122c51d 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "7.104.0", + "version": "7.105.0", "description": "Official Sentry SDK for Vue.js", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/vue", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/browser": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "peerDependencies": { "vue": "2.x || 3.x" diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 61aaf5d0e874..18f6e7547e54 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "7.104.0", + "version": "7.105.0", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -29,10 +29,10 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "7.104.0", - "@sentry/core": "7.104.0", - "@sentry/types": "7.104.0", - "@sentry/utils": "7.104.0" + "@sentry/browser": "7.105.0", + "@sentry/core": "7.105.0", + "@sentry/types": "7.105.0", + "@sentry/utils": "7.105.0" }, "scripts": { "build": "run-p build:transpile build:bundle build:types", From 7ad8957ee48877d8acf305f47453531c9061b5ad Mon Sep 17 00:00:00 2001 From: Onur Temizkan Date: Thu, 7 Mar 2024 15:15:52 +0000 Subject: [PATCH 081/106] feat(remix): Add Vite dev-mode support to Express instrumentation (v7). (#10811) Adds dev-mode support to Remix setups with Vite and Express. We currently accept Remix server `build` as an object to instrument. But Remix allows `build` as a synchronous or asynchronous function that returns the build object. Currently, it seems that functions are only used in development servers, and not in production. So, while this update slightly reduces `requestHandler` performance on dev servers, it does not on production builds. We need `build` in 2 places: 1- We instrument the loaders / actions on build, then we pass them down to the original implementations. 2- We use the `routes` inside them to create parameterised transactions. This update adds new internal wrappers around them to make sure that we don't miss out on the returned / resolved values in case `build` is a function, for both cases. This PR also adds a new E2E test application using the latest Remix version and Vite, and it runs the tests on `dev` mode. --- .github/workflows/build.yml | 1 + .../.eslintrc.js | 79 + .../.gitignore | 5 + .../create-remix-app-express-vite-dev/.npmrc | 2 + .../README.md | 34 + .../app/entry.client.tsx | 46 + .../app/entry.server.tsx | 147 + .../app/root.tsx | 80 + .../app/routes/_index.tsx | 21 + .../app/routes/client-error.tsx | 13 + .../app/routes/navigate.tsx | 20 + .../app/routes/user.$id.tsx | 3 + .../env.d.ts | 2 + .../package.json | 51 + .../playwright.config.ts | 58 + .../server.mjs | 53 + .../tests/behaviour-client.test.ts | 200 + .../tsconfig.json | 24 + .../vite.config.ts | 18 + .../yarn.lock | 6230 +++++++++++++++++ .../create-remix-app-v2/package.json | 12 +- .../remix/src/utils/serverAdapters/express.ts | 102 +- 22 files changed, 7179 insertions(+), 22 deletions(-) create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.eslintrc.js create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.gitignore create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.npmrc create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/README.md create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/entry.client.tsx create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/entry.server.tsx create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/root.tsx create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/routes/_index.tsx create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/routes/client-error.tsx create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/routes/navigate.tsx create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/routes/user.$id.tsx create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/env.d.ts create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/package.json create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/playwright.config.ts create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/server.mjs create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/tests/behaviour-client.test.ts create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/tsconfig.json create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/vite.config.ts create mode 100644 dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/yarn.lock diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 52ad9f46570f..f6ac07ee2532 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1057,6 +1057,7 @@ jobs: 'create-next-app', 'create-remix-app', 'create-remix-app-v2', + 'create-remix-app-express-vite-dev', 'debug-id-sourcemaps', 'nextjs-app-dir', 'nextjs-14', diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.eslintrc.js b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.eslintrc.js new file mode 100644 index 000000000000..e0a82f1826e3 --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.eslintrc.js @@ -0,0 +1,79 @@ +/** + * This is intended to be a basic starting point for linting in your app. + * It relies on recommended configs out of the box for simplicity, but you can + * and should modify this configuration to best suit your team's needs. + */ + +/** @type {import('eslint').Linter.Config} */ +module.exports = { + root: true, + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + ecmaFeatures: { + jsx: true, + }, + }, + env: { + browser: true, + commonjs: true, + es6: true, + }, + + // Base config + extends: ['eslint:recommended'], + + overrides: [ + // React + { + files: ['**/*.{js,jsx,ts,tsx}'], + plugins: ['react', 'jsx-a11y'], + extends: [ + 'plugin:react/recommended', + 'plugin:react/jsx-runtime', + 'plugin:react-hooks/recommended', + 'plugin:jsx-a11y/recommended', + ], + settings: { + react: { + version: 'detect', + }, + formComponents: ['Form'], + linkComponents: [ + { name: 'Link', linkAttribute: 'to' }, + { name: 'NavLink', linkAttribute: 'to' }, + ], + 'import/resolver': { + typescript: {}, + }, + }, + }, + + // Typescript + { + files: ['**/*.{ts,tsx}'], + plugins: ['@typescript-eslint', 'import'], + parser: '@typescript-eslint/parser', + settings: { + 'import/internal-regex': '^~/', + 'import/resolver': { + node: { + extensions: ['.ts', '.tsx'], + }, + typescript: { + alwaysTryTypes: true, + }, + }, + }, + extends: ['plugin:@typescript-eslint/recommended', 'plugin:import/recommended', 'plugin:import/typescript'], + }, + + // Node + { + files: ['.eslintrc.js', 'server.mjs'], + env: { + node: true, + }, + }, + ], +}; diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.gitignore b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.gitignore new file mode 100644 index 000000000000..80ec311f4ff5 --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.gitignore @@ -0,0 +1,5 @@ +node_modules + +/.cache +/build +.env diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.npmrc b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.npmrc new file mode 100644 index 000000000000..070f80f05092 --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/.npmrc @@ -0,0 +1,2 @@ +@sentry:registry=http://127.0.0.1:4873 +@sentry-internal:registry=http://127.0.0.1:4873 diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/README.md b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/README.md new file mode 100644 index 000000000000..ec619a8eb455 --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/README.md @@ -0,0 +1,34 @@ +# Welcome to Remix + Vite! + +📖 See the [Remix docs](https://remix.run/docs) and the [Remix Vite docs](https://remix.run/docs/en/main/future/vite) for details on supported features. + +## Development + +Run the Express server with Vite dev middleware: + +```shellscript +npm run dev +``` + +## Deployment + +First, build your app for production: + +```sh +npm run build +``` + +Then run the app in production mode: + +```sh +npm start +``` + +Now you'll need to pick a host to deploy it to. + +### DIY + +If you're familiar with deploying Express applications you should be right at home. Just make sure to deploy the output of `npm run build` + +- `build/server` +- `build/client` diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/entry.client.tsx b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/entry.client.tsx new file mode 100644 index 000000000000..d71aaa5cd286 --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/entry.client.tsx @@ -0,0 +1,46 @@ +import { RemixBrowser, useLocation, useMatches } from '@remix-run/react'; +import * as Sentry from '@sentry/remix'; +import { StrictMode, startTransition, useEffect } from 'react'; +import { hydrateRoot } from 'react-dom/client'; + +Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions + dsn: window.ENV.SENTRY_DSN, + integrations: [ + Sentry.browserTracingIntegration({ + useEffect, + useLocation, + useMatches, + }), + new Sentry.Replay(), + ], + // Performance Monitoring + tracesSampleRate: 1.0, // Capture 100% of the transactions, reduce in production! + // Session Replay + replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production. + replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur. +}); + +Sentry.addEventProcessor(event => { + if ( + event.type === 'transaction' && + (event.contexts?.trace?.op === 'pageload' || event.contexts?.trace?.op === 'navigation') + ) { + const eventId = event.event_id; + if (eventId) { + window.recordedTransactions = window.recordedTransactions || []; + window.recordedTransactions.push(eventId); + } + } + + return event; +}); + +startTransition(() => { + hydrateRoot( + document, + + + , + ); +}); diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/entry.server.tsx b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/entry.server.tsx new file mode 100644 index 000000000000..c3deb6369af3 --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/entry.server.tsx @@ -0,0 +1,147 @@ +import { PassThrough } from 'node:stream'; + +import type { AppLoadContext, EntryContext } from '@remix-run/node'; +import { createReadableStreamFromReadable } from '@remix-run/node'; +import { installGlobals } from '@remix-run/node'; +import { RemixServer } from '@remix-run/react'; +import * as Sentry from '@sentry/remix'; +import * as isbotModule from 'isbot'; +import { renderToPipeableStream } from 'react-dom/server'; + +installGlobals(); + +const ABORT_DELAY = 5_000; + +Sentry.init({ + environment: 'qa', // dynamic sampling bias to keep transactions + dsn: process.env.E2E_TEST_DSN, + // Performance Monitoring + tracesSampleRate: 1.0, // Capture 100% of the transactions, reduce in production! +}); + +export const handleError = Sentry.wrapRemixHandleError; + +export default function handleRequest( + request: Request, + responseStatusCode: number, + responseHeaders: Headers, + remixContext: EntryContext, + loadContext: AppLoadContext, +) { + return isBotRequest(request.headers.get('user-agent')) + ? handleBotRequest(request, responseStatusCode, responseHeaders, remixContext) + : handleBrowserRequest(request, responseStatusCode, responseHeaders, remixContext); +} + +// We have some Remix apps in the wild already running with isbot@3 so we need +// to maintain backwards compatibility even though we want new apps to use +// isbot@4. That way, we can ship this as a minor Semver update to @remix-run/dev. +function isBotRequest(userAgent: string | null) { + if (!userAgent) { + return false; + } + + // isbot >= 3.8.0, >4 + if ('isbot' in isbotModule && typeof isbotModule.isbot === 'function') { + return isbotModule.isbot(userAgent); + } + + // isbot < 3.8.0 + if ('default' in isbotModule && typeof isbotModule.default === 'function') { + return isbotModule.default(userAgent); + } + + return false; +} + +function handleBotRequest( + request: Request, + responseStatusCode: number, + responseHeaders: Headers, + remixContext: EntryContext, +) { + return new Promise((resolve, reject) => { + let shellRendered = false; + const { pipe, abort } = renderToPipeableStream( + , + { + onAllReady() { + shellRendered = true; + const body = new PassThrough(); + const stream = createReadableStreamFromReadable(body); + + responseHeaders.set('Content-Type', 'text/html'); + + resolve( + new Response(stream, { + headers: responseHeaders, + status: responseStatusCode, + }), + ); + + pipe(body); + }, + onShellError(error: unknown) { + reject(error); + }, + onError(error: unknown) { + responseStatusCode = 500; + // Log streaming rendering errors from inside the shell. Don't log + // errors encountered during initial shell rendering since they'll + // reject and get logged in handleDocumentRequest. + if (shellRendered) { + console.error(error); + } + }, + }, + ); + + setTimeout(abort, ABORT_DELAY); + }); +} + +function handleBrowserRequest( + request: Request, + responseStatusCode: number, + responseHeaders: Headers, + remixContext: EntryContext, +) { + return new Promise((resolve, reject) => { + let shellRendered = false; + const { pipe, abort } = renderToPipeableStream( + , + { + onShellReady() { + shellRendered = true; + const body = new PassThrough(); + const stream = createReadableStreamFromReadable(body); + + responseHeaders.set('Content-Type', 'text/html'); + + resolve( + new Response(stream, { + headers: responseHeaders, + status: responseStatusCode, + }), + ); + + pipe(body); + }, + onShellError(error: unknown) { + reject(error); + }, + onError(error: unknown) { + responseStatusCode = 500; + // Log streaming rendering errors from inside the shell. Don't log + // errors encountered during initial shell rendering since they'll + // reject and get logged in handleDocumentRequest. + if (shellRendered) { + console.error(error); + } + }, + }, + ); + + setTimeout(abort, ABORT_DELAY); + }); +} diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/root.tsx b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/root.tsx new file mode 100644 index 000000000000..517a37a9d76b --- /dev/null +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/app/root.tsx @@ -0,0 +1,80 @@ +import { cssBundleHref } from '@remix-run/css-bundle'; +import { LinksFunction, MetaFunction, json } from '@remix-run/node'; +import { + Links, + LiveReload, + Meta, + Outlet, + Scripts, + ScrollRestoration, + useLoaderData, + useRouteError, +} from '@remix-run/react'; +import { captureRemixErrorBoundaryError, withSentry } from '@sentry/remix'; +import type { SentryMetaArgs } from '@sentry/remix'; + +export const links: LinksFunction = () => [...(cssBundleHref ? [{ rel: 'stylesheet', href: cssBundleHref }] : [])]; + +export const loader = () => { + return json({ + ENV: { + SENTRY_DSN: process.env.E2E_TEST_DSN, + }, + }); +}; + +export const meta = ({ data }: SentryMetaArgs>) => { + return [ + { + env: data.ENV, + }, + { + name: 'sentry-trace', + content: data.sentryTrace, + }, + { + name: 'baggage', + content: data.sentryBaggage, + }, + ]; +}; + +export function ErrorBoundary() { + const error = useRouteError(); + const eventId = captureRemixErrorBoundaryError(error); + + return ( +
+ ErrorBoundary Error + {eventId} +
+ ); +} + +function App() { + const { ENV } = useLoaderData(); + + return ( + + + + +