Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions .cursor/rules/sdk_development.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ You are working on the Sentry JavaScript SDK, a critical production SDK used by
- `yarn build:dev` - Development build (transpile + types)
- `yarn build:dev:watch` - Development build in watch mode (recommended)
- `yarn build:dev:filter <package>` - Build specific package and dependencies
- `yarn build:types:watch` - Watch mode for TypeScript types only
- `yarn build:bundle` - Build browser bundles only

### Testing
Expand Down Expand Up @@ -59,7 +58,7 @@ This repository uses **Git Flow**. See [docs/gitflow.md](docs/gitflow.md) for de

## Repository Architecture

This is a Lerna monorepo with 40+ packages in the `@sentry/*` namespace.
This is a monorepo with 40+ packages in the `@sentry/*` namespace, managed with Yarn workspaces and Nx.

### Core Packages

Expand Down Expand Up @@ -111,7 +110,7 @@ This is a Lerna monorepo with 40+ packages in the `@sentry/*` namespace.

- Uses Rollup for bundling (`rollup.*.config.mjs`)
- TypeScript with multiple tsconfig files per package
- Lerna manages package dependencies and publishing
- Nx orchestrates task execution across packages with caching
- Vite for testing with `vitest`

### Package Structure Pattern
Expand Down
24 changes: 19 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -307,16 +307,29 @@ jobs:
uses: ./.github/actions/restore-cache
with:
dependency_cache_key: ${{ needs.job_build.outputs.dependency_cache_key }}
- name: Check for duplicate dependencies in lockfile
# Run `yarn dedupe-deps:fix` locally to resolve any duplicates.
run: yarn dedupe-deps:check
- name: Lint source files
run: yarn lint:lerna
run: yarn lint:eslint
- name: Lint for ES compatibility
run: yarn lint:es-compatibility

job_check_lockfile:
name: Check lockfile
needs: [job_get_metadata]
timeout-minutes: 10
runs-on: ubuntu-24.04
steps:
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
uses: actions/checkout@v6
with:
ref: ${{ env.HEAD_COMMIT }}
- name: Set up Node
uses: actions/setup-node@v6
with:
node-version-file: 'package.json'
- name: Check that yarn.lock is stable
run: yarn && git diff --exit-code yarn.lock
run: yarn install --frozen-lockfile --ignore-engines
- name: Check for duplicate dependencies in lockfile
run: yarn dedupe-deps:check

job_check_format:
name: Check file formatting
Expand Down Expand Up @@ -1204,6 +1217,7 @@ jobs:
job_e2e_tests,
job_artifacts,
job_lint,
job_check_lockfile,
job_check_format,
job_circular_dep_check,
job_size_check,
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/gitflow-sync-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ on:
branches:
- master
paths:
# When the version is updated on master (but nothing else)
- 'lerna.json'
# When versions are bumped on master (written by scripts/bump-version.js)
- '.version.json'
- '!**/*.js'
- '!**/*.ts'
workflow_dispatch:
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ packages/*/sentry-*.tgz
# logs
yarn-error.log
npm-debug.log
lerna-debug.log
local.log

# ide
Expand Down
4 changes: 4 additions & 0 deletions .version.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"_comment": "Auto-generated by scripts/bump-version.js. Used by the gitflow sync workflow to detect version bumps. Do not edit manually.",
"version": "10.39.0"
}
5 changes: 2 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ You are working on the Sentry JavaScript SDK, a critical production SDK used by
- `yarn build:dev` - Development build (transpile + types)
- `yarn build:dev:watch` - Development build in watch mode (recommended)
- `yarn build:dev:filter <package>` - Build specific package and dependencies
- `yarn build:types:watch` - Watch mode for TypeScript types only
- `yarn build:bundle` - Build browser bundles only

### Testing
Expand Down Expand Up @@ -58,7 +57,7 @@ This repository uses **Git Flow**. See [docs/gitflow.md](docs/gitflow.md) for de

## Repository Architecture

This is a Lerna monorepo with 40+ packages in the `@sentry/*` namespace.
This is a monorepo with 40+ packages in the `@sentry/*` namespace, managed with Yarn workspaces and Nx.

### Core Packages

Expand Down Expand Up @@ -102,7 +101,7 @@ This is a Lerna monorepo with 40+ packages in the `@sentry/*` namespace.

- Uses Rollup for bundling (`rollup.*.config.mjs`)
- TypeScript with multiple tsconfig files per package
- Lerna manages package dependencies and publishing
- Nx orchestrates task execution across packages with caching
- Vite for testing with `vitest`

### Package Structure Pattern
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ We use [Volta](https://volta.sh/) to ensure we use consistent versions of node,
Make sure to also enable [pnpm support in Volta](https://docs.volta.sh/advanced/pnpm) if you want to run the E2E tests
locally.

`sentry-javascript` is a monorepo containing several packages, and we use `lerna` to manage them. To get started,
`sentry-javascript` is a monorepo containing several packages, managed with Yarn workspaces and Nx. To get started,
install all dependencies, and then perform an initial build, so TypeScript can read all of the linked type definitions.

```
Expand Down
5 changes: 0 additions & 5 deletions lerna.json

This file was deleted.

8 changes: 7 additions & 1 deletion nx.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
"production": ["default", "!{projectRoot}/test/**/*", "!{projectRoot}/**/*.md", "!{projectRoot}/*.tgz"]
},
"targetDefaults": {
"build:dev": {
"dependsOn": ["^build:transpile", "^build:types"]
},
"build:bundle": {
"inputs": ["production", "^production"],
"dependsOn": ["build:transpile"],
Expand Down Expand Up @@ -58,5 +61,8 @@
}
},
"$schema": "./node_modules/nx/schemas/nx-schema.json",
"cacheDirectory": ".nxcache"
"cacheDirectory": ".nxcache",
"tui": {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

l: I would suggest to remove tui entirely (I never had good experiences with it). For me it adds a lot of blank lines (= the height of my shell) and only then shows the output

tui

Image

No tui

Image

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This works reasonably well for me I have to say, which shell are you on?

"autoExit": true
}
}
53 changes: 26 additions & 27 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,49 +1,49 @@
{
"private": true,
"scripts": {
"build": "node ./scripts/verify-packages-versions.js && lerna run build:transpile,build:types,build:bundle",
"build:bundle": "lerna run build:bundle",
"build:dev": "lerna run build:types,build:transpile",
"build:dev:filter": "lerna run build:dev --include-filtered-dependencies --include-filtered-dependents --scope",
"build:transpile": "lerna run build:transpile",
"build:types": "lerna run build:types",
"build:watch": "lerna run build:watch",
"build:dev:watch": "lerna run build:dev:watch",
"build:types:watch": "ts-node scripts/build-types-watch.ts",
"build": "node ./scripts/verify-packages-versions.js && nx run-many -t build:transpile build:types build:bundle",
"build:bundle": "nx run-many -t build:bundle",
"build:dev": "nx run-many -t build:types build:transpile",
"build:dev:filter": "nx run-many -t build:dev -p",
"build:transpile": "nx run-many -t build:transpile",
"build:types": "nx run-many -t build:types",
"build:watch": "nx run-many -t build:watch",
"build:dev:watch": "nx run-many -t build:dev:watch",
"build:tarball": "run-s clean:tarballs build:tarballs",
"build:tarballs": "lerna run build:tarball",
"build:tarballs": "nx run-many -t build:tarball",
"changelog": "ts-node ./scripts/get-commit-list.ts",
"generate-changelog": "ts-node ./scripts/generate-changelog.ts",
"circularDepCheck": "lerna run circularDepCheck",
"circularDepCheck": "nx run-many -t circularDepCheck",
"clean": "run-s clean:build clean:caches",
"clean:build": "lerna run clean",
"clean:build": "nx run-many -t clean",
"clean:caches": "yarn rimraf eslintcache .nxcache .nx",
"clean:deps": "lerna clean --yes && rm -rf node_modules && yarn",
"clean:deps": "rimraf packages/*/node_modules dev-packages/*/node_modules && rm -rf node_modules && yarn",
"clean:tarballs": "rimraf {packages,dev-packages}/*/*.tgz",
"clean:watchman": "watchman watch-del \".\"",
"clean:all": "run-s clean:build clean:tarballs clean:caches clean:deps clean:watchman",
"fix": "run-s fix:oxfmt fix:lerna",
"fix:lerna": "lerna run fix",
"fix": "run-s fix:oxfmt fix:eslint",
"fix:eslint": "nx run-many -t fix",
"fix:oxfmt": "oxfmt . --write",
"format:check": "oxfmt . --check",
"format": "oxfmt . --write",
"lint": "run-s lint:oxfmt lint:lerna",
"lint:lerna": "lerna run lint",
"lint": "run-s lint:oxfmt lint:eslint",
"lint:eslint": "nx run-many -t lint",
"lint:oxfmt": "oxfmt . --check",
"lint:es-compatibility": "lerna run lint:es-compatibility",
"lint:es-compatibility": "nx run-many -t lint:es-compatibility",
"dedupe-deps:check": "yarn-deduplicate yarn.lock --list --fail",
"dedupe-deps:fix": "yarn-deduplicate yarn.lock",
"postpublish": "lerna run --stream --concurrency 1 postpublish",
"test": "lerna run --ignore \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\" test",
"test:unit": "lerna run --ignore \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\" test:unit",
"test:update-snapshots": "lerna run test:update-snapshots",
"postpublish": "nx run-many -t postpublish --parallel=1",
"test": "nx run-many -t test --exclude \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"",
"test:scripts": "vitest run scripts/bump-version.test.ts",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

q: Do the tests actually run in the CI?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope they don't, I just left them for local development as they're not properly integrated in our vite setup

"test:unit": "nx run-many -t test:unit --exclude \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"",
"test:update-snapshots": "nx run-many -t test:update-snapshots",
"test:pr": "nx affected -t test --exclude \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,node-core-integration-tests,cloudflare-integration-tests}\"",
"test:pr:browser": "UNIT_TEST_ENV=browser ts-node ./scripts/ci-unit-tests.ts --affected",
"test:pr:node": "UNIT_TEST_ENV=node ts-node ./scripts/ci-unit-tests.ts --affected",
"test:ci:browser": "UNIT_TEST_ENV=browser ts-node ./scripts/ci-unit-tests.ts",
"test:ci:node": "UNIT_TEST_ENV=node ts-node ./scripts/ci-unit-tests.ts",
"test:ci:bun": "lerna run test --scope @sentry/bun",
"yalc:publish": "lerna run yalc:publish"
"test:ci:bun": "nx run-many -t test -p @sentry/bun",
"yalc:publish": "nx run-many -t yalc:publish"
},
"volta": {
"node": "20.19.2",
Expand Down Expand Up @@ -127,7 +127,7 @@
"es-check": "^7.2.1",
"eslint": "8.57.0",
"jsdom": "^21.1.2",
"lerna": "8.2.4",
"nx": "22.5.0",
"madge": "8.0.0",
"nodemon": "^3.1.10",
"npm-run-all2": "^6.2.0",
Expand All @@ -146,8 +146,7 @@
},
"//_resolutions_comment": [
"Because new versions of strip-ansi, string-width, and wrap-ansi are ESM only packages,",
"we need to resolve them to the CommonJS versions.",
"This is a temporary solution until we can upgrade to a version of lerna that supports ESM packages"
"we need to resolve them to the CommonJS versions."
],
"resolutions": {
"gauge/strip-ansi": "6.0.1",
Expand Down
3 changes: 1 addition & 2 deletions packages/astro/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,9 @@
"build:dev": "yarn build",
"build:transpile": "rollup -c rollup.npm.config.mjs",
"build:types": "tsc -p tsconfig.types.json",
"build:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch",
"build:dev:watch": "yarn build:watch",
"build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"circularDepCheck": "madge --circular src/index.client.ts && madge --circular src/index.server.ts && madge --circular src/index.types.ts",
"clean": "rimraf build coverage sentry-astro-*.tgz",
Expand Down
3 changes: 1 addition & 2 deletions packages/aws-serverless/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,9 @@
"build:types": "run-s build:types:core build:types:downlevel",
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/npm/types build/npm/types-ts3.8 --to ts3.8",
"build:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch",
"build:dev:watch": "yarn build:watch",
"build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"circularDepCheck": "madge --circular src/index.ts",
"clean": "rimraf build dist-awslambda-layer coverage sentry-serverless-*.tgz",
Expand Down
5 changes: 2 additions & 3 deletions packages/browser-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,9 @@
"build:types": "run-s build:types:core build:types:downlevel",
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8",
"build:watch": "run-p build:transpile:watch build:types:watch",
"build:dev:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch",
"build:dev:watch": "run-p build:transpile:watch",
"build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"clean": "rimraf build coverage sentry-internal-browser-utils-*.tgz",
"fix": "eslint . --format stylish --fix",
Expand Down
5 changes: 2 additions & 3 deletions packages/browser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,10 @@
"build:types": "run-s build:types:core build:types:downlevel",
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/npm/types build/npm/types-ts3.8 --to ts3.8",
"build:watch": "run-p build:transpile:watch build:bundle:watch build:types:watch",
"build:dev:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch build:bundle:watch",
"build:dev:watch": "run-p build:transpile:watch",
"build:bundle:watch": "rollup -c rollup.bundle.config.mjs --watch",
"build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"circularDepCheck": "madge --circular src/index.ts",
"clean": "rimraf build coverage .rpt2_cache sentry-browser-*.tgz",
Expand Down
3 changes: 1 addition & 2 deletions packages/bun/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,9 @@
"build:types": "run-s build:types:core build:types:downlevel",
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8",
"build:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch",
"build:dev:watch": "yarn build:watch",
"build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"circularDepCheck": "madge --circular src/index.ts",
"clean": "rimraf build coverage sentry-bun-*.tgz",
Expand Down
3 changes: 1 addition & 2 deletions packages/cloudflare/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,9 @@
"build:types": "run-s build:types:core build:types:downlevel",
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8",
"build:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch",
"build:dev:watch": "yarn build:watch",
"build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"circularDepCheck": "madge --circular src/index.ts",
"clean": "rimraf build coverage sentry-cloudflare-*.tgz",
Expand Down
3 changes: 1 addition & 2 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,9 @@
"build:types": "run-s build:types:core build:types:downlevel",
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8",
"build:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch",
"build:dev:watch": "yarn build:watch",
"build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"circularDepCheck": "madge --circular src/index.ts",
"clean": "rimraf build coverage sentry-core-*.tgz",
Expand Down
5 changes: 2 additions & 3 deletions packages/feedback/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,10 @@
"build:types": "run-s build:types:core build:types:downlevel",
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/npm/types build/npm/types-ts3.8 --to ts3.8 && yarn node ./scripts/shim-preact-export.js",
"build:watch": "run-p build:transpile:watch build:bundle:watch build:types:watch",
"build:dev:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch build:bundle:watch",
"build:dev:watch": "run-p build:transpile:watch",
"build:transpile:watch": "yarn build:transpile --watch",
"build:bundle:watch": "yarn build:bundle --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"circularDepCheck": "madge --circular src/index.ts",
"clean": "rimraf build sentry-internal-feedback-*.tgz",
Expand Down
3 changes: 1 addition & 2 deletions packages/gatsby/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,9 @@
"build:types": "run-s build:types:core build:types:downlevel",
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8",
"build:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch",
"build:dev:watch": "yarn build:watch",
"build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"circularDepCheck": "madge --circular src/index.ts",
"clean": "rimraf build coverage *.d.ts sentry-gatsby-*.tgz",
Expand Down
3 changes: 1 addition & 2 deletions packages/google-cloud-serverless/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,9 @@
"build:types": "run-s build:types:core build:types:downlevel",
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8",
"build:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch",
"build:dev:watch": "yarn build:watch",
"build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"circularDepCheck": "madge --circular src/index.ts",
"clean": "rimraf build coverage sentry-google-cloud-*.tgz",
Expand Down
3 changes: 1 addition & 2 deletions packages/hono/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,9 @@
"build:types": "run-s build:types:core build:types:downlevel",
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8",
"build:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch",
"build:dev:watch": "yarn build:watch",
"build:transpile:watch": "rollup -c rollup.npm.config.mjs --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"build:tarball": "npm pack",
"circularDepCheck": "madge --circular src/index.ts",
"clean": "rimraf build coverage sentry-hono-*.tgz",
Expand Down
3 changes: 1 addition & 2 deletions packages/integration-shims/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,9 @@
"build:types:core": "tsc -p tsconfig.types.json",
"build:types:downlevel": "yarn downlevel-dts build/types build/types-ts3.8 --to ts3.8",
"build:dev": "yarn build",
"build:watch": "run-p build:transpile:watch build:types:watch",
"build:watch": "run-p build:transpile:watch",
"build:dev:watch": "run-p build:watch",
"build:transpile:watch": "yarn build:transpile --watch",
"build:types:watch": "tsc -p tsconfig.types.json --watch",
"clean": "rimraf build",
"fix": "eslint . --format stylish --fix",
"lint": "eslint . --format stylish",
Expand Down
Loading
Loading