Skip to content

Commit 7dd3a82

Browse files
authored
Merge pull request #17827 from getsentry/prepare-release/10.17.0
meta(changelog): Update changelog for 10.17.0
2 parents 559d8a5 + 7b7ba0d commit 7dd3a82

File tree

45 files changed

+3168
-835
lines changed

Some content is hidden

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

45 files changed

+3168
-835
lines changed

.github/dependabot.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,5 @@ updates:
2222
prefix: feat
2323
prefix-development: feat
2424
include: scope
25+
exclude-paths:
26+
- 'dev-packages/e2e-tests/test-applications/'

CHANGELOG.md

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,35 @@
44

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

7+
## 10.17.0
8+
9+
### Important Changes
10+
11+
- **feat(nuxt): Implement server middleware instrumentation ([#17796](https://github.com/getsentry/sentry-javascript/pull/17796))**
12+
13+
This release introduces instrumentation for Nuxt middleware, ensuring that all middleware handlers are automatically wrapped with tracing and error reporting functionality.
14+
15+
- **fix(aws-serverless): Take `http_proxy` into account when choosing
16+
`useLayerExtension` default ([#17817](https://github.com/getsentry/sentry-javascript/pull/17817))**
17+
18+
The default setting for `useLayerExtension` now considers the `http_proxy` environment variable.
19+
When `http_proxy` is set, `useLayerExtension` will be off by default.
20+
If you use a `http_proxy` but would still like to make use of the Sentry Lambda extension, exempt `localhost` in a `no_proxy` environment variable.
21+
22+
### Other Changes
23+
24+
- feat(node): Split up http integration into composable parts ([#17524](https://github.com/getsentry/sentry-javascript/pull/17524))
25+
- fix(core): Remove check and always respect ai.telemetry.functionId for Vercel AI gen spans ([#17811](https://github.com/getsentry/sentry-javascript/pull/17811))
26+
- doc(core): Fix outdated JSDoc in `beforeSendSpan` ([#17815](https://github.com/getsentry/sentry-javascript/pull/17815))
27+
28+
<details>
29+
<summary> <strong>Internal Changes</strong> </summary>
30+
31+
- ci: Do not run dependabot on e2e test applications ([#17813](https://github.com/getsentry/sentry-javascript/pull/17813))
32+
- docs: Reword changelog for google gen ai integration ([#17805](https://github.com/getsentry/sentry-javascript/pull/17805))
33+
34+
</details>
35+
736
## 10.16.0
837

938
- feat(logs): Add internal `replay_is_buffering` flag ([#17752](https://github.com/getsentry/sentry-javascript/pull/17752))
@@ -81,7 +110,7 @@ Work in this release was contributed by @Karibash. Thank you for your contributi
81110

82111
- **feat(cloudflare,vercel-edge): Add support for Google Gen AI instrumentation ([#17723](https://github.com/getsentry/sentry-javascript/pull/17723))**
83112

84-
The SDK now supports manually instrumenting Google's Generative AI operations in Cloudflare Workers and Vercel Edge Runtime environments, providing insights into your AI operations. You can use `const wrappedClient = Sentry.instrumentGoogleGenAIClient(genAiClient)` to get an instrumented client.
113+
The SDK now supports manually instrumenting Google's Gen AI operations in Cloudflare Workers and Vercel Edge Runtime environments, providing insights into your AI operations. You can use `const wrappedClient = Sentry.instrumentGoogleGenAIClient(genAiClient)` to get an instrumented client.
85114

86115
### Other Changes
87116

@@ -119,9 +148,9 @@ Work in this release was contributed by @Karibash. Thank you for your contributi
119148

120149
Note that if `Sentry.reportPageLoaded()` is not called within 30 seconds of the initial pageload (or whatever value the `finalTimeout` option is set to), the pageload span will be ended automatically.
121150

122-
- **feat(core,node): Add instrumentation for `GoogleGenerativeAI` ([#17625](https://github.com/getsentry/sentry-javascript/pull/17625))**
151+
- **feat(core,node): Add instrumentation for `GoogleGenAI` ([#17625](https://github.com/getsentry/sentry-javascript/pull/17625))**
123152

124-
The SDK now automatically instruments the `@google/generative-ai` package to provide insights into your AI operations.
153+
The SDK now automatically instruments the `@google/genai` package to provide insights into your AI operations.
125154

126155
- **feat(nextjs): Promote `useRunAfterProductionCompileHook` to non-experimental build option ([#17721](https://github.com/getsentry/sentry-javascript/pull/17721))**
127156

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { defineEventHandler, getHeader } from '#imports';
2+
3+
export default defineEventHandler(async event => {
4+
// Simple API endpoint that will trigger all server middleware
5+
return {
6+
message: 'Server middleware test endpoint',
7+
path: event.path,
8+
method: event.method,
9+
headers: {
10+
'x-first-middleware': getHeader(event, 'x-first-middleware'),
11+
'x-second-middleware': getHeader(event, 'x-second-middleware'),
12+
'x-auth-middleware': getHeader(event, 'x-auth-middleware'),
13+
},
14+
};
15+
});
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { defineEventHandler, setHeader } from '#imports';
2+
3+
export default defineEventHandler(async event => {
4+
// Set a header to indicate this middleware ran
5+
setHeader(event, 'x-first-middleware', 'executed');
6+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { eventHandler, setHeader } from '#imports';
2+
3+
// tests out the eventHandler alias
4+
export default eventHandler(async event => {
5+
// Set a header to indicate this middleware ran
6+
setHeader(event, 'x-second-middleware', 'executed');
7+
});
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { defineEventHandler, setHeader, getQuery } from '#imports';
2+
3+
export default defineEventHandler(async event => {
4+
// Check if we should throw an error
5+
const query = getQuery(event);
6+
if (query.throwError === 'true') {
7+
throw new Error('Auth middleware error');
8+
}
9+
10+
// Set a header to indicate this middleware ran
11+
setHeader(event, 'x-auth-middleware', 'executed');
12+
});
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { defineEventHandler, setHeader, getQuery } from '#imports';
2+
3+
export default defineEventHandler({
4+
onRequest: async event => {
5+
// Set a header to indicate the onRequest hook ran
6+
setHeader(event, 'x-hooks-onrequest', 'executed');
7+
8+
// Check if we should throw an error in onRequest
9+
const query = getQuery(event);
10+
if (query.throwOnRequestError === 'true') {
11+
throw new Error('OnRequest hook error');
12+
}
13+
},
14+
15+
handler: async event => {
16+
// Set a header to indicate the main handler ran
17+
setHeader(event, 'x-hooks-handler', 'executed');
18+
19+
// Check if we should throw an error in handler
20+
const query = getQuery(event);
21+
if (query.throwHandlerError === 'true') {
22+
throw new Error('Handler error');
23+
}
24+
},
25+
26+
onBeforeResponse: async (event, response) => {
27+
// Set a header to indicate the onBeforeResponse hook ran
28+
setHeader(event, 'x-hooks-onbeforeresponse', 'executed');
29+
30+
// Check if we should throw an error in onBeforeResponse
31+
const query = getQuery(event);
32+
if (query.throwOnBeforeResponseError === 'true') {
33+
throw new Error('OnBeforeResponse hook error');
34+
}
35+
},
36+
});
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { defineEventHandler, setHeader, getQuery } from '#imports';
2+
3+
export default defineEventHandler({
4+
// Array of onRequest handlers
5+
onRequest: [
6+
async event => {
7+
setHeader(event, 'x-array-onrequest-0', 'executed');
8+
9+
const query = getQuery(event);
10+
if (query.throwOnRequest0Error === 'true') {
11+
throw new Error('OnRequest[0] hook error');
12+
}
13+
},
14+
async event => {
15+
setHeader(event, 'x-array-onrequest-1', 'executed');
16+
17+
const query = getQuery(event);
18+
if (query.throwOnRequest1Error === 'true') {
19+
throw new Error('OnRequest[1] hook error');
20+
}
21+
},
22+
],
23+
24+
handler: async event => {
25+
setHeader(event, 'x-array-handler', 'executed');
26+
},
27+
28+
// Array of onBeforeResponse handlers
29+
onBeforeResponse: [
30+
async (event, response) => {
31+
setHeader(event, 'x-array-onbeforeresponse-0', 'executed');
32+
33+
const query = getQuery(event);
34+
if (query.throwOnBeforeResponse0Error === 'true') {
35+
throw new Error('OnBeforeResponse[0] hook error');
36+
}
37+
},
38+
async (event, response) => {
39+
setHeader(event, 'x-array-onbeforeresponse-1', 'executed');
40+
41+
const query = getQuery(event);
42+
if (query.throwOnBeforeResponse1Error === 'true') {
43+
throw new Error('OnBeforeResponse[1] hook error');
44+
}
45+
},
46+
],
47+
});

0 commit comments

Comments
 (0)