Skip to content

Commit 1d81a51

Browse files
committed
review
1 parent c5da7b5 commit 1d81a51

File tree

5 files changed

+48
-47
lines changed

5 files changed

+48
-47
lines changed

packages/open-next/src/overrides/wrappers/aws-lambda-compressed.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@ import { Readable, type Transform, Writable } from "node:stream";
22
import type { ReadableStream } from "node:stream/web";
33
import zlib from "node:zlib";
44

5+
import type { AwsLambdaEvent, AwsLambdaReturn } from "types/aws-lambda";
56
import type { InternalResult, StreamCreator } from "types/open-next";
6-
import type {
7-
AwsLambdaEvent,
8-
AwsLambdaReturn,
9-
WrapperHandler,
10-
} from "types/overrides";
11-
import { formatWarmerResponse } from "utils/overrides";
7+
import type { WrapperHandler } from "types/overrides";
128
import { error } from "../../adapters/logger";
9+
import { formatWarmerResponse } from "./aws-lambda";
1310

1411
const handler: WrapperHandler =
1512
async (handler, converter) =>
@@ -20,7 +17,8 @@ const handler: WrapperHandler =
2017
}
2118

2219
const internalEvent = await converter.convertFrom(event);
23-
// This is a workaround, you can read more about it in the aws-lambda wrapper
20+
// This is a workaround
21+
// https://github.com/opennextjs/opennextjs-aws/blob/e9b37fd44eb856eb8ae73168bf455ff85dd8b285/packages/open-next/src/overrides/wrappers/aws-lambda.ts#L49-L53
2422
const fakeStream: StreamCreator = {
2523
writeHeaders: () => {
2624
return new Writable({
@@ -36,13 +34,17 @@ const handler: WrapperHandler =
3634
});
3735

3836
// Check if response is already compressed
39-
const prevEncoding =
40-
handlerResponse.headers?.["content-encoding"] ??
41-
handlerResponse.headers?.["Content-Encoding"] ??
37+
const alreadyEncoded =
38+
handlerResponse.headers["content-encoding"] ??
39+
handlerResponse.headers["Content-Encoding"] ??
4240
"";
4341

4442
// Return early here if the response is already compressed
43+
if (alreadyEncoded) {
44+
return converter.convertTo(handlerResponse, event);
45+
}
4546

47+
// We compress the body if the client accepts it
4648
const acceptEncoding =
4749
internalEvent.headers["accept-encoding"] ??
4850
internalEvent.headers["Accept-Encoding"] ??

packages/open-next/src/overrides/wrappers/aws-lambda.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
11
import { Writable } from "node:stream";
22

3+
import type { AwsLambdaEvent, AwsLambdaReturn } from "types/aws-lambda";
34
import type { StreamCreator } from "types/open-next";
5+
import type { WrapperHandler } from "types/overrides";
46
import type {
5-
AwsLambdaEvent,
6-
AwsLambdaReturn,
7-
WrapperHandler,
8-
} from "types/overrides";
9-
import { formatWarmerResponse } from "utils/overrides";
7+
WarmerEvent,
8+
WarmerResponse,
9+
} from "../../adapters/warmer-function";
10+
11+
export function formatWarmerResponse(event: WarmerEvent) {
12+
return new Promise<WarmerResponse>((resolve) => {
13+
setTimeout(() => {
14+
resolve({ serverId, type: "warmer" } satisfies WarmerResponse);
15+
}, event.delay);
16+
});
17+
}
1018

1119
const handler: WrapperHandler =
1220
async (handler, converter) =>

packages/open-next/src/types/aws-lambda.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
import type { Writable } from "node:stream";
2-
import type { APIGatewayProxyEventV2, Context } from "aws-lambda";
2+
3+
import type {
4+
APIGatewayProxyEvent,
5+
APIGatewayProxyEventV2,
6+
APIGatewayProxyResult,
7+
APIGatewayProxyResultV2,
8+
CloudFrontRequestEvent,
9+
CloudFrontRequestResult,
10+
Context,
11+
} from "aws-lambda";
12+
import type { WarmerEvent, WarmerResponse } from "../adapters/warmer-function";
313

414
export interface ResponseStream extends Writable {
515
getBufferedData(): Buffer;
@@ -25,3 +35,15 @@ declare global {
2535
}
2636
}
2737
}
38+
39+
export type AwsLambdaEvent =
40+
| APIGatewayProxyEventV2
41+
| CloudFrontRequestEvent
42+
| APIGatewayProxyEvent
43+
| WarmerEvent;
44+
45+
export type AwsLambdaReturn =
46+
| APIGatewayProxyResultV2
47+
| APIGatewayProxyResult
48+
| CloudFrontRequestResult
49+
| WarmerResponse;

packages/open-next/src/types/overrides.ts

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,6 @@
11
import type { Readable } from "node:stream";
22

33
import type { Meta } from "types/cache";
4-
5-
import type {
6-
APIGatewayProxyEvent,
7-
APIGatewayProxyEventV2,
8-
APIGatewayProxyResult,
9-
APIGatewayProxyResultV2,
10-
CloudFrontRequestEvent,
11-
CloudFrontRequestResult,
12-
} from "aws-lambda";
13-
import type { WarmerEvent, WarmerResponse } from "../adapters/warmer-function";
144
import type {
155
BaseEventOrResult,
166
BaseOverride,
@@ -238,15 +228,3 @@ type CDNPath = {
238228
export type CDNInvalidationHandler = BaseOverride & {
239229
invalidatePaths: (paths: CDNPath[]) => Promise<void>;
240230
};
241-
242-
export type AwsLambdaEvent =
243-
| APIGatewayProxyEventV2
244-
| CloudFrontRequestEvent
245-
| APIGatewayProxyEvent
246-
| WarmerEvent;
247-
248-
export type AwsLambdaReturn =
249-
| APIGatewayProxyResultV2
250-
| APIGatewayProxyResult
251-
| CloudFrontRequestResult
252-
| WarmerResponse;

packages/open-next/src/utils/overrides.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)