Skip to content

Commit 743d358

Browse files
authored
Merge branch 'develop' into nh/nestjs-middleware-instrumentation
2 parents 545ea04 + e38f89d commit 743d358

File tree

148 files changed

+1313
-346
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

148 files changed

+1313
-346
lines changed

.github/ISSUE_TEMPLATE/bug.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,14 @@ body:
8080
- type: textarea
8181
id: sdk-setup
8282
attributes:
83-
label: SDK Setup/Reproduction Example
83+
label: Reproduction Example/SDK Setup
8484
description:
85-
How do you set up your Sentry SDK? Please show us your `Sentry.init` code.
86-
Or even better—share a link to a reproduction example.
85+
To ensure that we can help you as fast as possible, please share a link to a reproduction example (GitHub repo or online code editor).
86+
This enables us to quickly understand and address your issue.
87+
If you do not post a link, kindly paste your `Sentry.init` code, so we can see how you set up Sentry.
8788
placeholder: |-
89+
https://some-JS-online-code-editor.com/my-example
90+
8891
```javascript
8992
Sentry.init({
9093
dsn: __YOUR_DSN__

.github/workflows/build.yml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -519,7 +519,7 @@ jobs:
519519
strategy:
520520
fail-fast: false
521521
matrix:
522-
node: [14, 16, 18, 20, 22.4]
522+
node: [14, 16, 18, 20, 22]
523523
steps:
524524
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
525525
uses: actions/checkout@v4
@@ -579,7 +579,7 @@ jobs:
579579
strategy:
580580
fail-fast: false
581581
matrix:
582-
node: [14, 16, 18, 20, 22.4]
582+
node: [14, 16, 18, 20, 22]
583583
steps:
584584
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
585585
uses: actions/checkout@v4
@@ -816,12 +816,12 @@ jobs:
816816
strategy:
817817
fail-fast: false
818818
matrix:
819-
node: [14, 16, 18, 20, 22.4]
819+
node: [14, 16, 18, 20, 22]
820820
typescript:
821821
- false
822822
include:
823823
# Only check typescript for latest version (to streamline CI)
824-
- node: 22.4
824+
- node: 22
825825
typescript: '3.8'
826826
steps:
827827
- name: Check out current commit (${{ needs.job_get_metadata.outputs.commit_label }})
@@ -858,7 +858,7 @@ jobs:
858858
strategy:
859859
fail-fast: false
860860
matrix:
861-
node: [18, 20, 22.4]
861+
node: [18, 20, 22]
862862
remix: [1, 2]
863863
# Remix v2 only supports Node 18+, so run 16 tests separately
864864
include:
@@ -990,6 +990,7 @@ jobs:
990990
'node-express-esm-without-loader',
991991
'node-express-cjs-preload',
992992
'node-otel-sdk-node',
993+
'node-otel-custom-sampler',
993994
'ember-classic',
994995
'ember-embroider',
995996
'nextjs-app-dir',
@@ -1384,7 +1385,7 @@ jobs:
13841385
- os: ubuntu-20.04
13851386
node: 20
13861387
- os: ubuntu-20.04
1387-
node: 22.4
1388+
node: 22
13881389

13891390
# x64 musl
13901391
- os: ubuntu-20.04
@@ -1398,7 +1399,7 @@ jobs:
13981399
node: 20
13991400
- os: ubuntu-20.04
14001401
container: node:22-alpine3.18
1401-
node: 22.4
1402+
node: 22
14021403

14031404
# arm64 glibc
14041405
- os: ubuntu-20.04
@@ -1412,7 +1413,7 @@ jobs:
14121413
node: 20
14131414
- os: ubuntu-20.04
14141415
arch: arm64
1415-
node: 22.4
1416+
node: 22
14161417

14171418
# arm64 musl
14181419
- os: ubuntu-20.04
@@ -1430,7 +1431,7 @@ jobs:
14301431
- os: ubuntu-20.04
14311432
arch: arm64
14321433
container: node:22-alpine3.18
1433-
node: 22.4
1434+
node: 22
14341435

14351436
# macos x64
14361437
- os: macos-13
@@ -1443,7 +1444,7 @@ jobs:
14431444
node: 20
14441445
arch: x64
14451446
- os: macos-13
1446-
node: 22.4
1447+
node: 22
14471448
arch: x64
14481449

14491450
# macos arm64
@@ -1461,7 +1462,7 @@ jobs:
14611462
target_platform: darwin
14621463
- os: macos-13
14631464
arch: arm64
1464-
node: 22.4
1465+
node: 22
14651466
target_platform: darwin
14661467

14671468
# windows x64
@@ -1475,7 +1476,7 @@ jobs:
14751476
node: 20
14761477
arch: x64
14771478
- os: windows-2022
1478-
node: 22.4
1479+
node: 22
14791480
arch: x64
14801481

14811482
steps:

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,29 @@
88

99
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
1010

11+
## 8.20.0
12+
13+
### Important Changes
14+
15+
- **feat(node): Allow to pass `registerEsmLoaderHooks` to preload (#12998)**
16+
17+
You can write your own custom preload script and configure this in the preload options. `registerEsmLoaderHooks` can be
18+
passed as an option to `preloadOpenTelemetry`, which allows to exclude/include packages in the preload.
19+
20+
- **fix(node): Do not emit fetch spans when tracing is disabled (#13003)**
21+
22+
Sentry will not emit "fetch" spans if tracing is disabled. This is relevant for user who use their own sampler.
23+
24+
### Other Changes
25+
26+
- feat(feedback): Trigger button aria label configuration (#13008)
27+
- feat(nestjs): Change nest sdk setup (#12920)
28+
- feat(node): Extend ESM hooks options for iitm v1.10.0 (#13016)
29+
- feat(node): Send client reports (#12951)
30+
- feat(nuxt): Automatically add BrowserTracing (#13005)
31+
- feat(nuxt): Setup source maps with vite config (#13018)
32+
- feat(replay): Improve public Replay APIs (#13000)
33+
1134
## 8.19.0
1235

1336
- feat(core): Align Span interface with OTEL (#12898)

dev-packages/browser-integration-tests/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/browser-integration-tests",
3-
"version": "8.19.0",
3+
"version": "8.20.0",
44
"main": "index.js",
55
"license": "MIT",
66
"engines": {
@@ -43,7 +43,7 @@
4343
"@babel/preset-typescript": "^7.16.7",
4444
"@playwright/test": "^1.44.1",
4545
"@sentry-internal/rrweb": "2.11.0",
46-
"@sentry/browser": "8.19.0",
46+
"@sentry/browser": "8.20.0",
4747
"axios": "1.6.7",
4848
"babel-loader": "^8.2.2",
4949
"html-webpack-plugin": "^5.5.0",

dev-packages/bundle-analyzer-scenarios/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/bundle-analyzer-scenarios",
3-
"version": "8.19.0",
3+
"version": "8.20.0",
44
"description": "Scenarios to test bundle analysis with",
55
"repository": "git://github.com/getsentry/sentry-javascript.git",
66
"homepage": "https://github.com/getsentry/sentry-javascript/tree/master/dev-packages/bundle-analyzer-scenarios",

dev-packages/e2e-tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sentry-internal/e2e-tests",
3-
"version": "8.19.0",
3+
"version": "8.20.0",
44
"license": "MIT",
55
"private": true,
66
"scripts": {

dev-packages/e2e-tests/test-applications/create-remix-app-express-legacy/tests/server-transactions.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@ import { uuid4 } from '@sentry/utils';
33

44
import { waitForTransaction } from '@sentry-internal/test-utils';
55

6+
test.describe.configure({ mode: 'serial' });
7+
8+
test('Sends parameterized transaction name to Sentry', async ({ page }) => {
9+
const transactionPromise = waitForTransaction('create-remix-app-express-legacy', transactionEvent => {
10+
return transactionEvent.contexts?.trace?.op === 'http.server';
11+
});
12+
13+
await page.goto('/user/123');
14+
15+
const transaction = await transactionPromise;
16+
17+
expect(transaction).toBeDefined();
18+
expect(transaction.transaction).toBe('routes/user.$id');
19+
});
20+
621
test('Sends form data with action span to Sentry', async ({ page }) => {
722
await page.goto('/action-formdata');
823

dev-packages/e2e-tests/test-applications/create-remix-app-express-vite-dev/tests/server-transactions.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@ import { uuid4 } from '@sentry/utils';
33

44
import { waitForTransaction } from '@sentry-internal/test-utils';
55

6+
test.describe.configure({ mode: 'serial' });
7+
8+
test('Sends parameterized transaction name to Sentry', async ({ page }) => {
9+
const transactionPromise = waitForTransaction('create-remix-app-express-vite-dev', transactionEvent => {
10+
return transactionEvent.contexts?.trace?.op === 'http.server';
11+
});
12+
13+
await page.goto('/user/123');
14+
15+
const transaction = await transactionPromise;
16+
17+
expect(transaction).toBeDefined();
18+
expect(transaction.transaction).toBe('GET user/:id');
19+
});
20+
621
test('Sends two linked transactions (server & client) to Sentry', async ({ page }) => {
722
// We use this to identify the transactions
823
const testTag = uuid4();

dev-packages/e2e-tests/test-applications/create-remix-app-express/tests/server-transactions.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@ import { uuid4 } from '@sentry/utils';
33

44
import { waitForTransaction } from '@sentry-internal/test-utils';
55

6+
test.describe.configure({ mode: 'serial' });
7+
8+
test('Sends parameterized transaction name to Sentry', async ({ page }) => {
9+
const transactionPromise = waitForTransaction('create-remix-app-express', transactionEvent => {
10+
return transactionEvent.contexts?.trace?.op === 'http.server';
11+
});
12+
13+
await page.goto('/user/123');
14+
15+
const transaction = await transactionPromise;
16+
17+
expect(transaction).toBeDefined();
18+
expect(transaction.transaction).toBe('GET user/:id');
19+
});
20+
621
test('Sends form data with action span', async ({ page }) => {
722
await page.goto('/action-formdata');
823

dev-packages/e2e-tests/test-applications/create-remix-app-legacy/tests/server-transactions.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@ import { uuid4 } from '@sentry/utils';
33

44
import { waitForTransaction } from '@sentry-internal/test-utils';
55

6+
test.describe.configure({ mode: 'serial' });
7+
8+
test('Sends parameterized transaction name to Sentry', async ({ page }) => {
9+
const transactionPromise = waitForTransaction('create-remix-app-legacy', transactionEvent => {
10+
return transactionEvent.contexts?.trace?.op === 'http.server';
11+
});
12+
13+
await page.goto('/user/123');
14+
15+
const transaction = await transactionPromise;
16+
17+
expect(transaction).toBeDefined();
18+
expect(transaction.transaction).toBe('routes/user.$id');
19+
});
20+
621
test('Sends two linked transactions (server & client) to Sentry', async ({ page }) => {
722
// We use this to identify the transactions
823
const testTag = uuid4();

dev-packages/e2e-tests/test-applications/create-remix-app-v2-legacy/tests/server-transactions.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@ import { uuid4 } from '@sentry/utils';
33

44
import { waitForTransaction } from '@sentry-internal/test-utils';
55

6+
test.describe.configure({ mode: 'serial' });
7+
8+
test('Sends parameterized transaction name to Sentry', async ({ page }) => {
9+
const transactionPromise = waitForTransaction('create-remix-app-v2-legacy', transactionEvent => {
10+
return transactionEvent.contexts?.trace?.op === 'http.server';
11+
});
12+
13+
await page.goto('/user/123');
14+
15+
const transaction = await transactionPromise;
16+
17+
expect(transaction).toBeDefined();
18+
expect(transaction.transaction).toBe('routes/user.$id');
19+
});
20+
621
test('Sends two linked transactions (server & client) to Sentry', async ({ page }) => {
722
// We use this to identify the transactions
823
const testTag = uuid4();

dev-packages/e2e-tests/test-applications/create-remix-app-v2/tests/server-transactions.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@ import { uuid4 } from '@sentry/utils';
33

44
import { waitForTransaction } from '@sentry-internal/test-utils';
55

6+
test.describe.configure({ mode: 'serial' });
7+
8+
test('Sends parameterized transaction name to Sentry', async ({ page }) => {
9+
const transactionPromise = waitForTransaction('create-remix-app-v2', transactionEvent => {
10+
return transactionEvent.contexts?.trace?.op === 'http.server';
11+
});
12+
13+
await page.goto('/user/123');
14+
15+
const transaction = await transactionPromise;
16+
17+
expect(transaction).toBeDefined();
18+
expect(transaction.transaction).toBe('GET user/:id');
19+
});
20+
621
test('Sends two linked transactions (server & client) to Sentry', async ({ page }) => {
722
// We use this to identify the transactions
823
const testTag = uuid4();

dev-packages/e2e-tests/test-applications/create-remix-app/tests/server-transactions.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@ import { uuid4 } from '@sentry/utils';
33

44
import { waitForTransaction } from '@sentry-internal/test-utils';
55

6+
test.describe.configure({ mode: 'serial' });
7+
8+
test('Sends parameterized transaction name to Sentry', async ({ page }) => {
9+
const transactionPromise = waitForTransaction('create-remix-app', transactionEvent => {
10+
return transactionEvent.contexts?.trace?.op === 'http.server';
11+
});
12+
13+
await page.goto('/user/123');
14+
15+
const transaction = await transactionPromise;
16+
17+
expect(transaction).toBeDefined();
18+
expect(transaction.transaction).toBe('GET user/:id');
19+
});
20+
621
test('Sends two linked transactions (server & client) to Sentry', async ({ page }) => {
722
// We use this to identify the transactions
823
const testTag = uuid4();
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
dist
2+
.vscode
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@sentry:registry=http://127.0.0.1:4873
2+
@sentry-internal:registry=http://127.0.0.1:4873
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{
2+
"name": "node-otel-custom-sampler",
3+
"version": "1.0.0",
4+
"private": true,
5+
"scripts": {
6+
"build": "tsc",
7+
"start": "node dist/app.js",
8+
"test": "playwright test",
9+
"clean": "npx rimraf node_modules pnpm-lock.yaml",
10+
"test:build": "pnpm install && pnpm build",
11+
"test:assert": "pnpm test"
12+
},
13+
"dependencies": {
14+
"@opentelemetry/api": "^1.9.0",
15+
"@opentelemetry/sdk-trace-node": "^1.25.1",
16+
"@sentry/node": "latest || *",
17+
"@sentry/opentelemetry": "latest || *",
18+
"@sentry/types": "latest || *",
19+
"@types/express": "4.17.17",
20+
"@types/node": "18.15.1",
21+
"express": "4.19.2",
22+
"typescript": "4.9.5"
23+
},
24+
"devDependencies": {
25+
"@playwright/test": "^1.44.1",
26+
"@sentry-internal/test-utils": "link:../../../test-utils"
27+
},
28+
"volta": {
29+
"extends": "../../package.json"
30+
}
31+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { getPlaywrightConfig } from '@sentry-internal/test-utils';
2+
3+
const config = getPlaywrightConfig({
4+
startCommand: `pnpm start`,
5+
});
6+
7+
export default config;

0 commit comments

Comments
 (0)