Skip to content

Commit d6aa2e7

Browse files
authored
Merge pull request #14682 from getsentry/prepare-release/8.45.0
meta(changelog): Update changelog for 8.45.0
2 parents 81b70f3 + 734b375 commit d6aa2e7

File tree

91 files changed

+1612
-1044
lines changed

Some content is hidden

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

91 files changed

+1612
-1044
lines changed

.craft.yml

+5-6
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,12 @@ targets:
142142
id: '@sentry-internal/eslint-config-sdk'
143143
includeNames: /^sentry-internal-eslint-config-sdk-\d.*\.tgz$/
144144

145-
# AWS Lambda Layer target
145+
# TODO(v9): Remove this target
146+
# NOTE: We publish the v8 layer under its own name so people on v8 can still get patches
147+
# whenever we release a new v8 version—otherwise we would overwrite the current major lambda layer.
146148
- name: aws-lambda-layer
147149
includeNames: /^sentry-node-serverless-\d+.\d+.\d+(-(beta|alpha|rc)\.\d+)?\.zip$/
148-
layerName: SentryNodeServerlessSDK
150+
layerName: SentryNodeServerlessSDKv8
149151
compatibleRuntimes:
150152
- name: node
151153
versions:
@@ -157,13 +159,10 @@ targets:
157159
- nodejs20.x
158160
license: MIT
159161

160-
# NOTE: We publish the v8 layer under its own name so people on v8 can still get patches
161-
# whenever we release a new v8 version—otherwise we would overwrite the current major lambda layer.
162-
163162
# AWS Lambda Layer target
164163
- name: aws-lambda-layer
165164
includeNames: /^sentry-node-serverless-\d+.\d+.\d+(-(beta|alpha|rc)\.\d+)?\.zip$/
166-
layerName: SentryNodeServerlessSDKv8
165+
layerName: SentryNodeServerlessSDK
167166
compatibleRuntimes:
168167
- name: node
169168
versions:

.size-limit.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ module.exports = [
147147
path: 'packages/svelte/build/esm/index.js',
148148
import: createImport('init'),
149149
gzip: true,
150-
limit: '24 KB',
150+
limit: '25 KB',
151151
},
152152
// Browser CDN bundles
153153
{

CHANGELOG.md

+17
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,23 @@
1010

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

13+
## 8.45.0
14+
15+
- feat(core): Add `handled` option to `captureConsoleIntegration` ([#14664](https://github.com/getsentry/sentry-javascript/pull/14664))
16+
- feat(browser): Attach virtual stack traces to `HttpClient` events ([#14515](https://github.com/getsentry/sentry-javascript/pull/14515))
17+
- feat(replay): Upgrade rrweb packages to 2.31.0 ([#14689](https://github.com/getsentry/sentry-javascript/pull/14689))
18+
- fix(aws-serverless): Remove v8 layer as it overwrites the current layer for docs ([#14679](https://github.com/getsentry/sentry-javascript/pull/14679))
19+
- fix(browser): Mark stack trace from `captureMessage` with `attachStacktrace: true` as synthetic ([#14668](https://github.com/getsentry/sentry-javascript/pull/14668))
20+
- fix(core): Mark stack trace from `captureMessage` with `attatchStackTrace: true` as synthetic ([#14670](https://github.com/getsentry/sentry-javascript/pull/14670))
21+
- fix(core): Set `level` in server runtime `captureException` ([#10587](https://github.com/getsentry/sentry-javascript/pull/10587))
22+
- fix(profiling-node): Guard invocation of native profiling methods ([#14676](https://github.com/getsentry/sentry-javascript/pull/14676))
23+
- fix(nuxt): Inline nitro-utils function ([#14680](https://github.com/getsentry/sentry-javascript/pull/14680))
24+
- fix(profiling-node): Ensure profileId is added to transaction event ([#14681](https://github.com/getsentry/sentry-javascript/pull/14681))
25+
- fix(react): Add React Router Descendant Routes support ([#14304](https://github.com/getsentry/sentry-javascript/pull/14304))
26+
- fix: Disable ANR and Local Variables if debugger is enabled via CLI args ([#14643](https://github.com/getsentry/sentry-javascript/pull/14643))
27+
28+
Work in this release was contributed by @anonrig and @Zih0. Thank you for your contributions!
29+
1330
## 8.44.0
1431

1532
### Deprecations

biome.json

+10-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
"vcs": {
44
"enabled": true,
55
"clientKind": "git",
6-
"useIgnoreFile": true
6+
"useIgnoreFile": true,
7+
"defaultBranch": "develop"
78
},
89
"organizeImports": {
910
"enabled": true
@@ -17,13 +18,15 @@
1718
"noUnusedVariables": "error",
1819
"noPrecisionLoss": "error"
1920
},
21+
"complexity": {
22+
"useRegexLiterals": "error"
23+
},
2024
"suspicious": {
2125
"all": false,
2226
"noControlCharactersInRegex": "error"
2327
},
2428
"nursery": {
25-
"noUnusedImports": "error",
26-
"useRegexLiterals": "error"
29+
"noUnusedImports": "error"
2730
},
2831
"performance": {
2932
"all": true,
@@ -92,6 +95,10 @@
9295
"json": {
9396
"formatter": {
9497
"enabled": true
98+
},
99+
"parser": {
100+
"allowComments": true,
101+
"allowTrailingCommas": true
95102
}
96103
}
97104
}

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"dependencies": {
4343
"@babel/preset-typescript": "^7.16.7",
4444
"@playwright/test": "^1.44.1",
45-
"@sentry-internal/rrweb": "2.30.0",
45+
"@sentry-internal/rrweb": "2.31.0",
4646
"@sentry/browser": "8.44.0",
4747
"axios": "1.7.7",
4848
"babel-loader": "^8.2.2",

dev-packages/browser-integration-tests/suites/integrations/captureConsole/test.ts

+10
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ sentryTest('it captures console messages correctly', async ({ getLocalTestUrl, p
3030
extra: {
3131
arguments: ['console log'],
3232
},
33+
message: 'console log',
3334
}),
3435
);
3536
expect(logEvent?.exception).toBeUndefined();
@@ -40,6 +41,7 @@ sentryTest('it captures console messages correctly', async ({ getLocalTestUrl, p
4041
extra: {
4142
arguments: ['console warn'],
4243
},
44+
message: 'console warn',
4345
}),
4446
);
4547
expect(warnEvent?.exception).toBeUndefined();
@@ -50,6 +52,7 @@ sentryTest('it captures console messages correctly', async ({ getLocalTestUrl, p
5052
extra: {
5153
arguments: ['console info'],
5254
},
55+
message: 'console info',
5356
}),
5457
);
5558
expect(infoEvent?.exception).toBeUndefined();
@@ -60,6 +63,7 @@ sentryTest('it captures console messages correctly', async ({ getLocalTestUrl, p
6063
extra: {
6164
arguments: ['console error'],
6265
},
66+
message: 'console error',
6367
}),
6468
);
6569
expect(errorEvent?.exception).toBeUndefined();
@@ -70,6 +74,7 @@ sentryTest('it captures console messages correctly', async ({ getLocalTestUrl, p
7074
extra: {
7175
arguments: ['console trace'],
7276
},
77+
message: 'console trace',
7378
}),
7479
);
7580
expect(traceEvent?.exception).toBeUndefined();
@@ -90,6 +95,11 @@ sentryTest('it captures console messages correctly', async ({ getLocalTestUrl, p
9095
}),
9196
);
9297
expect(errorWithErrorEvent?.exception?.values?.[0].value).toBe('console error with error object');
98+
expect(errorWithErrorEvent?.exception?.values?.[0].mechanism).toEqual({
99+
// TODO (v9): Adjust to true after changing the integration's default value
100+
handled: false,
101+
type: 'console',
102+
});
93103
expect(traceWithErrorEvent).toEqual(
94104
expect.objectContaining({
95105
level: 'log',

dev-packages/browser-integration-tests/suites/integrations/httpclient/axios/test.ts

+9
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ sentryTest(
4040
type: 'http.client',
4141
handled: false,
4242
},
43+
stacktrace: {
44+
frames: expect.arrayContaining([
45+
expect.objectContaining({
46+
filename: 'http://sentry-test.io/subject.bundle.js',
47+
function: '?',
48+
in_app: true,
49+
}),
50+
]),
51+
},
4352
},
4453
],
4554
},

dev-packages/browser-integration-tests/suites/integrations/httpclient/fetch/simple/test.ts

+9
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@ sentryTest(
4242
type: 'http.client',
4343
handled: false,
4444
},
45+
stacktrace: {
46+
frames: expect.arrayContaining([
47+
expect.objectContaining({
48+
filename: 'http://sentry-test.io/subject.bundle.js',
49+
function: '?',
50+
in_app: true,
51+
}),
52+
]),
53+
},
4554
},
4655
],
4756
},

dev-packages/browser-integration-tests/suites/integrations/httpclient/fetch/withRequest/test.ts

+9
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ sentryTest('works with a Request passed in', async ({ getLocalTestUrl, page }) =
3838
type: 'http.client',
3939
handled: false,
4040
},
41+
stacktrace: {
42+
frames: expect.arrayContaining([
43+
expect.objectContaining({
44+
filename: 'http://sentry-test.io/subject.bundle.js',
45+
function: '?',
46+
in_app: true,
47+
}),
48+
]),
49+
},
4150
},
4251
],
4352
},

dev-packages/browser-integration-tests/suites/integrations/httpclient/fetch/withRequestAndBodyAndOptions/test.ts

+9
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ sentryTest(
4040
type: 'http.client',
4141
handled: false,
4242
},
43+
stacktrace: {
44+
frames: expect.arrayContaining([
45+
expect.objectContaining({
46+
filename: 'http://sentry-test.io/subject.bundle.js',
47+
function: '?',
48+
in_app: true,
49+
}),
50+
]),
51+
},
4352
},
4453
],
4554
},

dev-packages/browser-integration-tests/suites/integrations/httpclient/fetch/withRequestAndOptions/test.ts

+9
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ sentryTest('works with a Request (without body) & options passed in', async ({ g
3838
type: 'http.client',
3939
handled: false,
4040
},
41+
stacktrace: {
42+
frames: expect.arrayContaining([
43+
expect.objectContaining({
44+
filename: 'http://sentry-test.io/subject.bundle.js',
45+
function: '?',
46+
in_app: true,
47+
}),
48+
]),
49+
},
4150
},
4251
],
4352
},

dev-packages/browser-integration-tests/suites/integrations/httpclient/xhr/test.ts

+9
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,15 @@ sentryTest(
4040
type: 'http.client',
4141
handled: false,
4242
},
43+
stacktrace: {
44+
frames: expect.arrayContaining([
45+
expect.objectContaining({
46+
filename: 'http://sentry-test.io/subject.bundle.js',
47+
function: '?',
48+
in_app: true,
49+
}),
50+
]),
51+
},
4352
},
4453
],
4554
},
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import * as Sentry from '@sentry/browser';
2+
3+
window.Sentry = Sentry;
4+
5+
Sentry.init({
6+
dsn: 'https://[email protected]/1337',
7+
attachStacktrace: true,
8+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Sentry.captureMessage('foo');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { expect } from '@playwright/test';
2+
import type { Event } from '@sentry/core';
3+
4+
import { sentryTest } from '../../../../utils/fixtures';
5+
import { getFirstSentryEnvelopeRequest } from '../../../../utils/helpers';
6+
7+
sentryTest(
8+
'captures a simple message string with stack trace if `attachStackTrace` is `true`',
9+
async ({ getLocalTestUrl, page }) => {
10+
const url = await getLocalTestUrl({ testDir: __dirname });
11+
12+
const eventData = await getFirstSentryEnvelopeRequest<Event>(page, url);
13+
14+
expect(eventData.message).toBe('foo');
15+
expect(eventData.level).toBe('info');
16+
expect(eventData.exception?.values?.[0]).toEqual({
17+
mechanism: {
18+
handled: true,
19+
type: 'generic',
20+
synthetic: true,
21+
},
22+
stacktrace: {
23+
frames: expect.arrayContaining([expect.any(Object), expect.any(Object)]),
24+
},
25+
value: 'foo',
26+
});
27+
},
28+
);

dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-late/subject.js

+13-11
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
const blockUI = (delay = 70) => e => {
2-
const startTime = Date.now();
1+
const blockUI =
2+
(delay = 70) =>
3+
e => {
4+
const startTime = Date.now();
35

4-
function getElasped() {
5-
const time = Date.now();
6-
return time - startTime;
7-
}
6+
function getElasped() {
7+
const time = Date.now();
8+
return time - startTime;
9+
}
810

9-
while (getElasped() < delay) {
10-
//
11-
}
11+
while (getElasped() < delay) {
12+
//
13+
}
1214

13-
e.target.classList.add('clicked');
14-
};
15+
e.target.classList.add('clicked');
16+
};
1517

1618
document.querySelector('[data-test-id=not-so-slow-button]').addEventListener('click', blockUI(300));
1719
document.querySelector('[data-test-id=slow-button]').addEventListener('click', blockUI(450));

dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized-late/subject.js

+13-11
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
const blockUI = (delay = 70) => e => {
2-
const startTime = Date.now();
1+
const blockUI =
2+
(delay = 70) =>
3+
e => {
4+
const startTime = Date.now();
35

4-
function getElasped() {
5-
const time = Date.now();
6-
return time - startTime;
7-
}
6+
function getElasped() {
7+
const time = Date.now();
8+
return time - startTime;
9+
}
810

9-
while (getElasped() < delay) {
10-
//
11-
}
11+
while (getElasped() < delay) {
12+
//
13+
}
1214

13-
e.target.classList.add('clicked');
14-
};
15+
e.target.classList.add('clicked');
16+
};
1517

1618
document.querySelector('[data-test-id=not-so-slow-button]').addEventListener('click', blockUI(300));
1719
document.querySelector('[data-test-id=slow-button]').addEventListener('click', blockUI(450));

dev-packages/browser-integration-tests/suites/tracing/metrics/web-vitals-inp-parametrized/subject.js

+13-11
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
1-
const blockUI = (delay = 70) => e => {
2-
const startTime = Date.now();
1+
const blockUI =
2+
(delay = 70) =>
3+
e => {
4+
const startTime = Date.now();
35

4-
function getElasped() {
5-
const time = Date.now();
6-
return time - startTime;
7-
}
6+
function getElasped() {
7+
const time = Date.now();
8+
return time - startTime;
9+
}
810

9-
while (getElasped() < delay) {
10-
//
11-
}
11+
while (getElasped() < delay) {
12+
//
13+
}
1214

13-
e.target.classList.add('clicked');
14-
};
15+
e.target.classList.add('clicked');
16+
};
1517

1618
document.querySelector('[data-test-id=not-so-slow-button]').addEventListener('click', blockUI(300));
1719
document.querySelector('[data-test-id=slow-button]').addEventListener('click', blockUI(450));

0 commit comments

Comments
 (0)