Skip to content

Commit 7c452dd

Browse files
authored
perf(converters): Improve performance (#1006)
1 parent a980447 commit 7c452dd

File tree

5 files changed

+18
-6
lines changed

5 files changed

+18
-6
lines changed

.changeset/dirty-rabbits-build.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@opennextjs/aws": patch
3+
---
4+
5+
perf(converters): Improve performance

packages/open-next/src/core/routing/util.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ export function convertToQueryString(query: Record<string, string | string[]>) {
150150
* @__PURE__
151151
*/
152152
export function convertToQuery(querystring: string) {
153+
if (!querystring) return {};
153154
const query = new URLSearchParams(querystring);
154155
const queryObject: Record<string, string[] | string> = {};
155156

packages/open-next/src/overrides/converters/aws-apigw-v2.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,10 @@ function normalizeAPIGatewayProxyEventV2Headers(
6464
headers.cookie = cookies.join("; ");
6565
}
6666

67-
for (const [key, value] of Object.entries(rawHeaders || {})) {
68-
headers[key.toLowerCase()] = value!;
67+
if (rawHeaders) {
68+
for (const [key, value] of Object.entries(rawHeaders)) {
69+
headers[key.toLowerCase()] = value!;
70+
}
6971
}
7072

7173
return headers;

packages/open-next/src/overrides/converters/aws-cloudfront.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,10 @@ function normalizeCloudFrontRequestEventHeaders(
7070
const headers: Record<string, string> = {};
7171

7272
for (const [key, values] of Object.entries(rawHeaders)) {
73+
const lowerKey = key.toLowerCase();
7374
for (const { value } of values) {
7475
if (value) {
75-
headers[key.toLowerCase()] = value;
76+
headers[lowerKey] = value;
7677
}
7778
}
7879
}

packages/open-next/src/overrides/converters/edge.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ const converter: Converter<InternalEvent, InternalResult | MiddlewareResult> = {
2424

2525
const searchParams = url.searchParams;
2626
const query = getQueryFromSearchParams(searchParams);
27-
// Transform body into Buffer
28-
const body = await event.arrayBuffer();
2927
const headers: Record<string, string> = {};
3028
event.headers.forEach((value, key) => {
3129
headers[key] = value;
@@ -34,6 +32,11 @@ const converter: Converter<InternalEvent, InternalResult | MiddlewareResult> = {
3432
const method = event.method;
3533
const shouldHaveBody = method !== "GET" && method !== "HEAD";
3634

35+
// Only read body for methods that should have one
36+
const body = shouldHaveBody
37+
? Buffer.from(await event.arrayBuffer())
38+
: undefined;
39+
3740
const cookieHeader = event.headers.get("cookie");
3841
const cookies = cookieHeader
3942
? (cookieParser.parse(cookieHeader) as Record<string, string>)
@@ -44,7 +47,7 @@ const converter: Converter<InternalEvent, InternalResult | MiddlewareResult> = {
4447
method,
4548
rawPath,
4649
url: event.url,
47-
body: shouldHaveBody ? Buffer.from(body) : undefined,
50+
body,
4851
headers,
4952
remoteAddress: event.headers.get("x-forwarded-for") ?? "::1",
5053
query,

0 commit comments

Comments
 (0)