Skip to content

Commit 93b3d9d

Browse files
authored
Merge pull request #35 from Netacea/netacea-cloudfront-v7.0.1
Use @netacea/cloudfront-v7.0.1
2 parents 544be7b + 067f9e0 commit 93b3d9d

File tree

9 files changed

+69
-51
lines changed

9 files changed

+69
-51
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ jobs:
66
runs-on: ubuntu-latest
77
strategy:
88
matrix:
9-
node-version: [18, 20]
9+
node-version: [18, 20, 22]
1010
steps:
1111
- uses: actions/checkout@v3
1212
- name: Use Node.js ${{ matrix.node-version }}

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ A simple Cloudfront worker with Netacea built in.
77

88
## 💡 Getting Started
99

10+
Please use NodeJs 22 for both development and production deployments.
11+
1012
Install required dependencies:
1113

1214
```bash
@@ -21,9 +23,13 @@ npm ci
2123
If you're upgrading from a previous version of the Netacea CloudFront Worker Template,
2224
most of the time you should be able to upgrade by running `npm install --save @netacea/cloudfront@latest`.
2325

24-
However, if you are upgrading from v5 to v6, then please see the
26+
If you are upgrading from v5 to v6, then please see the
2527
[v5 to v6 upgrade guide.](./docs/upgrading_v5_to_v6.md)
2628

29+
For an upgrade from v6 to v7, see the
30+
[v6 to v7 upgrade guide.](./docs/upgrading_v6_to_v7.md)
31+
32+
2733
## 💻 Developing
2834

2935
If you need to extend or enhance the functionality of the Cloudfront Worker, the documentation can be found [here](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html).

docs/upgrading_v6_to_v7.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# ⬆ Netacea CloudFront v6 to v7 Upgrade Guide
2+
3+
This template has been updated to support the **v7** release of `@netacea/cloudfront`.
4+
This version introduces changes to the interface,
5+
requiring updates to how the module is used.
6+
7+
This guide walks you through the required changes and best practices when using v7.
8+
9+
You can install v7 using `npm install --save @netacea/cloudfront@7`.
10+
11+
## What's Changed?
12+
13+
### 1. New Request Handler Method
14+
15+
Requests should now be processed by the `handleRequest` method on the
16+
Netacea worker. This is named to be consistent with the
17+
new `handleResponse` method - see below.
18+
19+
**Before (v6):**
20+
```ts
21+
const netaceaResponse = await worker.run(event)
22+
```
23+
24+
**After (v7):**
25+
```ts
26+
const netaceaResponse = await worker.handleRequest(event)
27+
```
28+
29+
### 2. New Response Handler Method
30+
31+
Responses should now be processed by the `handleResponse` method on the
32+
Netacea worker. This new method is asynchronous and therefore must be waited.
33+
This updated interface allows the worker to use asynchronous APIs,
34+
such as the encryption methods available in NodeJs, during the response handler
35+
phase - which was not possible with the old interface.
36+
37+
**Before (v6):**
38+
```ts
39+
worker.addNetaceaCookiesToResponse(event)
40+
void worker.ingest(event)
41+
```
42+
43+
**After (v7):**
44+
```ts
45+
await worker.handleResponse(event)
46+
```

package-lock.json

Lines changed: 4 additions & 34 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"xo": "^0.55.0"
3232
},
3333
"dependencies": {
34-
"@netacea/cloudfront": "^6.0.78"
34+
"@netacea/cloudfront": "^7.0.1"
3535
},
3636
"xo": {
3737
"space": true,

src/NetaceaUnified.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export const viewerRequestHandler: Handler = async (
5050
context: Context,
5151
callback: Callback<CloudFrontRequest | CloudFrontResultResponse>,
5252
): Promise<void> => {
53-
const netaceaResponse = await worker.run(event)
53+
const netaceaResponse = await worker.handleRequest(event)
5454

5555
if (netaceaResponse.respondWith !== undefined) {
5656
callback(null, netaceaResponse.respondWith)
@@ -66,8 +66,7 @@ export const originResponseHandler: Handler = async (
6666
callback: Callback<CloudFrontResponse>,
6767
): Promise<void> => {
6868
if (Number(event.Records[0].cf.response.status) >= 400) {
69-
worker.addNetaceaCookiesToResponse(event)
70-
void worker.ingest(event)
69+
await worker.handleResponse(event)
7170
}
7271

7372
callback(null, event.Records[0].cf.response)
@@ -79,8 +78,7 @@ export const viewerResponseHandler: Handler = async (
7978
callback: Callback<CloudFrontResponse>,
8079
): Promise<void> => {
8180
if (Number(event.Records[0].cf.response.status) < 400) {
82-
worker.addNetaceaCookiesToResponse(event)
83-
void worker.ingest(event)
81+
await worker.handleResponse(event)
8482
}
8583

8684
callback(null, event.Records[0].cf.response)

src/OriginResponse.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,9 @@ export const handler: Handler = async (
1919
callback: Callback<CloudFrontResponse>,
2020
): Promise<void> => {
2121
context.callbackWaitsForEmptyEventLoop = false
22-
// Your code here
23-
// These should be ran at the very end of the ViewerResponse, just before calling the callback.
22+
2423
if (Number(event.Records[0].cf.response.status) >= 400) {
25-
worker.addNetaceaCookiesToResponse(event)
26-
void worker.ingest(event)
24+
await worker.handleResponse(event)
2725
}
2826

2927
callback(null, event.Records[0].cf.response)

src/ViewerRequest.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ export const handler: Handler = async (
2020
callback: Callback<CloudFrontRequest | CloudFrontResultResponse>,
2121
): Promise<void> => {
2222
context.callbackWaitsForEmptyEventLoop = false
23-
const netaceaResponse = await worker.run(event)
23+
24+
const netaceaResponse = await worker.handleRequest(event)
25+
2426
if (netaceaResponse.respondWith !== undefined) {
2527
callback(null, netaceaResponse.respondWith)
2628
return

src/ViewerResponse.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,9 @@ export const handler: Handler = async (
1919
callback: Callback<CloudFrontResponse>,
2020
): Promise<void> => {
2121
context.callbackWaitsForEmptyEventLoop = false
22-
// Your code here
23-
// These should be ran at the very end of the ViewerResponse, just before calling the callback.
22+
2423
if (Number(event.Records[0].cf.response.status) < 400) {
25-
worker.addNetaceaCookiesToResponse(event)
26-
void worker.ingest(event)
24+
await worker.handleResponse(event)
2725
}
2826

2927
callback(null, event.Records[0].cf.response)

0 commit comments

Comments
 (0)