From 67486a8adca5a815bccfe0f9ffa0a9bbe781feb8 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 13 Mar 2023 17:56:27 +0000 Subject: [PATCH 1/4] Add internal tracing package --- package.json | 1 + packages/tracing-internal/.eslintrc.js | 11 ++++ packages/tracing-internal/LICENSE | 14 +++++ packages/tracing-internal/README.md | 11 ++++ packages/tracing-internal/jest.config.js | 1 + packages/tracing-internal/package.json | 52 +++++++++++++++++++ .../tracing-internal/rollup.npm.config.js | 3 ++ packages/tracing-internal/src/index.ts | 1 + packages/tracing-internal/tsconfig.json | 9 ++++ packages/tracing-internal/tsconfig.test.json | 12 +++++ packages/tracing-internal/tsconfig.types.json | 17 ++++++ 11 files changed, 132 insertions(+) create mode 100644 packages/tracing-internal/.eslintrc.js create mode 100644 packages/tracing-internal/LICENSE create mode 100644 packages/tracing-internal/README.md create mode 100644 packages/tracing-internal/jest.config.js create mode 100644 packages/tracing-internal/package.json create mode 100644 packages/tracing-internal/rollup.npm.config.js create mode 100644 packages/tracing-internal/src/index.ts create mode 100644 packages/tracing-internal/tsconfig.json create mode 100644 packages/tracing-internal/tsconfig.test.json create mode 100644 packages/tracing-internal/tsconfig.types.json diff --git a/package.json b/package.json index dda4cf8e57e2..1680cb4cf61b 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "packages/svelte", "packages/sveltekit", "packages/tracing", + "packages/tracing-internal", "packages/types", "packages/typescript", "packages/utils", diff --git a/packages/tracing-internal/.eslintrc.js b/packages/tracing-internal/.eslintrc.js new file mode 100644 index 000000000000..efa4c594a069 --- /dev/null +++ b/packages/tracing-internal/.eslintrc.js @@ -0,0 +1,11 @@ +module.exports = { + extends: ['../../.eslintrc.js'], + overrides: [ + { + files: ['src/**'], + rules: { + '@sentry-internal/sdk/no-optional-chaining': 'off', + }, + }, + ], +}; diff --git a/packages/tracing-internal/LICENSE b/packages/tracing-internal/LICENSE new file mode 100644 index 000000000000..5113ccb2ac3d --- /dev/null +++ b/packages/tracing-internal/LICENSE @@ -0,0 +1,14 @@ +Copyright (c) 2020 Sentry (https://sentry.io) and individual contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/tracing-internal/README.md b/packages/tracing-internal/README.md new file mode 100644 index 000000000000..89fb3d609619 --- /dev/null +++ b/packages/tracing-internal/README.md @@ -0,0 +1,11 @@ +

+ + Sentry + +

+ +## Sentry Internal Tracing Package - Do not use directly, for internal use only + +This is an internal package that is being used to migrate @sentry/tracing code to its respective runtime packages. + +For v8, @sentry/tracing will be dropped and the code in this package will be split into @sentry/browser and @sentry/node. diff --git a/packages/tracing-internal/jest.config.js b/packages/tracing-internal/jest.config.js new file mode 100644 index 000000000000..24f49ab59a4c --- /dev/null +++ b/packages/tracing-internal/jest.config.js @@ -0,0 +1 @@ +module.exports = require('../../jest/jest.config.js'); diff --git a/packages/tracing-internal/package.json b/packages/tracing-internal/package.json new file mode 100644 index 000000000000..2435a9eb20bf --- /dev/null +++ b/packages/tracing-internal/package.json @@ -0,0 +1,52 @@ +{ + "name": "@sentry-internal/tracing", + "version": "7.43.0", + "description": "Sentry Internal Tracing Package", + "repository": "git://github.com/getsentry/sentry-javascript.git", + "homepage": "https://github.com/getsentry/sentry-javascript/tree/master/packages/tracing-internal", + "author": "Sentry", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "main": "build/cjs/index.js", + "module": "build/esm/index.js", + "types": "build/types/index.d.ts", + "publishConfig": { + "access": "public" + }, + "dependencies": { + "@sentry/core": "7.43.0", + "@sentry/types": "7.43.0", + "@sentry/utils": "7.43.0", + "tslib": "^1.9.3" + }, + "devDependencies": { + "@sentry/browser": "7.43.0", + "@types/express": "^4.17.14" + }, + "scripts": { + "build": "run-p build:transpile build:types", + "build:dev": "yarn build", + "build:transpile": "rollup -c rollup.npm.config.js", + "build:types": "tsc -p tsconfig.types.json", + "build:watch": "run-p build:transpile:watch build:types:watch", + "build:dev:watch": "run-p build:transpile:watch build:types:watch", + "build:transpile:watch": "rollup -c rollup.npm.config.js --watch", + "build:types:watch": "tsc -p tsconfig.types.json --watch", + "build:tarball": "ts-node ../../scripts/prepack.ts --bundles && npm pack ./build/npm", + "clean": "rimraf build coverage sentry-tracing-*.tgz", + "fix": "run-s fix:eslint fix:prettier", + "fix:eslint": "eslint . --format stylish --fix", + "fix:prettier": "prettier --write \"{src,test,scripts}/**/**.ts\"", + "lint": "run-s lint:prettier lint:eslint", + "lint:eslint": "eslint . --format stylish", + "lint:prettier": "prettier --check \"{src,test,scripts}/**/**.ts\"", + "test:unit": "jest", + "test": "jest", + "test:watch": "jest --watch" + }, + "volta": { + "extends": "../../package.json" + } +} diff --git a/packages/tracing-internal/rollup.npm.config.js b/packages/tracing-internal/rollup.npm.config.js new file mode 100644 index 000000000000..5a62b528ef44 --- /dev/null +++ b/packages/tracing-internal/rollup.npm.config.js @@ -0,0 +1,3 @@ +import { makeBaseNPMConfig, makeNPMConfigVariants } from '../../rollup/index.js'; + +export default makeNPMConfigVariants(makeBaseNPMConfig()); diff --git a/packages/tracing-internal/src/index.ts b/packages/tracing-internal/src/index.ts new file mode 100644 index 000000000000..cb0ff5c3b541 --- /dev/null +++ b/packages/tracing-internal/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/tracing-internal/tsconfig.json b/packages/tracing-internal/tsconfig.json new file mode 100644 index 000000000000..bf45a09f2d71 --- /dev/null +++ b/packages/tracing-internal/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + + "include": ["src/**/*"], + + "compilerOptions": { + // package-specific options + } +} diff --git a/packages/tracing-internal/tsconfig.test.json b/packages/tracing-internal/tsconfig.test.json new file mode 100644 index 000000000000..87f6afa06b86 --- /dev/null +++ b/packages/tracing-internal/tsconfig.test.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + + "include": ["test/**/*"], + + "compilerOptions": { + // should include all types from `./tsconfig.json` plus types for all test frameworks used + "types": ["node", "jest"] + + // other package-specific, test-specific options + } +} diff --git a/packages/tracing-internal/tsconfig.types.json b/packages/tracing-internal/tsconfig.types.json new file mode 100644 index 000000000000..94190d6f0f73 --- /dev/null +++ b/packages/tracing-internal/tsconfig.types.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + // We don't need types for this because we don't ship it in our npm bundle. Skipping it here also lets us get around + // the fact that it introduces a dependency on `@sentry/browser` which doesn't exist anywhere else in the SDK, which + // then prevents us from building that and this at the same time when doing a parallellized build from the repo root + // level. + "exclude": [ + "src/index.bundle.ts", + "src/index.bundle.replay.ts" + ], + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "emitDeclarationOnly": true, + "outDir": "build/types" + } +} From c2f2e585360c4a0a6ee7aa9bb07d0c7b2f3b6d45 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 13 Mar 2023 22:02:36 +0000 Subject: [PATCH 2/4] Move files from `@sentry/tracing` to `@sentry-internal/tracing` --- .../src/browser/backgroundtab.ts | 0 .../src/browser/browsertracing.ts | 0 .../src/browser/index.ts | 0 .../src/browser/metrics/index.ts | 0 .../src/browser/metrics/utils.ts | 0 .../src/browser/request.ts | 0 .../src/browser/router.ts | 0 .../src/browser/types.ts | 0 .../src/browser/web-vitals/README.md | 0 .../src/browser/web-vitals/getCLS.ts | 0 .../src/browser/web-vitals/getFID.ts | 0 .../src/browser/web-vitals/getLCP.ts | 0 .../browser/web-vitals/lib/bindReporter.ts | 0 .../web-vitals/lib/generateUniqueID.ts | 0 .../web-vitals/lib/getActivationStart.ts | 0 .../web-vitals/lib/getNavigationEntry.ts | 0 .../web-vitals/lib/getVisibilityWatcher.ts | 0 .../src/browser/web-vitals/lib/initMetric.ts | 0 .../src/browser/web-vitals/lib/observe.ts | 0 .../src/browser/web-vitals/lib/onHidden.ts | 0 .../src/browser/web-vitals/types.ts | 0 .../src/browser/web-vitals/types/base.ts | 0 .../src/browser/web-vitals/types/cls.ts | 0 .../src/browser/web-vitals/types/fid.ts | 0 .../src/browser/web-vitals/types/lcp.ts | 0 .../src/browser/web-vitals/types/polyfills.ts | 0 .../src/errors.ts | 0 .../src/exports/index.ts | 0 .../src/extensions.ts | 0 packages/tracing-internal/src/index.ts | 35 ++++++++++++++++++- .../src/node/index.ts | 0 .../src/node/integrations/apollo.ts | 0 .../src/node/integrations/express.ts | 0 .../src/node/integrations/graphql.ts | 0 .../src/node/integrations/index.ts | 0 .../src/node/integrations/mongo.ts | 0 .../src/node/integrations/mysql.ts | 0 .../src/node/integrations/postgres.ts | 0 .../src/node/integrations/prisma.ts | 0 .../src/node/integrations/utils/node-utils.ts | 0 .../test/browser/backgroundtab.test.ts | 4 +-- .../test/browser/browsertracing.test.ts | 6 ++-- .../test/browser/metrics/index.test.ts | 0 .../test/browser/metrics/utils.test.ts | 0 .../test/browser/request.test.ts | 6 ++-- .../test/browser/router.test.ts | 0 .../test/errors.test.ts | 2 +- packages/tracing/package.json | 10 +++--- packages/tracing/src/index.bundle.ts | 11 ++---- packages/tracing/src/index.ts | 32 ++--------------- packages/tracing/test/hub.test.ts | 3 +- .../test/integrations/apollo-nestjs.test.ts | 7 ++-- .../tracing/test/integrations/apollo.test.ts | 7 ++-- .../tracing/test/integrations/graphql.test.ts | 7 ++-- .../test/integrations/node/mongo.test.ts | 7 ++-- .../test/integrations/node/postgres.test.ts | 7 ++-- .../test/integrations/node/prisma.test.ts | 7 ++-- 57 files changed, 71 insertions(+), 80 deletions(-) rename packages/{tracing => tracing-internal}/src/browser/backgroundtab.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/browsertracing.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/index.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/metrics/index.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/metrics/utils.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/request.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/router.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/types.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/README.md (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/getCLS.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/getFID.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/getLCP.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/lib/bindReporter.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/lib/generateUniqueID.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/lib/getActivationStart.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/lib/getNavigationEntry.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/lib/getVisibilityWatcher.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/lib/initMetric.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/lib/observe.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/lib/onHidden.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/types.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/types/base.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/types/cls.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/types/fid.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/types/lcp.ts (100%) rename packages/{tracing => tracing-internal}/src/browser/web-vitals/types/polyfills.ts (100%) rename packages/{tracing => tracing-internal}/src/errors.ts (100%) rename packages/{tracing => tracing-internal}/src/exports/index.ts (100%) rename packages/{tracing => tracing-internal}/src/extensions.ts (100%) rename packages/{tracing => tracing-internal}/src/node/index.ts (100%) rename packages/{tracing => tracing-internal}/src/node/integrations/apollo.ts (100%) rename packages/{tracing => tracing-internal}/src/node/integrations/express.ts (100%) rename packages/{tracing => tracing-internal}/src/node/integrations/graphql.ts (100%) rename packages/{tracing => tracing-internal}/src/node/integrations/index.ts (100%) rename packages/{tracing => tracing-internal}/src/node/integrations/mongo.ts (100%) rename packages/{tracing => tracing-internal}/src/node/integrations/mysql.ts (100%) rename packages/{tracing => tracing-internal}/src/node/integrations/postgres.ts (100%) rename packages/{tracing => tracing-internal}/src/node/integrations/prisma.ts (100%) rename packages/{tracing => tracing-internal}/src/node/integrations/utils/node-utils.ts (100%) rename packages/{tracing => tracing-internal}/test/browser/backgroundtab.test.ts (93%) rename packages/{tracing => tracing-internal}/test/browser/browsertracing.test.ts (99%) rename packages/{tracing => tracing-internal}/test/browser/metrics/index.test.ts (100%) rename packages/{tracing => tracing-internal}/test/browser/metrics/utils.test.ts (100%) rename packages/{tracing => tracing-internal}/test/browser/request.test.ts (98%) rename packages/{tracing => tracing-internal}/test/browser/router.test.ts (100%) rename packages/{tracing => tracing-internal}/test/errors.test.ts (97%) diff --git a/packages/tracing/src/browser/backgroundtab.ts b/packages/tracing-internal/src/browser/backgroundtab.ts similarity index 100% rename from packages/tracing/src/browser/backgroundtab.ts rename to packages/tracing-internal/src/browser/backgroundtab.ts diff --git a/packages/tracing/src/browser/browsertracing.ts b/packages/tracing-internal/src/browser/browsertracing.ts similarity index 100% rename from packages/tracing/src/browser/browsertracing.ts rename to packages/tracing-internal/src/browser/browsertracing.ts diff --git a/packages/tracing/src/browser/index.ts b/packages/tracing-internal/src/browser/index.ts similarity index 100% rename from packages/tracing/src/browser/index.ts rename to packages/tracing-internal/src/browser/index.ts diff --git a/packages/tracing/src/browser/metrics/index.ts b/packages/tracing-internal/src/browser/metrics/index.ts similarity index 100% rename from packages/tracing/src/browser/metrics/index.ts rename to packages/tracing-internal/src/browser/metrics/index.ts diff --git a/packages/tracing/src/browser/metrics/utils.ts b/packages/tracing-internal/src/browser/metrics/utils.ts similarity index 100% rename from packages/tracing/src/browser/metrics/utils.ts rename to packages/tracing-internal/src/browser/metrics/utils.ts diff --git a/packages/tracing/src/browser/request.ts b/packages/tracing-internal/src/browser/request.ts similarity index 100% rename from packages/tracing/src/browser/request.ts rename to packages/tracing-internal/src/browser/request.ts diff --git a/packages/tracing/src/browser/router.ts b/packages/tracing-internal/src/browser/router.ts similarity index 100% rename from packages/tracing/src/browser/router.ts rename to packages/tracing-internal/src/browser/router.ts diff --git a/packages/tracing/src/browser/types.ts b/packages/tracing-internal/src/browser/types.ts similarity index 100% rename from packages/tracing/src/browser/types.ts rename to packages/tracing-internal/src/browser/types.ts diff --git a/packages/tracing/src/browser/web-vitals/README.md b/packages/tracing-internal/src/browser/web-vitals/README.md similarity index 100% rename from packages/tracing/src/browser/web-vitals/README.md rename to packages/tracing-internal/src/browser/web-vitals/README.md diff --git a/packages/tracing/src/browser/web-vitals/getCLS.ts b/packages/tracing-internal/src/browser/web-vitals/getCLS.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/getCLS.ts rename to packages/tracing-internal/src/browser/web-vitals/getCLS.ts diff --git a/packages/tracing/src/browser/web-vitals/getFID.ts b/packages/tracing-internal/src/browser/web-vitals/getFID.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/getFID.ts rename to packages/tracing-internal/src/browser/web-vitals/getFID.ts diff --git a/packages/tracing/src/browser/web-vitals/getLCP.ts b/packages/tracing-internal/src/browser/web-vitals/getLCP.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/getLCP.ts rename to packages/tracing-internal/src/browser/web-vitals/getLCP.ts diff --git a/packages/tracing/src/browser/web-vitals/lib/bindReporter.ts b/packages/tracing-internal/src/browser/web-vitals/lib/bindReporter.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/lib/bindReporter.ts rename to packages/tracing-internal/src/browser/web-vitals/lib/bindReporter.ts diff --git a/packages/tracing/src/browser/web-vitals/lib/generateUniqueID.ts b/packages/tracing-internal/src/browser/web-vitals/lib/generateUniqueID.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/lib/generateUniqueID.ts rename to packages/tracing-internal/src/browser/web-vitals/lib/generateUniqueID.ts diff --git a/packages/tracing/src/browser/web-vitals/lib/getActivationStart.ts b/packages/tracing-internal/src/browser/web-vitals/lib/getActivationStart.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/lib/getActivationStart.ts rename to packages/tracing-internal/src/browser/web-vitals/lib/getActivationStart.ts diff --git a/packages/tracing/src/browser/web-vitals/lib/getNavigationEntry.ts b/packages/tracing-internal/src/browser/web-vitals/lib/getNavigationEntry.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/lib/getNavigationEntry.ts rename to packages/tracing-internal/src/browser/web-vitals/lib/getNavigationEntry.ts diff --git a/packages/tracing/src/browser/web-vitals/lib/getVisibilityWatcher.ts b/packages/tracing-internal/src/browser/web-vitals/lib/getVisibilityWatcher.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/lib/getVisibilityWatcher.ts rename to packages/tracing-internal/src/browser/web-vitals/lib/getVisibilityWatcher.ts diff --git a/packages/tracing/src/browser/web-vitals/lib/initMetric.ts b/packages/tracing-internal/src/browser/web-vitals/lib/initMetric.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/lib/initMetric.ts rename to packages/tracing-internal/src/browser/web-vitals/lib/initMetric.ts diff --git a/packages/tracing/src/browser/web-vitals/lib/observe.ts b/packages/tracing-internal/src/browser/web-vitals/lib/observe.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/lib/observe.ts rename to packages/tracing-internal/src/browser/web-vitals/lib/observe.ts diff --git a/packages/tracing/src/browser/web-vitals/lib/onHidden.ts b/packages/tracing-internal/src/browser/web-vitals/lib/onHidden.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/lib/onHidden.ts rename to packages/tracing-internal/src/browser/web-vitals/lib/onHidden.ts diff --git a/packages/tracing/src/browser/web-vitals/types.ts b/packages/tracing-internal/src/browser/web-vitals/types.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/types.ts rename to packages/tracing-internal/src/browser/web-vitals/types.ts diff --git a/packages/tracing/src/browser/web-vitals/types/base.ts b/packages/tracing-internal/src/browser/web-vitals/types/base.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/types/base.ts rename to packages/tracing-internal/src/browser/web-vitals/types/base.ts diff --git a/packages/tracing/src/browser/web-vitals/types/cls.ts b/packages/tracing-internal/src/browser/web-vitals/types/cls.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/types/cls.ts rename to packages/tracing-internal/src/browser/web-vitals/types/cls.ts diff --git a/packages/tracing/src/browser/web-vitals/types/fid.ts b/packages/tracing-internal/src/browser/web-vitals/types/fid.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/types/fid.ts rename to packages/tracing-internal/src/browser/web-vitals/types/fid.ts diff --git a/packages/tracing/src/browser/web-vitals/types/lcp.ts b/packages/tracing-internal/src/browser/web-vitals/types/lcp.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/types/lcp.ts rename to packages/tracing-internal/src/browser/web-vitals/types/lcp.ts diff --git a/packages/tracing/src/browser/web-vitals/types/polyfills.ts b/packages/tracing-internal/src/browser/web-vitals/types/polyfills.ts similarity index 100% rename from packages/tracing/src/browser/web-vitals/types/polyfills.ts rename to packages/tracing-internal/src/browser/web-vitals/types/polyfills.ts diff --git a/packages/tracing/src/errors.ts b/packages/tracing-internal/src/errors.ts similarity index 100% rename from packages/tracing/src/errors.ts rename to packages/tracing-internal/src/errors.ts diff --git a/packages/tracing/src/exports/index.ts b/packages/tracing-internal/src/exports/index.ts similarity index 100% rename from packages/tracing/src/exports/index.ts rename to packages/tracing-internal/src/exports/index.ts diff --git a/packages/tracing/src/extensions.ts b/packages/tracing-internal/src/extensions.ts similarity index 100% rename from packages/tracing/src/extensions.ts rename to packages/tracing-internal/src/extensions.ts diff --git a/packages/tracing-internal/src/index.ts b/packages/tracing-internal/src/index.ts index cb0ff5c3b541..590d0244a740 100644 --- a/packages/tracing-internal/src/index.ts +++ b/packages/tracing-internal/src/index.ts @@ -1 +1,34 @@ -export {}; +export * from './exports'; + +import { addExtensionMethods } from './extensions'; +import * as Integrations from './node/integrations'; + +export { Integrations }; + +// BrowserTracing is already exported as part of `Integrations` above (and for the moment will remain so for +// backwards compatibility), but that interferes with treeshaking, so we also export it separately +// here. +// +// Previously we expected users to import tracing integrations like +// +// import { Integrations } from '@sentry/tracing'; +// const instance = new Integrations.BrowserTracing(); +// +// This makes the integrations unable to be treeshaken though. To address this, we now have +// this individual export. We now expect users to consume BrowserTracing like so: +// +// import { BrowserTracing } from '@sentry/tracing'; +// const instance = new BrowserTracing(); +// +// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts +export const BrowserTracing = Integrations.BrowserTracing; + +export { + BROWSER_TRACING_INTEGRATION_ID, + instrumentOutgoingRequests, + defaultRequestInstrumentationOptions, +} from './browser'; + +export type { RequestInstrumentationOptions } from './browser'; + +export { addExtensionMethods }; diff --git a/packages/tracing/src/node/index.ts b/packages/tracing-internal/src/node/index.ts similarity index 100% rename from packages/tracing/src/node/index.ts rename to packages/tracing-internal/src/node/index.ts diff --git a/packages/tracing/src/node/integrations/apollo.ts b/packages/tracing-internal/src/node/integrations/apollo.ts similarity index 100% rename from packages/tracing/src/node/integrations/apollo.ts rename to packages/tracing-internal/src/node/integrations/apollo.ts diff --git a/packages/tracing/src/node/integrations/express.ts b/packages/tracing-internal/src/node/integrations/express.ts similarity index 100% rename from packages/tracing/src/node/integrations/express.ts rename to packages/tracing-internal/src/node/integrations/express.ts diff --git a/packages/tracing/src/node/integrations/graphql.ts b/packages/tracing-internal/src/node/integrations/graphql.ts similarity index 100% rename from packages/tracing/src/node/integrations/graphql.ts rename to packages/tracing-internal/src/node/integrations/graphql.ts diff --git a/packages/tracing/src/node/integrations/index.ts b/packages/tracing-internal/src/node/integrations/index.ts similarity index 100% rename from packages/tracing/src/node/integrations/index.ts rename to packages/tracing-internal/src/node/integrations/index.ts diff --git a/packages/tracing/src/node/integrations/mongo.ts b/packages/tracing-internal/src/node/integrations/mongo.ts similarity index 100% rename from packages/tracing/src/node/integrations/mongo.ts rename to packages/tracing-internal/src/node/integrations/mongo.ts diff --git a/packages/tracing/src/node/integrations/mysql.ts b/packages/tracing-internal/src/node/integrations/mysql.ts similarity index 100% rename from packages/tracing/src/node/integrations/mysql.ts rename to packages/tracing-internal/src/node/integrations/mysql.ts diff --git a/packages/tracing/src/node/integrations/postgres.ts b/packages/tracing-internal/src/node/integrations/postgres.ts similarity index 100% rename from packages/tracing/src/node/integrations/postgres.ts rename to packages/tracing-internal/src/node/integrations/postgres.ts diff --git a/packages/tracing/src/node/integrations/prisma.ts b/packages/tracing-internal/src/node/integrations/prisma.ts similarity index 100% rename from packages/tracing/src/node/integrations/prisma.ts rename to packages/tracing-internal/src/node/integrations/prisma.ts diff --git a/packages/tracing/src/node/integrations/utils/node-utils.ts b/packages/tracing-internal/src/node/integrations/utils/node-utils.ts similarity index 100% rename from packages/tracing/src/node/integrations/utils/node-utils.ts rename to packages/tracing-internal/src/node/integrations/utils/node-utils.ts diff --git a/packages/tracing/test/browser/backgroundtab.test.ts b/packages/tracing-internal/test/browser/backgroundtab.test.ts similarity index 93% rename from packages/tracing/test/browser/backgroundtab.test.ts rename to packages/tracing-internal/test/browser/backgroundtab.test.ts index ddbf76baa6c6..2c4ca381df3b 100644 --- a/packages/tracing/test/browser/backgroundtab.test.ts +++ b/packages/tracing-internal/test/browser/backgroundtab.test.ts @@ -2,9 +2,9 @@ import { BrowserClient } from '@sentry/browser'; import { Hub, makeMain } from '@sentry/core'; import { JSDOM } from 'jsdom'; -import { addExtensionMethods } from '../../src'; +import { addExtensionMethods } from '../../../tracing/src'; +import { getDefaultBrowserClientOptions } from '../../../tracing/test/testutils'; import { registerBackgroundTabDetection } from '../../src/browser/backgroundtab'; -import { getDefaultBrowserClientOptions } from '../testutils'; describe('registerBackgroundTabDetection', () => { let events: Record = {}; diff --git a/packages/tracing/test/browser/browsertracing.test.ts b/packages/tracing-internal/test/browser/browsertracing.test.ts similarity index 99% rename from packages/tracing/test/browser/browsertracing.test.ts rename to packages/tracing-internal/test/browser/browsertracing.test.ts index e2bee71db0a8..94abe88e6cbb 100644 --- a/packages/tracing/test/browser/browsertracing.test.ts +++ b/packages/tracing-internal/test/browser/browsertracing.test.ts @@ -5,13 +5,13 @@ import type { BaseTransportOptions, ClientOptions, DsnComponents } from '@sentry import type { InstrumentHandlerCallback, InstrumentHandlerType } from '@sentry/utils'; import { JSDOM } from 'jsdom'; -import type { IdleTransaction } from '../../src'; -import { getActiveTransaction } from '../../src'; +import type { IdleTransaction } from '../../../tracing/src'; +import { getActiveTransaction } from '../../../tracing/src'; +import { getDefaultBrowserClientOptions } from '../../../tracing/test/testutils'; import type { BrowserTracingOptions } from '../../src/browser/browsertracing'; import { BrowserTracing, getMetaContent } from '../../src/browser/browsertracing'; import { defaultRequestInstrumentationOptions } from '../../src/browser/request'; import { instrumentRoutingWithDefaults } from '../../src/browser/router'; -import { getDefaultBrowserClientOptions } from '../testutils'; let mockChangeHistory: ({ to, from }: { to: string; from?: string }) => void = () => undefined; diff --git a/packages/tracing/test/browser/metrics/index.test.ts b/packages/tracing-internal/test/browser/metrics/index.test.ts similarity index 100% rename from packages/tracing/test/browser/metrics/index.test.ts rename to packages/tracing-internal/test/browser/metrics/index.test.ts diff --git a/packages/tracing/test/browser/metrics/utils.test.ts b/packages/tracing-internal/test/browser/metrics/utils.test.ts similarity index 100% rename from packages/tracing/test/browser/metrics/utils.test.ts rename to packages/tracing-internal/test/browser/metrics/utils.test.ts diff --git a/packages/tracing/test/browser/request.test.ts b/packages/tracing-internal/test/browser/request.test.ts similarity index 98% rename from packages/tracing/test/browser/request.test.ts rename to packages/tracing-internal/test/browser/request.test.ts index 952362107878..4ca971a4947c 100644 --- a/packages/tracing/test/browser/request.test.ts +++ b/packages/tracing-internal/test/browser/request.test.ts @@ -2,11 +2,11 @@ import { BrowserClient } from '@sentry/browser'; import * as sentryCore from '@sentry/core'; import * as utils from '@sentry/utils'; -import type { Transaction } from '../../src'; -import { addExtensionMethods, Span, spanStatusfromHttpCode } from '../../src'; +import type { Transaction } from '../../../tracing/src'; +import { addExtensionMethods, Span, spanStatusfromHttpCode } from '../../../tracing/src'; +import { getDefaultBrowserClientOptions } from '../../../tracing/test/testutils'; import type { FetchData, XHRData } from '../../src/browser/request'; import { fetchCallback, instrumentOutgoingRequests, shouldAttachHeaders, xhrCallback } from '../../src/browser/request'; -import { getDefaultBrowserClientOptions } from '../testutils'; beforeAll(() => { addExtensionMethods(); diff --git a/packages/tracing/test/browser/router.test.ts b/packages/tracing-internal/test/browser/router.test.ts similarity index 100% rename from packages/tracing/test/browser/router.test.ts rename to packages/tracing-internal/test/browser/router.test.ts diff --git a/packages/tracing/test/errors.test.ts b/packages/tracing-internal/test/errors.test.ts similarity index 97% rename from packages/tracing/test/errors.test.ts rename to packages/tracing-internal/test/errors.test.ts index 70a2e4561671..1dba00b825b1 100644 --- a/packages/tracing/test/errors.test.ts +++ b/packages/tracing-internal/test/errors.test.ts @@ -2,8 +2,8 @@ import { BrowserClient } from '@sentry/browser'; import { addTracingExtensions, Hub, makeMain } from '@sentry/core'; import type { InstrumentHandlerCallback, InstrumentHandlerType } from '@sentry/utils'; +import { getDefaultBrowserClientOptions } from '../../tracing/test/testutils'; import { registerErrorInstrumentation } from '../src/errors'; -import { getDefaultBrowserClientOptions } from './testutils'; const mockAddInstrumentationHandler = jest.fn(); let mockErrorCallback: InstrumentHandlerCallback = () => undefined; diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 8ecb03f572e8..15b13e8900a1 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -16,14 +16,14 @@ "access": "public" }, "dependencies": { - "@sentry/core": "7.43.0", - "@sentry/types": "7.43.0", - "@sentry/utils": "7.43.0", - "tslib": "^1.9.3" + "@sentry-internal/tracing": "7.43.0" }, "devDependencies": { "@sentry/browser": "7.43.0", - "@types/express": "^4.17.14" + "@types/express": "^4.17.14", + "@sentry/core": "7.43.0", + "@sentry/types": "7.43.0", + "@sentry/utils": "7.43.0" }, "scripts": { "build": "run-p build:transpile build:types build:bundle", diff --git a/packages/tracing/src/index.bundle.ts b/packages/tracing/src/index.bundle.ts index a753bab932d4..36b3ed946de0 100644 --- a/packages/tracing/src/index.bundle.ts +++ b/packages/tracing/src/index.bundle.ts @@ -53,13 +53,11 @@ export { } from '@sentry/browser'; export { SDK_VERSION } from '@sentry/browser'; +import { addExtensionMethods, BrowserTracing } from '@sentry-internal/tracing'; import { Integrations as BrowserIntegrations } from '@sentry/browser'; import type { Integration } from '@sentry/types'; import { GLOBAL_OBJ } from '@sentry/utils'; -import { BrowserTracing } from './browser'; -import { addExtensionMethods } from './extensions'; - export { Span } from '@sentry/core'; let windowIntegrations = {}; @@ -79,12 +77,7 @@ const INTEGRATIONS: Record< BrowserTracing, }; -export { INTEGRATIONS as Integrations }; -// Though in this case exporting `BrowserTracing` separately (in addition to exporting it as part of -// `Sentry.Integrations`) doesn't gain us any bundle size advantage (we're making the bundle here, not the user, and we -// can't leave anything out of ours), it does bring the API for using the integration in line with that recommended for -// users bundling Sentry themselves. -export { BrowserTracing }; +export { INTEGRATIONS as Integrations, BrowserTracing }; // We are patching the global object with our hub extension methods addExtensionMethods(); diff --git a/packages/tracing/src/index.ts b/packages/tracing/src/index.ts index b8456bc6b017..3f98af8cecd2 100644 --- a/packages/tracing/src/index.ts +++ b/packages/tracing/src/index.ts @@ -1,34 +1,6 @@ -export * from './exports'; +export * from '@sentry-internal/tracing'; -import { addExtensionMethods } from './extensions'; -import * as Integrations from './node/integrations'; - -export { Integrations }; - -// This is already exported as part of `Integrations` above (and for the moment will remain so for -// backwards compatibility), but that interferes with treeshaking, so we also export it separately -// here. -// -// Previously we expected users to import tracing integrations like -// -// import { Integrations } from '@sentry/tracing'; -// const instance = new Integrations.BrowserTracing(); -// -// This makes the integrations unable to be treeshaken though. To address this, we now have -// this individual export. We now expect users to consume BrowserTracing like so: -// -// import { BrowserTracing } from '@sentry/tracing'; -// const instance = new BrowserTracing(); -// -// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts -export { - BrowserTracing, - BROWSER_TRACING_INTEGRATION_ID, - instrumentOutgoingRequests, - defaultRequestInstrumentationOptions, -} from './browser'; - -export type { RequestInstrumentationOptions } from './browser'; +import { addExtensionMethods } from '@sentry-internal/tracing'; // Treeshakable guard to remove all code related to tracing declare const __SENTRY_TRACING__: boolean; diff --git a/packages/tracing/test/hub.test.ts b/packages/tracing/test/hub.test.ts index 85c0b7791374..789ffc8e939f 100644 --- a/packages/tracing/test/hub.test.ts +++ b/packages/tracing/test/hub.test.ts @@ -4,8 +4,7 @@ import { Hub, makeMain } from '@sentry/core'; import * as utilsModule from '@sentry/utils'; // for mocking import { logger } from '@sentry/utils'; -import { addExtensionMethods, extractTraceparentData, TRACEPARENT_REGEXP, Transaction } from '../src'; -import { BrowserTracing } from '../src/browser/browsertracing'; +import { addExtensionMethods, BrowserTracing, extractTraceparentData, TRACEPARENT_REGEXP, Transaction } from '../src'; import { addDOMPropertiesToGlobal, getDefaultBrowserClientOptions, diff --git a/packages/tracing/test/integrations/apollo-nestjs.test.ts b/packages/tracing/test/integrations/apollo-nestjs.test.ts index 981693875d7a..0a5116277cb1 100644 --- a/packages/tracing/test/integrations/apollo-nestjs.test.ts +++ b/packages/tracing/test/integrations/apollo-nestjs.test.ts @@ -2,8 +2,7 @@ import { Hub, Scope } from '@sentry/core'; import { logger } from '@sentry/utils'; -import { Span } from '../../src'; -import { Apollo } from '../../src/node/integrations/apollo'; +import { Integrations, Span } from '../../src'; import { getTestClient } from '../testutils'; type ApolloResolverGroup = { @@ -67,7 +66,7 @@ describe('setupOnce', () => { let GraphQLFactoryInstance: GraphQLFactory; beforeAll(() => { - new Apollo({ + new Integrations.Apollo({ useNestjs: true, }).setupOnce( () => undefined, @@ -113,7 +112,7 @@ describe('setupOnce', () => { const client = getTestClient({ instrumenter: 'otel' }); const hub = new Hub(client); - const integration = new Apollo({ useNestjs: true }); + const integration = new Integrations.Apollo({ useNestjs: true }); integration.setupOnce( () => {}, () => hub, diff --git a/packages/tracing/test/integrations/apollo.test.ts b/packages/tracing/test/integrations/apollo.test.ts index 910c866505e8..456c824f23ce 100644 --- a/packages/tracing/test/integrations/apollo.test.ts +++ b/packages/tracing/test/integrations/apollo.test.ts @@ -2,8 +2,7 @@ import { Hub, Scope } from '@sentry/core'; import { logger } from '@sentry/utils'; -import { Span } from '../../src'; -import { Apollo } from '../../src/node/integrations/apollo'; +import { Integrations, Span } from '../../src'; import { getTestClient } from '../testutils'; type ApolloResolverGroup = { @@ -69,7 +68,7 @@ describe('setupOnce', () => { let ApolloServer: ApolloServerBase; beforeAll(() => { - new Apollo().setupOnce( + new Integrations.Apollo().setupOnce( () => undefined, () => new Hub(undefined, scope), ); @@ -113,7 +112,7 @@ describe('setupOnce', () => { const client = getTestClient({ instrumenter: 'otel' }); const hub = new Hub(client); - const integration = new Apollo(); + const integration = new Integrations.Apollo(); integration.setupOnce( () => {}, () => hub, diff --git a/packages/tracing/test/integrations/graphql.test.ts b/packages/tracing/test/integrations/graphql.test.ts index 5d61a4acd5cb..ccd4348784bd 100644 --- a/packages/tracing/test/integrations/graphql.test.ts +++ b/packages/tracing/test/integrations/graphql.test.ts @@ -2,8 +2,7 @@ import { Hub, Scope } from '@sentry/core'; import { logger } from '@sentry/utils'; -import { Span } from '../../src'; -import { GraphQL } from '../../src/node/integrations/graphql'; +import { Integrations, Span } from '../../src'; import { getTestClient } from '../testutils'; const GQLExecute = { @@ -33,7 +32,7 @@ describe('setupOnce', () => { let childSpan: Span; beforeAll(() => { - new GraphQL().setupOnce( + new Integrations.GraphQL().setupOnce( () => undefined, () => new Hub(undefined, scope), ); @@ -66,7 +65,7 @@ describe('setupOnce', () => { const client = getTestClient({ instrumenter: 'otel' }); const hub = new Hub(client); - const integration = new GraphQL(); + const integration = new Integrations.GraphQL(); integration.setupOnce( () => {}, () => hub, diff --git a/packages/tracing/test/integrations/node/mongo.test.ts b/packages/tracing/test/integrations/node/mongo.test.ts index 5c3dd11255c4..70ac88e13109 100644 --- a/packages/tracing/test/integrations/node/mongo.test.ts +++ b/packages/tracing/test/integrations/node/mongo.test.ts @@ -2,8 +2,7 @@ import { Hub, Scope } from '@sentry/core'; import { logger } from '@sentry/utils'; -import { Span } from '../../../src'; -import { Mongo } from '../../../src/node/integrations/mongo'; +import { Integrations, Span } from '../../../src'; import { getTestClient } from '../../testutils'; class Collection { @@ -52,7 +51,7 @@ describe('patchOperation()', () => { let childSpan: Span; beforeAll(() => { - new Mongo({ + new Integrations.Mongo({ operations: ['insertOne', 'initializeOrderedBulkOp'], }).setupOnce( () => undefined, @@ -124,7 +123,7 @@ describe('patchOperation()', () => { const client = getTestClient({ instrumenter: 'otel' }); const hub = new Hub(client); - const integration = new Mongo(); + const integration = new Integrations.Mongo(); integration.setupOnce( () => {}, () => hub, diff --git a/packages/tracing/test/integrations/node/postgres.test.ts b/packages/tracing/test/integrations/node/postgres.test.ts index 08aa64cf368d..c2d5868596a1 100644 --- a/packages/tracing/test/integrations/node/postgres.test.ts +++ b/packages/tracing/test/integrations/node/postgres.test.ts @@ -2,8 +2,7 @@ import { Hub, Scope } from '@sentry/core'; import { logger } from '@sentry/utils'; -import { Span } from '../../../src'; -import { Postgres } from '../../../src/node/integrations/postgres'; +import { Integrations, Span } from '../../../src'; import { getTestClient } from '../../testutils'; class PgClient { @@ -51,7 +50,7 @@ describe('setupOnce', () => { let childSpan: Span; beforeAll(() => { - (pgApi === 'pg' ? new Postgres() : new Postgres({ usePgNative: true })).setupOnce( + (pgApi === 'pg' ? new Integrations.Postgres() : new Integrations.Postgres({ usePgNative: true })).setupOnce( () => undefined, () => new Hub(undefined, scope), ); @@ -107,7 +106,7 @@ describe('setupOnce', () => { const client = getTestClient({ instrumenter: 'otel' }); const hub = new Hub(client); - const integration = new Postgres(); + const integration = new Integrations.Postgres(); integration.setupOnce( () => {}, () => hub, diff --git a/packages/tracing/test/integrations/node/prisma.test.ts b/packages/tracing/test/integrations/node/prisma.test.ts index 95892f9c1686..735167161402 100644 --- a/packages/tracing/test/integrations/node/prisma.test.ts +++ b/packages/tracing/test/integrations/node/prisma.test.ts @@ -2,8 +2,7 @@ import { Hub, Scope } from '@sentry/core'; import { logger } from '@sentry/utils'; -import { Span } from '../../../src'; -import { Prisma } from '../../../src/node/integrations/prisma'; +import { Integrations, Span } from '../../../src'; import { getTestClient } from '../../testutils'; type PrismaMiddleware = (params: unknown, next: (params?: unknown) => Promise) => Promise; @@ -32,7 +31,7 @@ describe('setupOnce', function () { let childSpan: Span; beforeAll(() => { - new Prisma({ client: Client }).setupOnce( + new Integrations.Prisma({ client: Client }).setupOnce( () => undefined, () => new Hub(undefined, scope), ); @@ -66,7 +65,7 @@ describe('setupOnce', function () { const client = getTestClient({ instrumenter: 'otel' }); const hub = new Hub(client); - const integration = new Prisma({ client: Client }); + const integration = new Integrations.Prisma({ client: Client }); integration.setupOnce( () => {}, () => hub, From 3f527c99693b01da3aa4cdcb2a2e6fa745daa975 Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Mon, 13 Mar 2023 22:27:59 +0000 Subject: [PATCH 3/4] Add resolutions for new package to fix integration tests --- packages/nextjs/test/integration/package.json | 1 + packages/remix/test/integration/package.json | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/nextjs/test/integration/package.json b/packages/nextjs/test/integration/package.json index 4ff461b86f04..5c55363fe714 100644 --- a/packages/nextjs/test/integration/package.json +++ b/packages/nextjs/test/integration/package.json @@ -32,6 +32,7 @@ "@sentry/react": "file:../../../react", "@sentry/replay": "file:../../../replay", "@sentry/tracing": "file:../../../tracing", + "@sentry-internal/tracing": "file:../../../tracing-internal", "@sentry/types": "file:../../../types", "@sentry/utils": "file:../../../utils" } diff --git a/packages/remix/test/integration/package.json b/packages/remix/test/integration/package.json index 102a7844b1f9..3899f1acddad 100644 --- a/packages/remix/test/integration/package.json +++ b/packages/remix/test/integration/package.json @@ -30,6 +30,7 @@ "@sentry/react": "file:../../../react", "@sentry/replay": "file:../../../replay", "@sentry/tracing": "file:../../../tracing", + "@sentry-internal/tracing": "file:../../../tracing-internal", "@sentry/types": "file:../../../types", "@sentry/utils": "file:../../../utils" }, From 1686a4354bf549d19778e1e2b9cd8b610d6cd0ff Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Tue, 14 Mar 2023 15:37:59 +0000 Subject: [PATCH 4/4] Export separately --- packages/tracing-internal/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tracing-internal/src/index.ts b/packages/tracing-internal/src/index.ts index 590d0244a740..1f0143253d55 100644 --- a/packages/tracing-internal/src/index.ts +++ b/packages/tracing-internal/src/index.ts @@ -21,7 +21,7 @@ export { Integrations }; // const instance = new BrowserTracing(); // // For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts -export const BrowserTracing = Integrations.BrowserTracing; +export { BrowserTracing } from './browser'; export { BROWSER_TRACING_INTEGRATION_ID,