diff --git a/.size-limit.js b/.size-limit.js index 88a876ee8fd9..b28892aecb89 100644 --- a/.size-limit.js +++ b/.size-limit.js @@ -79,7 +79,7 @@ module.exports = [ path: 'packages/browser/build/npm/esm/index.js', import: createImport('init', 'browserTracingIntegration', 'replayIntegration', 'replayCanvasIntegration'), gzip: true, - limit: '80 KB', + limit: '79 KB', }, { name: '@sentry/browser (incl. Tracing, Replay, Feedback)', diff --git a/CHANGELOG.md b/CHANGELOG.md index 23375eb92a2b..9ffcb6b31942 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,37 @@ ## Unreleased +### Deprecated `@WithSentry` in `@sentry/nestjs` + +The `@WithSentry` decorator was deprecated. Use `@SentryExceptionCaptured` instead. This is a simple renaming and functionality stays identical. + - "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott +## 8.39.0 + +### Important Changes + +- **feat(nestjs): Instrument event handlers ([#14307](https://github.com/getsentry/sentry-javascript/pull/14307))** + +The `@sentry/nestjs` SDK will now capture performance data for [NestJS Events (`@nestjs/event-emitter`)](https://docs.nestjs.com/techniques/events) + +### Other Changes + +- feat(nestjs): Add alias `@SentryExceptionCaptured` for `@WithSentry` ([#14322](https://github.com/getsentry/sentry-javascript/pull/14322)) +- feat(nestjs): Duplicate `SentryService` behaviour into `@sentry/nestjs` SDK `init()` ([#14321](https://github.com/getsentry/sentry-javascript/pull/14321)) +- feat(nestjs): Handle GraphQL contexts in `SentryGlobalFilter` ([#14320](https://github.com/getsentry/sentry-javascript/pull/14320)) +- feat(node): Add alias `childProcessIntegration` for `processThreadBreadcrumbIntegration` and deprecate it ([#14334](https://github.com/getsentry/sentry-javascript/pull/14334)) +- feat(node): Ensure request bodies are reliably captured for http requests ([#13746](https://github.com/getsentry/sentry-javascript/pull/13746)) +- feat(replay): Upgrade rrweb packages to 2.29.0 ([#14160](https://github.com/getsentry/sentry-javascript/pull/14160)) +- fix(cdn): Ensure `_sentryModuleMetadata` is not mangled ([#14344](https://github.com/getsentry/sentry-javascript/pull/14344)) +- fix(core): Set `sentry.source` attribute to `custom` when calling `span.updateName` on `SentrySpan` ([#14251](https://github.com/getsentry/sentry-javascript/pull/14251)) +- fix(mongo): rewrite Buffer as ? during serialization ([#14071](https://github.com/getsentry/sentry-javascript/pull/14071)) +- fix(replay): Remove replay id from DSC on expired sessions ([#14342](https://github.com/getsentry/sentry-javascript/pull/14342)) +- ref(profiling) Fix electron crash ([#14216](https://github.com/getsentry/sentry-javascript/pull/14216)) +- ref(types): Deprecate `Request` type in favor of `RequestEventData` ([#14317](https://github.com/getsentry/sentry-javascript/pull/14317)) +- ref(utils): Stop setting `transaction` in `requestDataIntegration` ([#14306](https://github.com/getsentry/sentry-javascript/pull/14306)) +- ref(vue): Reduce bundle size for starting application render span ([#14275](https://github.com/getsentry/sentry-javascript/pull/14275)) + ## 8.38.0 - docs: Improve docstrings for node otel integrations ([#14217](https://github.com/getsentry/sentry-javascript/pull/14217)) diff --git a/dev-packages/browser-integration-tests/package.json b/dev-packages/browser-integration-tests/package.json index 5dfd72c4dcdf..c08b03e00383 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": "8.38.0", + "version": "8.39.0", "main": "index.js", "license": "MIT", "engines": { @@ -43,7 +43,7 @@ "@babel/preset-typescript": "^7.16.7", "@playwright/test": "^1.44.1", "@sentry-internal/rrweb": "2.29.0", - "@sentry/browser": "8.38.0", + "@sentry/browser": "8.39.0", "axios": "1.7.7", "babel-loader": "^8.2.2", "html-webpack-plugin": "^5.5.0", diff --git a/dev-packages/browser-integration-tests/utils/helpers.ts b/dev-packages/browser-integration-tests/utils/helpers.ts index bb37aa9a939e..7746ce246be6 100644 --- a/dev-packages/browser-integration-tests/utils/helpers.ts +++ b/dev-packages/browser-integration-tests/utils/helpers.ts @@ -1,4 +1,5 @@ import type { Page, Request } from '@playwright/test'; +import { parseEnvelope } from '@sentry/core'; import type { Envelope, EnvelopeItem, @@ -7,7 +8,6 @@ import type { EventEnvelope, EventEnvelopeHeaders, } from '@sentry/types'; -import { parseEnvelope } from '@sentry/utils'; export const envelopeUrlRegex = /\.sentry\.io\/api\/\d+\/envelope\//; diff --git a/dev-packages/bundle-analyzer-scenarios/package.json b/dev-packages/bundle-analyzer-scenarios/package.json index d27fa4ae46f9..4f0deb78b479 100644 --- a/dev-packages/bundle-analyzer-scenarios/package.json +++ b/dev-packages/bundle-analyzer-scenarios/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/bundle-analyzer-scenarios", - "version": "8.38.0", + "version": "8.39.0", "description": "Scenarios to test bundle analysis with", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/dev-packages/bundle-analyzer-scenarios", diff --git a/dev-packages/clear-cache-gh-action/package.json b/dev-packages/clear-cache-gh-action/package.json index d599ce63fe5c..d630c2da04a8 100644 --- a/dev-packages/clear-cache-gh-action/package.json +++ b/dev-packages/clear-cache-gh-action/package.json @@ -1,7 +1,7 @@ { "name": "@sentry-internal/clear-cache-gh-action", "description": "An internal Github Action to clear GitHub caches.", - "version": "8.38.0", + "version": "8.39.0", "license": "MIT", "engines": { "node": ">=18" diff --git a/dev-packages/e2e-tests/package.json b/dev-packages/e2e-tests/package.json index ccf59ef38f9d..065208698509 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": "8.38.0", + "version": "8.39.0", "license": "MIT", "private": true, "scripts": { diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-legacy/package.json b/dev-packages/e2e-tests/test-applications/create-remix-app-express-legacy/package.json index 53ccbdff9e7f..1b9747d95bdf 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-express-legacy/package.json +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-legacy/package.json @@ -32,7 +32,7 @@ "@sentry-internal/test-utils": "link:../../../test-utils", "@remix-run/dev": "^2.7.2", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "@types/compression": "^1.7.2", "@types/express": "^4.17.17", "@types/morgan": "^1.9.4", diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-legacy/tests/server-transactions.test.ts b/dev-packages/e2e-tests/test-applications/create-remix-app-express-legacy/tests/server-transactions.test.ts index 9dcf71e9af7f..24b6024273d3 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-express-legacy/tests/server-transactions.test.ts +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-legacy/tests/server-transactions.test.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { uuid4 } from '@sentry/utils'; +import { uuid4 } from '@sentry/core'; import { waitForTransaction } from '@sentry-internal/test-utils'; diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/package.json b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/package.json index b7876bb08e44..534078696906 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/package.json +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/package.json @@ -29,7 +29,7 @@ "@sentry-internal/test-utils": "link:../../../test-utils", "@remix-run/dev": "^2.7.2", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "@types/compression": "^1.7.5", "@types/express": "^4.17.20", "@types/morgan": "^1.9.9", diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/tests/server-transactions.test.ts b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/tests/server-transactions.test.ts index 101900a8ac67..2e91a73258f7 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/tests/server-transactions.test.ts +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/tests/server-transactions.test.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { uuid4 } from '@sentry/utils'; +import { uuid4 } from '@sentry/core'; import { waitForTransaction } from '@sentry-internal/test-utils'; diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express/package.json b/dev-packages/e2e-tests/test-applications/create-remix-app-express/package.json index 53ccbdff9e7f..1b9747d95bdf 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-express/package.json +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express/package.json @@ -32,7 +32,7 @@ "@sentry-internal/test-utils": "link:../../../test-utils", "@remix-run/dev": "^2.7.2", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "@types/compression": "^1.7.2", "@types/express": "^4.17.17", "@types/morgan": "^1.9.4", diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-express/tests/server-transactions.test.ts b/dev-packages/e2e-tests/test-applications/create-remix-app-express/tests/server-transactions.test.ts index b43d538ca683..644760d220a6 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-express/tests/server-transactions.test.ts +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-express/tests/server-transactions.test.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { uuid4 } from '@sentry/utils'; +import { uuid4 } from '@sentry/core'; import { waitForTransaction } from '@sentry-internal/test-utils'; diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-legacy/package.json b/dev-packages/e2e-tests/test-applications/create-remix-app-legacy/package.json index 6b50ddc96b4a..1bd69b66ff67 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-legacy/package.json +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-legacy/package.json @@ -30,7 +30,7 @@ "@types/react": "^18.0.35", "@types/react-dom": "^18.0.11", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "eslint": "^8.38.0", "typescript": "^5.0.4" }, diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-legacy/tests/server-transactions.test.ts b/dev-packages/e2e-tests/test-applications/create-remix-app-legacy/tests/server-transactions.test.ts index ec9f2a1eefe9..fd0bfc4aad20 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-legacy/tests/server-transactions.test.ts +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-legacy/tests/server-transactions.test.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { uuid4 } from '@sentry/utils'; +import { uuid4 } from '@sentry/core'; import { waitForTransaction } from '@sentry-internal/test-utils'; diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-v2-legacy/package.json b/dev-packages/e2e-tests/test-applications/create-remix-app-v2-legacy/package.json index a5f932f7cab4..93938b75c6a1 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-v2-legacy/package.json +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-v2-legacy/package.json @@ -26,7 +26,7 @@ "@remix-run/dev": "2.7.2", "@remix-run/eslint-config": "2.7.2", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "@types/react": "^18.0.35", "@types/react-dom": "^18.0.11", "eslint": "^8.38.0", diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-v2-legacy/tests/server-transactions.test.ts b/dev-packages/e2e-tests/test-applications/create-remix-app-v2-legacy/tests/server-transactions.test.ts index d8926c5ff2d1..e19a7056e158 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-v2-legacy/tests/server-transactions.test.ts +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-v2-legacy/tests/server-transactions.test.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { uuid4 } from '@sentry/utils'; +import { uuid4 } from '@sentry/core'; import { waitForTransaction } from '@sentry-internal/test-utils'; diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/package.json b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/package.json index a1fab6f6de9a..17adb9ace8ae 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/package.json +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/package.json @@ -26,7 +26,7 @@ "@remix-run/dev": "2.7.2", "@remix-run/eslint-config": "2.7.2", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "@types/react": "^18.0.35", "@types/react-dom": "^18.0.11", "eslint": "^8.38.0", diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/tests/server-transactions.test.ts b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/tests/server-transactions.test.ts index e45492358c13..bb2664a0a447 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app-v2/tests/server-transactions.test.ts +++ b/dev-packages/e2e-tests/test-applications/create-remix-app-v2/tests/server-transactions.test.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { uuid4 } from '@sentry/utils'; +import { uuid4 } from '@sentry/core'; import { waitForTransaction } from '@sentry-internal/test-utils'; diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app/package.json b/dev-packages/e2e-tests/test-applications/create-remix-app/package.json index 4850fedf1e5d..a3210d7c3187 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app/package.json +++ b/dev-packages/e2e-tests/test-applications/create-remix-app/package.json @@ -30,7 +30,7 @@ "@types/react": "^18.0.35", "@types/react-dom": "^18.0.11", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "eslint": "^8.38.0", "typescript": "^5.0.4" }, diff --git a/dev-packages/e2e-tests/test-applications/create-remix-app/tests/server-transactions.test.ts b/dev-packages/e2e-tests/test-applications/create-remix-app/tests/server-transactions.test.ts index 0a017b824ea5..ac0534f4aaef 100644 --- a/dev-packages/e2e-tests/test-applications/create-remix-app/tests/server-transactions.test.ts +++ b/dev-packages/e2e-tests/test-applications/create-remix-app/tests/server-transactions.test.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { uuid4 } from '@sentry/utils'; +import { uuid4 } from '@sentry/core'; import { waitForTransaction } from '@sentry-internal/test-utils'; diff --git a/dev-packages/e2e-tests/test-applications/generic-ts3.8/package.json b/dev-packages/e2e-tests/test-applications/generic-ts3.8/package.json index 80875e5a2d0f..eda13af9e170 100644 --- a/dev-packages/e2e-tests/test-applications/generic-ts3.8/package.json +++ b/dev-packages/e2e-tests/test-applications/generic-ts3.8/package.json @@ -19,7 +19,7 @@ "@sentry/node": "latest || *", "@sentry-internal/replay": "latest || *", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "@sentry/wasm": "latest || *" } } diff --git a/dev-packages/e2e-tests/test-applications/nextjs-13/package.json b/dev-packages/e2e-tests/test-applications/nextjs-13/package.json index c56d7c6ed204..51eaf9bf9fb4 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-13/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-13/package.json @@ -36,7 +36,6 @@ "@sentry/opentelemetry": "latest || *", "@sentry/react": "latest || *", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", "@sentry/vercel-edge": "latest || *" }, "volta": { diff --git a/dev-packages/e2e-tests/test-applications/nextjs-14/package.json b/dev-packages/e2e-tests/test-applications/nextjs-14/package.json index c8fcba03410d..f4569e1f6ceb 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-14/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-14/package.json @@ -36,7 +36,6 @@ "@sentry/react": "latest || *", "@sentry-internal/replay": "latest || *", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", "@sentry/vercel-edge": "latest || *" }, "volta": { diff --git a/dev-packages/e2e-tests/test-applications/nextjs-15/package.json b/dev-packages/e2e-tests/test-applications/nextjs-15/package.json index 1c5754bd66da..6e9fb6af5b07 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-15/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-15/package.json @@ -37,7 +37,6 @@ "@sentry/react": "latest || *", "@sentry-internal/replay": "latest || *", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", "@sentry/vercel-edge": "latest || *" }, "volta": { diff --git a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json index b0bc898d9bd1..91791b89be75 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/package.json @@ -38,7 +38,6 @@ "@sentry/react": "latest || *", "@sentry-internal/replay": "latest || *", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", "@sentry/vercel-edge": "latest || *", "ts-node": "10.9.1" }, diff --git a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/tests/server-components.test.ts b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/tests/server-components.test.ts index 75f30075a47f..ff61cb3bd682 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-app-dir/tests/server-components.test.ts +++ b/dev-packages/e2e-tests/test-applications/nextjs-app-dir/tests/server-components.test.ts @@ -33,17 +33,12 @@ test('Sends a transaction for a request to app router', async ({ page }) => { trace_id: expect.any(String), }); - expect(transactionEvent).toEqual( - expect.objectContaining({ - request: { - cookies: {}, - headers: expect.any(Object), - url: expect.any(String), - }, + expect(transactionEvent.request).toEqual({ + cookies: {}, + headers: expect.objectContaining({ + 'user-agent': expect.any(String), }), - ); - - expect(Object.keys(transactionEvent.request?.headers!).length).toBeGreaterThan(0); + }); // The transaction should not contain any spans with the same name as the transaction // e.g. "GET /server-component/parameter/[...parameters]" diff --git a/dev-packages/e2e-tests/test-applications/nextjs-turbo/package.json b/dev-packages/e2e-tests/test-applications/nextjs-turbo/package.json index 9cf05720fc28..ccefef67dfcf 100644 --- a/dev-packages/e2e-tests/test-applications/nextjs-turbo/package.json +++ b/dev-packages/e2e-tests/test-applications/nextjs-turbo/package.json @@ -36,7 +36,6 @@ "@sentry/react": "latest || *", "@sentry-internal/replay": "latest || *", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", "@sentry/vercel-edge": "latest || *", "import-in-the-middle": "1.11.2" }, diff --git a/dev-packages/e2e-tests/test-applications/node-connect/package.json b/dev-packages/e2e-tests/test-applications/node-connect/package.json index e13c082ef646..bf2ec590b285 100644 --- a/dev-packages/e2e-tests/test-applications/node-connect/package.json +++ b/dev-packages/e2e-tests/test-applications/node-connect/package.json @@ -14,7 +14,6 @@ "@sentry/node": "latest || *", "@sentry/types": "latest || *", "@sentry/core": "latest || *", - "@sentry/utils": "latest || *", "@sentry/opentelemetry": "latest || *", "@types/node": "18.15.1", "connect": "3.7.0", diff --git a/dev-packages/e2e-tests/test-applications/node-fastify-5/package.json b/dev-packages/e2e-tests/test-applications/node-fastify-5/package.json index 4d1385df12b8..c60d9a3dae51 100644 --- a/dev-packages/e2e-tests/test-applications/node-fastify-5/package.json +++ b/dev-packages/e2e-tests/test-applications/node-fastify-5/package.json @@ -14,7 +14,6 @@ "@sentry/node": "latest || *", "@sentry/types": "latest || *", "@sentry/core": "latest || *", - "@sentry/utils": "latest || *", "@sentry/opentelemetry": "latest || *", "@types/node": "22.7.5", "fastify": "5.0.0", diff --git a/dev-packages/e2e-tests/test-applications/node-fastify/package.json b/dev-packages/e2e-tests/test-applications/node-fastify/package.json index c862a9b7037b..0478786cd499 100644 --- a/dev-packages/e2e-tests/test-applications/node-fastify/package.json +++ b/dev-packages/e2e-tests/test-applications/node-fastify/package.json @@ -14,7 +14,6 @@ "@sentry/node": "latest || *", "@sentry/types": "latest || *", "@sentry/core": "latest || *", - "@sentry/utils": "latest || *", "@sentry/opentelemetry": "latest || *", "@types/node": "18.15.1", "fastify": "4.23.2", diff --git a/dev-packages/e2e-tests/test-applications/solid-solidrouter/package.json b/dev-packages/e2e-tests/test-applications/solid-solidrouter/package.json index bec942865d84..55d4c5743e0a 100644 --- a/dev-packages/e2e-tests/test-applications/solid-solidrouter/package.json +++ b/dev-packages/e2e-tests/test-applications/solid-solidrouter/package.json @@ -17,7 +17,7 @@ "@playwright/test": "^1.44.1", "@sentry-internal/test-utils": "link:../../../test-utils", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "autoprefixer": "^10.4.17", "postcss": "^8.4.33", "solid-devtools": "^0.29.2", diff --git a/dev-packages/e2e-tests/test-applications/solid/package.json b/dev-packages/e2e-tests/test-applications/solid/package.json index b4d896b081af..51eccbae8a31 100644 --- a/dev-packages/e2e-tests/test-applications/solid/package.json +++ b/dev-packages/e2e-tests/test-applications/solid/package.json @@ -17,7 +17,7 @@ "@playwright/test": "^1.44.1", "@sentry-internal/test-utils": "link:../../../test-utils", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "autoprefixer": "^10.4.17", "postcss": "^8.4.33", "solid-devtools": "^0.29.2", diff --git a/dev-packages/e2e-tests/test-applications/svelte-5/package.json b/dev-packages/e2e-tests/test-applications/svelte-5/package.json index 9b6d6c5d0420..0eb3d4154d40 100644 --- a/dev-packages/e2e-tests/test-applications/svelte-5/package.json +++ b/dev-packages/e2e-tests/test-applications/svelte-5/package.json @@ -16,7 +16,7 @@ "@playwright/test": "^1.44.1", "@sentry-internal/test-utils": "link:../../../test-utils", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "@sveltejs/vite-plugin-svelte": "^3.0.2", "@tsconfig/svelte": "^5.0.2", "svelte": "^5.0.0-next.115", diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2-svelte-5/package.json b/dev-packages/e2e-tests/test-applications/sveltekit-2-svelte-5/package.json index 466e9feb5ffb..192b56a98fe9 100644 --- a/dev-packages/e2e-tests/test-applications/sveltekit-2-svelte-5/package.json +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2-svelte-5/package.json @@ -1,36 +1,36 @@ { - "name": "sveltekit-2-svelte-5", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "proxy": "node start-event-proxy.mjs", - "clean": "npx rimraf node_modules pnpm-lock.yaml", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "test:prod": "TEST_ENV=production playwright test", - "test:build": "pnpm install && npx playwright install && pnpm build", - "test:assert": "pnpm test:prod" - }, - "dependencies": { - "@sentry/sveltekit": "latest || *", - "@spotlightjs/spotlight": "2.0.0-alpha.1" - }, - "devDependencies": { - "@playwright/test": "^1.44.1", - "@sentry-internal/test-utils": "link:../../../test-utils", - "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", - "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte": "^5.0.0-next.115", - "svelte-check": "^3.6.0", - "tslib": "^2.4.1", - "typescript": "^5.0.0", - "vite": "^5.4.10" - }, - "type": "module" + "name": "sveltekit-2-svelte-5", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "proxy": "node start-event-proxy.mjs", + "clean": "npx rimraf node_modules pnpm-lock.yaml", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "test:prod": "TEST_ENV=production playwright test", + "test:build": "pnpm install && npx playwright install && pnpm build", + "test:assert": "pnpm test:prod" + }, + "dependencies": { + "@sentry/sveltekit": "latest || *", + "@spotlightjs/spotlight": "2.0.0-alpha.1" + }, + "devDependencies": { + "@playwright/test": "^1.44.1", + "@sentry-internal/test-utils": "link:../../../test-utils", + "@sentry/types": "latest || *", + "@sentry/core": "latest || *", + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^5.0.0-next.115", + "svelte-check": "^3.6.0", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.4.10" + }, + "type": "module" } diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2-twp/package.json b/dev-packages/e2e-tests/test-applications/sveltekit-2-twp/package.json index f03ee63f4fa0..56daf84e58b5 100644 --- a/dev-packages/e2e-tests/test-applications/sveltekit-2-twp/package.json +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2-twp/package.json @@ -1,35 +1,35 @@ { - "name": "sveltekit-2-svelte-5", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "proxy": "node start-event-proxy.mjs", - "clean": "npx rimraf node_modules pnpm-lock.yaml", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "test:prod": "TEST_ENV=production playwright test", - "test:build": "pnpm install && npx playwright install && pnpm build", - "test:assert": "pnpm test:prod" - }, - "dependencies": { - "@sentry/sveltekit": "latest || *" - }, - "devDependencies": { - "@playwright/test": "^1.44.1", - "@sentry-internal/test-utils": "link:../../../test-utils", - "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", - "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte": "^5.0.0-next.115", - "svelte-check": "^3.6.0", - "tslib": "^2.4.1", - "typescript": "^5.0.0", - "vite": "^5.4.10" - }, - "type": "module" + "name": "sveltekit-2-svelte-5", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "proxy": "node start-event-proxy.mjs", + "clean": "npx rimraf node_modules pnpm-lock.yaml", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "test:prod": "TEST_ENV=production playwright test", + "test:build": "pnpm install && npx playwright install && pnpm build", + "test:assert": "pnpm test:prod" + }, + "dependencies": { + "@sentry/sveltekit": "latest || *" + }, + "devDependencies": { + "@playwright/test": "^1.44.1", + "@sentry-internal/test-utils": "link:../../../test-utils", + "@sentry/types": "latest || *", + "@sentry/core": "latest || *", + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^5.0.0-next.115", + "svelte-check": "^3.6.0", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.4.10" + }, + "type": "module" } diff --git a/dev-packages/e2e-tests/test-applications/sveltekit-2/package.json b/dev-packages/e2e-tests/test-applications/sveltekit-2/package.json index d39fc123293a..080a23ebcfe8 100644 --- a/dev-packages/e2e-tests/test-applications/sveltekit-2/package.json +++ b/dev-packages/e2e-tests/test-applications/sveltekit-2/package.json @@ -21,11 +21,11 @@ "@playwright/test": "^1.44.1", "@sentry-internal/test-utils": "link:../../../test-utils", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "@sveltejs/adapter-auto": "^3.0.0", "@sveltejs/adapter-node": "^2.0.0", "@sveltejs/kit": "^2.5.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", "svelte": "^4.2.8", "svelte-check": "^3.6.0", "typescript": "^5.0.0", diff --git a/dev-packages/e2e-tests/test-applications/sveltekit/package.json b/dev-packages/e2e-tests/test-applications/sveltekit/package.json index 563307252785..c7e9aa022d1e 100644 --- a/dev-packages/e2e-tests/test-applications/sveltekit/package.json +++ b/dev-packages/e2e-tests/test-applications/sveltekit/package.json @@ -20,7 +20,7 @@ "@playwright/test": "^1.44.1", "@sentry-internal/test-utils": "link:../../../test-utils", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "@sveltejs/adapter-auto": "^2.0.0", "@sveltejs/adapter-node": "^1.2.4", "@sveltejs/kit": "1.20.5", diff --git a/dev-packages/e2e-tests/test-applications/vue-3/package.json b/dev-packages/e2e-tests/test-applications/vue-3/package.json index 7c530c8acf06..4f3125b81eb2 100644 --- a/dev-packages/e2e-tests/test-applications/vue-3/package.json +++ b/dev-packages/e2e-tests/test-applications/vue-3/package.json @@ -24,7 +24,7 @@ "@playwright/test": "^1.44.1", "@sentry-internal/test-utils": "link:../../../test-utils", "@sentry/types": "latest || *", - "@sentry/utils": "latest || *", + "@sentry/core": "latest || *", "@tsconfig/node20": "^20.1.2", "@types/node": "^20.11.10", "@vitejs/plugin-vue": "^5.0.3", diff --git a/dev-packages/external-contributor-gh-action/package.json b/dev-packages/external-contributor-gh-action/package.json index f35502d6c013..66e22d72e66c 100644 --- a/dev-packages/external-contributor-gh-action/package.json +++ b/dev-packages/external-contributor-gh-action/package.json @@ -1,7 +1,7 @@ { "name": "@sentry-internal/external-contributor-gh-action", "description": "An internal Github Action to add external contributors to the CHANGELOG.md file.", - "version": "8.38.0", + "version": "8.39.0", "license": "MIT", "engines": { "node": ">=18" diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index 5b62e3a8e996..3d9b77b19ed8 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": "8.38.0", + "version": "8.39.0", "license": "MIT", "engines": { "node": ">=14.18" @@ -31,10 +31,10 @@ "@nestjs/core": "10.4.6", "@nestjs/platform-express": "10.4.6", "@prisma/client": "5.9.1", - "@sentry/aws-serverless": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/aws-serverless": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/types": "8.39.0", + "@sentry/core": "8.39.0", "@types/mongodb": "^3.6.20", "@types/mysql": "^2.15.21", "@types/pg": "^8.6.5", diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-assign/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-assign/test.ts index 1ef9c11aff70..40bbb03f8d50 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-assign/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-assign/test.ts @@ -1,4 +1,4 @@ -import { TRACEPARENT_REGEXP } from '@sentry/utils'; +import { TRACEPARENT_REGEXP } from '@sentry/core'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-out/test.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-out/test.ts index d9595bc6fc1a..db46bb491904 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-out/test.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/trace-header-out/test.ts @@ -1,4 +1,4 @@ -import { TRACEPARENT_REGEXP } from '@sentry/utils'; +import { TRACEPARENT_REGEXP } from '@sentry/core'; import { cleanupChildProcesses, createRunner } from '../../../../utils/runner'; import type { TestAPIResponse } from '../server'; diff --git a/dev-packages/node-integration-tests/suites/tracing/nestjs-errors-no-express/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/nestjs-errors-no-express/scenario.ts index e4f15f80fe70..3dcf30f97b20 100644 --- a/dev-packages/node-integration-tests/suites/tracing/nestjs-errors-no-express/scenario.ts +++ b/dev-packages/node-integration-tests/suites/tracing/nestjs-errors-no-express/scenario.ts @@ -48,6 +48,7 @@ class AppModule {} async function run(): Promise { const app = await NestFactory.create(AppModule); const { httpAdapter } = app.get(HttpAdapterHost); + // eslint-disable-next-line deprecation/deprecation Sentry.setupNestErrorHandler(app, new BaseExceptionFilter(httpAdapter)); await app.listen(port); sendPortToRunner(port); diff --git a/dev-packages/node-integration-tests/suites/tracing/nestjs-errors/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/nestjs-errors/scenario.ts index 7cf65cbbbb1c..6f4c9fa6955e 100644 --- a/dev-packages/node-integration-tests/suites/tracing/nestjs-errors/scenario.ts +++ b/dev-packages/node-integration-tests/suites/tracing/nestjs-errors/scenario.ts @@ -46,6 +46,7 @@ class AppModule {} async function run(): Promise { const app = await NestFactory.create(AppModule); const { httpAdapter } = app.get(HttpAdapterHost); + // eslint-disable-next-line deprecation/deprecation Sentry.setupNestErrorHandler(app, new BaseExceptionFilter(httpAdapter)); await app.listen(port); sendPortToRunner(port); diff --git a/dev-packages/node-integration-tests/suites/tracing/nestjs-no-express/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/nestjs-no-express/scenario.ts index e77888ded6a3..62e042a4bf7a 100644 --- a/dev-packages/node-integration-tests/suites/tracing/nestjs-no-express/scenario.ts +++ b/dev-packages/node-integration-tests/suites/tracing/nestjs-no-express/scenario.ts @@ -48,6 +48,7 @@ class AppModule {} async function run(): Promise { const app = await NestFactory.create(AppModule); const { httpAdapter } = app.get(HttpAdapterHost); + // eslint-disable-next-line deprecation/deprecation Sentry.setupNestErrorHandler(app, new BaseExceptionFilter(httpAdapter)); await app.listen(port); sendPortToRunner(port); diff --git a/dev-packages/node-integration-tests/suites/tracing/nestjs/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/nestjs/scenario.ts index 2d4ac4e534cd..449dc82fd070 100644 --- a/dev-packages/node-integration-tests/suites/tracing/nestjs/scenario.ts +++ b/dev-packages/node-integration-tests/suites/tracing/nestjs/scenario.ts @@ -48,6 +48,7 @@ async function run(): Promise { await app.listen(port); const { httpAdapter } = app.get(HttpAdapterHost); + // eslint-disable-next-line deprecation/deprecation Sentry.setupNestErrorHandler(app, new BaseExceptionFilter(httpAdapter)); sendPortToRunner(port); } diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/setup.ts b/dev-packages/node-integration-tests/suites/tracing/prisma-orm/setup.ts index a71bec82f893..a0052511b380 100755 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/setup.ts +++ b/dev-packages/node-integration-tests/suites/tracing/prisma-orm/setup.ts @@ -1,5 +1,5 @@ import { execSync } from 'child_process'; -import { parseSemver } from '@sentry/utils'; +import { parseSemver } from '@sentry/core'; const NODE_VERSION = parseSemver(process.versions.node); diff --git a/dev-packages/node-integration-tests/utils/assertions.ts b/dev-packages/node-integration-tests/utils/assertions.ts index 68ce3941ff92..0f2713280282 100644 --- a/dev-packages/node-integration-tests/utils/assertions.ts +++ b/dev-packages/node-integration-tests/utils/assertions.ts @@ -1,3 +1,4 @@ +import { SDK_VERSION } from '@sentry/core'; import type { ClientReport, Envelope, @@ -7,7 +8,6 @@ import type { SessionAggregates, TransactionEvent, } from '@sentry/types'; -import { SDK_VERSION } from '@sentry/utils'; /** * Asserts against a Sentry Event ignoring non-deterministic properties diff --git a/dev-packages/node-integration-tests/utils/index.ts b/dev-packages/node-integration-tests/utils/index.ts index 0beedd250980..473a69c78cd8 100644 --- a/dev-packages/node-integration-tests/utils/index.ts +++ b/dev-packages/node-integration-tests/utils/index.ts @@ -1,6 +1,6 @@ import type * as http from 'http'; +import { parseSemver } from '@sentry/core'; import type { EnvelopeItemType } from '@sentry/types'; -import { parseSemver } from '@sentry/utils'; const NODE_VERSION = parseSemver(process.versions.node).major; diff --git a/dev-packages/node-integration-tests/utils/runner.ts b/dev-packages/node-integration-tests/utils/runner.ts index 1cbd9ade2e67..2b0a83f3c63e 100644 --- a/dev-packages/node-integration-tests/utils/runner.ts +++ b/dev-packages/node-integration-tests/utils/runner.ts @@ -2,6 +2,7 @@ import { spawn, spawnSync } from 'child_process'; import { existsSync } from 'fs'; import { join } from 'path'; +import { normalize } from '@sentry/core'; import type { ClientReport, Envelope, @@ -13,7 +14,6 @@ import type { SessionAggregates, TransactionEvent, } from '@sentry/types'; -import { normalize } from '@sentry/utils'; import axios from 'axios'; import { assertEnvelopeHeader, diff --git a/dev-packages/node-integration-tests/utils/server.ts b/dev-packages/node-integration-tests/utils/server.ts index 5f9afeeb556d..f46338d7de63 100644 --- a/dev-packages/node-integration-tests/utils/server.ts +++ b/dev-packages/node-integration-tests/utils/server.ts @@ -1,6 +1,6 @@ import type { AddressInfo } from 'net'; +import { parseEnvelope } from '@sentry/core'; import type { Envelope } from '@sentry/types'; -import { parseEnvelope } from '@sentry/utils'; import express from 'express'; /** diff --git a/dev-packages/rollup-utils/package.json b/dev-packages/rollup-utils/package.json index 742edc1bef39..9f2309a6fa84 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": "8.38.0", + "version": "8.39.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/dev-packages/rollup-utils/plugins/extractPolyfillsPlugin.mjs b/dev-packages/rollup-utils/plugins/extractPolyfillsPlugin.mjs index e519f33b988f..e0a21b400f35 100644 --- a/dev-packages/rollup-utils/plugins/extractPolyfillsPlugin.mjs +++ b/dev-packages/rollup-utils/plugins/extractPolyfillsPlugin.mjs @@ -40,10 +40,10 @@ export function makeExtractPolyfillsPlugin() { return null; } - // The index.js file of the utils package will include identifiers named after polyfills so we would inject the + // The index.js file of the core package will include identifiers named after polyfills so we would inject the // polyfills, however that would override the exports so we should just skip that file. - const isUtilsPackage = process.cwd().endsWith(`packages${path.sep}utils`); - if (isUtilsPackage && sourceFile === 'index.js') { + const isCorePackage = process.cwd().endsWith(`packages${path.sep}core`); + if (isCorePackage && sourceFile === 'index.js') { return null; } @@ -190,13 +190,11 @@ function createImportOrRequireNode(polyfillNodes, currentSourceFile, moduleForma variableDeclarator, } = recast.types.builders; - // Since our polyfills live in `@sentry/utils`, if we're importing or requiring them there the path will have to be + // Since our polyfills live in `@sentry/core`, if we're importing or requiring them there the path will have to be // relative - const isUtilsPackage = process.cwd().endsWith(path.join('packages', 'utils')); + const isCorePackage = process.cwd().endsWith(path.join('packages', 'core')); const importSource = literal( - isUtilsPackage - ? `.${path.sep}${path.relative(path.dirname(currentSourceFile), 'buildPolyfills')}` - : '@sentry/utils', + isCorePackage ? `.${path.sep}${path.relative(path.dirname(currentSourceFile), 'buildPolyfills')}` : '@sentry/core', ); // This is the `x, y, z` of inside of `import { x, y, z }` or `var { x, y, z }` diff --git a/dev-packages/size-limit-gh-action/package.json b/dev-packages/size-limit-gh-action/package.json index 985e50ef37be..8c8ebbfab079 100644 --- a/dev-packages/size-limit-gh-action/package.json +++ b/dev-packages/size-limit-gh-action/package.json @@ -1,7 +1,7 @@ { "name": "@sentry-internal/size-limit-gh-action", "description": "An internal Github Action to compare the current size of a PR against the one on develop.", - "version": "8.38.0", + "version": "8.39.0", "license": "MIT", "engines": { "node": ">=18" diff --git a/dev-packages/test-utils/package.json b/dev-packages/test-utils/package.json index 35c75d10b133..d386dee1df50 100644 --- a/dev-packages/test-utils/package.json +++ b/dev-packages/test-utils/package.json @@ -1,6 +1,6 @@ { "private": true, - "version": "8.38.0", + "version": "8.39.0", "name": "@sentry-internal/test-utils", "author": "Sentry", "license": "MIT", @@ -45,8 +45,8 @@ }, "devDependencies": { "@playwright/test": "^1.44.1", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/types": "8.39.0", + "@sentry/core": "8.39.0" }, "volta": { "extends": "../../package.json" diff --git a/dev-packages/test-utils/src/event-proxy-server.ts b/dev-packages/test-utils/src/event-proxy-server.ts index 6508dd9e5a0c..73ced8df7053 100644 --- a/dev-packages/test-utils/src/event-proxy-server.ts +++ b/dev-packages/test-utils/src/event-proxy-server.ts @@ -6,8 +6,8 @@ import * as os from 'os'; import * as path from 'path'; import * as util from 'util'; import * as zlib from 'zlib'; +import { parseEnvelope } from '@sentry/core'; import type { Envelope, EnvelopeItem, Event, SerializedSession } from '@sentry/types'; -import { parseEnvelope } from '@sentry/utils'; const readFile = util.promisify(fs.readFile); const writeFile = util.promisify(fs.writeFile); diff --git a/docs/migration/draft-v9-migration-guide.md b/docs/migration/draft-v9-migration-guide.md index 1c85f0a9fd2d..d117d66ecae3 100644 --- a/docs/migration/draft-v9-migration-guide.md +++ b/docs/migration/draft-v9-migration-guide.md @@ -14,6 +14,22 @@ - Deprecated `debugIntegration`. To log outgoing events, use [Hook Options](https://docs.sentry.io/platforms/javascript/configuration/options/#hooks) (`beforeSend`, `beforeSendTransaction`, ...). - Deprecated `sessionTimingIntegration`. To capture session durations alongside events, use [Context](https://docs.sentry.io/platforms/javascript/enriching-events/context/) (`Sentry.setContext()`). +## `@sentry/nestjs` + +- Deprecated `@WithSentry`. Use `@SentryExceptionCaptured` instead. +- Deprecated `SentryTracingInterceptor`. + If you are using `@sentry/nestjs` you can safely remove any references to the `SentryTracingInterceptor`. + If you are using another package migrate to `@sentry/nestjs` and remove the `SentryTracingInterceptor` afterwards. +- Deprecated `SentryService`. + If you are using `@sentry/nestjs` you can safely remove any references to the `SentryService`. + If you are using another package migrate to `@sentry/nestjs` and remove the `SentryService` afterwards. +- Deprecated `SentryGlobalGenericFilter`. + Use the `SentryGlobalFilter` instead. + The `SentryGlobalFilter` is a drop-in replacement. +- Deprecated `SentryGlobalGraphQLFilter`. + Use the `SentryGlobalFilter` instead. + The `SentryGlobalFilter` is a drop-in replacement. + ## `@sentry/types` - Deprecated `Request` in favor of `RequestEventData`. @@ -21,3 +37,5 @@ ## Server-side SDKs (`@sentry/node` and all dependents) - Deprecated `processThreadBreadcrumbIntegration` in favor of `childProcessIntegration`. Functionally they are the same. +- Deprecated `nestIntegration`. Use the NestJS SDK (`@sentry/nestjs`) instead. +- Deprecated `setupNestErrorHandler`. Use the NestJS SDK (`@sentry/nestjs`) instead. diff --git a/lerna.json b/lerna.json index d164bc71b6db..8db2efb66821 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "8.38.0", + "version": "8.39.0", "npmClient": "yarn" } diff --git a/packages/angular/package.json b/packages/angular/package.json index b358347ff1b5..b62299574a84 100644 --- a/packages/angular/package.json +++ b/packages/angular/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/angular", - "version": "8.38.0", + "version": "8.39.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,9 @@ "rxjs": "^6.5.5 || ^7.x" }, "dependencies": { - "@sentry/browser": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/browser": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0", "tslib": "^2.4.1" }, "devDependencies": { diff --git a/packages/angular/src/errorhandler.ts b/packages/angular/src/errorhandler.ts index f1771ba81b7e..fdb765934ea1 100644 --- a/packages/angular/src/errorhandler.ts +++ b/packages/angular/src/errorhandler.ts @@ -3,8 +3,8 @@ import type { ErrorHandler as AngularErrorHandler, OnDestroy } from '@angular/co import { Inject, Injectable } from '@angular/core'; import * as Sentry from '@sentry/browser'; import type { ReportDialogOptions } from '@sentry/browser'; +import { consoleSandbox, isString } from '@sentry/core'; import type { Event } from '@sentry/types'; -import { consoleSandbox, isString } from '@sentry/utils'; import { runOutsideAngular } from './zone'; diff --git a/packages/angular/src/sdk.ts b/packages/angular/src/sdk.ts index f8481a110887..d7cef5f55fdd 100755 --- a/packages/angular/src/sdk.ts +++ b/packages/angular/src/sdk.ts @@ -13,8 +13,8 @@ import { functionToStringIntegration, inboundFiltersIntegration, } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { Client, Integration } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { IS_DEBUG_BUILD } from './flags'; diff --git a/packages/angular/src/tracing.ts b/packages/angular/src/tracing.ts index 7f97e7c32679..0f5d3d49d211 100644 --- a/packages/angular/src/tracing.ts +++ b/packages/angular/src/tracing.ts @@ -18,8 +18,8 @@ import { startBrowserTracingNavigationSpan, startInactiveSpan, } from '@sentry/browser'; +import { logger, stripUrlQueryAndFragment, timestampInSeconds } from '@sentry/core'; import type { Integration, Span } from '@sentry/types'; -import { logger, stripUrlQueryAndFragment, timestampInSeconds } from '@sentry/utils'; import type { Observable } from 'rxjs'; import { Subscription } from 'rxjs'; import { filter, tap } from 'rxjs/operators'; diff --git a/packages/astro/package.json b/packages/astro/package.json index 0545da7fc0ad..b00c2b90f7e6 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/astro", - "version": "8.38.0", + "version": "8.39.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", @@ -56,11 +56,10 @@ "astro": ">=3.x || >=4.0.0-beta" }, "dependencies": { - "@sentry/browser": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/browser": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/types": "8.39.0", "@sentry/vite-plugin": "^2.22.6" }, "devDependencies": { diff --git a/packages/astro/src/index.server.ts b/packages/astro/src/index.server.ts index 7f0d5cc40ada..92e175b9205e 100644 --- a/packages/astro/src/index.server.ts +++ b/packages/astro/src/index.server.ts @@ -84,6 +84,7 @@ export { mysql2Integration, mysqlIntegration, nativeNodeFetchIntegration, + // eslint-disable-next-line deprecation/deprecation nestIntegration, NodeClient, nodeContextIntegration, @@ -118,6 +119,7 @@ export { setupExpressErrorHandler, setupHapiErrorHandler, setupKoaErrorHandler, + // eslint-disable-next-line deprecation/deprecation setupNestErrorHandler, setUser, spanToBaggageHeader, diff --git a/packages/astro/src/integration/index.ts b/packages/astro/src/integration/index.ts index 0a367a1bdf5d..eb976e24213d 100644 --- a/packages/astro/src/integration/index.ts +++ b/packages/astro/src/integration/index.ts @@ -3,7 +3,7 @@ import * as path from 'path'; import { sentryVitePlugin } from '@sentry/vite-plugin'; import type { AstroConfig, AstroIntegration } from 'astro'; -import { dropUndefinedKeys } from '@sentry/utils'; +import { dropUndefinedKeys } from '@sentry/core'; import { buildClientSnippet, buildSdkInitFileImportSnippet, buildServerSnippet } from './snippets'; import type { SentryOptions } from './types'; diff --git a/packages/astro/src/server/middleware.ts b/packages/astro/src/server/middleware.ts index 50c8e973adfe..781a5a75b7a9 100644 --- a/packages/astro/src/server/middleware.ts +++ b/packages/astro/src/server/middleware.ts @@ -1,3 +1,12 @@ +import { + addNonEnumerableProperty, + extractQueryParamsFromUrl, + logger, + objectify, + stripUrlQueryAndFragment, + vercelWaitUntil, + winterCGRequestToRequestData, +} from '@sentry/core'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, @@ -12,15 +21,7 @@ import { startSpan, withIsolationScope, } from '@sentry/node'; -import type { Scope, SpanAttributes } from '@sentry/types'; -import { - addNonEnumerableProperty, - logger, - objectify, - stripUrlQueryAndFragment, - vercelWaitUntil, - winterCGRequestToRequestData, -} from '@sentry/utils'; +import type { RequestEventData, Scope, SpanAttributes } from '@sentry/types'; import type { APIContext, MiddlewareResponseHandler } from 'astro'; type MiddlewareOptions = { @@ -111,7 +112,13 @@ async function instrumentRequest( getCurrentScope().setSDKProcessingMetadata({ // We store the request on the current scope, not isolation scope, // because we may have multiple requests nested inside each other - request: isDynamicPageRequest ? winterCGRequestToRequestData(request) : { method, url: request.url }, + normalizedRequest: (isDynamicPageRequest + ? winterCGRequestToRequestData(request) + : { + method, + url: request.url, + query_string: extractQueryParamsFromUrl(request.url), + }) satisfies RequestEventData, }); if (options.trackClientIp && isDynamicPageRequest) { diff --git a/packages/astro/test/server/middleware.test.ts b/packages/astro/test/server/middleware.test.ts index 093b2fad2d6b..87fcb611eab2 100644 --- a/packages/astro/test/server/middleware.test.ts +++ b/packages/astro/test/server/middleware.test.ts @@ -221,7 +221,7 @@ describe('sentryMiddleware', () => { await middleware(ctx, next); expect(setSDKProcessingMetadataMock).toHaveBeenCalledWith({ - request: { + normalizedRequest: { method: 'GET', url: '/users', headers: { @@ -254,7 +254,7 @@ describe('sentryMiddleware', () => { await middleware(ctx, next); expect(setSDKProcessingMetadataMock).toHaveBeenCalledWith({ - request: { + normalizedRequest: { method: 'GET', url: '/users', }, diff --git a/packages/aws-serverless/package.json b/packages/aws-serverless/package.json index 3ff4b7fd3fd8..897fdb25b0d2 100644 --- a/packages/aws-serverless/package.json +++ b/packages/aws-serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/aws-serverless", - "version": "8.38.0", + "version": "8.39.0", "description": "Official Sentry SDK for AWS Lambda and AWS Serverless Environments", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/serverless", @@ -66,10 +66,9 @@ "dependencies": { "@opentelemetry/instrumentation-aws-lambda": "0.44.0", "@opentelemetry/instrumentation-aws-sdk": "0.45.0", - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/types": "8.39.0", "@types/aws-lambda": "^8.10.62" }, "devDependencies": { diff --git a/packages/aws-serverless/src/index.ts b/packages/aws-serverless/src/index.ts index 1156887a691c..e5e38100a257 100644 --- a/packages/aws-serverless/src/index.ts +++ b/packages/aws-serverless/src/index.ts @@ -101,7 +101,9 @@ export { mysql2Integration, redisIntegration, tediousIntegration, + // eslint-disable-next-line deprecation/deprecation nestIntegration, + // eslint-disable-next-line deprecation/deprecation setupNestErrorHandler, postgresIntegration, prismaIntegration, diff --git a/packages/aws-serverless/src/sdk.ts b/packages/aws-serverless/src/sdk.ts index 37df64d182dd..68522927b0a9 100644 --- a/packages/aws-serverless/src/sdk.ts +++ b/packages/aws-serverless/src/sdk.ts @@ -2,6 +2,7 @@ import { existsSync } from 'fs'; import { hostname } from 'os'; import { basename, resolve } from 'path'; import { types } from 'util'; +import { logger } from '@sentry/core'; import type { NodeClient, NodeOptions } from '@sentry/node'; import { SDK_VERSION, @@ -16,7 +17,6 @@ import { withScope, } from '@sentry/node'; import type { Integration, Options, Scope, SdkMetadata, Span } from '@sentry/types'; -import { logger } from '@sentry/utils'; import type { Context, Handler } from 'aws-lambda'; import { performance } from 'perf_hooks'; diff --git a/packages/aws-serverless/src/utils.ts b/packages/aws-serverless/src/utils.ts index f6461030c1a7..b8a3e69dc0a9 100644 --- a/packages/aws-serverless/src/utils.ts +++ b/packages/aws-serverless/src/utils.ts @@ -1,8 +1,8 @@ import type { TextMapGetter } from '@opentelemetry/api'; import type { Context as OtelContext } from '@opentelemetry/api'; import { context as otelContext, propagation } from '@opentelemetry/api'; +import { addExceptionMechanism, isString } from '@sentry/core'; import type { Scope } from '@sentry/types'; -import { addExceptionMechanism, isString } from '@sentry/utils'; import type { Handler } from 'aws-lambda'; import type { APIGatewayProxyEventHeaders } from 'aws-lambda'; diff --git a/packages/browser-utils/package.json b/packages/browser-utils/package.json index 470ac99e9da6..0314056cc57c 100644 --- a/packages/browser-utils/package.json +++ b/packages/browser-utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/browser-utils", - "version": "8.38.0", + "version": "8.39.0", "description": "Browser Utilities for all Sentry JavaScript SDKs", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/browser-utils", @@ -39,9 +39,8 @@ "access": "public" }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/browser-utils/src/getNativeImplementation.ts b/packages/browser-utils/src/getNativeImplementation.ts index 6da58bfba623..42d402eb1b94 100644 --- a/packages/browser-utils/src/getNativeImplementation.ts +++ b/packages/browser-utils/src/getNativeImplementation.ts @@ -1,4 +1,4 @@ -import { isNativeFunction, logger } from '@sentry/utils'; +import { isNativeFunction, logger } from '@sentry/core'; import { DEBUG_BUILD } from './debug-build'; import { WINDOW } from './types'; diff --git a/packages/browser-utils/src/instrument/dom.ts b/packages/browser-utils/src/instrument/dom.ts index 7172ca575225..7ae8b0d04441 100644 --- a/packages/browser-utils/src/instrument/dom.ts +++ b/packages/browser-utils/src/instrument/dom.ts @@ -1,6 +1,6 @@ import type { HandlerDataDom } from '@sentry/types'; -import { addHandler, addNonEnumerableProperty, fill, maybeInstrument, triggerHandlers, uuid4 } from '@sentry/utils'; +import { addHandler, addNonEnumerableProperty, fill, maybeInstrument, triggerHandlers, uuid4 } from '@sentry/core'; import { WINDOW } from '../types'; type SentryWrappedTarget = HTMLElement & { _sentryId?: string }; diff --git a/packages/browser-utils/src/instrument/history.ts b/packages/browser-utils/src/instrument/history.ts index acb31dfc455d..be74cde68871 100644 --- a/packages/browser-utils/src/instrument/history.ts +++ b/packages/browser-utils/src/instrument/history.ts @@ -1,5 +1,5 @@ +import { addHandler, fill, maybeInstrument, supportsHistory, triggerHandlers } from '@sentry/core'; import type { HandlerDataHistory } from '@sentry/types'; -import { addHandler, fill, maybeInstrument, supportsHistory, triggerHandlers } from '@sentry/utils'; import { WINDOW } from '../types'; let lastHref: string | undefined; diff --git a/packages/browser-utils/src/instrument/xhr.ts b/packages/browser-utils/src/instrument/xhr.ts index c46662bf7c16..e97b7e54be60 100644 --- a/packages/browser-utils/src/instrument/xhr.ts +++ b/packages/browser-utils/src/instrument/xhr.ts @@ -1,6 +1,6 @@ import type { HandlerDataXhr, SentryWrappedXMLHttpRequest } from '@sentry/types'; -import { addHandler, isString, maybeInstrument, timestampInSeconds, triggerHandlers } from '@sentry/utils'; +import { addHandler, isString, maybeInstrument, timestampInSeconds, triggerHandlers } from '@sentry/core'; import { WINDOW } from '../types'; export const SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__'; diff --git a/packages/browser-utils/src/metrics/browserMetrics.ts b/packages/browser-utils/src/metrics/browserMetrics.ts index 09714e90c11f..9d7faeb4e9c4 100644 --- a/packages/browser-utils/src/metrics/browserMetrics.ts +++ b/packages/browser-utils/src/metrics/browserMetrics.ts @@ -1,8 +1,8 @@ /* eslint-disable max-lines */ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getActiveSpan } from '@sentry/core'; import { setMeasurement } from '@sentry/core'; +import { browserPerformanceTimeOrigin, getComponentName, htmlTreeAsString, logger, parseUrl } from '@sentry/core'; import type { Measurements, Span, SpanAttributes, StartSpanOptions } from '@sentry/types'; -import { browserPerformanceTimeOrigin, getComponentName, htmlTreeAsString, logger, parseUrl } from '@sentry/utils'; import { spanToJSON } from '@sentry/core'; import { DEBUG_BUILD } from '../debug-build'; diff --git a/packages/browser-utils/src/metrics/cls.ts b/packages/browser-utils/src/metrics/cls.ts index e1d13286f5f9..1a7be525c3aa 100644 --- a/packages/browser-utils/src/metrics/cls.ts +++ b/packages/browser-utils/src/metrics/cls.ts @@ -10,8 +10,8 @@ import { getRootSpan, spanToJSON, } from '@sentry/core'; +import { browserPerformanceTimeOrigin, dropUndefinedKeys, htmlTreeAsString, logger } from '@sentry/core'; import type { SpanAttributes } from '@sentry/types'; -import { browserPerformanceTimeOrigin, dropUndefinedKeys, htmlTreeAsString, logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { addClsInstrumentationHandler } from './instrument'; import { msToSec, startStandaloneWebVitalSpan } from './utils'; diff --git a/packages/browser-utils/src/metrics/inp.ts b/packages/browser-utils/src/metrics/inp.ts index 5814b139bd2d..c722e6425c3a 100644 --- a/packages/browser-utils/src/metrics/inp.ts +++ b/packages/browser-utils/src/metrics/inp.ts @@ -9,8 +9,8 @@ import { getRootSpan, spanToJSON, } from '@sentry/core'; +import { browserPerformanceTimeOrigin, dropUndefinedKeys, htmlTreeAsString } from '@sentry/core'; import type { Span, SpanAttributes } from '@sentry/types'; -import { browserPerformanceTimeOrigin, dropUndefinedKeys, htmlTreeAsString } from '@sentry/utils'; import { addInpInstrumentationHandler, addPerformanceInstrumentationHandler, diff --git a/packages/browser-utils/src/metrics/instrument.ts b/packages/browser-utils/src/metrics/instrument.ts index 39292fb19b83..3f78c2e28605 100644 --- a/packages/browser-utils/src/metrics/instrument.ts +++ b/packages/browser-utils/src/metrics/instrument.ts @@ -1,4 +1,4 @@ -import { getFunctionName, logger } from '@sentry/utils'; +import { getFunctionName, logger } from '@sentry/core'; import { DEBUG_BUILD } from '../debug-build'; import { onCLS } from './web-vitals/getCLS'; diff --git a/packages/browser-utils/src/types.ts b/packages/browser-utils/src/types.ts index c32d08c7f8e2..fd8f997907fc 100644 --- a/packages/browser-utils/src/types.ts +++ b/packages/browser-utils/src/types.ts @@ -1,4 +1,4 @@ -import { GLOBAL_OBJ } from '@sentry/utils'; +import { GLOBAL_OBJ } from '@sentry/core'; export const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & // document is not available in all browser environments (webworkers). We make it optional so you have to explicitly check for it diff --git a/packages/browser-utils/test/instrument/dom.test.ts b/packages/browser-utils/test/instrument/dom.test.ts index ad1dc2fd82fa..102c6ba40829 100644 --- a/packages/browser-utils/test/instrument/dom.test.ts +++ b/packages/browser-utils/test/instrument/dom.test.ts @@ -1,18 +1,11 @@ import { instrumentDOM } from '../../src/instrument/dom'; +import { WINDOW } from '../../src/types'; -jest.mock('@sentry/utils', () => { - const original = jest.requireActual('@sentry/utils'); +// @ts-expect-error - idk +WINDOW.XMLHttpRequest = undefined; - return { - ...original, - GLOBAL_OBJ: { - document: undefined, - }, - }; -}); - -describe('instrumentDOM', () => { - it('it does not throw if document is a key on window but not defined', () => { +describe('instrumentXHR', () => { + it('it does not throw if XMLHttpRequest is a key on window but not defined', () => { expect(instrumentDOM).not.toThrow(); }); }); diff --git a/packages/browser-utils/test/instrument/xhr.test.ts b/packages/browser-utils/test/instrument/xhr.test.ts index 46fa1a477521..e53999de628b 100644 --- a/packages/browser-utils/test/instrument/xhr.test.ts +++ b/packages/browser-utils/test/instrument/xhr.test.ts @@ -1,14 +1,8 @@ import { instrumentXHR } from '../../src/instrument/xhr'; +import { WINDOW } from '../../src/types'; -jest.mock('@sentry/utils', () => { - const original = jest.requireActual('@sentry/utils'); - return { - ...original, - GLOBAL_OBJ: { - XMLHttpRequest: undefined, - }, - }; -}); +// @ts-expect-error - idk +WINDOW.XMLHttpRequest = undefined; describe('instrumentXHR', () => { it('it does not throw if XMLHttpRequest is a key on window but not defined', () => { diff --git a/packages/browser-utils/test/utils/TestClient.ts b/packages/browser-utils/test/utils/TestClient.ts index da131aec8fd2..3bd5fff8cf76 100644 --- a/packages/browser-utils/test/utils/TestClient.ts +++ b/packages/browser-utils/test/utils/TestClient.ts @@ -1,4 +1,5 @@ import { BaseClient, createTransport, initAndBind } from '@sentry/core'; +import { resolvedSyncPromise } from '@sentry/core'; import type { BrowserClientReplayOptions, ClientOptions, @@ -6,7 +7,6 @@ import type { ParameterizedString, SeverityLevel, } from '@sentry/types'; -import { resolvedSyncPromise } from '@sentry/utils'; export interface TestClientOptions extends ClientOptions, BrowserClientReplayOptions {} diff --git a/packages/browser/package.json b/packages/browser/package.json index a09d8cf70e03..428ecbc6a992 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/browser", - "version": "8.38.0", + "version": "8.39.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", @@ -39,16 +39,15 @@ "access": "public" }, "dependencies": { - "@sentry-internal/browser-utils": "8.38.0", - "@sentry-internal/feedback": "8.38.0", - "@sentry-internal/replay": "8.38.0", - "@sentry-internal/replay-canvas": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry-internal/browser-utils": "8.39.0", + "@sentry-internal/feedback": "8.39.0", + "@sentry-internal/replay": "8.39.0", + "@sentry-internal/replay-canvas": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "devDependencies": { - "@sentry-internal/integration-shims": "8.38.0", + "@sentry-internal/integration-shims": "8.39.0", "fake-indexeddb": "^4.0.1" }, "scripts": { diff --git a/packages/browser/src/client.ts b/packages/browser/src/client.ts index 851f830d6955..8746fe6fda76 100644 --- a/packages/browser/src/client.ts +++ b/packages/browser/src/client.ts @@ -1,6 +1,7 @@ import type { Scope } from '@sentry/core'; import { applySdkMetadata } from '@sentry/core'; import { BaseClient } from '@sentry/core'; +import { getSDKSource, logger } from '@sentry/core'; import type { BrowserClientProfilingOptions, BrowserClientReplayOptions, @@ -12,7 +13,6 @@ import type { SeverityLevel, UserFeedback, } from '@sentry/types'; -import { getSDKSource, logger } from '@sentry/utils'; import { DEBUG_BUILD } from './debug-build'; import { eventFromException, eventFromMessage } from './eventbuilder'; diff --git a/packages/browser/src/eventbuilder.ts b/packages/browser/src/eventbuilder.ts index cff9f0fe4632..b4ee8d581eb9 100644 --- a/packages/browser/src/eventbuilder.ts +++ b/packages/browser/src/eventbuilder.ts @@ -1,13 +1,4 @@ import { getClient } from '@sentry/core'; -import type { - Event, - EventHint, - Exception, - ParameterizedString, - SeverityLevel, - StackFrame, - StackParser, -} from '@sentry/types'; import { addExceptionMechanism, addExceptionTypeValue, @@ -21,7 +12,16 @@ import { isPlainObject, normalizeToSize, resolvedSyncPromise, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { + Event, + EventHint, + Exception, + ParameterizedString, + SeverityLevel, + StackFrame, + StackParser, +} from '@sentry/types'; type Prototype = { constructor: (...args: unknown[]) => unknown }; diff --git a/packages/browser/src/helpers.ts b/packages/browser/src/helpers.ts index 702f44e36b7b..8871b1ba2c68 100644 --- a/packages/browser/src/helpers.ts +++ b/packages/browser/src/helpers.ts @@ -1,5 +1,4 @@ import { captureException, withScope } from '@sentry/core'; -import type { Mechanism, WrappedFunction } from '@sentry/types'; import { GLOBAL_OBJ, addExceptionMechanism, @@ -7,7 +6,8 @@ import { addNonEnumerableProperty, getOriginalFunction, markFunctionWrapped, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { Mechanism, WrappedFunction } from '@sentry/types'; export const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window; diff --git a/packages/browser/src/integrations/breadcrumbs.ts b/packages/browser/src/integrations/breadcrumbs.ts index 360668c4ba64..889e1a54c201 100644 --- a/packages/browser/src/integrations/breadcrumbs.ts +++ b/packages/browser/src/integrations/breadcrumbs.ts @@ -5,6 +5,18 @@ import { addXhrInstrumentationHandler, } from '@sentry-internal/browser-utils'; import { addBreadcrumb, defineIntegration, getClient } from '@sentry/core'; +import { + addConsoleInstrumentationHandler, + addFetchInstrumentationHandler, + getBreadcrumbLogLevelFromHttpStatusCode, + getComponentName, + getEventDescription, + htmlTreeAsString, + logger, + parseUrl, + safeJoin, + severityLevelFromString, +} from '@sentry/core'; import type { Breadcrumb, Client, @@ -20,18 +32,6 @@ import type { XhrBreadcrumbData, XhrBreadcrumbHint, } from '@sentry/types'; -import { - addConsoleInstrumentationHandler, - addFetchInstrumentationHandler, - getBreadcrumbLogLevelFromHttpStatusCode, - getComponentName, - getEventDescription, - htmlTreeAsString, - logger, - parseUrl, - safeJoin, - severityLevelFromString, -} from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { WINDOW } from '../helpers'; diff --git a/packages/browser/src/integrations/browserapierrors.ts b/packages/browser/src/integrations/browserapierrors.ts index 8ede786f5c43..2290c1a45d66 100644 --- a/packages/browser/src/integrations/browserapierrors.ts +++ b/packages/browser/src/integrations/browserapierrors.ts @@ -1,6 +1,6 @@ import { defineIntegration } from '@sentry/core'; +import { fill, getFunctionName, getOriginalFunction } from '@sentry/core'; import type { IntegrationFn, WrappedFunction } from '@sentry/types'; -import { fill, getFunctionName, getOriginalFunction } from '@sentry/utils'; import { WINDOW, wrap } from '../helpers'; diff --git a/packages/browser/src/integrations/contextlines.ts b/packages/browser/src/integrations/contextlines.ts index 8e77ea6f8a08..eb4dd7e7f748 100644 --- a/packages/browser/src/integrations/contextlines.ts +++ b/packages/browser/src/integrations/contextlines.ts @@ -1,6 +1,6 @@ import { defineIntegration } from '@sentry/core'; +import { GLOBAL_OBJ, addContextToFrame, stripUrlQueryAndFragment } from '@sentry/core'; import type { Event, IntegrationFn, StackFrame } from '@sentry/types'; -import { GLOBAL_OBJ, addContextToFrame, stripUrlQueryAndFragment } from '@sentry/utils'; const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window; diff --git a/packages/browser/src/integrations/globalhandlers.ts b/packages/browser/src/integrations/globalhandlers.ts index b57fd8383155..2b9278adf767 100644 --- a/packages/browser/src/integrations/globalhandlers.ts +++ b/packages/browser/src/integrations/globalhandlers.ts @@ -1,5 +1,4 @@ import { captureEvent, defineIntegration, getClient } from '@sentry/core'; -import type { Client, Event, IntegrationFn, Primitive, StackParser } from '@sentry/types'; import { UNKNOWN_FUNCTION, addGlobalErrorInstrumentationHandler, @@ -8,7 +7,8 @@ import { isPrimitive, isString, logger, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { Client, Event, IntegrationFn, Primitive, StackParser } from '@sentry/types'; import type { BrowserClient } from '../client'; import { DEBUG_BUILD } from '../debug-build'; diff --git a/packages/browser/src/integrations/httpclient.ts b/packages/browser/src/integrations/httpclient.ts index af1c662007c3..439941c97faf 100644 --- a/packages/browser/src/integrations/httpclient.ts +++ b/packages/browser/src/integrations/httpclient.ts @@ -1,13 +1,13 @@ import { SENTRY_XHR_DATA_KEY, addXhrInstrumentationHandler } from '@sentry-internal/browser-utils'; import { captureEvent, defineIntegration, getClient, isSentryRequestUrl } from '@sentry/core'; -import type { Client, Event as SentryEvent, IntegrationFn, SentryWrappedXMLHttpRequest } from '@sentry/types'; import { GLOBAL_OBJ, addExceptionMechanism, addFetchInstrumentationHandler, logger, supportsNativeFetch, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { Client, Event as SentryEvent, IntegrationFn, SentryWrappedXMLHttpRequest } from '@sentry/types'; import { DEBUG_BUILD } from '../debug-build'; diff --git a/packages/browser/src/integrations/linkederrors.ts b/packages/browser/src/integrations/linkederrors.ts index e107094950b1..41d15566f7a2 100644 --- a/packages/browser/src/integrations/linkederrors.ts +++ b/packages/browser/src/integrations/linkederrors.ts @@ -1,6 +1,6 @@ import { defineIntegration } from '@sentry/core'; +import { applyAggregateErrorsToEvent } from '@sentry/core'; import type { IntegrationFn } from '@sentry/types'; -import { applyAggregateErrorsToEvent } from '@sentry/utils'; import { exceptionFromError } from '../eventbuilder'; interface LinkedErrorsOptions { diff --git a/packages/browser/src/integrations/reportingobserver.ts b/packages/browser/src/integrations/reportingobserver.ts index 8212386493fb..0e65216e3043 100644 --- a/packages/browser/src/integrations/reportingobserver.ts +++ b/packages/browser/src/integrations/reportingobserver.ts @@ -1,6 +1,6 @@ import { captureMessage, defineIntegration, getClient, withScope } from '@sentry/core'; +import { GLOBAL_OBJ, supportsReportingObserver } from '@sentry/core'; import type { Client, IntegrationFn } from '@sentry/types'; -import { GLOBAL_OBJ, supportsReportingObserver } from '@sentry/utils'; const WINDOW = GLOBAL_OBJ as typeof GLOBAL_OBJ & Window; diff --git a/packages/browser/src/integrations/spotlight.ts b/packages/browser/src/integrations/spotlight.ts index 75ed18e7f34d..3c50939833d6 100644 --- a/packages/browser/src/integrations/spotlight.ts +++ b/packages/browser/src/integrations/spotlight.ts @@ -1,7 +1,7 @@ import { getNativeImplementation } from '@sentry-internal/browser-utils'; import { defineIntegration } from '@sentry/core'; +import { logger, serializeEnvelope } from '@sentry/core'; import type { Client, Envelope, Event, IntegrationFn } from '@sentry/types'; -import { logger, serializeEnvelope } from '@sentry/utils'; import type { WINDOW } from '../helpers'; import { DEBUG_BUILD } from '../debug-build'; diff --git a/packages/browser/src/profiling/integration.ts b/packages/browser/src/profiling/integration.ts index 585ad28802b3..1648fbf77a43 100644 --- a/packages/browser/src/profiling/integration.ts +++ b/packages/browser/src/profiling/integration.ts @@ -1,6 +1,6 @@ import { defineIntegration, getActiveSpan, getRootSpan } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { EventEnvelope, IntegrationFn, Profile, Span } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { startProfileForSpan } from './startProfileForSpan'; diff --git a/packages/browser/src/profiling/startProfileForSpan.ts b/packages/browser/src/profiling/startProfileForSpan.ts index 8d7d91fdddc9..fea01e6b64ae 100644 --- a/packages/browser/src/profiling/startProfileForSpan.ts +++ b/packages/browser/src/profiling/startProfileForSpan.ts @@ -1,6 +1,6 @@ import { getCurrentScope, spanToJSON } from '@sentry/core'; +import { logger, timestampInSeconds, uuid4 } from '@sentry/core'; import type { Span } from '@sentry/types'; -import { logger, timestampInSeconds, uuid4 } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { WINDOW } from '../helpers'; diff --git a/packages/browser/src/profiling/utils.ts b/packages/browser/src/profiling/utils.ts index 926ea6bbb9f5..56ae15691aaf 100644 --- a/packages/browser/src/profiling/utils.ts +++ b/packages/browser/src/profiling/utils.ts @@ -1,7 +1,6 @@ /* eslint-disable max-lines */ import { DEFAULT_ENVIRONMENT, getClient, spanToJSON } from '@sentry/core'; -import type { DebugImage, Envelope, Event, EventEnvelope, Profile, Span, ThreadCpuProfile } from '@sentry/types'; import { browserPerformanceTimeOrigin, forEachEnvelopeItem, @@ -9,7 +8,8 @@ import { logger, timestampInSeconds, uuid4, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { DebugImage, Envelope, Event, EventEnvelope, Profile, Span, ThreadCpuProfile } from '@sentry/types'; import { DEBUG_BUILD } from '../debug-build'; import { WINDOW } from '../helpers'; diff --git a/packages/browser/src/sdk.ts b/packages/browser/src/sdk.ts index cd15af8fef1f..d758aae4b229 100644 --- a/packages/browser/src/sdk.ts +++ b/packages/browser/src/sdk.ts @@ -9,8 +9,8 @@ import { lastEventId, startSession, } from '@sentry/core'; +import { consoleSandbox, logger, stackParserFromStackParserOptions, supportsFetch } from '@sentry/core'; import type { Client, DsnLike, Integration, Options, UserFeedback } from '@sentry/types'; -import { consoleSandbox, logger, stackParserFromStackParserOptions, supportsFetch } from '@sentry/utils'; import { addHistoryInstrumentationHandler } from '@sentry-internal/browser-utils'; import { dedupeIntegration } from '@sentry/core'; diff --git a/packages/browser/src/stack-parsers.ts b/packages/browser/src/stack-parsers.ts index 2031c1861654..1ac53e898349 100644 --- a/packages/browser/src/stack-parsers.ts +++ b/packages/browser/src/stack-parsers.ts @@ -23,8 +23,8 @@ // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE // OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +import { UNKNOWN_FUNCTION, createStackParser } from '@sentry/core'; import type { StackFrame, StackLineParser, StackLineParserFn } from '@sentry/types'; -import { UNKNOWN_FUNCTION, createStackParser } from '@sentry/utils'; const OPERA10_PRIORITY = 10; const OPERA11_PRIORITY = 20; diff --git a/packages/browser/src/tracing/backgroundtab.ts b/packages/browser/src/tracing/backgroundtab.ts index 307892862649..178a95ccb5a2 100644 --- a/packages/browser/src/tracing/backgroundtab.ts +++ b/packages/browser/src/tracing/backgroundtab.ts @@ -1,6 +1,6 @@ import { SPAN_STATUS_ERROR, getActiveSpan, getRootSpan } from '@sentry/core'; import { spanToJSON } from '@sentry/core'; -import { logger } from '@sentry/utils'; +import { logger } from '@sentry/core'; import { DEBUG_BUILD } from '../debug-build'; import { WINDOW } from '../helpers'; diff --git a/packages/browser/src/tracing/browserTracingIntegration.ts b/packages/browser/src/tracing/browserTracingIntegration.ts index b3f8d9abdba8..a59706edb8fb 100644 --- a/packages/browser/src/tracing/browserTracingIntegration.ts +++ b/packages/browser/src/tracing/browserTracingIntegration.ts @@ -25,8 +25,6 @@ import { spanToJSON, startIdleSpan, } from '@sentry/core'; -import type { Client, IntegrationFn, StartSpanOptions, TransactionSource } from '@sentry/types'; -import type { Span } from '@sentry/types'; import { GLOBAL_OBJ, browserPerformanceTimeOrigin, @@ -34,7 +32,9 @@ import { getDomElement, logger, propagationContextFromHeaders, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { Client, IntegrationFn, StartSpanOptions, TransactionSource } from '@sentry/types'; +import type { Span } from '@sentry/types'; import { DEBUG_BUILD } from '../debug-build'; import { WINDOW } from '../helpers'; diff --git a/packages/browser/src/tracing/request.ts b/packages/browser/src/tracing/request.ts index b41a0bf24cc6..79ed4d0f05b4 100644 --- a/packages/browser/src/tracing/request.ts +++ b/packages/browser/src/tracing/request.ts @@ -21,7 +21,6 @@ import { spanToTraceHeader, startInactiveSpan, } from '@sentry/core'; -import type { Client, HandlerDataXhr, SentryWrappedXMLHttpRequest, Span } from '@sentry/types'; import { BAGGAGE_HEADER_NAME, addFetchEndInstrumentationHandler, @@ -31,7 +30,8 @@ import { generateSentryTraceHeader, parseUrl, stringMatchesSomePattern, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { Client, HandlerDataXhr, SentryWrappedXMLHttpRequest, Span } from '@sentry/types'; import { WINDOW } from '../helpers'; /** Options for Request Instrumentation */ diff --git a/packages/browser/src/transports/fetch.ts b/packages/browser/src/transports/fetch.ts index d1ded0f7da84..efbe132afe1f 100644 --- a/packages/browser/src/transports/fetch.ts +++ b/packages/browser/src/transports/fetch.ts @@ -1,7 +1,7 @@ import { clearCachedImplementation, getNativeImplementation } from '@sentry-internal/browser-utils'; import { createTransport } from '@sentry/core'; +import { rejectedSyncPromise } from '@sentry/core'; import type { Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types'; -import { rejectedSyncPromise } from '@sentry/utils'; import type { WINDOW } from '../helpers'; import type { BrowserTransportOptions } from './types'; diff --git a/packages/browser/src/transports/offline.ts b/packages/browser/src/transports/offline.ts index 7f5d22e466a9..152539ce85f9 100644 --- a/packages/browser/src/transports/offline.ts +++ b/packages/browser/src/transports/offline.ts @@ -1,7 +1,7 @@ import type { OfflineStore, OfflineTransportOptions } from '@sentry/core'; import { makeOfflineTransport } from '@sentry/core'; +import { parseEnvelope, serializeEnvelope } from '@sentry/core'; import type { BaseTransportOptions, Envelope, Transport } from '@sentry/types'; -import { parseEnvelope, serializeEnvelope } from '@sentry/utils'; import { makeFetchTransport } from './fetch'; // 'Store', 'promisifyRequest' and 'createStore' were originally copied from the 'idb-keyval' package before being diff --git a/packages/browser/src/userfeedback.ts b/packages/browser/src/userfeedback.ts index c2c8b0a116fc..a406e31d2e25 100644 --- a/packages/browser/src/userfeedback.ts +++ b/packages/browser/src/userfeedback.ts @@ -1,5 +1,5 @@ +import { createEnvelope, dsnToString } from '@sentry/core'; import type { DsnComponents, EventEnvelope, SdkMetadata, UserFeedback, UserFeedbackItem } from '@sentry/types'; -import { createEnvelope, dsnToString } from '@sentry/utils'; /** * Creates an envelope from a user feedback. diff --git a/packages/browser/test/helper/browser-client-options.ts b/packages/browser/test/helper/browser-client-options.ts index 619baab13bad..661e0a9d1c72 100644 --- a/packages/browser/test/helper/browser-client-options.ts +++ b/packages/browser/test/helper/browser-client-options.ts @@ -1,5 +1,5 @@ import { createTransport } from '@sentry/core'; -import { resolvedSyncPromise } from '@sentry/utils'; +import { resolvedSyncPromise } from '@sentry/core'; import type { BrowserClientOptions } from '../../src/client'; diff --git a/packages/browser/test/index.test.ts b/packages/browser/test/index.test.ts index eb2fb6104b11..42492cd36747 100644 --- a/packages/browser/test/index.test.ts +++ b/packages/browser/test/index.test.ts @@ -13,7 +13,7 @@ import { inboundFiltersIntegration, lastEventId, } from '@sentry/core'; -import * as utils from '@sentry/utils'; +import * as utils from '@sentry/core'; import { setCurrentClient } from '../src'; import { diff --git a/packages/browser/test/mocks/simpletransport.ts b/packages/browser/test/mocks/simpletransport.ts index cbad94fb310d..1193e217cb38 100644 --- a/packages/browser/test/mocks/simpletransport.ts +++ b/packages/browser/test/mocks/simpletransport.ts @@ -1,5 +1,5 @@ import { createTransport } from '@sentry/core'; -import { resolvedSyncPromise } from '@sentry/utils'; +import { resolvedSyncPromise } from '@sentry/core'; export function makeSimpleTransport() { return createTransport({ recordDroppedEvent: () => undefined }, () => resolvedSyncPromise({})); diff --git a/packages/browser/test/sdk.test.ts b/packages/browser/test/sdk.test.ts index d638862aba9d..4929ee0f83d2 100644 --- a/packages/browser/test/sdk.test.ts +++ b/packages/browser/test/sdk.test.ts @@ -8,8 +8,8 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import * as SentryCore from '@sentry/core'; import { Scope, createTransport } from '@sentry/core'; +import { resolvedSyncPromise } from '@sentry/core'; import type { Client, Integration } from '@sentry/types'; -import { resolvedSyncPromise } from '@sentry/utils'; import type { BrowserOptions } from '../src'; import { WINDOW } from '../src'; diff --git a/packages/browser/test/tracekit/ie.test.ts b/packages/browser/test/tracekit/ie.test.ts index 95d88a6bef34..97659959252f 100644 --- a/packages/browser/test/tracekit/ie.test.ts +++ b/packages/browser/test/tracekit/ie.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { createStackParser } from '@sentry/utils'; +import { createStackParser } from '@sentry/core'; import { exceptionFromError } from '../../src/eventbuilder'; import { chromeStackLineParser, geckoStackLineParser, winjsStackLineParser } from '../../src/stack-parsers'; diff --git a/packages/browser/test/tracekit/opera.test.ts b/packages/browser/test/tracekit/opera.test.ts index 352737fba5d0..8de84f0dcb01 100644 --- a/packages/browser/test/tracekit/opera.test.ts +++ b/packages/browser/test/tracekit/opera.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { createStackParser } from '@sentry/utils'; +import { createStackParser } from '@sentry/core'; import { exceptionFromError } from '../../src/eventbuilder'; import { defaultStackParser, opera10StackLineParser, opera11StackLineParser } from '../../src/stack-parsers'; diff --git a/packages/browser/test/tracing/request.test.ts b/packages/browser/test/tracing/request.test.ts index 4f1c0bfdaf0a..cf11e59a013c 100644 --- a/packages/browser/test/tracing/request.test.ts +++ b/packages/browser/test/tracing/request.test.ts @@ -1,8 +1,8 @@ import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; import * as browserUtils from '@sentry-internal/browser-utils'; +import * as utils from '@sentry/core'; import type { Client } from '@sentry/types'; -import * as utils from '@sentry/utils'; import { WINDOW } from '../../src/helpers'; import { extractNetworkProtocol, instrumentOutgoingRequests, shouldAttachHeaders } from '../../src/tracing/request'; diff --git a/packages/browser/test/transports/fetch.test.ts b/packages/browser/test/transports/fetch.test.ts index ccba3282251c..1b88e6263820 100644 --- a/packages/browser/test/transports/fetch.test.ts +++ b/packages/browser/test/transports/fetch.test.ts @@ -1,8 +1,8 @@ import type { Mock } from 'vitest'; import { describe, expect, it, vi } from 'vitest'; +import { createEnvelope, serializeEnvelope } from '@sentry/core'; import type { EventEnvelope, EventItem } from '@sentry/types'; -import { createEnvelope, serializeEnvelope } from '@sentry/utils'; import { makeFetchTransport } from '../../src/transports/fetch'; import type { BrowserTransportOptions } from '../../src/transports/types'; diff --git a/packages/browser/test/transports/offline.test.ts b/packages/browser/test/transports/offline.test.ts index a8352cb4102d..9f0e5ae5cdba 100644 --- a/packages/browser/test/transports/offline.test.ts +++ b/packages/browser/test/transports/offline.test.ts @@ -4,13 +4,13 @@ import 'fake-indexeddb/auto'; import { TextDecoder, TextEncoder } from 'util'; import { createTransport } from '@sentry/core'; +import { createEnvelope } from '@sentry/core'; import type { EventEnvelope, EventItem, InternalBaseTransportOptions, TransportMakeRequestResponse, } from '@sentry/types'; -import { createEnvelope } from '@sentry/utils'; import { createStore, makeBrowserOfflineTransport, push, shift, unshift } from '../../src/transports/offline'; diff --git a/packages/bun/package.json b/packages/bun/package.json index 297412a2f0dd..ffd16b27a4f3 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/bun", - "version": "8.38.0", + "version": "8.39.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", @@ -39,11 +39,10 @@ "access": "public" }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/opentelemetry": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/opentelemetry": "8.39.0", + "@sentry/types": "8.39.0" }, "devDependencies": { "bun-types": "latest" diff --git a/packages/bun/src/index.ts b/packages/bun/src/index.ts index 92d25051ebd7..29776ef4ab1d 100644 --- a/packages/bun/src/index.ts +++ b/packages/bun/src/index.ts @@ -18,7 +18,7 @@ export type { Thread, User, } from '@sentry/types'; -export type { AddRequestDataToEventOptions } from '@sentry/utils'; +export type { AddRequestDataToEventOptions } from '@sentry/core'; export { addEventProcessor, @@ -124,7 +124,9 @@ export { mysql2Integration, redisIntegration, tediousIntegration, + // eslint-disable-next-line deprecation/deprecation nestIntegration, + // eslint-disable-next-line deprecation/deprecation setupNestErrorHandler, postgresIntegration, prismaIntegration, diff --git a/packages/bun/src/integrations/bunserver.ts b/packages/bun/src/integrations/bunserver.ts index 193ae6f286ca..f2811a026919 100644 --- a/packages/bun/src/integrations/bunserver.ts +++ b/packages/bun/src/integrations/bunserver.ts @@ -9,8 +9,8 @@ import { startSpan, withIsolationScope, } from '@sentry/core'; -import type { IntegrationFn, SpanAttributes } from '@sentry/types'; -import { getSanitizedUrlString, parseUrl } from '@sentry/utils'; +import { extractQueryParamsFromUrl, getSanitizedUrlString, parseUrl } from '@sentry/core'; +import type { IntegrationFn, RequestEventData, SpanAttributes } from '@sentry/types'; const INTEGRATION_NAME = 'BunServer'; @@ -76,11 +76,12 @@ function instrumentBunServeOptions(serveOptions: Parameters[0] const url = getSanitizedUrlString(parsedUrl); isolationScope.setSDKProcessingMetadata({ - request: { + normalizedRequest: { url, method: request.method, headers: request.headers.toJSON(), - }, + query_string: extractQueryParamsFromUrl(url), + } satisfies RequestEventData, }); return continueTrace( diff --git a/packages/bun/src/transports/index.ts b/packages/bun/src/transports/index.ts index b4968f2001c0..0dd3da97638b 100644 --- a/packages/bun/src/transports/index.ts +++ b/packages/bun/src/transports/index.ts @@ -1,6 +1,6 @@ import { createTransport, suppressTracing } from '@sentry/core'; +import { rejectedSyncPromise } from '@sentry/core'; import type { BaseTransportOptions, Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types'; -import { rejectedSyncPromise } from '@sentry/utils'; export interface BunTransportOptions extends BaseTransportOptions { /** Custom headers for the transport. Used by the XHRTransport and FetchTransport */ diff --git a/packages/bun/test/helpers.ts b/packages/bun/test/helpers.ts index 61b4de5e65f1..a8286378761f 100644 --- a/packages/bun/test/helpers.ts +++ b/packages/bun/test/helpers.ts @@ -1,5 +1,5 @@ import { createTransport } from '@sentry/core'; -import { resolvedSyncPromise } from '@sentry/utils'; +import { resolvedSyncPromise } from '@sentry/core'; import type { BunClientOptions } from '../src/types'; diff --git a/packages/cloudflare/package.json b/packages/cloudflare/package.json index 7ae665a2f22b..fbffab088235 100644 --- a/packages/cloudflare/package.json +++ b/packages/cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/cloudflare", - "version": "8.38.0", + "version": "8.39.0", "description": "Official Sentry SDK for Cloudflare Workers and Pages", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/cloudflare", @@ -39,9 +39,8 @@ "access": "public" }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "optionalDependencies": { "@cloudflare/workers-types": "^4.x" diff --git a/packages/cloudflare/src/index.ts b/packages/cloudflare/src/index.ts index ab4db3064290..106cf4ab22fb 100644 --- a/packages/cloudflare/src/index.ts +++ b/packages/cloudflare/src/index.ts @@ -18,7 +18,7 @@ export type { Thread, User, } from '@sentry/types'; -export type { AddRequestDataToEventOptions } from '@sentry/utils'; +export type { AddRequestDataToEventOptions } from '@sentry/core'; export type { CloudflareOptions } from './client'; diff --git a/packages/cloudflare/src/integrations/fetch.ts b/packages/cloudflare/src/integrations/fetch.ts index 4bada212e7d5..2fbb93315795 100644 --- a/packages/cloudflare/src/integrations/fetch.ts +++ b/packages/cloudflare/src/integrations/fetch.ts @@ -1,4 +1,10 @@ import { addBreadcrumb, defineIntegration, getClient, instrumentFetchRequest, isSentryRequestUrl } from '@sentry/core'; +import { + LRUMap, + addFetchInstrumentationHandler, + getBreadcrumbLogLevelFromHttpStatusCode, + stringMatchesSomePattern, +} from '@sentry/core'; import type { Client, FetchBreadcrumbData, @@ -7,12 +13,6 @@ import type { IntegrationFn, Span, } from '@sentry/types'; -import { - LRUMap, - addFetchInstrumentationHandler, - getBreadcrumbLogLevelFromHttpStatusCode, - stringMatchesSomePattern, -} from '@sentry/utils'; const INTEGRATION_NAME = 'Fetch'; diff --git a/packages/cloudflare/src/request.ts b/packages/cloudflare/src/request.ts index 1c51a08c194c..cda67bfb7314 100644 --- a/packages/cloudflare/src/request.ts +++ b/packages/cloudflare/src/request.ts @@ -13,8 +13,8 @@ import { startSpan, withIsolationScope, } from '@sentry/core'; +import { stripUrlQueryAndFragment } from '@sentry/core'; import type { SpanAttributes } from '@sentry/types'; -import { stripUrlQueryAndFragment } from '@sentry/utils'; import type { CloudflareOptions } from './client'; import { addCloudResourceContext, addCultureContext, addRequest } from './scope-utils'; import { init } from './sdk'; diff --git a/packages/cloudflare/src/scope-utils.ts b/packages/cloudflare/src/scope-utils.ts index 1f5bbce8f0fc..afa155907766 100644 --- a/packages/cloudflare/src/scope-utils.ts +++ b/packages/cloudflare/src/scope-utils.ts @@ -1,7 +1,7 @@ import type { IncomingRequestCfProperties } from '@cloudflare/workers-types'; +import { winterCGRequestToRequestData } from '@sentry/core'; import type { Scope } from '@sentry/types'; -import { winterCGRequestToRequestData } from '@sentry/utils'; /** * Set cloud resource context on scope. @@ -25,5 +25,5 @@ export function addCultureContext(scope: Scope, cf: IncomingRequestCfProperties) * Set request data on scope */ export function addRequest(scope: Scope, request: Request): void { - scope.setSDKProcessingMetadata({ request: winterCGRequestToRequestData(request) }); + scope.setSDKProcessingMetadata({ normalizedRequest: winterCGRequestToRequestData(request) }); } diff --git a/packages/cloudflare/src/sdk.ts b/packages/cloudflare/src/sdk.ts index a16a9e578a06..0c8a50c4e44d 100644 --- a/packages/cloudflare/src/sdk.ts +++ b/packages/cloudflare/src/sdk.ts @@ -7,8 +7,8 @@ import { linkedErrorsIntegration, requestDataIntegration, } from '@sentry/core'; +import { stackParserFromStackParserOptions } from '@sentry/core'; import type { Integration } from '@sentry/types'; -import { stackParserFromStackParserOptions } from '@sentry/utils'; import type { CloudflareClientOptions, CloudflareOptions } from './client'; import { CloudflareClient } from './client'; diff --git a/packages/cloudflare/src/transport.ts b/packages/cloudflare/src/transport.ts index 4f1314d693a7..9854a9050b51 100644 --- a/packages/cloudflare/src/transport.ts +++ b/packages/cloudflare/src/transport.ts @@ -1,6 +1,6 @@ import { createTransport, suppressTracing } from '@sentry/core'; +import { SentryError } from '@sentry/core'; import type { BaseTransportOptions, Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types'; -import { SentryError } from '@sentry/utils'; export interface CloudflareTransportOptions extends BaseTransportOptions { /** Fetch API init parameters. */ diff --git a/packages/cloudflare/src/vendor/stacktrace.ts b/packages/cloudflare/src/vendor/stacktrace.ts index 1a91abe26d24..303600d495df 100644 --- a/packages/cloudflare/src/vendor/stacktrace.ts +++ b/packages/cloudflare/src/vendor/stacktrace.ts @@ -21,8 +21,8 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. +import { basename, createStackParser, nodeStackLineParser } from '@sentry/core'; import type { StackLineParser, StackLineParserFn, StackParser } from '@sentry/types'; -import { basename, createStackParser, nodeStackLineParser } from '@sentry/utils'; type GetModuleFn = (filename: string | undefined) => string | undefined; diff --git a/packages/cloudflare/test/async.test.ts b/packages/cloudflare/test/async.test.ts index a4423e0ca434..23ae7637dd19 100644 --- a/packages/cloudflare/test/async.test.ts +++ b/packages/cloudflare/test/async.test.ts @@ -1,5 +1,5 @@ import { Scope, getCurrentScope, getGlobalScope, getIsolationScope, withIsolationScope, withScope } from '@sentry/core'; -import { GLOBAL_OBJ } from '@sentry/utils'; +import { GLOBAL_OBJ } from '@sentry/core'; import { AsyncLocalStorage } from 'async_hooks'; import { beforeEach, describe, expect, it } from 'vitest'; import { setAsyncLocalStorageAsyncContextStrategy } from '../src/async'; diff --git a/packages/cloudflare/test/integrations/fetch.test.ts b/packages/cloudflare/test/integrations/fetch.test.ts index 3825a27b985b..86bb092facc8 100644 --- a/packages/cloudflare/test/integrations/fetch.test.ts +++ b/packages/cloudflare/test/integrations/fetch.test.ts @@ -1,9 +1,9 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; import * as sentryCore from '@sentry/core'; +import * as sentryUtils from '@sentry/core'; +import { createStackParser } from '@sentry/core'; import type { HandlerDataFetch, Integration } from '@sentry/types'; -import * as sentryUtils from '@sentry/utils'; -import { createStackParser } from '@sentry/utils'; import { CloudflareClient } from '../../src/client'; import { fetchIntegration } from '../../src/integrations/fetch'; diff --git a/packages/cloudflare/test/request.test.ts b/packages/cloudflare/test/request.test.ts index 5218e8afe20b..d35ccf3d50a7 100644 --- a/packages/cloudflare/test/request.test.ts +++ b/packages/cloudflare/test/request.test.ts @@ -109,7 +109,7 @@ describe('withSentry', () => { }, ); - expect(sentryEvent.sdkProcessingMetadata?.request).toEqual({ + expect(sentryEvent.sdkProcessingMetadata?.normalizedRequest).toEqual({ headers: {}, url: 'https://example.com/', method: 'GET', diff --git a/packages/cloudflare/test/transport.test.ts b/packages/cloudflare/test/transport.test.ts index 788785de8216..069bc119dc37 100644 --- a/packages/cloudflare/test/transport.test.ts +++ b/packages/cloudflare/test/transport.test.ts @@ -1,5 +1,5 @@ +import { createEnvelope, serializeEnvelope } from '@sentry/core'; import type { EventEnvelope, EventItem } from '@sentry/types'; -import { createEnvelope, serializeEnvelope } from '@sentry/utils'; import { afterAll, describe, expect, it, vi } from 'vitest'; import type { CloudflareTransportOptions } from '../src/transport'; diff --git a/packages/core/.eslintrc.js b/packages/core/.eslintrc.js index 5a2cc7f1ec08..5c0b9f20f693 100644 --- a/packages/core/.eslintrc.js +++ b/packages/core/.eslintrc.js @@ -1,3 +1,4 @@ module.exports = { extends: ['../../.eslintrc.js'], + ignorePatterns: ['rollup.npm.config.mjs', 'test/utils-hoist/buildPolyfills/originals.js'], }; diff --git a/packages/core/package.json b/packages/core/package.json index 95ddc8419ede..dde9a0f18277 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/core", - "version": "8.38.0", + "version": "8.39.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", @@ -39,8 +39,12 @@ "access": "public" }, "dependencies": { - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/types": "8.39.0" + }, + "TODO(v9):": "Remove these dependencies", + "devDependencies": { + "@types/array.prototype.flat": "^1.2.1", + "array.prototype.flat": "^1.3.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/core/rollup.npm.config.mjs b/packages/core/rollup.npm.config.mjs index d28a7a6f54a0..cc3ad4064820 100644 --- a/packages/core/rollup.npm.config.mjs +++ b/packages/core/rollup.npm.config.mjs @@ -1,5 +1,19 @@ +// @ts-check + +import { readFileSync } from 'fs'; +import { dirname, join } from 'path'; +import { fileURLToPath } from 'url'; +import replace from '@rollup/plugin-replace'; import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; +const packageJson = JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), 'package.json'), 'utf-8')); + +if (!packageJson.version) { + throw new Error('invariant: package version not found'); +} + +const packageVersion = packageJson.version; + export default makeNPMConfigVariants( makeBaseNPMConfig({ packageSpecificConfig: { @@ -12,6 +26,14 @@ export default makeNPMConfigVariants( ? true : Boolean(process.env.SENTRY_BUILD_PRESERVE_MODULES), }, + plugins: [ + replace({ + preventAssignment: true, + values: { + __SENTRY_SDK_VERSION__: JSON.stringify(packageVersion), + }, + }), + ], }, }), ); diff --git a/packages/core/src/api.ts b/packages/core/src/api.ts index f345e14b1514..f8bb8cfe8eac 100644 --- a/packages/core/src/api.ts +++ b/packages/core/src/api.ts @@ -1,5 +1,6 @@ import type { DsnComponents, DsnLike, SdkInfo } from '@sentry/types'; -import { dsnToString, makeDsn, urlEncode } from '@sentry/utils'; +import { dsnToString, makeDsn } from './utils-hoist/dsn'; +import { urlEncode } from './utils-hoist/object'; const SENTRY_API_VERSION = '7'; diff --git a/packages/core/src/asyncContext/stackStrategy.ts b/packages/core/src/asyncContext/stackStrategy.ts index 2681bf95fc5d..256efb4a79e2 100644 --- a/packages/core/src/asyncContext/stackStrategy.ts +++ b/packages/core/src/asyncContext/stackStrategy.ts @@ -1,8 +1,8 @@ import type { Client, Scope as ScopeInterface } from '@sentry/types'; -import { isThenable } from '@sentry/utils'; import { getDefaultCurrentScope, getDefaultIsolationScope } from '../defaultScopes'; import { Scope } from '../scope'; +import { isThenable } from '../utils-hoist'; import { getMainCarrier, getSentryCarrier } from './../carrier'; import type { AsyncContextStrategy } from './types'; diff --git a/packages/core/src/baseclient.ts b/packages/core/src/baseclient.ts index db79df0d1c16..840992c4ea79 100644 --- a/packages/core/src/baseclient.ts +++ b/packages/core/src/baseclient.ts @@ -30,25 +30,6 @@ import type { Transport, TransportMakeRequestResponse, } from '@sentry/types'; -import { - SentryError, - SyncPromise, - addItemToEnvelope, - checkOrSetAlreadyCaught, - createAttachmentEnvelopeItem, - createClientReportEnvelope, - dropUndefinedKeys, - dsnToString, - isParameterizedString, - isPlainObject, - isPrimitive, - isThenable, - logger, - makeDsn, - rejectedSyncPromise, - resolvedSyncPromise, - uuid4, -} from '@sentry/utils'; import { getEnvelopeEndpointWithUrlEncodedAuth } from './api'; import { getIsolationScope } from './currentScopes'; @@ -60,6 +41,15 @@ import { setupIntegration, setupIntegrations } from './integration'; import type { Scope } from './scope'; import { updateSession } from './session'; import { getDynamicSamplingContextFromClient } from './tracing/dynamicSamplingContext'; +import { createClientReportEnvelope } from './utils-hoist/clientreport'; +import { dsnToString, makeDsn } from './utils-hoist/dsn'; +import { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils-hoist/envelope'; +import { SentryError } from './utils-hoist/error'; +import { isParameterizedString, isPlainObject, isPrimitive, isThenable } from './utils-hoist/is'; +import { logger } from './utils-hoist/logger'; +import { checkOrSetAlreadyCaught, uuid4 } from './utils-hoist/misc'; +import { dropUndefinedKeys } from './utils-hoist/object'; +import { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './utils-hoist/syncpromise'; import { parseSampleRate } from './utils/parseSampleRate'; import { prepareEvent } from './utils/prepareEvent'; diff --git a/packages/core/src/breadcrumbs.ts b/packages/core/src/breadcrumbs.ts index 1cfad5d08fea..2b1f78b50e8d 100644 --- a/packages/core/src/breadcrumbs.ts +++ b/packages/core/src/breadcrumbs.ts @@ -1,6 +1,7 @@ import type { Breadcrumb, BreadcrumbHint } from '@sentry/types'; -import { consoleSandbox, dateTimestampInSeconds } from '@sentry/utils'; import { getClient, getIsolationScope } from './currentScopes'; +import { consoleSandbox } from './utils-hoist/logger'; +import { dateTimestampInSeconds } from './utils-hoist/time'; /** * Default maximum number of breadcrumbs added to an event. Can be overwritten diff --git a/packages/core/src/carrier.ts b/packages/core/src/carrier.ts index 7442244223ca..6f212fc67edb 100644 --- a/packages/core/src/carrier.ts +++ b/packages/core/src/carrier.ts @@ -1,7 +1,8 @@ import type { Client, Integration, MetricsAggregator, Scope } from '@sentry/types'; -import { GLOBAL_OBJ, SDK_VERSION } from '@sentry/utils'; import type { AsyncContextStack } from './asyncContext/stackStrategy'; import type { AsyncContextStrategy } from './asyncContext/types'; +import { SDK_VERSION } from './utils-hoist/version'; +import { GLOBAL_OBJ } from './utils-hoist/worldwide'; /** * An object that contains globally accessible properties and maintains a scope stack. diff --git a/packages/core/src/checkin.ts b/packages/core/src/checkin.ts index 8ffc0d7a60d6..f9e16f8d8cd1 100644 --- a/packages/core/src/checkin.ts +++ b/packages/core/src/checkin.ts @@ -6,7 +6,9 @@ import type { SdkMetadata, SerializedCheckIn, } from '@sentry/types'; -import { createEnvelope, dropUndefinedKeys, dsnToString } from '@sentry/utils'; +import { dsnToString } from './utils-hoist/dsn'; +import { createEnvelope } from './utils-hoist/envelope'; +import { dropUndefinedKeys } from './utils-hoist/object'; /** * Create envelope from check in item. diff --git a/packages/core/src/currentScopes.ts b/packages/core/src/currentScopes.ts index 317042c08054..77e8aa70a02a 100644 --- a/packages/core/src/currentScopes.ts +++ b/packages/core/src/currentScopes.ts @@ -1,9 +1,9 @@ import type { Scope } from '@sentry/types'; import type { Client } from '@sentry/types'; -import { getGlobalSingleton } from '@sentry/utils'; import { getAsyncContextStrategy } from './asyncContext'; import { getMainCarrier } from './carrier'; import { Scope as ScopeClass } from './scope'; +import { getGlobalSingleton } from './utils-hoist/worldwide'; /** * Get the currently active scope. diff --git a/packages/core/src/defaultScopes.ts b/packages/core/src/defaultScopes.ts index d346ca7ad4dc..fa2f4700fdf9 100644 --- a/packages/core/src/defaultScopes.ts +++ b/packages/core/src/defaultScopes.ts @@ -1,6 +1,6 @@ import type { Scope } from '@sentry/types'; -import { getGlobalSingleton } from '@sentry/utils'; import { Scope as ScopeClass } from './scope'; +import { getGlobalSingleton } from './utils-hoist/worldwide'; /** Get the default current scope. */ export function getDefaultCurrentScope(): Scope { diff --git a/packages/core/src/envelope.ts b/packages/core/src/envelope.ts index efe55ab685ac..ddeb2ce21997 100644 --- a/packages/core/src/envelope.ts +++ b/packages/core/src/envelope.ts @@ -15,15 +15,15 @@ import type { SpanItem, SpanJSON, } from '@sentry/types'; +import { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext'; +import type { SentrySpan } from './tracing/sentrySpan'; +import { dsnToString } from './utils-hoist/dsn'; import { createEnvelope, createEventEnvelopeHeaders, - dsnToString, + createSpanEnvelopeItem, getSdkMetadataForEnvelopeHeader, -} from '@sentry/utils'; -import { createSpanEnvelopeItem } from '@sentry/utils'; -import { getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext'; -import type { SentrySpan } from './tracing/sentrySpan'; +} from './utils-hoist/envelope'; import { spanToJSON } from './utils/spanUtils'; /** diff --git a/packages/core/src/eventProcessors.ts b/packages/core/src/eventProcessors.ts index 2f648ba608e2..5886384879c5 100644 --- a/packages/core/src/eventProcessors.ts +++ b/packages/core/src/eventProcessors.ts @@ -1,7 +1,9 @@ import type { Event, EventHint, EventProcessor } from '@sentry/types'; -import { SyncPromise, isThenable, logger } from '@sentry/utils'; import { DEBUG_BUILD } from './debug-build'; +import { isThenable } from './utils-hoist/is'; +import { logger } from './utils-hoist/logger'; +import { SyncPromise } from './utils-hoist/syncpromise'; /** * Process an array of event processors, returning the processed event (or `null` if the event was dropped). diff --git a/packages/core/src/exports.ts b/packages/core/src/exports.ts index 8235e855903d..5e2be168487c 100644 --- a/packages/core/src/exports.ts +++ b/packages/core/src/exports.ts @@ -14,12 +14,16 @@ import type { SeverityLevel, User, } from '@sentry/types'; -import { GLOBAL_OBJ, isThenable, logger, timestampInSeconds, uuid4 } from '@sentry/utils'; import { DEFAULT_ENVIRONMENT } from './constants'; import { getClient, getCurrentScope, getIsolationScope, withIsolationScope } from './currentScopes'; import { DEBUG_BUILD } from './debug-build'; import { closeSession, makeSession, updateSession } from './session'; +import { isThenable } from './utils-hoist/is'; +import { logger } from './utils-hoist/logger'; +import { uuid4 } from './utils-hoist/misc'; +import { timestampInSeconds } from './utils-hoist/time'; +import { GLOBAL_OBJ } from './utils-hoist/worldwide'; import type { ExclusiveEventHintOrCaptureContext } from './utils/prepareEvent'; import { parseEventHintOrCaptureContext } from './utils/prepareEvent'; diff --git a/packages/core/src/feedback.ts b/packages/core/src/feedback.ts index 4920842e2114..e49f8ddc27a9 100644 --- a/packages/core/src/feedback.ts +++ b/packages/core/src/feedback.ts @@ -1,6 +1,6 @@ import type { EventHint, FeedbackEvent, SendFeedbackParams } from '@sentry/types'; -import { dropUndefinedKeys } from '@sentry/utils'; import { getClient, getCurrentScope } from './currentScopes'; +import { dropUndefinedKeys } from './utils-hoist/object'; /** * Send user feedback to Sentry. diff --git a/packages/core/src/fetch.ts b/packages/core/src/fetch.ts index 29ff5d074cd0..5880d2594baa 100644 --- a/packages/core/src/fetch.ts +++ b/packages/core/src/fetch.ts @@ -1,12 +1,4 @@ import type { Client, HandlerDataFetch, Scope, Span, SpanOrigin } from '@sentry/types'; -import { - BAGGAGE_HEADER_NAME, - SENTRY_BAGGAGE_KEY_PREFIX, - dynamicSamplingContextToSentryBaggageHeader, - generateSentryTraceHeader, - isInstanceOf, - parseUrl, -} from '@sentry/utils'; import { getClient, getCurrentScope, getIsolationScope } from './currentScopes'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from './semanticAttributes'; import { @@ -17,6 +9,14 @@ import { startInactiveSpan, } from './tracing'; import { SentryNonRecordingSpan } from './tracing/sentryNonRecordingSpan'; +import { + BAGGAGE_HEADER_NAME, + SENTRY_BAGGAGE_KEY_PREFIX, + dynamicSamplingContextToSentryBaggageHeader, +} from './utils-hoist/baggage'; +import { isInstanceOf } from './utils-hoist/is'; +import { generateSentryTraceHeader } from './utils-hoist/tracing'; +import { parseUrl } from './utils-hoist/url'; import { hasTracingEnabled } from './utils/hasTracingEnabled'; import { getActiveSpan, spanToTraceHeader } from './utils/spanUtils'; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 779c01830d92..c56c568d092f 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,3 +1,5 @@ +// TODO(v9): Don't have this file be in the "utils-hoist" folder but "utils" folder - it's cleaner + export type { ClientClass as SentryCoreCurrentScopes } from './sdk'; export type { AsyncContextStrategy } from './asyncContext/types'; export type { Carrier } from './carrier'; @@ -116,4 +118,4 @@ export { captureFeedback } from './feedback'; // eslint-disable-next-line deprecation/deprecation export { getCurrentHubShim, getCurrentHub } from './getCurrentHubShim'; -export { SDK_VERSION } from '@sentry/utils'; +export * from './utils-hoist/index'; diff --git a/packages/core/src/integration.ts b/packages/core/src/integration.ts index 500b717c3487..9f447163d8f0 100644 --- a/packages/core/src/integration.ts +++ b/packages/core/src/integration.ts @@ -1,8 +1,8 @@ import type { Client, Event, EventHint, Integration, IntegrationFn, Options } from '@sentry/types'; -import { arrayify, logger } from '@sentry/utils'; import { getClient } from './currentScopes'; import { DEBUG_BUILD } from './debug-build'; +import { logger } from './utils-hoist/logger'; declare module '@sentry/types' { interface Integration { @@ -58,7 +58,8 @@ export function getIntegrationsToSetup(options: Pick void; diff --git a/packages/core/src/integrations/inboundfilters.ts b/packages/core/src/integrations/inboundfilters.ts index 2dd87b5f91bf..f03068cabf26 100644 --- a/packages/core/src/integrations/inboundfilters.ts +++ b/packages/core/src/integrations/inboundfilters.ts @@ -1,8 +1,10 @@ import type { Event, IntegrationFn, StackFrame } from '@sentry/types'; -import { getEventDescription, logger, stringMatchesSomePattern } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { defineIntegration } from '../integration'; +import { logger } from '../utils-hoist/logger'; +import { getEventDescription } from '../utils-hoist/misc'; +import { stringMatchesSomePattern } from '../utils-hoist/string'; // "Script error." is hard coded into browsers for errors that it can't read. // this is the result of a script being pulled in from an external domain and CORS. diff --git a/packages/core/src/integrations/linkederrors.ts b/packages/core/src/integrations/linkederrors.ts index d5d4d03f9e90..fc2f62ec120e 100644 --- a/packages/core/src/integrations/linkederrors.ts +++ b/packages/core/src/integrations/linkederrors.ts @@ -1,6 +1,7 @@ import type { IntegrationFn } from '@sentry/types'; -import { applyAggregateErrorsToEvent, exceptionFromError } from '@sentry/utils'; import { defineIntegration } from '../integration'; +import { applyAggregateErrorsToEvent } from '../utils-hoist/aggregate-errors'; +import { exceptionFromError } from '../utils-hoist/eventbuilder'; interface LinkedErrorsOptions { key?: string; diff --git a/packages/core/src/integrations/metadata.ts b/packages/core/src/integrations/metadata.ts index 0bf11746dc1b..1f02b57461b5 100644 --- a/packages/core/src/integrations/metadata.ts +++ b/packages/core/src/integrations/metadata.ts @@ -1,8 +1,8 @@ import type { EventItem } from '@sentry/types'; -import { forEachEnvelopeItem } from '@sentry/utils'; import { defineIntegration } from '../integration'; import { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata'; +import { forEachEnvelopeItem } from '../utils-hoist/envelope'; /** * Adds module metadata to stack frames. diff --git a/packages/core/src/integrations/requestdata.ts b/packages/core/src/integrations/requestdata.ts index 15be450cf27e..ae016959d9c3 100644 --- a/packages/core/src/integrations/requestdata.ts +++ b/packages/core/src/integrations/requestdata.ts @@ -1,8 +1,10 @@ import type { IntegrationFn } from '@sentry/types'; -import type { AddRequestDataToEventOptions, TransactionNamingScheme } from '@sentry/utils'; -import { addNormalizedRequestDataToEvent } from '@sentry/utils'; -import { addRequestDataToEvent } from '@sentry/utils'; import { defineIntegration } from '../integration'; +import { + type AddRequestDataToEventOptions, + addNormalizedRequestDataToEvent, + addRequestDataToEvent, +} from '../utils-hoist/requestdata'; export type RequestDataIntegrationOptions = { /** @@ -28,8 +30,7 @@ export type RequestDataIntegrationOptions = { * Whether to identify transactions by parameterized path, parameterized path with method, or handler name. * @deprecated This option does not do anything anymore, and will be removed in v9. */ - // eslint-disable-next-line deprecation/deprecation - transactionNamingScheme?: TransactionNamingScheme; + transactionNamingScheme?: 'path' | 'methodPath' | 'handler'; }; const DEFAULT_OPTIONS = { diff --git a/packages/core/src/integrations/rewriteframes.ts b/packages/core/src/integrations/rewriteframes.ts index 3b81d141cdad..88e9038cfd47 100644 --- a/packages/core/src/integrations/rewriteframes.ts +++ b/packages/core/src/integrations/rewriteframes.ts @@ -1,6 +1,7 @@ import type { Event, StackFrame, Stacktrace } from '@sentry/types'; -import { GLOBAL_OBJ, basename, relative } from '@sentry/utils'; import { defineIntegration } from '../integration'; +import { basename, relative } from '../utils-hoist/path'; +import { GLOBAL_OBJ } from '../utils-hoist/worldwide'; type StackFrameIteratee = (frame: StackFrame) => StackFrame; diff --git a/packages/core/src/integrations/sessiontiming.ts b/packages/core/src/integrations/sessiontiming.ts index 3b4a68fe792c..e52cb3c97482 100644 --- a/packages/core/src/integrations/sessiontiming.ts +++ b/packages/core/src/integrations/sessiontiming.ts @@ -1,6 +1,6 @@ import type { IntegrationFn } from '@sentry/types'; -import { timestampInSeconds } from '@sentry/utils'; import { defineIntegration } from '../integration'; +import { timestampInSeconds } from '../utils-hoist/time'; const INTEGRATION_NAME = 'SessionTiming'; diff --git a/packages/core/src/integrations/third-party-errors-filter.ts b/packages/core/src/integrations/third-party-errors-filter.ts index 652ca23a6da6..5e64a8736826 100644 --- a/packages/core/src/integrations/third-party-errors-filter.ts +++ b/packages/core/src/integrations/third-party-errors-filter.ts @@ -1,7 +1,8 @@ import type { Event, EventItem } from '@sentry/types'; -import { forEachEnvelopeItem, getFramesFromEvent } from '@sentry/utils'; import { defineIntegration } from '../integration'; import { addMetadataToStackFrames, stripMetadataFromStackFrames } from '../metadata'; +import { forEachEnvelopeItem } from '../utils-hoist/envelope'; +import { getFramesFromEvent } from '../utils-hoist/stacktrace'; interface Options { /** diff --git a/packages/core/src/integrations/zoderrors.ts b/packages/core/src/integrations/zoderrors.ts index 6dc583e54235..1c2cb8e59b56 100644 --- a/packages/core/src/integrations/zoderrors.ts +++ b/packages/core/src/integrations/zoderrors.ts @@ -1,7 +1,8 @@ import type { IntegrationFn } from '@sentry/types'; import type { Event, EventHint } from '@sentry/types'; -import { isError, truncate } from '@sentry/utils'; import { defineIntegration } from '../integration'; +import { isError } from '../utils-hoist/is'; +import { truncate } from '../utils-hoist/string'; interface ZodErrorsOptions { key?: string; diff --git a/packages/core/src/metadata.ts b/packages/core/src/metadata.ts index c13a5dabce34..11a0af6eaadb 100644 --- a/packages/core/src/metadata.ts +++ b/packages/core/src/metadata.ts @@ -1,5 +1,5 @@ import type { Event, StackParser } from '@sentry/types'; -import { GLOBAL_OBJ } from '@sentry/utils'; +import { GLOBAL_OBJ } from './utils-hoist/worldwide'; /** Keys are source filename/url, values are metadata objects. */ // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/core/src/metrics/aggregator.ts b/packages/core/src/metrics/aggregator.ts index c87fd14e34f9..0fee0551fc66 100644 --- a/packages/core/src/metrics/aggregator.ts +++ b/packages/core/src/metrics/aggregator.ts @@ -1,5 +1,5 @@ import type { Client, MeasurementUnit, MetricsAggregator as MetricsAggregatorBase, Primitive } from '@sentry/types'; -import { timestampInSeconds } from '@sentry/utils'; +import { timestampInSeconds } from '../utils-hoist/time'; import { updateMetricSummaryOnActiveSpan } from '../utils/spanUtils'; import { DEFAULT_FLUSH_INTERVAL, MAX_WEIGHT, SET_METRIC_TYPE } from './constants'; import { captureAggregateMetrics } from './envelope'; diff --git a/packages/core/src/metrics/browser-aggregator.ts b/packages/core/src/metrics/browser-aggregator.ts index e087b45ca010..0818f691f313 100644 --- a/packages/core/src/metrics/browser-aggregator.ts +++ b/packages/core/src/metrics/browser-aggregator.ts @@ -1,5 +1,5 @@ import type { Client, MeasurementUnit, MetricsAggregator, Primitive } from '@sentry/types'; -import { timestampInSeconds } from '@sentry/utils'; +import { timestampInSeconds } from '../utils-hoist/time'; import { updateMetricSummaryOnActiveSpan } from '../utils/spanUtils'; import { DEFAULT_BROWSER_FLUSH_INTERVAL, SET_METRIC_TYPE } from './constants'; import { captureAggregateMetrics } from './envelope'; diff --git a/packages/core/src/metrics/envelope.ts b/packages/core/src/metrics/envelope.ts index f3bd67b27ec6..8924df587771 100644 --- a/packages/core/src/metrics/envelope.ts +++ b/packages/core/src/metrics/envelope.ts @@ -1,5 +1,7 @@ import type { Client, DsnComponents, MetricBucketItem, SdkMetadata, StatsdEnvelope, StatsdItem } from '@sentry/types'; -import { createEnvelope, dsnToString, logger } from '@sentry/utils'; +import { dsnToString } from '../utils-hoist/dsn'; +import { createEnvelope } from '../utils-hoist/envelope'; +import { logger } from '../utils-hoist/logger'; import { serializeMetricBuckets } from './utils'; /** diff --git a/packages/core/src/metrics/exports.ts b/packages/core/src/metrics/exports.ts index 2b3cdbcef8ba..96a52f62e5c9 100644 --- a/packages/core/src/metrics/exports.ts +++ b/packages/core/src/metrics/exports.ts @@ -1,8 +1,10 @@ import type { Client, DurationUnit, MetricData, MetricsAggregator as MetricsAggregatorInterface } from '@sentry/types'; -import { getGlobalSingleton, logger, timestampInSeconds } from '@sentry/utils'; import { getClient } from '../currentScopes'; import { DEBUG_BUILD } from '../debug-build'; import { startSpanManual } from '../tracing'; +import { logger } from '../utils-hoist/logger'; +import { timestampInSeconds } from '../utils-hoist/time'; +import { getGlobalSingleton } from '../utils-hoist/worldwide'; import { handleCallbackErrors } from '../utils/handleCallbackErrors'; import { getActiveSpan, getRootSpan, spanToJSON } from '../utils/spanUtils'; import { COUNTER_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, GAUGE_METRIC_TYPE, SET_METRIC_TYPE } from './constants'; diff --git a/packages/core/src/metrics/metric-summary.ts b/packages/core/src/metrics/metric-summary.ts index 279bea9e0808..90a3365ccdaf 100644 --- a/packages/core/src/metrics/metric-summary.ts +++ b/packages/core/src/metrics/metric-summary.ts @@ -1,7 +1,7 @@ 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 { dropUndefinedKeys } from '../utils-hoist/object'; import type { MetricType } from './types'; /** diff --git a/packages/core/src/metrics/utils.ts b/packages/core/src/metrics/utils.ts index bc1ff93e0002..06df4a96bced 100644 --- a/packages/core/src/metrics/utils.ts +++ b/packages/core/src/metrics/utils.ts @@ -1,5 +1,5 @@ import type { MeasurementUnit, MetricBucketItem, Primitive } from '@sentry/types'; -import { dropUndefinedKeys } from '@sentry/utils'; +import { dropUndefinedKeys } from '../utils-hoist/object'; import type { MetricType } from './types'; /** diff --git a/packages/core/src/profiling.ts b/packages/core/src/profiling.ts index 446eebb73671..877f9d71ac15 100644 --- a/packages/core/src/profiling.ts +++ b/packages/core/src/profiling.ts @@ -1,8 +1,8 @@ import type { Profiler, ProfilingIntegration } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { getClient } from './currentScopes'; import { DEBUG_BUILD } from './debug-build'; +import { logger } from './utils-hoist/logger'; function isProfilingIntegrationWithProfiler( integration: ProfilingIntegration | undefined, diff --git a/packages/core/src/scope.ts b/packages/core/src/scope.ts index aa7e7e90b9af..9ca6411eac35 100644 --- a/packages/core/src/scope.ts +++ b/packages/core/src/scope.ts @@ -21,9 +21,13 @@ import type { SeverityLevel, User, } from '@sentry/types'; -import { dateTimestampInSeconds, generatePropagationContext, isPlainObject, logger, uuid4 } from '@sentry/utils'; import { updateSession } from './session'; +import { isPlainObject } from './utils-hoist/is'; +import { logger } from './utils-hoist/logger'; +import { uuid4 } from './utils-hoist/misc'; +import { generatePropagationContext } from './utils-hoist/propagationContext'; +import { dateTimestampInSeconds } from './utils-hoist/time'; import { merge } from './utils/merge'; import { _getSpanForScope, _setSpanForScope } from './utils/spanOnScope'; diff --git a/packages/core/src/sdk.ts b/packages/core/src/sdk.ts index d78f8f253186..82895b9a03f9 100644 --- a/packages/core/src/sdk.ts +++ b/packages/core/src/sdk.ts @@ -1,8 +1,8 @@ import type { Client, ClientOptions } from '@sentry/types'; -import { consoleSandbox, logger } from '@sentry/utils'; import { getCurrentScope } from './currentScopes'; import { DEBUG_BUILD } from './debug-build'; +import { consoleSandbox, logger } from './utils-hoist/logger'; /** A class object that can instantiate Client objects. */ export type ClientClass = new (options: O) => F; diff --git a/packages/core/src/server-runtime-client.ts b/packages/core/src/server-runtime-client.ts index 6d1a3683b05b..93c1051ed6ec 100644 --- a/packages/core/src/server-runtime-client.ts +++ b/packages/core/src/server-runtime-client.ts @@ -11,7 +11,6 @@ import type { SeverityLevel, TraceContext, } from '@sentry/types'; -import { eventFromMessage, eventFromUnknownInput, logger, resolvedSyncPromise, uuid4 } from '@sentry/utils'; import { BaseClient } from './baseclient'; import { createCheckInEnvelope } from './checkin'; @@ -24,6 +23,10 @@ import { getDynamicSamplingContextFromSpan, registerSpanErrorInstrumentation, } from './tracing'; +import { eventFromMessage, eventFromUnknownInput } from './utils-hoist/eventbuilder'; +import { logger } from './utils-hoist/logger'; +import { uuid4 } from './utils-hoist/misc'; +import { resolvedSyncPromise } from './utils-hoist/syncpromise'; import { _getSpanForScope } from './utils/spanOnScope'; import { getRootSpan, spanToTraceContext } from './utils/spanUtils'; diff --git a/packages/core/src/session.ts b/packages/core/src/session.ts index 4d3786bab9c5..bf584482e87b 100644 --- a/packages/core/src/session.ts +++ b/packages/core/src/session.ts @@ -1,5 +1,6 @@ import type { SerializedSession, Session, SessionContext, SessionStatus } from '@sentry/types'; -import { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils'; +import { dropUndefinedKeys, timestampInSeconds, uuid4 } from './utils-hoist'; + /** * Creates a new `Session` object by setting certain default parameters. If optional @param context * is passed, the passed properties are applied to the session object. diff --git a/packages/core/src/sessionflusher.ts b/packages/core/src/sessionflusher.ts index 02c93791007e..8734c0de2f12 100644 --- a/packages/core/src/sessionflusher.ts +++ b/packages/core/src/sessionflusher.ts @@ -5,8 +5,8 @@ import type { SessionAggregates, SessionFlusherLike, } from '@sentry/types'; -import { dropUndefinedKeys } from '@sentry/utils'; import { getIsolationScope } from './currentScopes'; +import { dropUndefinedKeys } from './utils-hoist/object'; type ReleaseHealthAttributes = { environment?: string; diff --git a/packages/core/src/tracing/dynamicSamplingContext.ts b/packages/core/src/tracing/dynamicSamplingContext.ts index d96dd726d51f..1e8ca0448b3b 100644 --- a/packages/core/src/tracing/dynamicSamplingContext.ts +++ b/packages/core/src/tracing/dynamicSamplingContext.ts @@ -1,14 +1,13 @@ import type { Client, DynamicSamplingContext, Span } from '@sentry/types'; -import { - addNonEnumerableProperty, - baggageHeaderToDynamicSamplingContext, - dropUndefinedKeys, - dynamicSamplingContextToSentryBaggageHeader, -} from '@sentry/utils'; import { DEFAULT_ENVIRONMENT } from '../constants'; import { getClient } from '../currentScopes'; import { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes'; +import { + baggageHeaderToDynamicSamplingContext, + dynamicSamplingContextToSentryBaggageHeader, +} from '../utils-hoist/baggage'; +import { addNonEnumerableProperty, dropUndefinedKeys } from '../utils-hoist/object'; import { hasTracingEnabled } from '../utils/hasTracingEnabled'; import { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils'; diff --git a/packages/core/src/tracing/errors.ts b/packages/core/src/tracing/errors.ts index a611dd1d80e4..6c7f894a60b6 100644 --- a/packages/core/src/tracing/errors.ts +++ b/packages/core/src/tracing/errors.ts @@ -1,10 +1,7 @@ -import { - addGlobalErrorInstrumentationHandler, - addGlobalUnhandledRejectionInstrumentationHandler, - logger, -} from '@sentry/utils'; - import { DEBUG_BUILD } from '../debug-build'; +import { addGlobalErrorInstrumentationHandler } from '../utils-hoist/instrument/globalError'; +import { addGlobalUnhandledRejectionInstrumentationHandler } from '../utils-hoist/instrument/globalUnhandledRejection'; +import { logger } from '../utils-hoist/logger'; import { getActiveSpan, getRootSpan } from '../utils/spanUtils'; import { SPAN_STATUS_ERROR } from './spanstatus'; diff --git a/packages/core/src/tracing/idleSpan.ts b/packages/core/src/tracing/idleSpan.ts index 3a9b705dd449..6a6dd12fc6e8 100644 --- a/packages/core/src/tracing/idleSpan.ts +++ b/packages/core/src/tracing/idleSpan.ts @@ -1,9 +1,10 @@ import type { Span, SpanAttributes, StartSpanOptions } from '@sentry/types'; -import { logger, timestampInSeconds } from '@sentry/utils'; import { getClient, getCurrentScope } from '../currentScopes'; import { DEBUG_BUILD } from '../debug-build'; import { SEMANTIC_ATTRIBUTE_SENTRY_IDLE_SPAN_FINISH_REASON } from '../semanticAttributes'; +import { logger } from '../utils-hoist/logger'; +import { timestampInSeconds } from '../utils-hoist/time'; import { hasTracingEnabled } from '../utils/hasTracingEnabled'; import { _setSpanForScope } from '../utils/spanOnScope'; import { diff --git a/packages/core/src/tracing/logSpans.ts b/packages/core/src/tracing/logSpans.ts index 11a83c6b7a41..f7b0522bf6dc 100644 --- a/packages/core/src/tracing/logSpans.ts +++ b/packages/core/src/tracing/logSpans.ts @@ -1,6 +1,6 @@ import type { Span } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; +import { logger } from '../utils-hoist/logger'; import { getRootSpan, spanIsSampled, spanToJSON } from '../utils/spanUtils'; /** diff --git a/packages/core/src/tracing/sampling.ts b/packages/core/src/tracing/sampling.ts index 1f8e0d0eda83..de737d3d5776 100644 --- a/packages/core/src/tracing/sampling.ts +++ b/packages/core/src/tracing/sampling.ts @@ -1,7 +1,7 @@ import type { Options, SamplingContext } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; +import { logger } from '../utils-hoist/logger'; import { hasTracingEnabled } from '../utils/hasTracingEnabled'; import { parseSampleRate } from '../utils/parseSampleRate'; diff --git a/packages/core/src/tracing/sentryNonRecordingSpan.ts b/packages/core/src/tracing/sentryNonRecordingSpan.ts index c39730faf9c5..6f1365671bc0 100644 --- a/packages/core/src/tracing/sentryNonRecordingSpan.ts +++ b/packages/core/src/tracing/sentryNonRecordingSpan.ts @@ -7,7 +7,7 @@ import type { SpanStatus, SpanTimeInput, } from '@sentry/types'; -import { uuid4 } from '@sentry/utils'; +import { uuid4 } from '../utils-hoist/misc'; import { TRACE_FLAG_NONE } from '../utils/spanUtils'; /** diff --git a/packages/core/src/tracing/sentrySpan.ts b/packages/core/src/tracing/sentrySpan.ts index 4f0096b29773..4e0b0fb07e73 100644 --- a/packages/core/src/tracing/sentrySpan.ts +++ b/packages/core/src/tracing/sentrySpan.ts @@ -13,7 +13,6 @@ import type { TransactionEvent, TransactionSource, } from '@sentry/types'; -import { dropUndefinedKeys, logger, timestampInSeconds, uuid4 } from '@sentry/utils'; import { getClient, getCurrentScope } from '../currentScopes'; import { DEBUG_BUILD } from '../debug-build'; @@ -26,6 +25,10 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, } from '../semanticAttributes'; +import { logger } from '../utils-hoist/logger'; +import { uuid4 } from '../utils-hoist/misc'; +import { dropUndefinedKeys } from '../utils-hoist/object'; +import { timestampInSeconds } from '../utils-hoist/time'; import { TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, diff --git a/packages/core/src/tracing/trace.ts b/packages/core/src/tracing/trace.ts index 0cb98082c590..cac212246f36 100644 --- a/packages/core/src/tracing/trace.ts +++ b/packages/core/src/tracing/trace.ts @@ -1,7 +1,6 @@ /* eslint-disable max-lines */ import type { ClientOptions, Scope, SentrySpanArguments, Span, SpanTimeInput, StartSpanOptions } from '@sentry/types'; -import { generatePropagationContext, logger, propagationContextFromHeaders } from '@sentry/utils'; import type { AsyncContextStrategy } from '../asyncContext/types'; import { getMainCarrier } from '../carrier'; @@ -10,6 +9,9 @@ import { getClient, getCurrentScope, getIsolationScope, withScope } from '../cur import { getAsyncContextStrategy } from '../asyncContext'; import { DEBUG_BUILD } from '../debug-build'; import { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '../semanticAttributes'; +import { logger } from '../utils-hoist/logger'; +import { generatePropagationContext } from '../utils-hoist/propagationContext'; +import { propagationContextFromHeaders } from '../utils-hoist/tracing'; import { handleCallbackErrors } from '../utils/handleCallbackErrors'; import { hasTracingEnabled } from '../utils/hasTracingEnabled'; import { _getSpanForScope, _setSpanForScope } from '../utils/spanOnScope'; diff --git a/packages/core/src/tracing/utils.ts b/packages/core/src/tracing/utils.ts index 28ba9fb271eb..80ad6762dfb8 100644 --- a/packages/core/src/tracing/utils.ts +++ b/packages/core/src/tracing/utils.ts @@ -1,9 +1,6 @@ import type { Span } from '@sentry/types'; import type { Scope } from '@sentry/types'; -import { addNonEnumerableProperty } from '@sentry/utils'; - -// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils -export { stripUrlQueryAndFragment } from '@sentry/utils'; +import { addNonEnumerableProperty } from '../utils-hoist/object'; const SCOPE_ON_START_SPAN_FIELD = '_sentryScope'; const ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope'; diff --git a/packages/core/src/transports/base.ts b/packages/core/src/transports/base.ts index 965125590896..d2f02fc32a82 100644 --- a/packages/core/src/transports/base.ts +++ b/packages/core/src/transports/base.ts @@ -10,21 +10,19 @@ import type { TransportMakeRequestResponse, TransportRequestExecutor, } from '@sentry/types'; -import type { PromiseBuffer, RateLimits } from '@sentry/utils'; + +import { DEBUG_BUILD } from '../debug-build'; import { - SentryError, createEnvelope, envelopeItemTypeToDataCategory, forEachEnvelopeItem, - isRateLimited, - logger, - makePromiseBuffer, - resolvedSyncPromise, serializeEnvelope, - updateRateLimits, -} from '@sentry/utils'; - -import { DEBUG_BUILD } from '../debug-build'; +} from '../utils-hoist/envelope'; +import { SentryError } from '../utils-hoist/error'; +import { logger } from '../utils-hoist/logger'; +import { type PromiseBuffer, makePromiseBuffer } from '../utils-hoist/promisebuffer'; +import { type RateLimits, isRateLimited, updateRateLimits } from '../utils-hoist/ratelimit'; +import { resolvedSyncPromise } from '../utils-hoist/syncpromise'; export const DEFAULT_TRANSPORT_BUFFER_SIZE = 64; diff --git a/packages/core/src/transports/multiplexed.ts b/packages/core/src/transports/multiplexed.ts index 6b58637025dd..afb839b15863 100644 --- a/packages/core/src/transports/multiplexed.ts +++ b/packages/core/src/transports/multiplexed.ts @@ -7,9 +7,10 @@ import type { Transport, TransportMakeRequestResponse, } from '@sentry/types'; -import { createEnvelope, dsnFromString, forEachEnvelopeItem } from '@sentry/utils'; import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api'; +import { dsnFromString } from '../utils-hoist/dsn'; +import { createEnvelope, forEachEnvelopeItem } from '../utils-hoist/envelope'; interface MatchParam { /** The envelope to be sent */ diff --git a/packages/core/src/transports/offline.ts b/packages/core/src/transports/offline.ts index 9d30b8cb34ec..f8d3196dd7b5 100644 --- a/packages/core/src/transports/offline.ts +++ b/packages/core/src/transports/offline.ts @@ -1,7 +1,9 @@ import type { Envelope, InternalBaseTransportOptions, Transport, TransportMakeRequestResponse } from '@sentry/types'; -import { envelopeContainsItemType, logger, parseRetryAfterHeader } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; +import { envelopeContainsItemType } from '../utils-hoist/envelope'; +import { logger } from '../utils-hoist/logger'; +import { parseRetryAfterHeader } from '../utils-hoist/ratelimit'; export const MIN_DELAY = 100; // 100 ms export const START_DELAY = 5_000; // 5 seconds diff --git a/packages/core/src/trpc.ts b/packages/core/src/trpc.ts index fbcdf5832b46..eddabd123250 100644 --- a/packages/core/src/trpc.ts +++ b/packages/core/src/trpc.ts @@ -1,9 +1,8 @@ -import { normalize } from '@sentry/utils'; - import { getClient, withScope } from './currentScopes'; import { captureException } from './exports'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes'; import { startSpanManual } from './tracing'; +import { normalize } from './utils-hoist/normalize'; interface SentryTrpcMiddlewareOptions { /** Whether to include procedure inputs in reported events. Defaults to `false`. */ diff --git a/packages/utils/src/aggregate-errors.ts b/packages/core/src/utils-hoist/aggregate-errors.ts similarity index 100% rename from packages/utils/src/aggregate-errors.ts rename to packages/core/src/utils-hoist/aggregate-errors.ts diff --git a/packages/utils/src/anr.ts b/packages/core/src/utils-hoist/anr.ts similarity index 100% rename from packages/utils/src/anr.ts rename to packages/core/src/utils-hoist/anr.ts diff --git a/packages/utils/src/array.ts b/packages/core/src/utils-hoist/array.ts similarity index 100% rename from packages/utils/src/array.ts rename to packages/core/src/utils-hoist/array.ts diff --git a/packages/utils/src/baggage.ts b/packages/core/src/utils-hoist/baggage.ts similarity index 100% rename from packages/utils/src/baggage.ts rename to packages/core/src/utils-hoist/baggage.ts diff --git a/packages/utils/src/breadcrumb-log-level.ts b/packages/core/src/utils-hoist/breadcrumb-log-level.ts similarity index 100% rename from packages/utils/src/breadcrumb-log-level.ts rename to packages/core/src/utils-hoist/breadcrumb-log-level.ts diff --git a/packages/utils/src/browser.ts b/packages/core/src/utils-hoist/browser.ts similarity index 100% rename from packages/utils/src/browser.ts rename to packages/core/src/utils-hoist/browser.ts diff --git a/packages/utils/src/buildPolyfills/README.md b/packages/core/src/utils-hoist/buildPolyfills/README.md similarity index 100% rename from packages/utils/src/buildPolyfills/README.md rename to packages/core/src/utils-hoist/buildPolyfills/README.md diff --git a/packages/utils/src/buildPolyfills/_asyncNullishCoalesce.ts b/packages/core/src/utils-hoist/buildPolyfills/_asyncNullishCoalesce.ts similarity index 100% rename from packages/utils/src/buildPolyfills/_asyncNullishCoalesce.ts rename to packages/core/src/utils-hoist/buildPolyfills/_asyncNullishCoalesce.ts diff --git a/packages/utils/src/buildPolyfills/_asyncOptionalChain.ts b/packages/core/src/utils-hoist/buildPolyfills/_asyncOptionalChain.ts similarity index 100% rename from packages/utils/src/buildPolyfills/_asyncOptionalChain.ts rename to packages/core/src/utils-hoist/buildPolyfills/_asyncOptionalChain.ts diff --git a/packages/utils/src/buildPolyfills/_asyncOptionalChainDelete.ts b/packages/core/src/utils-hoist/buildPolyfills/_asyncOptionalChainDelete.ts similarity index 100% rename from packages/utils/src/buildPolyfills/_asyncOptionalChainDelete.ts rename to packages/core/src/utils-hoist/buildPolyfills/_asyncOptionalChainDelete.ts diff --git a/packages/utils/src/buildPolyfills/_nullishCoalesce.ts b/packages/core/src/utils-hoist/buildPolyfills/_nullishCoalesce.ts similarity index 100% rename from packages/utils/src/buildPolyfills/_nullishCoalesce.ts rename to packages/core/src/utils-hoist/buildPolyfills/_nullishCoalesce.ts diff --git a/packages/utils/src/buildPolyfills/_optionalChain.ts b/packages/core/src/utils-hoist/buildPolyfills/_optionalChain.ts similarity index 100% rename from packages/utils/src/buildPolyfills/_optionalChain.ts rename to packages/core/src/utils-hoist/buildPolyfills/_optionalChain.ts diff --git a/packages/utils/src/buildPolyfills/_optionalChainDelete.ts b/packages/core/src/utils-hoist/buildPolyfills/_optionalChainDelete.ts similarity index 100% rename from packages/utils/src/buildPolyfills/_optionalChainDelete.ts rename to packages/core/src/utils-hoist/buildPolyfills/_optionalChainDelete.ts diff --git a/packages/utils/src/buildPolyfills/index.ts b/packages/core/src/utils-hoist/buildPolyfills/index.ts similarity index 100% rename from packages/utils/src/buildPolyfills/index.ts rename to packages/core/src/utils-hoist/buildPolyfills/index.ts diff --git a/packages/utils/src/buildPolyfills/types.ts b/packages/core/src/utils-hoist/buildPolyfills/types.ts similarity index 100% rename from packages/utils/src/buildPolyfills/types.ts rename to packages/core/src/utils-hoist/buildPolyfills/types.ts diff --git a/packages/utils/src/cache.ts b/packages/core/src/utils-hoist/cache.ts similarity index 100% rename from packages/utils/src/cache.ts rename to packages/core/src/utils-hoist/cache.ts diff --git a/packages/utils/src/clientreport.ts b/packages/core/src/utils-hoist/clientreport.ts similarity index 100% rename from packages/utils/src/clientreport.ts rename to packages/core/src/utils-hoist/clientreport.ts diff --git a/packages/utils/src/cookie.ts b/packages/core/src/utils-hoist/cookie.ts similarity index 100% rename from packages/utils/src/cookie.ts rename to packages/core/src/utils-hoist/cookie.ts diff --git a/packages/utils/src/debug-build.ts b/packages/core/src/utils-hoist/debug-build.ts similarity index 100% rename from packages/utils/src/debug-build.ts rename to packages/core/src/utils-hoist/debug-build.ts diff --git a/packages/utils/src/debug-ids.ts b/packages/core/src/utils-hoist/debug-ids.ts similarity index 100% rename from packages/utils/src/debug-ids.ts rename to packages/core/src/utils-hoist/debug-ids.ts diff --git a/packages/utils/src/dsn.ts b/packages/core/src/utils-hoist/dsn.ts similarity index 100% rename from packages/utils/src/dsn.ts rename to packages/core/src/utils-hoist/dsn.ts diff --git a/packages/utils/src/env.ts b/packages/core/src/utils-hoist/env.ts similarity index 100% rename from packages/utils/src/env.ts rename to packages/core/src/utils-hoist/env.ts diff --git a/packages/utils/src/envelope.ts b/packages/core/src/utils-hoist/envelope.ts similarity index 100% rename from packages/utils/src/envelope.ts rename to packages/core/src/utils-hoist/envelope.ts diff --git a/packages/utils/src/error.ts b/packages/core/src/utils-hoist/error.ts similarity index 100% rename from packages/utils/src/error.ts rename to packages/core/src/utils-hoist/error.ts diff --git a/packages/utils/src/eventbuilder.ts b/packages/core/src/utils-hoist/eventbuilder.ts similarity index 100% rename from packages/utils/src/eventbuilder.ts rename to packages/core/src/utils-hoist/eventbuilder.ts diff --git a/packages/core/src/utils-hoist/index.ts b/packages/core/src/utils-hoist/index.ts new file mode 100644 index 000000000000..fb90f8dcabb7 --- /dev/null +++ b/packages/core/src/utils-hoist/index.ts @@ -0,0 +1,170 @@ +export { applyAggregateErrorsToEvent } from './aggregate-errors'; +export { flatten } from './array'; +export { getBreadcrumbLogLevelFromHttpStatusCode } from './breadcrumb-log-level'; +export { getComponentName, getDomElement, getLocationHref, htmlTreeAsString } from './browser'; +export { dsnFromString, dsnToString, makeDsn } from './dsn'; +export { SentryError } from './error'; +export { GLOBAL_OBJ, getGlobalSingleton } from './worldwide'; +export type { InternalGlobal } from './worldwide'; +export { addConsoleInstrumentationHandler } from './instrument/console'; +export { addFetchEndInstrumentationHandler, addFetchInstrumentationHandler } from './instrument/fetch'; +export { addGlobalErrorInstrumentationHandler } from './instrument/globalError'; +export { addGlobalUnhandledRejectionInstrumentationHandler } from './instrument/globalUnhandledRejection'; +export { + addHandler, + maybeInstrument, + resetInstrumentationHandlers, + triggerHandlers, +} from './instrument/handlers'; +export { + isDOMError, + isDOMException, + isElement, + isError, + isErrorEvent, + isEvent, + isInstanceOf, + isParameterizedString, + isPlainObject, + isPrimitive, + isRegExp, + isString, + isSyntheticEvent, + isThenable, + isVueViewModel, +} from './is'; +export { isBrowser } from './isBrowser'; +export { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods } from './logger'; +export { memoBuilder } from './memo'; +export { + addContextToFrame, + addExceptionMechanism, + addExceptionTypeValue, + arrayify, + checkOrSetAlreadyCaught, + getEventDescription, + parseSemver, + uuid4, +} from './misc'; +export { dynamicRequire, isNodeEnv, loadModule } from './node'; +export { normalize, normalizeToSize, normalizeUrlToBase } from './normalize'; +export { + addNonEnumerableProperty, + convertToPlainObject, + dropUndefinedKeys, + extractExceptionKeysForMessage, + fill, + getOriginalFunction, + markFunctionWrapped, + objectify, + urlEncode, +} from './object'; +export { basename, dirname, isAbsolute, join, normalizePath, relative, resolve } from './path'; +export { makePromiseBuffer } from './promisebuffer'; +export type { PromiseBuffer } from './promisebuffer'; + +// TODO: Remove requestdata export once equivalent integration is used everywhere +export { + DEFAULT_USER_INCLUDES, + addNormalizedRequestDataToEvent, + addRequestDataToEvent, + // eslint-disable-next-line deprecation/deprecation + extractPathForTransaction, + extractRequestData, + winterCGHeadersToDict, + winterCGRequestToRequestData, + extractQueryParamsFromUrl, + headersToDict, +} from './requestdata'; +export type { + AddRequestDataToEventOptions, + // eslint-disable-next-line deprecation/deprecation + TransactionNamingScheme, +} from './requestdata'; + +export { severityLevelFromString, validSeverityLevels } from './severity'; +export { + UNKNOWN_FUNCTION, + createStackParser, + getFramesFromEvent, + getFunctionName, + stackParserFromStackParserOptions, + stripSentryFramesAndReverse, +} from './stacktrace'; +export { filenameIsInApp, node, nodeStackLineParser } from './node-stack-trace'; +export { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate } from './string'; +export { + isNativeFunction, + supportsDOMError, + supportsDOMException, + supportsErrorEvent, + supportsFetch, + supportsNativeFetch, + supportsReferrerPolicy, + supportsReportingObserver, +} from './supports'; +export { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise'; +export { + _browserPerformanceTimeOriginMode, + browserPerformanceTimeOrigin, + dateTimestampInSeconds, + timestampInSeconds, +} from './time'; +export { + TRACEPARENT_REGEXP, + extractTraceparentData, + generateSentryTraceHeader, + propagationContextFromHeaders, +} from './tracing'; +export { getSDKSource, isBrowserBundle } from './env'; +export type { SdkSource } from './env'; +export { + addItemToEnvelope, + createAttachmentEnvelopeItem, + createEnvelope, + createEventEnvelopeHeaders, + createSpanEnvelopeItem, + envelopeContainsItemType, + envelopeItemTypeToDataCategory, + forEachEnvelopeItem, + getSdkMetadataForEnvelopeHeader, + parseEnvelope, + serializeEnvelope, +} from './envelope'; +export { createClientReportEnvelope } from './clientreport'; +export { + DEFAULT_RETRY_AFTER, + disabledUntil, + isRateLimited, + parseRetryAfterHeader, + updateRateLimits, +} from './ratelimit'; +export type { RateLimits } from './ratelimit'; +export { + BAGGAGE_HEADER_NAME, + MAX_BAGGAGE_STRING_LENGTH, + SENTRY_BAGGAGE_KEY_PREFIX, + SENTRY_BAGGAGE_KEY_PREFIX_REGEX, + baggageHeaderToDynamicSamplingContext, + dynamicSamplingContextToSentryBaggageHeader, + parseBaggageHeader, +} from './baggage'; + +export { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment } from './url'; +export { makeFifoCache } from './cache'; +export { eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames } from './eventbuilder'; +export { callFrameToStackFrame, watchdogTimer } from './anr'; +export { LRUMap } from './lru'; +export { generatePropagationContext } from './propagationContext'; +export { vercelWaitUntil } from './vercelWaitUntil'; +export { SDK_VERSION } from './version'; +export { getDebugImagesForResources, getFilenameToDebugIdMap } from './debug-ids'; +export { escapeStringForRegex } from './vendor/escapeStringForRegex'; +export { supportsHistory } from './vendor/supportsHistory'; + +export { _asyncNullishCoalesce } from './buildPolyfills/_asyncNullishCoalesce'; +export { _asyncOptionalChain } from './buildPolyfills/_asyncOptionalChain'; +export { _asyncOptionalChainDelete } from './buildPolyfills/_asyncOptionalChainDelete'; +export { _nullishCoalesce } from './buildPolyfills/_nullishCoalesce'; +export { _optionalChain } from './buildPolyfills/_optionalChain'; +export { _optionalChainDelete } from './buildPolyfills/_optionalChainDelete'; diff --git a/packages/utils/src/instrument/console.ts b/packages/core/src/utils-hoist/instrument/console.ts similarity index 100% rename from packages/utils/src/instrument/console.ts rename to packages/core/src/utils-hoist/instrument/console.ts diff --git a/packages/utils/src/instrument/fetch.ts b/packages/core/src/utils-hoist/instrument/fetch.ts similarity index 100% rename from packages/utils/src/instrument/fetch.ts rename to packages/core/src/utils-hoist/instrument/fetch.ts diff --git a/packages/utils/src/instrument/globalError.ts b/packages/core/src/utils-hoist/instrument/globalError.ts similarity index 100% rename from packages/utils/src/instrument/globalError.ts rename to packages/core/src/utils-hoist/instrument/globalError.ts diff --git a/packages/utils/src/instrument/globalUnhandledRejection.ts b/packages/core/src/utils-hoist/instrument/globalUnhandledRejection.ts similarity index 100% rename from packages/utils/src/instrument/globalUnhandledRejection.ts rename to packages/core/src/utils-hoist/instrument/globalUnhandledRejection.ts diff --git a/packages/utils/src/instrument/handlers.ts b/packages/core/src/utils-hoist/instrument/handlers.ts similarity index 100% rename from packages/utils/src/instrument/handlers.ts rename to packages/core/src/utils-hoist/instrument/handlers.ts diff --git a/packages/utils/src/is.ts b/packages/core/src/utils-hoist/is.ts similarity index 100% rename from packages/utils/src/is.ts rename to packages/core/src/utils-hoist/is.ts diff --git a/packages/utils/src/isBrowser.ts b/packages/core/src/utils-hoist/isBrowser.ts similarity index 100% rename from packages/utils/src/isBrowser.ts rename to packages/core/src/utils-hoist/isBrowser.ts diff --git a/packages/utils/src/logger.ts b/packages/core/src/utils-hoist/logger.ts similarity index 98% rename from packages/utils/src/logger.ts rename to packages/core/src/utils-hoist/logger.ts index 533b59fd5882..c56dc2fff699 100644 --- a/packages/utils/src/logger.ts +++ b/packages/core/src/utils-hoist/logger.ts @@ -26,7 +26,7 @@ export const originalConsoleMethods: { } = {}; /** JSDoc */ -interface Logger extends LoggerConsoleMethods { +export interface Logger extends LoggerConsoleMethods { disable(): void; enable(): void; isEnabled(): boolean; diff --git a/packages/utils/src/lru.ts b/packages/core/src/utils-hoist/lru.ts similarity index 100% rename from packages/utils/src/lru.ts rename to packages/core/src/utils-hoist/lru.ts diff --git a/packages/utils/src/memo.ts b/packages/core/src/utils-hoist/memo.ts similarity index 100% rename from packages/utils/src/memo.ts rename to packages/core/src/utils-hoist/memo.ts diff --git a/packages/utils/src/misc.ts b/packages/core/src/utils-hoist/misc.ts similarity index 100% rename from packages/utils/src/misc.ts rename to packages/core/src/utils-hoist/misc.ts diff --git a/packages/utils/src/node-stack-trace.ts b/packages/core/src/utils-hoist/node-stack-trace.ts similarity index 97% rename from packages/utils/src/node-stack-trace.ts rename to packages/core/src/utils-hoist/node-stack-trace.ts index 7748046528a4..fc96fccc8847 100644 --- a/packages/utils/src/node-stack-trace.ts +++ b/packages/core/src/utils-hoist/node-stack-trace.ts @@ -135,7 +135,7 @@ export function node(getModule?: GetModuleFn): StackLineParserFn { /** * Node.js stack line parser * - * This is in @sentry/utils so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`. + * This is in @sentry/core so it can be used from the Electron SDK in the browser for when `nodeIntegration == true`. * This allows it to be used without referencing or importing any node specific code which causes bundlers to complain */ export function nodeStackLineParser(getModule?: GetModuleFn): StackLineParser { diff --git a/packages/utils/src/node.ts b/packages/core/src/utils-hoist/node.ts similarity index 100% rename from packages/utils/src/node.ts rename to packages/core/src/utils-hoist/node.ts diff --git a/packages/utils/src/normalize.ts b/packages/core/src/utils-hoist/normalize.ts similarity index 100% rename from packages/utils/src/normalize.ts rename to packages/core/src/utils-hoist/normalize.ts diff --git a/packages/utils/src/object.ts b/packages/core/src/utils-hoist/object.ts similarity index 100% rename from packages/utils/src/object.ts rename to packages/core/src/utils-hoist/object.ts diff --git a/packages/utils/src/path.ts b/packages/core/src/utils-hoist/path.ts similarity index 100% rename from packages/utils/src/path.ts rename to packages/core/src/utils-hoist/path.ts diff --git a/packages/utils/src/promisebuffer.ts b/packages/core/src/utils-hoist/promisebuffer.ts similarity index 100% rename from packages/utils/src/promisebuffer.ts rename to packages/core/src/utils-hoist/promisebuffer.ts diff --git a/packages/utils/src/propagationContext.ts b/packages/core/src/utils-hoist/propagationContext.ts similarity index 100% rename from packages/utils/src/propagationContext.ts rename to packages/core/src/utils-hoist/propagationContext.ts diff --git a/packages/utils/src/ratelimit.ts b/packages/core/src/utils-hoist/ratelimit.ts similarity index 100% rename from packages/utils/src/ratelimit.ts rename to packages/core/src/utils-hoist/ratelimit.ts diff --git a/packages/utils/src/requestdata.ts b/packages/core/src/utils-hoist/requestdata.ts similarity index 92% rename from packages/utils/src/requestdata.ts rename to packages/core/src/utils-hoist/requestdata.ts index 13ec367addda..a82fe2ff7fec 100644 --- a/packages/utils/src/requestdata.ts +++ b/packages/core/src/utils-hoist/requestdata.ts @@ -416,18 +416,58 @@ export function winterCGHeadersToDict(winterCGHeaders: WebFetchHeaders): Record< return headers; } +/** + * Convert common request headers to a simple dictionary. + */ +export function headersToDict(reqHeaders: Record): Record { + const headers: Record = Object.create(null); + + try { + Object.entries(reqHeaders).forEach(([key, value]) => { + if (typeof value === 'string') { + headers[key] = value; + } + }); + } catch (e) { + DEBUG_BUILD && + logger.warn('Sentry failed extracting headers from a request object. If you see this, please file an issue.'); + } + + return headers; +} + /** * Converts a `Request` object that implements the `Web Fetch API` (https://developer.mozilla.org/en-US/docs/Web/API/Headers) into the format that the `RequestData` integration understands. */ -export function winterCGRequestToRequestData(req: WebFetchRequest): PolymorphicRequest { +export function winterCGRequestToRequestData(req: WebFetchRequest): RequestEventData { const headers = winterCGHeadersToDict(req.headers); + return { method: req.method, url: req.url, + query_string: extractQueryParamsFromUrl(req.url), headers, + // TODO: Can we extract body data from the request? }; } +/** Extract the query params from an URL. */ +export function extractQueryParamsFromUrl(url: string): string | undefined { + // url is path and query string + if (!url) { + return; + } + + try { + // The `URL` constructor can't handle internal URLs of the form `/some/path/here`, so stick a dummy protocol and + // hostname as the base. Since the point here is just to grab the query string, it doesn't matter what we use. + const queryParams = new URL(url, 'http://dogs.are.great').search.slice(1); + return queryParams.length ? queryParams : undefined; + } catch { + return undefined; + } +} + function extractNormalizedRequestData( normalizedRequest: RequestEventData, { include }: { include: string[] }, diff --git a/packages/utils/src/severity.ts b/packages/core/src/utils-hoist/severity.ts similarity index 91% rename from packages/utils/src/severity.ts rename to packages/core/src/utils-hoist/severity.ts index 983ec1ae08ae..c19c047c90bf 100644 --- a/packages/utils/src/severity.ts +++ b/packages/core/src/utils-hoist/severity.ts @@ -6,8 +6,8 @@ import type { SeverityLevel } from '@sentry/types'; // b) moving the`SeverityLevel` type here, or // c) importing `validSeverityLevels` from here into `@sentry/types`. // -// Option A would make `@sentry/types` a runtime dependency of `@sentry/utils` (not good), and options B and C would -// create a circular dependency between `@sentry/types` and `@sentry/utils` (also not good). So a TODO accompanying the +// Option A would make `@sentry/types` a runtime dependency of `@sentry/core` (not good), and options B and C would +// create a circular dependency between `@sentry/types` and `@sentry/core` (also not good). So a TODO accompanying the // type, reminding anyone who changes it to change this list also, will have to do. export const validSeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug']; diff --git a/packages/utils/src/stacktrace.ts b/packages/core/src/utils-hoist/stacktrace.ts similarity index 100% rename from packages/utils/src/stacktrace.ts rename to packages/core/src/utils-hoist/stacktrace.ts diff --git a/packages/utils/src/string.ts b/packages/core/src/utils-hoist/string.ts similarity index 100% rename from packages/utils/src/string.ts rename to packages/core/src/utils-hoist/string.ts diff --git a/packages/utils/src/supports.ts b/packages/core/src/utils-hoist/supports.ts similarity index 100% rename from packages/utils/src/supports.ts rename to packages/core/src/utils-hoist/supports.ts diff --git a/packages/utils/src/syncpromise.ts b/packages/core/src/utils-hoist/syncpromise.ts similarity index 100% rename from packages/utils/src/syncpromise.ts rename to packages/core/src/utils-hoist/syncpromise.ts diff --git a/packages/utils/src/time.ts b/packages/core/src/utils-hoist/time.ts similarity index 100% rename from packages/utils/src/time.ts rename to packages/core/src/utils-hoist/time.ts diff --git a/packages/utils/src/tracing.ts b/packages/core/src/utils-hoist/tracing.ts similarity index 100% rename from packages/utils/src/tracing.ts rename to packages/core/src/utils-hoist/tracing.ts diff --git a/packages/utils/src/url.ts b/packages/core/src/utils-hoist/url.ts similarity index 100% rename from packages/utils/src/url.ts rename to packages/core/src/utils-hoist/url.ts diff --git a/packages/utils/src/vendor/escapeStringForRegex.ts b/packages/core/src/utils-hoist/vendor/escapeStringForRegex.ts similarity index 100% rename from packages/utils/src/vendor/escapeStringForRegex.ts rename to packages/core/src/utils-hoist/vendor/escapeStringForRegex.ts diff --git a/packages/utils/src/vendor/getIpAddress.ts b/packages/core/src/utils-hoist/vendor/getIpAddress.ts similarity index 100% rename from packages/utils/src/vendor/getIpAddress.ts rename to packages/core/src/utils-hoist/vendor/getIpAddress.ts diff --git a/packages/utils/src/vendor/supportsHistory.ts b/packages/core/src/utils-hoist/vendor/supportsHistory.ts similarity index 100% rename from packages/utils/src/vendor/supportsHistory.ts rename to packages/core/src/utils-hoist/vendor/supportsHistory.ts diff --git a/packages/utils/src/vercelWaitUntil.ts b/packages/core/src/utils-hoist/vercelWaitUntil.ts similarity index 100% rename from packages/utils/src/vercelWaitUntil.ts rename to packages/core/src/utils-hoist/vercelWaitUntil.ts diff --git a/packages/utils/src/version.ts b/packages/core/src/utils-hoist/version.ts similarity index 100% rename from packages/utils/src/version.ts rename to packages/core/src/utils-hoist/version.ts diff --git a/packages/utils/src/worldwide.ts b/packages/core/src/utils-hoist/worldwide.ts similarity index 95% rename from packages/utils/src/worldwide.ts rename to packages/core/src/utils-hoist/worldwide.ts index 2a1ca7b958d8..62b2d3d397b6 100644 --- a/packages/utils/src/worldwide.ts +++ b/packages/core/src/utils-hoist/worldwide.ts @@ -28,9 +28,9 @@ interface SentryCarrier { globalMetricsAggregators?: WeakMap | undefined; logger?: typeof logger; - /** Overwrites TextEncoder used in `@sentry/utils`, need for `react-native@0.73` and older */ + /** Overwrites TextEncoder used in `@sentry/core`, need for `react-native@0.73` and older */ encodePolyfill?: (input: string) => Uint8Array; - /** Overwrites TextDecoder used in `@sentry/utils`, need for `react-native@0.73` and older */ + /** Overwrites TextDecoder used in `@sentry/core`, need for `react-native@0.73` and older */ decodePolyfill?: (input: Uint8Array) => string; } diff --git a/packages/core/src/utils/applyScopeDataToEvent.ts b/packages/core/src/utils/applyScopeDataToEvent.ts index 91d129b52444..ccf3f62ae153 100644 --- a/packages/core/src/utils/applyScopeDataToEvent.ts +++ b/packages/core/src/utils/applyScopeDataToEvent.ts @@ -1,6 +1,6 @@ import type { Breadcrumb, Event, ScopeData, Span } from '@sentry/types'; -import { arrayify, dropUndefinedKeys } from '@sentry/utils'; import { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext'; +import { dropUndefinedKeys } from '../utils-hoist'; import { merge } from './merge'; import { getRootSpan, spanToJSON, spanToTraceContext } from './spanUtils'; @@ -178,7 +178,11 @@ function applySpanToEvent(event: Event, span: Span): void { */ function applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void { // Make sure it's an array first and we actually have something in place - event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : []; + event.fingerprint = event.fingerprint + ? Array.isArray(event.fingerprint) + ? event.fingerprint + : [event.fingerprint] + : []; // If we have something on the scope, then merge it with event if (fingerprint) { diff --git a/packages/core/src/utils/handleCallbackErrors.ts b/packages/core/src/utils/handleCallbackErrors.ts index b3bec065581d..7e281b6b7d1c 100644 --- a/packages/core/src/utils/handleCallbackErrors.ts +++ b/packages/core/src/utils/handleCallbackErrors.ts @@ -1,4 +1,4 @@ -import { isThenable } from '@sentry/utils'; +import { isThenable } from '../utils-hoist/is'; /** * Wrap a callback function with error handling. diff --git a/packages/core/src/utils/parseSampleRate.ts b/packages/core/src/utils/parseSampleRate.ts index fdf12371eff6..3e297025b52e 100644 --- a/packages/core/src/utils/parseSampleRate.ts +++ b/packages/core/src/utils/parseSampleRate.ts @@ -1,5 +1,5 @@ -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; +import { logger } from '../utils-hoist/logger'; /** * Parse a sample rate from a given value. diff --git a/packages/core/src/utils/prepareEvent.ts b/packages/core/src/utils/prepareEvent.ts index 870ac3cb0c62..d4a2cc1f877e 100644 --- a/packages/core/src/utils/prepareEvent.ts +++ b/packages/core/src/utils/prepareEvent.ts @@ -8,19 +8,16 @@ import type { ScopeContext, StackParser, } from '@sentry/types'; -import { - addExceptionMechanism, - dateTimestampInSeconds, - getFilenameToDebugIdMap, - normalize, - truncate, - uuid4, -} from '@sentry/utils'; import { DEFAULT_ENVIRONMENT } from '../constants'; import { getGlobalScope } from '../currentScopes'; import { notifyEventProcessors } from '../eventProcessors'; import { Scope } from '../scope'; +import { getFilenameToDebugIdMap } from '../utils-hoist/debug-ids'; +import { addExceptionMechanism, uuid4 } from '../utils-hoist/misc'; +import { normalize } from '../utils-hoist/normalize'; +import { truncate } from '../utils-hoist/string'; +import { dateTimestampInSeconds } from '../utils-hoist/time'; import { applyScopeDataToEvent, mergeScopeData } from './applyScopeDataToEvent'; /** diff --git a/packages/core/src/utils/sdkMetadata.ts b/packages/core/src/utils/sdkMetadata.ts index 9ad46bc5b375..7d2905abf84f 100644 --- a/packages/core/src/utils/sdkMetadata.ts +++ b/packages/core/src/utils/sdkMetadata.ts @@ -1,5 +1,5 @@ import type { Options } from '@sentry/types'; -import { SDK_VERSION } from '@sentry/utils'; +import { SDK_VERSION } from '../utils-hoist/version'; /** * A builder for the SDK metadata in the options for the SDK initialization. diff --git a/packages/core/src/utils/spanOnScope.ts b/packages/core/src/utils/spanOnScope.ts index f6403b57b1b4..e7607f0fa090 100644 --- a/packages/core/src/utils/spanOnScope.ts +++ b/packages/core/src/utils/spanOnScope.ts @@ -1,5 +1,5 @@ import type { Scope, Span } from '@sentry/types'; -import { addNonEnumerableProperty } from '@sentry/utils'; +import { addNonEnumerableProperty } from '../utils-hoist/object'; const SCOPE_SPAN_FIELD = '_sentrySpan'; diff --git a/packages/core/src/utils/spanUtils.ts b/packages/core/src/utils/spanUtils.ts index 266a0035b382..5f0c443919a3 100644 --- a/packages/core/src/utils/spanUtils.ts +++ b/packages/core/src/utils/spanUtils.ts @@ -9,12 +9,6 @@ import type { SpanTimeInput, TraceContext, } from '@sentry/types'; -import { - addNonEnumerableProperty, - dropUndefinedKeys, - generateSentryTraceHeader, - timestampInSeconds, -} from '@sentry/utils'; import { getAsyncContextStrategy } from '../asyncContext'; import { getMainCarrier } from '../carrier'; import { getCurrentScope } from '../currentScopes'; @@ -23,6 +17,9 @@ import type { MetricType } from '../metrics/types'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes'; import type { SentrySpan } from '../tracing/sentrySpan'; import { SPAN_STATUS_OK, SPAN_STATUS_UNSET } from '../tracing/spanstatus'; +import { addNonEnumerableProperty, dropUndefinedKeys } from '../utils-hoist/object'; +import { timestampInSeconds } from '../utils-hoist/time'; +import { generateSentryTraceHeader } from '../utils-hoist/tracing'; import { _getSpanForScope } from './spanOnScope'; // These are aligned with OpenTelemetry trace flags diff --git a/packages/core/src/utils/traceData.ts b/packages/core/src/utils/traceData.ts index c56c8f71ba1d..04727510e07c 100644 --- a/packages/core/src/utils/traceData.ts +++ b/packages/core/src/utils/traceData.ts @@ -1,15 +1,12 @@ import type { SerializedTraceData } from '@sentry/types'; -import { - TRACEPARENT_REGEXP, - dynamicSamplingContextToSentryBaggageHeader, - generateSentryTraceHeader, - logger, -} from '@sentry/utils'; import { getAsyncContextStrategy } from '../asyncContext'; import { getMainCarrier } from '../carrier'; import { getClient, getCurrentScope } from '../currentScopes'; import { isEnabled } from '../exports'; import { getDynamicSamplingContextFromClient, getDynamicSamplingContextFromSpan } from '../tracing'; +import { dynamicSamplingContextToSentryBaggageHeader } from '../utils-hoist/baggage'; +import { logger } from '../utils-hoist/logger'; +import { TRACEPARENT_REGEXP, generateSentryTraceHeader } from '../utils-hoist/tracing'; import { getActiveSpan, getRootSpan, spanToTraceHeader } from './spanUtils'; /** diff --git a/packages/core/test/lib/api.test.ts b/packages/core/test/lib/api.test.ts index d2e500776228..2c581937cc42 100644 --- a/packages/core/test/lib/api.test.ts +++ b/packages/core/test/lib/api.test.ts @@ -1,7 +1,7 @@ import type { DsnComponents, SdkInfo } from '@sentry/types'; -import { makeDsn } from '@sentry/utils'; import { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint } from '../../src/api'; +import { makeDsn } from '../../src/utils-hoist/dsn'; const ingestDsn = 'https://abc@xxxx.ingest.sentry.io:1234/subpath/123'; const dsnPublic = 'https://abc@sentry.io:1234/subpath/123'; diff --git a/packages/core/test/lib/attachments.test.ts b/packages/core/test/lib/attachments.test.ts index 4f43f86a6451..4ddd0acac6c0 100644 --- a/packages/core/test/lib/attachments.test.ts +++ b/packages/core/test/lib/attachments.test.ts @@ -1,6 +1,5 @@ -import { parseEnvelope } from '@sentry/utils'; - import { createTransport } from '../../src/transports/base'; +import { parseEnvelope } from '../../src/utils-hoist/envelope'; import { TestClient, getDefaultTestClientOptions } from '../mocks/client'; describe('Attachments', () => { diff --git a/packages/core/test/lib/base.test.ts b/packages/core/test/lib/base.test.ts index c89065ed218a..296a496d2d40 100644 --- a/packages/core/test/lib/base.test.ts +++ b/packages/core/test/lib/base.test.ts @@ -1,5 +1,10 @@ +import { SentryError, SyncPromise, dsnToString } from '@sentry/core'; import type { Client, Envelope, ErrorEvent, Event, TransactionEvent } from '@sentry/types'; -import { SentryError, SyncPromise, dsnToString, logger } from '@sentry/utils'; + +import * as loggerModule from '../../src/utils-hoist/logger'; +import * as miscModule from '../../src/utils-hoist/misc'; +import * as stringModule from '../../src/utils-hoist/string'; +import * as timeModule from '../../src/utils-hoist/time'; import { Scope, @@ -24,38 +29,10 @@ declare var global: any; const clientEventFromException = jest.spyOn(TestClient.prototype, 'eventFromException'); const clientProcess = jest.spyOn(TestClient.prototype as any, '_process'); -jest.mock('@sentry/utils', () => { - const original = jest.requireActual('@sentry/utils'); - return { - ...original, - - uuid4(): string { - return '42'; - }, - GLOBAL_OBJ: { - console: { - log(): void { - // no-empty - }, - warn(): void { - // no-empty - }, - error(): void { - // no-empty - }, - }, - }, - consoleSandbox(cb: () => any): any { - return cb(); - }, - truncate(str: string): string { - return str; - }, - dateTimestampInSeconds(): number { - return 2020; - }, - }; -}); +jest.spyOn(miscModule, 'uuid4').mockImplementation(() => '42'); +jest.spyOn(loggerModule, 'consoleSandbox').mockImplementation(cb => cb()); +jest.spyOn(stringModule, 'truncate').mockImplementation(str => str); +jest.spyOn(timeModule, 'dateTimestampInSeconds').mockImplementation(() => 2020); describe('BaseClient', () => { beforeEach(() => { @@ -1113,7 +1090,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({ dsn: PUBLIC_DSN, beforeSend }); const client = new TestClient(options); const captureExceptionSpy = jest.spyOn(client, 'captureException'); - const loggerWarnSpy = jest.spyOn(logger, 'log'); + const loggerWarnSpy = jest.spyOn(loggerModule.logger, 'log'); client.captureEvent({ message: 'hello' }); @@ -1132,7 +1109,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({ dsn: PUBLIC_DSN, beforeSendTransaction }); const client = new TestClient(options); const captureExceptionSpy = jest.spyOn(client, 'captureException'); - const loggerWarnSpy = jest.spyOn(logger, 'log'); + const loggerWarnSpy = jest.spyOn(loggerModule.logger, 'log'); client.captureEvent({ transaction: '/dogs/are/great', type: 'transaction' }); @@ -1184,7 +1161,7 @@ describe('BaseClient', () => { // @ts-expect-error we need to test regular-js behavior const options = getDefaultTestClientOptions({ dsn: PUBLIC_DSN, beforeSend }); const client = new TestClient(options); - const loggerWarnSpy = jest.spyOn(logger, 'warn'); + const loggerWarnSpy = jest.spyOn(loggerModule.logger, 'warn'); client.captureEvent({ message: 'hello' }); @@ -1205,7 +1182,7 @@ describe('BaseClient', () => { // @ts-expect-error we need to test regular-js behavior const options = getDefaultTestClientOptions({ dsn: PUBLIC_DSN, beforeSendTransaction }); const client = new TestClient(options); - const loggerWarnSpy = jest.spyOn(logger, 'warn'); + const loggerWarnSpy = jest.spyOn(loggerModule.logger, 'warn'); client.captureEvent({ transaction: '/dogs/are/great', type: 'transaction' }); @@ -1464,7 +1441,7 @@ describe('BaseClient', () => { const client = new TestClient(getDefaultTestClientOptions({ dsn: PUBLIC_DSN })); const captureExceptionSpy = jest.spyOn(client, 'captureException'); - const loggerLogSpy = jest.spyOn(logger, 'log'); + const loggerLogSpy = jest.spyOn(loggerModule.logger, 'log'); const scope = new Scope(); scope.addEventProcessor(() => null); @@ -1482,7 +1459,7 @@ describe('BaseClient', () => { const client = new TestClient(getDefaultTestClientOptions({ dsn: PUBLIC_DSN })); const captureExceptionSpy = jest.spyOn(client, 'captureException'); - const loggerLogSpy = jest.spyOn(logger, 'log'); + const loggerLogSpy = jest.spyOn(loggerModule.logger, 'log'); const scope = new Scope(); scope.addEventProcessor(() => null); @@ -1586,7 +1563,7 @@ describe('BaseClient', () => { const options = getDefaultTestClientOptions({ dsn: PUBLIC_DSN }); const client = new TestClient(options); const captureExceptionSpy = jest.spyOn(client, 'captureException'); - const loggerWarnSpy = jest.spyOn(logger, 'warn'); + const loggerWarnSpy = jest.spyOn(loggerModule.logger, 'warn'); const scope = new Scope(); const exception = new Error('sorry'); scope.addEventProcessor(() => { diff --git a/packages/core/test/lib/carrier.test.ts b/packages/core/test/lib/carrier.test.ts index 6e846d496ea5..19ebc8117ca4 100644 --- a/packages/core/test/lib/carrier.test.ts +++ b/packages/core/test/lib/carrier.test.ts @@ -1,5 +1,5 @@ -import { SDK_VERSION } from '@sentry/utils'; import { getSentryCarrier } from '../../src/carrier'; +import { SDK_VERSION } from '../../src/utils-hoist/version'; describe('getSentryCarrier', () => { describe('base case (one SDK)', () => { diff --git a/packages/core/test/lib/clear-global-scope.ts b/packages/core/test/lib/clear-global-scope.ts index 0ebe6884429a..8fa0340a22bb 100644 --- a/packages/core/test/lib/clear-global-scope.ts +++ b/packages/core/test/lib/clear-global-scope.ts @@ -1,5 +1,5 @@ -import { GLOBAL_OBJ } from '@sentry/utils'; import { getSentryCarrier } from '../../src/carrier'; +import { GLOBAL_OBJ } from '../../src/utils-hoist/worldwide'; export function clearGlobalScope() { const carrier = getSentryCarrier(GLOBAL_OBJ); diff --git a/packages/core/test/lib/hint.test.ts b/packages/core/test/lib/hint.test.ts index c5a31a944663..d455a5bd5e44 100644 --- a/packages/core/test/lib/hint.test.ts +++ b/packages/core/test/lib/hint.test.ts @@ -1,6 +1,4 @@ -import { GLOBAL_OBJ } from '@sentry/utils'; - -import { captureEvent, getCurrentScope } from '../../src'; +import { GLOBAL_OBJ, captureEvent, getCurrentScope } from '../../src'; import { initAndBind } from '../../src/sdk'; import { TestClient, getDefaultTestClientOptions } from '../mocks/client'; import { AddAttachmentTestIntegration } from '../mocks/integration'; diff --git a/packages/core/test/lib/integration.test.ts b/packages/core/test/lib/integration.test.ts index 3a1a1ae19768..128c46984d90 100644 --- a/packages/core/test/lib/integration.test.ts +++ b/packages/core/test/lib/integration.test.ts @@ -1,9 +1,9 @@ import type { Integration, Options } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { getCurrentScope } from '../../src/currentScopes'; import { addIntegration, getIntegrationsToSetup, installedIntegrations, setupIntegration } from '../../src/integration'; import { setCurrentClient } from '../../src/sdk'; +import { logger } from '../../src/utils-hoist/logger'; import { TestClient, getDefaultTestClientOptions } from '../mocks/client'; function getTestClient(): TestClient { diff --git a/packages/core/test/lib/integrations/captureconsole.test.ts b/packages/core/test/lib/integrations/captureconsole.test.ts index ce913642b123..18fe7e637499 100644 --- a/packages/core/test/lib/integrations/captureconsole.test.ts +++ b/packages/core/test/lib/integrations/captureconsole.test.ts @@ -1,17 +1,14 @@ /* eslint-disable @typescript-eslint/unbound-method */ import type { Client, ConsoleLevel, Event } from '@sentry/types'; -import { - CONSOLE_LEVELS, - GLOBAL_OBJ, - addConsoleInstrumentationHandler, - originalConsoleMethods, - resetInstrumentationHandlers, -} from '@sentry/utils'; import * as CurrentScopes from '../../../src/currentScopes'; import * as SentryCore from '../../../src/exports'; import { captureConsoleIntegration } from '../../../src/integrations/captureconsole'; +import { addConsoleInstrumentationHandler } from '../../../src/utils-hoist/instrument/console'; +import { resetInstrumentationHandlers } from '../../../src/utils-hoist/instrument/handlers'; +import { CONSOLE_LEVELS, originalConsoleMethods } from '../../../src/utils-hoist/logger'; +import { GLOBAL_OBJ } from '../../../src/utils-hoist/worldwide'; const mockConsole: { [key in ConsoleLevel]: jest.Mock } = { debug: jest.fn(), diff --git a/packages/core/test/lib/integrations/functiontostring.test.ts b/packages/core/test/lib/integrations/functiontostring.test.ts index 87a85744c7ce..37c12e2c2b92 100644 --- a/packages/core/test/lib/integrations/functiontostring.test.ts +++ b/packages/core/test/lib/integrations/functiontostring.test.ts @@ -1,5 +1,4 @@ -import { fill } from '@sentry/utils'; -import { getClient, getCurrentScope, setCurrentClient } from '../../../src'; +import { fill, getClient, getCurrentScope, setCurrentClient } from '../../../src'; import { functionToStringIntegration } from '../../../src/integrations/functiontostring'; import { TestClient, getDefaultTestClientOptions } from '../../mocks/client'; diff --git a/packages/core/test/lib/integrations/metadata.test.ts b/packages/core/test/lib/integrations/metadata.test.ts index 2fb06bd6081d..2e4a70bfa848 100644 --- a/packages/core/test/lib/integrations/metadata.test.ts +++ b/packages/core/test/lib/integrations/metadata.test.ts @@ -1,7 +1,15 @@ import type { Event } from '@sentry/types'; -import { GLOBAL_OBJ, createStackParser, nodeStackLineParser, parseEnvelope } from '@sentry/utils'; -import { captureException, createTransport, moduleMetadataIntegration, setCurrentClient } from '../../../src'; +import { + GLOBAL_OBJ, + captureException, + createStackParser, + createTransport, + moduleMetadataIntegration, + nodeStackLineParser, + parseEnvelope, + setCurrentClient, +} from '../../../src'; import { TestClient, getDefaultTestClientOptions } from '../../mocks/client'; const stackParser = createStackParser(nodeStackLineParser()); diff --git a/packages/core/test/lib/integrations/requestdata.test.ts b/packages/core/test/lib/integrations/requestdata.test.ts index 648d47e4faf5..4603d5b290cf 100644 --- a/packages/core/test/lib/integrations/requestdata.test.ts +++ b/packages/core/test/lib/integrations/requestdata.test.ts @@ -1,12 +1,13 @@ import type { IncomingMessage } from 'http'; import type { Event, EventProcessor } from '@sentry/types'; -import * as sentryUtils from '@sentry/utils'; import type { RequestDataIntegrationOptions } from '../../../src'; import { requestDataIntegration, setCurrentClient } from '../../../src'; import { TestClient, getDefaultTestClientOptions } from '../../mocks/client'; -const addRequestDataToEventSpy = jest.spyOn(sentryUtils, 'addRequestDataToEvent'); +import * as requestDataModule from '../../../src/utils-hoist/requestdata'; + +const addRequestDataToEventSpy = jest.spyOn(requestDataModule, 'addRequestDataToEvent'); const headers = { ears: 'furry', nose: 'wet', tongue: 'spotted', cookie: 'favorite=zukes' }; const method = 'wagging'; diff --git a/packages/core/test/lib/integrations/third-party-errors-filter.test.ts b/packages/core/test/lib/integrations/third-party-errors-filter.test.ts index b11b93498b02..91cfe7d4900b 100644 --- a/packages/core/test/lib/integrations/third-party-errors-filter.test.ts +++ b/packages/core/test/lib/integrations/third-party-errors-filter.test.ts @@ -1,7 +1,9 @@ import type { Client, Event } from '@sentry/types'; -import { GLOBAL_OBJ, createStackParser, nodeStackLineParser } from '@sentry/utils'; import { thirdPartyErrorFilterIntegration } from '../../../src/integrations/third-party-errors-filter'; import { addMetadataToStackFrames } from '../../../src/metadata'; +import { nodeStackLineParser } from '../../../src/utils-hoist/node-stack-trace'; +import { createStackParser } from '../../../src/utils-hoist/stacktrace'; +import { GLOBAL_OBJ } from '../../../src/utils-hoist/worldwide'; function clone(data: T): T { return JSON.parse(JSON.stringify(data)); diff --git a/packages/core/test/lib/metadata.test.ts b/packages/core/test/lib/metadata.test.ts index 378bb51e6562..c3b31b68423f 100644 --- a/packages/core/test/lib/metadata.test.ts +++ b/packages/core/test/lib/metadata.test.ts @@ -1,7 +1,9 @@ import type { Event } from '@sentry/types'; -import { GLOBAL_OBJ, createStackParser, nodeStackLineParser } from '@sentry/utils'; import { addMetadataToStackFrames, getMetadataForUrl, stripMetadataFromStackFrames } from '../../src/metadata'; +import { nodeStackLineParser } from '../../src/utils-hoist/node-stack-trace'; +import { createStackParser } from '../../src/utils-hoist/stacktrace'; +import { GLOBAL_OBJ } from '../../src/utils-hoist/worldwide'; const parser = createStackParser(nodeStackLineParser()); diff --git a/packages/core/test/lib/prepareEvent.test.ts b/packages/core/test/lib/prepareEvent.test.ts index 0698aa15e447..a905d948475a 100644 --- a/packages/core/test/lib/prepareEvent.test.ts +++ b/packages/core/test/lib/prepareEvent.test.ts @@ -8,8 +8,7 @@ import type { EventProcessor, ScopeContext, } from '@sentry/types'; -import { GLOBAL_OBJ, createStackParser } from '@sentry/utils'; -import { getGlobalScope, getIsolationScope } from '../../src'; +import { GLOBAL_OBJ, createStackParser, getGlobalScope, getIsolationScope } from '../../src'; import { Scope } from '../../src/scope'; import { diff --git a/packages/core/test/lib/session.test.ts b/packages/core/test/lib/session.test.ts index 41eb0c234d13..55524866dcc2 100644 --- a/packages/core/test/lib/session.test.ts +++ b/packages/core/test/lib/session.test.ts @@ -1,7 +1,7 @@ import type { SessionContext } from '@sentry/types'; -import { timestampInSeconds } from '@sentry/utils'; import { closeSession, makeSession, updateSession } from '../../src/session'; +import { timestampInSeconds } from '../../src/utils-hoist/time'; describe('Session', () => { it('initializes with the proper defaults', () => { diff --git a/packages/core/test/lib/tracing/errors.test.ts b/packages/core/test/lib/tracing/errors.test.ts index 3e3f85ef73b7..68a3463b7878 100644 --- a/packages/core/test/lib/tracing/errors.test.ts +++ b/packages/core/test/lib/tracing/errors.test.ts @@ -2,28 +2,23 @@ import type { HandlerDataError, HandlerDataUnhandledRejection } from '@sentry/ty import { setCurrentClient, spanToJSON, startInactiveSpan, startSpan } from '../../../src'; import { _resetErrorsInstrumented, registerSpanErrorInstrumentation } from '../../../src/tracing/errors'; +import * as globalErrorModule from '../../../src/utils-hoist/instrument/globalError'; +import * as globalUnhandledRejectionModule from '../../../src/utils-hoist/instrument/globalUnhandledRejection'; import { TestClient, getDefaultTestClientOptions } from '../../mocks/client'; -const mockAddGlobalErrorInstrumentationHandler = jest.fn(); -const mockAddGlobalUnhandledRejectionInstrumentationHandler = jest.fn(); let mockErrorCallback: (data: HandlerDataError) => void = () => {}; let mockUnhandledRejectionCallback: (data: HandlerDataUnhandledRejection) => void = () => {}; -jest.mock('@sentry/utils', () => { - const actual = jest.requireActual('@sentry/utils'); - return { - ...actual, - addGlobalErrorInstrumentationHandler: (callback: () => void) => { - mockErrorCallback = callback; - - return mockAddGlobalErrorInstrumentationHandler(callback); - }, - addGlobalUnhandledRejectionInstrumentationHandler: (callback: () => void) => { - mockUnhandledRejectionCallback = callback; - return mockAddGlobalUnhandledRejectionInstrumentationHandler(callback); - }, - }; -}); +const mockAddGlobalErrorInstrumentationHandler = jest + .spyOn(globalErrorModule, 'addGlobalErrorInstrumentationHandler') + .mockImplementation(callback => { + mockErrorCallback = callback; + }); +const mockAddGlobalUnhandledRejectionInstrumentationHandler = jest + .spyOn(globalUnhandledRejectionModule, 'addGlobalUnhandledRejectionInstrumentationHandler') + .mockImplementation(callback => { + mockUnhandledRejectionCallback = callback; + }); describe('registerErrorHandlers()', () => { beforeEach(() => { diff --git a/packages/core/test/lib/tracing/sentrySpan.test.ts b/packages/core/test/lib/tracing/sentrySpan.test.ts index 8e43123e3f3c..447e42328a2e 100644 --- a/packages/core/test/lib/tracing/sentrySpan.test.ts +++ b/packages/core/test/lib/tracing/sentrySpan.test.ts @@ -1,5 +1,4 @@ -import { timestampInSeconds } from '@sentry/utils'; -import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, setCurrentClient } from '../../../src'; +import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, setCurrentClient, timestampInSeconds } from '../../../src'; import { SentrySpan } from '../../../src/tracing/sentrySpan'; import { SPAN_STATUS_ERROR } from '../../../src/tracing/spanstatus'; import { TRACE_FLAG_NONE, TRACE_FLAG_SAMPLED, spanToJSON } from '../../../src/utils/spanUtils'; diff --git a/packages/core/test/lib/transports/base.test.ts b/packages/core/test/lib/transports/base.test.ts index a8198ce38b3d..438dbb93c836 100644 --- a/packages/core/test/lib/transports/base.test.ts +++ b/packages/core/test/lib/transports/base.test.ts @@ -1,8 +1,9 @@ import type { AttachmentItem, EventEnvelope, EventItem, TransportMakeRequestResponse } from '@sentry/types'; -import type { PromiseBuffer } from '@sentry/utils'; -import { createEnvelope, resolvedSyncPromise, serializeEnvelope } from '@sentry/utils'; import { createTransport } from '../../../src/transports/base'; +import { createEnvelope, serializeEnvelope } from '../../../src/utils-hoist/envelope'; +import type { PromiseBuffer } from '../../../src/utils-hoist/promisebuffer'; +import { resolvedSyncPromise } from '../../../src/utils-hoist/syncpromise'; const ERROR_ENVELOPE = createEnvelope({ event_id: 'aa3ff046696b4bc6b609ce6d28fde9e2', sent_at: '123' }, [ [{ type: 'event' }, { event_id: 'aa3ff046696b4bc6b609ce6d28fde9e2' }] as EventItem, diff --git a/packages/core/test/lib/transports/multiplexed.test.ts b/packages/core/test/lib/transports/multiplexed.test.ts index 4ddde08437f2..97d69e5a6113 100644 --- a/packages/core/test/lib/transports/multiplexed.test.ts +++ b/packages/core/test/lib/transports/multiplexed.test.ts @@ -7,9 +7,16 @@ import type { TransactionEvent, Transport, } from '@sentry/types'; -import { createClientReportEnvelope, createEnvelope, dsnFromString, parseEnvelope } from '@sentry/utils'; -import { createTransport, getEnvelopeEndpointWithUrlEncodedAuth, makeMultiplexedTransport } from '../../../src'; +import { + createClientReportEnvelope, + createEnvelope, + createTransport, + dsnFromString, + getEnvelopeEndpointWithUrlEncodedAuth, + makeMultiplexedTransport, + parseEnvelope, +} from '../../../src'; import { eventFromEnvelope } from '../../../src/transports/multiplexed'; const DSN1 = 'https://1234@5678.ingest.sentry.io/4321'; diff --git a/packages/core/test/lib/transports/offline.test.ts b/packages/core/test/lib/transports/offline.test.ts index 738597197178..c266a00d1378 100644 --- a/packages/core/test/lib/transports/offline.test.ts +++ b/packages/core/test/lib/transports/offline.test.ts @@ -8,16 +8,16 @@ import type { ReplayEvent, TransportMakeRequestResponse, } from '@sentry/types'; + import { createClientReportEnvelope, createEnvelope, createEventEnvelopeHeaders, + createTransport, dsnFromString, getSdkMetadataForEnvelopeHeader, parseEnvelope, -} from '@sentry/utils'; - -import { createTransport } from '../../../src'; +} from '../../../src'; import type { CreateOfflineStore, OfflineTransportOptions } from '../../../src/transports/offline'; import { START_DELAY, makeOfflineTransport } from '../../../src/transports/offline'; diff --git a/packages/core/test/lib/utils/spanUtils.test.ts b/packages/core/test/lib/utils/spanUtils.test.ts index 779e75006c86..4f763a5edba6 100644 --- a/packages/core/test/lib/utils/spanUtils.test.ts +++ b/packages/core/test/lib/utils/spanUtils.test.ts @@ -1,5 +1,4 @@ import type { Span, SpanAttributes, SpanStatus, SpanTimeInput } from '@sentry/types'; -import { TRACEPARENT_REGEXP, timestampInSeconds } from '@sentry/utils'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, @@ -7,10 +6,12 @@ import { SPAN_STATUS_OK, SPAN_STATUS_UNSET, SentrySpan, + TRACEPARENT_REGEXP, setCurrentClient, spanToTraceHeader, startInactiveSpan, startSpan, + timestampInSeconds, } from '../../../src'; import type { OpenTelemetrySdkTraceBaseSpan } from '../../../src/utils/spanUtils'; import { getRootSpan, spanIsSampled, spanTimeInputToSeconds, spanToJSON } from '../../../src/utils/spanUtils'; diff --git a/packages/core/test/mocks/client.ts b/packages/core/test/mocks/client.ts index fd12e9ee5223..712134388aef 100644 --- a/packages/core/test/mocks/client.ts +++ b/packages/core/test/mocks/client.ts @@ -8,11 +8,11 @@ import type { Session, SeverityLevel, } from '@sentry/types'; -import { resolvedSyncPromise } from '@sentry/utils'; import { BaseClient } from '../../src/baseclient'; import { initAndBind } from '../../src/sdk'; import { createTransport } from '../../src/transports/base'; +import { resolvedSyncPromise } from '../../src/utils-hoist/syncpromise'; export function getDefaultTestClientOptions(options: Partial = {}): TestClientOptions { return { diff --git a/packages/core/test/mocks/transport.ts b/packages/core/test/mocks/transport.ts index cfb15f0abb7a..af6863237562 100644 --- a/packages/core/test/mocks/transport.ts +++ b/packages/core/test/mocks/transport.ts @@ -1,7 +1,7 @@ import type { Transport } from '@sentry/types'; -import { SyncPromise } from '@sentry/utils'; import { createTransport } from '../../src/transports/base'; +import { SyncPromise } from '../../src/utils-hoist/syncpromise'; async function sleep(delay: number): Promise { return new SyncPromise(resolve => setTimeout(resolve, delay)); diff --git a/packages/utils/test/aggregate-errors.test.ts b/packages/core/test/utils-hoist/aggregate-errors.test.ts similarity index 98% rename from packages/utils/test/aggregate-errors.test.ts rename to packages/core/test/utils-hoist/aggregate-errors.test.ts index 7cfd8e0b82da..3d13a4d29b21 100644 --- a/packages/utils/test/aggregate-errors.test.ts +++ b/packages/core/test/utils-hoist/aggregate-errors.test.ts @@ -1,6 +1,6 @@ import type { Event, EventHint, Exception, ExtendedError, StackParser } from '@sentry/types'; - -import { applyAggregateErrorsToEvent, createStackParser } from '../src/index'; +import { applyAggregateErrorsToEvent } from '../../src/utils-hoist/aggregate-errors'; +import { createStackParser } from '../../src/utils-hoist/stacktrace'; const stackParser = createStackParser([0, line => ({ filename: line })]); const exceptionFromError = (_stackParser: StackParser, ex: Error): Exception => { diff --git a/packages/utils/test/array.test.ts b/packages/core/test/utils-hoist/array.test.ts similarity index 93% rename from packages/utils/test/array.test.ts rename to packages/core/test/utils-hoist/array.test.ts index ebf702508585..fb788d48cea9 100644 --- a/packages/utils/test/array.test.ts +++ b/packages/core/test/utils-hoist/array.test.ts @@ -1,5 +1,5 @@ -import type { NestedArray } from '../src/array'; -import { flatten } from '../src/array'; +import type { NestedArray } from '../../src/utils-hoist/array'; +import { flatten } from '../../src/utils-hoist/array'; describe('flatten', () => { it('should return the same array when input is a flat array', () => { diff --git a/packages/utils/test/baggage.test.ts b/packages/core/test/utils-hoist/baggage.test.ts similarity index 92% rename from packages/utils/test/baggage.test.ts rename to packages/core/test/utils-hoist/baggage.test.ts index 539a34e44d9c..9268e178b3a6 100644 --- a/packages/utils/test/baggage.test.ts +++ b/packages/core/test/utils-hoist/baggage.test.ts @@ -1,4 +1,7 @@ -import { baggageHeaderToDynamicSamplingContext, dynamicSamplingContextToSentryBaggageHeader } from '../src/baggage'; +import { + baggageHeaderToDynamicSamplingContext, + dynamicSamplingContextToSentryBaggageHeader, +} from '../../src/utils-hoist/baggage'; test.each([ ['', undefined], diff --git a/packages/utils/test/breadcrumb-log-level.test.ts b/packages/core/test/utils-hoist/breadcrumb-log-level.test.ts similarity index 81% rename from packages/utils/test/breadcrumb-log-level.test.ts rename to packages/core/test/utils-hoist/breadcrumb-log-level.test.ts index 49792d2726bb..6be625bb0a63 100644 --- a/packages/utils/test/breadcrumb-log-level.test.ts +++ b/packages/core/test/utils-hoist/breadcrumb-log-level.test.ts @@ -1,4 +1,4 @@ -import { getBreadcrumbLogLevelFromHttpStatusCode } from '../src/breadcrumb-log-level'; +import { getBreadcrumbLogLevelFromHttpStatusCode } from '../../src/utils-hoist/breadcrumb-log-level'; describe('getBreadcrumbLogLevelFromHttpStatusCode()', () => { it.each([ diff --git a/packages/utils/test/browser.test.ts b/packages/core/test/utils-hoist/browser.test.ts similarity index 97% rename from packages/utils/test/browser.test.ts rename to packages/core/test/utils-hoist/browser.test.ts index 8b92f28a8536..c86570ee7fb0 100644 --- a/packages/utils/test/browser.test.ts +++ b/packages/core/test/utils-hoist/browser.test.ts @@ -1,6 +1,6 @@ import { JSDOM } from 'jsdom'; -import { getDomElement, htmlTreeAsString } from '../src/browser'; +import { getDomElement, htmlTreeAsString } from '../../src/utils-hoist/browser'; beforeAll(() => { const dom = new JSDOM(); diff --git a/packages/utils/test/buildPolyfills/nullishCoalesce.test.ts b/packages/core/test/utils-hoist/buildPolyfills/nullishCoalesce.test.ts similarity index 85% rename from packages/utils/test/buildPolyfills/nullishCoalesce.test.ts rename to packages/core/test/utils-hoist/buildPolyfills/nullishCoalesce.test.ts index d2a1d98d8a05..11c83b0711d9 100644 --- a/packages/utils/test/buildPolyfills/nullishCoalesce.test.ts +++ b/packages/core/test/utils-hoist/buildPolyfills/nullishCoalesce.test.ts @@ -1,5 +1,7 @@ -import { _nullishCoalesce } from '../../src/buildPolyfills'; -import type { Value } from '../../src/buildPolyfills/types'; +// TODO(v9): Remove this test + +import { _nullishCoalesce } from '../../../src/utils-hoist/buildPolyfills'; +import type { Value } from '../../../src/utils-hoist/buildPolyfills/types'; import { _nullishCoalesce as _nullishCoalesceOrig } from './originals'; const dogStr = 'dogs are great!'; diff --git a/packages/utils/test/buildPolyfills/optionalChain.test.ts b/packages/core/test/utils-hoist/buildPolyfills/optionalChain.test.ts similarity index 90% rename from packages/utils/test/buildPolyfills/optionalChain.test.ts rename to packages/core/test/utils-hoist/buildPolyfills/optionalChain.test.ts index 4ad6f14befde..bd7a7bb052fb 100644 --- a/packages/utils/test/buildPolyfills/optionalChain.test.ts +++ b/packages/core/test/utils-hoist/buildPolyfills/optionalChain.test.ts @@ -1,12 +1,14 @@ -import { default as arrayFlat } from 'array.prototype.flat'; +// TODO(v9): Remove this test -import { _optionalChain } from '../../src/buildPolyfills'; -import type { GenericFunction, GenericObject, Value } from '../../src/buildPolyfills/types'; +import { shim as arrayFlatShim } from 'array.prototype.flat'; + +import { _optionalChain } from '../../../src/utils-hoist/buildPolyfills'; +import type { GenericFunction, GenericObject, Value } from '../../../src/utils-hoist/buildPolyfills/types'; import { _optionalChain as _optionalChainOrig } from './originals'; // Older versions of Node don't have `Array.prototype.flat`, which crashes these tests. On newer versions that do have // it, this is a no-op. -arrayFlat.shim(); +arrayFlatShim(); type OperationType = 'access' | 'call' | 'optionalAccess' | 'optionalCall'; type OperationExecutor = @@ -78,9 +80,12 @@ describe('_optionalChain', () => { it.each(testCases)('%s', (_, initialChainComponent, operations, expectedValue) => { // `operations` is flattened and spread in order to undo the wrapping done in the test cases for TS purposes. + // @ts-expect-error this is what we're testing expect(_optionalChain([initialChainComponent, ...operations.flat()])).toEqual( + // @ts-expect-error this is what we're testing _optionalChainOrig([initialChainComponent, ...operations.flat()]), ); + // @ts-expect-error this is what we're testing expect(_optionalChain([initialChainComponent, ...operations.flat()])).toEqual(expectedValue); }); }); diff --git a/packages/utils/test/buildPolyfills/originals.js b/packages/core/test/utils-hoist/buildPolyfills/originals.ts similarity index 94% rename from packages/utils/test/buildPolyfills/originals.js rename to packages/core/test/utils-hoist/buildPolyfills/originals.ts index 5ec688de93ac..a504d5f0d871 100644 --- a/packages/utils/test/buildPolyfills/originals.js +++ b/packages/core/test/utils-hoist/buildPolyfills/originals.ts @@ -1,3 +1,8 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck this is just used for tests + +// TODO(v9): Remove this file + // Originals of the buildPolyfills from Sucrase and Rollup we use (which we have adapted in various ways), preserved here for testing, to prove that // the modified versions do the same thing the originals do. diff --git a/packages/utils/test/clientreport.test.ts b/packages/core/test/utils-hoist/clientreport.test.ts similarity index 91% rename from packages/utils/test/clientreport.test.ts rename to packages/core/test/utils-hoist/clientreport.test.ts index 04a2a4fe7334..698ad195d7fa 100644 --- a/packages/utils/test/clientreport.test.ts +++ b/packages/core/test/utils-hoist/clientreport.test.ts @@ -1,7 +1,7 @@ import type { ClientReport } from '@sentry/types'; -import { createClientReportEnvelope } from '../src/clientreport'; -import { parseEnvelope, serializeEnvelope } from '../src/envelope'; +import { createClientReportEnvelope } from '../../src/utils-hoist/clientreport'; +import { parseEnvelope, serializeEnvelope } from '../../src/utils-hoist/envelope'; const DEFAULT_DISCARDED_EVENTS: ClientReport['discarded_events'] = [ { diff --git a/packages/utils/test/cookie.test.ts b/packages/core/test/utils-hoist/cookie.test.ts similarity index 97% rename from packages/utils/test/cookie.test.ts rename to packages/core/test/utils-hoist/cookie.test.ts index 2110f384c9b6..eca98a592f00 100644 --- a/packages/utils/test/cookie.test.ts +++ b/packages/core/test/utils-hoist/cookie.test.ts @@ -28,7 +28,7 @@ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -import { parseCookie } from '../src/cookie'; +import { parseCookie } from '../../src/utils-hoist/cookie'; describe('parseCookie(str)', function () { it('should parse cookie string to object', function () { diff --git a/packages/utils/test/dsn.test.ts b/packages/core/test/utils-hoist/dsn.test.ts similarity index 97% rename from packages/utils/test/dsn.test.ts rename to packages/core/test/utils-hoist/dsn.test.ts index e1aadb893e8e..6f70c83d0c60 100644 --- a/packages/utils/test/dsn.test.ts +++ b/packages/core/test/utils-hoist/dsn.test.ts @@ -1,6 +1,6 @@ -import { DEBUG_BUILD } from '../src/debug-build'; -import { dsnToString, makeDsn } from '../src/dsn'; -import { logger } from '../src/logger'; +import { DEBUG_BUILD } from '../../src/utils-hoist/debug-build'; +import { dsnToString, makeDsn } from '../../src/utils-hoist/dsn'; +import { logger } from '../../src/utils-hoist/logger'; function testIf(condition: boolean): jest.It { return condition ? test : test.skip; diff --git a/packages/utils/test/envelope.test.ts b/packages/core/test/utils-hoist/envelope.test.ts similarity index 97% rename from packages/utils/test/envelope.test.ts rename to packages/core/test/utils-hoist/envelope.test.ts index fa2df9cc159a..9ebfd447fb14 100644 --- a/packages/utils/test/envelope.test.ts +++ b/packages/core/test/utils-hoist/envelope.test.ts @@ -14,9 +14,9 @@ import { forEachEnvelopeItem, parseEnvelope, serializeEnvelope, -} from '../src/envelope'; -import type { InternalGlobal } from '../src/worldwide'; -import { GLOBAL_OBJ } from '../src/worldwide'; +} from '../../src/utils-hoist/envelope'; +import type { InternalGlobal } from '../../src/utils-hoist/worldwide'; +import { GLOBAL_OBJ } from '../../src/utils-hoist/worldwide'; describe('envelope', () => { describe('createSpanEnvelope()', () => { diff --git a/packages/utils/test/eventbuilder.test.ts b/packages/core/test/utils-hoist/eventbuilder.test.ts similarity index 95% rename from packages/utils/test/eventbuilder.test.ts rename to packages/core/test/utils-hoist/eventbuilder.test.ts index 7c67571e753e..e12726746e04 100644 --- a/packages/utils/test/eventbuilder.test.ts +++ b/packages/core/test/utils-hoist/eventbuilder.test.ts @@ -1,6 +1,7 @@ import type { Client } from '@sentry/types'; - -import { createStackParser, eventFromUnknownInput, nodeStackLineParser } from '../src'; +import { eventFromUnknownInput } from '../../src/utils-hoist/eventbuilder'; +import { nodeStackLineParser } from '../../src/utils-hoist/node-stack-trace'; +import { createStackParser } from '../../src/utils-hoist/stacktrace'; const stackParser = createStackParser(nodeStackLineParser()); diff --git a/packages/utils/test/instrument.test.ts b/packages/core/test/utils-hoist/instrument.test.ts similarity index 79% rename from packages/utils/test/instrument.test.ts rename to packages/core/test/utils-hoist/instrument.test.ts index 440a19121a1a..938ba8f17e3e 100644 --- a/packages/utils/test/instrument.test.ts +++ b/packages/core/test/utils-hoist/instrument.test.ts @@ -1,4 +1,4 @@ -import { maybeInstrument } from '../src'; +import { maybeInstrument } from '../../src/utils-hoist/instrument/handlers'; describe('maybeInstrument', () => { test('does not throw when instrumenting fails', () => { diff --git a/packages/utils/test/instrument/fetch.test.ts b/packages/core/test/utils-hoist/instrument/fetch.test.ts similarity index 93% rename from packages/utils/test/instrument/fetch.test.ts rename to packages/core/test/utils-hoist/instrument/fetch.test.ts index ea29e0c16c3e..fc6102d6b617 100644 --- a/packages/utils/test/instrument/fetch.test.ts +++ b/packages/core/test/utils-hoist/instrument/fetch.test.ts @@ -1,4 +1,4 @@ -import { parseFetchArgs } from '../../src/instrument/fetch'; +import { parseFetchArgs } from '../../../src/utils-hoist/instrument/fetch'; describe('instrument > parseFetchArgs', () => { it.each([ diff --git a/packages/utils/test/is.test.ts b/packages/core/test/utils-hoist/is.test.ts similarity index 97% rename from packages/utils/test/is.test.ts rename to packages/core/test/utils-hoist/is.test.ts index 853fae168681..44feba601d04 100644 --- a/packages/utils/test/is.test.ts +++ b/packages/core/test/utils-hoist/is.test.ts @@ -8,9 +8,9 @@ import { isPrimitive, isThenable, isVueViewModel, -} from '../src/is'; -import { supportsDOMError, supportsDOMException, supportsErrorEvent } from '../src/supports'; -import { resolvedSyncPromise } from '../src/syncpromise'; +} from '../../src/utils-hoist/is'; +import { supportsDOMError, supportsDOMException, supportsErrorEvent } from '../../src/utils-hoist/supports'; +import { resolvedSyncPromise } from '../../src/utils-hoist/syncpromise'; import { testOnlyIfNodeVersionAtLeast } from './testutils'; class SentryError extends Error { diff --git a/packages/utils/test/lru.test.ts b/packages/core/test/utils-hoist/lru.test.ts similarity index 94% rename from packages/utils/test/lru.test.ts rename to packages/core/test/utils-hoist/lru.test.ts index 15f638e9cfa1..39c83a1fbf8f 100644 --- a/packages/utils/test/lru.test.ts +++ b/packages/core/test/utils-hoist/lru.test.ts @@ -1,4 +1,4 @@ -import { LRUMap } from '../src/lru'; +import { LRUMap } from '../../src/utils-hoist/lru'; describe('LRUMap', () => { test('evicts older entries when reaching max size', () => { diff --git a/packages/utils/test/misc.test.ts b/packages/core/test/utils-hoist/misc.test.ts similarity index 99% rename from packages/utils/test/misc.test.ts rename to packages/core/test/utils-hoist/misc.test.ts index 14f3e88c0f0b..b2c37758e79c 100644 --- a/packages/utils/test/misc.test.ts +++ b/packages/core/test/utils-hoist/misc.test.ts @@ -7,7 +7,7 @@ import { checkOrSetAlreadyCaught, getEventDescription, uuid4, -} from '../src/misc'; +} from '../../src/utils-hoist/misc'; describe('getEventDescription()', () => { test('message event', () => { diff --git a/packages/utils/test/normalize-url.test.ts b/packages/core/test/utils-hoist/normalize-url.test.ts similarity index 97% rename from packages/utils/test/normalize-url.test.ts rename to packages/core/test/utils-hoist/normalize-url.test.ts index 5df2bb5d6e35..080905058e1d 100644 --- a/packages/utils/test/normalize-url.test.ts +++ b/packages/core/test/utils-hoist/normalize-url.test.ts @@ -1,4 +1,4 @@ -import { normalizeUrlToBase } from '../src/normalize'; +import { normalizeUrlToBase } from '../../src/utils-hoist/normalize'; describe('normalizeUrlToBase()', () => { it('Example app on Windows', () => { diff --git a/packages/utils/test/normalize.test.ts b/packages/core/test/utils-hoist/normalize.test.ts similarity index 99% rename from packages/utils/test/normalize.test.ts rename to packages/core/test/utils-hoist/normalize.test.ts index d8a8a1329352..985c0dbf8963 100644 --- a/packages/utils/test/normalize.test.ts +++ b/packages/core/test/utils-hoist/normalize.test.ts @@ -2,10 +2,9 @@ * @jest-environment jsdom */ -import * as isModule from '../src/is'; -import { normalize } from '../src/normalize'; -import { addNonEnumerableProperty } from '../src/object'; -import * as stacktraceModule from '../src/stacktrace'; +import { addNonEnumerableProperty, normalize } from '../../src'; +import * as isModule from '../../src/utils-hoist/is'; +import * as stacktraceModule from '../../src/utils-hoist/stacktrace'; describe('normalize()', () => { describe('acts as a pass-through for simple-cases', () => { diff --git a/packages/utils/test/object.test.ts b/packages/core/test/utils-hoist/object.test.ts similarity index 99% rename from packages/utils/test/object.test.ts rename to packages/core/test/utils-hoist/object.test.ts index 2ba5a6c58fa3..de9a44b8f74c 100644 --- a/packages/utils/test/object.test.ts +++ b/packages/core/test/utils-hoist/object.test.ts @@ -12,7 +12,7 @@ import { markFunctionWrapped, objectify, urlEncode, -} from '../src/object'; +} from '../../src/utils-hoist/object'; import { testOnlyIfNodeVersionAtLeast } from './testutils'; describe('fill()', () => { diff --git a/packages/utils/test/path.test.ts b/packages/core/test/utils-hoist/path.test.ts similarity index 95% rename from packages/utils/test/path.test.ts rename to packages/core/test/utils-hoist/path.test.ts index 3ba750830f1b..64dd5caf20ca 100644 --- a/packages/utils/test/path.test.ts +++ b/packages/core/test/utils-hoist/path.test.ts @@ -1,4 +1,4 @@ -import { basename, dirname } from '../src/path'; +import { basename, dirname } from '../../src/utils-hoist/path'; describe('path', () => { describe('basename', () => { diff --git a/packages/utils/test/proagationContext.test.ts b/packages/core/test/utils-hoist/proagationContext.test.ts similarity index 76% rename from packages/utils/test/proagationContext.test.ts rename to packages/core/test/utils-hoist/proagationContext.test.ts index 01c8569bde9b..5e895af0ba58 100644 --- a/packages/utils/test/proagationContext.test.ts +++ b/packages/core/test/utils-hoist/proagationContext.test.ts @@ -1,4 +1,4 @@ -import { generatePropagationContext } from '../src/propagationContext'; +import { generatePropagationContext } from '../../src/utils-hoist/propagationContext'; describe('generatePropagationContext', () => { it('generates a new minimal propagation context', () => { diff --git a/packages/utils/test/promisebuffer.test.ts b/packages/core/test/utils-hoist/promisebuffer.test.ts similarity index 96% rename from packages/utils/test/promisebuffer.test.ts rename to packages/core/test/utils-hoist/promisebuffer.test.ts index 1dc2e1f993e8..3357a06e820c 100644 --- a/packages/utils/test/promisebuffer.test.ts +++ b/packages/core/test/utils-hoist/promisebuffer.test.ts @@ -1,5 +1,5 @@ -import { makePromiseBuffer } from '../src/promisebuffer'; -import { SyncPromise } from '../src/syncpromise'; +import { makePromiseBuffer } from '../../src/utils-hoist/promisebuffer'; +import { SyncPromise } from '../../src/utils-hoist/syncpromise'; describe('PromiseBuffer', () => { describe('add()', () => { diff --git a/packages/utils/test/ratelimit.test.ts b/packages/core/test/utils-hoist/ratelimit.test.ts similarity index 98% rename from packages/utils/test/ratelimit.test.ts rename to packages/core/test/utils-hoist/ratelimit.test.ts index 5833548727f7..9a3f37bcf845 100644 --- a/packages/utils/test/ratelimit.test.ts +++ b/packages/core/test/utils-hoist/ratelimit.test.ts @@ -1,11 +1,11 @@ -import type { RateLimits } from '../src/ratelimit'; +import type { RateLimits } from '../../src/utils-hoist/ratelimit'; import { DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits, -} from '../src/ratelimit'; +} from '../../src/utils-hoist/ratelimit'; describe('parseRetryAfterHeader()', () => { test('should fallback to 60s when incorrect header provided', () => { diff --git a/packages/utils/test/requestdata.test.ts b/packages/core/test/utils-hoist/requestdata.test.ts similarity index 99% rename from packages/utils/test/requestdata.test.ts rename to packages/core/test/utils-hoist/requestdata.test.ts index 90c734f23f2c..0b1f198ebddc 100644 --- a/packages/utils/test/requestdata.test.ts +++ b/packages/core/test/utils-hoist/requestdata.test.ts @@ -1,7 +1,7 @@ import type * as net from 'net'; +import { addRequestDataToEvent, extractPathForTransaction, extractRequestData } from '@sentry/core'; import type { Event, PolymorphicRequest, TransactionSource, User } from '@sentry/types'; -import { addRequestDataToEvent, extractPathForTransaction, extractRequestData } from '@sentry/utils'; -import { getClientIPAddress } from '../src/vendor/getIpAddress'; +import { getClientIPAddress } from '../../src/utils-hoist/vendor/getIpAddress'; describe('addRequestDataToEvent', () => { let mockEvent: Event; diff --git a/packages/utils/test/severity.test.ts b/packages/core/test/utils-hoist/severity.test.ts similarity index 94% rename from packages/utils/test/severity.test.ts rename to packages/core/test/utils-hoist/severity.test.ts index 51f66e815288..30e3dbb90e97 100644 --- a/packages/utils/test/severity.test.ts +++ b/packages/core/test/utils-hoist/severity.test.ts @@ -1,4 +1,4 @@ -import { severityLevelFromString, validSeverityLevels } from '../src/severity'; +import { severityLevelFromString, validSeverityLevels } from '../../src/utils-hoist/severity'; describe('severityLevelFromString()', () => { test("converts 'warn' to 'warning'", () => { diff --git a/packages/utils/test/stacktrace.test.ts b/packages/core/test/utils-hoist/stacktrace.test.ts similarity index 98% rename from packages/utils/test/stacktrace.test.ts rename to packages/core/test/utils-hoist/stacktrace.test.ts index f1ef0454a71a..22a50f3f71de 100644 --- a/packages/utils/test/stacktrace.test.ts +++ b/packages/core/test/utils-hoist/stacktrace.test.ts @@ -1,4 +1,5 @@ -import { nodeStackLineParser, stripSentryFramesAndReverse } from '../src'; +import { nodeStackLineParser } from '../../src/utils-hoist/node-stack-trace'; +import { stripSentryFramesAndReverse } from '../../src/utils-hoist/stacktrace'; describe('Stacktrace', () => { describe('stripSentryFramesAndReverse()', () => { diff --git a/packages/utils/test/string.test.ts b/packages/core/test/utils-hoist/string.test.ts similarity index 99% rename from packages/utils/test/string.test.ts rename to packages/core/test/utils-hoist/string.test.ts index 64870c07fcba..bf959965cb45 100644 --- a/packages/utils/test/string.test.ts +++ b/packages/core/test/utils-hoist/string.test.ts @@ -1,4 +1,4 @@ -import { isMatchingPattern, stringMatchesSomePattern, truncate } from '../src/string'; +import { isMatchingPattern, stringMatchesSomePattern, truncate } from '../../src/utils-hoist/string'; describe('truncate()', () => { test('it works as expected', () => { diff --git a/packages/utils/test/syncpromise.test.ts b/packages/core/test/utils-hoist/syncpromise.test.ts similarity index 99% rename from packages/utils/test/syncpromise.test.ts rename to packages/core/test/utils-hoist/syncpromise.test.ts index b3074b3c1b32..9dce11645b25 100644 --- a/packages/utils/test/syncpromise.test.ts +++ b/packages/core/test/utils-hoist/syncpromise.test.ts @@ -1,4 +1,4 @@ -import { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from '../src/syncpromise'; +import { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from '../../src/utils-hoist/syncpromise'; describe('SyncPromise', () => { test('simple', async () => { diff --git a/packages/utils/test/testutils.ts b/packages/core/test/utils-hoist/testutils.ts similarity index 100% rename from packages/utils/test/testutils.ts rename to packages/core/test/utils-hoist/testutils.ts diff --git a/packages/utils/test/tracing.test.ts b/packages/core/test/utils-hoist/tracing.test.ts similarity index 99% rename from packages/utils/test/tracing.test.ts rename to packages/core/test/utils-hoist/tracing.test.ts index 399c37104445..95e95c5075f9 100644 --- a/packages/utils/test/tracing.test.ts +++ b/packages/core/test/utils-hoist/tracing.test.ts @@ -1,4 +1,4 @@ -import { extractTraceparentData, propagationContextFromHeaders } from '../src/tracing'; +import { extractTraceparentData, propagationContextFromHeaders } from '../../src/utils-hoist/tracing'; const EXAMPLE_SENTRY_TRACE = '12312012123120121231201212312012-1121201211212012-1'; const EXAMPLE_BAGGAGE = 'sentry-release=1.2.3,sentry-foo=bar,other=baz'; diff --git a/packages/utils/test/types/typedef.test.ts b/packages/core/test/utils-hoist/types/typedef.test.ts similarity index 100% rename from packages/utils/test/types/typedef.test.ts rename to packages/core/test/utils-hoist/types/typedef.test.ts diff --git a/packages/utils/test/url.test.ts b/packages/core/test/utils-hoist/url.test.ts similarity index 96% rename from packages/utils/test/url.test.ts rename to packages/core/test/utils-hoist/url.test.ts index c6926fb74968..fd8b861516ab 100644 --- a/packages/utils/test/url.test.ts +++ b/packages/core/test/utils-hoist/url.test.ts @@ -1,4 +1,9 @@ -import { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment } from '../src/url'; +import { + getNumberOfUrlSegments, + getSanitizedUrlString, + parseUrl, + stripUrlQueryAndFragment, +} from '../../src/utils-hoist/url'; describe('stripQueryStringAndFragment', () => { const urlString = 'http://dogs.are.great:1231/yay/'; diff --git a/packages/utils/test/vercelWaitUntil.test.ts b/packages/core/test/utils-hoist/vercelWaitUntil.test.ts similarity index 90% rename from packages/utils/test/vercelWaitUntil.test.ts rename to packages/core/test/utils-hoist/vercelWaitUntil.test.ts index 881bf265607b..b8b6452cbac2 100644 --- a/packages/utils/test/vercelWaitUntil.test.ts +++ b/packages/core/test/utils-hoist/vercelWaitUntil.test.ts @@ -1,5 +1,5 @@ -import { vercelWaitUntil } from '../src/vercelWaitUntil'; -import { GLOBAL_OBJ } from '../src/worldwide'; +import { vercelWaitUntil } from '../../src/utils-hoist/vercelWaitUntil'; +import { GLOBAL_OBJ } from '../../src/utils-hoist/worldwide'; describe('vercelWaitUntil', () => { it('should do nothing if GLOBAL_OBJ does not have the @vercel/request-context symbol', () => { diff --git a/packages/utils/test/worldwide.test.ts b/packages/core/test/utils-hoist/worldwide.test.ts similarity index 83% rename from packages/utils/test/worldwide.test.ts rename to packages/core/test/utils-hoist/worldwide.test.ts index 3b85eb06fdd1..a3106e953861 100644 --- a/packages/utils/test/worldwide.test.ts +++ b/packages/core/test/utils-hoist/worldwide.test.ts @@ -1,4 +1,4 @@ -import { GLOBAL_OBJ } from '../src/worldwide'; +import { GLOBAL_OBJ } from '../../src/utils-hoist/worldwide'; describe('GLOBAL_OBJ', () => { test('should return the same object', () => { diff --git a/packages/deno/package.json b/packages/deno/package.json index a15117f0b57e..3e3b0ca81226 100644 --- a/packages/deno/package.json +++ b/packages/deno/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/deno", - "version": "8.38.0", + "version": "8.39.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", @@ -24,9 +24,8 @@ "/build" ], "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "devDependencies": { "@rollup/plugin-typescript": "^11.1.5", diff --git a/packages/deno/src/index.ts b/packages/deno/src/index.ts index 7d13ad9e833c..5538f92519a9 100644 --- a/packages/deno/src/index.ts +++ b/packages/deno/src/index.ts @@ -18,7 +18,7 @@ export type { Thread, User, } from '@sentry/types'; -export type { AddRequestDataToEventOptions } from '@sentry/utils'; +export type { AddRequestDataToEventOptions } from '@sentry/core'; export type { DenoOptions } from './types'; diff --git a/packages/deno/src/integrations/breadcrumbs.ts b/packages/deno/src/integrations/breadcrumbs.ts index 6b945ebc37f5..77c471793ed3 100644 --- a/packages/deno/src/integrations/breadcrumbs.ts +++ b/packages/deno/src/integrations/breadcrumbs.ts @@ -1,4 +1,12 @@ import { addBreadcrumb, defineIntegration, getClient } from '@sentry/core'; +import { + addConsoleInstrumentationHandler, + addFetchInstrumentationHandler, + getBreadcrumbLogLevelFromHttpStatusCode, + getEventDescription, + safeJoin, + severityLevelFromString, +} from '@sentry/core'; import type { Client, Event as SentryEvent, @@ -8,14 +16,6 @@ import type { HandlerDataFetch, IntegrationFn, } from '@sentry/types'; -import { - addConsoleInstrumentationHandler, - addFetchInstrumentationHandler, - getBreadcrumbLogLevelFromHttpStatusCode, - getEventDescription, - safeJoin, - severityLevelFromString, -} from '@sentry/utils'; interface BreadcrumbsOptions { console: boolean; diff --git a/packages/deno/src/integrations/contextlines.ts b/packages/deno/src/integrations/contextlines.ts index 3f3db47fb70a..44dc400c9aa0 100644 --- a/packages/deno/src/integrations/contextlines.ts +++ b/packages/deno/src/integrations/contextlines.ts @@ -1,6 +1,6 @@ import { defineIntegration } from '@sentry/core'; +import { LRUMap, addContextToFrame } from '@sentry/core'; import type { Event, IntegrationFn, StackFrame } from '@sentry/types'; -import { LRUMap, addContextToFrame } from '@sentry/utils'; const INTEGRATION_NAME = 'ContextLines'; const FILE_CONTENT_CACHE = new LRUMap(100); diff --git a/packages/deno/src/integrations/globalhandlers.ts b/packages/deno/src/integrations/globalhandlers.ts index 8d9a2c1ac051..bf985f1096c8 100644 --- a/packages/deno/src/integrations/globalhandlers.ts +++ b/packages/deno/src/integrations/globalhandlers.ts @@ -3,8 +3,8 @@ import { defineIntegration } from '@sentry/core'; import { captureEvent } from '@sentry/core'; import { getClient } from '@sentry/core'; import { flush } from '@sentry/core'; +import { eventFromUnknownInput, isPrimitive } from '@sentry/core'; import type { Client, Event, IntegrationFn, Primitive, StackParser } from '@sentry/types'; -import { eventFromUnknownInput, isPrimitive } from '@sentry/utils'; type GlobalHandlersIntegrationsOptionKeys = 'error' | 'unhandledrejection'; diff --git a/packages/deno/src/integrations/normalizepaths.ts b/packages/deno/src/integrations/normalizepaths.ts index 07e0f872338b..ad8b18694652 100644 --- a/packages/deno/src/integrations/normalizepaths.ts +++ b/packages/deno/src/integrations/normalizepaths.ts @@ -1,6 +1,6 @@ import { defineIntegration } from '@sentry/core'; +import { createStackParser, dirname, nodeStackLineParser } from '@sentry/core'; import type { IntegrationFn } from '@sentry/types'; -import { createStackParser, dirname, nodeStackLineParser } from '@sentry/utils'; const INTEGRATION_NAME = 'NormalizePaths'; diff --git a/packages/deno/src/sdk.ts b/packages/deno/src/sdk.ts index 4072196c721f..57c6817c51ee 100644 --- a/packages/deno/src/sdk.ts +++ b/packages/deno/src/sdk.ts @@ -6,8 +6,8 @@ import { linkedErrorsIntegration, } from '@sentry/core'; import { getIntegrationsToSetup, initAndBind } from '@sentry/core'; +import { createStackParser, nodeStackLineParser, stackParserFromStackParserOptions } from '@sentry/core'; import type { Client, Integration, Options, StackParser } from '@sentry/types'; -import { createStackParser, nodeStackLineParser, stackParserFromStackParserOptions } from '@sentry/utils'; import { DenoClient } from './client'; import { breadcrumbsIntegration } from './integrations/breadcrumbs'; diff --git a/packages/deno/src/transports/index.ts b/packages/deno/src/transports/index.ts index 1b2b3c661af9..d55c58f6054f 100644 --- a/packages/deno/src/transports/index.ts +++ b/packages/deno/src/transports/index.ts @@ -1,6 +1,6 @@ import { createTransport, suppressTracing } from '@sentry/core'; +import { consoleSandbox, logger, rejectedSyncPromise } from '@sentry/core'; import type { BaseTransportOptions, Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types'; -import { consoleSandbox, logger, rejectedSyncPromise } from '@sentry/utils'; export interface DenoTransportOptions extends BaseTransportOptions { /** Custom headers for the transport. Used by the XHRTransport and FetchTransport */ diff --git a/packages/deno/test/build.ts b/packages/deno/test/build.ts index b593fed2f4dd..86bb371afc08 100644 --- a/packages/deno/test/build.ts +++ b/packages/deno/test/build.ts @@ -1,4 +1,4 @@ // We use this as the entry point to bundle Sentry dependencies that are used by the tests. export * as sentryTypes from '@sentry/types'; -export * as sentryUtils from '@sentry/utils'; +export * as sentryUtils from '@sentry/core'; export * as sentryCore from '@sentry/core'; diff --git a/packages/ember/addon/index.ts b/packages/ember/addon/index.ts index 341d74763634..2080581b6138 100644 --- a/packages/ember/addon/index.ts +++ b/packages/ember/addon/index.ts @@ -6,7 +6,7 @@ import { startSpan } from '@sentry/browser'; import type { BrowserOptions } from '@sentry/browser'; import * as Sentry from '@sentry/browser'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, applySdkMetadata } from '@sentry/core'; -import { GLOBAL_OBJ } from '@sentry/utils'; +import { GLOBAL_OBJ } from '@sentry/core'; import Ember from 'ember'; import type { Client, TransactionSource } from '@sentry/types'; diff --git a/packages/ember/addon/instance-initializers/sentry-performance.ts b/packages/ember/addon/instance-initializers/sentry-performance.ts index f8d03a025217..614426cb47c9 100644 --- a/packages/ember/addon/instance-initializers/sentry-performance.ts +++ b/packages/ember/addon/instance-initializers/sentry-performance.ts @@ -18,9 +18,9 @@ import { getClient, startInactiveSpan, } from '@sentry/browser'; +import { GLOBAL_OBJ, browserPerformanceTimeOrigin, timestampInSeconds } from '@sentry/core'; import type { ExtendedBackburner } from '@sentry/ember/runloop'; import type { Span } from '@sentry/types'; -import { GLOBAL_OBJ, browserPerformanceTimeOrigin, timestampInSeconds } from '@sentry/utils'; import type { EmberRouterMain, EmberSentryConfig, GlobalConfig, OwnConfig } from '../types'; function getSentryConfig(): EmberSentryConfig { diff --git a/packages/ember/package.json b/packages/ember/package.json index a9baae4f80cc..0c2cd23efda3 100644 --- a/packages/ember/package.json +++ b/packages/ember/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/ember", - "version": "8.38.0", + "version": "8.39.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,9 @@ "dependencies": { "@babel/core": "^7.24.4", "@embroider/macros": "^1.16.0", - "@sentry/browser": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/browser": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0", "ember-auto-import": "^2.7.2", "ember-cli-babel": "^8.2.0", "ember-cli-htmlbars": "^6.1.1", diff --git a/packages/eslint-config-sdk/package.json b/packages/eslint-config-sdk/package.json index 00ef36a6beba..6ae7fdff2121 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": "8.38.0", + "version": "8.39.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": "8.38.0", - "@sentry-internal/typescript": "8.38.0", + "@sentry-internal/eslint-plugin-sdk": "8.39.0", + "@sentry-internal/typescript": "8.39.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 99e37d81d7d1..f703fc7f7ad1 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": "8.38.0", + "version": "8.39.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 63f07f2bdc0a..bb35267bd1b0 100644 --- a/packages/feedback/package.json +++ b/packages/feedback/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/feedback", - "version": "8.38.0", + "version": "8.39.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", @@ -39,9 +39,8 @@ "access": "public" }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "devDependencies": { "preact": "^10.19.4" diff --git a/packages/feedback/src/constants/index.ts b/packages/feedback/src/constants/index.ts index 2a6bc0d171aa..198b6e199bb5 100644 --- a/packages/feedback/src/constants/index.ts +++ b/packages/feedback/src/constants/index.ts @@ -1,4 +1,4 @@ -import { GLOBAL_OBJ } from '@sentry/utils'; +import { GLOBAL_OBJ } from '@sentry/core'; // exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser` // prevents the browser package from being bundled in the CDN bundle, and avoids a diff --git a/packages/feedback/src/core/TestClient.ts b/packages/feedback/src/core/TestClient.ts index 39ed51fcff67..c938acd182f5 100644 --- a/packages/feedback/src/core/TestClient.ts +++ b/packages/feedback/src/core/TestClient.ts @@ -1,6 +1,6 @@ import { BaseClient, createTransport, initAndBind } from '@sentry/core'; +import { resolvedSyncPromise } from '@sentry/core'; import type { BrowserClientReplayOptions, ClientOptions, Event, SeverityLevel } from '@sentry/types'; -import { resolvedSyncPromise } from '@sentry/utils'; export interface TestClientOptions extends ClientOptions, BrowserClientReplayOptions {} diff --git a/packages/feedback/src/core/integration.ts b/packages/feedback/src/core/integration.ts index c72b28b1d04b..1ff5f9778cb3 100644 --- a/packages/feedback/src/core/integration.ts +++ b/packages/feedback/src/core/integration.ts @@ -1,4 +1,5 @@ import { getClient } from '@sentry/core'; +import { isBrowser, logger } from '@sentry/core'; import type { FeedbackInternalOptions, FeedbackModalIntegration, @@ -6,7 +7,6 @@ import type { Integration, IntegrationFn, } from '@sentry/types'; -import { isBrowser, logger } from '@sentry/utils'; import { ADD_SCREENSHOT_LABEL, CANCEL_BUTTON_LABEL, diff --git a/packages/feedback/src/core/sendFeedback.ts b/packages/feedback/src/core/sendFeedback.ts index c0b8ccaa2704..3503c55a2ef2 100644 --- a/packages/feedback/src/core/sendFeedback.ts +++ b/packages/feedback/src/core/sendFeedback.ts @@ -1,8 +1,8 @@ import { captureFeedback } from '@sentry/core'; import { getClient } from '@sentry/core'; import { getCurrentScope } from '@sentry/core'; +import { getLocationHref } from '@sentry/core'; import type { Event, EventHint, SendFeedback, SendFeedbackParams, TransportMakeRequestResponse } from '@sentry/types'; -import { getLocationHref } from '@sentry/utils'; import { FEEDBACK_API_SOURCE } from '../constants'; /** diff --git a/packages/feedback/src/modal/components/Form.tsx b/packages/feedback/src/modal/components/Form.tsx index d6cc94ec7f60..4267e10f81d4 100644 --- a/packages/feedback/src/modal/components/Form.tsx +++ b/packages/feedback/src/modal/components/Form.tsx @@ -1,10 +1,10 @@ +import { logger } from '@sentry/core'; import type { FeedbackFormData, FeedbackInternalOptions, FeedbackScreenshotIntegration, SendFeedback, } from '@sentry/types'; -import { logger } from '@sentry/utils'; // biome-ignore lint/nursery/noUnusedImports: reason import { h } from 'preact'; // eslint-disable-line @typescript-eslint/no-unused-vars import type { JSX, VNode } from 'preact'; diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 52cffcaeb122..cbacfcc8ecd0 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/gatsby", - "version": "8.38.0", + "version": "8.39.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", @@ -45,10 +45,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/react": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/core": "8.39.0", + "@sentry/react": "8.39.0", + "@sentry/types": "8.39.0", "@sentry/webpack-plugin": "2.22.6" }, "peerDependencies": { diff --git a/packages/google-cloud-serverless/package.json b/packages/google-cloud-serverless/package.json index 30bd3772b255..a1e8478db9f7 100644 --- a/packages/google-cloud-serverless/package.json +++ b/packages/google-cloud-serverless/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/google-cloud-serverless", - "version": "8.38.0", + "version": "8.39.0", "description": "Official Sentry SDK for Google Cloud Functions", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/google-cloud", @@ -48,10 +48,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/types": "8.39.0", "@types/express": "^4.17.14" }, "devDependencies": { diff --git a/packages/google-cloud-serverless/src/gcpfunction/cloud_events.ts b/packages/google-cloud-serverless/src/gcpfunction/cloud_events.ts index 3ea4858d829c..8b4daf27c9b0 100644 --- a/packages/google-cloud-serverless/src/gcpfunction/cloud_events.ts +++ b/packages/google-cloud-serverless/src/gcpfunction/cloud_events.ts @@ -1,6 +1,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, handleCallbackErrors } from '@sentry/core'; +import { logger } from '@sentry/core'; import { captureException, flush, getCurrentScope, startSpanManual } from '@sentry/node'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { domainify, markEventUnhandled, proxyFunction } from '../utils'; diff --git a/packages/google-cloud-serverless/src/gcpfunction/events.ts b/packages/google-cloud-serverless/src/gcpfunction/events.ts index bdecbeff9868..319329ccf28f 100644 --- a/packages/google-cloud-serverless/src/gcpfunction/events.ts +++ b/packages/google-cloud-serverless/src/gcpfunction/events.ts @@ -1,6 +1,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, handleCallbackErrors } from '@sentry/core'; +import { logger } from '@sentry/core'; import { captureException, flush, getCurrentScope, startSpanManual } from '@sentry/node'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { domainify, markEventUnhandled, proxyFunction } from '../utils'; diff --git a/packages/google-cloud-serverless/src/gcpfunction/http.ts b/packages/google-cloud-serverless/src/gcpfunction/http.ts index 4a27bae2ecf9..0e45074fdda5 100644 --- a/packages/google-cloud-serverless/src/gcpfunction/http.ts +++ b/packages/google-cloud-serverless/src/gcpfunction/http.ts @@ -4,8 +4,8 @@ import { handleCallbackErrors, setHttpStatus, } from '@sentry/core'; +import { isString, logger, stripUrlQueryAndFragment } from '@sentry/core'; import { captureException, continueTrace, flush, getCurrentScope, startSpanManual } from '@sentry/node'; -import { isString, logger, stripUrlQueryAndFragment } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { domainify, markEventUnhandled, proxyFunction } from '../utils'; diff --git a/packages/google-cloud-serverless/src/index.ts b/packages/google-cloud-serverless/src/index.ts index 87349a502f0f..5be557af86c5 100644 --- a/packages/google-cloud-serverless/src/index.ts +++ b/packages/google-cloud-serverless/src/index.ts @@ -101,7 +101,9 @@ export { mysql2Integration, redisIntegration, tediousIntegration, + // eslint-disable-next-line deprecation/deprecation nestIntegration, + // eslint-disable-next-line deprecation/deprecation setupNestErrorHandler, postgresIntegration, prismaIntegration, diff --git a/packages/google-cloud-serverless/src/integrations/google-cloud-grpc.ts b/packages/google-cloud-serverless/src/integrations/google-cloud-grpc.ts index 3b55fe99eeb8..11c2f1cf236a 100644 --- a/packages/google-cloud-serverless/src/integrations/google-cloud-grpc.ts +++ b/packages/google-cloud-serverless/src/integrations/google-cloud-grpc.ts @@ -1,8 +1,8 @@ import type { EventEmitter } from 'events'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, defineIntegration, getClient } from '@sentry/core'; +import { fill } from '@sentry/core'; import { startInactiveSpan } from '@sentry/node'; import type { Client, IntegrationFn } from '@sentry/types'; -import { fill } from '@sentry/utils'; interface GrpcFunction extends CallableFunction { (...args: unknown[]): EventEmitter; diff --git a/packages/google-cloud-serverless/src/integrations/google-cloud-http.ts b/packages/google-cloud-serverless/src/integrations/google-cloud-http.ts index 9ffad40fd7b6..fa26b03f486f 100644 --- a/packages/google-cloud-serverless/src/integrations/google-cloud-http.ts +++ b/packages/google-cloud-serverless/src/integrations/google-cloud-http.ts @@ -1,8 +1,8 @@ import type * as common from '@google-cloud/common'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SentryNonRecordingSpan, defineIntegration, getClient } from '@sentry/core'; +import { fill } from '@sentry/core'; import { startInactiveSpan } from '@sentry/node'; import type { Client, IntegrationFn } from '@sentry/types'; -import { fill } from '@sentry/utils'; type RequestOptions = common.DecorateRequestOptions; type ResponseCallback = common.BodyResponseCallback; diff --git a/packages/google-cloud-serverless/src/utils.ts b/packages/google-cloud-serverless/src/utils.ts index ba3082b7e262..8e33f55b51cd 100644 --- a/packages/google-cloud-serverless/src/utils.ts +++ b/packages/google-cloud-serverless/src/utils.ts @@ -1,6 +1,6 @@ import { withIsolationScope } from '@sentry/core'; +import { addExceptionMechanism } from '@sentry/core'; import type { Scope } from '@sentry/types'; -import { addExceptionMechanism } from '@sentry/utils'; /** * @param fn function to run diff --git a/packages/integration-shims/package.json b/packages/integration-shims/package.json index 1aa89e972ead..9c0a81fec7b5 100644 --- a/packages/integration-shims/package.json +++ b/packages/integration-shims/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/integration-shims", - "version": "8.38.0", + "version": "8.39.0", "description": "Shims for integrations in Sentry SDK.", "main": "build/cjs/index.js", "module": "build/esm/index.js", @@ -55,9 +55,8 @@ "url": "https://github.com/getsentry/sentry-javascript/issues" }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "engines": { "node": ">=14.18" diff --git a/packages/integration-shims/src/BrowserTracing.ts b/packages/integration-shims/src/BrowserTracing.ts index cd6ed88060a6..49f1c097a9e5 100644 --- a/packages/integration-shims/src/BrowserTracing.ts +++ b/packages/integration-shims/src/BrowserTracing.ts @@ -1,5 +1,5 @@ import { defineIntegration } from '@sentry/core'; -import { consoleSandbox } from '@sentry/utils'; +import { consoleSandbox } from '@sentry/core'; /** * This is a shim for the BrowserTracing integration. diff --git a/packages/integration-shims/src/Feedback.ts b/packages/integration-shims/src/Feedback.ts index ef4010bb0494..caec59969918 100644 --- a/packages/integration-shims/src/Feedback.ts +++ b/packages/integration-shims/src/Feedback.ts @@ -1,5 +1,5 @@ +import { consoleSandbox } from '@sentry/core'; import type { Integration } from '@sentry/types'; -import { consoleSandbox } from '@sentry/utils'; import { FAKE_FUNCTION } from './common'; const FEEDBACK_INTEGRATION_METHODS = ['attachTo', 'createForm', 'createWidget', 'remove'] as const; diff --git a/packages/integration-shims/src/Replay.ts b/packages/integration-shims/src/Replay.ts index 1f44fdf6bb3a..30c06a9ab461 100644 --- a/packages/integration-shims/src/Replay.ts +++ b/packages/integration-shims/src/Replay.ts @@ -1,5 +1,5 @@ +import { consoleSandbox } from '@sentry/core'; import type { Integration } from '@sentry/types'; -import { consoleSandbox } from '@sentry/utils'; import { FAKE_FUNCTION } from './common'; const REPLAY_INTEGRATION_METHODS = ['start', 'stop', 'flush'] as const; diff --git a/packages/integration-shims/src/metrics.ts b/packages/integration-shims/src/metrics.ts index 3f2414742501..a30a4a3c678e 100644 --- a/packages/integration-shims/src/metrics.ts +++ b/packages/integration-shims/src/metrics.ts @@ -1,5 +1,5 @@ +import { consoleSandbox } from '@sentry/core'; import type { Metrics } from '@sentry/types'; -import { consoleSandbox } from '@sentry/utils'; function warn(): void { consoleSandbox(() => { diff --git a/packages/nestjs/package.json b/packages/nestjs/package.json index 76028b27e40f..50c400041ca3 100644 --- a/packages/nestjs/package.json +++ b/packages/nestjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nestjs", - "version": "8.38.0", + "version": "8.39.0", "description": "Official Sentry SDK for NestJS", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nestjs", @@ -44,10 +44,9 @@ "access": "public" }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/types": "8.39.0" }, "devDependencies": { "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", diff --git a/packages/nestjs/src/decorators.ts b/packages/nestjs/src/decorators.ts index 60e1049b3fd2..0a23ab488a2f 100644 --- a/packages/nestjs/src/decorators.ts +++ b/packages/nestjs/src/decorators.ts @@ -83,5 +83,7 @@ export function SentryExceptionCaptured() { /** * A decorator to wrap user-defined exception filters and add Sentry error reporting. + * + * @deprecated This decorator was renamed and will be removed in a future major version. Use `SentryExceptionCaptured` instead. */ export const WithSentry = SentryExceptionCaptured; diff --git a/packages/nestjs/src/index.ts b/packages/nestjs/src/index.ts index d99f491c1f6c..c26edc3b4941 100644 --- a/packages/nestjs/src/index.ts +++ b/packages/nestjs/src/index.ts @@ -1,10 +1,21 @@ +import { nestIntegration as nestIntegrationAlias } from '@sentry/node'; + export * from '@sentry/node'; +/** + * Integration capturing tracing data for NestJS. + */ +// eslint-disable-next-line deprecation/deprecation +export const nestIntegration = nestIntegrationAlias; + +// TODO(v9): Export custom `getDefaultIntegrations` from this SDK that automatically registers the `nestIntegration`. + export { init } from './sdk'; export { SentryTraced, SentryCron, + // eslint-disable-next-line deprecation/deprecation WithSentry, SentryExceptionCaptured, } from './decorators'; diff --git a/packages/nestjs/src/setup.ts b/packages/nestjs/src/setup.ts index 0d7ccdb2c4dc..08646402b187 100644 --- a/packages/nestjs/src/setup.ts +++ b/packages/nestjs/src/setup.ts @@ -18,8 +18,8 @@ import { getIsolationScope, spanToJSON, } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { Span } from '@sentry/types'; -import { logger } from '@sentry/utils'; import type { Observable } from 'rxjs'; import { isExpectedError } from './helpers'; @@ -29,6 +29,10 @@ import { isExpectedError } from './helpers'; /** * Interceptor to add Sentry tracing capabilities to Nest.js applications. + * + * @deprecated `SentryTracingInterceptor` is deprecated. + * If you are using `@sentry/nestjs` you can safely remove any references to the `SentryTracingInterceptor`. + * If you are using another package migrate to `@sentry/nestjs` and remove the `SentryTracingInterceptor` afterwards. */ class SentryTracingInterceptor implements NestInterceptor { // used to exclude this class from being auto-instrumented @@ -59,7 +63,9 @@ class SentryTracingInterceptor implements NestInterceptor { return next.handle(); } } +// eslint-disable-next-line deprecation/deprecation Injectable()(SentryTracingInterceptor); +// eslint-disable-next-line deprecation/deprecation export { SentryTracingInterceptor }; /** @@ -108,6 +114,8 @@ export { SentryGlobalFilter }; /** * Global filter to handle exceptions in NestJS + GraphQL applications and report them to Sentry. + * + * @deprecated `SentryGlobalGraphQLFilter` is deprecated. Use the `SentryGlobalFilter` instead. The `SentryGlobalFilter` is a drop-in replacement. */ class SentryGlobalGraphQLFilter { private static readonly _logger = new Logger('ExceptionsHandler'); @@ -127,24 +135,33 @@ class SentryGlobalGraphQLFilter { throw exception; } if (exception instanceof Error) { + // eslint-disable-next-line deprecation/deprecation SentryGlobalGraphQLFilter._logger.error(exception.message, exception.stack); } captureException(exception); throw exception; } } +// eslint-disable-next-line deprecation/deprecation Catch()(SentryGlobalGraphQLFilter); +// eslint-disable-next-line deprecation/deprecation export { SentryGlobalGraphQLFilter }; /** * Global filter to handle exceptions and report them to Sentry. * * This filter is a generic filter that can handle both HTTP and GraphQL exceptions. + * + * @deprecated `SentryGlobalGenericFilter` is deprecated. Use the `SentryGlobalFilter` instead. The `SentryGlobalFilter` is a drop-in replacement. */ export const SentryGlobalGenericFilter = SentryGlobalFilter; /** * Service to set up Sentry performance tracing for Nest.js applications. + * + * @deprecated `SentryService` is deprecated. + * If you are using `@sentry/nestjs` you can safely remove any references to the `SentryService`. + * If you are using another package migrate to `@sentry/nestjs` and remove the `SentryService` afterwards. */ class SentryService implements OnModuleInit { public readonly __SENTRY_INTERNAL__: boolean; @@ -168,7 +185,9 @@ class SentryService implements OnModuleInit { } } } +// eslint-disable-next-line deprecation/deprecation Injectable()(SentryService); +// eslint-disable-next-line deprecation/deprecation export { SentryService }; /** @@ -182,12 +201,15 @@ class SentryModule { return { module: SentryModule, providers: [ + // eslint-disable-next-line deprecation/deprecation SentryService, { provide: APP_INTERCEPTOR, + // eslint-disable-next-line deprecation/deprecation useClass: SentryTracingInterceptor, }, ], + // eslint-disable-next-line deprecation/deprecation exports: [SentryService], }; } @@ -195,12 +217,15 @@ class SentryModule { Global()(SentryModule); Module({ providers: [ + // eslint-disable-next-line deprecation/deprecation SentryService, { provide: APP_INTERCEPTOR, + // eslint-disable-next-line deprecation/deprecation useClass: SentryTracingInterceptor, }, ], + // eslint-disable-next-line deprecation/deprecation exports: [SentryService], })(SentryModule); export { SentryModule }; diff --git a/packages/nestjs/test/sdk.test.ts b/packages/nestjs/test/sdk.test.ts index 77d19fa2c797..0f61ee249261 100644 --- a/packages/nestjs/test/sdk.test.ts +++ b/packages/nestjs/test/sdk.test.ts @@ -1,7 +1,7 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { SDK_VERSION } from '@sentry/core'; import * as SentryNode from '@sentry/node'; -import { SDK_VERSION } from '@sentry/utils'; import { init as nestInit } from '../src/sdk'; diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 086ec4ecf2b3..1cd4407fe9cc 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nextjs", - "version": "8.38.0", + "version": "8.39.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", @@ -80,14 +80,13 @@ "@opentelemetry/instrumentation-http": "0.53.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@rollup/plugin-commonjs": "28.0.1", - "@sentry-internal/browser-utils": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/opentelemetry": "8.38.0", - "@sentry/react": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", - "@sentry/vercel-edge": "8.38.0", + "@sentry-internal/browser-utils": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/opentelemetry": "8.39.0", + "@sentry/react": "8.39.0", + "@sentry/types": "8.39.0", + "@sentry/vercel-edge": "8.39.0", "@sentry/webpack-plugin": "2.22.6", "chalk": "3.0.0", "resolve": "1.22.8", diff --git a/packages/nextjs/src/client/index.ts b/packages/nextjs/src/client/index.ts index a1e6aba11308..10e1d94566af 100644 --- a/packages/nextjs/src/client/index.ts +++ b/packages/nextjs/src/client/index.ts @@ -1,8 +1,8 @@ import { addEventProcessor, applySdkMetadata } from '@sentry/core'; +import { GLOBAL_OBJ } from '@sentry/core'; import type { BrowserOptions } from '@sentry/react'; import { getDefaultIntegrations as getReactDefaultIntegrations, init as reactInit } from '@sentry/react'; import type { Client, EventProcessor, Integration } from '@sentry/types'; -import { GLOBAL_OBJ } from '@sentry/utils'; import { devErrorSymbolicationEventProcessor } from '../common/devErrorSymbolicationEventProcessor'; import { getVercelEnv } from '../common/getVercelEnv'; diff --git a/packages/nextjs/src/client/routing/appRouterRoutingInstrumentation.ts b/packages/nextjs/src/client/routing/appRouterRoutingInstrumentation.ts index 4c92e0999f57..11faf8d2a68b 100644 --- a/packages/nextjs/src/client/routing/appRouterRoutingInstrumentation.ts +++ b/packages/nextjs/src/client/routing/appRouterRoutingInstrumentation.ts @@ -3,9 +3,9 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, } from '@sentry/core'; +import { GLOBAL_OBJ, browserPerformanceTimeOrigin } from '@sentry/core'; import { WINDOW, startBrowserTracingNavigationSpan, startBrowserTracingPageLoadSpan } from '@sentry/react'; import type { Client, Span } from '@sentry/types'; -import { GLOBAL_OBJ, browserPerformanceTimeOrigin } from '@sentry/utils'; export const INCOMPLETE_APP_ROUTER_INSTRUMENTATION_TRANSACTION_NAME = 'incomplete-app-router-transaction'; diff --git a/packages/nextjs/src/client/routing/pagesRouterRoutingInstrumentation.ts b/packages/nextjs/src/client/routing/pagesRouterRoutingInstrumentation.ts index 2380b743cced..6a2df057017c 100644 --- a/packages/nextjs/src/client/routing/pagesRouterRoutingInstrumentation.ts +++ b/packages/nextjs/src/client/routing/pagesRouterRoutingInstrumentation.ts @@ -4,9 +4,9 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, } from '@sentry/core'; +import { browserPerformanceTimeOrigin, logger, parseBaggageHeader, stripUrlQueryAndFragment } from '@sentry/core'; import { WINDOW, startBrowserTracingNavigationSpan, startBrowserTracingPageLoadSpan } from '@sentry/react'; import type { Client, TransactionSource } from '@sentry/types'; -import { browserPerformanceTimeOrigin, logger, parseBaggageHeader, stripUrlQueryAndFragment } from '@sentry/utils'; import type { NEXT_DATA } from 'next/dist/shared/lib/utils'; import RouterImport from 'next/router'; diff --git a/packages/nextjs/src/client/tunnelRoute.ts b/packages/nextjs/src/client/tunnelRoute.ts index 59ce4cfe82b7..7d9a79d1fca6 100644 --- a/packages/nextjs/src/client/tunnelRoute.ts +++ b/packages/nextjs/src/client/tunnelRoute.ts @@ -1,5 +1,5 @@ +import { GLOBAL_OBJ, dsnFromString, logger } from '@sentry/core'; import type { BrowserOptions } from '@sentry/react'; -import { GLOBAL_OBJ, dsnFromString, logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../common/debug-build'; diff --git a/packages/nextjs/src/common/captureRequestError.ts b/packages/nextjs/src/common/captureRequestError.ts index 1556076619a0..2dc4d8ff6325 100644 --- a/packages/nextjs/src/common/captureRequestError.ts +++ b/packages/nextjs/src/common/captureRequestError.ts @@ -1,4 +1,6 @@ import { captureException, withScope } from '@sentry/core'; +import { headersToDict } from '@sentry/core'; +import type { RequestEventData } from '@sentry/types'; type RequestInfo = { path: string; @@ -18,10 +20,10 @@ type ErrorContext = { export function captureRequestError(error: unknown, request: RequestInfo, errorContext: ErrorContext): void { withScope(scope => { scope.setSDKProcessingMetadata({ - request: { - headers: request.headers, + normalizedRequest: { + headers: headersToDict(request.headers), method: request.method, - }, + } satisfies RequestEventData, }); scope.setContext('nextjs', { diff --git a/packages/nextjs/src/common/devErrorSymbolicationEventProcessor.ts b/packages/nextjs/src/common/devErrorSymbolicationEventProcessor.ts index 143bf6fef6ef..1a117517a964 100644 --- a/packages/nextjs/src/common/devErrorSymbolicationEventProcessor.ts +++ b/packages/nextjs/src/common/devErrorSymbolicationEventProcessor.ts @@ -1,6 +1,6 @@ import { suppressTracing } from '@sentry/core'; +import { GLOBAL_OBJ } from '@sentry/core'; import type { Event, EventHint } from '@sentry/types'; -import { GLOBAL_OBJ } from '@sentry/utils'; import type { StackFrame } from 'stacktrace-parser'; import * as stackTraceParser from 'stacktrace-parser'; diff --git a/packages/nextjs/src/common/nextNavigationErrorUtils.ts b/packages/nextjs/src/common/nextNavigationErrorUtils.ts index d4a67791525f..6998eb523ee7 100644 --- a/packages/nextjs/src/common/nextNavigationErrorUtils.ts +++ b/packages/nextjs/src/common/nextNavigationErrorUtils.ts @@ -1,4 +1,4 @@ -import { isError } from '@sentry/utils'; +import { isError } from '@sentry/core'; /** * Determines whether input is a Next.js not-found error. diff --git a/packages/nextjs/src/common/pages-router-instrumentation/_error.ts b/packages/nextjs/src/common/pages-router-instrumentation/_error.ts index 3450aad8ef5e..41cbb497064a 100644 --- a/packages/nextjs/src/common/pages-router-instrumentation/_error.ts +++ b/packages/nextjs/src/common/pages-router-instrumentation/_error.ts @@ -1,5 +1,5 @@ import { captureException, withScope } from '@sentry/core'; -import { vercelWaitUntil } from '@sentry/utils'; +import { vercelWaitUntil } from '@sentry/core'; import type { NextPageContext } from 'next'; import { flushSafelyWithTimeout } from '../utils/responseEnd'; diff --git a/packages/nextjs/src/common/pages-router-instrumentation/wrapApiHandlerWithSentry.ts b/packages/nextjs/src/common/pages-router-instrumentation/wrapApiHandlerWithSentry.ts index 30fce67e482e..f9beb8cabb87 100644 --- a/packages/nextjs/src/common/pages-router-instrumentation/wrapApiHandlerWithSentry.ts +++ b/packages/nextjs/src/common/pages-router-instrumentation/wrapApiHandlerWithSentry.ts @@ -7,9 +7,9 @@ import { startSpanManual, withIsolationScope, } from '@sentry/core'; -import { isString, logger, objectify } from '@sentry/utils'; +import { isString, logger, objectify } from '@sentry/core'; -import { vercelWaitUntil } from '@sentry/utils'; +import { vercelWaitUntil } from '@sentry/core'; import type { NextApiRequest } from 'next'; import type { AugmentedNextApiResponse, NextApiHandler } from '../types'; import { flushSafelyWithTimeout } from '../utils/responseEnd'; diff --git a/packages/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts b/packages/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts index 8b6a45faa63b..3d481235be25 100644 --- a/packages/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts +++ b/packages/nextjs/src/common/pages-router-instrumentation/wrapPageComponentWithSentry.ts @@ -1,5 +1,5 @@ import { captureException, getCurrentScope, withIsolationScope } from '@sentry/core'; -import { extractTraceparentData } from '@sentry/utils'; +import { extractTraceparentData } from '@sentry/core'; interface FunctionComponent { (...args: unknown[]): unknown; diff --git a/packages/nextjs/src/common/utils/responseEnd.ts b/packages/nextjs/src/common/utils/responseEnd.ts index b59dbf0ce170..1ccfd1f913d5 100644 --- a/packages/nextjs/src/common/utils/responseEnd.ts +++ b/packages/nextjs/src/common/utils/responseEnd.ts @@ -1,7 +1,7 @@ import type { ServerResponse } from 'http'; import { flush, setHttpStatus } from '@sentry/core'; +import { fill, logger } from '@sentry/core'; import type { Span } from '@sentry/types'; -import { fill, logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import type { ResponseEndMethod, WrappedResponseEndMethod } from '../types'; diff --git a/packages/nextjs/src/common/utils/tracingUtils.ts b/packages/nextjs/src/common/utils/tracingUtils.ts index ff57fcae3acc..e849e502913f 100644 --- a/packages/nextjs/src/common/utils/tracingUtils.ts +++ b/packages/nextjs/src/common/utils/tracingUtils.ts @@ -1,6 +1,6 @@ import { Scope, getActiveSpan, getRootSpan, spanToJSON, startNewTrace } from '@sentry/core'; +import { GLOBAL_OBJ, logger } from '@sentry/core'; import type { PropagationContext } from '@sentry/types'; -import { GLOBAL_OBJ, logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION } from '../span-attributes-with-logic-attached'; diff --git a/packages/nextjs/src/common/withServerActionInstrumentation.ts b/packages/nextjs/src/common/withServerActionInstrumentation.ts index b13d3ebef3dd..5a9320fd143a 100644 --- a/packages/nextjs/src/common/withServerActionInstrumentation.ts +++ b/packages/nextjs/src/common/withServerActionInstrumentation.ts @@ -9,7 +9,8 @@ import { startSpan, withIsolationScope, } from '@sentry/core'; -import { logger, vercelWaitUntil } from '@sentry/utils'; +import { logger, vercelWaitUntil } from '@sentry/core'; +import type { RequestEventData } from '@sentry/types'; import { DEBUG_BUILD } from './debug-build'; import { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils'; @@ -89,9 +90,9 @@ async function withServerActionInstrumentationImplementation a scope.setTransactionName(`${componentType}.${generationFunctionIdentifier} (${componentRoute})`); isolationScope.setSDKProcessingMetadata({ - request: { + normalizedRequest: { headers: headersDict, - }, + } satisfies RequestEventData, }); const activeSpan = getActiveSpan(); diff --git a/packages/nextjs/src/common/wrapMiddlewareWithSentry.ts b/packages/nextjs/src/common/wrapMiddlewareWithSentry.ts index e8b57c7d2b8b..69daee26da39 100644 --- a/packages/nextjs/src/common/wrapMiddlewareWithSentry.ts +++ b/packages/nextjs/src/common/wrapMiddlewareWithSentry.ts @@ -10,8 +10,8 @@ import { startSpan, withIsolationScope, } from '@sentry/core'; +import { vercelWaitUntil, winterCGRequestToRequestData } from '@sentry/core'; import type { TransactionSource } from '@sentry/types'; -import { vercelWaitUntil, winterCGRequestToRequestData } from '@sentry/utils'; import type { EdgeRouteHandler } from '../edge/types'; import { flushSafelyWithTimeout } from './utils/responseEnd'; @@ -36,7 +36,7 @@ export function wrapMiddlewareWithSentry( if (req instanceof Request) { isolationScope.setSDKProcessingMetadata({ - request: winterCGRequestToRequestData(req), + normalizedRequest: winterCGRequestToRequestData(req), }); spanName = `middleware ${req.method} ${new URL(req.url).pathname}`; spanSource = 'url'; diff --git a/packages/nextjs/src/common/wrapRouteHandlerWithSentry.ts b/packages/nextjs/src/common/wrapRouteHandlerWithSentry.ts index 215bb35ce9a5..82bd208f9946 100644 --- a/packages/nextjs/src/common/wrapRouteHandlerWithSentry.ts +++ b/packages/nextjs/src/common/wrapRouteHandlerWithSentry.ts @@ -13,10 +13,10 @@ import { withIsolationScope, withScope, } from '@sentry/core'; - +import type { RequestEventData } from '@sentry/types'; import type { RouteHandlerContext } from './types'; -import { propagationContextFromHeaders, winterCGHeadersToDict } from '@sentry/utils'; +import { propagationContextFromHeaders, winterCGHeadersToDict } from '@sentry/core'; import { isNotFoundNavigationError, isRedirectNavigationError } from './nextNavigationErrorUtils'; import { commonObjectToIsolationScope } from './utils/tracingUtils'; @@ -64,10 +64,10 @@ export function wrapRouteHandlerWithSentry any>( ); scope.setPropagationContext(incomingPropagationContext); scope.setSDKProcessingMetadata({ - request: { + normalizedRequest: { method, headers: completeHeadersDict, - }, + } satisfies RequestEventData, }); } diff --git a/packages/nextjs/src/common/wrapServerComponentWithSentry.ts b/packages/nextjs/src/common/wrapServerComponentWithSentry.ts index c4bbde29eb53..15536665c988 100644 --- a/packages/nextjs/src/common/wrapServerComponentWithSentry.ts +++ b/packages/nextjs/src/common/wrapServerComponentWithSentry.ts @@ -13,7 +13,8 @@ import { withIsolationScope, withScope, } from '@sentry/core'; -import { propagationContextFromHeaders, uuid4, vercelWaitUntil, winterCGHeadersToDict } from '@sentry/utils'; +import { propagationContextFromHeaders, uuid4, vercelWaitUntil, winterCGHeadersToDict } from '@sentry/core'; +import type { RequestEventData } from '@sentry/types'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core'; import { isNotFoundNavigationError, isRedirectNavigationError } from '../common/nextNavigationErrorUtils'; @@ -49,9 +50,9 @@ export function wrapServerComponentWithSentry any> const headersDict = context.headers ? winterCGHeadersToDict(context.headers) : undefined; isolationScope.setSDKProcessingMetadata({ - request: { + normalizedRequest: { headers: headersDict, - }, + } satisfies RequestEventData, }); return withIsolationScope(isolationScope, () => { diff --git a/packages/nextjs/src/config/loaders/prefixLoader.ts b/packages/nextjs/src/config/loaders/prefixLoader.ts index 29920a7047be..82185130ebb2 100644 --- a/packages/nextjs/src/config/loaders/prefixLoader.ts +++ b/packages/nextjs/src/config/loaders/prefixLoader.ts @@ -1,6 +1,6 @@ import * as fs from 'fs'; import * as path from 'path'; -import { escapeStringForRegex } from '@sentry/utils'; +import { escapeStringForRegex } from '@sentry/core'; import type { LoaderThis } from './types'; diff --git a/packages/nextjs/src/config/loaders/wrappingLoader.ts b/packages/nextjs/src/config/loaders/wrappingLoader.ts index d18d0efd7634..324dd1b1b1ad 100644 --- a/packages/nextjs/src/config/loaders/wrappingLoader.ts +++ b/packages/nextjs/src/config/loaders/wrappingLoader.ts @@ -1,7 +1,7 @@ import * as fs from 'fs'; import * as path from 'path'; import commonjs from '@rollup/plugin-commonjs'; -import { stringMatchesSomePattern } from '@sentry/utils'; +import { stringMatchesSomePattern } from '@sentry/core'; import * as chalk from 'chalk'; import type { RollupBuild, RollupError } from 'rollup'; import { rollup } from 'rollup'; diff --git a/packages/nextjs/src/config/types.ts b/packages/nextjs/src/config/types.ts index 14be35215cf2..75b1c29281fa 100644 --- a/packages/nextjs/src/config/types.ts +++ b/packages/nextjs/src/config/types.ts @@ -1,4 +1,4 @@ -import type { GLOBAL_OBJ } from '@sentry/utils'; +import type { GLOBAL_OBJ } from '@sentry/core'; import type { SentryWebpackPluginOptions } from '@sentry/webpack-plugin'; // The first argument to `withSentryConfig` (which is the user's next config). diff --git a/packages/nextjs/src/config/webpack.ts b/packages/nextjs/src/config/webpack.ts index b83008a4817e..026622318e3f 100644 --- a/packages/nextjs/src/config/webpack.ts +++ b/packages/nextjs/src/config/webpack.ts @@ -3,8 +3,8 @@ import * as fs from 'fs'; import * as path from 'path'; +import { arrayify, escapeStringForRegex, loadModule, logger } from '@sentry/core'; import { getSentryRelease } from '@sentry/node'; -import { arrayify, escapeStringForRegex, loadModule, logger } from '@sentry/utils'; import * as chalk from 'chalk'; import { sync as resolveSync } from 'resolve'; diff --git a/packages/nextjs/src/config/withSentryConfig.ts b/packages/nextjs/src/config/withSentryConfig.ts index 539e75c20596..4c815498b1db 100644 --- a/packages/nextjs/src/config/withSentryConfig.ts +++ b/packages/nextjs/src/config/withSentryConfig.ts @@ -1,5 +1,5 @@ /* eslint-disable complexity */ -import { isThenable, parseSemver } from '@sentry/utils'; +import { isThenable, parseSemver } from '@sentry/core'; import * as fs from 'fs'; import { sync as resolveSync } from 'resolve'; diff --git a/packages/nextjs/src/edge/distDirRewriteFramesIntegration.ts b/packages/nextjs/src/edge/distDirRewriteFramesIntegration.ts index d2e1b519c29b..b9a72d8d95b3 100644 --- a/packages/nextjs/src/edge/distDirRewriteFramesIntegration.ts +++ b/packages/nextjs/src/edge/distDirRewriteFramesIntegration.ts @@ -1,5 +1,5 @@ import { defineIntegration, rewriteFramesIntegration } from '@sentry/core'; -import { escapeStringForRegex } from '@sentry/utils'; +import { escapeStringForRegex } from '@sentry/core'; export const distDirRewriteFramesIntegration = defineIntegration(({ distDirName }: { distDirName: string }) => { const distDirAbsPath = distDirName.replace(/(\/|\\)$/, ''); // We strip trailing slashes because "app:///_next" also doesn't have one diff --git a/packages/nextjs/src/edge/index.ts b/packages/nextjs/src/edge/index.ts index 5bfc8cca054b..ba66c0ba9560 100644 --- a/packages/nextjs/src/edge/index.ts +++ b/packages/nextjs/src/edge/index.ts @@ -8,7 +8,7 @@ import { spanToJSON, } from '@sentry/core'; -import { GLOBAL_OBJ, stripUrlQueryAndFragment, vercelWaitUntil } from '@sentry/utils'; +import { GLOBAL_OBJ, stripUrlQueryAndFragment, vercelWaitUntil } from '@sentry/core'; import type { VercelEdgeOptions } from '@sentry/vercel-edge'; import { getDefaultIntegrations, init as vercelEdgeInit } from '@sentry/vercel-edge'; diff --git a/packages/nextjs/src/edge/rewriteFramesIntegration.ts b/packages/nextjs/src/edge/rewriteFramesIntegration.ts index 15a541311ed1..b191488c2b68 100644 --- a/packages/nextjs/src/edge/rewriteFramesIntegration.ts +++ b/packages/nextjs/src/edge/rewriteFramesIntegration.ts @@ -1,6 +1,6 @@ import { defineIntegration, rewriteFramesIntegration as originalRewriteFramesIntegration } from '@sentry/core'; +import { GLOBAL_OBJ, escapeStringForRegex } from '@sentry/core'; import type { IntegrationFn, StackFrame } from '@sentry/types'; -import { GLOBAL_OBJ, escapeStringForRegex } from '@sentry/utils'; const globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & { _sentryRewriteFramesDistDir?: string; diff --git a/packages/nextjs/src/edge/wrapApiHandlerWithSentry.ts b/packages/nextjs/src/edge/wrapApiHandlerWithSentry.ts index 5c8ce043ecb8..fa31511e4c28 100644 --- a/packages/nextjs/src/edge/wrapApiHandlerWithSentry.ts +++ b/packages/nextjs/src/edge/wrapApiHandlerWithSentry.ts @@ -11,7 +11,7 @@ import { startSpan, withIsolationScope, } from '@sentry/core'; -import { vercelWaitUntil, winterCGRequestToRequestData } from '@sentry/utils'; +import { vercelWaitUntil, winterCGRequestToRequestData } from '@sentry/core'; import { flushSafelyWithTimeout } from '../common/utils/responseEnd'; import type { EdgeRouteHandler } from './types'; @@ -32,7 +32,7 @@ export function wrapApiHandlerWithSentry( if (req instanceof Request) { isolationScope.setSDKProcessingMetadata({ - request: winterCGRequestToRequestData(req), + normalizedRequest: winterCGRequestToRequestData(req), }); currentScope.setTransactionName(`${req.method} ${parameterizedRoute}`); } else { diff --git a/packages/nextjs/src/server/distDirRewriteFramesIntegration.ts b/packages/nextjs/src/server/distDirRewriteFramesIntegration.ts index 8ac80d91d61c..dfa61ff44b98 100644 --- a/packages/nextjs/src/server/distDirRewriteFramesIntegration.ts +++ b/packages/nextjs/src/server/distDirRewriteFramesIntegration.ts @@ -1,6 +1,6 @@ import * as path from 'path'; import { defineIntegration, rewriteFramesIntegration } from '@sentry/core'; -import { escapeStringForRegex } from '@sentry/utils'; +import { escapeStringForRegex } from '@sentry/core'; export const distDirRewriteFramesIntegration = defineIntegration(({ distDirName }: { distDirName: string }) => { // nextjs always puts the build directory at the project root level, which is also where you run `next start` from, so diff --git a/packages/nextjs/src/server/index.ts b/packages/nextjs/src/server/index.ts index bdff0de922b2..c79c35932e5b 100644 --- a/packages/nextjs/src/server/index.ts +++ b/packages/nextjs/src/server/index.ts @@ -12,9 +12,9 @@ import { setCapturedScopesOnSpan, spanToJSON, } from '@sentry/core'; +import { GLOBAL_OBJ, extractTraceparentData, logger, stripUrlQueryAndFragment } from '@sentry/core'; import type { NodeClient, NodeOptions } from '@sentry/node'; import { getDefaultIntegrations, httpIntegration, init as nodeInit } from '@sentry/node'; -import { GLOBAL_OBJ, extractTraceparentData, logger, stripUrlQueryAndFragment } from '@sentry/utils'; import { context } from '@opentelemetry/api'; import { diff --git a/packages/nextjs/src/server/rewriteFramesIntegration.ts b/packages/nextjs/src/server/rewriteFramesIntegration.ts index 33bc7d90cb99..0c8af92fb958 100644 --- a/packages/nextjs/src/server/rewriteFramesIntegration.ts +++ b/packages/nextjs/src/server/rewriteFramesIntegration.ts @@ -1,7 +1,7 @@ import * as path from 'path'; import { defineIntegration, rewriteFramesIntegration as originalRewriteFramesIntegration } from '@sentry/core'; +import { escapeStringForRegex } from '@sentry/core'; import type { IntegrationFn, StackFrame } from '@sentry/types'; -import { escapeStringForRegex } from '@sentry/utils'; const globalWithInjectedValues = global as typeof global & { _sentryRewriteFramesDistDir?: string; diff --git a/packages/nextjs/test/clientSdk.test.ts b/packages/nextjs/test/clientSdk.test.ts index f136b29e6887..eafe07547ffb 100644 --- a/packages/nextjs/test/clientSdk.test.ts +++ b/packages/nextjs/test/clientSdk.test.ts @@ -1,8 +1,8 @@ import { getGlobalScope, getIsolationScope } from '@sentry/core'; +import { logger } from '@sentry/core'; import * as SentryReact from '@sentry/react'; import { WINDOW, getClient, getCurrentScope } from '@sentry/react'; import type { Integration } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { JSDOM } from 'jsdom'; import { breadcrumbsIntegration, browserTracingIntegration, init } from '../src/client'; diff --git a/packages/nextjs/test/serverSdk.test.ts b/packages/nextjs/test/serverSdk.test.ts index fed88fe25d33..d37a1c46d015 100644 --- a/packages/nextjs/test/serverSdk.test.ts +++ b/packages/nextjs/test/serverSdk.test.ts @@ -1,7 +1,7 @@ +import { GLOBAL_OBJ } from '@sentry/core'; import { getCurrentScope } from '@sentry/node'; import * as SentryNode from '@sentry/node'; import type { Integration } from '@sentry/types'; -import { GLOBAL_OBJ } from '@sentry/utils'; import { init } from '../src/server'; diff --git a/packages/nextjs/test/types/test.ts b/packages/nextjs/test/types/test.ts index d9b5f059958c..f9f45d29f29b 100644 --- a/packages/nextjs/test/types/test.ts +++ b/packages/nextjs/test/types/test.ts @@ -1,6 +1,6 @@ import { execSync } from 'child_process'; /* eslint-disable no-console */ -import { parseSemver } from '@sentry/utils'; +import { parseSemver } from '@sentry/core'; const NODE_VERSION = parseSemver(process.versions.node); diff --git a/packages/node/package.json b/packages/node/package.json index 8d0eba8888a8..6b6aee9f8ed3 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/node", - "version": "8.38.0", + "version": "8.39.0", "description": "Sentry 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", @@ -97,10 +97,9 @@ "@opentelemetry/sdk-trace-base": "^1.26.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@prisma/instrumentation": "5.19.1", - "@sentry/core": "8.38.0", - "@sentry/opentelemetry": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/core": "8.39.0", + "@sentry/opentelemetry": "8.39.0", + "@sentry/types": "8.39.0", "import-in-the-middle": "^1.11.2" }, "devDependencies": { diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 92ef7e6be7f7..2df1e48767ce 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -21,6 +21,7 @@ export { mongooseIntegration } from './integrations/tracing/mongoose'; export { mysqlIntegration } from './integrations/tracing/mysql'; export { mysql2Integration } from './integrations/tracing/mysql2'; export { redisIntegration } from './integrations/tracing/redis'; +// eslint-disable-next-line deprecation/deprecation export { nestIntegration, setupNestErrorHandler } from './integrations/tracing/nest/nest'; export { postgresIntegration } from './integrations/tracing/postgres'; export { prismaIntegration } from './integrations/tracing/prisma'; @@ -56,7 +57,7 @@ export { cron } from './cron'; export type { NodeOptions } from './types'; -export { addRequestDataToEvent, DEFAULT_USER_INCLUDES, extractRequestData } from '@sentry/utils'; +export { addRequestDataToEvent, DEFAULT_USER_INCLUDES, extractRequestData } from '@sentry/core'; export { addOpenTelemetryInstrumentation, diff --git a/packages/node/src/integrations/anr/index.ts b/packages/node/src/integrations/anr/index.ts index c5f5b28e0888..1fa2218d5879 100644 --- a/packages/node/src/integrations/anr/index.ts +++ b/packages/node/src/integrations/anr/index.ts @@ -1,8 +1,8 @@ import * as diagnosticsChannel from 'node:diagnostics_channel'; import { Worker } from 'node:worker_threads'; import { defineIntegration, getCurrentScope, getGlobalScope, getIsolationScope, mergeScopeData } from '@sentry/core'; +import { GLOBAL_OBJ, getFilenameToDebugIdMap, logger } from '@sentry/core'; import type { Contexts, Event, EventHint, Integration, IntegrationFn, ScopeData } from '@sentry/types'; -import { GLOBAL_OBJ, getFilenameToDebugIdMap, logger } from '@sentry/utils'; import { NODE_VERSION } from '../../nodeVersion'; import type { NodeClient } from '../../sdk/client'; import type { AnrIntegrationOptions, WorkerStartData } from './common'; diff --git a/packages/node/src/integrations/anr/worker.ts b/packages/node/src/integrations/anr/worker.ts index 8e20fbeeb39a..bada36db274e 100644 --- a/packages/node/src/integrations/anr/worker.ts +++ b/packages/node/src/integrations/anr/worker.ts @@ -8,14 +8,14 @@ import { makeSession, updateSession, } from '@sentry/core'; -import type { DebugImage, Event, ScopeData, Session, StackFrame } from '@sentry/types'; import { callFrameToStackFrame, normalizeUrlToBase, stripSentryFramesAndReverse, uuid4, watchdogTimer, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { DebugImage, Event, ScopeData, Session, StackFrame } from '@sentry/types'; import { makeNodeTransport } from '../../transports'; import { createGetModuleFromFilename } from '../../utils/module'; diff --git a/packages/node/src/integrations/console.ts b/packages/node/src/integrations/console.ts index 4a7cea53ec90..9413ed6da4bf 100644 --- a/packages/node/src/integrations/console.ts +++ b/packages/node/src/integrations/console.ts @@ -1,6 +1,6 @@ import * as util from 'node:util'; import { addBreadcrumb, defineIntegration, getClient } from '@sentry/core'; -import { addConsoleInstrumentationHandler, severityLevelFromString, truncate } from '@sentry/utils'; +import { addConsoleInstrumentationHandler, severityLevelFromString, truncate } from '@sentry/core'; const INTEGRATION_NAME = 'Console'; diff --git a/packages/node/src/integrations/contextlines.ts b/packages/node/src/integrations/contextlines.ts index 2a3fa3e12b53..5c77b0e845f1 100644 --- a/packages/node/src/integrations/contextlines.ts +++ b/packages/node/src/integrations/contextlines.ts @@ -1,8 +1,8 @@ import { createReadStream } from 'node:fs'; import { createInterface } from 'node:readline'; import { defineIntegration } from '@sentry/core'; +import { LRUMap, logger, snipLine } from '@sentry/core'; import type { Event, IntegrationFn, StackFrame } from '@sentry/types'; -import { LRUMap, logger, snipLine } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; diff --git a/packages/node/src/integrations/http/SentryHttpInstrumentation.ts b/packages/node/src/integrations/http/SentryHttpInstrumentation.ts index 060d30f2d5a3..969727d1ed3d 100644 --- a/packages/node/src/integrations/http/SentryHttpInstrumentation.ts +++ b/packages/node/src/integrations/http/SentryHttpInstrumentation.ts @@ -6,14 +6,16 @@ import type { InstrumentationConfig } from '@opentelemetry/instrumentation'; import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; import { getRequestInfo } from '@opentelemetry/instrumentation-http'; import { addBreadcrumb, getClient, getIsolationScope, withIsolationScope } from '@sentry/core'; -import type { PolymorphicRequest, RequestEventData, SanitizedRequestData, Scope } from '@sentry/types'; import { + extractQueryParamsFromUrl, getBreadcrumbLogLevelFromHttpStatusCode, getSanitizedUrlString, + headersToDict, logger, parseUrl, stripUrlQueryAndFragment, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { PolymorphicRequest, RequestEventData, SanitizedRequestData, Scope } from '@sentry/types'; import { DEBUG_BUILD } from '../../debug-build'; import type { NodeClient } from '../../sdk/client'; import { getRequestUrl } from '../../utils/getRequestUrl'; @@ -145,7 +147,7 @@ export class SentryHttpInstrumentation extends InstrumentationBase): Record { - const headers: Record = Object.create(null); - - try { - Object.entries(reqHeaders).forEach(([key, value]) => { - if (typeof value === 'string') { - headers[key] = value; - } - }); - } catch (e) { - DEBUG_BUILD && - logger.warn('Sentry failed extracting headers from a request object. If you see this, please file an issue.'); - } - - return headers; -} diff --git a/packages/node/src/integrations/local-variables/local-variables-async.ts b/packages/node/src/integrations/local-variables/local-variables-async.ts index d46fa224019f..19a67db88057 100644 --- a/packages/node/src/integrations/local-variables/local-variables-async.ts +++ b/packages/node/src/integrations/local-variables/local-variables-async.ts @@ -1,7 +1,7 @@ import { Worker } from 'node:worker_threads'; import { defineIntegration } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { Event, EventHint, Exception, IntegrationFn } from '@sentry/types'; -import { logger } from '@sentry/utils'; import type { NodeClient } from '../../sdk/client'; import type { FrameVariables, LocalVariablesIntegrationOptions, LocalVariablesWorkerArgs } from './common'; diff --git a/packages/node/src/integrations/local-variables/local-variables-sync.ts b/packages/node/src/integrations/local-variables/local-variables-sync.ts index d3203614330f..454de1d9d356 100644 --- a/packages/node/src/integrations/local-variables/local-variables-sync.ts +++ b/packages/node/src/integrations/local-variables/local-variables-sync.ts @@ -1,7 +1,7 @@ import type { Debugger, InspectorNotification, Runtime, Session } from 'node:inspector'; import { defineIntegration, getClient } from '@sentry/core'; +import { LRUMap, logger } from '@sentry/core'; import type { Event, Exception, IntegrationFn, StackFrame, StackParser } from '@sentry/types'; -import { LRUMap, logger } from '@sentry/utils'; import { NODE_MAJOR } from '../../nodeVersion'; import type { NodeClient } from '../../sdk/client'; diff --git a/packages/node/src/integrations/local-variables/worker.ts b/packages/node/src/integrations/local-variables/worker.ts index 91fb5957cb01..b00c8ca3b9c7 100644 --- a/packages/node/src/integrations/local-variables/worker.ts +++ b/packages/node/src/integrations/local-variables/worker.ts @@ -1,7 +1,7 @@ import type { Debugger, InspectorNotification, Runtime } from 'node:inspector'; import { Session } from 'node:inspector/promises'; import { workerData } from 'node:worker_threads'; -import { consoleSandbox } from '@sentry/utils'; +import { consoleSandbox } from '@sentry/core'; import type { LocalVariablesWorkerArgs, PausedExceptionEvent, RateLimitIncrement, Variables } from './common'; import { LOCAL_VARIABLES_KEY } from './common'; import { createRateLimiter } from './common'; diff --git a/packages/node/src/integrations/modules.ts b/packages/node/src/integrations/modules.ts index f434319b5bae..9a48dc82464a 100644 --- a/packages/node/src/integrations/modules.ts +++ b/packages/node/src/integrations/modules.ts @@ -1,8 +1,8 @@ import { existsSync, readFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { defineIntegration } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { IntegrationFn } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { isCjs } from '../utils/commonjs'; diff --git a/packages/node/src/integrations/node-fetch.ts b/packages/node/src/integrations/node-fetch.ts index 60abee504758..d02fa53f789f 100644 --- a/packages/node/src/integrations/node-fetch.ts +++ b/packages/node/src/integrations/node-fetch.ts @@ -8,13 +8,13 @@ import { getCurrentScope, hasTracingEnabled, } from '@sentry/core'; +import { getBreadcrumbLogLevelFromHttpStatusCode, getSanitizedUrlString, parseUrl } from '@sentry/core'; import { addOpenTelemetryInstrumentation, generateSpanContextForPropagationContext, getPropagationContextFromSpan, } from '@sentry/opentelemetry'; import type { IntegrationFn, SanitizedRequestData } from '@sentry/types'; -import { getBreadcrumbLogLevelFromHttpStatusCode, getSanitizedUrlString, parseUrl } from '@sentry/utils'; interface NodeFetchOptions { /** diff --git a/packages/node/src/integrations/onuncaughtexception.ts b/packages/node/src/integrations/onuncaughtexception.ts index 637174f12351..d0e728119fc2 100644 --- a/packages/node/src/integrations/onuncaughtexception.ts +++ b/packages/node/src/integrations/onuncaughtexception.ts @@ -1,6 +1,6 @@ import { captureException, defineIntegration } from '@sentry/core'; import { getClient } from '@sentry/core'; -import { logger } from '@sentry/utils'; +import { logger } from '@sentry/core'; import { DEBUG_BUILD } from '../debug-build'; import type { NodeClient } from '../sdk/client'; diff --git a/packages/node/src/integrations/onunhandledrejection.ts b/packages/node/src/integrations/onunhandledrejection.ts index e1bc0b4145cf..a30881d89d4b 100644 --- a/packages/node/src/integrations/onunhandledrejection.ts +++ b/packages/node/src/integrations/onunhandledrejection.ts @@ -1,6 +1,6 @@ import { captureException, defineIntegration, getClient } from '@sentry/core'; +import { consoleSandbox } from '@sentry/core'; import type { Client, IntegrationFn } from '@sentry/types'; -import { consoleSandbox } from '@sentry/utils'; import { logAndExitProcess } from '../utils/errorhandling'; type UnhandledRejectionMode = 'none' | 'warn' | 'strict'; diff --git a/packages/node/src/integrations/spotlight.ts b/packages/node/src/integrations/spotlight.ts index 1021827312be..20828dab4eb6 100644 --- a/packages/node/src/integrations/spotlight.ts +++ b/packages/node/src/integrations/spotlight.ts @@ -1,7 +1,7 @@ import * as http from 'node:http'; import { defineIntegration } from '@sentry/core'; +import { logger, serializeEnvelope } from '@sentry/core'; import type { Client, Envelope, IntegrationFn } from '@sentry/types'; -import { logger, serializeEnvelope } from '@sentry/utils'; type SpotlightConnectionOptions = { /** diff --git a/packages/node/src/integrations/tracing/express.ts b/packages/node/src/integrations/tracing/express.ts index 0b4b6aa35c3e..3db47f551ccb 100644 --- a/packages/node/src/integrations/tracing/express.ts +++ b/packages/node/src/integrations/tracing/express.ts @@ -2,8 +2,8 @@ import type * as http from 'node:http'; import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, defineIntegration, getDefaultIsolationScope, spanToJSON } from '@sentry/core'; import { captureException, getClient, getIsolationScope } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { IntegrationFn } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../../debug-build'; import { generateInstrumentOnce } from '../../otel/instrument'; import type { NodeClient } from '../../sdk/client'; diff --git a/packages/node/src/integrations/tracing/hapi/index.ts b/packages/node/src/integrations/tracing/hapi/index.ts index 9d1015704d60..113c37bfc90b 100644 --- a/packages/node/src/integrations/tracing/hapi/index.ts +++ b/packages/node/src/integrations/tracing/hapi/index.ts @@ -10,8 +10,8 @@ import { getIsolationScope, spanToJSON, } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { IntegrationFn, Span } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../../../debug-build'; import { generateInstrumentOnce } from '../../../otel/instrument'; import { ensureIsWrapped } from '../../../utils/ensureIsWrapped'; diff --git a/packages/node/src/integrations/tracing/index.ts b/packages/node/src/integrations/tracing/index.ts index 1a1b8835011d..c8f6348aeee0 100644 --- a/packages/node/src/integrations/tracing/index.ts +++ b/packages/node/src/integrations/tracing/index.ts @@ -38,6 +38,7 @@ export function getAutoPerformanceIntegrations(): Integration[] { // See https://github.com/prisma/prisma/issues/23410 // TODO v8: Figure out a better solution for this, maybe only disable in ESM mode? // prismaIntegration(), + // eslint-disable-next-line deprecation/deprecation nestIntegration(), hapiIntegration(), koaIntegration(), @@ -64,6 +65,7 @@ export function getOpenTelemetryInstrumentationToPreload(): (((options?: any) => instrumentKafka, instrumentKoa, instrumentLruMemoizer, + // eslint-disable-next-line deprecation/deprecation instrumentNest, instrumentMongo, instrumentMongoose, diff --git a/packages/node/src/integrations/tracing/koa.ts b/packages/node/src/integrations/tracing/koa.ts index a244c6cb56d7..26ecea2133b1 100644 --- a/packages/node/src/integrations/tracing/koa.ts +++ b/packages/node/src/integrations/tracing/koa.ts @@ -9,8 +9,8 @@ import { getIsolationScope, spanToJSON, } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { IntegrationFn, Span } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../../debug-build'; import { generateInstrumentOnce } from '../../otel/instrument'; import { ensureIsWrapped } from '../../utils/ensureIsWrapped'; diff --git a/packages/node/src/integrations/tracing/nest/helpers.ts b/packages/node/src/integrations/tracing/nest/helpers.ts index 04dab67f65b0..236a54ae2a42 100644 --- a/packages/node/src/integrations/tracing/nest/helpers.ts +++ b/packages/node/src/integrations/tracing/nest/helpers.ts @@ -1,6 +1,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, withActiveSpan } from '@sentry/core'; +import { addNonEnumerableProperty } from '@sentry/core'; import type { Span } from '@sentry/types'; -import { addNonEnumerableProperty } from '@sentry/utils'; import type { CatchTarget, InjectableTarget, NextFunction, Observable, Subscription } from './types'; const sentryPatched = 'sentryPatched'; diff --git a/packages/node/src/integrations/tracing/nest/nest.ts b/packages/node/src/integrations/tracing/nest/nest.ts index 2520367d1361..f21a3fd3eae6 100644 --- a/packages/node/src/integrations/tracing/nest/nest.ts +++ b/packages/node/src/integrations/tracing/nest/nest.ts @@ -9,8 +9,8 @@ import { getIsolationScope, spanToJSON, } from '@sentry/core'; -import type { IntegrationFn, Span } from '@sentry/types'; -import { logger } from '@sentry/utils'; +import { consoleSandbox, logger } from '@sentry/core'; +import type { Span } from '@sentry/types'; import { generateInstrumentOnce } from '../../../otel/instrument'; import { SentryNestEventInstrumentation } from './sentry-nest-event-instrumentation'; import { SentryNestInstrumentation } from './sentry-nest-instrumentation'; @@ -39,26 +39,35 @@ export const instrumentNest = Object.assign( { id: INTEGRATION_NAME }, ); -const _nestIntegration = (() => { +/** + * Integration capturing tracing data for NestJS. + * + * @deprecated The `nestIntegration` is deprecated. Instead, use the NestJS SDK directly (`@sentry/nestjs`), or use the `nestIntegration` export from `@sentry/nestjs`. + */ +export const nestIntegration = defineIntegration(() => { return { name: INTEGRATION_NAME, setupOnce() { instrumentNest(); }, }; -}) satisfies IntegrationFn; - -/** - * Nest framework integration - * - * Capture tracing data for nest. - */ -export const nestIntegration = defineIntegration(_nestIntegration); +}); /** * Setup an error handler for Nest. + * + * @deprecated `setupNestErrorHandler` is deprecated. + * Instead use the `@sentry/nestjs` package, which has more functional APIs for capturing errors. + * See the [`@sentry/nestjs` Setup Guide](https://docs.sentry.io/platforms/javascript/guides/nestjs/) for how to set up the Sentry NestJS SDK. */ export function setupNestErrorHandler(app: MinimalNestJsApp, baseFilter: NestJsErrorFilter): void { + consoleSandbox(() => { + // eslint-disable-next-line no-console + console.warn( + '[Sentry] Warning: You used the `setupNestErrorHandler()` method to set up Sentry error monitoring. This function is deprecated and will be removed in the next major version. Instead, it is recommended to use the `@sentry/nestjs` package. To set up the NestJS SDK see: https://docs.sentry.io/platforms/javascript/guides/nestjs/', + ); + }); + // Sadly, NestInstrumentation has no requestHook, so we need to add the attributes here // We register this hook in this method, because if we register it in the integration `setup`, // it would always run even for users that are not even using Nest.js diff --git a/packages/node/src/integrations/tracing/nest/sentry-nest-event-instrumentation.ts b/packages/node/src/integrations/tracing/nest/sentry-nest-event-instrumentation.ts index 16333c7fc6c3..59dac31b8218 100644 --- a/packages/node/src/integrations/tracing/nest/sentry-nest-event-instrumentation.ts +++ b/packages/node/src/integrations/tracing/nest/sentry-nest-event-instrumentation.ts @@ -6,7 +6,7 @@ import { InstrumentationNodeModuleFile, } from '@opentelemetry/instrumentation'; import { captureException, startSpan } from '@sentry/core'; -import { SDK_VERSION } from '@sentry/utils'; +import { SDK_VERSION } from '@sentry/core'; import { getEventSpanOptions } from './helpers'; import type { OnEventTarget } from './types'; diff --git a/packages/node/src/integrations/tracing/nest/sentry-nest-instrumentation.ts b/packages/node/src/integrations/tracing/nest/sentry-nest-instrumentation.ts index 2d59d97d87fd..66449995ac1e 100644 --- a/packages/node/src/integrations/tracing/nest/sentry-nest-instrumentation.ts +++ b/packages/node/src/integrations/tracing/nest/sentry-nest-instrumentation.ts @@ -6,8 +6,8 @@ import { InstrumentationNodeModuleFile, } from '@opentelemetry/instrumentation'; import { getActiveSpan, startInactiveSpan, startSpan, startSpanManual, withActiveSpan } from '@sentry/core'; +import { SDK_VERSION, addNonEnumerableProperty, isThenable } from '@sentry/core'; import type { Span } from '@sentry/types'; -import { SDK_VERSION, addNonEnumerableProperty, isThenable } from '@sentry/utils'; import { getMiddlewareSpanOptions, getNextProxy, instrumentObservable, isPatched } from './helpers'; import type { CallHandler, CatchTarget, InjectableTarget, MinimalNestJsExecutionContext, Observable } from './types'; diff --git a/packages/node/src/integrations/tracing/redis.ts b/packages/node/src/integrations/tracing/redis.ts index cf30d8f953f3..7888aaf66be3 100644 --- a/packages/node/src/integrations/tracing/redis.ts +++ b/packages/node/src/integrations/tracing/redis.ts @@ -11,8 +11,8 @@ import { defineIntegration, spanToJSON, } from '@sentry/core'; +import { truncate } from '@sentry/core'; import type { IntegrationFn } from '@sentry/types'; -import { truncate } from '@sentry/utils'; import { generateInstrumentOnce } from '../../otel/instrument'; import { GET_COMMANDS, diff --git a/packages/node/src/nodeVersion.ts b/packages/node/src/nodeVersion.ts index 1f07883b771b..1ec745743620 100644 --- a/packages/node/src/nodeVersion.ts +++ b/packages/node/src/nodeVersion.ts @@ -1,4 +1,4 @@ -import { parseSemver } from '@sentry/utils'; +import { parseSemver } from '@sentry/core'; export const NODE_VERSION = parseSemver(process.versions.node) as { major: number; minor: number; patch: number }; export const NODE_MAJOR = NODE_VERSION.major; diff --git a/packages/node/src/proxy/index.ts b/packages/node/src/proxy/index.ts index b5e289729607..0b6f5b2c5196 100644 --- a/packages/node/src/proxy/index.ts +++ b/packages/node/src/proxy/index.ts @@ -32,7 +32,7 @@ import type * as http from 'node:http'; import type { OutgoingHttpHeaders } from 'node:http'; import * as net from 'node:net'; import * as tls from 'node:tls'; -import { logger } from '@sentry/utils'; +import { logger } from '@sentry/core'; import { Agent } from './base'; import type { AgentConnectOpts } from './base'; import { parseProxyResponse } from './parse-proxy-response'; diff --git a/packages/node/src/proxy/parse-proxy-response.ts b/packages/node/src/proxy/parse-proxy-response.ts index f1878a4e377b..a2c05b1dbe2c 100644 --- a/packages/node/src/proxy/parse-proxy-response.ts +++ b/packages/node/src/proxy/parse-proxy-response.ts @@ -30,7 +30,7 @@ /* eslint-disable jsdoc/require-jsdoc */ import type { IncomingHttpHeaders } from 'node:http'; import type { Readable } from 'node:stream'; -import { logger } from '@sentry/utils'; +import { logger } from '@sentry/core'; function debug(...args: unknown[]): void { logger.log('[https-proxy-agent:parse-proxy-response]', ...args); diff --git a/packages/node/src/sdk/api.ts b/packages/node/src/sdk/api.ts index d5c28a258fdc..e7b09a18b4a4 100644 --- a/packages/node/src/sdk/api.ts +++ b/packages/node/src/sdk/api.ts @@ -1,7 +1,7 @@ // PUBLIC APIS +import { GLOBAL_OBJ, createStackParser, nodeStackLineParser } from '@sentry/core'; import type { StackParser } from '@sentry/types'; -import { GLOBAL_OBJ, createStackParser, nodeStackLineParser } from '@sentry/utils'; import { createGetModuleFromFilename } from '../utils/module'; /** diff --git a/packages/node/src/sdk/client.ts b/packages/node/src/sdk/client.ts index 877b363d3b2a..8179d40e2819 100644 --- a/packages/node/src/sdk/client.ts +++ b/packages/node/src/sdk/client.ts @@ -4,7 +4,7 @@ import { trace } from '@opentelemetry/api'; import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import type { ServerRuntimeClientOptions } from '@sentry/core'; import { SDK_VERSION, ServerRuntimeClient, applySdkMetadata } from '@sentry/core'; -import { logger } from '@sentry/utils'; +import { logger } from '@sentry/core'; import { isMainThread, threadId } from 'worker_threads'; import { DEBUG_BUILD } from '../debug-build'; import type { NodeClientOptions } from '../types'; diff --git a/packages/node/src/sdk/index.ts b/packages/node/src/sdk/index.ts index edebeea384db..2a64fb0d904f 100644 --- a/packages/node/src/sdk/index.ts +++ b/packages/node/src/sdk/index.ts @@ -11,6 +11,13 @@ import { requestDataIntegration, startSession, } from '@sentry/core'; +import { + consoleSandbox, + dropUndefinedKeys, + logger, + propagationContextFromHeaders, + stackParserFromStackParserOptions, +} from '@sentry/core'; import { enhanceDscWithOpenTelemetryRootSpanName, openTelemetrySetupCheck, @@ -18,13 +25,6 @@ import { setupEventContextTrace, } from '@sentry/opentelemetry'; import type { Integration, Options } from '@sentry/types'; -import { - consoleSandbox, - dropUndefinedKeys, - logger, - propagationContextFromHeaders, - stackParserFromStackParserOptions, -} from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; import { consoleIntegration } from '../integrations/console'; import { nodeContextIntegration } from '../integrations/context'; diff --git a/packages/node/src/sdk/initOtel.ts b/packages/node/src/sdk/initOtel.ts index c5ec5367f68c..fd37e5ef477f 100644 --- a/packages/node/src/sdk/initOtel.ts +++ b/packages/node/src/sdk/initOtel.ts @@ -8,8 +8,8 @@ import { SEMRESATTRS_SERVICE_NAMESPACE, } from '@opentelemetry/semantic-conventions'; import { SDK_VERSION } from '@sentry/core'; +import { GLOBAL_OBJ, consoleSandbox, logger } from '@sentry/core'; import { SentryPropagator, SentrySampler, SentrySpanProcessor } from '@sentry/opentelemetry'; -import { GLOBAL_OBJ, consoleSandbox, logger } from '@sentry/utils'; import { createAddHookMessageChannel } from 'import-in-the-middle'; import { getOpenTelemetryInstrumentationToPreload } from '../integrations/tracing'; diff --git a/packages/node/src/transports/http.ts b/packages/node/src/transports/http.ts index c4f13c89ee1b..ce3b34dbc909 100644 --- a/packages/node/src/transports/http.ts +++ b/packages/node/src/transports/http.ts @@ -3,6 +3,7 @@ import * as https from 'node:https'; import { Readable } from 'node:stream'; import { createGzip } from 'node:zlib'; import { createTransport, suppressTracing } from '@sentry/core'; +import { consoleSandbox } from '@sentry/core'; import type { BaseTransportOptions, Transport, @@ -10,7 +11,6 @@ import type { TransportRequest, TransportRequestExecutor, } from '@sentry/types'; -import { consoleSandbox } from '@sentry/utils'; import { HttpsProxyAgent } from '../proxy'; import type { HTTPModule } from './http-module'; diff --git a/packages/node/src/utils/ensureIsWrapped.ts b/packages/node/src/utils/ensureIsWrapped.ts index a11c60f949d5..26bf8799fb42 100644 --- a/packages/node/src/utils/ensureIsWrapped.ts +++ b/packages/node/src/utils/ensureIsWrapped.ts @@ -1,6 +1,6 @@ import { isWrapped } from '@opentelemetry/core'; import { getClient, getGlobalScope, hasTracingEnabled, isEnabled } from '@sentry/core'; -import { consoleSandbox } from '@sentry/utils'; +import { consoleSandbox } from '@sentry/core'; import type { NodeClient } from '../sdk/client'; import { isCjs } from './commonjs'; import { createMissingInstrumentationContext } from './createMissingInstrumentationContext'; diff --git a/packages/node/src/utils/errorhandling.ts b/packages/node/src/utils/errorhandling.ts index 3e08ca5d2ff4..a6a255c53fd7 100644 --- a/packages/node/src/utils/errorhandling.ts +++ b/packages/node/src/utils/errorhandling.ts @@ -1,5 +1,5 @@ import { getClient } from '@sentry/core'; -import { consoleSandbox, logger } from '@sentry/utils'; +import { consoleSandbox, logger } from '@sentry/core'; import { DEBUG_BUILD } from '../debug-build'; import type { NodeClient } from '../sdk/client'; diff --git a/packages/node/src/utils/module.ts b/packages/node/src/utils/module.ts index aad8195d1b1f..b5470269b921 100644 --- a/packages/node/src/utils/module.ts +++ b/packages/node/src/utils/module.ts @@ -1,5 +1,5 @@ import { posix, sep } from 'node:path'; -import { dirname } from '@sentry/utils'; +import { dirname } from '@sentry/core'; /** normalizes Windows paths */ function normalizeWindowsPath(path: string): string { diff --git a/packages/node/src/utils/redisCache.ts b/packages/node/src/utils/redisCache.ts index 7c9cff30f9d9..cb411f304cf7 100644 --- a/packages/node/src/utils/redisCache.ts +++ b/packages/node/src/utils/redisCache.ts @@ -1,5 +1,5 @@ import type { CommandArgs as IORedisCommandArgs } from '@opentelemetry/instrumentation-ioredis'; -import { flatten } from '@sentry/utils'; +import { flatten } from '@sentry/core'; const SINGLE_ARG_COMMANDS = ['get', 'set', 'setex']; diff --git a/packages/node/test/helpers/conditional.ts b/packages/node/test/helpers/conditional.ts index 7c6ecab77cd7..01e64d8804df 100644 --- a/packages/node/test/helpers/conditional.ts +++ b/packages/node/test/helpers/conditional.ts @@ -1,4 +1,4 @@ -import { parseSemver } from '@sentry/utils'; +import { parseSemver } from '@sentry/core'; const NODE_VERSION = parseSemver(process.versions.node).major; diff --git a/packages/node/test/helpers/getDefaultNodeClientOptions.ts b/packages/node/test/helpers/getDefaultNodeClientOptions.ts index ec42177a1335..a8479150c18a 100644 --- a/packages/node/test/helpers/getDefaultNodeClientOptions.ts +++ b/packages/node/test/helpers/getDefaultNodeClientOptions.ts @@ -1,5 +1,5 @@ import { createTransport } from '@sentry/core'; -import { resolvedSyncPromise } from '@sentry/utils'; +import { resolvedSyncPromise } from '@sentry/core'; import type { NodeClientOptions } from '../../src/types'; diff --git a/packages/node/test/integration/console.test.ts b/packages/node/test/integration/console.test.ts index d869959ebdfc..9d4d5a415ee5 100644 --- a/packages/node/test/integration/console.test.ts +++ b/packages/node/test/integration/console.test.ts @@ -1,5 +1,5 @@ import * as SentryCore from '@sentry/core'; -import { resetInstrumentationHandlers } from '@sentry/utils'; +import { resetInstrumentationHandlers } from '@sentry/core'; import { getClient } from '../../src'; import type { NodeClient } from '../../src'; import { consoleIntegration } from '../../src/integrations/console'; diff --git a/packages/node/test/integration/transactions.test.ts b/packages/node/test/integration/transactions.test.ts index 5c77b81e6994..e13d239821d3 100644 --- a/packages/node/test/integration/transactions.test.ts +++ b/packages/node/test/integration/transactions.test.ts @@ -1,9 +1,9 @@ import { TraceFlags, context, trace } from '@opentelemetry/api'; import type { SpanProcessor } from '@opentelemetry/sdk-trace-base'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core'; +import { logger } from '@sentry/core'; import { SentrySpanProcessor } from '@sentry/opentelemetry'; import type { TransactionEvent } from '@sentry/types'; -import { logger } from '@sentry/utils'; import * as Sentry from '../../src'; import { cleanupOtel, getProvider, mockSdkInit } from '../helpers/mockSdkInit'; diff --git a/packages/node/test/integrations/contextlines.test.ts b/packages/node/test/integrations/contextlines.test.ts index 56af4a3e58e8..4c609b22a3f4 100644 --- a/packages/node/test/integrations/contextlines.test.ts +++ b/packages/node/test/integrations/contextlines.test.ts @@ -1,6 +1,6 @@ import * as fs from 'node:fs'; +import { parseStackFrames } from '@sentry/core'; import type { StackFrame } from '@sentry/types'; -import { parseStackFrames } from '@sentry/utils'; import { MAX_CONTEXTLINES_COLNO, diff --git a/packages/node/test/integrations/spotlight.test.ts b/packages/node/test/integrations/spotlight.test.ts index 6b888c22edcd..c78c81fdba14 100644 --- a/packages/node/test/integrations/spotlight.test.ts +++ b/packages/node/test/integrations/spotlight.test.ts @@ -1,6 +1,6 @@ import * as http from 'http'; +import { createEnvelope, logger } from '@sentry/core'; import type { Envelope, EventEnvelope } from '@sentry/types'; -import { createEnvelope, logger } from '@sentry/utils'; import { spotlightIntegration } from '../../src/integrations/spotlight'; import { NodeClient } from '../../src/sdk/client'; diff --git a/packages/node/test/sdk/init.test.ts b/packages/node/test/sdk/init.test.ts index 10a7a56ae8bd..3444b6e43582 100644 --- a/packages/node/test/sdk/init.test.ts +++ b/packages/node/test/sdk/init.test.ts @@ -1,5 +1,5 @@ +import { logger } from '@sentry/core'; import type { Integration } from '@sentry/types'; -import { logger } from '@sentry/utils'; import * as SentryOpentelemetry from '@sentry/opentelemetry'; import { getClient, getIsolationScope } from '../../src/'; diff --git a/packages/node/test/sdk/preload.test.ts b/packages/node/test/sdk/preload.test.ts index fedba139b0f6..70dffe039a82 100644 --- a/packages/node/test/sdk/preload.test.ts +++ b/packages/node/test/sdk/preload.test.ts @@ -1,4 +1,4 @@ -import { logger } from '@sentry/utils'; +import { logger } from '@sentry/core'; describe('preload', () => { afterEach(() => { diff --git a/packages/node/test/transports/http.test.ts b/packages/node/test/transports/http.test.ts index e945c086959a..445db5f14c95 100644 --- a/packages/node/test/transports/http.test.ts +++ b/packages/node/test/transports/http.test.ts @@ -1,8 +1,8 @@ import * as http from 'http'; import { createGunzip } from 'zlib'; import { createTransport } from '@sentry/core'; +import { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, serializeEnvelope } from '@sentry/core'; import type { EventEnvelope, EventItem } from '@sentry/types'; -import { addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, serializeEnvelope } from '@sentry/utils'; import { makeNodeTransport } from '../../src/transports'; diff --git a/packages/node/test/transports/https.test.ts b/packages/node/test/transports/https.test.ts index 8b0d3312ba54..f907086698e1 100644 --- a/packages/node/test/transports/https.test.ts +++ b/packages/node/test/transports/https.test.ts @@ -1,8 +1,8 @@ import * as http from 'http'; import * as https from 'https'; import { createTransport } from '@sentry/core'; +import { createEnvelope, serializeEnvelope } from '@sentry/core'; import type { EventEnvelope, EventItem } from '@sentry/types'; -import { createEnvelope, serializeEnvelope } from '@sentry/utils'; import { makeNodeTransport } from '../../src/transports'; import type { HTTPModule, HTTPModuleRequestIncomingMessage } from '../../src/transports/http-module'; diff --git a/packages/nuxt/package.json b/packages/nuxt/package.json index 3688461b1efd..2d15fb2500e6 100644 --- a/packages/nuxt/package.json +++ b/packages/nuxt/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/nuxt", - "version": "8.38.0", + "version": "8.39.0", "description": "Official Sentry SDK for Nuxt (EXPERIMENTAL)", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/nuxt", @@ -43,15 +43,14 @@ }, "dependencies": { "@nuxt/kit": "^3.13.2", - "@sentry/browser": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/opentelemetry": "8.38.0", + "@sentry/browser": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/opentelemetry": "8.39.0", "@sentry/rollup-plugin": "2.22.6", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/types": "8.39.0", "@sentry/vite-plugin": "2.22.6", - "@sentry/vue": "8.38.0" + "@sentry/vue": "8.39.0" }, "devDependencies": { "@nuxt/module-builder": "^0.8.4", diff --git a/packages/nuxt/src/client/piniaIntegration.ts b/packages/nuxt/src/client/piniaIntegration.ts index 28b797fb9fa6..e5e838267363 100644 --- a/packages/nuxt/src/client/piniaIntegration.ts +++ b/packages/nuxt/src/client/piniaIntegration.ts @@ -1,7 +1,7 @@ import { defineIntegration } from '@sentry/core'; import type { IntegrationFn } from '@sentry/types'; -import { consoleSandbox } from '@sentry/utils'; +import { consoleSandbox } from '@sentry/core'; import { createSentryPiniaPlugin } from '@sentry/vue'; const INTEGRATION_NAME = 'Pinia'; diff --git a/packages/nuxt/src/module.ts b/packages/nuxt/src/module.ts index 426ab2f41edf..5a684998da5a 100644 --- a/packages/nuxt/src/module.ts +++ b/packages/nuxt/src/module.ts @@ -1,6 +1,6 @@ import * as path from 'path'; import { addPlugin, addPluginTemplate, addServerPlugin, createResolver, defineNuxtModule } from '@nuxt/kit'; -import { consoleSandbox } from '@sentry/utils'; +import { consoleSandbox } from '@sentry/core'; import type { SentryNuxtModuleOptions } from './common/types'; import { addDynamicImportEntryFileWrapper, addServerConfigToBuild } from './vite/addServerConfig'; import { setupSourceMaps } from './vite/sourceMaps'; diff --git a/packages/nuxt/src/runtime/utils.ts b/packages/nuxt/src/runtime/utils.ts index 7b56a258f708..54819fd9bd77 100644 --- a/packages/nuxt/src/runtime/utils.ts +++ b/packages/nuxt/src/runtime/utils.ts @@ -1,6 +1,6 @@ import { captureException, getClient, getTraceMetaTags } from '@sentry/core'; +import { dropUndefinedKeys } from '@sentry/core'; import type { ClientOptions, Context } from '@sentry/types'; -import { dropUndefinedKeys } from '@sentry/utils'; import type { VueOptions } from '@sentry/vue/src/types'; import type { CapturedErrorContext } from 'nitropack'; import type { NuxtRenderHTMLContext } from 'nuxt/app'; diff --git a/packages/nuxt/src/server/sdk.ts b/packages/nuxt/src/server/sdk.ts index 59832bbb2a39..81ab93e6ccb2 100644 --- a/packages/nuxt/src/server/sdk.ts +++ b/packages/nuxt/src/server/sdk.ts @@ -1,4 +1,5 @@ import { applySdkMetadata, flush, getGlobalScope } from '@sentry/core'; +import { logger, vercelWaitUntil } from '@sentry/core'; import { type NodeOptions, getDefaultIntegrations as getDefaultNodeIntegrations, @@ -6,7 +7,6 @@ import { init as initNode, } from '@sentry/node'; import type { Client, EventProcessor, Integration } from '@sentry/types'; -import { logger, vercelWaitUntil } from '@sentry/utils'; import { DEBUG_BUILD } from '../common/debug-build'; import type { SentryNuxtServerOptions } from '../common/types'; diff --git a/packages/nuxt/src/vite/addServerConfig.ts b/packages/nuxt/src/vite/addServerConfig.ts index 824b46781e0d..5ac673b3dd20 100644 --- a/packages/nuxt/src/vite/addServerConfig.ts +++ b/packages/nuxt/src/vite/addServerConfig.ts @@ -1,7 +1,7 @@ import * as fs from 'fs'; import { createResolver } from '@nuxt/kit'; import type { Nuxt } from '@nuxt/schema'; -import { consoleSandbox } from '@sentry/utils'; +import { consoleSandbox } from '@sentry/core'; import type { Nitro } from 'nitropack'; import type { InputPluginOption } from 'rollup'; import type { SentryNuxtModuleOptions } from '../common/types'; diff --git a/packages/nuxt/src/vite/sourceMaps.ts b/packages/nuxt/src/vite/sourceMaps.ts index 8fd6f0a381fd..beea7e18d8f2 100644 --- a/packages/nuxt/src/vite/sourceMaps.ts +++ b/packages/nuxt/src/vite/sourceMaps.ts @@ -1,6 +1,6 @@ import type { Nuxt } from '@nuxt/schema'; +import { consoleSandbox } from '@sentry/core'; import { type SentryRollupPluginOptions, sentryRollupPlugin } from '@sentry/rollup-plugin'; -import { consoleSandbox } from '@sentry/utils'; import { type SentryVitePluginOptions, sentryVitePlugin } from '@sentry/vite-plugin'; import type { NitroConfig } from 'nitropack'; import type { OutputOptions } from 'rollup'; diff --git a/packages/nuxt/src/vite/utils.ts b/packages/nuxt/src/vite/utils.ts index 8fffc8fe06c9..d18fd1dcc484 100644 --- a/packages/nuxt/src/vite/utils.ts +++ b/packages/nuxt/src/vite/utils.ts @@ -1,6 +1,6 @@ import * as fs from 'fs'; import * as path from 'path'; -import { consoleSandbox, flatten } from '@sentry/utils'; +import { consoleSandbox, flatten } from '@sentry/core'; /** * Find the default SDK init file for the given type (client or server). diff --git a/packages/nuxt/test/runtime/utils.test.ts b/packages/nuxt/test/runtime/utils.test.ts index a6afc03b05da..9c3dd568d67a 100644 --- a/packages/nuxt/test/runtime/utils.test.ts +++ b/packages/nuxt/test/runtime/utils.test.ts @@ -81,10 +81,16 @@ describe('extractErrorContext', () => { }); describe('reportNuxtError', () => { - vi.mock('@sentry/core', () => ({ - captureException: vi.fn(), - getClient: vi.fn(), - })); + vi.mock('@sentry/core', async importOriginal => { + const actual = await importOriginal(); + return { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + ...actual, + captureException: vi.fn(), + getClient: vi.fn(), + }; + }); const mockError = new Error('Test error'); diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index 0d563404513f..dbaa4d9f2794 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/opentelemetry", - "version": "8.38.0", + "version": "8.39.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", @@ -39,9 +39,8 @@ "access": "public" }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", diff --git a/packages/opentelemetry/src/propagator.ts b/packages/opentelemetry/src/propagator.ts index f4fcb1fa91e9..054a348fd7b5 100644 --- a/packages/opentelemetry/src/propagator.ts +++ b/packages/opentelemetry/src/propagator.ts @@ -14,7 +14,6 @@ import { getDynamicSamplingContextFromSpan, getIsolationScope, } from '@sentry/core'; -import type { DynamicSamplingContext, Options, PropagationContext } from '@sentry/types'; import { LRUMap, SENTRY_BAGGAGE_KEY_PREFIX, @@ -24,7 +23,8 @@ import { parseBaggageHeader, propagationContextFromHeaders, stringMatchesSomePattern, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { DynamicSamplingContext, Options, PropagationContext } from '@sentry/types'; import { SENTRY_BAGGAGE_HEADER, diff --git a/packages/opentelemetry/src/sampler.ts b/packages/opentelemetry/src/sampler.ts index 3438b4b6bbca..b5cfc2ee5514 100644 --- a/packages/opentelemetry/src/sampler.ts +++ b/packages/opentelemetry/src/sampler.ts @@ -10,8 +10,8 @@ import { hasTracingEnabled, sampleSpan, } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { Client, SpanAttributes } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING, SENTRY_TRACE_STATE_URL } from './constants'; import { diff --git a/packages/opentelemetry/src/setupEventContextTrace.ts b/packages/opentelemetry/src/setupEventContextTrace.ts index f2e1454a02df..051b1cba1364 100644 --- a/packages/opentelemetry/src/setupEventContextTrace.ts +++ b/packages/opentelemetry/src/setupEventContextTrace.ts @@ -1,6 +1,6 @@ import { getDynamicSamplingContextFromSpan, getRootSpan } from '@sentry/core'; +import { dropUndefinedKeys } from '@sentry/core'; import type { Client } from '@sentry/types'; -import { dropUndefinedKeys } from '@sentry/utils'; import { SENTRY_TRACE_STATE_PARENT_SPAN_ID } from './constants'; import { getActiveSpan } from './utils/getActiveSpan'; import { spanHasParentId } from './utils/spanTypes'; diff --git a/packages/opentelemetry/src/spanExporter.ts b/packages/opentelemetry/src/spanExporter.ts index a9fa207ade6b..11d822f66ec1 100644 --- a/packages/opentelemetry/src/spanExporter.ts +++ b/packages/opentelemetry/src/spanExporter.ts @@ -17,8 +17,8 @@ import { getStatusMessage, spanTimeInputToSeconds, } from '@sentry/core'; +import { dropUndefinedKeys, logger } from '@sentry/core'; import type { SpanJSON, SpanOrigin, TraceContext, TransactionEvent, TransactionSource } from '@sentry/types'; -import { dropUndefinedKeys, logger } from '@sentry/utils'; import { SENTRY_TRACE_STATE_PARENT_SPAN_ID } from './constants'; import { DEBUG_BUILD } from './debug-build'; diff --git a/packages/opentelemetry/src/utils/contextData.ts b/packages/opentelemetry/src/utils/contextData.ts index 8cf0833b0150..e91b91ffe223 100644 --- a/packages/opentelemetry/src/utils/contextData.ts +++ b/packages/opentelemetry/src/utils/contextData.ts @@ -1,6 +1,6 @@ import type { Context } from '@opentelemetry/api'; +import { addNonEnumerableProperty } from '@sentry/core'; import type { Scope } from '@sentry/types'; -import { addNonEnumerableProperty } from '@sentry/utils'; import { SENTRY_SCOPES_CONTEXT_KEY } from '../constants'; import type { CurrentScopes } from '../types'; diff --git a/packages/opentelemetry/src/utils/getRequestSpanData.ts b/packages/opentelemetry/src/utils/getRequestSpanData.ts index ee723b3ca335..1ba4e374fc6c 100644 --- a/packages/opentelemetry/src/utils/getRequestSpanData.ts +++ b/packages/opentelemetry/src/utils/getRequestSpanData.ts @@ -6,8 +6,8 @@ import { SEMATTRS_HTTP_METHOD, SEMATTRS_HTTP_URL, } from '@opentelemetry/semantic-conventions'; +import { getSanitizedUrlString, parseUrl } from '@sentry/core'; import type { SanitizedRequestData } from '@sentry/types'; -import { getSanitizedUrlString, parseUrl } from '@sentry/utils'; import { spanHasAttributes } from './spanTypes'; diff --git a/packages/opentelemetry/src/utils/getSamplingDecision.ts b/packages/opentelemetry/src/utils/getSamplingDecision.ts index 05e2aba26525..216b5249224e 100644 --- a/packages/opentelemetry/src/utils/getSamplingDecision.ts +++ b/packages/opentelemetry/src/utils/getSamplingDecision.ts @@ -1,6 +1,6 @@ import type { SpanContext } from '@opentelemetry/api'; import { TraceFlags } from '@opentelemetry/api'; -import { baggageHeaderToDynamicSamplingContext } from '@sentry/utils'; +import { baggageHeaderToDynamicSamplingContext } from '@sentry/core'; import { SENTRY_TRACE_STATE_DSC, SENTRY_TRACE_STATE_SAMPLED_NOT_RECORDING } from '../constants'; /** diff --git a/packages/opentelemetry/src/utils/getTraceData.ts b/packages/opentelemetry/src/utils/getTraceData.ts index d85f6f699ef3..8d91c74bd294 100644 --- a/packages/opentelemetry/src/utils/getTraceData.ts +++ b/packages/opentelemetry/src/utils/getTraceData.ts @@ -1,6 +1,6 @@ import * as api from '@opentelemetry/api'; +import { dropUndefinedKeys } from '@sentry/core'; import type { SerializedTraceData } from '@sentry/types'; -import { dropUndefinedKeys } from '@sentry/utils'; /** * Otel-specific implementation of `getTraceData`. diff --git a/packages/opentelemetry/src/utils/makeTraceState.ts b/packages/opentelemetry/src/utils/makeTraceState.ts index 1b4fb4971efc..e292274cade0 100644 --- a/packages/opentelemetry/src/utils/makeTraceState.ts +++ b/packages/opentelemetry/src/utils/makeTraceState.ts @@ -1,6 +1,6 @@ import { TraceState } from '@opentelemetry/core'; +import { dynamicSamplingContextToSentryBaggageHeader } from '@sentry/core'; import type { DynamicSamplingContext } from '@sentry/types'; -import { dynamicSamplingContextToSentryBaggageHeader } from '@sentry/utils'; import { SENTRY_TRACE_STATE_DSC, SENTRY_TRACE_STATE_PARENT_SPAN_ID, diff --git a/packages/opentelemetry/src/utils/parseSpanDescription.ts b/packages/opentelemetry/src/utils/parseSpanDescription.ts index 8a07f2aadc2a..aff1fc5e2d69 100644 --- a/packages/opentelemetry/src/utils/parseSpanDescription.ts +++ b/packages/opentelemetry/src/utils/parseSpanDescription.ts @@ -13,8 +13,8 @@ import { SEMATTRS_MESSAGING_SYSTEM, SEMATTRS_RPC_SERVICE, } from '@opentelemetry/semantic-conventions'; +import { getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment } from '@sentry/core'; import type { SpanAttributes, TransactionSource } from '@sentry/types'; -import { getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment } from '@sentry/utils'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core'; import { SEMANTIC_ATTRIBUTE_SENTRY_GRAPHQL_OPERATION } from '../semanticAttributes'; diff --git a/packages/opentelemetry/test/helpers/TestClient.ts b/packages/opentelemetry/test/helpers/TestClient.ts index d284df690fbc..18a169c0a817 100644 --- a/packages/opentelemetry/test/helpers/TestClient.ts +++ b/packages/opentelemetry/test/helpers/TestClient.ts @@ -1,6 +1,6 @@ import { BaseClient, createTransport, getCurrentScope } from '@sentry/core'; +import { resolvedSyncPromise } from '@sentry/core'; import type { Client, ClientOptions, Event, Options, SeverityLevel } from '@sentry/types'; -import { resolvedSyncPromise } from '@sentry/utils'; import { wrapClientClass } from '../../src/custom/client'; import type { OpenTelemetryClient } from '../../src/types'; diff --git a/packages/opentelemetry/test/helpers/createSpan.ts b/packages/opentelemetry/test/helpers/createSpan.ts index e68a82986dea..0e3672f5abe3 100644 --- a/packages/opentelemetry/test/helpers/createSpan.ts +++ b/packages/opentelemetry/test/helpers/createSpan.ts @@ -2,7 +2,7 @@ import type { Context, SpanContext, TimeInput } from '@opentelemetry/api'; import { SpanKind } from '@opentelemetry/api'; import type { Tracer } from '@opentelemetry/sdk-trace-base'; import { Span } from '@opentelemetry/sdk-trace-base'; -import { uuid4 } from '@sentry/utils'; +import { uuid4 } from '@sentry/core'; export function createSpan( name?: string, diff --git a/packages/opentelemetry/test/helpers/initOtel.ts b/packages/opentelemetry/test/helpers/initOtel.ts index ad527d936413..7e59400cc1b1 100644 --- a/packages/opentelemetry/test/helpers/initOtel.ts +++ b/packages/opentelemetry/test/helpers/initOtel.ts @@ -8,7 +8,7 @@ import { SEMRESATTRS_SERVICE_NAMESPACE, } from '@opentelemetry/semantic-conventions'; import { SDK_VERSION, getClient } from '@sentry/core'; -import { logger } from '@sentry/utils'; +import { logger } from '@sentry/core'; import { wrapContextManagerClass } from '../../src/contextManager'; import { DEBUG_BUILD } from '../../src/debug-build'; diff --git a/packages/opentelemetry/test/integration/transactions.test.ts b/packages/opentelemetry/test/integration/transactions.test.ts index bab3f03d1f64..b66147a413d7 100644 --- a/packages/opentelemetry/test/integration/transactions.test.ts +++ b/packages/opentelemetry/test/integration/transactions.test.ts @@ -11,8 +11,8 @@ import { startSpanManual, withIsolationScope, } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { Event, TransactionEvent } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { TraceState } from '@opentelemetry/core'; import { SENTRY_TRACE_STATE_DSC } from '../../src/constants'; diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index 0aa5e99c538d..d9d8097c7a6f 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/profiling-node", - "version": "8.38.0", + "version": "8.39.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", @@ -75,10 +75,9 @@ "test": "cross-env SENTRY_PROFILER_BINARY_DIR=lib jest --config jest.config.js" }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/types": "8.39.0", "detect-libc": "^2.0.2", "node-abi": "^3.61.0" }, diff --git a/packages/profiling-node/src/cpu_profiler.ts b/packages/profiling-node/src/cpu_profiler.ts index 51d0279ba31b..76fad9a286a6 100644 --- a/packages/profiling-node/src/cpu_profiler.ts +++ b/packages/profiling-node/src/cpu_profiler.ts @@ -5,7 +5,7 @@ import { threadId } from 'node:worker_threads'; import { familySync } from 'detect-libc'; import { getAbi } from 'node-abi'; -import { GLOBAL_OBJ, logger } from '@sentry/utils'; +import { GLOBAL_OBJ, logger } from '@sentry/core'; import { DEBUG_BUILD } from './debug-build'; import type { PrivateV8CpuProfilerBindings, diff --git a/packages/profiling-node/src/integration.ts b/packages/profiling-node/src/integration.ts index 1af7b8d82dea..65bab5084d3e 100644 --- a/packages/profiling-node/src/integration.ts +++ b/packages/profiling-node/src/integration.ts @@ -11,7 +11,7 @@ import { import type { NodeClient } from '@sentry/node'; import type { Event, IntegrationFn, Profile, ProfileChunk, ProfilingIntegration, Span } from '@sentry/types'; -import { LRUMap, consoleSandbox, logger, uuid4 } from '@sentry/utils'; +import { LRUMap, consoleSandbox, logger, uuid4 } from '@sentry/core'; import { CpuProfilerBindings } from './cpu_profiler'; import { DEBUG_BUILD } from './debug-build'; diff --git a/packages/profiling-node/src/nodeVersion.ts b/packages/profiling-node/src/nodeVersion.ts index 1f07883b771b..1ec745743620 100644 --- a/packages/profiling-node/src/nodeVersion.ts +++ b/packages/profiling-node/src/nodeVersion.ts @@ -1,4 +1,4 @@ -import { parseSemver } from '@sentry/utils'; +import { parseSemver } from '@sentry/core'; export const NODE_VERSION = parseSemver(process.versions.node) as { major: number; minor: number; patch: number }; export const NODE_MAJOR = NODE_VERSION.major; diff --git a/packages/profiling-node/src/spanProfileUtils.ts b/packages/profiling-node/src/spanProfileUtils.ts index ee6d29b8bb93..75c78b6dfc6b 100644 --- a/packages/profiling-node/src/spanProfileUtils.ts +++ b/packages/profiling-node/src/spanProfileUtils.ts @@ -1,7 +1,7 @@ import { spanIsSampled, spanToJSON } from '@sentry/core'; +import { logger, uuid4 } from '@sentry/core'; import type { NodeClient } from '@sentry/node'; import type { CustomSamplingContext, Span } from '@sentry/types'; -import { logger, uuid4 } from '@sentry/utils'; import { CpuProfilerBindings } from './cpu_profiler'; import { DEBUG_BUILD } from './debug-build'; diff --git a/packages/profiling-node/src/utils.ts b/packages/profiling-node/src/utils.ts index 2693467d1f47..c6051a90978f 100644 --- a/packages/profiling-node/src/utils.ts +++ b/packages/profiling-node/src/utils.ts @@ -1,5 +1,13 @@ /* eslint-disable max-lines */ import * as os from 'os'; +import { + createEnvelope, + dsnToString, + forEachEnvelopeItem, + getDebugImagesForResources, + logger, + uuid4, +} from '@sentry/core'; import type { Client, Context, @@ -16,14 +24,6 @@ import type { SdkInfo, ThreadCpuProfile, } from '@sentry/types'; -import { - createEnvelope, - dsnToString, - forEachEnvelopeItem, - getDebugImagesForResources, - logger, - uuid4, -} from '@sentry/utils'; import { env, versions } from 'process'; import { isMainThread, threadId } from 'worker_threads'; diff --git a/packages/profiling-node/test/spanProfileUtils.test.ts b/packages/profiling-node/test/spanProfileUtils.test.ts index c5619eaaae85..e679001994da 100644 --- a/packages/profiling-node/test/spanProfileUtils.test.ts +++ b/packages/profiling-node/test/spanProfileUtils.test.ts @@ -1,10 +1,10 @@ import * as Sentry from '@sentry/node'; import { getMainCarrier } from '@sentry/core'; +import { GLOBAL_OBJ, createEnvelope, logger } from '@sentry/core'; import type { NodeClientOptions } from '@sentry/node/build/types/types'; import type { ProfilingIntegration } from '@sentry/types'; import type { ProfileChunk, Transport } from '@sentry/types'; -import { GLOBAL_OBJ, createEnvelope, logger } from '@sentry/utils'; import { CpuProfilerBindings } from '../src/cpu_profiler'; import { _nodeProfilingIntegration } from '../src/integration'; diff --git a/packages/profiling-node/test/utils.test.ts b/packages/profiling-node/test/utils.test.ts index fe661e41f07f..9d834f1dc9b3 100644 --- a/packages/profiling-node/test/utils.test.ts +++ b/packages/profiling-node/test/utils.test.ts @@ -1,5 +1,5 @@ +import { addItemToEnvelope, createEnvelope, uuid4 } from '@sentry/core'; import type { Event } from '@sentry/types'; -import { addItemToEnvelope, createEnvelope, uuid4 } from '@sentry/utils'; import { addProfilesToEnvelope, diff --git a/packages/react/package.json b/packages/react/package.json index b6c16043987a..122edb0ecd3f 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/react", - "version": "8.38.0", + "version": "8.39.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", @@ -39,10 +39,9 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/browser": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0", "hoist-non-react-statics": "^3.3.2" }, "peerDependencies": { diff --git a/packages/react/src/error.ts b/packages/react/src/error.ts index ce83e39e33ee..09121c3c85c2 100644 --- a/packages/react/src/error.ts +++ b/packages/react/src/error.ts @@ -1,6 +1,6 @@ import { captureException } from '@sentry/browser'; +import { isError } from '@sentry/core'; import type { EventHint } from '@sentry/types'; -import { isError } from '@sentry/utils'; import { version } from 'react'; import type { ErrorInfo } from 'react'; diff --git a/packages/react/src/errorboundary.tsx b/packages/react/src/errorboundary.tsx index abd532c29a53..84b2ac464e9d 100644 --- a/packages/react/src/errorboundary.tsx +++ b/packages/react/src/errorboundary.tsx @@ -1,7 +1,7 @@ import type { ReportDialogOptions } from '@sentry/browser'; import { getClient, showReportDialog, withScope } from '@sentry/browser'; +import { logger } from '@sentry/core'; import type { Scope } from '@sentry/types'; -import { logger } from '@sentry/utils'; import hoistNonReactStatics from 'hoist-non-react-statics'; import * as React from 'react'; diff --git a/packages/react/src/profiler.tsx b/packages/react/src/profiler.tsx index 611425b04df0..26585d83ae64 100644 --- a/packages/react/src/profiler.tsx +++ b/packages/react/src/profiler.tsx @@ -1,7 +1,7 @@ import { startInactiveSpan } from '@sentry/browser'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON, withActiveSpan } from '@sentry/core'; +import { timestampInSeconds } from '@sentry/core'; import type { Span } from '@sentry/types'; -import { timestampInSeconds } from '@sentry/utils'; import hoistNonReactStatics from 'hoist-non-react-statics'; import * as React from 'react'; diff --git a/packages/react/src/reactrouterv6.tsx b/packages/react/src/reactrouterv6.tsx index 2576ba664f40..b209391f1dda 100644 --- a/packages/react/src/reactrouterv6.tsx +++ b/packages/react/src/reactrouterv6.tsx @@ -18,8 +18,8 @@ import { getRootSpan, spanToJSON, } from '@sentry/core'; +import { getNumberOfUrlSegments, logger } from '@sentry/core'; import type { Client, Integration, Span, TransactionSource } from '@sentry/types'; -import { getNumberOfUrlSegments, logger } from '@sentry/utils'; import hoistNonReactStatics from 'hoist-non-react-statics'; import * as React from 'react'; diff --git a/packages/react/src/redux.ts b/packages/react/src/redux.ts index b9d6b951f7d2..c3dea1b517c7 100644 --- a/packages/react/src/redux.ts +++ b/packages/react/src/redux.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { addBreadcrumb, getClient, getCurrentScope, getGlobalScope } from '@sentry/core'; +import { addNonEnumerableProperty } from '@sentry/core'; import type { Scope } from '@sentry/types'; -import { addNonEnumerableProperty } from '@sentry/utils'; interface Action { type: T; diff --git a/packages/remix/package.json b/packages/remix/package.json index 0804c24ad339..57a4c525b0ad 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/remix", - "version": "8.38.0", + "version": "8.39.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", @@ -54,12 +54,11 @@ "dependencies": { "@remix-run/router": "1.x", "@sentry/cli": "^2.38.2", - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/opentelemetry": "8.38.0", - "@sentry/react": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/opentelemetry": "8.39.0", + "@sentry/react": "8.39.0", + "@sentry/types": "8.39.0", "glob": "^10.3.4", "opentelemetry-instrumentation-remix": "0.7.1", "yargs": "^17.6.0" diff --git a/packages/remix/src/client/errors.tsx b/packages/remix/src/client/errors.tsx index b46f5fde069a..8aa5e2e85dfb 100644 --- a/packages/remix/src/client/errors.tsx +++ b/packages/remix/src/client/errors.tsx @@ -1,5 +1,5 @@ import { captureException } from '@sentry/core'; -import { isNodeEnv } from '@sentry/utils'; +import { isNodeEnv } from '@sentry/core'; import { isResponse } from '../utils/vendor/response'; diff --git a/packages/remix/src/client/performance.tsx b/packages/remix/src/client/performance.tsx index cbb886a6dc8b..83028abc3862 100644 --- a/packages/remix/src/client/performance.tsx +++ b/packages/remix/src/client/performance.tsx @@ -5,6 +5,7 @@ import { getCurrentScope, getRootSpan, } from '@sentry/core'; +import { isNodeEnv, logger } from '@sentry/core'; import type { browserTracingIntegration as originalBrowserTracingIntegration } from '@sentry/react'; import type { BrowserClient, ErrorBoundaryProps } from '@sentry/react'; import { @@ -15,7 +16,6 @@ import { withErrorBoundary, } from '@sentry/react'; import type { Client, StartSpanOptions } from '@sentry/types'; -import { isNodeEnv, logger } from '@sentry/utils'; import * as React from 'react'; import { DEBUG_BUILD } from '../utils/debug-build'; diff --git a/packages/remix/src/index.client.tsx b/packages/remix/src/index.client.tsx index 615287bed17b..f75581f14a68 100644 --- a/packages/remix/src/index.client.tsx +++ b/packages/remix/src/index.client.tsx @@ -1,7 +1,7 @@ import { applySdkMetadata } from '@sentry/core'; +import { logger } from '@sentry/core'; import { init as reactInit } from '@sentry/react'; import type { Client } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from './utils/debug-build'; import type { RemixOptions } from './utils/remixOptions'; export { captureRemixErrorBoundaryError } from './client/errors'; diff --git a/packages/remix/src/index.server.ts b/packages/remix/src/index.server.ts index 9fb2654cc375..d61f759dbf38 100644 --- a/packages/remix/src/index.server.ts +++ b/packages/remix/src/index.server.ts @@ -1,8 +1,8 @@ import { applySdkMetadata } from '@sentry/core'; +import { logger } from '@sentry/core'; import type { NodeClient, NodeOptions } from '@sentry/node'; import { getDefaultIntegrations as getDefaultNodeIntegrations, init as nodeInit, isInitialized } from '@sentry/node'; import type { Integration } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from './utils/debug-build'; import { instrumentServer } from './utils/instrumentServer'; @@ -84,6 +84,7 @@ export { mysql2Integration, mysqlIntegration, nativeNodeFetchIntegration, + // eslint-disable-next-line deprecation/deprecation nestIntegration, NodeClient, nodeContextIntegration, @@ -115,6 +116,7 @@ export { setupExpressErrorHandler, setupHapiErrorHandler, setupKoaErrorHandler, + // eslint-disable-next-line deprecation/deprecation setupNestErrorHandler, setUser, spanToBaggageHeader, diff --git a/packages/remix/src/utils/errors.ts b/packages/remix/src/utils/errors.ts index 100dac496c75..3d7e6edcfa00 100644 --- a/packages/remix/src/utils/errors.ts +++ b/packages/remix/src/utils/errors.ts @@ -1,7 +1,7 @@ import type { AppData, DataFunctionArgs, EntryContext, HandleDocumentRequestFunction } from '@remix-run/node'; import { captureException, getClient, handleCallbackErrors } from '@sentry/core'; +import { addExceptionMechanism, isPrimitive, logger, objectify } from '@sentry/core'; import type { Span } from '@sentry/types'; -import { addExceptionMechanism, isPrimitive, logger, objectify } from '@sentry/utils'; import { DEBUG_BUILD } from './debug-build'; import type { RemixOptions } from './remixOptions'; import { storeFormDataKeys } from './utils'; diff --git a/packages/remix/src/utils/futureFlags.ts b/packages/remix/src/utils/futureFlags.ts index 03d03270a73e..63c9c5dff2ef 100644 --- a/packages/remix/src/utils/futureFlags.ts +++ b/packages/remix/src/utils/futureFlags.ts @@ -1,4 +1,4 @@ -import { GLOBAL_OBJ } from '@sentry/utils'; +import { GLOBAL_OBJ } from '@sentry/core'; import type { FutureConfig, ServerBuild } from './vendor/types'; diff --git a/packages/remix/src/utils/instrumentServer.ts b/packages/remix/src/utils/instrumentServer.ts index 666c332afa04..912cf368f6e9 100644 --- a/packages/remix/src/utils/instrumentServer.ts +++ b/packages/remix/src/utils/instrumentServer.ts @@ -13,10 +13,10 @@ import { startSpan, withIsolationScope, } from '@sentry/core'; +import { dynamicSamplingContextToSentryBaggageHeader, fill, isNodeEnv, loadModule, logger } from '@sentry/core'; import { continueTrace, getDynamicSamplingContextFromSpan } from '@sentry/opentelemetry'; import type { TransactionSource, WrappedFunction } from '@sentry/types'; import type { Span } from '@sentry/types'; -import { dynamicSamplingContextToSentryBaggageHeader, fill, isNodeEnv, loadModule, logger } from '@sentry/utils'; import { DEBUG_BUILD } from './debug-build'; import { captureRemixServerException, errorHandleDataFunction, errorHandleDocumentRequestFunction } from './errors'; diff --git a/packages/remix/src/utils/utils.ts b/packages/remix/src/utils/utils.ts index fed9e721e013..5d1024dbc057 100644 --- a/packages/remix/src/utils/utils.ts +++ b/packages/remix/src/utils/utils.ts @@ -1,6 +1,6 @@ import type { DataFunctionArgs } from '@remix-run/node'; +import { logger } from '@sentry/core'; import type { Span, TransactionSource } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from './debug-build'; import { getRequestMatch, matchServerRoutes } from './vendor/response'; import type { ServerRoute, ServerRouteManifest } from './vendor/types'; diff --git a/packages/remix/test/integration/package.json b/packages/remix/test/integration/package.json index 4604b8c8b067..552c26debdc9 100644 --- a/packages/remix/test/integration/package.json +++ b/packages/remix/test/integration/package.json @@ -4,7 +4,7 @@ "scripts": { "build": "remix build", "dev": "remix dev", - "start":"remix-serve build" + "start": "remix-serve build" }, "dependencies": { "@remix-run/express": "1.17.0", @@ -33,7 +33,6 @@ "@sentry-internal/replay-canvas": "file:../../../replay-canvas", "@sentry-internal/feedback": "file:../../../feedback", "@sentry/types": "file:../../../types", - "@sentry/utils": "file:../../../utils", "@vanilla-extract/css": "1.13.0", "@vanilla-extract/integration": "6.2.4", "@types/mime": "^3.0.0", diff --git a/packages/remix/test/integration/test/server/utils/helpers.ts b/packages/remix/test/integration/test/server/utils/helpers.ts index 909d8d1671ae..61de1975972b 100644 --- a/packages/remix/test/integration/test/server/utils/helpers.ts +++ b/packages/remix/test/integration/test/server/utils/helpers.ts @@ -2,10 +2,10 @@ import * as http from 'http'; import { AddressInfo } from 'net'; import * as path from 'path'; import { createRequestHandler } from '@remix-run/express'; +import { logger } from '@sentry/core'; /* eslint-disable @typescript-eslint/no-unsafe-member-access */ import * as Sentry from '@sentry/node'; import type { EnvelopeItemType, Event, TransactionEvent } from '@sentry/types'; -import { logger } from '@sentry/utils'; import type { AxiosRequestConfig } from 'axios'; import axios from 'axios'; import express from 'express'; diff --git a/packages/replay-canvas/package.json b/packages/replay-canvas/package.json index 34bdabc15cb8..31f0844eb838 100644 --- a/packages/replay-canvas/package.json +++ b/packages/replay-canvas/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-canvas", - "version": "8.38.0", + "version": "8.39.0", "description": "Replay canvas integration", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -68,10 +68,9 @@ "@sentry-internal/rrweb": "2.29.0" }, "dependencies": { - "@sentry-internal/replay": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry-internal/replay": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "engines": { "node": ">=14.18" diff --git a/packages/replay-internal/package.json b/packages/replay-internal/package.json index 50cebfab92e2..624ec4722d2f 100644 --- a/packages/replay-internal/package.json +++ b/packages/replay-internal/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay", - "version": "8.38.0", + "version": "8.39.0", "description": "User replays for Sentry", "main": "build/npm/cjs/index.js", "module": "build/npm/esm/index.js", @@ -68,7 +68,7 @@ "homepage": "https://docs.sentry.io/platforms/javascript/session-replay/", "devDependencies": { "@babel/core": "^7.17.5", - "@sentry-internal/replay-worker": "8.38.0", + "@sentry-internal/replay-worker": "8.39.0", "@sentry-internal/rrweb": "2.29.0", "@sentry-internal/rrweb-snapshot": "2.29.0", "fflate": "^0.8.1", @@ -76,10 +76,9 @@ "jsdom-worker": "^0.2.1" }, "dependencies": { - "@sentry-internal/browser-utils": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry-internal/browser-utils": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "engines": { "node": ">=14.18" diff --git a/packages/replay-internal/src/constants.ts b/packages/replay-internal/src/constants.ts index 13ccea43df22..da253a68ec8f 100644 --- a/packages/replay-internal/src/constants.ts +++ b/packages/replay-internal/src/constants.ts @@ -1,4 +1,4 @@ -import { GLOBAL_OBJ } from '@sentry/utils'; +import { GLOBAL_OBJ } from '@sentry/core'; // exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser` // prevents the browser package from being bundled in the CDN bundle, and avoids a diff --git a/packages/replay-internal/src/coreHandlers/handleBeforeSendEvent.ts b/packages/replay-internal/src/coreHandlers/handleBeforeSendEvent.ts index fb81b1fd88d0..a6f2284e7db4 100644 --- a/packages/replay-internal/src/coreHandlers/handleBeforeSendEvent.ts +++ b/packages/replay-internal/src/coreHandlers/handleBeforeSendEvent.ts @@ -1,5 +1,5 @@ +import { getLocationHref } from '@sentry/core'; import type { ErrorEvent, Event } from '@sentry/types'; -import { getLocationHref } from '@sentry/utils'; import type { ReplayContainer } from '../types'; import { createBreadcrumb } from '../util/createBreadcrumb'; diff --git a/packages/replay-internal/src/coreHandlers/handleBreadcrumbs.ts b/packages/replay-internal/src/coreHandlers/handleBreadcrumbs.ts index 034e5cdb05af..d521d3871a6c 100644 --- a/packages/replay-internal/src/coreHandlers/handleBreadcrumbs.ts +++ b/packages/replay-internal/src/coreHandlers/handleBreadcrumbs.ts @@ -1,6 +1,6 @@ import { getClient } from '@sentry/core'; +import { normalize } from '@sentry/core'; import type { Breadcrumb } from '@sentry/types'; -import { normalize } from '@sentry/utils'; import { CONSOLE_ARG_MAX_SIZE } from '../constants'; import type { ReplayContainer } from '../types'; diff --git a/packages/replay-internal/src/coreHandlers/handleDom.ts b/packages/replay-internal/src/coreHandlers/handleDom.ts index a5c20810481b..168d9529ccb3 100644 --- a/packages/replay-internal/src/coreHandlers/handleDom.ts +++ b/packages/replay-internal/src/coreHandlers/handleDom.ts @@ -1,8 +1,8 @@ import { record } from '@sentry-internal/rrweb'; import type { serializedElementNodeWithId, serializedNodeWithId } from '@sentry-internal/rrweb-snapshot'; import { NodeType } from '@sentry-internal/rrweb-snapshot'; +import { htmlTreeAsString } from '@sentry/core'; import type { Breadcrumb, HandlerDataDom } from '@sentry/types'; -import { htmlTreeAsString } from '@sentry/utils'; import type { ReplayContainer } from '../types'; import { createBreadcrumb } from '../util/createBreadcrumb'; diff --git a/packages/replay-internal/src/coreHandlers/handleKeyboardEvent.ts b/packages/replay-internal/src/coreHandlers/handleKeyboardEvent.ts index 0f7560f39584..52ea76030ebd 100644 --- a/packages/replay-internal/src/coreHandlers/handleKeyboardEvent.ts +++ b/packages/replay-internal/src/coreHandlers/handleKeyboardEvent.ts @@ -1,5 +1,5 @@ +import { htmlTreeAsString } from '@sentry/core'; import type { Breadcrumb } from '@sentry/types'; -import { htmlTreeAsString } from '@sentry/utils'; import type { ReplayContainer } from '../types'; import { createBreadcrumb } from '../util/createBreadcrumb'; diff --git a/packages/replay-internal/src/coreHandlers/util/addBreadcrumbEvent.ts b/packages/replay-internal/src/coreHandlers/util/addBreadcrumbEvent.ts index a324e5b24b25..d24f43bd5d4a 100644 --- a/packages/replay-internal/src/coreHandlers/util/addBreadcrumbEvent.ts +++ b/packages/replay-internal/src/coreHandlers/util/addBreadcrumbEvent.ts @@ -1,6 +1,6 @@ import { EventType } from '@sentry-internal/rrweb'; +import { normalize } from '@sentry/core'; import type { Breadcrumb } from '@sentry/types'; -import { normalize } from '@sentry/utils'; import type { ReplayContainer } from '../../types'; diff --git a/packages/replay-internal/src/coreHandlers/util/networkUtils.ts b/packages/replay-internal/src/coreHandlers/util/networkUtils.ts index 2267fa502333..22f98fc2bee7 100644 --- a/packages/replay-internal/src/coreHandlers/util/networkUtils.ts +++ b/packages/replay-internal/src/coreHandlers/util/networkUtils.ts @@ -1,4 +1,4 @@ -import { dropUndefinedKeys, stringMatchesSomePattern } from '@sentry/utils'; +import { dropUndefinedKeys, stringMatchesSomePattern } from '@sentry/core'; import { NETWORK_BODY_MAX_SIZE, WINDOW } from '../../constants'; import { DEBUG_BUILD } from '../../debug-build'; diff --git a/packages/replay-internal/src/coreHandlers/util/onWindowOpen.ts b/packages/replay-internal/src/coreHandlers/util/onWindowOpen.ts index e3b6b7ac92ed..4a305a53f501 100644 --- a/packages/replay-internal/src/coreHandlers/util/onWindowOpen.ts +++ b/packages/replay-internal/src/coreHandlers/util/onWindowOpen.ts @@ -1,4 +1,4 @@ -import { fill } from '@sentry/utils'; +import { fill } from '@sentry/core'; import { WINDOW } from '../../constants'; diff --git a/packages/replay-internal/src/integration.ts b/packages/replay-internal/src/integration.ts index 1f690f9af88a..3c3f768b50df 100644 --- a/packages/replay-internal/src/integration.ts +++ b/packages/replay-internal/src/integration.ts @@ -1,4 +1,5 @@ import { parseSampleRate } from '@sentry/core'; +import { consoleSandbox, dropUndefinedKeys, isBrowser } from '@sentry/core'; import type { BrowserClientReplayOptions, Client, @@ -6,7 +7,6 @@ import type { IntegrationFn, ReplayRecordingMode, } from '@sentry/types'; -import { consoleSandbox, dropUndefinedKeys, isBrowser } from '@sentry/utils'; import { DEFAULT_FLUSH_MAX_DELAY, diff --git a/packages/replay-internal/src/session/Session.ts b/packages/replay-internal/src/session/Session.ts index be2bcdac1506..93c1a2edd764 100644 --- a/packages/replay-internal/src/session/Session.ts +++ b/packages/replay-internal/src/session/Session.ts @@ -1,4 +1,4 @@ -import { uuid4 } from '@sentry/utils'; +import { uuid4 } from '@sentry/core'; import type { Sampled, Session } from '../types'; diff --git a/packages/replay-internal/src/util/createPerformanceEntries.ts b/packages/replay-internal/src/util/createPerformanceEntries.ts index c28e69caee00..f4efad050750 100644 --- a/packages/replay-internal/src/util/createPerformanceEntries.ts +++ b/packages/replay-internal/src/util/createPerformanceEntries.ts @@ -1,5 +1,5 @@ import { record } from '@sentry-internal/rrweb'; -import { browserPerformanceTimeOrigin } from '@sentry/utils'; +import { browserPerformanceTimeOrigin } from '@sentry/core'; import { WINDOW } from '../constants'; import type { diff --git a/packages/replay-internal/src/util/createReplayEnvelope.ts b/packages/replay-internal/src/util/createReplayEnvelope.ts index de269fdf9905..4f4376a0e501 100644 --- a/packages/replay-internal/src/util/createReplayEnvelope.ts +++ b/packages/replay-internal/src/util/createReplayEnvelope.ts @@ -1,5 +1,5 @@ +import { createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader } from '@sentry/core'; import type { DsnComponents, ReplayEnvelope, ReplayEvent, ReplayRecordingData } from '@sentry/types'; -import { createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader } from '@sentry/utils'; /** * Create a replay envelope ready to be sent. diff --git a/packages/replay-internal/src/util/logger.ts b/packages/replay-internal/src/util/logger.ts index 1b505f41703a..3cc98980ec7e 100644 --- a/packages/replay-internal/src/util/logger.ts +++ b/packages/replay-internal/src/util/logger.ts @@ -1,6 +1,6 @@ import { addBreadcrumb, captureException } from '@sentry/core'; +import { logger as coreLogger, severityLevelFromString } from '@sentry/core'; import type { ConsoleLevel, SeverityLevel } from '@sentry/types'; -import { logger as coreLogger, severityLevelFromString } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; diff --git a/packages/replay-internal/src/util/sendReplayRequest.ts b/packages/replay-internal/src/util/sendReplayRequest.ts index a623771af75b..89c7740bc0b7 100644 --- a/packages/replay-internal/src/util/sendReplayRequest.ts +++ b/packages/replay-internal/src/util/sendReplayRequest.ts @@ -1,8 +1,8 @@ import { getClient, getCurrentScope } from '@sentry/core'; +import type { RateLimits } from '@sentry/core'; +import { resolvedSyncPromise } from '@sentry/core'; +import { isRateLimited, updateRateLimits } from '@sentry/core'; import type { ReplayEvent, TransportMakeRequestResponse } from '@sentry/types'; -import type { RateLimits } from '@sentry/utils'; -import { resolvedSyncPromise } from '@sentry/utils'; -import { isRateLimited, updateRateLimits } from '@sentry/utils'; import { REPLAY_EVENT_NAME, UNABLE_TO_SEND_REPLAY } from '../constants'; import { DEBUG_BUILD } from '../debug-build'; diff --git a/packages/replay-internal/test.setup.ts b/packages/replay-internal/test.setup.ts index 05a762e60d50..17f7d5c9f2b7 100644 --- a/packages/replay-internal/test.setup.ts +++ b/packages/replay-internal/test.setup.ts @@ -4,8 +4,8 @@ import type { Mocked, MockedFunction } from 'vitest'; /* eslint-disable @typescript-eslint/no-unsafe-member-access */ import { getClient } from '@sentry/core'; +import * as SentryUtils from '@sentry/core'; import type { ReplayRecordingData, Transport } from '@sentry/types'; -import * as SentryUtils from '@sentry/utils'; import type { ReplayContainer, Session } from './src/types'; diff --git a/packages/replay-internal/test/integration/events.test.ts b/packages/replay-internal/test/integration/events.test.ts index a370fb730874..5a9813238628 100644 --- a/packages/replay-internal/test/integration/events.test.ts +++ b/packages/replay-internal/test/integration/events.test.ts @@ -147,7 +147,7 @@ describe('Integration | events', () => { // when a tab has sat idle for a long period and user comes back to it. // // We pass a negative start time as it's a bit difficult to mock - // `@sentry/utils/browserPerformanceTimeOrigin`. This would not happen in + // browserPerformanceTimeOrigin in `@sentry/core`. This would not happen in // real world. replay.performanceEntries.push( PerformanceEntryResource({ diff --git a/packages/replay-internal/test/integration/flush.test.ts b/packages/replay-internal/test/integration/flush.test.ts index 72ef104d0633..a56731cf85c3 100644 --- a/packages/replay-internal/test/integration/flush.test.ts +++ b/packages/replay-internal/test/integration/flush.test.ts @@ -10,7 +10,7 @@ import { useFakeTimers } from '../utils/use-fake-timers'; useFakeTimers(); import * as SentryBrowserUtils from '@sentry-internal/browser-utils'; -import * as SentryUtils from '@sentry/utils'; +import * as SentryUtils from '@sentry/core'; import { DEFAULT_FLUSH_MIN_DELAY, MAX_REPLAY_DURATION, WINDOW } from '../../src/constants'; import type { Replay } from '../../src/integration'; diff --git a/packages/replay-internal/test/mocks/resetSdkMock.ts b/packages/replay-internal/test/mocks/resetSdkMock.ts index ff2006b0604e..95e8d15375f2 100644 --- a/packages/replay-internal/test/mocks/resetSdkMock.ts +++ b/packages/replay-internal/test/mocks/resetSdkMock.ts @@ -1,4 +1,4 @@ -import { resetInstrumentationHandlers } from '@sentry/utils'; +import { resetInstrumentationHandlers } from '@sentry/core'; import { vi } from 'vitest'; import type { Replay as ReplayIntegration } from '../../src/integration'; diff --git a/packages/replay-internal/test/unit/session/createSession.test.ts b/packages/replay-internal/test/unit/session/createSession.test.ts index 0072741d6c07..3f8cd4ce3ca7 100644 --- a/packages/replay-internal/test/unit/session/createSession.test.ts +++ b/packages/replay-internal/test/unit/session/createSession.test.ts @@ -14,9 +14,9 @@ import { saveSession } from '../../../src/session/saveSession'; vi.mock('./../../../src/session/saveSession'); -vi.mock('@sentry/utils', async () => { +vi.mock('@sentry/core', async () => { return { - ...((await vi.importActual('@sentry/utils')) as { string: unknown }), + ...((await vi.importActual('@sentry/core')) as { string: unknown }), uuid4: vi.fn(() => 'test_session_id'), }; }); diff --git a/packages/replay-internal/test/unit/session/loadOrCreateSession.test.ts b/packages/replay-internal/test/unit/session/loadOrCreateSession.test.ts index 7555625ecb7b..41d76ad2d83c 100644 --- a/packages/replay-internal/test/unit/session/loadOrCreateSession.test.ts +++ b/packages/replay-internal/test/unit/session/loadOrCreateSession.test.ts @@ -13,9 +13,9 @@ import { loadOrCreateSession } from '../../../src/session/loadOrCreateSession'; import { saveSession } from '../../../src/session/saveSession'; import type { SessionOptions } from '../../../src/types'; -vi.mock('@sentry/utils', async () => { +vi.mock('@sentry/core', async () => { return { - ...((await vi.importActual('@sentry/utils')) as { string: unknown }), + ...((await vi.importActual('@sentry/core')) as { string: unknown }), uuid4: vi.fn(() => 'test_session_uuid'), }; }); diff --git a/packages/replay-internal/test/unit/util/createPerformanceEntry.test.ts b/packages/replay-internal/test/unit/util/createPerformanceEntry.test.ts index b82a8941269d..2e49ade50a26 100644 --- a/packages/replay-internal/test/unit/util/createPerformanceEntry.test.ts +++ b/packages/replay-internal/test/unit/util/createPerformanceEntry.test.ts @@ -5,8 +5,8 @@ import { useFakeTimers } from '../../utils/use-fake-timers'; useFakeTimers(); vi.setSystemTime(new Date('2023-01-01')); -vi.mock('@sentry/utils', async () => ({ - ...(await vi.importActual('@sentry/utils')), +vi.mock('@sentry/core', async () => ({ + ...(await vi.importActual('@sentry/core')), browserPerformanceTimeOrigin: new Date('2023-01-01').getTime(), })); diff --git a/packages/replay-internal/test/unit/util/createReplayEnvelope.test.ts b/packages/replay-internal/test/unit/util/createReplayEnvelope.test.ts index 7b6977fd756a..6967f3f32a26 100644 --- a/packages/replay-internal/test/unit/util/createReplayEnvelope.test.ts +++ b/packages/replay-internal/test/unit/util/createReplayEnvelope.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'vitest'; +import { makeDsn } from '@sentry/core'; import type { ReplayEvent } from '@sentry/types'; -import { makeDsn } from '@sentry/utils'; import { createReplayEnvelope } from '../../../src/util/createReplayEnvelope'; diff --git a/packages/replay-internal/test/unit/util/logger.test.ts b/packages/replay-internal/test/unit/util/logger.test.ts index 075a6f27a841..0d349b15ee62 100644 --- a/packages/replay-internal/test/unit/util/logger.test.ts +++ b/packages/replay-internal/test/unit/util/logger.test.ts @@ -1,7 +1,7 @@ import { beforeEach, describe, expect, it } from 'vitest'; import * as SentryCore from '@sentry/core'; -import { logger as coreLogger } from '@sentry/utils'; +import { logger as coreLogger } from '@sentry/core'; import { logger } from '../../../src/util/logger'; const mockCaptureException = vi.spyOn(SentryCore, 'captureException'); diff --git a/packages/replay-internal/test/utils/TestClient.ts b/packages/replay-internal/test/utils/TestClient.ts index 2651dfe1c91a..f534ac77c3c6 100644 --- a/packages/replay-internal/test/utils/TestClient.ts +++ b/packages/replay-internal/test/utils/TestClient.ts @@ -1,4 +1,5 @@ import { BaseClient, createTransport, initAndBind } from '@sentry/core'; +import { resolvedSyncPromise } from '@sentry/core'; import type { BrowserClientReplayOptions, Client, @@ -7,7 +8,6 @@ import type { ParameterizedString, SeverityLevel, } from '@sentry/types'; -import { resolvedSyncPromise } from '@sentry/utils'; export interface TestClientOptions extends ClientOptions, BrowserClientReplayOptions {} diff --git a/packages/replay-worker/package.json b/packages/replay-worker/package.json index 56bb6bc1b7ff..2c5e42e3b95e 100644 --- a/packages/replay-worker/package.json +++ b/packages/replay-worker/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/replay-worker", - "version": "8.38.0", + "version": "8.39.0", "description": "Worker for @sentry-internal/replay", "main": "build/esm/index.js", "module": "build/esm/index.js", diff --git a/packages/solid/package.json b/packages/solid/package.json index 4856dcc25e3b..9c436c07985f 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/solid", - "version": "8.38.0", + "version": "8.39.0", "description": "Official Sentry SDK for Solid", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/solid", @@ -44,10 +44,9 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/browser": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "peerDependencies": { "@solidjs/router": "^0.13.4", diff --git a/packages/solidstart/package.json b/packages/solidstart/package.json index 2685d518082a..130ab9145b8d 100644 --- a/packages/solidstart/package.json +++ b/packages/solidstart/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/solidstart", - "version": "8.38.0", + "version": "8.39.0", "description": "Official Sentry SDK for Solid Start", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/solidstart", @@ -67,12 +67,11 @@ }, "dependencies": { "@opentelemetry/instrumentation": "^0.54.0", - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/opentelemetry": "8.38.0", - "@sentry/solid": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/opentelemetry": "8.39.0", + "@sentry/solid": "8.39.0", + "@sentry/types": "8.39.0", "@sentry/vite-plugin": "2.22.6" }, "devDependencies": { diff --git a/packages/solidstart/src/server/index.ts b/packages/solidstart/src/server/index.ts index 780f9fe7fa12..b2faa21768ba 100644 --- a/packages/solidstart/src/server/index.ts +++ b/packages/solidstart/src/server/index.ts @@ -75,6 +75,7 @@ export { mysql2Integration, mysqlIntegration, nativeNodeFetchIntegration, + // eslint-disable-next-line deprecation/deprecation nestIntegration, NodeClient, nodeContextIntegration, @@ -106,6 +107,7 @@ export { setupExpressErrorHandler, setupHapiErrorHandler, setupKoaErrorHandler, + // eslint-disable-next-line deprecation/deprecation setupNestErrorHandler, setUser, spanToBaggageHeader, diff --git a/packages/solidstart/src/server/middleware.ts b/packages/solidstart/src/server/middleware.ts index 65287d23fa0b..ad8ea9502b32 100644 --- a/packages/solidstart/src/server/middleware.ts +++ b/packages/solidstart/src/server/middleware.ts @@ -1,5 +1,5 @@ import { getTraceMetaTags } from '@sentry/core'; -import { addNonEnumerableProperty } from '@sentry/utils'; +import { addNonEnumerableProperty } from '@sentry/core'; import type { ResponseMiddleware } from '@solidjs/start/middleware'; import type { FetchEvent } from '@solidjs/start/server'; diff --git a/packages/solidstart/src/server/utils.ts b/packages/solidstart/src/server/utils.ts index f570ae355424..90bf9b426a93 100644 --- a/packages/solidstart/src/server/utils.ts +++ b/packages/solidstart/src/server/utils.ts @@ -1,6 +1,6 @@ +import { logger } from '@sentry/core'; import { flush, getGlobalScope } from '@sentry/node'; import type { EventProcessor, Options } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../common/debug-build'; /** Flush the event queue to ensure that events get sent to Sentry before the response is finished and the lambda ends */ diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 90b047c2b60c..c568955313b5 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/svelte", - "version": "8.38.0", + "version": "8.39.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", @@ -39,10 +39,9 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/browser": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0", "magic-string": "^0.30.0" }, "peerDependencies": { diff --git a/packages/svelte/src/sdk.ts b/packages/svelte/src/sdk.ts index aa40e5a25a98..29a3379a5140 100644 --- a/packages/svelte/src/sdk.ts +++ b/packages/svelte/src/sdk.ts @@ -1,8 +1,8 @@ import type { BrowserOptions } from '@sentry/browser'; import { addEventProcessor, init as browserInit } from '@sentry/browser'; import { applySdkMetadata } from '@sentry/core'; +import { getDomElement } from '@sentry/core'; import type { Client, EventProcessor } from '@sentry/types'; -import { getDomElement } from '@sentry/utils'; /** * Inits the Svelte SDK */ diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index e55b68cd2462..c1a018561b68 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/sveltekit", - "version": "8.38.0", + "version": "8.39.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", @@ -40,12 +40,11 @@ } }, "dependencies": { - "@sentry/core": "8.38.0", - "@sentry/node": "8.38.0", - "@sentry/opentelemetry": "8.38.0", - "@sentry/svelte": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0", + "@sentry/core": "8.39.0", + "@sentry/node": "8.39.0", + "@sentry/opentelemetry": "8.39.0", + "@sentry/svelte": "8.39.0", + "@sentry/types": "8.39.0", "@sentry/vite-plugin": "2.22.6", "magic-string": "0.30.7", "magicast": "0.2.8", diff --git a/packages/sveltekit/src/client/browserTracingIntegration.ts b/packages/sveltekit/src/client/browserTracingIntegration.ts index d2a266e2cbea..f41de176b073 100644 --- a/packages/sveltekit/src/client/browserTracingIntegration.ts +++ b/packages/sveltekit/src/client/browserTracingIntegration.ts @@ -1,5 +1,6 @@ import { navigating, page } from '$app/stores'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core'; +import { dropUndefinedKeys } from '@sentry/core'; import { WINDOW, browserTracingIntegration as originalBrowserTracingIntegration, @@ -9,7 +10,6 @@ import { startInactiveSpan, } from '@sentry/svelte'; import type { Client, Integration, Span } from '@sentry/types'; -import { dropUndefinedKeys } from '@sentry/utils'; /** * A custom `BrowserTracing` integration for SvelteKit. diff --git a/packages/sveltekit/src/client/handleError.ts b/packages/sveltekit/src/client/handleError.ts index 0880d93a59ef..447acce45e60 100644 --- a/packages/sveltekit/src/client/handleError.ts +++ b/packages/sveltekit/src/client/handleError.ts @@ -1,5 +1,5 @@ +import { consoleSandbox } from '@sentry/core'; import { captureException } from '@sentry/svelte'; -import { consoleSandbox } from '@sentry/utils'; import type { HandleClientError } from '@sveltejs/kit'; // The SvelteKit default error handler just logs the error to the console diff --git a/packages/sveltekit/src/client/load.ts b/packages/sveltekit/src/client/load.ts index 6f0e84ef140f..185495ae412f 100644 --- a/packages/sveltekit/src/client/load.ts +++ b/packages/sveltekit/src/client/load.ts @@ -4,8 +4,8 @@ import { handleCallbackErrors, startSpan, } from '@sentry/core'; +import { addNonEnumerableProperty, objectify } from '@sentry/core'; import { captureException } from '@sentry/svelte'; -import { addNonEnumerableProperty, objectify } from '@sentry/utils'; import type { LoadEvent } from '@sveltejs/kit'; import type { SentryWrappedFlag } from '../common/utils'; diff --git a/packages/sveltekit/src/server/handle.ts b/packages/sveltekit/src/server/handle.ts index cee8520400c1..2b7f32e0876a 100644 --- a/packages/sveltekit/src/server/handle.ts +++ b/packages/sveltekit/src/server/handle.ts @@ -10,9 +10,9 @@ import { withIsolationScope, } from '@sentry/core'; import { startSpan } from '@sentry/core'; +import { logger, winterCGRequestToRequestData } from '@sentry/core'; import { continueTrace } from '@sentry/node'; import type { Span } from '@sentry/types'; -import { logger, winterCGRequestToRequestData } from '@sentry/utils'; import type { Handle, ResolveOptions } from '@sveltejs/kit'; import { DEBUG_BUILD } from '../common/debug-build'; @@ -131,7 +131,9 @@ export function sentryHandle(handlerOptions?: SentryHandleOptions): Handle { return withIsolationScope(isolationScope => { // We only call continueTrace in the initial top level request to avoid // creating a new root span for the sub request. - isolationScope.setSDKProcessingMetadata({ request: winterCGRequestToRequestData(input.event.request.clone()) }); + isolationScope.setSDKProcessingMetadata({ + normalizedRequest: winterCGRequestToRequestData(input.event.request.clone()), + }); return continueTrace(getTracePropagationData(input.event), () => instrumentHandle(input, options)); }); }; @@ -167,7 +169,9 @@ async function instrumentHandle( name: routeName, }, async (span?: Span) => { - getCurrentScope().setSDKProcessingMetadata({ request: winterCGRequestToRequestData(event.request.clone()) }); + getCurrentScope().setSDKProcessingMetadata({ + normalizedRequest: winterCGRequestToRequestData(event.request.clone()), + }); const res = await resolve(event, { transformPageChunk: addSentryCodeToPage(options), }); diff --git a/packages/sveltekit/src/server/handleError.ts b/packages/sveltekit/src/server/handleError.ts index f61251245c4d..7f6a8cd0b0cb 100644 --- a/packages/sveltekit/src/server/handleError.ts +++ b/packages/sveltekit/src/server/handleError.ts @@ -1,5 +1,5 @@ +import { consoleSandbox } from '@sentry/core'; import { captureException } from '@sentry/node'; -import { consoleSandbox } from '@sentry/utils'; import type { HandleServerError } from '@sveltejs/kit'; import { flushIfServerless } from './utils'; diff --git a/packages/sveltekit/src/server/index.ts b/packages/sveltekit/src/server/index.ts index 81388a0d1946..c954d4b1bf78 100644 --- a/packages/sveltekit/src/server/index.ts +++ b/packages/sveltekit/src/server/index.ts @@ -77,6 +77,7 @@ export { mysql2Integration, mysqlIntegration, nativeNodeFetchIntegration, + // eslint-disable-next-line deprecation/deprecation nestIntegration, NodeClient, nodeContextIntegration, @@ -108,6 +109,7 @@ export { setupExpressErrorHandler, setupHapiErrorHandler, setupKoaErrorHandler, + // eslint-disable-next-line deprecation/deprecation setupNestErrorHandler, setUser, spanToBaggageHeader, diff --git a/packages/sveltekit/src/server/load.ts b/packages/sveltekit/src/server/load.ts index 82a8c548c6ec..c4a67eaf3482 100644 --- a/packages/sveltekit/src/server/load.ts +++ b/packages/sveltekit/src/server/load.ts @@ -1,5 +1,5 @@ +import { addNonEnumerableProperty } from '@sentry/core'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, startSpan } from '@sentry/node'; -import { addNonEnumerableProperty } from '@sentry/utils'; import type { LoadEvent, ServerLoadEvent } from '@sveltejs/kit'; import type { SentryWrappedFlag } from '../common/utils'; diff --git a/packages/sveltekit/src/server/rewriteFramesIntegration.ts b/packages/sveltekit/src/server/rewriteFramesIntegration.ts index da37457cc5b9..c01e248f937c 100644 --- a/packages/sveltekit/src/server/rewriteFramesIntegration.ts +++ b/packages/sveltekit/src/server/rewriteFramesIntegration.ts @@ -1,6 +1,6 @@ import { defineIntegration, rewriteFramesIntegration as originalRewriteFramesIntegration } from '@sentry/core'; +import { GLOBAL_OBJ, basename, escapeStringForRegex, join } from '@sentry/core'; import type { IntegrationFn, StackFrame } from '@sentry/types'; -import { GLOBAL_OBJ, basename, escapeStringForRegex, join } from '@sentry/utils'; import { WRAPPED_MODULE_SUFFIX } from '../vite/autoInstrument'; import type { GlobalWithSentryValues } from '../vite/injectGlobalValues'; diff --git a/packages/sveltekit/src/server/serverRoute.ts b/packages/sveltekit/src/server/serverRoute.ts index bd8f57a6578a..dbf930ce1180 100644 --- a/packages/sveltekit/src/server/serverRoute.ts +++ b/packages/sveltekit/src/server/serverRoute.ts @@ -1,5 +1,5 @@ +import { addNonEnumerableProperty } from '@sentry/core'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, startSpan } from '@sentry/node'; -import { addNonEnumerableProperty } from '@sentry/utils'; import type { RequestEvent } from '@sveltejs/kit'; import { flushIfServerless, sendErrorToSentry } from './utils'; diff --git a/packages/sveltekit/src/server/utils.ts b/packages/sveltekit/src/server/utils.ts index 8d7f2c649331..8eae93d531ab 100644 --- a/packages/sveltekit/src/server/utils.ts +++ b/packages/sveltekit/src/server/utils.ts @@ -1,5 +1,5 @@ +import { logger, objectify } from '@sentry/core'; import { captureException, flush } from '@sentry/node'; -import { logger, objectify } from '@sentry/utils'; import type { RequestEvent } from '@sveltejs/kit'; import { DEBUG_BUILD } from '../common/debug-build'; diff --git a/packages/sveltekit/src/vite/injectGlobalValues.ts b/packages/sveltekit/src/vite/injectGlobalValues.ts index 8a14a004dd84..96ad05123ce6 100644 --- a/packages/sveltekit/src/vite/injectGlobalValues.ts +++ b/packages/sveltekit/src/vite/injectGlobalValues.ts @@ -1,4 +1,4 @@ -import type { InternalGlobal } from '@sentry/utils'; +import type { InternalGlobal } from '@sentry/core'; export type GlobalSentryValues = { __sentry_sveltekit_output_dir?: string; diff --git a/packages/sveltekit/src/vite/sentryVitePlugins.ts b/packages/sveltekit/src/vite/sentryVitePlugins.ts index 7482eee7e610..60258f653400 100644 --- a/packages/sveltekit/src/vite/sentryVitePlugins.ts +++ b/packages/sveltekit/src/vite/sentryVitePlugins.ts @@ -1,4 +1,4 @@ -import { dropUndefinedKeys } from '@sentry/utils'; +import { dropUndefinedKeys } from '@sentry/core'; import type { Plugin } from 'vite'; import type { AutoInstrumentSelection } from './autoInstrument'; import { makeAutoInstrumentationPlugin } from './autoInstrument'; diff --git a/packages/sveltekit/src/vite/sourceMaps.ts b/packages/sveltekit/src/vite/sourceMaps.ts index d0faf85addbd..9a5656f3f78f 100644 --- a/packages/sveltekit/src/vite/sourceMaps.ts +++ b/packages/sveltekit/src/vite/sourceMaps.ts @@ -1,8 +1,8 @@ import * as child_process from 'child_process'; import * as fs from 'fs'; import * as path from 'path'; +import { escapeStringForRegex, uuid4 } from '@sentry/core'; import { getSentryRelease } from '@sentry/node'; -import { escapeStringForRegex, uuid4 } from '@sentry/utils'; import type { SentryVitePluginOptions } from '@sentry/vite-plugin'; import { sentryVitePlugin } from '@sentry/vite-plugin'; import type { Plugin } from 'vite'; diff --git a/packages/sveltekit/test/server/rewriteFramesIntegration.ts b/packages/sveltekit/test/server/rewriteFramesIntegration.ts index acf4591d8371..ab0306876e20 100644 --- a/packages/sveltekit/test/server/rewriteFramesIntegration.ts +++ b/packages/sveltekit/test/server/rewriteFramesIntegration.ts @@ -1,6 +1,6 @@ import { rewriteFramesIntegration } from '@sentry/browser'; +import { basename } from '@sentry/core'; import type { Event, StackFrame } from '@sentry/types'; -import { basename } from '@sentry/utils'; import { rewriteFramesIteratee } from '../../src/server/rewriteFramesIntegration'; import type { GlobalWithSentryValues } from '../../src/vite/injectGlobalValues'; diff --git a/packages/sveltekit/test/utils.ts b/packages/sveltekit/test/utils.ts index 540db2882373..a4e0299b396d 100644 --- a/packages/sveltekit/test/utils.ts +++ b/packages/sveltekit/test/utils.ts @@ -1,6 +1,6 @@ import { createTransport } from '@sentry/core'; +import { resolvedSyncPromise } from '@sentry/core'; import type { ClientOptions } from '@sentry/types'; -import { resolvedSyncPromise } from '@sentry/utils'; export function getDefaultNodeClientOptions(options: Partial = {}): ClientOptions { return { diff --git a/packages/types/package.json b/packages/types/package.json index 7504f07c64b3..cd5f97899eef 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/types", - "version": "8.38.0", + "version": "8.39.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/types/src/severity.ts b/packages/types/src/severity.ts index 78d1a6f5dd73..8a59bef56f30 100644 --- a/packages/types/src/severity.ts +++ b/packages/types/src/severity.ts @@ -1,3 +1,3 @@ -// Note: If this is ever changed, the `validSeverityLevels` array in `@sentry/utils` needs to be changed, also. (See +// Note: If this is ever changed, the `validSeverityLevels` array in `@sentry/core` needs to be changed, also. (See // note there for why we can't derive one from the other.) export type SeverityLevel = 'fatal' | 'error' | 'warning' | 'log' | 'info' | 'debug'; diff --git a/packages/typescript/package.json b/packages/typescript/package.json index 56083308b330..72f01110c182 100644 --- a/packages/typescript/package.json +++ b/packages/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@sentry-internal/typescript", - "version": "8.38.0", + "version": "8.39.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/jest.config.js b/packages/utils/jest.config.js deleted file mode 100644 index f9b7ccfa4502..000000000000 --- a/packages/utils/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -const baseConfig = require('../../jest/jest.config.js'); - -module.exports = { - ...baseConfig, - transform: { - '^.+\\.ts$': 'ts-jest', - '^.+\\.js$': 'ts-jest', - }, -}; diff --git a/packages/utils/package.json b/packages/utils/package.json index 3ef330009ccc..d3079f9fddf6 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/utils", - "version": "8.38.0", + "version": "8.39.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", @@ -39,16 +39,13 @@ "access": "public" }, "dependencies": { - "@sentry/types": "8.38.0" - }, - "devDependencies": { - "@types/array.prototype.flat": "^1.2.1", - "array.prototype.flat": "^1.3.0" + "@sentry/types": "8.39.0", + "@sentry/core": "8.39.0" }, "scripts": { "build": "run-p build:transpile build:types", "build:dev": "yarn build", - "build:transpile": "yarn ts-node scripts/buildRollup.ts", + "build:transpile": "rollup -c rollup.npm.config.mjs", "build:types": "run-s build:types:core build:types:downlevel", "build:types:core": "tsc -p tsconfig.types.json", "build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8", @@ -61,8 +58,6 @@ "clean": "rimraf build coverage cjs esm sentry-utils-*.tgz", "fix": "eslint . --format stylish --fix", "lint": "eslint . --format stylish", - "test": "jest", - "test:watch": "jest --watch", "yalc:publish": "yalc publish --push --sig" }, "volta": { diff --git a/packages/utils/rollup.npm.config.mjs b/packages/utils/rollup.npm.config.mjs index cc3ad4064820..4f4e949d4950 100644 --- a/packages/utils/rollup.npm.config.mjs +++ b/packages/utils/rollup.npm.config.mjs @@ -1,19 +1,6 @@ // @ts-check - -import { readFileSync } from 'fs'; -import { dirname, join } from 'path'; -import { fileURLToPath } from 'url'; -import replace from '@rollup/plugin-replace'; import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; -const packageJson = JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), 'package.json'), 'utf-8')); - -if (!packageJson.version) { - throw new Error('invariant: package version not found'); -} - -const packageVersion = packageJson.version; - export default makeNPMConfigVariants( makeBaseNPMConfig({ packageSpecificConfig: { @@ -26,14 +13,6 @@ export default makeNPMConfigVariants( ? true : Boolean(process.env.SENTRY_BUILD_PRESERVE_MODULES), }, - plugins: [ - replace({ - preventAssignment: true, - values: { - __SENTRY_SDK_VERSION__: JSON.stringify(packageVersion), - }, - }), - ], }, }), ); diff --git a/packages/utils/scripts/buildRollup.ts b/packages/utils/scripts/buildRollup.ts deleted file mode 100644 index 2e7486f7d005..000000000000 --- a/packages/utils/scripts/buildRollup.ts +++ /dev/null @@ -1,16 +0,0 @@ -import * as childProcess from 'child_process'; -import * as fs from 'fs'; - -/** - * Run the given shell command, piping the shell process's `stdin`, `stdout`, and `stderr` to that of the current - * process. Returns contents of `stdout`. - */ -function run(cmd: string, options?: childProcess.ExecSyncOptions): string | Buffer { - return childProcess.execSync(cmd, { stdio: 'inherit', ...options }); -} - -run('yarn rollup -c rollup.npm.config.mjs'); - -// We want to distribute the README because it contains the MIT license blurb from Sucrase and Rollup -fs.copyFileSync('src/buildPolyfills/README.md', 'build/cjs/build-polyfills-license.md'); -fs.copyFileSync('src/buildPolyfills/README.md', 'build/esm/build-polyfills-license.md'); diff --git a/packages/utils/src/index.ts b/packages/utils/src/index.ts index e60bc3bec409..0b4bcd669706 100644 --- a/packages/utils/src/index.ts +++ b/packages/utils/src/index.ts @@ -1,22 +1,21 @@ -export { applyAggregateErrorsToEvent } from './aggregate-errors'; -export { flatten } from './array'; -export { getBreadcrumbLogLevelFromHttpStatusCode } from './breadcrumb-log-level'; -export { getComponentName, getDomElement, getLocationHref, htmlTreeAsString } from './browser'; -export { dsnFromString, dsnToString, makeDsn } from './dsn'; -export { SentryError } from './error'; -export { GLOBAL_OBJ, getGlobalSingleton } from './worldwide'; -export type { InternalGlobal } from './worldwide'; -export { addConsoleInstrumentationHandler } from './instrument/console'; -export { addFetchEndInstrumentationHandler, addFetchInstrumentationHandler } from './instrument/fetch'; -export { addGlobalErrorInstrumentationHandler } from './instrument/globalError'; -export { addGlobalUnhandledRejectionInstrumentationHandler } from './instrument/globalUnhandledRejection'; export { + applyAggregateErrorsToEvent, + getBreadcrumbLogLevelFromHttpStatusCode, + dsnFromString, + dsnToString, + makeDsn, + SentryError, + GLOBAL_OBJ, + getGlobalSingleton, + addConsoleInstrumentationHandler, + addFetchEndInstrumentationHandler, + addFetchInstrumentationHandler, + addGlobalErrorInstrumentationHandler, + addGlobalUnhandledRejectionInstrumentationHandler, addHandler, maybeInstrument, resetInstrumentationHandlers, triggerHandlers, -} from './instrument/handlers'; -export { isDOMError, isDOMException, isElement, @@ -32,23 +31,20 @@ export { isSyntheticEvent, isThenable, isVueViewModel, -} from './is'; -export { isBrowser } from './isBrowser'; -export { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods } from './logger'; -export { memoBuilder } from './memo'; -export { + isBrowser, + CONSOLE_LEVELS, + consoleSandbox, + logger, + originalConsoleMethods, addContextToFrame, addExceptionMechanism, addExceptionTypeValue, - arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4, -} from './misc'; -export { dynamicRequire, isNodeEnv, loadModule } from './node'; -export { normalize, normalizeToSize, normalizeUrlToBase } from './normalize'; -export { + normalize, + normalizeToSize, addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, @@ -57,66 +53,43 @@ export { getOriginalFunction, markFunctionWrapped, objectify, - urlEncode, -} from './object'; -export { basename, dirname, isAbsolute, join, normalizePath, relative, resolve } from './path'; -export { makePromiseBuffer } from './promisebuffer'; -export type { PromiseBuffer } from './promisebuffer'; - -// TODO: Remove requestdata export once equivalent integration is used everywhere -export { - DEFAULT_USER_INCLUDES, + makePromiseBuffer, addNormalizedRequestDataToEvent, - addRequestDataToEvent, - // eslint-disable-next-line deprecation/deprecation - extractPathForTransaction, - extractRequestData, winterCGHeadersToDict, winterCGRequestToRequestData, -} from './requestdata'; -export type { - AddRequestDataToEventOptions, - // eslint-disable-next-line deprecation/deprecation - TransactionNamingScheme, -} from './requestdata'; - -export { severityLevelFromString, validSeverityLevels } from './severity'; -export { + severityLevelFromString, + validSeverityLevels, UNKNOWN_FUNCTION, createStackParser, getFramesFromEvent, getFunctionName, stackParserFromStackParserOptions, stripSentryFramesAndReverse, -} from './stacktrace'; -export { filenameIsInApp, node, nodeStackLineParser } from './node-stack-trace'; -export { isMatchingPattern, safeJoin, snipLine, stringMatchesSomePattern, truncate } from './string'; -export { - isNativeFunction, - supportsDOMError, - supportsDOMException, - supportsErrorEvent, - supportsFetch, - supportsNativeFetch, - supportsReferrerPolicy, - supportsReportingObserver, -} from './supports'; -export { SyncPromise, rejectedSyncPromise, resolvedSyncPromise } from './syncpromise'; -export { - _browserPerformanceTimeOriginMode, - browserPerformanceTimeOrigin, + filenameIsInApp, + node, + nodeStackLineParser, + isMatchingPattern, + safeJoin, + snipLine, + stringMatchesSomePattern, + truncate, + SyncPromise, + rejectedSyncPromise, + resolvedSyncPromise, dateTimestampInSeconds, timestampInSeconds, -} from './time'; -export { TRACEPARENT_REGEXP, extractTraceparentData, generateSentryTraceHeader, propagationContextFromHeaders, -} from './tracing'; -export { getSDKSource, isBrowserBundle } from './env'; -export type { SdkSource } from './env'; -export { + getSDKSource, + isBrowserBundle, + MAX_BAGGAGE_STRING_LENGTH, + SENTRY_BAGGAGE_KEY_PREFIX, + SENTRY_BAGGAGE_KEY_PREFIX_REGEX, + baggageHeaderToDynamicSamplingContext, + dynamicSamplingContextToSentryBaggageHeader, + parseBaggageHeader, addItemToEnvelope, createAttachmentEnvelopeItem, createEnvelope, @@ -128,41 +101,437 @@ export { getSdkMetadataForEnvelopeHeader, parseEnvelope, serializeEnvelope, -} from './envelope'; -export { createClientReportEnvelope } from './clientreport'; -export { + createClientReportEnvelope, DEFAULT_RETRY_AFTER, disabledUntil, isRateLimited, parseRetryAfterHeader, updateRateLimits, -} from './ratelimit'; -export type { RateLimits } from './ratelimit'; -export { + eventFromMessage, + eventFromUnknownInput, + exceptionFromError, + parseStackFrames, + callFrameToStackFrame, + watchdogTimer, + LRUMap, + generatePropagationContext, + vercelWaitUntil, + SDK_VERSION, + getDebugImagesForResources, + getFilenameToDebugIdMap, + escapeStringForRegex, + basename, + dirname, + isAbsolute, + join, + normalizePath, + relative, + resolve, + getComponentName, + getDomElement, + getLocationHref, + htmlTreeAsString, + isNativeFunction, + supportsDOMError, + supportsDOMException, + supportsErrorEvent, + supportsFetch, + supportsNativeFetch, + supportsReferrerPolicy, + supportsReportingObserver, + _browserPerformanceTimeOriginMode, + browserPerformanceTimeOrigin, + supportsHistory, + dynamicRequire, + isNodeEnv, + loadModule, + flatten, + memoBuilder, + arrayify, + normalizeUrlToBase, + urlEncode, + // eslint-disable-next-line deprecation/deprecation + extractPathForTransaction, + DEFAULT_USER_INCLUDES, + extractRequestData, + addRequestDataToEvent, + _asyncNullishCoalesce, + _asyncOptionalChain, + _asyncOptionalChainDelete, + _nullishCoalesce, + _optionalChain, + _optionalChainDelete, BAGGAGE_HEADER_NAME, - MAX_BAGGAGE_STRING_LENGTH, - SENTRY_BAGGAGE_KEY_PREFIX, - SENTRY_BAGGAGE_KEY_PREFIX_REGEX, - baggageHeaderToDynamicSamplingContext, - dynamicSamplingContextToSentryBaggageHeader, - parseBaggageHeader, -} from './baggage'; + getNumberOfUrlSegments, + getSanitizedUrlString, + parseUrl, + stripUrlQueryAndFragment, + makeFifoCache, +} from '@sentry/core'; + +export type { + InternalGlobal, + PromiseBuffer, + RateLimits, + AddRequestDataToEventOptions, + SdkSource, + // eslint-disable-next-line deprecation/deprecation + TransactionNamingScheme, +} from '@sentry/core'; + +// TODO(v9/lforst): Uncomment below to add deprecation notices + +// import { +// applyAggregateErrorsToEvent as applyAggregateErrorsToEvent_imported, +// getBreadcrumbLogLevelFromHttpStatusCode as getBreadcrumbLogLevelFromHttpStatusCode_imported, +// dsnFromString as dsnFromString_imported, +// dsnToString as dsnToString_imported, +// makeDsn as makeDsn_imported, +// SentryError as SentryError_imported, +// GLOBAL_OBJ as GLOBAL_OBJ_imported, +// getGlobalSingleton as getGlobalSingleton_imported, +// addConsoleInstrumentationHandler as addConsoleInstrumentationHandler_imported, +// addFetchEndInstrumentationHandler as addFetchEndInstrumentationHandler_imported, +// addFetchInstrumentationHandler as addFetchInstrumentationHandler_imported, +// addGlobalErrorInstrumentationHandler as addGlobalErrorInstrumentationHandler_imported, +// addGlobalUnhandledRejectionInstrumentationHandler as addGlobalUnhandledRejectionInstrumentationHandler_imported, +// addHandler as addHandler_imported, +// maybeInstrument as maybeInstrument_imported, +// resetInstrumentationHandlers as resetInstrumentationHandlers_imported, +// triggerHandlers as triggerHandlers_imported, +// isDOMError as isDOMError_imported, +// isDOMException as isDOMException_imported, +// isElement as isElement_imported, +// isError as isError_imported, +// isErrorEvent as isErrorEvent_imported, +// isEvent as isEvent_imported, +// isInstanceOf as isInstanceOf_imported, +// isParameterizedString as isParameterizedString_imported, +// isPlainObject as isPlainObject_imported, +// isPrimitive as isPrimitive_imported, +// isRegExp as isRegExp_imported, +// isString as isString_imported, +// isSyntheticEvent as isSyntheticEvent_imported, +// isThenable as isThenable_imported, +// isVueViewModel as isVueViewModel_imported, +// isBrowser as isBrowser_imported, +// CONSOLE_LEVELS as CONSOLE_LEVELS_imported, +// consoleSandbox as consoleSandbox_imported, +// logger as logger_imported, +// originalConsoleMethods as originalConsoleMethods_imported, +// addContextToFrame as addContextToFrame_imported, +// addExceptionMechanism as addExceptionMechanism_imported, +// addExceptionTypeValue as addExceptionTypeValue_imported, +// checkOrSetAlreadyCaught as checkOrSetAlreadyCaught_imported, +// getEventDescription as getEventDescription_imported, +// parseSemver as parseSemver_imported, +// uuid4 as uuid4_imported, +// normalize as normalize_imported, +// normalizeToSize as normalizeToSize_imported, +// addNonEnumerableProperty as addNonEnumerableProperty_imported, +// convertToPlainObject as convertToPlainObject_imported, +// dropUndefinedKeys as dropUndefinedKeys_imported, +// extractExceptionKeysForMessage as extractExceptionKeysForMessage_imported, +// fill as fill_imported, +// getOriginalFunction as getOriginalFunction_imported, +// markFunctionWrapped as markFunctionWrapped_imported, +// objectify as objectify_imported, +// makePromiseBuffer as makePromiseBuffer_imported, +// addNormalizedRequestDataToEvent as addNormalizedRequestDataToEvent_imported, +// winterCGHeadersToDict as winterCGHeadersToDict_imported, +// winterCGRequestToRequestData as winterCGRequestToRequestData_imported, +// severityLevelFromString as severityLevelFromString_imported, +// validSeverityLevels as validSeverityLevels_imported, +// UNKNOWN_FUNCTION as UNKNOWN_FUNCTION_imported, +// createStackParser as createStackParser_imported, +// getFramesFromEvent as getFramesFromEvent_imported, +// getFunctionName as getFunctionName_imported, +// stackParserFromStackParserOptions as stackParserFromStackParserOptions_imported, +// stripSentryFramesAndReverse as stripSentryFramesAndReverse_imported, +// filenameIsInApp as filenameIsInApp_imported, +// node as node_imported, +// nodeStackLineParser as nodeStackLineParser_imported, +// isMatchingPattern as isMatchingPattern_imported, +// safeJoin as safeJoin_imported, +// snipLine as snipLine_imported, +// stringMatchesSomePattern as stringMatchesSomePattern_imported, +// truncate as truncate_imported, +// SyncPromise as SyncPromise_imported, +// rejectedSyncPromise as rejectedSyncPromise_imported, +// resolvedSyncPromise as resolvedSyncPromise_imported, +// dateTimestampInSeconds as dateTimestampInSeconds_imported, +// timestampInSeconds as timestampInSeconds_imported, +// TRACEPARENT_REGEXP as TRACEPARENT_REGEXP_imported, +// extractTraceparentData as extractTraceparentData_imported, +// generateSentryTraceHeader as generateSentryTraceHeader_imported, +// propagationContextFromHeaders as propagationContextFromHeaders_imported, +// getSDKSource as getSDKSource_imported, +// isBrowserBundle as isBrowserBundle_imported, +// MAX_BAGGAGE_STRING_LENGTH as MAX_BAGGAGE_STRING_LENGTH_imported, +// SENTRY_BAGGAGE_KEY_PREFIX as SENTRY_BAGGAGE_KEY_PREFIX_imported, +// SENTRY_BAGGAGE_KEY_PREFIX_REGEX as SENTRY_BAGGAGE_KEY_PREFIX_REGEX_imported, +// baggageHeaderToDynamicSamplingContext as baggageHeaderToDynamicSamplingContext_imported, +// dynamicSamplingContextToSentryBaggageHeader as dynamicSamplingContextToSentryBaggageHeader_imported, +// parseBaggageHeader as parseBaggageHeader_imported, +// addItemToEnvelope as addItemToEnvelope_imported, +// createAttachmentEnvelopeItem as createAttachmentEnvelopeItem_imported, +// createEnvelope as createEnvelope_imported, +// createEventEnvelopeHeaders as createEventEnvelopeHeaders_imported, +// createSpanEnvelopeItem as createSpanEnvelopeItem_imported, +// envelopeContainsItemType as envelopeContainsItemType_imported, +// envelopeItemTypeToDataCategory as envelopeItemTypeToDataCategory_imported, +// forEachEnvelopeItem as forEachEnvelopeItem_imported, +// getSdkMetadataForEnvelopeHeader as getSdkMetadataForEnvelopeHeader_imported, +// parseEnvelope as parseEnvelope_imported, +// serializeEnvelope as serializeEnvelope_imported, +// createClientReportEnvelope as createClientReportEnvelope_imported, +// DEFAULT_RETRY_AFTER as DEFAULT_RETRY_AFTER_imported, +// disabledUntil as disabledUntil_imported, +// isRateLimited as isRateLimited_imported, +// parseRetryAfterHeader as parseRetryAfterHeader_imported, +// updateRateLimits as updateRateLimits_imported, +// eventFromMessage as eventFromMessage_imported, +// eventFromUnknownInput as eventFromUnknownInput_imported, +// exceptionFromError as exceptionFromError_imported, +// parseStackFrames as parseStackFrames_imported, +// callFrameToStackFrame as callFrameToStackFrame_imported, +// watchdogTimer as watchdogTimer_imported, +// LRUMap as LRUMap_imported, +// generatePropagationContext as generatePropagationContext_imported, +// vercelWaitUntil as vercelWaitUntil_imported, +// SDK_VERSION as SDK_VERSION_imported, +// getDebugImagesForResources as getDebugImagesForResources_imported, +// getFilenameToDebugIdMap as getFilenameToDebugIdMap_imported, +// escapeStringForRegex as escapeStringForRegex_imported, +// basename as basename_imported, +// dirname as dirname_imported, +// isAbsolute as isAbsolute_imported, +// join as join_imported, +// normalizePath as normalizePath_imported, +// relative as relative_imported, +// resolve as resolve_imported, +// getComponentName as getComponentName_imported, +// getDomElement as getDomElement_imported, +// getLocationHref as getLocationHref_imported, +// htmlTreeAsString as htmlTreeAsString_imported, +// isNativeFunction as isNativeFunction_imported, +// supportsDOMError as supportsDOMError_imported, +// supportsDOMException as supportsDOMException_imported, +// supportsErrorEvent as supportsErrorEvent_imported, +// supportsFetch as supportsFetch_imported, +// supportsNativeFetch as supportsNativeFetch_imported, +// supportsReferrerPolicy as supportsReferrerPolicy_imported, +// supportsReportingObserver as supportsReportingObserver_imported, +// _browserPerformanceTimeOriginMode as _browserPerformanceTimeOriginMode_imported, +// browserPerformanceTimeOrigin as browserPerformanceTimeOrigin_imported, +// supportsHistory as supportsHistory_imported, +// dynamicRequire as dynamicRequire_imported, +// isNodeEnv as isNodeEnv_imported, +// loadModule as loadModule_imported, +// flatten as flatten_imported, +// memoBuilder as memoBuilder_imported, +// arrayify as arrayify_imported, +// normalizeUrlToBase as normalizeUrlToBase_imported, +// urlEncode as urlEncode_imported, +// extractPathForTransaction as extractPathForTransaction_imported, +// DEFAULT_USER_INCLUDES as DEFAULT_USER_INCLUDES_imported, +// extractRequestData as extractRequestData_imported, +// addRequestDataToEvent as addRequestDataToEvent_imported, +// _asyncNullishCoalesce as _asyncNullishCoalesce_imported, +// _asyncOptionalChain as _asyncOptionalChain_imported, +// _asyncOptionalChainDelete as _asyncOptionalChainDelete_imported, +// _nullishCoalesce as _nullishCoalesce_imported, +// _optionalChain as _optionalChain_imported, +// _optionalChainDelete as _optionalChainDelete_imported, +// BAGGAGE_HEADER_NAME as BAGGAGE_HEADER_NAME_imported, +// getNumberOfUrlSegments as getNumberOfUrlSegments_imported, +// getSanitizedUrlString as getSanitizedUrlString_imported, +// parseUrl as parseUrl_imported, +// stripUrlQueryAndFragment as stripUrlQueryAndFragment_imported, +// makeFifoCache as makeFifoCache_imported, +// } from '@sentry/core'; + +// export const applyAggregateErrorsToEvent = applyAggregateErrorsToEvent_imported; +// export const getBreadcrumbLogLevelFromHttpStatusCode = getBreadcrumbLogLevelFromHttpStatusCode_imported; +// export const dsnFromString = dsnFromString_imported; +// export const dsnToString = dsnToString_imported; +// export const makeDsn = makeDsn_imported; +// export const SentryError = SentryError_imported; +// export const GLOBAL_OBJ = GLOBAL_OBJ_imported; +// export const getGlobalSingleton = getGlobalSingleton_imported; +// export const addConsoleInstrumentationHandler = addConsoleInstrumentationHandler_imported; +// export const addFetchEndInstrumentationHandler = addFetchEndInstrumentationHandler_imported; +// export const addFetchInstrumentationHandler = addFetchInstrumentationHandler_imported; +// export const addGlobalErrorInstrumentationHandler = addGlobalErrorInstrumentationHandler_imported; +// export const addGlobalUnhandledRejectionInstrumentationHandler = +// addGlobalUnhandledRejectionInstrumentationHandler_imported; +// export const addHandler = addHandler_imported; +// export const maybeInstrument = maybeInstrument_imported; +// export const resetInstrumentationHandlers = resetInstrumentationHandlers_imported; +// export const triggerHandlers = triggerHandlers_imported; +// export const isDOMError = isDOMError_imported; +// export const isDOMException = isDOMException_imported; +// export const isElement = isElement_imported; +// export const isError = isError_imported; +// export const isErrorEvent = isErrorEvent_imported; +// export const isEvent = isEvent_imported; +// export const isInstanceOf = isInstanceOf_imported; +// export const isParameterizedString = isParameterizedString_imported; +// export const isPlainObject = isPlainObject_imported; +// export const isPrimitive = isPrimitive_imported; +// export const isRegExp = isRegExp_imported; +// export const isString = isString_imported; +// export const isSyntheticEvent = isSyntheticEvent_imported; +// export const isThenable = isThenable_imported; +// export const isVueViewModel = isVueViewModel_imported; +// export const isBrowser = isBrowser_imported; +// export const CONSOLE_LEVELS = CONSOLE_LEVELS_imported; +// export const consoleSandbox = consoleSandbox_imported; +// export const logger = logger_imported; +// export const originalConsoleMethods = originalConsoleMethods_imported; +// export const addContextToFrame = addContextToFrame_imported; +// export const addExceptionMechanism = addExceptionMechanism_imported; +// export const addExceptionTypeValue = addExceptionTypeValue_imported; +// export const checkOrSetAlreadyCaught = checkOrSetAlreadyCaught_imported; +// export const getEventDescription = getEventDescription_imported; +// export const parseSemver = parseSemver_imported; +// export const uuid4 = uuid4_imported; +// export const normalize = normalize_imported; +// export const normalizeToSize = normalizeToSize_imported; +// export const addNonEnumerableProperty = addNonEnumerableProperty_imported; +// export const convertToPlainObject = convertToPlainObject_imported; +// export const dropUndefinedKeys = dropUndefinedKeys_imported; +// export const extractExceptionKeysForMessage = extractExceptionKeysForMessage_imported; +// export const fill = fill_imported; +// export const getOriginalFunction = getOriginalFunction_imported; +// export const markFunctionWrapped = markFunctionWrapped_imported; +// export const objectify = objectify_imported; +// export const makePromiseBuffer = makePromiseBuffer_imported; +// export const addNormalizedRequestDataToEvent = addNormalizedRequestDataToEvent_imported; +// export const winterCGHeadersToDict = winterCGHeadersToDict_imported; +// export const winterCGRequestToRequestData = winterCGRequestToRequestData_imported; +// export const severityLevelFromString = severityLevelFromString_imported; +// export const validSeverityLevels = validSeverityLevels_imported; +// export const UNKNOWN_FUNCTION = UNKNOWN_FUNCTION_imported; +// export const createStackParser = createStackParser_imported; +// export const getFramesFromEvent = getFramesFromEvent_imported; +// export const getFunctionName = getFunctionName_imported; +// export const stackParserFromStackParserOptions = stackParserFromStackParserOptions_imported; +// export const stripSentryFramesAndReverse = stripSentryFramesAndReverse_imported; +// export const filenameIsInApp = filenameIsInApp_imported; +// export const node = node_imported; +// export const nodeStackLineParser = nodeStackLineParser_imported; +// export const isMatchingPattern = isMatchingPattern_imported; +// export const safeJoin = safeJoin_imported; +// export const snipLine = snipLine_imported; +// export const stringMatchesSomePattern = stringMatchesSomePattern_imported; +// export const truncate = truncate_imported; +// export const SyncPromise = SyncPromise_imported; +// export const rejectedSyncPromise = rejectedSyncPromise_imported; +// export const resolvedSyncPromise = resolvedSyncPromise_imported; +// export const dateTimestampInSeconds = dateTimestampInSeconds_imported; +// export const timestampInSeconds = timestampInSeconds_imported; +// export const TRACEPARENT_REGEXP = TRACEPARENT_REGEXP_imported; +// export const extractTraceparentData = extractTraceparentData_imported; +// export const generateSentryTraceHeader = generateSentryTraceHeader_imported; +// export const propagationContextFromHeaders = propagationContextFromHeaders_imported; +// export const getSDKSource = getSDKSource_imported; +// export const isBrowserBundle = isBrowserBundle_imported; +// export const MAX_BAGGAGE_STRING_LENGTH = MAX_BAGGAGE_STRING_LENGTH_imported; +// export const SENTRY_BAGGAGE_KEY_PREFIX = SENTRY_BAGGAGE_KEY_PREFIX_imported; +// export const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = SENTRY_BAGGAGE_KEY_PREFIX_REGEX_imported; +// export const baggageHeaderToDynamicSamplingContext = baggageHeaderToDynamicSamplingContext_imported; +// export const dynamicSamplingContextToSentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader_imported; +// export const parseBaggageHeader = parseBaggageHeader_imported; +// export const addItemToEnvelope = addItemToEnvelope_imported; +// export const createAttachmentEnvelopeItem = createAttachmentEnvelopeItem_imported; +// export const createEnvelope = createEnvelope_imported; +// export const createEventEnvelopeHeaders = createEventEnvelopeHeaders_imported; +// export const createSpanEnvelopeItem = createSpanEnvelopeItem_imported; +// export const envelopeContainsItemType = envelopeContainsItemType_imported; +// export const envelopeItemTypeToDataCategory = envelopeItemTypeToDataCategory_imported; +// export const forEachEnvelopeItem = forEachEnvelopeItem_imported; +// export const getSdkMetadataForEnvelopeHeader = getSdkMetadataForEnvelopeHeader_imported; +// export const parseEnvelope = parseEnvelope_imported; +// export const serializeEnvelope = serializeEnvelope_imported; +// export const createClientReportEnvelope = createClientReportEnvelope_imported; +// export const DEFAULT_RETRY_AFTER = DEFAULT_RETRY_AFTER_imported; +// export const disabledUntil = disabledUntil_imported; +// export const isRateLimited = isRateLimited_imported; +// export const parseRetryAfterHeader = parseRetryAfterHeader_imported; +// export const updateRateLimits = updateRateLimits_imported; +// export const eventFromMessage = eventFromMessage_imported; +// export const eventFromUnknownInput = eventFromUnknownInput_imported; +// export const exceptionFromError = exceptionFromError_imported; +// export const parseStackFrames = parseStackFrames_imported; +// export const callFrameToStackFrame = callFrameToStackFrame_imported; +// export const watchdogTimer = watchdogTimer_imported; +// export const LRUMap = LRUMap_imported; +// export const generatePropagationContext = generatePropagationContext_imported; +// export const vercelWaitUntil = vercelWaitUntil_imported; +// export const SDK_VERSION = SDK_VERSION_imported; +// export const getDebugImagesForResources = getDebugImagesForResources_imported; +// export const getFilenameToDebugIdMap = getFilenameToDebugIdMap_imported; +// export const escapeStringForRegex = escapeStringForRegex_imported; +// export const basename = basename_imported; +// export const dirname = dirname_imported; +// export const isAbsolute = isAbsolute_imported; +// export const join = join_imported; +// export const normalizePath = normalizePath_imported; +// export const relative = relative_imported; +// export const resolve = resolve_imported; +// export const getComponentName = getComponentName_imported; +// export const getDomElement = getDomElement_imported; +// export const getLocationHref = getLocationHref_imported; +// export const htmlTreeAsString = htmlTreeAsString_imported; +// export const isNativeFunction = isNativeFunction_imported; +// export const supportsDOMError = supportsDOMError_imported; +// export const supportsDOMException = supportsDOMException_imported; +// export const supportsErrorEvent = supportsErrorEvent_imported; +// export const supportsFetch = supportsFetch_imported; +// export const supportsNativeFetch = supportsNativeFetch_imported; +// export const supportsReferrerPolicy = supportsReferrerPolicy_imported; +// export const supportsReportingObserver = supportsReportingObserver_imported; +// export const _browserPerformanceTimeOriginMode = _browserPerformanceTimeOriginMode_imported; +// export const browserPerformanceTimeOrigin = browserPerformanceTimeOrigin_imported; +// export const supportsHistory = supportsHistory_imported; +// export const dynamicRequire = dynamicRequire_imported; +// export const isNodeEnv = isNodeEnv_imported; +// export const loadModule = loadModule_imported; +// export const flatten = flatten_imported; +// export const memoBuilder = memoBuilder_imported; +// export const arrayify = arrayify_imported; +// export const normalizeUrlToBase = normalizeUrlToBase_imported; +// export const urlEncode = urlEncode_imported; +// export const extractPathForTransaction = extractPathForTransaction_imported; +// export const DEFAULT_USER_INCLUDES = DEFAULT_USER_INCLUDES_imported; +// export const extractRequestData = extractRequestData_imported; +// export const addRequestDataToEvent = addRequestDataToEvent_imported; +// export const _asyncNullishCoalesce = _asyncNullishCoalesce_imported; +// export const _asyncOptionalChain = _asyncOptionalChain_imported; +// export const _asyncOptionalChainDelete = _asyncOptionalChainDelete_imported; +// export const _nullishCoalesce = _nullishCoalesce_imported; +// export const _optionalChain = _optionalChain_imported; +// export const _optionalChainDelete = _optionalChainDelete_imported; +// export const BAGGAGE_HEADER_NAME = BAGGAGE_HEADER_NAME_imported; +// export const getNumberOfUrlSegments = getNumberOfUrlSegments_imported; +// export const getSanitizedUrlString = getSanitizedUrlString_imported; +// export const parseUrl = parseUrl_imported; +// export const stripUrlQueryAndFragment = stripUrlQueryAndFragment_imported; +// export const makeFifoCache = makeFifoCache_imported; -export { getNumberOfUrlSegments, getSanitizedUrlString, parseUrl, stripUrlQueryAndFragment } from './url'; -export { makeFifoCache } from './cache'; -export { eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames } from './eventbuilder'; -export { callFrameToStackFrame, watchdogTimer } from './anr'; -export { LRUMap } from './lru'; -export { generatePropagationContext } from './propagationContext'; -export { vercelWaitUntil } from './vercelWaitUntil'; -export { SDK_VERSION } from './version'; -export { getDebugImagesForResources, getFilenameToDebugIdMap } from './debug-ids'; -export { escapeStringForRegex } from './vendor/escapeStringForRegex'; -export { supportsHistory } from './vendor/supportsHistory'; +// import type { +// InternalGlobal as InternalGlobal_imported, +// PromiseBuffer as PromiseBuffer_imported, +// RateLimits as RateLimits_imported, +// AddRequestDataToEventOptions as AddRequestDataToEventOptions_imported, +// SdkSource as SdkSource_imported, +// TransactionNamingScheme as TransactionNamingScheme_imported, +// } from '@sentry/core'; -export { _asyncNullishCoalesce } from './buildPolyfills/_asyncNullishCoalesce'; -export { _asyncOptionalChain } from './buildPolyfills/_asyncOptionalChain'; -export { _asyncOptionalChainDelete } from './buildPolyfills/_asyncOptionalChainDelete'; -export { _nullishCoalesce } from './buildPolyfills/_nullishCoalesce'; -export { _optionalChain } from './buildPolyfills/_optionalChain'; -export { _optionalChainDelete } from './buildPolyfills/_optionalChainDelete'; +// export type InternalGlobal = InternalGlobal_imported; +// export type SdkSource = SdkSource_imported; +// export type RateLimits = RateLimits_imported; +// export type AddRequestDataToEventOptions = AddRequestDataToEventOptions_imported; +// export type PromiseBuffer = PromiseBuffer_imported; +// export type TransactionNamingScheme = TransactionNamingScheme_imported; diff --git a/packages/utils/src/instrument/index.ts b/packages/utils/src/instrument/index.ts deleted file mode 100644 index 8a83959c636b..000000000000 --- a/packages/utils/src/instrument/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { addConsoleInstrumentationHandler } from './console'; -import { addFetchEndInstrumentationHandler, addFetchInstrumentationHandler } from './fetch'; -import { addGlobalErrorInstrumentationHandler } from './globalError'; -import { addGlobalUnhandledRejectionInstrumentationHandler } from './globalUnhandledRejection'; -import { addHandler, maybeInstrument, resetInstrumentationHandlers, triggerHandlers } from './handlers'; - -export { - addConsoleInstrumentationHandler, - addFetchInstrumentationHandler, - addGlobalErrorInstrumentationHandler, - addGlobalUnhandledRejectionInstrumentationHandler, - addHandler, - maybeInstrument, - triggerHandlers, - // Only exported for tests - resetInstrumentationHandlers, - addFetchEndInstrumentationHandler, -}; diff --git a/packages/utils/test/buildPolyfills/originals.d.ts b/packages/utils/test/buildPolyfills/originals.d.ts deleted file mode 100644 index c2032b265476..000000000000 --- a/packages/utils/test/buildPolyfills/originals.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -// NOTE: Unlike other types files, this is NOT auto-generated by our build scripts. Since these functions are the -// originals of functions we adapted from Rollup and Sucrase, there's no reason they should ever change, but if they do, -// this file needs to be regenerated, by running -// `yarn tsc --allowJs --skipLibCheck --declaration --emitDeclarationOnly test/buildPolyfills/originals.js` -// from within the `utils` package. Keep in mind that running that command will clobber this note, so make sure to copy -// it before you regenerate the types, so you can add it back in.) - -export function _asyncNullishCoalesce(lhs: any, rhsFn: any): Promise; -export function _asyncOptionalChain(ops: any): Promise; -export function _asyncOptionalChainDelete(ops: any): Promise; -export function _nullishCoalesce(lhs: any, rhsFn: any): any; -export function _optionalChain(ops: any): any; -export function _optionalChainDelete(ops: any): any; diff --git a/packages/utils/test/tsconfig.json b/packages/utils/test/tsconfig.json deleted file mode 100644 index 38ca0b13bcdd..000000000000 --- a/packages/utils/test/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../tsconfig.test.json" -} diff --git a/packages/utils/tsconfig.test.json b/packages/utils/tsconfig.test.json deleted file mode 100644 index 0f755903fa64..000000000000 --- a/packages/utils/tsconfig.test.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "extends": "./tsconfig.json", - - "include": ["test/**/*"], - - "compilerOptions": { - // should include all types from `./tsconfig.json` plus types for all test frameworks used - "types": ["node", "jest"], - - // other package-specific, test-specific options - // this is necessary in order to be able to handle the buildPolyfills `originals.js` which is used for testing - "allowJs": true, - - // `es2020` is the recommended `lib` and `target` for Node 14 - // see https://github.com/tsconfig/bases/blob/main/bases/node14.json - "lib": ["dom", "es2020"], - "module": "commonjs", - "target": "es2020", - - // so we don't have to worry about how libraries we use export things - "esModuleInterop": true - } -} diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index a45747edbd9b..c9cf344a6151 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vercel-edge", - "version": "8.38.0", + "version": "8.39.0", "description": "Official 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", @@ -40,9 +40,8 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "devDependencies": { "@edge-runtime/types": "3.0.1", @@ -50,7 +49,7 @@ "@opentelemetry/resources": "^1.26.0", "@opentelemetry/sdk-trace-base": "^1.26.0", "@opentelemetry/semantic-conventions": "^1.27.0", - "@sentry/opentelemetry": "8.38.0" + "@sentry/opentelemetry": "8.39.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/vercel-edge/src/index.ts b/packages/vercel-edge/src/index.ts index cbd51687aca7..1675e9b5b359 100644 --- a/packages/vercel-edge/src/index.ts +++ b/packages/vercel-edge/src/index.ts @@ -18,7 +18,7 @@ export type { Thread, User, } from '@sentry/types'; -export type { AddRequestDataToEventOptions } from '@sentry/utils'; +export type { AddRequestDataToEventOptions } from '@sentry/core'; export type { VercelEdgeOptions } from './types'; diff --git a/packages/vercel-edge/src/integrations/wintercg-fetch.ts b/packages/vercel-edge/src/integrations/wintercg-fetch.ts index 4dd4bf399e4c..7371ebcec8b7 100644 --- a/packages/vercel-edge/src/integrations/wintercg-fetch.ts +++ b/packages/vercel-edge/src/integrations/wintercg-fetch.ts @@ -1,4 +1,10 @@ import { addBreadcrumb, defineIntegration, getClient, instrumentFetchRequest, isSentryRequestUrl } from '@sentry/core'; +import { + LRUMap, + addFetchInstrumentationHandler, + getBreadcrumbLogLevelFromHttpStatusCode, + stringMatchesSomePattern, +} from '@sentry/core'; import type { Client, FetchBreadcrumbData, @@ -7,12 +13,6 @@ import type { IntegrationFn, Span, } from '@sentry/types'; -import { - LRUMap, - addFetchInstrumentationHandler, - getBreadcrumbLogLevelFromHttpStatusCode, - stringMatchesSomePattern, -} from '@sentry/utils'; const INTEGRATION_NAME = 'WinterCGFetch'; diff --git a/packages/vercel-edge/src/sdk.ts b/packages/vercel-edge/src/sdk.ts index 4fa8415b2184..141a3ba19ff5 100644 --- a/packages/vercel-edge/src/sdk.ts +++ b/packages/vercel-edge/src/sdk.ts @@ -8,7 +8,6 @@ import { linkedErrorsIntegration, requestDataIntegration, } from '@sentry/core'; -import type { Client, Integration, Options } from '@sentry/types'; import { GLOBAL_OBJ, SDK_VERSION, @@ -16,7 +15,8 @@ import { logger, nodeStackLineParser, stackParserFromStackParserOptions, -} from '@sentry/utils'; +} from '@sentry/core'; +import type { Client, Integration, Options } from '@sentry/types'; import { DiagLogLevel, diag } from '@opentelemetry/api'; import { Resource } from '@opentelemetry/resources'; diff --git a/packages/vercel-edge/src/transports/index.ts b/packages/vercel-edge/src/transports/index.ts index b938647b4415..ade9f83944f7 100644 --- a/packages/vercel-edge/src/transports/index.ts +++ b/packages/vercel-edge/src/transports/index.ts @@ -1,6 +1,6 @@ import { createTransport, suppressTracing } from '@sentry/core'; +import { SentryError } from '@sentry/core'; import type { BaseTransportOptions, Transport, TransportMakeRequestResponse, TransportRequest } from '@sentry/types'; -import { SentryError } from '@sentry/utils'; export interface VercelEdgeTransportOptions extends BaseTransportOptions { /** Fetch API init parameters. */ diff --git a/packages/vercel-edge/src/vendored/async-local-storage-context-manager.ts b/packages/vercel-edge/src/vendored/async-local-storage-context-manager.ts index 99520a3c0362..67828f4c852e 100644 --- a/packages/vercel-edge/src/vendored/async-local-storage-context-manager.ts +++ b/packages/vercel-edge/src/vendored/async-local-storage-context-manager.ts @@ -28,7 +28,7 @@ import type { Context } from '@opentelemetry/api'; import { ROOT_CONTEXT } from '@opentelemetry/api'; -import { GLOBAL_OBJ, logger } from '@sentry/utils'; +import { GLOBAL_OBJ, logger } from '@sentry/core'; import type { AsyncLocalStorage } from 'async_hooks'; import { DEBUG_BUILD } from '../debug-build'; import { AbstractAsyncHooksContextManager } from './abstract-async-hooks-context-manager'; diff --git a/packages/vercel-edge/test/async.test.ts b/packages/vercel-edge/test/async.test.ts index 75c7d56803cd..82affdc49639 100644 --- a/packages/vercel-edge/test/async.test.ts +++ b/packages/vercel-edge/test/async.test.ts @@ -1,6 +1,6 @@ import { Scope, getCurrentScope, getGlobalScope, getIsolationScope, withIsolationScope, withScope } from '@sentry/core'; +import { GLOBAL_OBJ } from '@sentry/core'; import { setOpenTelemetryContextAsyncContextStrategy } from '@sentry/opentelemetry'; -import { GLOBAL_OBJ } from '@sentry/utils'; import { AsyncLocalStorage } from 'async_hooks'; import { beforeAll, beforeEach, describe, expect, it } from 'vitest'; import { VercelEdgeClient } from '../src'; diff --git a/packages/vercel-edge/test/transports/index.test.ts b/packages/vercel-edge/test/transports/index.test.ts index c2ead21998be..4534d1b8169a 100644 --- a/packages/vercel-edge/test/transports/index.test.ts +++ b/packages/vercel-edge/test/transports/index.test.ts @@ -1,7 +1,7 @@ import { afterAll, describe, expect, it, vi } from 'vitest'; +import { createEnvelope, serializeEnvelope } from '@sentry/core'; import type { EventEnvelope, EventItem } from '@sentry/types'; -import { createEnvelope, serializeEnvelope } from '@sentry/utils'; import type { VercelEdgeTransportOptions } from '../../src/transports'; import { IsolatedPromiseBuffer, makeEdgeTransport } from '../../src/transports'; diff --git a/packages/vercel-edge/test/wintercg-fetch.test.ts b/packages/vercel-edge/test/wintercg-fetch.test.ts index 34328734cd83..ac00e27dcac8 100644 --- a/packages/vercel-edge/test/wintercg-fetch.test.ts +++ b/packages/vercel-edge/test/wintercg-fetch.test.ts @@ -1,9 +1,9 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'; import * as sentryCore from '@sentry/core'; +import * as sentryUtils from '@sentry/core'; +import { createStackParser } from '@sentry/core'; import type { HandlerDataFetch, Integration } from '@sentry/types'; -import * as sentryUtils from '@sentry/utils'; -import { createStackParser } from '@sentry/utils'; import { VercelEdgeClient } from '../src/index'; import { winterCGFetchIntegration } from '../src/integrations/wintercg-fetch'; diff --git a/packages/vue/package.json b/packages/vue/package.json index b71d72cfb59f..b8192ba3771b 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/vue", - "version": "8.38.0", + "version": "8.39.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", @@ -39,10 +39,9 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/browser": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "peerDependencies": { "pinia": "2.x", diff --git a/packages/vue/src/errorhandler.ts b/packages/vue/src/errorhandler.ts index 07caeaf0f9cf..95ca6ce483c0 100644 --- a/packages/vue/src/errorhandler.ts +++ b/packages/vue/src/errorhandler.ts @@ -1,5 +1,5 @@ import { captureException } from '@sentry/core'; -import { consoleSandbox } from '@sentry/utils'; +import { consoleSandbox } from '@sentry/core'; import type { ViewModel, Vue, VueOptions } from './types'; import { formatComponentName, generateComponentTrace } from './vendor/components'; diff --git a/packages/vue/src/integration.ts b/packages/vue/src/integration.ts index 900fa686dbcf..c7b7145ac4b1 100644 --- a/packages/vue/src/integration.ts +++ b/packages/vue/src/integration.ts @@ -1,6 +1,6 @@ import { defineIntegration, hasTracingEnabled } from '@sentry/core'; +import { GLOBAL_OBJ, arrayify, consoleSandbox } from '@sentry/core'; import type { Client, IntegrationFn } from '@sentry/types'; -import { GLOBAL_OBJ, arrayify, consoleSandbox } from '@sentry/utils'; import { DEFAULT_HOOKS } from './constants'; import { DEBUG_BUILD } from './debug-build'; diff --git a/packages/vue/src/pinia.ts b/packages/vue/src/pinia.ts index a21273a7d54b..56e38c33bad7 100644 --- a/packages/vue/src/pinia.ts +++ b/packages/vue/src/pinia.ts @@ -1,5 +1,5 @@ import { addBreadcrumb, getClient, getCurrentScope, getGlobalScope } from '@sentry/core'; -import { addNonEnumerableProperty } from '@sentry/utils'; +import { addNonEnumerableProperty } from '@sentry/core'; // Inline PiniaPlugin type type PiniaPlugin = (context: { diff --git a/packages/vue/src/tracing.ts b/packages/vue/src/tracing.ts index c00bdd184c20..8170516eea16 100644 --- a/packages/vue/src/tracing.ts +++ b/packages/vue/src/tracing.ts @@ -1,6 +1,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, getActiveSpan, startInactiveSpan } from '@sentry/browser'; +import { logger, timestampInSeconds } from '@sentry/core'; import type { Span } from '@sentry/types'; -import { logger, timestampInSeconds } from '@sentry/utils'; import { DEFAULT_HOOKS } from './constants'; import { DEBUG_BUILD } from './debug-build'; diff --git a/packages/vue/test/integration/VueIntegration.test.ts b/packages/vue/test/integration/VueIntegration.test.ts index 9f0aeecaa722..52445a353d23 100644 --- a/packages/vue/test/integration/VueIntegration.test.ts +++ b/packages/vue/test/integration/VueIntegration.test.ts @@ -4,8 +4,8 @@ import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'; +import { logger } from '@sentry/core'; import type { Client } from '@sentry/types'; -import { logger } from '@sentry/utils'; import { createApp } from 'vue'; import * as Sentry from '../../src'; diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 5ab828c65c3a..3572a9cc8d66 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -1,6 +1,6 @@ { "name": "@sentry/wasm", - "version": "8.38.0", + "version": "8.39.0", "description": "Support for WASM.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/wasm", @@ -39,10 +39,9 @@ "access": "public" }, "dependencies": { - "@sentry/browser": "8.38.0", - "@sentry/core": "8.38.0", - "@sentry/types": "8.38.0", - "@sentry/utils": "8.38.0" + "@sentry/browser": "8.39.0", + "@sentry/core": "8.39.0", + "@sentry/types": "8.39.0" }, "scripts": { "build": "run-p build:transpile build:bundle build:types", diff --git a/scripts/build-types-watch.ts b/scripts/build-types-watch.ts index 8b29635479d0..c94cb62f4063 100644 --- a/scripts/build-types-watch.ts +++ b/scripts/build-types-watch.ts @@ -2,7 +2,7 @@ /** * If `yarn build:types:watch` is run without types files previously having been created, the build will get stuck in an * errored state. This happens because lerna runs all of the packages' `yarn build:types:watch` statements in parallel, - * and so packages like `@sentry/browser` will at first be missing types they import from packages like `@sentry/utils` + * and so packages like `@sentry/browser` will at first be missing types they import from packages like `@sentry/core` * and `@sentry/types`, causing errors to be thrown. Normally this is fine, because as the dependencies' types get * built, file changes will be detected and the dependent packages' types will try again to build themselves. There * might be several rounds of this, but in theory, eventually all packages should end up with an error-free build. For