From a110f9558cefded89704f6f8b4a48c98e764dfd7 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 10:09:55 +0100 Subject: [PATCH 01/10] WIP swap package names only --- packages/astro/package.json | 2 +- packages/bun/package.json | 2 +- packages/nextjs/package.json | 2 +- packages/nextjs/test/integration/package.json | 3 +- packages/node-experimental/package.json | 4 +- packages/node/package.json | 4 +- packages/opentelemetry-node/package.json | 2 +- packages/profiling-node/package.json | 8 ++-- packages/remix/package.json | 2 +- packages/remix/test/integration/package.json | 3 +- packages/serverless/package.json | 2 +- packages/sveltekit/package.json | 2 +- yarn.lock | 40 ------------------- 13 files changed, 19 insertions(+), 57 deletions(-) diff --git a/packages/astro/package.json b/packages/astro/package.json index b26f7561d644..825da5812ac0 100644 --- a/packages/astro/package.json +++ b/packages/astro/package.json @@ -51,7 +51,7 @@ "dependencies": { "@sentry/browser": "7.100.0", "@sentry/core": "7.100.0", - "@sentry/node": "7.100.0", + "@sentry/node-experimental": "7.100.0", "@sentry/types": "7.100.0", "@sentry/utils": "7.100.0", "@sentry/vite-plugin": "^2.8.0" diff --git a/packages/bun/package.json b/packages/bun/package.json index bac554fee6dd..30aa8241b998 100644 --- a/packages/bun/package.json +++ b/packages/bun/package.json @@ -30,7 +30,7 @@ }, "dependencies": { "@sentry/core": "7.100.0", - "@sentry/node": "7.100.0", + "@sentry/node-experimental": "7.100.0", "@sentry/types": "7.100.0", "@sentry/utils": "7.100.0" }, diff --git a/packages/nextjs/package.json b/packages/nextjs/package.json index 3f6ef36ca15f..e6767dbb95d3 100644 --- a/packages/nextjs/package.json +++ b/packages/nextjs/package.json @@ -27,7 +27,7 @@ "@rollup/plugin-commonjs": "24.0.0", "@sentry/core": "7.100.0", "@sentry/integrations": "7.100.0", - "@sentry/node": "7.100.0", + "@sentry/node-experimental": "7.100.0", "@sentry/react": "7.100.0", "@sentry/types": "7.100.0", "@sentry/utils": "7.100.0", diff --git a/packages/nextjs/test/integration/package.json b/packages/nextjs/test/integration/package.json index 14ac5a38aa6b..bd45c952e67a 100644 --- a/packages/nextjs/test/integration/package.json +++ b/packages/nextjs/test/integration/package.json @@ -28,7 +28,8 @@ "@sentry/browser": "file:../../../browser", "@sentry/core": "file:../../../core", "@sentry/integrations": "file:../../../integrations", - "@sentry/node": "file:../../../node", + "@sentry/node": "file:../../../node-experimental", + "@sentry/node-experimental": "file:../../../node", "@sentry/react": "file:../../../react", "@sentry/replay": "file:../../../replay", "@sentry-internal/replay-canvas": "file:../../../replay-canvas", diff --git a/packages/node-experimental/package.json b/packages/node-experimental/package.json index 62c1072001cc..ca58b1cd5186 100644 --- a/packages/node-experimental/package.json +++ b/packages/node-experimental/package.json @@ -1,7 +1,7 @@ { - "name": "@sentry/node-experimental", + "name": "@sentry/node", "version": "7.100.0", - "description": "Experimental version of a Node SDK using OpenTelemetry for performance instrumentation", + "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-experimental", "author": "Sentry", diff --git a/packages/node/package.json b/packages/node/package.json index 28d51122a57c..8dd73523d1e4 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -1,7 +1,7 @@ { - "name": "@sentry/node", + "name": "@sentry/node-experimental", "version": "7.100.0", - "description": "Official Sentry SDK for Node.js", + "description": "The old version of Sentry SDK for Node.js, without OpenTelemetry support.", "repository": "git://github.com/getsentry/sentry-javascript.git", "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/node", "author": "Sentry", diff --git a/packages/opentelemetry-node/package.json b/packages/opentelemetry-node/package.json index 9574933a1c86..78812137e8e1 100644 --- a/packages/opentelemetry-node/package.json +++ b/packages/opentelemetry-node/package.json @@ -45,7 +45,7 @@ "@opentelemetry/sdk-trace-base": "^1.17.1", "@opentelemetry/sdk-trace-node": "^1.17.1", "@opentelemetry/semantic-conventions": "^1.17.1", - "@sentry/node": "7.100.0" + "@sentry/node-experimental": "7.100.0" }, "scripts": { "build": "run-p build:transpile build:types", diff --git a/packages/profiling-node/package.json b/packages/profiling-node/package.json index fd999c68b3ba..0b4bf0447a75 100644 --- a/packages/profiling-node/package.json +++ b/packages/profiling-node/package.json @@ -68,10 +68,10 @@ "node-abi": "^3.52.0" }, "devDependencies": { - "@sentry/core": "7.93.0", - "@sentry/node": "7.93.0", - "@sentry/types": "7.93.0", - "@sentry/utils": "7.93.0", + "@sentry/core": "7.100.0", + "@sentry/node-experimental": "7.100.0", + "@sentry/types": "7.100.0", + "@sentry/utils": "7.100.0", "@types/node": "16.18.70", "@types/node-abi": "^3.0.0", "clang-format": "^1.8.0", diff --git a/packages/remix/package.json b/packages/remix/package.json index 54c5c980db55..81711cead0f2 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -36,7 +36,7 @@ "dependencies": { "@sentry/cli": "^2.28.6", "@sentry/core": "7.100.0", - "@sentry/node": "7.100.0", + "@sentry/node-experimental": "7.100.0", "@sentry/react": "7.100.0", "@sentry/types": "7.100.0", "@sentry/utils": "7.100.0", diff --git a/packages/remix/test/integration/package.json b/packages/remix/test/integration/package.json index 03068150e6f8..d151771125b9 100644 --- a/packages/remix/test/integration/package.json +++ b/packages/remix/test/integration/package.json @@ -26,7 +26,8 @@ "@sentry/browser": "file:../../../browser", "@sentry/core": "file:../../../core", "@sentry/integrations": "file:../../../integrations", - "@sentry/node": "file:../../../node", + "@sentry/node": "file:../../../node-experimental", + "@sentry/node-experimental": "file:../../../node", "@sentry/react": "file:../../../react", "@sentry/replay": "file:../../../replay", "@sentry-internal/replay-canvas": "file:../../../replay-canvas", diff --git a/packages/serverless/package.json b/packages/serverless/package.json index e94ed265dcdc..08f790c487ca 100644 --- a/packages/serverless/package.json +++ b/packages/serverless/package.json @@ -30,7 +30,7 @@ }, "dependencies": { "@sentry/core": "7.100.0", - "@sentry/node": "7.100.0", + "@sentry/node-experimental": "7.100.0", "@sentry/types": "7.100.0", "@sentry/utils": "7.100.0", "@types/aws-lambda": "^8.10.62", diff --git a/packages/sveltekit/package.json b/packages/sveltekit/package.json index 9b62eb76fa57..99f55c0e2ca4 100644 --- a/packages/sveltekit/package.json +++ b/packages/sveltekit/package.json @@ -40,7 +40,7 @@ "@sentry-internal/tracing": "7.100.0", "@sentry/core": "7.100.0", "@sentry/integrations": "7.100.0", - "@sentry/node": "7.100.0", + "@sentry/node-experimental": "7.100.0", "@sentry/svelte": "7.100.0", "@sentry/types": "7.100.0", "@sentry/utils": "7.100.0", diff --git a/yarn.lock b/yarn.lock index f618c7d7d485..522fb4df4a61 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5621,15 +5621,6 @@ fflate "^0.4.4" mitt "^3.0.0" -"@sentry-internal/tracing@7.93.0": - version "7.93.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.93.0.tgz#8cee8b610695d828af75edd2929b64b7caf0385d" - integrity sha512-DjuhmQNywPp+8fxC9dvhGrqgsUb6wI/HQp25lS2Re7VxL1swCasvpkg8EOYP4iBniVQ86QK0uITkOIRc5tdY1w== - dependencies: - "@sentry/core" "7.93.0" - "@sentry/types" "7.93.0" - "@sentry/utils" "7.93.0" - "@sentry/bundler-plugin-core@0.6.1": version "0.6.1" resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-0.6.1.tgz#6c6a2ff3cdc98cd0ff1c30c59408cee9f067adf2" @@ -5724,37 +5715,6 @@ "@sentry/cli-win32-i686" "2.28.6" "@sentry/cli-win32-x64" "2.28.6" -"@sentry/core@7.93.0": - version "7.93.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.93.0.tgz#50a14bf305130dfef51810e4c97fcba4972a57ef" - integrity sha512-vZQSUiDn73n+yu2fEcH+Wpm4GbRmtxmnXnYCPgM6IjnXqkVm3awWAkzrheADblx3kmxrRiOlTXYHw9NTWs56fg== - dependencies: - "@sentry/types" "7.93.0" - "@sentry/utils" "7.93.0" - -"@sentry/node@7.93.0": - version "7.93.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-7.93.0.tgz#7786d05d1e3e984207a866b07df1bf891355892e" - integrity sha512-nUXPCZQm5Y9Ipv7iWXLNp5dbuyi1VvbJ3RtlwD7utgsNkRYB4ixtKE9w2QU8DZZAjaEF6w2X94OkYH6C932FWw== - dependencies: - "@sentry-internal/tracing" "7.93.0" - "@sentry/core" "7.93.0" - "@sentry/types" "7.93.0" - "@sentry/utils" "7.93.0" - https-proxy-agent "^5.0.0" - -"@sentry/types@7.93.0": - version "7.93.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.93.0.tgz#d76d26259b40cd0688e1d634462fbff31476c1ec" - integrity sha512-UnzUccNakhFRA/esWBWP+0v7cjNg+RilFBQC03Mv9OEMaZaS29zSbcOGtRzuFOXXLBdbr44BWADqpz3VW0XaNw== - -"@sentry/utils@7.93.0": - version "7.93.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.93.0.tgz#36225038661fe977baf01e4695ef84794d591e45" - integrity sha512-Iovj7tUnbgSkh/WrAaMrd5UuYjW7AzyzZlFDIUrwidsyIdUficjCG2OIxYzh76H6nYIx9SxewW0R54Q6XoB4uA== - dependencies: - "@sentry/types" "7.93.0" - "@sentry/vite-plugin@^0.6.1": version "0.6.1" resolved "https://registry.yarnpkg.com/@sentry/vite-plugin/-/vite-plugin-0.6.1.tgz#31eb744e8d87b1528eed8d41433647727a62e7c0" From 13fa64486b9f78618f2a3b1d90fca664300b37bd Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 10:25:22 +0100 Subject: [PATCH 02/10] ref: Rename usages of node to node-experimental in downstream packages --- packages/astro/src/index.server.ts | 6 +++--- packages/astro/src/integration/index.ts | 2 +- packages/astro/src/server/middleware.ts | 2 +- packages/astro/src/server/sdk.ts | 4 ++-- packages/astro/test/server/middleware.test.ts | 2 +- packages/astro/test/server/sdk.test.ts | 4 ++-- packages/bun/src/index.ts | 6 +++--- packages/bun/src/sdk.ts | 6 +++--- packages/nextjs/src/config/webpack.ts | 2 +- packages/nextjs/src/server/httpIntegration.ts | 2 +- packages/nextjs/src/server/index.ts | 10 ++++++--- .../server/onUncaughtExceptionIntegration.ts | 2 +- packages/nextjs/test/serverSdk.test.ts | 4 ++-- .../test/spanprocessor.test.ts | 2 +- packages/profiling-node/src/hubextensions.ts | 21 ++++++++----------- packages/profiling-node/src/integration.ts | 9 +++++--- packages/profiling-node/src/utils.ts | 2 +- .../test/hubextensions.hub.test.ts | 2 +- .../profiling-node/test/hubextensions.test.ts | 2 +- packages/profiling-node/test/index.test.ts | 2 +- packages/remix/src/index.server.ts | 8 +++---- packages/remix/src/utils/instrumentServer.ts | 2 +- packages/remix/src/utils/remixOptions.ts | 2 +- .../remix/src/utils/serverAdapters/express.ts | 2 +- packages/remix/test/index.server.test.ts | 2 +- .../serverless/scripts/buildLambdaLayer.ts | 2 +- packages/serverless/src/awslambda.ts | 8 +++---- packages/serverless/src/awsservices.ts | 2 +- .../src/gcpfunction/cloud_events.ts | 2 +- packages/serverless/src/gcpfunction/events.ts | 2 +- packages/serverless/src/gcpfunction/http.ts | 6 +++--- packages/serverless/src/gcpfunction/index.ts | 8 +++++-- packages/serverless/src/google-cloud-grpc.ts | 2 +- packages/serverless/src/google-cloud-http.ts | 2 +- packages/serverless/src/index.awslambda.ts | 2 +- packages/serverless/src/index.ts | 4 ++-- packages/serverless/test/awslambda.test.ts | 4 ++-- packages/serverless/test/awsservices.test.ts | 6 +++--- packages/serverless/test/gcpfunction.test.ts | 4 ++-- .../serverless/test/google-cloud-grpc.test.ts | 6 +++--- .../serverless/test/google-cloud-http.test.ts | 6 +++--- packages/sveltekit/src/server/handle.ts | 2 +- packages/sveltekit/src/server/handleError.ts | 2 +- packages/sveltekit/src/server/index.ts | 6 +++--- packages/sveltekit/src/server/load.ts | 2 +- packages/sveltekit/src/server/sdk.ts | 6 +++--- packages/sveltekit/src/server/utils.ts | 2 +- packages/sveltekit/src/vite/sourceMaps.ts | 2 +- packages/sveltekit/test/server/handle.test.ts | 4 ++-- .../sveltekit/test/server/handleError.test.ts | 2 +- packages/sveltekit/test/server/load.test.ts | 2 +- packages/sveltekit/test/server/sdk.test.ts | 6 +++--- 52 files changed, 109 insertions(+), 101 deletions(-) diff --git a/packages/astro/src/index.server.ts b/packages/astro/src/index.server.ts index 7a8ff4427e12..d3aba19e9ac6 100644 --- a/packages/astro/src/index.server.ts +++ b/packages/astro/src/index.server.ts @@ -1,5 +1,5 @@ // Node SDK exports -// Unfortunately, we cannot `export * from '@sentry/node'` because in prod builds, +// Unfortunately, we cannot `export * from '@sentry/node-experimental'` because in prod builds, // Vite puts these exports into a `default` property (Sentry.default) rather than // on the top - level namespace. @@ -72,10 +72,10 @@ export { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, -} from '@sentry/node'; +} from '@sentry/node-experimental'; // We can still leave this for the carrier init and type exports -export * from '@sentry/node'; +export * from '@sentry/node-experimental'; export { init } from './server/sdk'; diff --git a/packages/astro/src/integration/index.ts b/packages/astro/src/integration/index.ts index 15e48cb49f12..4493fb8c34eb 100644 --- a/packages/astro/src/integration/index.ts +++ b/packages/astro/src/integration/index.ts @@ -91,7 +91,7 @@ export const sentryAstro = (options: SentryOptions = {}): AstroIntegration => { // @sentry/node is required in case we have 2 different @sentry/node // packages installed in the same project. // Ref: https://github.com/getsentry/sentry-javascript/issues/10121 - noExternal: ['@sentry/astro', '@sentry/node'], + noExternal: ['@sentry/astro', '@sentry/node-experimental'], }, }, }); diff --git a/packages/astro/src/server/middleware.ts b/packages/astro/src/server/middleware.ts index 7c0246174202..20da1f7d407c 100644 --- a/packages/astro/src/server/middleware.ts +++ b/packages/astro/src/server/middleware.ts @@ -7,7 +7,7 @@ import { getCurrentScope, startSpan, withIsolationScope, -} from '@sentry/node'; +} from '@sentry/node-experimental'; import type { Client, Scope, Span } from '@sentry/types'; import { addNonEnumerableProperty, objectify, stripUrlQueryAndFragment } from '@sentry/utils'; import type { APIContext, MiddlewareResponseHandler } from 'astro'; diff --git a/packages/astro/src/server/sdk.ts b/packages/astro/src/server/sdk.ts index 6a529b60b74e..d7b4983a7bc3 100644 --- a/packages/astro/src/server/sdk.ts +++ b/packages/astro/src/server/sdk.ts @@ -1,6 +1,6 @@ import { applySdkMetadata } from '@sentry/core'; -import type { NodeOptions } from '@sentry/node'; -import { init as initNodeSdk, setTag } from '@sentry/node'; +import type { NodeOptions } from '@sentry/node-experimental'; +import { init as initNodeSdk, setTag } from '@sentry/node-experimental'; /** * diff --git a/packages/astro/test/server/middleware.test.ts b/packages/astro/test/server/middleware.test.ts index 442e144bccb8..eb0ca9a9daba 100644 --- a/packages/astro/test/server/middleware.test.ts +++ b/packages/astro/test/server/middleware.test.ts @@ -1,5 +1,5 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core'; -import * as SentryNode from '@sentry/node'; +import * as SentryNode from '@sentry/node-experimental'; import type { Client, Span } from '@sentry/types'; import { vi } from 'vitest'; diff --git a/packages/astro/test/server/sdk.test.ts b/packages/astro/test/server/sdk.test.ts index 1b042ee5331a..b1dc3821c88f 100644 --- a/packages/astro/test/server/sdk.test.ts +++ b/packages/astro/test/server/sdk.test.ts @@ -1,5 +1,5 @@ -import * as SentryNode from '@sentry/node'; -import { SDK_VERSION } from '@sentry/node'; +import * as SentryNode from '@sentry/node-experimental'; +import { SDK_VERSION } from '@sentry/node-experimental'; import { vi } from 'vitest'; import { init } from '../../src/server/sdk'; diff --git a/packages/bun/src/index.ts b/packages/bun/src/index.ts index e95d4d047c23..7aa59dc81bef 100644 --- a/packages/bun/src/index.ts +++ b/packages/bun/src/index.ts @@ -18,7 +18,7 @@ export type { } from '@sentry/types'; export type { AddRequestDataToEventOptions } from '@sentry/utils'; -export type { TransactionNamingScheme } from '@sentry/node'; +export type { TransactionNamingScheme } from '@sentry/node-experimental'; export type { BunOptions } from './types'; export { @@ -109,7 +109,7 @@ export { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, -} from '@sentry/node'; +} from '@sentry/node-experimental'; export { BunClient } from './client'; export { @@ -118,7 +118,7 @@ export { } from './sdk'; import { Integrations as CoreIntegrations } from '@sentry/core'; -import { Integrations as NodeIntegrations } from '@sentry/node'; +import { Integrations as NodeIntegrations } from '@sentry/node-experimental'; import { BunServer } from './integrations/bunserver'; export { bunServerIntegration } from './integrations/bunserver'; diff --git a/packages/bun/src/sdk.ts b/packages/bun/src/sdk.ts index dacc78120ae1..b7eddfed9c73 100644 --- a/packages/bun/src/sdk.ts +++ b/packages/bun/src/sdk.ts @@ -13,7 +13,7 @@ import { modulesIntegration, nativeNodeFetchintegration, nodeContextIntegration, -} from '@sentry/node'; +} from '@sentry/node-experimental'; import type { Integration, Options } from '@sentry/types'; import { BunClient } from './client'; @@ -67,7 +67,7 @@ export function getDefaultIntegrations(_options: Options): Integration[] { * @example * ``` * - * const { addBreadcrumb } = require('@sentry/node'); + * const { addBreadcrumb } = require('@sentry/node-experimental'); * addBreadcrumb({ * message: 'My Breadcrumb', * // ... @@ -77,7 +77,7 @@ export function getDefaultIntegrations(_options: Options): Integration[] { * @example * ``` * - * const Sentry = require('@sentry/node'); + * const Sentry = require('@sentry/node-experimental'); * Sentry.captureMessage('Hello, world!'); * Sentry.captureException(new Error('Good bye')); * Sentry.captureEvent({ diff --git a/packages/nextjs/src/config/webpack.ts b/packages/nextjs/src/config/webpack.ts index dcaa757cb767..a6555c3b3343 100644 --- a/packages/nextjs/src/config/webpack.ts +++ b/packages/nextjs/src/config/webpack.ts @@ -2,7 +2,7 @@ import * as fs from 'fs'; import * as path from 'path'; /* eslint-disable complexity */ /* eslint-disable max-lines */ -import { getSentryRelease } from '@sentry/node'; +import { getSentryRelease } from '@sentry/node-experimental'; import { arrayify, dropUndefinedKeys, escapeStringForRegex, loadModule, logger } from '@sentry/utils'; import type SentryCliPlugin from '@sentry/webpack-plugin'; import * as chalk from 'chalk'; diff --git a/packages/nextjs/src/server/httpIntegration.ts b/packages/nextjs/src/server/httpIntegration.ts index 4252cffcaa86..a170e86bd4ea 100644 --- a/packages/nextjs/src/server/httpIntegration.ts +++ b/packages/nextjs/src/server/httpIntegration.ts @@ -1,4 +1,4 @@ -import { Integrations } from '@sentry/node'; +import { Integrations } from '@sentry/node-experimental'; /** * A custom HTTP integration where we always enable tracing. diff --git a/packages/nextjs/src/server/index.ts b/packages/nextjs/src/server/index.ts index b4f42b2fbad7..5820b783b1b9 100644 --- a/packages/nextjs/src/server/index.ts +++ b/packages/nextjs/src/server/index.ts @@ -1,6 +1,10 @@ import { addEventProcessor, addTracingExtensions, applySdkMetadata, getClient, setTag } from '@sentry/core'; -import type { NodeOptions } from '@sentry/node'; -import { Integrations as OriginalIntegrations, getDefaultIntegrations, init as nodeInit } from '@sentry/node'; +import type { NodeOptions } from '@sentry/node-experimental'; +import { + Integrations as OriginalIntegrations, + getDefaultIntegrations, + init as nodeInit, +} from '@sentry/node-experimental'; import type { EventProcessor } from '@sentry/types'; import { logger } from '@sentry/utils'; @@ -13,7 +17,7 @@ import { Http } from './httpIntegration'; import { OnUncaughtException } from './onUncaughtExceptionIntegration'; export { createReduxEnhancer } from '@sentry/react'; -export * from '@sentry/node'; +export * from '@sentry/node-experimental'; export { captureUnderscoreErrorException } from '../common/_error'; export const Integrations = { diff --git a/packages/nextjs/src/server/onUncaughtExceptionIntegration.ts b/packages/nextjs/src/server/onUncaughtExceptionIntegration.ts index 6e9e0c034676..e88520cf9534 100644 --- a/packages/nextjs/src/server/onUncaughtExceptionIntegration.ts +++ b/packages/nextjs/src/server/onUncaughtExceptionIntegration.ts @@ -1,4 +1,4 @@ -import { Integrations } from '@sentry/node'; +import { Integrations } from '@sentry/node-experimental'; /** * A custom OnUncaughtException integration that does not exit by default. diff --git a/packages/nextjs/test/serverSdk.test.ts b/packages/nextjs/test/serverSdk.test.ts index f89e0f771349..a9ce73588e7a 100644 --- a/packages/nextjs/test/serverSdk.test.ts +++ b/packages/nextjs/test/serverSdk.test.ts @@ -1,5 +1,5 @@ -import * as SentryNode from '@sentry/node'; -import { getClient, getCurrentScope } from '@sentry/node'; +import * as SentryNode from '@sentry/node-experimental'; +import { getClient, getCurrentScope } from '@sentry/node-experimental'; import type { Integration } from '@sentry/types'; import { GLOBAL_OBJ, logger } from '@sentry/utils'; diff --git a/packages/opentelemetry-node/test/spanprocessor.test.ts b/packages/opentelemetry-node/test/spanprocessor.test.ts index b5e2a26fa4c2..1f293b6f80d8 100644 --- a/packages/opentelemetry-node/test/spanprocessor.test.ts +++ b/packages/opentelemetry-node/test/spanprocessor.test.ts @@ -8,7 +8,7 @@ import type { SpanStatusType } from '@sentry/core'; import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core'; import { captureException, getCurrentScope, setCurrentClient } from '@sentry/core'; import { SentrySpan, Transaction, addTracingExtensions, createTransport, spanToJSON } from '@sentry/core'; -import { NodeClient } from '@sentry/node'; +import { NodeClient } from '@sentry/node-experimental'; import { resolvedSyncPromise } from '@sentry/utils'; import { SentrySpanProcessor } from '../src/spanprocessor'; diff --git a/packages/profiling-node/src/hubextensions.ts b/packages/profiling-node/src/hubextensions.ts index 66a43d3fcb28..19fe86777bff 100644 --- a/packages/profiling-node/src/hubextensions.ts +++ b/packages/profiling-node/src/hubextensions.ts @@ -1,5 +1,5 @@ -import { getMainCarrier } from '@sentry/core'; -import type { NodeClient } from '@sentry/node'; +import { getMainCarrier, spanToJSON } from '@sentry/core'; +import type { NodeClient } from '@sentry/node-experimental'; import type { CustomSamplingContext, Hub, Transaction, TransactionContext } from '@sentry/types'; import { logger, uuid4 } from '@sentry/utils'; @@ -89,9 +89,7 @@ export function maybeProfileTransaction( const profile_id = uuid4(); CpuProfilerBindings.startProfiling(profile_id); - DEBUG_BUILD && - // eslint-disable-next-line deprecation/deprecation - logger.log(`[Profiling] started profiling transaction: ${transaction.name}`); + DEBUG_BUILD && logger.log(`[Profiling] started profiling transaction: ${spanToJSON(transaction).description}`); // set transaction context - do this regardless if profiling fails down the line // so that we can still see the profile_id in the transaction context @@ -115,16 +113,13 @@ export function stopTransactionProfile( const profile = CpuProfilerBindings.stopProfiling(profile_id); - DEBUG_BUILD && - // eslint-disable-next-line deprecation/deprecation - logger.log(`[Profiling] stopped profiling of transaction: ${transaction.name}`); + DEBUG_BUILD && logger.log(`[Profiling] stopped profiling of transaction: ${spanToJSON(transaction).description}`); // In case of an overlapping transaction, stopProfiling may return null and silently ignore the overlapping profile. if (!profile) { DEBUG_BUILD && logger.log( - // eslint-disable-next-line deprecation/deprecation - `[Profiling] profiler returned null profile for: ${transaction.name}`, + `[Profiling] profiler returned null profile for: ${spanToJSON(transaction).description}`, 'this may indicate an overlapping transaction or a call to stopProfiling with a profile title that was never started', ); return null; @@ -179,8 +174,10 @@ export function __PRIVATE__wrapStartTransactionWithProfiling(startTransaction: S // Enqueue a timeout to prevent profiles from running over max duration. let maxDurationTimeoutID: NodeJS.Timeout | void = global.setTimeout(() => { DEBUG_BUILD && - // eslint-disable-next-line deprecation/deprecation - logger.log('[Profiling] max profile duration elapsed, stopping profiling for:', transaction.name); + logger.log( + '[Profiling] max profile duration elapsed, stopping profiling for:', + spanToJSON(transaction).description, + ); profile = stopTransactionProfile(transaction, profile_id); }, maxProfileDurationMs); diff --git a/packages/profiling-node/src/integration.ts b/packages/profiling-node/src/integration.ts index 28bf24f0d784..3e9cfd99b844 100644 --- a/packages/profiling-node/src/integration.ts +++ b/packages/profiling-node/src/integration.ts @@ -1,4 +1,5 @@ -import type { NodeClient } from '@sentry/node'; +import { spanToJSON } from '@sentry/core'; +import type { NodeClient } from '@sentry/node-experimental'; import type { Event, EventProcessor, Hub, Integration, Transaction } from '@sentry/types'; import { logger } from '@sentry/utils'; @@ -79,8 +80,10 @@ export class ProfilingIntegration implements Integration { // Enqueue a timeout to prevent profiles from running over max duration. PROFILE_TIMEOUTS[profile_id] = global.setTimeout(() => { DEBUG_BUILD && - // eslint-disable-next-line deprecation/deprecation - logger.log('[Profiling] max profile duration elapsed, stopping profiling for:', transaction.name); + logger.log( + '[Profiling] max profile duration elapsed, stopping profiling for:', + spanToJSON(transaction).description, + ); const profile = stopTransactionProfile(transaction, profile_id); if (profile) { diff --git a/packages/profiling-node/src/utils.ts b/packages/profiling-node/src/utils.ts index 1e34fbfd8974..8885c1c12f9e 100644 --- a/packages/profiling-node/src/utils.ts +++ b/packages/profiling-node/src/utils.ts @@ -17,7 +17,7 @@ import type { import { env, versions } from 'process'; import { isMainThread, threadId } from 'worker_threads'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import { GLOBAL_OBJ, createEnvelope, dropUndefinedKeys, dsnToString, forEachEnvelopeItem, logger } from '@sentry/utils'; import { DEBUG_BUILD } from './debug-build'; diff --git a/packages/profiling-node/test/hubextensions.hub.test.ts b/packages/profiling-node/test/hubextensions.hub.test.ts index 954f3300ffca..87b2154deeaf 100644 --- a/packages/profiling-node/test/hubextensions.hub.test.ts +++ b/packages/profiling-node/test/hubextensions.hub.test.ts @@ -1,4 +1,4 @@ -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import { getMainCarrier } from '@sentry/core'; import type { Transport } from '@sentry/types'; diff --git a/packages/profiling-node/test/hubextensions.test.ts b/packages/profiling-node/test/hubextensions.test.ts index df90200c2a5d..ffa4131b96ab 100644 --- a/packages/profiling-node/test/hubextensions.test.ts +++ b/packages/profiling-node/test/hubextensions.test.ts @@ -7,7 +7,7 @@ import type { TransactionMetadata, } from '@sentry/types'; -import type { NodeClient } from '@sentry/node'; +import type { NodeClient } from '@sentry/node-experimental'; import { CpuProfilerBindings } from '../src/cpu_profiler'; import { __PRIVATE__wrapStartTransactionWithProfiling } from '../src/hubextensions'; diff --git a/packages/profiling-node/test/index.test.ts b/packages/profiling-node/test/index.test.ts index ab6aaebfb86a..d0ac92ad65d6 100644 --- a/packages/profiling-node/test/index.test.ts +++ b/packages/profiling-node/test/index.test.ts @@ -1,4 +1,4 @@ -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import type { Transport } from '@sentry/types'; import { getMainCarrier } from '@sentry/core'; diff --git a/packages/remix/src/index.server.ts b/packages/remix/src/index.server.ts index 54afd27f8bfa..7715deb7d0a4 100644 --- a/packages/remix/src/index.server.ts +++ b/packages/remix/src/index.server.ts @@ -1,6 +1,6 @@ import { applySdkMetadata } from '@sentry/core'; -import type { NodeOptions } from '@sentry/node'; -import { getClient, init as nodeInit, setTag } from '@sentry/node'; +import type { NodeOptions } from '@sentry/node-experimental'; +import { getClient, init as nodeInit, setTag } from '@sentry/node-experimental'; import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from './utils/debug-build'; @@ -91,10 +91,10 @@ export { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, -} from '@sentry/node'; +} from '@sentry/node-experimental'; // Keeping the `*` exports for backwards compatibility and types -export * from '@sentry/node'; +export * from '@sentry/node-experimental'; export { captureRemixServerException, wrapRemixHandleError } from './utils/instrumentServer'; export { ErrorBoundary, withErrorBoundary } from '@sentry/react'; diff --git a/packages/remix/src/utils/instrumentServer.ts b/packages/remix/src/utils/instrumentServer.ts index 76c181199541..f7b9429dc7a8 100644 --- a/packages/remix/src/utils/instrumentServer.ts +++ b/packages/remix/src/utils/instrumentServer.ts @@ -13,7 +13,7 @@ import { spanToTraceHeader, withIsolationScope, } from '@sentry/core'; -import { captureException, getCurrentHub } from '@sentry/node'; +import { captureException, getCurrentHub } from '@sentry/node-experimental'; import type { Hub, Transaction, TransactionSource, WrappedFunction } from '@sentry/types'; import { addExceptionMechanism, diff --git a/packages/remix/src/utils/remixOptions.ts b/packages/remix/src/utils/remixOptions.ts index 4a1fe13e18e1..6ac57b5a2f1e 100644 --- a/packages/remix/src/utils/remixOptions.ts +++ b/packages/remix/src/utils/remixOptions.ts @@ -1,4 +1,4 @@ -import type { NodeOptions } from '@sentry/node'; +import type { NodeOptions } from '@sentry/node-experimental'; import type { BrowserOptions } from '@sentry/react'; import type { Options } from '@sentry/types'; diff --git a/packages/remix/src/utils/serverAdapters/express.ts b/packages/remix/src/utils/serverAdapters/express.ts index dea4357e07db..399ba531f23a 100644 --- a/packages/remix/src/utils/serverAdapters/express.ts +++ b/packages/remix/src/utils/serverAdapters/express.ts @@ -1,5 +1,5 @@ import { getClient, getCurrentHub, hasTracingEnabled, setHttpStatus, withIsolationScope } from '@sentry/core'; -import { flush } from '@sentry/node'; +import { flush } from '@sentry/node-experimental'; import type { Transaction } from '@sentry/types'; import { extractRequestData, fill, isString, logger } from '@sentry/utils'; import { cwd } from 'process'; diff --git a/packages/remix/test/index.server.test.ts b/packages/remix/test/index.server.test.ts index 79c138203012..71d2933f9d0e 100644 --- a/packages/remix/test/index.server.test.ts +++ b/packages/remix/test/index.server.test.ts @@ -1,4 +1,4 @@ -import * as SentryNode from '@sentry/node'; +import * as SentryNode from '@sentry/node-experimental'; import { Integrations, init } from '../src/index.server'; diff --git a/packages/serverless/scripts/buildLambdaLayer.ts b/packages/serverless/scripts/buildLambdaLayer.ts index a462a33c6804..18016434a529 100644 --- a/packages/serverless/scripts/buildLambdaLayer.ts +++ b/packages/serverless/scripts/buildLambdaLayer.ts @@ -18,7 +18,7 @@ async function buildLambdaLayer(): Promise { // Create the main SDK bundle // TODO: Check if we can get rid of this, after the lerna 6/nx update?? await ensureBundleBuildPrereqs({ - dependencies: ['@sentry/utils', '@sentry/core', '@sentry/node'], + dependencies: ['@sentry/utils', '@sentry/core', '@sentry/node-experimental'], }); run('yarn rollup --config rollup.aws.config.mjs'); diff --git a/packages/serverless/src/awslambda.ts b/packages/serverless/src/awslambda.ts index 668132dd92ff..5a6fcea389fa 100644 --- a/packages/serverless/src/awslambda.ts +++ b/packages/serverless/src/awslambda.ts @@ -2,8 +2,8 @@ import { existsSync } from 'fs'; import { hostname } from 'os'; import { basename, resolve } from 'path'; import { types } from 'util'; -import type { NodeOptions } from '@sentry/node'; -import { SDK_VERSION } from '@sentry/node'; +import type { NodeOptions } from '@sentry/node-experimental'; +import { SDK_VERSION } from '@sentry/node-experimental'; import { captureException, captureMessage, @@ -14,7 +14,7 @@ import { init as initNode, startSpanManual, withScope, -} from '@sentry/node'; +} from '@sentry/node-experimental'; import type { Integration, Options, Scope, SdkMetadata, Span } from '@sentry/types'; import { isString, logger } from '@sentry/utils'; import type { Context, Handler } from 'aws-lambda'; @@ -26,7 +26,7 @@ import { awsServicesIntegration } from './awsservices'; import { DEBUG_BUILD } from './debug-build'; import { markEventUnhandled } from './utils'; -export * from '@sentry/node'; +export * from '@sentry/node-experimental'; const { isPromise } = types; diff --git a/packages/serverless/src/awsservices.ts b/packages/serverless/src/awsservices.ts index 084fdbf0238a..33e4816ac836 100644 --- a/packages/serverless/src/awsservices.ts +++ b/packages/serverless/src/awsservices.ts @@ -1,5 +1,5 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, convertIntegrationFnToClass, defineIntegration } from '@sentry/core'; -import { getClient, startInactiveSpan } from '@sentry/node'; +import { getClient, startInactiveSpan } from '@sentry/node-experimental'; import type { Client, Integration, IntegrationClass, IntegrationFn, Span } from '@sentry/types'; import { fill } from '@sentry/utils'; // 'aws-sdk/global' import is expected to be type-only so it's erased in the final .js file. diff --git a/packages/serverless/src/gcpfunction/cloud_events.ts b/packages/serverless/src/gcpfunction/cloud_events.ts index 533c74bb7653..3d5ac9d3d1dc 100644 --- a/packages/serverless/src/gcpfunction/cloud_events.ts +++ b/packages/serverless/src/gcpfunction/cloud_events.ts @@ -1,5 +1,5 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, handleCallbackErrors } from '@sentry/core'; -import { captureException, flush, getCurrentScope, startSpanManual } from '@sentry/node'; +import { captureException, flush, getCurrentScope, startSpanManual } from '@sentry/node-experimental'; import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; diff --git a/packages/serverless/src/gcpfunction/events.ts b/packages/serverless/src/gcpfunction/events.ts index 501b6f7d6da3..3503a427ee1f 100644 --- a/packages/serverless/src/gcpfunction/events.ts +++ b/packages/serverless/src/gcpfunction/events.ts @@ -1,5 +1,5 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, handleCallbackErrors } from '@sentry/core'; -import { captureException, flush, getCurrentScope, startSpanManual } from '@sentry/node'; +import { captureException, flush, getCurrentScope, startSpanManual } from '@sentry/node-experimental'; import { logger } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; diff --git a/packages/serverless/src/gcpfunction/http.ts b/packages/serverless/src/gcpfunction/http.ts index fe5279ddc6cf..17ee38d18e0e 100644 --- a/packages/serverless/src/gcpfunction/http.ts +++ b/packages/serverless/src/gcpfunction/http.ts @@ -5,9 +5,9 @@ import { handleCallbackErrors, setHttpStatus, } from '@sentry/core'; -import { continueTrace, startSpanManual } from '@sentry/node'; -import { getCurrentScope } from '@sentry/node'; -import { captureException, flush } from '@sentry/node'; +import { continueTrace, startSpanManual } from '@sentry/node-experimental'; +import { getCurrentScope } from '@sentry/node-experimental'; +import { captureException, flush } from '@sentry/node-experimental'; import { isString, logger, stripUrlQueryAndFragment } from '@sentry/utils'; import { DEBUG_BUILD } from '../debug-build'; diff --git a/packages/serverless/src/gcpfunction/index.ts b/packages/serverless/src/gcpfunction/index.ts index 194f9a3a92cd..ad415b2fb761 100644 --- a/packages/serverless/src/gcpfunction/index.ts +++ b/packages/serverless/src/gcpfunction/index.ts @@ -1,5 +1,9 @@ -import type { NodeOptions } from '@sentry/node'; -import { SDK_VERSION, getDefaultIntegrations as getDefaultNodeIntegrations, init as initNode } from '@sentry/node'; +import type { NodeOptions } from '@sentry/node-experimental'; +import { + SDK_VERSION, + getDefaultIntegrations as getDefaultNodeIntegrations, + init as initNode, +} from '@sentry/node-experimental'; import type { Integration, Options, SdkMetadata } from '@sentry/types'; import { googleCloudGrpcIntegration } from '../google-cloud-grpc'; diff --git a/packages/serverless/src/google-cloud-grpc.ts b/packages/serverless/src/google-cloud-grpc.ts index a32ac9dae9ac..e982563fb36e 100644 --- a/packages/serverless/src/google-cloud-grpc.ts +++ b/packages/serverless/src/google-cloud-grpc.ts @@ -5,7 +5,7 @@ import { defineIntegration, getClient, } from '@sentry/core'; -import { startInactiveSpan } from '@sentry/node'; +import { startInactiveSpan } from '@sentry/node-experimental'; import type { Client, Integration, IntegrationClass, IntegrationFn } from '@sentry/types'; import { fill } from '@sentry/utils'; diff --git a/packages/serverless/src/google-cloud-http.ts b/packages/serverless/src/google-cloud-http.ts index 5e7558f4299d..78abb2f97ff1 100644 --- a/packages/serverless/src/google-cloud-http.ts +++ b/packages/serverless/src/google-cloud-http.ts @@ -5,7 +5,7 @@ import { defineIntegration, getClient, } from '@sentry/core'; -import { startInactiveSpan } from '@sentry/node'; +import { startInactiveSpan } from '@sentry/node-experimental'; import type { Client, Integration, IntegrationClass, IntegrationFn } from '@sentry/types'; import { fill } from '@sentry/utils'; diff --git a/packages/serverless/src/index.awslambda.ts b/packages/serverless/src/index.awslambda.ts index c097591ab9dc..481c9b13d62f 100644 --- a/packages/serverless/src/index.awslambda.ts +++ b/packages/serverless/src/index.awslambda.ts @@ -5,4 +5,4 @@ import * as AWSLambda from './awslambda'; export { AWSLambda }; export * from './awsservices'; -export * from '@sentry/node'; +export * from '@sentry/node-experimental'; diff --git a/packages/serverless/src/index.ts b/packages/serverless/src/index.ts index 63a28a5ee4bb..6a0f395ca4ac 100644 --- a/packages/serverless/src/index.ts +++ b/packages/serverless/src/index.ts @@ -7,7 +7,7 @@ export { AWSLambda, GCPFunction }; export { AWSServices, awsServicesIntegration } from './awsservices'; // TODO(v8): We have to explicitly export these because of the namespace exports -// above. This is because just doing `export * from '@sentry/node'` will not +// above. This is because just doing `export * from '@sentry/node-experimental'` will not // work with Node native esm while we also have namespace exports in a package. // What we should do is get rid of the namespace exports. export { @@ -101,4 +101,4 @@ export { captureSession, endSession, withActiveSpan, -} from '@sentry/node'; +} from '@sentry/node-experimental'; diff --git a/packages/serverless/test/awslambda.test.ts b/packages/serverless/test/awslambda.test.ts index 772502057a34..964c760f0ca3 100644 --- a/packages/serverless/test/awslambda.test.ts +++ b/packages/serverless/test/awslambda.test.ts @@ -20,8 +20,8 @@ const mockScope = { addEventProcessor: jest.fn(), }; -jest.mock('@sentry/node', () => { - const original = jest.requireActual('@sentry/node'); +jest.mock('@sentry/node-experimental', () => { + const original = jest.requireActual('@sentry/node-experimental'); return { ...original, init: (options: unknown) => { diff --git a/packages/serverless/test/awsservices.test.ts b/packages/serverless/test/awsservices.test.ts index 3170f9056ec0..c48abb173e16 100644 --- a/packages/serverless/test/awsservices.test.ts +++ b/packages/serverless/test/awsservices.test.ts @@ -1,4 +1,4 @@ -import { NodeClient, createTransport, setCurrentClient } from '@sentry/node'; +import { NodeClient, createTransport, setCurrentClient } from '@sentry/node-experimental'; import * as AWS from 'aws-sdk'; import * as nock from 'nock'; @@ -8,9 +8,9 @@ import { awsServicesIntegration } from '../src/awsservices'; const mockSpanEnd = jest.fn(); const mockStartInactiveSpan = jest.fn(spanArgs => ({ ...spanArgs })); -jest.mock('@sentry/node', () => { +jest.mock('@sentry/node-experimental', () => { return { - ...jest.requireActual('@sentry/node'), + ...jest.requireActual('@sentry/node-experimental'), startInactiveSpan: (ctx: unknown) => { mockStartInactiveSpan(ctx); return { end: mockSpanEnd }; diff --git a/packages/serverless/test/gcpfunction.test.ts b/packages/serverless/test/gcpfunction.test.ts index 798284a6d334..c9566200a46d 100644 --- a/packages/serverless/test/gcpfunction.test.ts +++ b/packages/serverless/test/gcpfunction.test.ts @@ -36,8 +36,8 @@ const mockSpan = { end: jest.fn(), }; -jest.mock('@sentry/node', () => { - const original = jest.requireActual('@sentry/node'); +jest.mock('@sentry/node-experimental', () => { + const original = jest.requireActual('@sentry/node-experimental'); return { ...original, init: (options: unknown) => { diff --git a/packages/serverless/test/google-cloud-grpc.test.ts b/packages/serverless/test/google-cloud-grpc.test.ts index 0ce19ee7db8b..d9d789d33480 100644 --- a/packages/serverless/test/google-cloud-grpc.test.ts +++ b/packages/serverless/test/google-cloud-grpc.test.ts @@ -9,7 +9,7 @@ import * as http2 from 'http2'; import * as nock from 'nock'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core'; -import { NodeClient, createTransport, setCurrentClient } from '@sentry/node'; +import { NodeClient, createTransport, setCurrentClient } from '@sentry/node-experimental'; import { googleCloudGrpcIntegration } from '../src/google-cloud-grpc'; const spyConnect = jest.spyOn(http2, 'connect'); @@ -17,9 +17,9 @@ const spyConnect = jest.spyOn(http2, 'connect'); const mockSpanEnd = jest.fn(); const mockStartInactiveSpan = jest.fn(spanArgs => ({ ...spanArgs })); -jest.mock('@sentry/node', () => { +jest.mock('@sentry/node-experimental', () => { return { - ...jest.requireActual('@sentry/node'), + ...jest.requireActual('@sentry/node-experimental'), startInactiveSpan: (ctx: unknown) => { mockStartInactiveSpan(ctx); return { end: mockSpanEnd }; diff --git a/packages/serverless/test/google-cloud-http.test.ts b/packages/serverless/test/google-cloud-http.test.ts index 3389130565f9..804156a1bf02 100644 --- a/packages/serverless/test/google-cloud-http.test.ts +++ b/packages/serverless/test/google-cloud-http.test.ts @@ -4,15 +4,15 @@ import { BigQuery } from '@google-cloud/bigquery'; import * as nock from 'nock'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '@sentry/core'; -import { NodeClient, createTransport, setCurrentClient } from '@sentry/node'; +import { NodeClient, createTransport, setCurrentClient } from '@sentry/node-experimental'; import { googleCloudHttpIntegration } from '../src/google-cloud-http'; const mockSpanEnd = jest.fn(); const mockStartInactiveSpan = jest.fn(spanArgs => ({ ...spanArgs })); -jest.mock('@sentry/node', () => { +jest.mock('@sentry/node-experimental', () => { return { - ...jest.requireActual('@sentry/node'), + ...jest.requireActual('@sentry/node-experimental'), startInactiveSpan: (ctx: unknown) => { mockStartInactiveSpan(ctx); return { end: mockSpanEnd }; diff --git a/packages/sveltekit/src/server/handle.ts b/packages/sveltekit/src/server/handle.ts index cc53f7541923..988abf3604ec 100644 --- a/packages/sveltekit/src/server/handle.ts +++ b/packages/sveltekit/src/server/handle.ts @@ -9,7 +9,7 @@ import { withIsolationScope, } from '@sentry/core'; import { getActiveTransaction, startSpan } from '@sentry/core'; -import { captureException } from '@sentry/node'; +import { captureException } from '@sentry/node-experimental'; /* eslint-disable @sentry-internal/sdk/no-optional-chaining */ import type { Span } from '@sentry/types'; import { dynamicSamplingContextToSentryBaggageHeader, objectify } from '@sentry/utils'; diff --git a/packages/sveltekit/src/server/handleError.ts b/packages/sveltekit/src/server/handleError.ts index 1289e76a5ee2..b556342635f3 100644 --- a/packages/sveltekit/src/server/handleError.ts +++ b/packages/sveltekit/src/server/handleError.ts @@ -1,4 +1,4 @@ -import { captureException } from '@sentry/node'; +import { captureException } from '@sentry/node-experimental'; 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 6d948636feee..706da419a84e 100644 --- a/packages/sveltekit/src/server/index.ts +++ b/packages/sveltekit/src/server/index.ts @@ -1,5 +1,5 @@ // Node SDK exports -// Unfortunately, we cannot `export * from '@sentry/node'` because in prod builds, +// Unfortunately, we cannot `export * from '@sentry/node-experimental'` because in prod builds, // Vite puts these exports into a `default` property (Sentry.default) rather than // on the top - level namespace. // Hence, we export everything from the Node SDK explicitly: @@ -85,10 +85,10 @@ export { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, -} from '@sentry/node'; +} from '@sentry/node-experimental'; // We can still leave this for the carrier init and type exports -export * from '@sentry/node'; +export * from '@sentry/node-experimental'; // ------------------------- // SvelteKit SDK exports: diff --git a/packages/sveltekit/src/server/load.ts b/packages/sveltekit/src/server/load.ts index 0d73b27a9d1b..6a8c62ccd7c5 100644 --- a/packages/sveltekit/src/server/load.ts +++ b/packages/sveltekit/src/server/load.ts @@ -5,7 +5,7 @@ import { getCurrentScope, startSpan, } from '@sentry/core'; -import { captureException } from '@sentry/node'; +import { captureException } from '@sentry/node-experimental'; import { addNonEnumerableProperty, objectify } from '@sentry/utils'; import type { LoadEvent, ServerLoadEvent } from '@sveltejs/kit'; diff --git a/packages/sveltekit/src/server/sdk.ts b/packages/sveltekit/src/server/sdk.ts index f16220775d3a..faf584b7d0e6 100644 --- a/packages/sveltekit/src/server/sdk.ts +++ b/packages/sveltekit/src/server/sdk.ts @@ -1,7 +1,7 @@ import { applySdkMetadata, setTag } from '@sentry/core'; -import type { NodeOptions } from '@sentry/node'; -import { getDefaultIntegrations as getDefaultNodeIntegrations } from '@sentry/node'; -import { init as initNodeSdk } from '@sentry/node'; +import type { NodeOptions } from '@sentry/node-experimental'; +import { getDefaultIntegrations as getDefaultNodeIntegrations } from '@sentry/node-experimental'; +import { init as initNodeSdk } from '@sentry/node-experimental'; import { rewriteFramesIntegration } from './rewriteFramesIntegration'; diff --git a/packages/sveltekit/src/server/utils.ts b/packages/sveltekit/src/server/utils.ts index 1f3719745bca..ad6765209548 100644 --- a/packages/sveltekit/src/server/utils.ts +++ b/packages/sveltekit/src/server/utils.ts @@ -1,4 +1,4 @@ -import { flush } from '@sentry/node'; +import { flush } from '@sentry/node-experimental'; import { logger, tracingContextFromHeaders } from '@sentry/utils'; import type { RequestEvent } from '@sveltejs/kit'; diff --git a/packages/sveltekit/src/vite/sourceMaps.ts b/packages/sveltekit/src/vite/sourceMaps.ts index 2f5fd28ac1f8..d423c9fec5f5 100644 --- a/packages/sveltekit/src/vite/sourceMaps.ts +++ b/packages/sveltekit/src/vite/sourceMaps.ts @@ -1,7 +1,7 @@ import * as child_process from 'child_process'; import * as fs from 'fs'; import * as path from 'path'; -import { getSentryRelease } from '@sentry/node'; +import { getSentryRelease } from '@sentry/node-experimental'; import { escapeStringForRegex, uuid4 } from '@sentry/utils'; import type { SentryVitePluginOptions } from '@sentry/vite-plugin'; import { sentryVitePlugin } from '@sentry/vite-plugin'; diff --git a/packages/sveltekit/test/server/handle.test.ts b/packages/sveltekit/test/server/handle.test.ts index efd96107e651..42e64affbcc1 100644 --- a/packages/sveltekit/test/server/handle.test.ts +++ b/packages/sveltekit/test/server/handle.test.ts @@ -1,6 +1,6 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, addTracingExtensions, spanToJSON } from '@sentry/core'; -import { NodeClient, setCurrentClient } from '@sentry/node'; -import * as SentryNode from '@sentry/node'; +import { NodeClient, setCurrentClient } from '@sentry/node-experimental'; +import * as SentryNode from '@sentry/node-experimental'; import type { Transaction } from '@sentry/types'; import type { Handle } from '@sveltejs/kit'; import { redirect } from '@sveltejs/kit'; diff --git a/packages/sveltekit/test/server/handleError.test.ts b/packages/sveltekit/test/server/handleError.test.ts index 611fac1f9a4d..58d525d9a9db 100644 --- a/packages/sveltekit/test/server/handleError.test.ts +++ b/packages/sveltekit/test/server/handleError.test.ts @@ -1,4 +1,4 @@ -import * as SentryNode from '@sentry/node'; +import * as SentryNode from '@sentry/node-experimental'; import type { HandleServerError, RequestEvent } from '@sveltejs/kit'; import { vi } from 'vitest'; diff --git a/packages/sveltekit/test/server/load.test.ts b/packages/sveltekit/test/server/load.test.ts index 790ded799106..906e12553500 100644 --- a/packages/sveltekit/test/server/load.test.ts +++ b/packages/sveltekit/test/server/load.test.ts @@ -1,5 +1,5 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, addTracingExtensions } from '@sentry/core'; -import * as SentryNode from '@sentry/node'; +import * as SentryNode from '@sentry/node-experimental'; import type { Load, ServerLoad } from '@sveltejs/kit'; import { error, redirect } from '@sveltejs/kit'; import { vi } from 'vitest'; diff --git a/packages/sveltekit/test/server/sdk.test.ts b/packages/sveltekit/test/server/sdk.test.ts index f6f5e96e1620..96aed4103510 100644 --- a/packages/sveltekit/test/server/sdk.test.ts +++ b/packages/sveltekit/test/server/sdk.test.ts @@ -1,6 +1,6 @@ -import * as SentryNode from '@sentry/node'; -import type { NodeClient } from '@sentry/node'; -import { SDK_VERSION, getClient } from '@sentry/node'; +import * as SentryNode from '@sentry/node-experimental'; +import type { NodeClient } from '@sentry/node-experimental'; +import { SDK_VERSION, getClient } from '@sentry/node-experimental'; import { init } from '../../src/server/sdk'; From 5bcc690d2eb6eda0057c3bd80881c2543a2cc5b2 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 11:09:56 +0100 Subject: [PATCH 03/10] use correct package for e2e & node integration tests --- .../node-experimental-fastify-app/package.json | 6 ++---- .../node-experimental-fastify-app/src/app.js | 2 +- .../node-experimental-fastify-app/src/tracing.js | 3 +-- .../suites/express/tracing-experimental/server.js | 2 +- .../apollo-graphql/scenario-mutation.js | 2 +- .../tracing-experimental/apollo-graphql/scenario-query.js | 2 +- .../suites/tracing-experimental/hapi/scenario.js | 2 +- .../suites/tracing-experimental/mongodb/scenario.js | 2 +- .../suites/tracing-experimental/mongoose/scenario.js | 2 +- .../tracing-experimental/mysql/scenario-withConnect.js | 2 +- .../tracing-experimental/mysql/scenario-withoutCallback.js | 2 +- .../tracing-experimental/mysql/scenario-withoutConnect.js | 2 +- .../suites/tracing-experimental/mysql2/scenario.js | 2 +- .../suites/tracing-experimental/nestjs/scenario.ts | 2 +- .../suites/tracing-experimental/postgres/scenario.js | 2 +- packages/astro/src/integration/index.ts | 2 +- 16 files changed, 17 insertions(+), 20 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/package.json b/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/package.json index 8ada1cb5d82e..cfa2c8be0f61 100644 --- a/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/package.json +++ b/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/package.json @@ -10,13 +10,11 @@ "test:assert": "pnpm test" }, "dependencies": { - "@sentry/node-experimental": "latest || *", + "@sentry/node": "latest || *", "@sentry/types": "latest || *", "@sentry/core": "latest || *", "@sentry/utils": "latest || *", - "@sentry/node": "latest || *", - "@sentry/opentelemetry-node": "latest || *", - "@sentry-internal/tracing": "latest || *", + "@sentry/opentelemetry": "latest || *", "@types/node": "18.15.1", "fastify": "4.23.2", "fastify-plugin": "4.5.1", diff --git a/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/src/app.js b/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/src/app.js index 50fe45767504..22f17ca4695c 100644 --- a/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/src/app.js +++ b/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/src/app.js @@ -1,6 +1,6 @@ require('./tracing'); -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); const { fastify } = require('fastify'); const fastifyPlugin = require('fastify-plugin'); const http = require('http'); diff --git a/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/src/tracing.js b/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/src/tracing.js index e571a4374a9e..4cf352cda681 100644 --- a/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/src/tracing.js +++ b/dev-packages/e2e-tests/test-applications/node-experimental-fastify-app/src/tracing.js @@ -1,10 +1,9 @@ -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); Sentry.init({ environment: 'qa', // dynamic sampling bias to keep transactions dsn: process.env.E2E_TEST_DSN, integrations: [], - debug: true, tracesSampleRate: 1, tunnel: 'http://localhost:3031/', // proxy server }); diff --git a/dev-packages/node-integration-tests/suites/express/tracing-experimental/server.js b/dev-packages/node-integration-tests/suites/express/tracing-experimental/server.js index 207d11d3aa0e..06c8416eb5eb 100644 --- a/dev-packages/node-integration-tests/suites/express/tracing-experimental/server.js +++ b/dev-packages/node-integration-tests/suites/express/tracing-experimental/server.js @@ -1,5 +1,5 @@ const { loggingTransport, startExpressServerAndSendPortToRunner } = require('@sentry-internal/node-integration-tests'); -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); const cors = require('cors'); Sentry.init({ diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/apollo-graphql/scenario-mutation.js b/dev-packages/node-integration-tests/suites/tracing-experimental/apollo-graphql/scenario-mutation.js index ebe4f7cd3e4d..9cecf2302315 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/apollo-graphql/scenario-mutation.js +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/apollo-graphql/scenario-mutation.js @@ -1,4 +1,4 @@ -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); const { loggingTransport } = require('@sentry-internal/node-integration-tests'); Sentry.init({ diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/apollo-graphql/scenario-query.js b/dev-packages/node-integration-tests/suites/tracing-experimental/apollo-graphql/scenario-query.js index 42bb8edacb8f..f0c140fd4b24 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/apollo-graphql/scenario-query.js +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/apollo-graphql/scenario-query.js @@ -1,4 +1,4 @@ -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); const { loggingTransport } = require('@sentry-internal/node-integration-tests'); Sentry.init({ diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/hapi/scenario.js b/dev-packages/node-integration-tests/suites/tracing-experimental/hapi/scenario.js index 2c86ac704618..9a00fa36957d 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/hapi/scenario.js +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/hapi/scenario.js @@ -1,5 +1,5 @@ const { loggingTransport, sendPortToRunner } = require('@sentry-internal/node-integration-tests'); -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/mongodb/scenario.js b/dev-packages/node-integration-tests/suites/tracing-experimental/mongodb/scenario.js index 360c943e0724..7da8a0b800fc 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/mongodb/scenario.js +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/mongodb/scenario.js @@ -1,5 +1,5 @@ const { loggingTransport } = require('@sentry-internal/node-integration-tests'); -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/mongoose/scenario.js b/dev-packages/node-integration-tests/suites/tracing-experimental/mongoose/scenario.js index 3cfa9409917c..99c04cde2667 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/mongoose/scenario.js +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/mongoose/scenario.js @@ -1,5 +1,5 @@ const { loggingTransport } = require('@sentry-internal/node-integration-tests'); -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withConnect.js b/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withConnect.js index 0d1b517209a0..6eea534310bf 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withConnect.js +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withConnect.js @@ -1,5 +1,5 @@ const { loggingTransport } = require('@sentry-internal/node-integration-tests'); -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withoutCallback.js b/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withoutCallback.js index cd35953b0504..00049bd31b92 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withoutCallback.js +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withoutCallback.js @@ -1,5 +1,5 @@ const { loggingTransport } = require('@sentry-internal/node-integration-tests'); -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withoutConnect.js b/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withoutConnect.js index 844b25d63f2d..a58a4c98fa3f 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withoutConnect.js +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/mysql/scenario-withoutConnect.js @@ -1,5 +1,5 @@ const { loggingTransport } = require('@sentry-internal/node-integration-tests'); -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/mysql2/scenario.js b/dev-packages/node-integration-tests/suites/tracing-experimental/mysql2/scenario.js index 8858e4ef587f..5b915867426f 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/mysql2/scenario.js +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/mysql2/scenario.js @@ -1,5 +1,5 @@ const { loggingTransport } = require('@sentry-internal/node-integration-tests'); -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/nestjs/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-experimental/nestjs/scenario.ts index 06ed91626b3b..f0a97953b2d9 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/nestjs/scenario.ts +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/nestjs/scenario.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/naming-convention */ /* eslint-disable @typescript-eslint/explicit-member-accessibility */ import { loggingTransport, sendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node-experimental'; +import * as Sentry from '@sentry/node'; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/dev-packages/node-integration-tests/suites/tracing-experimental/postgres/scenario.js b/dev-packages/node-integration-tests/suites/tracing-experimental/postgres/scenario.js index fa81bd00b938..20dc9fe738ad 100644 --- a/dev-packages/node-integration-tests/suites/tracing-experimental/postgres/scenario.js +++ b/dev-packages/node-integration-tests/suites/tracing-experimental/postgres/scenario.js @@ -1,5 +1,5 @@ const { loggingTransport } = require('@sentry-internal/node-integration-tests'); -const Sentry = require('@sentry/node-experimental'); +const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/packages/astro/src/integration/index.ts b/packages/astro/src/integration/index.ts index 4493fb8c34eb..eedbd9407adf 100644 --- a/packages/astro/src/integration/index.ts +++ b/packages/astro/src/integration/index.ts @@ -91,7 +91,7 @@ export const sentryAstro = (options: SentryOptions = {}): AstroIntegration => { // @sentry/node is required in case we have 2 different @sentry/node // packages installed in the same project. // Ref: https://github.com/getsentry/sentry-javascript/issues/10121 - noExternal: ['@sentry/astro', '@sentry/node-experimental'], + noExternal: ['@sentry/astro', '@sentry/node-experimental', '@sentry/node'], }, }, }); From 2fe04af7291f5d6c0594314878f72395e4cd342d Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 11:33:45 +0100 Subject: [PATCH 04/10] fix node-experimental build --- .../rollup.anr-worker.config.mjs | 35 +++++++++++++++++++ .../node-experimental/rollup.npm.config.mjs | 7 +++- packages/node-experimental/src/index.ts | 1 + 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 packages/node-experimental/rollup.anr-worker.config.mjs diff --git a/packages/node-experimental/rollup.anr-worker.config.mjs b/packages/node-experimental/rollup.anr-worker.config.mjs new file mode 100644 index 000000000000..9887342c63fd --- /dev/null +++ b/packages/node-experimental/rollup.anr-worker.config.mjs @@ -0,0 +1,35 @@ +import { makeBaseBundleConfig } from '@sentry-internal/rollup-utils'; + +function createAnrWorkerConfig(destDir, esm) { + return makeBaseBundleConfig({ + bundleType: 'node-worker', + entrypoints: ['src/integrations/anr/worker.ts'], + jsVersion: 'es6', + licenseTitle: '@sentry/node', + outputFileBase: () => 'worker-script.js', + packageSpecificConfig: { + output: { + dir: destDir, + sourcemap: false, + }, + plugins: [ + { + name: 'output-base64-worker-script', + renderChunk(code) { + const base64Code = Buffer.from(code).toString('base64'); + if (esm) { + return `export const base64WorkerScript = '${base64Code}';`; + } else { + return `exports.base64WorkerScript = '${base64Code}';`; + } + }, + }, + ], + }, + }); +} + +export const anrWorkerConfigs = [ + createAnrWorkerConfig('build/esm/integrations/anr', true), + createAnrWorkerConfig('build/cjs/integrations/anr', false), +]; diff --git a/packages/node-experimental/rollup.npm.config.mjs b/packages/node-experimental/rollup.npm.config.mjs index 84a06f2fb64a..88c90de4825f 100644 --- a/packages/node-experimental/rollup.npm.config.mjs +++ b/packages/node-experimental/rollup.npm.config.mjs @@ -1,3 +1,8 @@ import { makeBaseNPMConfig, makeNPMConfigVariants } from '@sentry-internal/rollup-utils'; +import { anrWorkerConfigs } from './rollup.anr-worker.config.mjs'; -export default makeNPMConfigVariants(makeBaseNPMConfig()); +export default [ + ...makeNPMConfigVariants(makeBaseNPMConfig()), + // The ANR worker builds must come after the main build because they overwrite the worker-script.js file + ...anrWorkerConfigs, +]; diff --git a/packages/node-experimental/src/index.ts b/packages/node-experimental/src/index.ts index 282b703d1194..1ee78398613e 100644 --- a/packages/node-experimental/src/index.ts +++ b/packages/node-experimental/src/index.ts @@ -26,6 +26,7 @@ export { getAutoPerformanceIntegrations } from './integrations/tracing'; export { getClient, getSentryRelease, defaultStackParser } from './sdk/api'; export { createGetModuleFromFilename } from './utils/module'; export { makeNodeTransport } from './transports'; +export { NodeClient } from './sdk/client'; // eslint-disable-next-line deprecation/deprecation export { getCurrentHub } from './sdk/hub'; export { cron } from './cron'; From 58506859d433107f615dccf53635d9cece05c8ea Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 13:28:31 +0100 Subject: [PATCH 05/10] update node integration tests & e2e tests to work --- .../node-exports-test-app/package.json | 2 +- .../scripts/consistentExports.ts | 2 +- .../node-express-app/src/app.ts | 5 +- .../node-hapi-app/src/app.js | 2 +- .../node-integration-tests/package.json | 3 - .../suites/express/handle-error/server.ts | 2 +- .../common-infix-parameterized/server.ts | 2 +- .../multiple-routers/common-infix/server.ts | 2 +- .../server.ts | 2 +- .../common-prefix-parameterized/server.ts | 2 +- .../server.ts | 2 +- .../server.ts | 2 +- .../multiple-routers/common-prefix/server.ts | 2 +- .../multiple-routers/complex-router/server.ts | 2 +- .../middle-layer-parameterized/server.ts | 2 +- .../sentry-trace/baggage-header-out/server.ts | 2 +- .../server.ts | 2 +- .../baggage-other-vendors/server.ts | 2 +- .../baggage-transaction-name/server.ts | 2 +- .../suites/express/sentry-trace/server.ts | 2 +- .../suites/express/tracing/server.ts | 2 +- ...haviour-additional-listener-test-script.js | 16 ++-- ...iour-no-additional-listener-test-script.js | 16 ++-- .../basic-usage/scenario.ts | 0 .../basic-usage/test.ts | 0 .../with-nested-spans/scenario.ts | 4 +- .../with-nested-spans/test.ts | 0 .../suites/sessions/server.ts | 2 +- .../tracing-new/apollo-graphql/scenario.ts | 36 -------- .../suites/tracing-new/apollo-graphql/test.ts | 33 -------- .../auto-instrument/mongodb/scenario.ts | 41 --------- .../auto-instrument/mongodb/test.ts | 84 ------------------- .../auto-instrument/pg/scenario.ts | 23 ----- .../tracing-new/auto-instrument/pg/test.ts | 63 -------------- .../httpIntegration/spans/scenario.ts | 3 +- .../httpIntegration/spansDisabled/scenario.ts | 20 ----- .../httpIntegration/spansDisabled/test.ts | 21 ----- .../tracePropagationTargets/scenario.ts | 20 ----- .../tracePropagationTargets/test.ts | 42 ---------- .../scenario.ts | 19 ----- .../tracing-new/prisma-orm/docker-compose.yml | 13 --- .../tracing-new/prisma-orm/package.json | 22 ----- .../prisma/migrations/migration_lock.toml | 3 - .../migrations/sentry_test/migration.sql | 12 --- .../prisma-orm/prisma/schema.prisma | 15 ---- .../suites/tracing-new/prisma-orm/scenario.ts | 41 --------- .../suites/tracing-new/prisma-orm/setup.ts | 16 ---- .../suites/tracing-new/prisma-orm/test.ts | 29 ------- .../suites/tracing-new/prisma-orm/yarn.lock | 27 ------ .../tracePropagationTargets/scenario.ts | 2 +- .../scenario.ts | 4 +- .../tracePropagationTargetsDisabled/test.ts | 2 +- .../suites/tracing/apollo-graphql/scenario.ts | 36 -------- .../suites/tracing/apollo-graphql/test.ts | 33 -------- .../auto-instrument/mongodb/scenario.ts | 42 ---------- .../tracing/auto-instrument/mongodb/test.ts | 84 ------------------- .../tracing/auto-instrument/pg/scenario.ts | 19 ----- .../suites/tracing/auto-instrument/pg/test.ts | 80 ------------------ .../tracing/metric-summaries/scenario.js | 2 +- .../tracing/prisma-orm/docker-compose.yml | 13 --- .../suites/tracing/prisma-orm/package.json | 22 ----- .../prisma/migrations/migration_lock.toml | 3 - .../migrations/sentry_test/migration.sql | 12 --- .../tracing/prisma-orm/prisma/schema.prisma | 15 ---- .../suites/tracing/prisma-orm/scenario.ts | 41 --------- .../suites/tracing/prisma-orm/setup.ts | 16 ---- .../suites/tracing/prisma-orm/test.ts | 29 ------- .../suites/tracing/prisma-orm/yarn.lock | 27 ------ .../tracing/tracePropagationTargets/test.ts | 42 ---------- packages/node-experimental/src/index.ts | 1 + .../src/integrations/onuncaughtexception.ts | 25 +++--- 71 files changed, 52 insertions(+), 1165 deletions(-) rename dev-packages/node-integration-tests/suites/public-api/{startTransaction => startSpan}/basic-usage/scenario.ts (100%) rename dev-packages/node-integration-tests/suites/public-api/{startTransaction => startSpan}/basic-usage/test.ts (100%) rename dev-packages/node-integration-tests/suites/public-api/{startTransaction => startSpan}/with-nested-spans/scenario.ts (87%) rename dev-packages/node-integration-tests/suites/public-api/{startTransaction => startSpan}/with-nested-spans/test.ts (100%) delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/apollo-graphql/scenario.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/apollo-graphql/test.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/mongodb/scenario.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/mongodb/test.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/pg/scenario.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/pg/test.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spansDisabled/scenario.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spansDisabled/test.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargets/scenario.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargets/test.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargetsDisabled/scenario.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/docker-compose.yml delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/package.json delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/migrations/migration_lock.toml delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/migrations/sentry_test/migration.sql delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/schema.prisma delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/scenario.ts delete mode 100755 dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/setup.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/test.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/yarn.lock rename dev-packages/node-integration-tests/suites/{tracing/tracePropagationTargets => tracing-new/tracePropagationTargetsDisabled}/scenario.ts (80%) rename dev-packages/node-integration-tests/suites/tracing-new/{httpIntegration => }/tracePropagationTargetsDisabled/test.ts (95%) delete mode 100644 dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing/apollo-graphql/test.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing/auto-instrument/mongodb/scenario.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing/auto-instrument/mongodb/test.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing/auto-instrument/pg/scenario.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing/auto-instrument/pg/test.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing/prisma-orm/docker-compose.yml delete mode 100644 dev-packages/node-integration-tests/suites/tracing/prisma-orm/package.json delete mode 100644 dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/migrations/migration_lock.toml delete mode 100644 dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/migrations/sentry_test/migration.sql delete mode 100644 dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/schema.prisma delete mode 100644 dev-packages/node-integration-tests/suites/tracing/prisma-orm/scenario.ts delete mode 100755 dev-packages/node-integration-tests/suites/tracing/prisma-orm/setup.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing/prisma-orm/test.ts delete mode 100644 dev-packages/node-integration-tests/suites/tracing/prisma-orm/yarn.lock delete mode 100644 dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts diff --git a/dev-packages/e2e-tests/test-applications/node-exports-test-app/package.json b/dev-packages/e2e-tests/test-applications/node-exports-test-app/package.json index 8965bb7de982..6d187f14c245 100644 --- a/dev-packages/e2e-tests/test-applications/node-exports-test-app/package.json +++ b/dev-packages/e2e-tests/test-applications/node-exports-test-app/package.json @@ -12,7 +12,7 @@ "test:assert": "pnpm test" }, "dependencies": { - "@sentry/node": "latest || *", + "@sentry/node-experimental": "latest || *", "@sentry/sveltekit": "latest || *", "@sentry/remix": "latest || *", "@sentry/astro": "latest || *", diff --git a/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts b/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts index 20ee664b8053..5e7344588d56 100644 --- a/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts +++ b/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts @@ -1,7 +1,7 @@ import * as SentryAstro from '@sentry/astro'; import * as SentryBun from '@sentry/bun'; import * as SentryNextJs from '@sentry/nextjs'; -import * as SentryNode from '@sentry/node'; +import * as SentryNode from '@sentry/node-experimental'; import * as SentryRemix from '@sentry/remix'; import * as SentryServerless from '@sentry/serverless'; import * as SentrySvelteKit from '@sentry/sveltekit'; diff --git a/dev-packages/e2e-tests/test-applications/node-express-app/src/app.ts b/dev-packages/e2e-tests/test-applications/node-express-app/src/app.ts index f3667c10bb46..e2015a70825c 100644 --- a/dev-packages/e2e-tests/test-applications/node-express-app/src/app.ts +++ b/dev-packages/e2e-tests/test-applications/node-express-app/src/app.ts @@ -22,9 +22,6 @@ Sentry.init({ const app = express(); const port = 3030; -app.use(Sentry.Handlers.requestHandler()); -app.use(Sentry.Handlers.tracingHandler()); - app.get('/test-success', function (req, res) { res.send({ version: 'v1' }); }); @@ -73,7 +70,7 @@ app.get('/test-local-variables-caught', function (req, res) { res.send({ exceptionId, randomVariableToRecord }); }); -app.use(Sentry.Handlers.errorHandler()); +Sentry.setupExpressErrorHandler(app); // @ts-ignore app.use(function onError(err, req, res, next) { diff --git a/dev-packages/e2e-tests/test-applications/node-hapi-app/src/app.js b/dev-packages/e2e-tests/test-applications/node-hapi-app/src/app.js index 5a7712dd4495..95564255b60f 100644 --- a/dev-packages/e2e-tests/test-applications/node-hapi-app/src/app.js +++ b/dev-packages/e2e-tests/test-applications/node-hapi-app/src/app.js @@ -10,7 +10,6 @@ Sentry.init({ environment: 'qa', // dynamic sampling bias to keep transactions dsn: process.env.E2E_TEST_DSN, includeLocalVariables: true, - integrations: [Sentry.hapiIntegration({ server })], debug: true, tunnel: `http://localhost:3031/`, // proxy server tracesSampleRate: 1, @@ -56,6 +55,7 @@ const init = async () => { (async () => { init(); + await Sentry.setupHapiErrorHandler(server); await server.start(); console.log('Server running on %s', server.info.uri); })(); diff --git a/dev-packages/node-integration-tests/package.json b/dev-packages/node-integration-tests/package.json index b0e4156bfb14..5480445e69bb 100644 --- a/dev-packages/node-integration-tests/package.json +++ b/dev-packages/node-integration-tests/package.json @@ -16,12 +16,9 @@ "build:types": "tsc -p tsconfig.types.json", "clean": "rimraf -g **/node_modules && run-p clean:script", "clean:script": "node scripts/clean.js", - "prisma:init": "(cd suites/tracing/prisma-orm && ts-node ./setup.ts)", - "prisma:init:new": "(cd suites/tracing-new/prisma-orm && ts-node ./setup.ts)", "lint": "eslint . --format stylish", "fix": "eslint . --format stylish --fix", "type-check": "tsc", - "pretest": "run-s --silent prisma:init prisma:init:new", "test": "ts-node ./utils/run-tests.ts", "jest": "jest --config ./jest.config.js", "test:watch": "yarn test --watch" diff --git a/dev-packages/node-integration-tests/suites/express/handle-error/server.ts b/dev-packages/node-integration-tests/suites/express/handle-error/server.ts index 7ac7a8d05a24..da163f524b87 100644 --- a/dev-packages/node-integration-tests/suites/express/handle-error/server.ts +++ b/dev-packages/node-integration-tests/suites/express/handle-error/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import express from 'express'; const app = express(); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix-parameterized/server.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix-parameterized/server.ts index 7cc849cd366d..daac56d420e1 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix-parameterized/server.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix-parameterized/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix/server.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix/server.ts index 92ae56558646..7b9b9981d03d 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix/server.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-infix/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized-reverse/server.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized-reverse/server.ts index a351837cdf3c..93bd6040c8c0 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized-reverse/server.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized-reverse/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized/server.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized/server.ts index 765f30c39448..70579abb1b5b 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized/server.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-parameterized/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized copy/server.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized copy/server.ts index ad72cbc3babf..e601c325ef02 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized copy/server.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized copy/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized/server.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized/server.ts index 1b17a85127bf..eecaef18bfcc 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized/server.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix-same-length-parameterized/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix/server.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix/server.ts index dfe236aa2f64..b4a7b184f8e7 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix/server.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/common-prefix/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/complex-router/server.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/complex-router/server.ts index 697e21837141..32257b000481 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/complex-router/server.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/complex-router/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import express from 'express'; const app = express(); diff --git a/dev-packages/node-integration-tests/suites/express/multiple-routers/middle-layer-parameterized/server.ts b/dev-packages/node-integration-tests/suites/express/multiple-routers/middle-layer-parameterized/server.ts index d84c5bb1a358..fbdb8a185c77 100644 --- a/dev-packages/node-integration-tests/suites/express/multiple-routers/middle-layer-parameterized/server.ts +++ b/dev-packages/node-integration-tests/suites/express/multiple-routers/middle-layer-parameterized/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import express from 'express'; const app = express(); diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/server.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/server.ts index b5d08d42b5f8..64f697ca086c 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/server.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-header-out/server.ts @@ -1,6 +1,6 @@ import http from 'http'; import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/server.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/server.ts index f20addce854d..4a791a8e73cd 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/server.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors-with-sentry-entries/server.ts @@ -1,6 +1,6 @@ import * as http from 'http'; import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors/server.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors/server.ts index 5dc15c1c2a9b..5146b809854b 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors/server.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-other-vendors/server.ts @@ -1,6 +1,6 @@ import http from 'http'; import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-transaction-name/server.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-transaction-name/server.ts index 454bbfdf3d9a..8616908dd6d5 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-transaction-name/server.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/baggage-transaction-name/server.ts @@ -1,7 +1,7 @@ import http from 'http'; import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; import { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/sentry-trace/server.ts b/dev-packages/node-integration-tests/suites/express/sentry-trace/server.ts index 92ec8d16e00e..efb9fc3c92bf 100644 --- a/dev-packages/node-integration-tests/suites/express/sentry-trace/server.ts +++ b/dev-packages/node-integration-tests/suites/express/sentry-trace/server.ts @@ -1,6 +1,6 @@ import http from 'http'; import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/express/tracing/server.ts b/dev-packages/node-integration-tests/suites/express/tracing/server.ts index 530499fa39d2..e6faa39956c9 100644 --- a/dev-packages/node-integration-tests/suites/express/tracing/server.ts +++ b/dev-packages/node-integration-tests/suites/express/tracing/server.ts @@ -1,5 +1,5 @@ import { loggingTransport, startExpressServerAndSendPortToRunner } from '@sentry-internal/node-integration-tests'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import cors from 'cors'; import express from 'express'; diff --git a/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/mimic-native-behaviour-additional-listener-test-script.js b/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/mimic-native-behaviour-additional-listener-test-script.js index db68624592e5..ed907fd35ba6 100644 --- a/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/mimic-native-behaviour-additional-listener-test-script.js +++ b/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/mimic-native-behaviour-additional-listener-test-script.js @@ -2,17 +2,11 @@ const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', - integrations: integrations => { - return integrations.map(integration => { - if (integration.name === 'OnUncaughtException') { - return new Sentry.Integrations.OnUncaughtException({ - exitEvenIfOtherHandlersAreRegistered: false, - }); - } else { - return integration; - } - }); - }, + integrations: [ + Sentry.onUncaughtExceptionIntegration({ + exitEvenIfOtherHandlersAreRegistered: false, + }), + ], }); process.on('uncaughtException', () => { diff --git a/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/mimic-native-behaviour-no-additional-listener-test-script.js b/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/mimic-native-behaviour-no-additional-listener-test-script.js index 6f27c6b5cb05..e1a78cce10c8 100644 --- a/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/mimic-native-behaviour-no-additional-listener-test-script.js +++ b/dev-packages/node-integration-tests/suites/public-api/OnUncaughtException/mimic-native-behaviour-no-additional-listener-test-script.js @@ -2,17 +2,11 @@ const Sentry = require('@sentry/node'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', - integrations: integrations => { - return integrations.map(integration => { - if (integration.name === 'OnUncaughtException') { - return new Sentry.Integrations.OnUncaughtException({ - exitEvenIfOtherHandlersAreRegistered: false, - }); - } else { - return integration; - } - }); - }, + integrations: [ + Sentry.onUncaughtExceptionIntegration({ + exitEvenIfOtherHandlersAreRegistered: false, + }), + ], }); setTimeout(() => { diff --git a/dev-packages/node-integration-tests/suites/public-api/startTransaction/basic-usage/scenario.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/basic-usage/scenario.ts similarity index 100% rename from dev-packages/node-integration-tests/suites/public-api/startTransaction/basic-usage/scenario.ts rename to dev-packages/node-integration-tests/suites/public-api/startSpan/basic-usage/scenario.ts diff --git a/dev-packages/node-integration-tests/suites/public-api/startTransaction/basic-usage/test.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/basic-usage/test.ts similarity index 100% rename from dev-packages/node-integration-tests/suites/public-api/startTransaction/basic-usage/test.ts rename to dev-packages/node-integration-tests/suites/public-api/startSpan/basic-usage/test.ts diff --git a/dev-packages/node-integration-tests/suites/public-api/startTransaction/with-nested-spans/scenario.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/scenario.ts similarity index 87% rename from dev-packages/node-integration-tests/suites/public-api/startTransaction/with-nested-spans/scenario.ts rename to dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/scenario.ts index bd5ad9ea96e0..46585ea8913d 100644 --- a/dev-packages/node-integration-tests/suites/public-api/startTransaction/with-nested-spans/scenario.ts +++ b/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/scenario.ts @@ -12,7 +12,7 @@ Sentry.startSpan({ name: 'root_span' }, () => { Sentry.startSpan( { name: 'span_1', - data: { + attributes: { foo: 'bar', baz: [1, 2, 3], }, @@ -25,7 +25,7 @@ Sentry.startSpan({ name: 'root_span' }, () => { Sentry.startSpan({ name: 'span_3' }, () => { // span_4 is the child of span_3 but doesn't finish. - Sentry.startInactiveSpan({ name: 'span_4', data: { qux: 'quux' } }); + Sentry.startInactiveSpan({ name: 'span_4', attributes: { qux: 'quux' } }); // span_5 is another child of span_3 but finishes. Sentry.startSpan({ name: 'span_5' }, () => undefined); diff --git a/dev-packages/node-integration-tests/suites/public-api/startTransaction/with-nested-spans/test.ts b/dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/test.ts similarity index 100% rename from dev-packages/node-integration-tests/suites/public-api/startTransaction/with-nested-spans/test.ts rename to dev-packages/node-integration-tests/suites/public-api/startSpan/with-nested-spans/test.ts diff --git a/dev-packages/node-integration-tests/suites/sessions/server.ts b/dev-packages/node-integration-tests/suites/sessions/server.ts index 1a92ced15a19..e2d2e23ccd4a 100644 --- a/dev-packages/node-integration-tests/suites/sessions/server.ts +++ b/dev-packages/node-integration-tests/suites/sessions/server.ts @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import type { SessionFlusher } from '@sentry/core'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; import express from 'express'; const app = express(); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/apollo-graphql/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-new/apollo-graphql/scenario.ts deleted file mode 100644 index 58656d7bf7da..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/apollo-graphql/scenario.ts +++ /dev/null @@ -1,36 +0,0 @@ -import * as Sentry from '@sentry/node'; -import { ApolloServer, gql } from 'apollo-server'; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracesSampleRate: 1.0, - integrations: [new Sentry.Integrations.GraphQL(), new Sentry.Integrations.Apollo()], -}); - -const typeDefs = gql` - type Query { - hello: String - } -`; - -const resolvers = { - Query: { - hello: () => { - return 'Hello world!'; - }, - }, -}; - -const server = new ApolloServer({ - typeDefs, - resolvers, -}); - -// eslint-disable-next-line @typescript-eslint/no-floating-promises -Sentry.startSpan({ name: 'test_span' }, async () => { - // Ref: https://www.apollographql.com/docs/apollo-server/testing/testing/#testing-using-executeoperation - await server.executeOperation({ - query: '{hello}', - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/apollo-graphql/test.ts b/dev-packages/node-integration-tests/suites/tracing-new/apollo-graphql/test.ts deleted file mode 100644 index 8c1bbaad9c2b..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/apollo-graphql/test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { TestEnv, assertSentryTransaction } from '../../../utils'; - -describe('GraphQL/Apollo Tests', () => { - test('should instrument GraphQL and Apollo Server.', async () => { - const env = await TestEnv.init(__dirname); - const envelope = await env.getEnvelopeRequest({ envelopeType: 'transaction' }); - - expect(envelope).toHaveLength(3); - - const transaction = envelope[2]; - const parentSpanId = (transaction as any)?.contexts?.trace?.span_id; - const graphqlSpanId = (transaction as any)?.spans?.[0].span_id; - - expect(parentSpanId).toBeDefined(); - expect(graphqlSpanId).toBeDefined(); - - assertSentryTransaction(transaction, { - transaction: 'test_span', - spans: [ - { - description: 'execute', - op: 'graphql.execute', - parent_span_id: parentSpanId, - }, - { - description: 'Query.hello', - op: 'graphql.resolve', - parent_span_id: graphqlSpanId, - }, - ], - }); - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/mongodb/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/mongodb/scenario.ts deleted file mode 100644 index 95b5c69b8dfb..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/mongodb/scenario.ts +++ /dev/null @@ -1,41 +0,0 @@ -import * as Sentry from '@sentry/node'; -import { MongoClient } from 'mongodb'; - -// suppress logging of the mongo download -global.console.log = () => null; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracesSampleRate: 1.0, - integrations: [...Sentry.autoDiscoverNodePerformanceMonitoringIntegrations()], -}); - -const client = new MongoClient(process.env.MONGO_URL || '', { - useUnifiedTopology: true, -}); - -// eslint-disable-next-line @typescript-eslint/no-floating-promises -Sentry.startSpanManual( - { - name: 'Test Span', - }, - async span => { - try { - await client.connect(); - - const database = client.db('admin'); - const collection = database.collection('movies'); - - await collection.insertOne({ title: 'Rick and Morty' }); - await collection.findOne({ title: 'Back to the Future' }); - await collection.updateOne({ title: 'Back to the Future' }, { $set: { title: 'South Park' } }); - await collection.findOne({ title: 'South Park' }); - - await collection.find({ title: 'South Park' }).toArray(); - } finally { - span?.end(); - await client.close(); - } - }, -); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/mongodb/test.ts b/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/mongodb/test.ts deleted file mode 100644 index c7a3d14ab098..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/mongodb/test.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { MongoMemoryServer } from 'mongodb-memory-server-global'; - -import { TestEnv, assertSentryTransaction } from '../../../../utils'; - -// This test can take longer. -jest.setTimeout(15000); - -describe('MongoDB Test', () => { - let mongoServer: MongoMemoryServer; - - beforeAll(async () => { - mongoServer = await MongoMemoryServer.create(); - process.env.MONGO_URL = mongoServer.getUri(); - }, 10000); - - afterAll(async () => { - if (mongoServer) { - await mongoServer.stop(); - } - }); - - test('should auto-instrument `mongodb` package.', async () => { - const env = await TestEnv.init(__dirname); - const envelope = await env.getEnvelopeRequest({ envelopeType: 'transaction' }); - - expect(envelope).toHaveLength(3); - - assertSentryTransaction(envelope[2], { - transaction: 'Test Span', - spans: [ - { - data: { - 'db.system': 'mongodb', - 'db.name': 'admin', - 'db.operation': 'insertOne', - 'db.mongodb.collection': 'movies', - }, - description: 'insertOne', - op: 'db', - }, - { - data: { - 'db.system': 'mongodb', - 'db.name': 'admin', - 'db.operation': 'findOne', - 'db.mongodb.collection': 'movies', - }, - description: 'findOne', - op: 'db', - }, - { - data: { - 'db.system': 'mongodb', - 'db.name': 'admin', - 'db.operation': 'updateOne', - 'db.mongodb.collection': 'movies', - }, - description: 'updateOne', - op: 'db', - }, - { - data: { - 'db.system': 'mongodb', - 'db.name': 'admin', - 'db.operation': 'findOne', - 'db.mongodb.collection': 'movies', - }, - description: 'findOne', - op: 'db', - }, - { - data: { - 'db.system': 'mongodb', - 'db.name': 'admin', - 'db.operation': 'find', - 'db.mongodb.collection': 'movies', - }, - description: 'find', - op: 'db', - }, - ], - }); - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/pg/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/pg/scenario.ts deleted file mode 100644 index 5d50a411f37f..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/pg/scenario.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as Sentry from '@sentry/node'; -import pg from 'pg'; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracesSampleRate: 1.0, - integrations: [...Sentry.autoDiscoverNodePerformanceMonitoringIntegrations()], -}); - -Sentry.startSpanManual( - { - name: 'Test Span', - }, - span => { - const client = new pg.Client(); - client.query('SELECT * FROM foo where bar ilike "baz%"', ['a', 'b'], () => - client.query('SELECT * FROM bazz', () => { - client.query('SELECT NOW()', () => span?.end()); - }), - ); - }, -); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/pg/test.ts b/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/pg/test.ts deleted file mode 100644 index de892bc43b18..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/auto-instrument/pg/test.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { TestEnv, assertSentryTransaction } from '../../../../utils'; - -class PgClient { - // https://node-postgres.com/api/client#clientquery - public query(_text: unknown, values: unknown, callback?: () => void) { - if (typeof callback === 'function') { - callback(); - return; - } - - if (typeof values === 'function') { - values(); - return; - } - - return Promise.resolve(); - } -} - -beforeAll(() => { - jest.mock('pg', () => { - return { - Client: PgClient, - native: { - Client: PgClient, - }, - }; - }); -}); - -test('should auto-instrument `pg` package.', async () => { - const env = await TestEnv.init(__dirname); - const envelope = await env.getEnvelopeRequest({ envelopeType: 'transaction' }); - - expect(envelope).toHaveLength(3); - - assertSentryTransaction(envelope[2], { - transaction: 'Test Span', - spans: [ - { - description: 'SELECT * FROM foo where bar ilike "baz%"', - op: 'db', - data: { - 'db.system': 'postgresql', - }, - }, - { - description: 'SELECT * FROM bazz', - op: 'db', - data: { - 'db.system': 'postgresql', - }, - }, - { - description: 'SELECT NOW()', - op: 'db', - data: { - 'db.system': 'postgresql', - }, - }, - ], - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spans/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spans/scenario.ts index eba5aa576e86..dfdd065fd2ee 100644 --- a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spans/scenario.ts +++ b/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spans/scenario.ts @@ -1,13 +1,12 @@ import '@sentry/tracing'; import * as http from 'http'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', release: '1.0', tracesSampleRate: 1.0, - integrations: [Sentry.httpIntegration({})], }); // eslint-disable-next-line @typescript-eslint/no-floating-promises diff --git a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spansDisabled/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spansDisabled/scenario.ts deleted file mode 100644 index 61711e974f7d..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spansDisabled/scenario.ts +++ /dev/null @@ -1,20 +0,0 @@ -import '@sentry/tracing'; - -import * as http from 'http'; -import * as Sentry from '@sentry/node'; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracesSampleRate: 1.0, - integrations: [Sentry.httpIntegration({ tracing: false })], -}); - -// eslint-disable-next-line @typescript-eslint/no-floating-promises -Sentry.startSpan({ name: 'test_transaction' }, async () => { - http.get('http://match-this-url.com/api/v0'); - http.get('http://match-this-url.com/api/v1'); - - // Give it a tick to resolve... - await new Promise(resolve => setTimeout(resolve, 100)); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spansDisabled/test.ts b/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spansDisabled/test.ts deleted file mode 100644 index bacf5eaf1882..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spansDisabled/test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import nock from 'nock'; - -import { TestEnv, assertSentryTransaction } from '../../../../utils'; - -test('should not capture spans for outgoing http requests if tracing is disabled', async () => { - const match1 = nock('http://match-this-url.com').get('/api/v0').reply(200); - const match2 = nock('http://match-this-url.com').get('/api/v1').reply(200); - - const env = await TestEnv.init(__dirname); - const envelope = await env.getEnvelopeRequest({ envelopeType: 'transaction' }); - - expect(match1.isDone()).toBe(true); - expect(match2.isDone()).toBe(true); - - expect(envelope).toHaveLength(3); - - assertSentryTransaction(envelope[2], { - transaction: 'test_transaction', - spans: [], - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargets/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargets/scenario.ts deleted file mode 100644 index 7794b20911f9..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargets/scenario.ts +++ /dev/null @@ -1,20 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import '@sentry/tracing'; - -import * as http from 'http'; -import * as Sentry from '@sentry/node'; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracesSampleRate: 1.0, - tracePropagationTargets: [/\/v0/, 'v1'], - integrations: [Sentry.httpIntegration({})], -}); - -Sentry.startSpan({ name: 'test_transaction' }, () => { - http.get('http://match-this-url.com/api/v0'); - http.get('http://match-this-url.com/api/v1'); - http.get('http://dont-match-this-url.com/api/v2'); - http.get('http://dont-match-this-url.com/api/v3'); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargets/test.ts b/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargets/test.ts deleted file mode 100644 index 59e4eff9e105..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargets/test.ts +++ /dev/null @@ -1,42 +0,0 @@ -import nock from 'nock'; - -import { TestEnv, runScenario } from '../../../../utils'; - -test('httpIntegration should instrument correct requests when tracePropagationTargets option is provided & tracing is enabled', async () => { - const match1 = nock('http://match-this-url.com') - .get('/api/v0') - .matchHeader('baggage', val => typeof val === 'string') - .matchHeader('sentry-trace', val => typeof val === 'string') - .reply(200); - - const match2 = nock('http://match-this-url.com') - .get('/api/v1') - .matchHeader('baggage', val => typeof val === 'string') - .matchHeader('sentry-trace', val => typeof val === 'string') - .reply(200); - - const match3 = nock('http://dont-match-this-url.com') - .get('/api/v2') - .matchHeader('baggage', val => val === undefined) - .matchHeader('sentry-trace', val => val === undefined) - .reply(200); - - const match4 = nock('http://dont-match-this-url.com') - .get('/api/v3') - .matchHeader('baggage', val => val === undefined) - .matchHeader('sentry-trace', val => val === undefined) - .reply(200); - - const env = await TestEnv.init(__dirname); - await runScenario(env.url); - - env.server.close(); - nock.cleanAll(); - - await new Promise(resolve => env.server.close(resolve)); - - expect(match1.isDone()).toBe(true); - expect(match2.isDone()).toBe(true); - expect(match3.isDone()).toBe(true); - expect(match4.isDone()).toBe(true); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargetsDisabled/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargetsDisabled/scenario.ts deleted file mode 100644 index c04616f7db89..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargetsDisabled/scenario.ts +++ /dev/null @@ -1,19 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import '@sentry/tracing'; - -import * as http from 'http'; -import * as Sentry from '@sentry/node'; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracePropagationTargets: [/\/v0/, 'v1'], - integrations: [Sentry.httpIntegration({})], -}); - -Sentry.startSpan({ name: 'test_transaction' }, () => { - http.get('http://match-this-url.com/api/v0'); - http.get('http://match-this-url.com/api/v1'); - http.get('http://dont-match-this-url.com/api/v2'); - http.get('http://dont-match-this-url.com/api/v3'); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/docker-compose.yml b/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/docker-compose.yml deleted file mode 100644 index 45caa4bb3179..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/docker-compose.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: '3.9' - -services: - db: - image: postgres:13 - restart: always - container_name: integration-tests-prisma - ports: - - '5433:5432' - environment: - POSTGRES_USER: prisma - POSTGRES_PASSWORD: prisma - POSTGRES_DB: tests diff --git a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/package.json b/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/package.json deleted file mode 100644 index f8b24d7d0465..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "sentry-prisma-test", - "version": "1.0.0", - "description": "", - "main": "index.js", - "engines": { - "node": ">=12" - }, - "scripts": { - "db-up": "docker-compose up -d", - "generate": "prisma generate", - "migrate": "prisma migrate dev -n sentry-test", - "setup": "run-s --silent db-up generate migrate" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@prisma/client": "3.12.0", - "prisma": "^3.12.0" - } -} diff --git a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/migrations/migration_lock.toml b/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/migrations/migration_lock.toml deleted file mode 100644 index fbffa92c2bb7..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/migrations/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) -provider = "postgresql" \ No newline at end of file diff --git a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/migrations/sentry_test/migration.sql b/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/migrations/sentry_test/migration.sql deleted file mode 100644 index 8619aaceb2b0..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/migrations/sentry_test/migration.sql +++ /dev/null @@ -1,12 +0,0 @@ --- CreateTable -CREATE TABLE "User" ( - "id" SERIAL NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "email" TEXT NOT NULL, - "name" TEXT, - - CONSTRAINT "User_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/schema.prisma b/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/schema.prisma deleted file mode 100644 index 4363c97738ee..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/prisma/schema.prisma +++ /dev/null @@ -1,15 +0,0 @@ -datasource db { - url = "postgresql://prisma:prisma@localhost:5433/tests" - provider = "postgresql" -} - -generator client { - provider = "prisma-client-js" -} - -model User { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - email String @unique - name String? -} diff --git a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/scenario.ts deleted file mode 100644 index 29c20bb772ba..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/scenario.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ -import { PrismaClient } from '@prisma/client'; -import * as Sentry from '@sentry/node'; - -const client = new PrismaClient(); - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracesSampleRate: 1.0, - integrations: [new Sentry.Integrations.Prisma({ client })], -}); - -// eslint-disable-next-line @typescript-eslint/no-floating-promises -Sentry.startSpanManual( - { - name: 'Test Span', - }, - async span => { - try { - await client.user.create({ - data: { - name: 'Dog', - email: 'dog@sentry.io', - }, - }); - - await client.user.findMany(); - - await client.user.deleteMany({ - where: { - email: { - contains: 'sentry.io', - }, - }, - }); - } finally { - if (span) span.end(); - } - }, -); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/setup.ts b/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/setup.ts deleted file mode 100755 index d5c4e552b397..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/setup.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { execSync } from 'child_process'; -import { parseSemver } from '@sentry/utils'; - -const NODE_VERSION = parseSemver(process.versions.node); - -if (NODE_VERSION.major && NODE_VERSION.major < 12) { - // eslint-disable-next-line no-console - console.warn(`Skipping Prisma tests on Node: ${NODE_VERSION.major}`); - process.exit(0); -} - -try { - execSync('yarn && yarn setup'); -} catch (_) { - process.exit(1); -} diff --git a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/test.ts b/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/test.ts deleted file mode 100644 index 70d704ec7017..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { TestEnv, assertSentryTransaction } from '../../../utils'; - -describe('Prisma ORM Integration', () => { - test('should instrument Prisma client for tracing.', async () => { - const env = await TestEnv.init(__dirname); - const envelope = await env.getEnvelopeRequest({ envelopeType: 'transaction' }); - - assertSentryTransaction(envelope[2], { - transaction: 'Test Span', - spans: [ - { - description: 'User create', - op: 'db.prisma', - data: { 'db.system': 'postgresql', 'db.operation': 'create', 'db.prisma.version': '3.12.0' }, - }, - { - description: 'User findMany', - op: 'db.prisma', - data: { 'db.system': 'postgresql', 'db.operation': 'findMany', 'db.prisma.version': '3.12.0' }, - }, - { - description: 'User deleteMany', - op: 'db.prisma', - data: { 'db.system': 'postgresql', 'db.operation': 'deleteMany', 'db.prisma.version': '3.12.0' }, - }, - ], - }); - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/yarn.lock b/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/yarn.lock deleted file mode 100644 index d228adebd621..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing-new/prisma-orm/yarn.lock +++ /dev/null @@ -1,27 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@prisma/client@3.12.0": - version "3.12.0" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-3.12.0.tgz#a0eb49ffea5c128dd11dffb896d7139a60073d12" - integrity sha512-4NEQjUcWja/NVBvfuDFscWSk1/rXg3+wj+TSkqXCb1tKlx/bsUE00rxsvOvGg7VZ6lw1JFpGkwjwmsOIc4zvQw== - dependencies: - "@prisma/engines-version" "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980" - -"@prisma/engines-version@3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980": - version "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980.tgz#829ca3d9d0d92555f44644606d4edfd45b2f5886" - integrity sha512-o+jo8d7ZEiVpcpNWUDh3fj2uPQpBxl79XE9ih9nkogJbhw6P33274SHnqheedZ7PyvPIK/mvU8MLNYgetgXPYw== - -"@prisma/engines@3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980": - version "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980.tgz#e52e364084c4d05278f62768047b788665e64a45" - integrity sha512-zULjkN8yhzS7B3yeEz4aIym4E2w1ChrV12i14pht3ePFufvsAvBSoZ+tuXMvfSoNTgBS5E4bolRzLbMmbwkkMQ== - -prisma@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-3.12.0.tgz#9675e0e72407122759d3eadcb6d27cdccd3497bd" - integrity sha512-ltCMZAx1i0i9xuPM692Srj8McC665h6E5RqJom999sjtVSccHSD8Z+HSdBN2183h9PJKvC5dapkn78dd0NWMBg== - dependencies: - "@prisma/engines" "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980" diff --git a/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargets/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargets/scenario.ts index 5eef548fd15d..9d8da27fa7b7 100644 --- a/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargets/scenario.ts +++ b/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargets/scenario.ts @@ -1,5 +1,5 @@ import * as http from 'http'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/scenario.ts b/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargetsDisabled/scenario.ts similarity index 80% rename from dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/scenario.ts rename to dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargetsDisabled/scenario.ts index 5eef548fd15d..cfad7894d2b8 100644 --- a/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/scenario.ts +++ b/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargetsDisabled/scenario.ts @@ -1,5 +1,5 @@ import * as http from 'http'; -import * as Sentry from '@sentry/node'; +import * as Sentry from '@sentry/node-experimental'; Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', @@ -9,7 +9,7 @@ Sentry.init({ integrations: [Sentry.httpIntegration({ tracing: true })], }); -Sentry.startSpan({ name: 'test_span' }, () => { +Sentry.startSpan({ name: 'test_transaction' }, () => { http.get('http://match-this-url.com/api/v0'); http.get('http://match-this-url.com/api/v1'); http.get('http://dont-match-this-url.com/api/v2'); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargetsDisabled/test.ts b/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargetsDisabled/test.ts similarity index 95% rename from dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargetsDisabled/test.ts rename to dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargetsDisabled/test.ts index abc1ff025b78..6fa28a13c5e1 100644 --- a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/tracePropagationTargetsDisabled/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargetsDisabled/test.ts @@ -1,6 +1,6 @@ import nock from 'nock'; -import { TestEnv, runScenario } from '../../../../utils'; +import { TestEnv, runScenario } from '../../../utils'; test('httpIntegration should not instrument when tracing is enabled', async () => { const match1 = nock('http://match-this-url.com') diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario.ts deleted file mode 100644 index 9105f0490847..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/scenario.ts +++ /dev/null @@ -1,36 +0,0 @@ -import * as Sentry from '@sentry/node'; -import { ApolloServer, gql } from 'apollo-server'; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracesSampleRate: 1.0, - integrations: [new Sentry.Integrations.GraphQL(), new Sentry.Integrations.Apollo()], -}); - -const typeDefs = gql` - type Query { - hello: String - } -`; - -const resolvers = { - Query: { - hello: () => { - return 'Hello world!'; - }, - }, -}; - -const server = new ApolloServer({ - typeDefs, - resolvers, -}); - -// eslint-disable-next-line @typescript-eslint/no-floating-promises -Sentry.startSpan({ name: 'root_span' }, async () => { - // Ref: https://www.apollographql.com/docs/apollo-server/testing/testing/#testing-using-executeoperation - await server.executeOperation({ - query: '{hello}', - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/test.ts b/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/test.ts deleted file mode 100644 index 152b3e9f697b..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/apollo-graphql/test.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { TestEnv, assertSentryTransaction } from '../../../utils'; - -describe('GraphQL/Apollo Tests', () => { - test('should instrument GraphQL and Apollo Server.', async () => { - const env = await TestEnv.init(__dirname); - const envelope = await env.getEnvelopeRequest({ envelopeType: 'transaction' }); - - expect(envelope).toHaveLength(3); - - const transaction = envelope[2]; - const parentSpanId = (transaction as any)?.contexts?.trace?.span_id; - const graphqlSpanId = (transaction as any)?.spans?.[0].span_id; - - expect(parentSpanId).toBeDefined(); - expect(graphqlSpanId).toBeDefined(); - - assertSentryTransaction(transaction, { - transaction: 'root_span', - spans: [ - { - description: 'execute', - op: 'graphql.execute', - parent_span_id: parentSpanId, - }, - { - description: 'Query.hello', - op: 'graphql.resolve', - parent_span_id: graphqlSpanId, - }, - ], - }); - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing/auto-instrument/mongodb/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/auto-instrument/mongodb/scenario.ts deleted file mode 100644 index 3e039d8f9fb8..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/auto-instrument/mongodb/scenario.ts +++ /dev/null @@ -1,42 +0,0 @@ -import '@sentry/tracing'; - -import * as Sentry from '@sentry/node'; -import { MongoClient } from 'mongodb'; - -// suppress logging of the mongo download -global.console.log = () => null; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracesSampleRate: 1.0, -}); - -const client = new MongoClient(process.env.MONGO_URL || '', { - useUnifiedTopology: true, -}); - -// eslint-disable-next-line @typescript-eslint/no-floating-promises -Sentry.startSpanManual( - { - name: 'Test Span', - }, - async span => { - try { - await client.connect(); - - const database = client.db('admin'); - const collection = database.collection('movies'); - - await collection.insertOne({ title: 'Rick and Morty' }); - await collection.findOne({ title: 'Back to the Future' }); - await collection.updateOne({ title: 'Back to the Future' }, { $set: { title: 'South Park' } }); - await collection.findOne({ title: 'South Park' }); - - await collection.find({ title: 'South Park' }).toArray(); - } finally { - span?.end(); - await client.close(); - } - }, -); diff --git a/dev-packages/node-integration-tests/suites/tracing/auto-instrument/mongodb/test.ts b/dev-packages/node-integration-tests/suites/tracing/auto-instrument/mongodb/test.ts deleted file mode 100644 index c7a3d14ab098..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/auto-instrument/mongodb/test.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { MongoMemoryServer } from 'mongodb-memory-server-global'; - -import { TestEnv, assertSentryTransaction } from '../../../../utils'; - -// This test can take longer. -jest.setTimeout(15000); - -describe('MongoDB Test', () => { - let mongoServer: MongoMemoryServer; - - beforeAll(async () => { - mongoServer = await MongoMemoryServer.create(); - process.env.MONGO_URL = mongoServer.getUri(); - }, 10000); - - afterAll(async () => { - if (mongoServer) { - await mongoServer.stop(); - } - }); - - test('should auto-instrument `mongodb` package.', async () => { - const env = await TestEnv.init(__dirname); - const envelope = await env.getEnvelopeRequest({ envelopeType: 'transaction' }); - - expect(envelope).toHaveLength(3); - - assertSentryTransaction(envelope[2], { - transaction: 'Test Span', - spans: [ - { - data: { - 'db.system': 'mongodb', - 'db.name': 'admin', - 'db.operation': 'insertOne', - 'db.mongodb.collection': 'movies', - }, - description: 'insertOne', - op: 'db', - }, - { - data: { - 'db.system': 'mongodb', - 'db.name': 'admin', - 'db.operation': 'findOne', - 'db.mongodb.collection': 'movies', - }, - description: 'findOne', - op: 'db', - }, - { - data: { - 'db.system': 'mongodb', - 'db.name': 'admin', - 'db.operation': 'updateOne', - 'db.mongodb.collection': 'movies', - }, - description: 'updateOne', - op: 'db', - }, - { - data: { - 'db.system': 'mongodb', - 'db.name': 'admin', - 'db.operation': 'findOne', - 'db.mongodb.collection': 'movies', - }, - description: 'findOne', - op: 'db', - }, - { - data: { - 'db.system': 'mongodb', - 'db.name': 'admin', - 'db.operation': 'find', - 'db.mongodb.collection': 'movies', - }, - description: 'find', - op: 'db', - }, - ], - }); - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing/auto-instrument/pg/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/auto-instrument/pg/scenario.ts deleted file mode 100644 index 3d0600cb81ec..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/auto-instrument/pg/scenario.ts +++ /dev/null @@ -1,19 +0,0 @@ -import '@sentry/tracing'; - -import * as Sentry from '@sentry/node'; -import pg from 'pg'; - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracesSampleRate: 1.0, -}); - -Sentry.startSpanManual({ name: 'Test Span' }, span => { - const client = new pg.Client(); - client.query('SELECT * FROM foo where bar ilike "baz%"', ['a', 'b'], () => - client.query('SELECT * FROM bazz', () => { - client.query('SELECT NOW()', () => span?.end()); - }), - ); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing/auto-instrument/pg/test.ts b/dev-packages/node-integration-tests/suites/tracing/auto-instrument/pg/test.ts deleted file mode 100644 index 16cd5fb8487c..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/auto-instrument/pg/test.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { TestEnv, assertSentryTransaction } from '../../../../utils'; - -class PgClient { - database?: string = 'test'; - user?: string = 'user'; - host?: string = 'localhost'; - port?: number = 5432; - - // https://node-postgres.com/api/client#clientquery - public query(_text: unknown, values: unknown, callback?: () => void) { - if (typeof callback === 'function') { - callback(); - return; - } - - if (typeof values === 'function') { - values(); - return; - } - - return Promise.resolve(); - } -} - -beforeAll(() => { - jest.mock('pg', () => { - return { - Client: PgClient, - native: { - Client: PgClient, - }, - }; - }); -}); - -test('should auto-instrument `pg` package.', async () => { - const env = await TestEnv.init(__dirname); - const envelope = await env.getEnvelopeRequest({ envelopeType: 'transaction' }); - - expect(envelope).toHaveLength(3); - - assertSentryTransaction(envelope[2], { - transaction: 'Test Span', - spans: [ - { - description: 'SELECT * FROM foo where bar ilike "baz%"', - op: 'db', - data: { - 'db.system': 'postgresql', - 'db.user': 'user', - 'db.name': 'test', - 'server.address': 'localhost', - 'server.port': 5432, - }, - }, - { - description: 'SELECT * FROM bazz', - op: 'db', - data: { - 'db.system': 'postgresql', - 'db.user': 'user', - 'db.name': 'test', - 'server.address': 'localhost', - 'server.port': 5432, - }, - }, - { - description: 'SELECT NOW()', - op: 'db', - data: { - 'db.system': 'postgresql', - 'db.user': 'user', - 'db.name': 'test', - 'server.address': 'localhost', - 'server.port': 5432, - }, - }, - ], - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing/metric-summaries/scenario.js b/dev-packages/node-integration-tests/suites/tracing/metric-summaries/scenario.js index e2921db180af..4a0a3ec792e5 100644 --- a/dev-packages/node-integration-tests/suites/tracing/metric-summaries/scenario.js +++ b/dev-packages/node-integration-tests/suites/tracing/metric-summaries/scenario.js @@ -1,5 +1,5 @@ const { loggingTransport } = require('@sentry-internal/node-integration-tests'); -const Sentry = require('@sentry/node'); +const Sentry = require('@sentry/node-experimental'); Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/docker-compose.yml b/dev-packages/node-integration-tests/suites/tracing/prisma-orm/docker-compose.yml deleted file mode 100644 index 45caa4bb3179..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/docker-compose.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: '3.9' - -services: - db: - image: postgres:13 - restart: always - container_name: integration-tests-prisma - ports: - - '5433:5432' - environment: - POSTGRES_USER: prisma - POSTGRES_PASSWORD: prisma - POSTGRES_DB: tests diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/package.json b/dev-packages/node-integration-tests/suites/tracing/prisma-orm/package.json deleted file mode 100644 index f8b24d7d0465..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "sentry-prisma-test", - "version": "1.0.0", - "description": "", - "main": "index.js", - "engines": { - "node": ">=12" - }, - "scripts": { - "db-up": "docker-compose up -d", - "generate": "prisma generate", - "migrate": "prisma migrate dev -n sentry-test", - "setup": "run-s --silent db-up generate migrate" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "@prisma/client": "3.12.0", - "prisma": "^3.12.0" - } -} diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/migrations/migration_lock.toml b/dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/migrations/migration_lock.toml deleted file mode 100644 index fbffa92c2bb7..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/migrations/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (i.e. Git) -provider = "postgresql" \ No newline at end of file diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/migrations/sentry_test/migration.sql b/dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/migrations/sentry_test/migration.sql deleted file mode 100644 index 8619aaceb2b0..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/migrations/sentry_test/migration.sql +++ /dev/null @@ -1,12 +0,0 @@ --- CreateTable -CREATE TABLE "User" ( - "id" SERIAL NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "email" TEXT NOT NULL, - "name" TEXT, - - CONSTRAINT "User_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "User_email_key" ON "User"("email"); diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/schema.prisma b/dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/schema.prisma deleted file mode 100644 index 4363c97738ee..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/prisma/schema.prisma +++ /dev/null @@ -1,15 +0,0 @@ -datasource db { - url = "postgresql://prisma:prisma@localhost:5433/tests" - provider = "postgresql" -} - -generator client { - provider = "prisma-client-js" -} - -model User { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) - email String @unique - name String? -} diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/prisma-orm/scenario.ts deleted file mode 100644 index 51bccb519630..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/scenario.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unsafe-member-access */ -import { PrismaClient } from '@prisma/client'; -import * as Sentry from '@sentry/node'; - -const client = new PrismaClient(); - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - tracesSampleRate: 1.0, - integrations: [new Sentry.Integrations.Prisma({ client })], -}); - -// eslint-disable-next-line @typescript-eslint/no-floating-promises -Sentry.startSpanManual( - { - name: 'Test Span', - }, - async span => { - try { - await client.user.create({ - data: { - name: 'David', - email: 'david_cramer@sentry.io', - }, - }); - - await client.user.findMany(); - - await client.user.deleteMany({ - where: { - email: { - contains: 'sentry.io', - }, - }, - }); - } finally { - span?.end(); - } - }, -); 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 deleted file mode 100755 index d5c4e552b397..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/setup.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { execSync } from 'child_process'; -import { parseSemver } from '@sentry/utils'; - -const NODE_VERSION = parseSemver(process.versions.node); - -if (NODE_VERSION.major && NODE_VERSION.major < 12) { - // eslint-disable-next-line no-console - console.warn(`Skipping Prisma tests on Node: ${NODE_VERSION.major}`); - process.exit(0); -} - -try { - execSync('yarn && yarn setup'); -} catch (_) { - process.exit(1); -} diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/test.ts b/dev-packages/node-integration-tests/suites/tracing/prisma-orm/test.ts deleted file mode 100644 index 70d704ec7017..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/test.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { TestEnv, assertSentryTransaction } from '../../../utils'; - -describe('Prisma ORM Integration', () => { - test('should instrument Prisma client for tracing.', async () => { - const env = await TestEnv.init(__dirname); - const envelope = await env.getEnvelopeRequest({ envelopeType: 'transaction' }); - - assertSentryTransaction(envelope[2], { - transaction: 'Test Span', - spans: [ - { - description: 'User create', - op: 'db.prisma', - data: { 'db.system': 'postgresql', 'db.operation': 'create', 'db.prisma.version': '3.12.0' }, - }, - { - description: 'User findMany', - op: 'db.prisma', - data: { 'db.system': 'postgresql', 'db.operation': 'findMany', 'db.prisma.version': '3.12.0' }, - }, - { - description: 'User deleteMany', - op: 'db.prisma', - data: { 'db.system': 'postgresql', 'db.operation': 'deleteMany', 'db.prisma.version': '3.12.0' }, - }, - ], - }); - }); -}); diff --git a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/yarn.lock b/dev-packages/node-integration-tests/suites/tracing/prisma-orm/yarn.lock deleted file mode 100644 index d228adebd621..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/prisma-orm/yarn.lock +++ /dev/null @@ -1,27 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@prisma/client@3.12.0": - version "3.12.0" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-3.12.0.tgz#a0eb49ffea5c128dd11dffb896d7139a60073d12" - integrity sha512-4NEQjUcWja/NVBvfuDFscWSk1/rXg3+wj+TSkqXCb1tKlx/bsUE00rxsvOvGg7VZ6lw1JFpGkwjwmsOIc4zvQw== - dependencies: - "@prisma/engines-version" "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980" - -"@prisma/engines-version@3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980": - version "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980.tgz#829ca3d9d0d92555f44644606d4edfd45b2f5886" - integrity sha512-o+jo8d7ZEiVpcpNWUDh3fj2uPQpBxl79XE9ih9nkogJbhw6P33274SHnqheedZ7PyvPIK/mvU8MLNYgetgXPYw== - -"@prisma/engines@3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980": - version "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980.tgz#e52e364084c4d05278f62768047b788665e64a45" - integrity sha512-zULjkN8yhzS7B3yeEz4aIym4E2w1ChrV12i14pht3ePFufvsAvBSoZ+tuXMvfSoNTgBS5E4bolRzLbMmbwkkMQ== - -prisma@^3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-3.12.0.tgz#9675e0e72407122759d3eadcb6d27cdccd3497bd" - integrity sha512-ltCMZAx1i0i9xuPM692Srj8McC665h6E5RqJom999sjtVSccHSD8Z+HSdBN2183h9PJKvC5dapkn78dd0NWMBg== - dependencies: - "@prisma/engines" "3.12.0-37.22b822189f46ef0dc5c5b503368d1bee01213980" diff --git a/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts b/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts deleted file mode 100644 index 01b75ab10330..000000000000 --- a/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts +++ /dev/null @@ -1,42 +0,0 @@ -import nock from 'nock'; - -import { TestEnv, runScenario } from '../../../utils'; - -test('HttpIntegration should instrument correct requests when tracePropagationTargets option is provided', async () => { - const match1 = nock('http://match-this-url.com') - .get('/api/v0') - .matchHeader('baggage', val => typeof val === 'string') - .matchHeader('sentry-trace', val => typeof val === 'string') - .reply(200); - - const match2 = nock('http://match-this-url.com') - .get('/api/v1') - .matchHeader('baggage', val => typeof val === 'string') - .matchHeader('sentry-trace', val => typeof val === 'string') - .reply(200); - - const match3 = nock('http://dont-match-this-url.com') - .get('/api/v2') - .matchHeader('baggage', val => val === undefined) - .matchHeader('sentry-trace', val => val === undefined) - .reply(200); - - const match4 = nock('http://dont-match-this-url.com') - .get('/api/v3') - .matchHeader('baggage', val => val === undefined) - .matchHeader('sentry-trace', val => val === undefined) - .reply(200); - - const env = await TestEnv.init(__dirname); - await runScenario(env.url); - - env.server.close(); - nock.cleanAll(); - - await new Promise(resolve => env.server.close(resolve)); - - expect(match1.isDone()).toBe(true); - expect(match2.isDone()).toBe(true); - expect(match3.isDone()).toBe(true); - expect(match4.isDone()).toBe(true); -}); diff --git a/packages/node-experimental/src/index.ts b/packages/node-experimental/src/index.ts index 1ee78398613e..807d4d73e936 100644 --- a/packages/node-experimental/src/index.ts +++ b/packages/node-experimental/src/index.ts @@ -8,6 +8,7 @@ export { localVariablesIntegration } from './integrations/local-variables'; export { modulesIntegration } from './integrations/modules'; export { onUncaughtExceptionIntegration } from './integrations/onuncaughtexception'; export { onUnhandledRejectionIntegration } from './integrations/onunhandledrejection'; +export { anrIntegration } from './integrations/anr'; export { expressIntegration, expressErrorHandler, setupExpressErrorHandler } from './integrations/tracing/express'; export { fastifyIntegration } from './integrations/tracing/fastify'; diff --git a/packages/node-experimental/src/integrations/onuncaughtexception.ts b/packages/node-experimental/src/integrations/onuncaughtexception.ts index 84cae854ab81..e56c3c0801d7 100644 --- a/packages/node-experimental/src/integrations/onuncaughtexception.ts +++ b/packages/node-experimental/src/integrations/onuncaughtexception.ts @@ -86,20 +86,19 @@ export function makeErrorHandler(client: NodeClient, options: OnUncaughtExceptio // exit behaviour of the SDK accordingly: // - If other listeners are attached, do not exit. // - If the only listener attached is ours, exit. - const userProvidedListenersCount = ( - global.process.listeners('uncaughtException') as TaggedListener[] - ).reduce((acc, listener) => { - if ( + const userProvidedListenersCount = (global.process.listeners('uncaughtException') as TaggedListener[]).filter( + listener => { // There are 3 listeners we ignore: - listener.name === 'domainUncaughtExceptionClear' || // as soon as we're using domains this listener is attached by node itself - (listener.tag && listener.tag === 'sentry_tracingErrorCallback') || // the handler we register for tracing - (listener as ErrorHandler)._errorHandler // the handler we register in this integration - ) { - return acc; - } else { - return acc + 1; - } - }, 0); + return ( + // as soon as we're using domains this listener is attached by node itself + listener.name !== 'domainUncaughtExceptionClear' && + // the handler we register for tracing + listener.tag !== 'sentry_tracingErrorCallback' && + // the handler we register in this integration + (listener as ErrorHandler)._errorHandler !== true + ); + }, + ).length; const processWouldExit = userProvidedListenersCount === 0; const shouldApplyFatalHandlingLogic = options.exitEvenIfOtherHandlersAreRegistered || processWouldExit; From c801e84652d35f4955caa4b9d26db429f5e8edf3 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 13:44:48 +0100 Subject: [PATCH 06/10] fix makeMain --- packages/node-experimental/src/index.ts | 8 +++++++- packages/node-experimental/src/sdk/api.ts | 12 ++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/node-experimental/src/index.ts b/packages/node-experimental/src/index.ts index 807d4d73e936..c1a55ce959f7 100644 --- a/packages/node-experimental/src/index.ts +++ b/packages/node-experimental/src/index.ts @@ -24,7 +24,13 @@ export { hapiIntegration, setupHapiErrorHandler } from './integrations/tracing/h export { init, getDefaultIntegrations } from './sdk/init'; export { getAutoPerformanceIntegrations } from './integrations/tracing'; -export { getClient, getSentryRelease, defaultStackParser } from './sdk/api'; +export { + getClient, + getSentryRelease, + defaultStackParser, + // eslint-disable-next-line deprecation/deprecation + makeMain, +} from './sdk/api'; export { createGetModuleFromFilename } from './utils/module'; export { makeNodeTransport } from './transports'; export { NodeClient } from './sdk/client'; diff --git a/packages/node-experimental/src/sdk/api.ts b/packages/node-experimental/src/sdk/api.ts index 2608795a8264..735766e994f1 100644 --- a/packages/node-experimental/src/sdk/api.ts +++ b/packages/node-experimental/src/sdk/api.ts @@ -2,6 +2,7 @@ import { getCurrentScope } from '@sentry/core'; import type { Client, StackParser } from '@sentry/types'; +import type { Hub } from '@sentry/types'; import { GLOBAL_OBJ, createStackParser, nodeStackLineParser } from '@sentry/utils'; import { createGetModuleFromFilename } from '../utils/module'; @@ -54,3 +55,14 @@ export function getSentryRelease(fallback?: string): string | undefined { /** Node.js stack parser */ export const defaultStackParser: StackParser = createStackParser(nodeStackLineParser(createGetModuleFromFilename())); + +/** + * This method is a noop and only here to ensure vite-plugin v0.6.0 (which is used by Sveltekit) still works, + * as that uses this. + * + * @deprecated This will be removed before v8 is finalized. + */ +export function makeMain(hub: Hub): Hub { + // noop + return hub; +} From f74a2a77fa834d4f01b36b378c64033a0af3788a Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 13:48:26 +0100 Subject: [PATCH 07/10] merge tracing & tracing new --- .../{tracing-new/httpIntegration => tracing}/spans/scenario.ts | 0 .../{tracing-new/httpIntegration => tracing}/spans/test.ts | 2 +- .../tracePropagationTargets/scenario.ts | 0 .../{tracing-new => tracing}/tracePropagationTargets/test.ts | 0 .../tracePropagationTargetsDisabled/scenario.ts | 0 .../tracePropagationTargetsDisabled/test.ts | 0 6 files changed, 1 insertion(+), 1 deletion(-) rename dev-packages/node-integration-tests/suites/{tracing-new/httpIntegration => tracing}/spans/scenario.ts (100%) rename dev-packages/node-integration-tests/suites/{tracing-new/httpIntegration => tracing}/spans/test.ts (93%) rename dev-packages/node-integration-tests/suites/{tracing-new => tracing}/tracePropagationTargets/scenario.ts (100%) rename dev-packages/node-integration-tests/suites/{tracing-new => tracing}/tracePropagationTargets/test.ts (100%) rename dev-packages/node-integration-tests/suites/{tracing-new => tracing}/tracePropagationTargetsDisabled/scenario.ts (100%) rename dev-packages/node-integration-tests/suites/{tracing-new => tracing}/tracePropagationTargetsDisabled/test.ts (100%) diff --git a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spans/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/spans/scenario.ts similarity index 100% rename from dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spans/scenario.ts rename to dev-packages/node-integration-tests/suites/tracing/spans/scenario.ts diff --git a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spans/test.ts b/dev-packages/node-integration-tests/suites/tracing/spans/test.ts similarity index 93% rename from dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spans/test.ts rename to dev-packages/node-integration-tests/suites/tracing/spans/test.ts index bd95db22de6e..dac3ec15dd74 100644 --- a/dev-packages/node-integration-tests/suites/tracing-new/httpIntegration/spans/test.ts +++ b/dev-packages/node-integration-tests/suites/tracing/spans/test.ts @@ -1,6 +1,6 @@ import nock from 'nock'; -import { TestEnv, assertSentryTransaction } from '../../../../utils'; +import { TestEnv, assertSentryTransaction } from '../../../utils'; test('should capture spans for outgoing http requests', async () => { const match1 = nock('http://match-this-url.com').get('/api/v0').reply(200); diff --git a/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargets/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/scenario.ts similarity index 100% rename from dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargets/scenario.ts rename to dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/scenario.ts diff --git a/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargets/test.ts b/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts similarity index 100% rename from dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargets/test.ts rename to dev-packages/node-integration-tests/suites/tracing/tracePropagationTargets/test.ts diff --git a/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargetsDisabled/scenario.ts b/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargetsDisabled/scenario.ts similarity index 100% rename from dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargetsDisabled/scenario.ts rename to dev-packages/node-integration-tests/suites/tracing/tracePropagationTargetsDisabled/scenario.ts diff --git a/dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargetsDisabled/test.ts b/dev-packages/node-integration-tests/suites/tracing/tracePropagationTargetsDisabled/test.ts similarity index 100% rename from dev-packages/node-integration-tests/suites/tracing-new/tracePropagationTargetsDisabled/test.ts rename to dev-packages/node-integration-tests/suites/tracing/tracePropagationTargetsDisabled/test.ts From 3401491d0a6912c8e89ddf01c06a6ef6cdc8332b Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 14:30:00 +0100 Subject: [PATCH 08/10] fix some tests --- .../node-integration-tests/suites/anr/basic-session.js | 1 + dev-packages/node-integration-tests/suites/anr/test.ts | 1 + .../suites/public-api/LocalVariables/test.ts | 4 ++-- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dev-packages/node-integration-tests/suites/anr/basic-session.js b/dev-packages/node-integration-tests/suites/anr/basic-session.js index 7b22e9a6a83e..153acf83f16f 100644 --- a/dev-packages/node-integration-tests/suites/anr/basic-session.js +++ b/dev-packages/node-integration-tests/suites/anr/basic-session.js @@ -12,6 +12,7 @@ Sentry.init({ release: '1.0', debug: true, integrations: [Sentry.anrIntegration({ captureStackTrace: true, anrThreshold: 100 })], + autoSessionTracking: true, }); function longWork() { diff --git a/dev-packages/node-integration-tests/suites/anr/test.ts b/dev-packages/node-integration-tests/suites/anr/test.ts index 210f32588588..a3642bc931a1 100644 --- a/dev-packages/node-integration-tests/suites/anr/test.ts +++ b/dev-packages/node-integration-tests/suites/anr/test.ts @@ -88,6 +88,7 @@ conditionalTest({ min: 16 })('should report ANR when event loop blocked', () => test('With session', done => { createRunner(__dirname, 'basic-session.js') + .ignore('event') .expect({ session: { status: 'abnormal', diff --git a/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts b/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts index 3458d74f46b1..41ba998f64db 100644 --- a/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts @@ -80,8 +80,8 @@ conditionalTest({ min: 18 })('LocalVariables integration', () => { child.on('message', msg => { reportedCount++; const rssMb = msg.memUsage.rss / 1024 / 1024; - // We shouldn't use more than 100MB of memory - expect(rssMb).toBeLessThan(100); + // We shouldn't use more than 110MB of memory + expect(rssMb).toBeLessThan(110); }); // Wait for 20 seconds From c092a4daf419f786949e06c3cfd40bf62de9af16 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 15:00:17 +0100 Subject: [PATCH 09/10] do not skip event --- dev-packages/node-integration-tests/suites/anr/test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/dev-packages/node-integration-tests/suites/anr/test.ts b/dev-packages/node-integration-tests/suites/anr/test.ts index a3642bc931a1..210f32588588 100644 --- a/dev-packages/node-integration-tests/suites/anr/test.ts +++ b/dev-packages/node-integration-tests/suites/anr/test.ts @@ -88,7 +88,6 @@ conditionalTest({ min: 16 })('should report ANR when event loop blocked', () => test('With session', done => { createRunner(__dirname, 'basic-session.js') - .ignore('event') .expect({ session: { status: 'abnormal', From 5d82278e0fc56fb0d24cc573594bc905c5b1ee36 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Wed, 21 Feb 2024 15:41:24 +0100 Subject: [PATCH 10/10] extend memory usage limit --- .../suites/public-api/LocalVariables/test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts b/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts index 41ba998f64db..50dd06dfcd3b 100644 --- a/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts +++ b/dev-packages/node-integration-tests/suites/public-api/LocalVariables/test.ts @@ -80,8 +80,8 @@ conditionalTest({ min: 18 })('LocalVariables integration', () => { child.on('message', msg => { reportedCount++; const rssMb = msg.memUsage.rss / 1024 / 1024; - // We shouldn't use more than 110MB of memory - expect(rssMb).toBeLessThan(110); + // We shouldn't use more than 120MB of memory + expect(rssMb).toBeLessThan(120); }); // Wait for 20 seconds