@opennextjs/aws 4.0.1 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -5,28 +5,62 @@ import { debug } from "../../logger.js";
|
|
|
5
5
|
//#override optimizeImage
|
|
6
6
|
export async function optimizeImage(headers, imageParams, nextConfig, handleRequest) {
|
|
7
7
|
const { isAbsolute, href } = imageParams;
|
|
8
|
-
// Signature for the fetch Image functions have changed in Next.js 15.5.16 and 16.2.5, so we need to check the version to determine how to call them.
|
|
9
|
-
const isAfter1625 = compareSemver(globalThis.nextVersion, ">=", "16.2.5");
|
|
10
|
-
const isAfter15516 = compareSemver(globalThis.nextVersion, ">=", "15.5.16") &&
|
|
11
|
-
compareSemver(globalThis.nextVersion, "<", "16");
|
|
12
|
-
const isNewArgsForInternalFetch = isAfter1625 || isAfter15516;
|
|
13
8
|
// The default value for maximumResponseBody is 50KB in Next code
|
|
14
9
|
// https://github.com/vercel/next.js/blob/0f38c522/packages/next/src/shared/lib/image-config.ts#L164
|
|
15
10
|
const maximumResponseBody = nextConfig.images?.maximumResponseBody || 50_000_000;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
11
|
+
/**
|
|
12
|
+
* fetchExternalImage signature varies across Next.js versions:
|
|
13
|
+
* <=v15.5.9: fetchExternalImage(href)
|
|
14
|
+
* v15.5.10–v15.x: fetchExternalImage(href, maximumResponseBody)
|
|
15
|
+
* v16.0.0–v16.1.4: fetchExternalImage(href, dangerouslyAllowLocalIP)
|
|
16
|
+
* v16.1.5+: fetchExternalImage(href, dangerouslyAllowLocalIP, maximumResponseBody)
|
|
17
|
+
*
|
|
18
|
+
* https://github.com/vercel/next.js/blob/bfe2ab4/packages/next/src/server/image-optimizer.ts#L711
|
|
19
|
+
*/
|
|
20
|
+
const callFetchExternalImage = () => {
|
|
21
|
+
const version = globalThis.nextVersion;
|
|
22
|
+
// v16.1.5+
|
|
23
|
+
if (compareSemver(version, ">=", "16.1.5")) {
|
|
24
|
+
return fetchExternalImage(href, false, maximumResponseBody);
|
|
25
|
+
}
|
|
26
|
+
// v16.0.0–v16.1.4
|
|
27
|
+
if (compareSemver(version, ">=", "16")) {
|
|
28
|
+
// @ts-expect-error - fetchExternalImage signature varies across Next.js versions
|
|
29
|
+
return fetchExternalImage(href, false);
|
|
30
|
+
}
|
|
31
|
+
// v15.5.10–v15.x
|
|
32
|
+
if (compareSemver(version, ">=", "15.5.10")) {
|
|
33
|
+
// @ts-expect-error - fetchExternalImage signature varies across Next.js versions
|
|
34
|
+
return fetchExternalImage(href, maximumResponseBody);
|
|
35
|
+
}
|
|
36
|
+
// <=v15.5.9
|
|
37
|
+
// @ts-expect-error - fetchExternalImage signature varies across Next.js versions
|
|
38
|
+
return fetchExternalImage(href);
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* fetchInternalImage signature varies across Next.js versions:
|
|
42
|
+
* <=v15.5.15, v16.0.0–v16.2.4: fetchInternalImage(href, req, res, handleRequest)
|
|
43
|
+
* v15.5.16–v15.x, v16.2.5+: fetchInternalImage(href, req, res, maximumResponseBody, handleRequest)
|
|
44
|
+
*/
|
|
45
|
+
const callFetchInternalImage = () => {
|
|
46
|
+
const version = globalThis.nextVersion;
|
|
47
|
+
const isV15WithNewArgs = compareSemver(version, ">=", "15.5.16") &&
|
|
48
|
+
compareSemver(version, "<", "16");
|
|
49
|
+
// v15.5.16–v15.x, v16.2.5+
|
|
50
|
+
if (isV15WithNewArgs || compareSemver(version, ">=", "16.2.5")) {
|
|
51
|
+
return fetchInternalImage(href,
|
|
24
52
|
// @ts-expect-error - It is supposed to be an IncomingMessage object, but only the headers are used.
|
|
25
53
|
{ headers }, {}, // res object is not necessary as it's not actually used.
|
|
26
|
-
maximumResponseBody, handleRequest)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
54
|
+
maximumResponseBody, handleRequest);
|
|
55
|
+
}
|
|
56
|
+
// <=v15.5.15, v16.0.0–v16.2.4
|
|
57
|
+
// @ts-expect-error - fetchInternalImage signature has changed in Next.js 15.5.16 and 16.2.5
|
|
58
|
+
return fetchInternalImage(href, { headers }, {}, // res object is not necessary as it's not actually used.
|
|
59
|
+
handleRequest);
|
|
60
|
+
};
|
|
61
|
+
const imageUpstream = isAbsolute
|
|
62
|
+
? await callFetchExternalImage()
|
|
63
|
+
: await callFetchInternalImage();
|
|
30
64
|
const result = await imageOptimizer(imageUpstream, imageParams,
|
|
31
65
|
// @ts-ignore
|
|
32
66
|
nextConfig, false);
|
|
@@ -287,6 +287,10 @@ export function fixDataPage(internalEvent, buildId) {
|
|
|
287
287
|
...internalEvent,
|
|
288
288
|
rawPath: newPath,
|
|
289
289
|
query,
|
|
290
|
+
headers: {
|
|
291
|
+
...internalEvent.headers,
|
|
292
|
+
"x-nextjs-data": "1",
|
|
293
|
+
},
|
|
290
294
|
url: new URL(`${newPath}${convertToQueryString(query)}`, internalEvent.url).href,
|
|
291
295
|
};
|
|
292
296
|
}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"access": "public"
|
|
4
4
|
},
|
|
5
5
|
"name": "@opennextjs/aws",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.3",
|
|
7
7
|
"bin": {
|
|
8
8
|
"open-next": "./dist/index.js"
|
|
9
9
|
},
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"typescript": "5.9.3"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
|
-
"next": ">=15.5.
|
|
63
|
+
"next": ">=15.5.18 <16 || >=16.2.6"
|
|
64
64
|
},
|
|
65
65
|
"bugs": {
|
|
66
66
|
"url": "https://github.com/opennextjs/opennextjs-aws/issues"
|