Skip to content

Commit d4660db

Browse files
andreiborzatimfishgithub-actions[bot]logaretmdependabot[bot]
authored
meta(changelog): Update changelog for 10.36.0 (#18915)
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Tim Fish <tim@timfish.uk> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Abdelrahman Awad <abdelrahman.awad@sentry.io> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: JPeer264 <jan.peer@sentry.io> Co-authored-by: Lukas Stracke <lukas.stracke@sentry.io>
2 parents 348b283 + d185952 commit d4660db

File tree

52 files changed

+1241
-356
lines changed

Some content is hidden

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

52 files changed

+1241
-356
lines changed

.size-limit.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ module.exports = [
3838
path: 'packages/browser/build/npm/esm/prod/index.js',
3939
import: createImport('init', 'browserTracingIntegration'),
4040
gzip: true,
41-
limit: '42 KB',
41+
limit: '43 KB',
4242
},
4343
{
4444
name: '@sentry/browser (incl. Tracing, Profiling)',
@@ -287,7 +287,7 @@ module.exports = [
287287
import: createImport('init'),
288288
ignore: [...builtinModules, ...nodePrefixedBuiltinModules],
289289
gzip: true,
290-
limit: '163 KB',
290+
limit: '166 KB',
291291
},
292292
{
293293
name: '@sentry/node - without tracing',

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,22 @@
44

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

7+
## 10.36.0
8+
9+
- feat(node): Add Prisma v7 support ([#18908](https://github.com/getsentry/sentry-javascript/pull/18908))
10+
- feat(opentelemetry): Support `db.system.name` attribute for database spans ([#18902](https://github.com/getsentry/sentry-javascript/pull/18902))
11+
- feat(deps): Bump OpenTelemetry dependencies ([#18878](https://github.com/getsentry/sentry-javascript/pull/18878))
12+
- fix(core): Sanitize data URLs in `http.client` spans ([#18896](https://github.com/getsentry/sentry-javascript/pull/18896))
13+
- fix(nextjs): Add ALS runner fallbacks for serverless environments ([#18889](https://github.com/getsentry/sentry-javascript/pull/18889))
14+
- fix(node): Profiling debug ID matching
15+
16+
<details>
17+
<summary><strong>Internal Changes</strong></summary>
18+
19+
- chore(deps-dev): bump @remix-run/server-runtime from 2.15.2 to 2.17.3 in /packages/remix ([#18750](https://github.com/getsentry/sentry-javascript/pull/18750))
20+
21+
</details>
22+
723
## 10.35.0
824

925
### Important Changes
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import * as Sentry from '@sentry/browser';
2+
3+
window.Sentry = Sentry;
4+
5+
Sentry.init({
6+
dsn: 'https://public@dsn.ingest.sentry.io/1337',
7+
integrations: [Sentry.browserTracingIntegration()],
8+
tracesSampleRate: 1,
9+
autoSessionTracking: false,
10+
});
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// Fetch a data URL to verify that the span name and attributes are sanitized
2+
// Data URLs are used for inline resources, e.g., Web Workers with inline scripts
3+
const dataUrl = 'data:text/plain;base64,SGVsbG8gV29ybGQh';
4+
fetch(dataUrl).catch(() => {
5+
// Data URL fetch might fail in some browsers, but the span should still be created
6+
});
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { expect } from '@playwright/test';
2+
import { sentryTest } from '../../../../utils/fixtures';
3+
import {
4+
envelopeRequestParser,
5+
shouldSkipTracingTest,
6+
waitForTransactionRequestOnUrl,
7+
} from '../../../../utils/helpers';
8+
9+
sentryTest('sanitizes data URLs in fetch span name and attributes', async ({ getLocalTestUrl, page }) => {
10+
if (shouldSkipTracingTest()) {
11+
sentryTest.skip();
12+
}
13+
14+
const url = await getLocalTestUrl({ testDir: __dirname });
15+
16+
const req = await waitForTransactionRequestOnUrl(page, url);
17+
const transactionEvent = envelopeRequestParser(req);
18+
19+
const requestSpans = transactionEvent.spans?.filter(({ op }) => op === 'http.client');
20+
21+
expect(requestSpans).toHaveLength(1);
22+
23+
const span = requestSpans?.[0];
24+
25+
const sanitizedUrl = 'data:text/plain,base64,SGVsbG8gV2... [truncated]';
26+
expect(span?.description).toBe(`GET ${sanitizedUrl}`);
27+
28+
expect(span?.data).toMatchObject({
29+
'http.method': 'GET',
30+
url: sanitizedUrl,
31+
type: 'fetch',
32+
});
33+
34+
expect(span?.data?.['http.url']).toBe(sanitizedUrl);
35+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import * as Sentry from '@sentry/browser';
2+
3+
window.Sentry = Sentry;
4+
5+
Sentry.init({
6+
dsn: 'https://public@dsn.ingest.sentry.io/1337',
7+
integrations: [Sentry.browserTracingIntegration()],
8+
tracesSampleRate: 1,
9+
autoSessionTracking: false,
10+
});
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// XHR request to a data URL to verify that the span name and attributes are sanitized
2+
const dataUrl = 'data:text/plain;base64,SGVsbG8gV29ybGQh';
3+
const xhr = new XMLHttpRequest();
4+
xhr.open('GET', dataUrl);
5+
xhr.send();
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { expect } from '@playwright/test';
2+
import type { Event } from '@sentry/core';
3+
import { sentryTest } from '../../../../utils/fixtures';
4+
import { getFirstSentryEnvelopeRequest, shouldSkipTracingTest } from '../../../../utils/helpers';
5+
6+
sentryTest('sanitizes data URLs in XHR span name and attributes', async ({ getLocalTestUrl, page }) => {
7+
if (shouldSkipTracingTest()) {
8+
sentryTest.skip();
9+
}
10+
11+
const url = await getLocalTestUrl({ testDir: __dirname });
12+
13+
const eventData = await getFirstSentryEnvelopeRequest<Event>(page, url);
14+
const requestSpans = eventData.spans?.filter(({ op }) => op === 'http.client');
15+
16+
expect(requestSpans).toHaveLength(1);
17+
18+
const span = requestSpans?.[0];
19+
20+
const sanitizedUrl = 'data:text/plain,base64,SGVsbG8gV2... [truncated]';
21+
expect(span?.description).toBe(`GET ${sanitizedUrl}`);
22+
23+
expect(span?.data).toMatchObject({
24+
'http.method': 'GET',
25+
url: sanitizedUrl,
26+
type: 'xhr',
27+
});
28+
29+
expect(span?.data?.['http.url']).toBe(sanitizedUrl);
30+
});

dev-packages/e2e-tests/test-applications/node-core-express-otel-v2-custom-sampler/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
},
1313
"dependencies": {
1414
"@opentelemetry/api": "^1.9.0",
15-
"@opentelemetry/context-async-hooks": "^2.2.0",
16-
"@opentelemetry/core": "^2.2.0",
17-
"@opentelemetry/instrumentation": "^0.208.0",
18-
"@opentelemetry/instrumentation-http": "^0.208.0",
19-
"@opentelemetry/resources": "^2.2.0",
20-
"@opentelemetry/sdk-trace-node": "^2.2.0",
15+
"@opentelemetry/context-async-hooks": "^2.4.0",
16+
"@opentelemetry/core": "^2.4.0",
17+
"@opentelemetry/instrumentation": "^0.210.0",
18+
"@opentelemetry/instrumentation-http": "^0.210.0",
19+
"@opentelemetry/resources": "^2.4.0",
20+
"@opentelemetry/sdk-trace-node": "^2.4.0",
2121
"@opentelemetry/semantic-conventions": "^1.37.0",
2222
"@sentry/node-core": "latest || *",
2323
"@sentry/opentelemetry": "latest || *",

dev-packages/e2e-tests/test-applications/node-core-express-otel-v2-sdk-node/package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
},
1313
"dependencies": {
1414
"@opentelemetry/api": "^1.9.0",
15-
"@opentelemetry/context-async-hooks": "^2.2.0",
16-
"@opentelemetry/core": "^2.2.0",
17-
"@opentelemetry/instrumentation": "^0.208.0",
18-
"@opentelemetry/instrumentation-http": "^0.208.0",
19-
"@opentelemetry/resources": "^2.2.0",
20-
"@opentelemetry/sdk-trace-node": "^2.2.0",
15+
"@opentelemetry/context-async-hooks": "^2.4.0",
16+
"@opentelemetry/core": "^2.4.0",
17+
"@opentelemetry/instrumentation": "^0.210.0",
18+
"@opentelemetry/instrumentation-http": "^0.210.0",
19+
"@opentelemetry/resources": "^2.4.0",
20+
"@opentelemetry/sdk-trace-node": "^2.4.0",
2121
"@opentelemetry/semantic-conventions": "^1.37.0",
22-
"@opentelemetry/sdk-node": "^0.208.0",
23-
"@opentelemetry/exporter-trace-otlp-http": "^0.208.0",
22+
"@opentelemetry/sdk-node": "^0.210.0",
23+
"@opentelemetry/exporter-trace-otlp-http": "^0.210.0",
2424
"@sentry/node-core": "latest || *",
2525
"@sentry/opentelemetry": "latest || *",
2626
"@types/express": "4.17.17",

0 commit comments

Comments
 (0)