@opennextjs/aws 3.2.1 → 3.2.2

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.
Files changed (135) hide show
  1. package/README.md +15 -1
  2. package/dist/adapters/cache.d.ts +0 -23
  3. package/dist/adapters/cache.js +10 -12
  4. package/dist/adapters/config/index.js +1 -1
  5. package/dist/adapters/config/util.js +2 -2
  6. package/dist/adapters/dynamo-provider.js +3 -5
  7. package/dist/adapters/edge-adapter.d.ts +0 -3
  8. package/dist/adapters/edge-adapter.js +43 -38
  9. package/dist/adapters/image-optimization-adapter.js +4 -4
  10. package/dist/adapters/logger.d.ts +0 -3
  11. package/dist/adapters/logger.js +3 -5
  12. package/dist/adapters/middleware.js +42 -18
  13. package/dist/adapters/plugins/image-optimization/image-optimization.d.ts +0 -3
  14. package/dist/adapters/plugins/image-optimization/image-optimization.replacement.d.ts +0 -3
  15. package/dist/adapters/revalidate.js +2 -2
  16. package/dist/adapters/server-adapter.d.ts +0 -3
  17. package/dist/adapters/server-adapter.js +3 -1
  18. package/dist/adapters/util.js +2 -2
  19. package/dist/build/bundleNextServer.d.ts +3 -1
  20. package/dist/build/bundleNextServer.js +3 -3
  21. package/dist/build/compileConfig.js +1 -1
  22. package/dist/build/copyTracedFiles.js +14 -25
  23. package/dist/build/createAssets.js +35 -26
  24. package/dist/build/createImageOptimizationBundle.js +1 -1
  25. package/dist/build/createMiddleware.js +7 -2
  26. package/dist/build/createRevalidationBundle.js +1 -1
  27. package/dist/build/createServerBundle.js +23 -29
  28. package/dist/build/createWarmerBundle.js +1 -1
  29. package/dist/build/edge/createEdgeBundle.d.ts +7 -3
  30. package/dist/build/edge/createEdgeBundle.js +12 -5
  31. package/dist/build/generateOutput.js +7 -13
  32. package/dist/build/helper.d.ts +22 -4
  33. package/dist/build/helper.js +26 -12
  34. package/dist/build/installDeps.js +1 -1
  35. package/dist/build/patch/patchedAsyncStorage.js +1 -1
  36. package/dist/build/utils.js +3 -2
  37. package/dist/build/validateConfig.js +1 -0
  38. package/dist/core/createGenericHandler.d.ts +2 -4
  39. package/dist/core/createGenericHandler.js +1 -2
  40. package/dist/core/createMainHandler.d.ts +0 -17
  41. package/dist/core/createMainHandler.js +5 -4
  42. package/dist/core/edgeFunctionHandler.d.ts +1 -51
  43. package/dist/core/patchAsyncStorage.js +5 -6
  44. package/dist/core/requestHandler.js +98 -89
  45. package/dist/core/require-hooks.js +8 -7
  46. package/dist/core/resolve.d.ts +13 -7
  47. package/dist/core/resolve.js +29 -35
  48. package/dist/core/routing/cacheInterceptor.js +12 -13
  49. package/dist/core/routing/i18n/accept-header.js +3 -2
  50. package/dist/core/routing/matcher.d.ts +2 -4
  51. package/dist/core/routing/matcher.js +17 -26
  52. package/dist/core/routing/middleware.js +17 -16
  53. package/dist/core/routing/util.d.ts +0 -13
  54. package/dist/core/routing/util.js +25 -87
  55. package/dist/core/routingHandler.d.ts +2 -0
  56. package/dist/core/routingHandler.js +30 -12
  57. package/dist/core/util.js +5 -3
  58. package/dist/helpers/withSST.d.ts +1 -1
  59. package/dist/http/openNextResponse.d.ts +5 -9
  60. package/dist/http/openNextResponse.js +29 -31
  61. package/dist/http/request.d.ts +0 -3
  62. package/dist/http/request.js +4 -2
  63. package/dist/http/util.d.ts +1 -1
  64. package/dist/http/util.js +8 -12
  65. package/dist/minimize-js.js +19 -19
  66. package/dist/overrides/converters/aws-apigw-v1.d.ts +2 -2
  67. package/dist/overrides/converters/aws-apigw-v1.js +2 -1
  68. package/dist/overrides/converters/aws-apigw-v2.d.ts +2 -2
  69. package/dist/overrides/converters/aws-apigw-v2.js +6 -7
  70. package/dist/overrides/converters/aws-cloudfront.d.ts +2 -2
  71. package/dist/overrides/converters/aws-cloudfront.js +11 -30
  72. package/dist/overrides/converters/dummy.d.ts +1 -1
  73. package/dist/overrides/converters/edge.d.ts +2 -1
  74. package/dist/overrides/converters/edge.js +11 -15
  75. package/dist/overrides/converters/node.d.ts +1 -1
  76. package/dist/overrides/converters/node.js +1 -1
  77. package/dist/overrides/converters/sqs-revalidate.d.ts +1 -1
  78. package/dist/overrides/imageLoader/dummy.d.ts +1 -1
  79. package/dist/overrides/imageLoader/host.d.ts +1 -1
  80. package/dist/overrides/imageLoader/s3.d.ts +1 -1
  81. package/dist/overrides/imageLoader/s3.js +1 -1
  82. package/dist/overrides/incrementalCache/dummy.d.ts +1 -1
  83. package/dist/overrides/incrementalCache/s3-lite.d.ts +1 -1
  84. package/dist/overrides/incrementalCache/s3-lite.js +15 -19
  85. package/dist/overrides/incrementalCache/s3.d.ts +1 -1
  86. package/dist/overrides/incrementalCache/s3.js +1 -1
  87. package/dist/overrides/originResolver/dummy.d.ts +1 -1
  88. package/dist/overrides/originResolver/pattern-env.d.ts +1 -1
  89. package/dist/overrides/originResolver/pattern-env.js +10 -11
  90. package/dist/overrides/proxyExternalRequest/dummy.d.ts +3 -0
  91. package/dist/overrides/proxyExternalRequest/dummy.js +7 -0
  92. package/dist/overrides/proxyExternalRequest/fetch.d.ts +3 -0
  93. package/dist/overrides/proxyExternalRequest/fetch.js +25 -0
  94. package/dist/overrides/proxyExternalRequest/node.d.ts +3 -0
  95. package/dist/overrides/proxyExternalRequest/node.js +67 -0
  96. package/dist/overrides/queue/dummy.d.ts +1 -1
  97. package/dist/overrides/queue/sqs-lite.d.ts +1 -1
  98. package/dist/overrides/queue/sqs-lite.js +7 -9
  99. package/dist/overrides/queue/sqs.d.ts +1 -1
  100. package/dist/overrides/queue/sqs.js +1 -1
  101. package/dist/overrides/tagCache/constants.js +2 -2
  102. package/dist/overrides/tagCache/dummy.d.ts +1 -1
  103. package/dist/overrides/tagCache/dynamodb-lite.d.ts +1 -1
  104. package/dist/overrides/tagCache/dynamodb-lite.js +10 -12
  105. package/dist/overrides/tagCache/dynamodb.d.ts +1 -1
  106. package/dist/overrides/tagCache/dynamodb.js +2 -2
  107. package/dist/overrides/warmer/aws-lambda.d.ts +1 -1
  108. package/dist/overrides/warmer/dummy.d.ts +1 -1
  109. package/dist/overrides/wrappers/aws-lambda-streaming.d.ts +2 -2
  110. package/dist/overrides/wrappers/aws-lambda.d.ts +2 -2
  111. package/dist/overrides/wrappers/cloudflare.d.ts +2 -1
  112. package/dist/overrides/wrappers/cloudflare.js +20 -2
  113. package/dist/overrides/wrappers/dummy.d.ts +2 -2
  114. package/dist/overrides/wrappers/node.d.ts +2 -2
  115. package/dist/overrides/wrappers/node.js +3 -3
  116. package/dist/plugins/edge.js +6 -5
  117. package/dist/plugins/replacement.js +2 -2
  118. package/dist/plugins/resolve.d.ts +3 -1
  119. package/dist/plugins/resolve.js +4 -1
  120. package/dist/types/aws-lambda.d.ts +2 -5
  121. package/dist/types/cache.d.ts +0 -2
  122. package/dist/types/global.d.ts +188 -0
  123. package/dist/types/next-types.d.ts +1 -3
  124. package/dist/types/open-next.d.ts +15 -41
  125. package/dist/types/overrides.d.ts +87 -0
  126. package/dist/utils/promise.d.ts +3 -0
  127. package/dist/utils/promise.js +44 -0
  128. package/dist/utils/stream.d.ts +0 -1
  129. package/package.json +2 -2
  130. package/dist/overrides/incrementalCache/types.d.ts +0 -34
  131. package/dist/overrides/queue/types.d.ts +0 -12
  132. package/dist/overrides/tagCache/types.d.ts +0 -11
  133. package/dist/overrides/tagCache/types.js +0 -1
  134. /package/dist/{overrides/incrementalCache/types.js → types/global.js} +0 -0
  135. /package/dist/{overrides/queue/types.js → types/overrides.js} +0 -0
@@ -13,8 +13,10 @@ export class IncomingMessage extends http.IncomingMessage {
13
13
  end: Function.prototype,
14
14
  destroy: Function.prototype,
15
15
  });
16
- if (typeof headers["content-length"] === "undefined") {
17
- headers["content-length"] = Buffer.byteLength(body).toString();
16
+ // Set the content length when there is a body.
17
+ // See https://httpwg.org/specs/rfc9110.html#field.content-length
18
+ if (body) {
19
+ headers["content-length"] ??= String(Buffer.byteLength(body));
18
20
  }
19
21
  Object.assign(this, {
20
22
  ip: remoteAddress,
@@ -1,4 +1,4 @@
1
1
  import type http from "node:http";
2
2
  export declare const parseHeaders: (headers?: http.OutgoingHttpHeader[] | http.OutgoingHttpHeaders) => Record<string, string>;
3
3
  export declare const convertHeader: (header: http.OutgoingHttpHeader) => string;
4
- export declare function parseCookies(cookies?: string | string[]): string[] | undefined;
4
+ export declare function parseCookies(cookies: string | string[] | null | undefined): string[];
package/dist/http/util.js CHANGED
@@ -7,9 +7,7 @@ export const parseHeaders = (headers) => {
7
7
  if (value === undefined) {
8
8
  continue;
9
9
  }
10
- else {
11
- result[key.toLowerCase()] = convertHeader(value);
12
- }
10
+ result[key.toLowerCase()] = convertHeader(value);
13
11
  }
14
12
  return result;
15
13
  };
@@ -17,18 +15,16 @@ export const convertHeader = (header) => {
17
15
  if (typeof header === "string") {
18
16
  return header;
19
17
  }
20
- else if (Array.isArray(header)) {
18
+ if (Array.isArray(header)) {
21
19
  return header.join(",");
22
20
  }
23
- else {
24
- return String(header);
25
- }
21
+ return String(header);
26
22
  };
27
23
  export function parseCookies(cookies) {
28
- if (!cookies)
29
- return;
30
- if (typeof cookies === "string") {
31
- return cookies.split(/(?<!Expires=\w+),/i).map((c) => c.trim());
24
+ if (!cookies) {
25
+ return [];
32
26
  }
33
- return cookies;
27
+ return typeof cookies === "string"
28
+ ? cookies.split(/(?<!Expires=\w+),/i).map((c) => c.trim())
29
+ : cookies;
34
30
  }
@@ -6,9 +6,9 @@ import fs from "node:fs/promises";
6
6
  import path from "node:path";
7
7
  import minify from "@node-minify/core";
8
8
  import terser from "@node-minify/terser";
9
- var failed_files = [];
10
- var total_files = 0;
11
- var options = {};
9
+ const failed_files = [];
10
+ let total_files = 0;
11
+ const options = {};
12
12
  const promiseSeries = async (tasks, initial) => {
13
13
  if (!Array.isArray(tasks)) {
14
14
  return Promise.reject(new TypeError("promise.series only accepts an array of functions"));
@@ -40,12 +40,12 @@ const minifyJSON = async (file) => {
40
40
  try {
41
41
  if (options.compress_json || options.packagejson) {
42
42
  total_files++;
43
- var is_package_json = file.indexOf("package.json") > -1;
44
- var data = await fs.readFile(file, "utf8");
45
- var json = JSON.parse(data);
46
- var new_json = {};
43
+ const is_package_json = file.indexOf("package.json") > -1;
44
+ const data = await fs.readFile(file, "utf8");
45
+ const json = JSON.parse(data);
46
+ let new_json = {};
47
47
  if (options.packagejson && is_package_json) {
48
- var { name, version, bin, main, binary, engines } = json;
48
+ const { name, version, bin, main, binary, engines } = json;
49
49
  new_json = { name, version };
50
50
  if (bin)
51
51
  new_json.bin = bin;
@@ -66,14 +66,14 @@ const minifyJSON = async (file) => {
66
66
  //process.stdout.write(".");
67
67
  };
68
68
  const walk = async (currentDirPath) => {
69
- var js_files = [];
70
- var json_files = [];
71
- var dirs = [];
72
- var current_dirs = await fs.readdir(currentDirPath);
69
+ const js_files = [];
70
+ const json_files = [];
71
+ const dirs = [];
72
+ const current_dirs = await fs.readdir(currentDirPath);
73
73
  for (const name of current_dirs) {
74
- var filePath = path.join(currentDirPath, name);
75
- var stat = await fs.stat(filePath);
76
- var is_bin = /\.bin$/;
74
+ const filePath = path.join(currentDirPath, name);
75
+ const stat = await fs.stat(filePath);
76
+ const is_bin = /\.bin$/;
77
77
  if (stat.isFile()) {
78
78
  if (filePath.substr(-5) === ".json")
79
79
  json_files.push(filePath);
@@ -84,8 +84,8 @@ const walk = async (currentDirPath) => {
84
84
  dirs.push(filePath);
85
85
  }
86
86
  }
87
- var js_promise = Promise.all(js_files.map((f) => minifyJS(f)));
88
- var json_promise = Promise.all(json_files.map((f) => minifyJSON(f)));
87
+ const js_promise = Promise.all(js_files.map((f) => minifyJS(f)));
88
+ const json_promise = Promise.all(json_files.map((f) => minifyJSON(f)));
89
89
  await Promise.all([js_promise, json_promise]);
90
90
  await promiseSeries(dirs.map((dir) => () => walk(dir)));
91
91
  };
@@ -96,7 +96,7 @@ export async function minifyAll(dir, opts) {
96
96
  //process.stdout.write(".\n");
97
97
  //console.log("Total found files: " + total_files);
98
98
  if (failed_files.length) {
99
- console.log(`\n\nFailed to minify files:`);
100
- failed_files.forEach((f) => console.log("\t" + f));
99
+ console.log("\n\nFailed to minify files:");
100
+ failed_files.forEach((f) => console.log(`\t${f}`));
101
101
  }
102
102
  }
@@ -1,3 +1,3 @@
1
- import type { Converter, InternalEvent, InternalResult } from "../../types/open-next";
2
- declare const _default: Converter<InternalEvent, InternalResult>;
1
+ import type { Converter } from "../../types/overrides";
2
+ declare const _default: Converter;
3
3
  export default _default;
@@ -52,7 +52,8 @@ async function convertFromAPIGatewayProxyEvent(event) {
52
52
  query: removeUndefinedFromQuery(event.multiValueQueryStringParameters ?? {}),
53
53
  cookies: event.multiValueHeaders?.cookie?.reduce((acc, cur) => {
54
54
  const [key, value] = cur.split("=");
55
- return { ...acc, [key]: value };
55
+ acc[key] = value;
56
+ return acc;
56
57
  }, {}) ?? {},
57
58
  };
58
59
  }
@@ -1,3 +1,3 @@
1
- import type { Converter, InternalEvent, InternalResult } from "../../types/open-next";
2
- declare const _default: Converter<InternalEvent, InternalResult>;
1
+ import type { Converter } from "../../types/overrides";
2
+ declare const _default: Converter;
3
3
  export default _default;
@@ -32,21 +32,19 @@ function normalizeAPIGatewayProxyEventV2Body(event) {
32
32
  if (Buffer.isBuffer(body)) {
33
33
  return body;
34
34
  }
35
- else if (typeof body === "string") {
35
+ if (typeof body === "string") {
36
36
  return Buffer.from(body, isBase64Encoded ? "base64" : "utf8");
37
37
  }
38
- else if (typeof body === "object") {
38
+ if (typeof body === "object") {
39
39
  return Buffer.from(JSON.stringify(body));
40
40
  }
41
- else {
42
- return Buffer.from("", "utf8");
43
- }
41
+ return Buffer.from("", "utf8");
44
42
  }
45
43
  function normalizeAPIGatewayProxyEventV2Headers(event) {
46
44
  const { headers: rawHeaders, cookies } = event;
47
45
  const headers = {};
48
46
  if (Array.isArray(cookies)) {
49
- headers["cookie"] = cookies.join("; ");
47
+ headers.cookie = cookies.join("; ");
50
48
  }
51
49
  for (const [key, value] of Object.entries(rawHeaders || {})) {
52
50
  headers[key.toLowerCase()] = value;
@@ -66,7 +64,8 @@ async function convertFromAPIGatewayProxyEventV2(event) {
66
64
  query: removeUndefinedFromQuery(convertToQuery(rawQueryString)),
67
65
  cookies: event.cookies?.reduce((acc, cur) => {
68
66
  const [key, value] = cur.split("=");
69
- return { ...acc, [key]: value };
67
+ acc[key] = value;
68
+ return acc;
70
69
  }, {}) ?? {},
71
70
  };
72
71
  }
@@ -1,3 +1,3 @@
1
- import type { Converter, InternalEvent, InternalResult } from "../../types/open-next";
2
- declare const _default: Converter<InternalEvent, InternalResult>;
1
+ import type { Converter } from "../../types/overrides";
2
+ declare const _default: Converter;
3
3
  export default _default;
@@ -1,8 +1,8 @@
1
1
  import { parseCookies } from "../../http/util";
2
2
  import { fromReadableStream } from "../../utils/stream";
3
3
  import { debug } from "../../adapters/logger";
4
- import { convertRes, convertToQuery, convertToQueryString, createServerResponse, proxyRequest, } from "../../core/routing/util";
5
- const CloudFrontBlacklistedHeaders = [
4
+ import { convertToQuery, convertToQueryString, } from "../../core/routing/util";
5
+ const cloudfrontBlacklistedHeaders = [
6
6
  // Disallowed headers, see: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/edge-function-restrictions-all.html#function-restrictions-disallowed-headers
7
7
  "connection",
8
8
  "expect",
@@ -67,8 +67,9 @@ async function convertFromCloudFrontRequestEvent(event) {
67
67
  remoteAddress: clientIp,
68
68
  query: convertToQuery(querystring),
69
69
  cookies: headers.cookie?.reduce((acc, cur) => {
70
- const { key, value } = cur;
71
- return { ...acc, [key ?? ""]: value };
70
+ const { key = "", value } = cur;
71
+ acc[key] = value;
72
+ return acc;
72
73
  }, {}) ?? {},
73
74
  };
74
75
  }
@@ -76,18 +77,15 @@ function convertToCloudfrontHeaders(headers, directResponse) {
76
77
  const cloudfrontHeaders = {};
77
78
  Object.entries(headers)
78
79
  .map(([key, value]) => [key.toLowerCase(), value])
79
- .filter(([key]) => !CloudFrontBlacklistedHeaders.some((header) => typeof header === "string" ? header === key : header.test(key)) &&
80
+ .filter(([key]) => !cloudfrontBlacklistedHeaders.some((header) => typeof header === "string" ? header === key : header.test(key)) &&
80
81
  // Only remove read-only headers when directly responding in lambda@edge
81
82
  (directResponse ? !cloudfrontReadOnlyHeaders.includes(key) : true))
82
83
  .forEach(([key, value]) => {
83
84
  if (key === "set-cookie") {
84
- const cookies = parseCookies(`${value}`);
85
- if (cookies) {
86
- cloudfrontHeaders[key] = cookies.map((cookie) => ({
87
- key,
88
- value: cookie,
89
- }));
90
- }
85
+ cloudfrontHeaders[key] = parseCookies(`${value}`).map((cookie) => ({
86
+ key,
87
+ value: cookie,
88
+ }));
91
89
  return;
92
90
  }
93
91
  cloudfrontHeaders[key] = [
@@ -104,25 +102,8 @@ async function convertToCloudFrontRequestResult(result, originalRequest) {
104
102
  const { method, clientIp, origin } = originalRequest.Records[0].cf.request;
105
103
  const responseHeaders = result.internalEvent.headers;
106
104
  // Handle external rewrite
107
- if (result.isExternalRewrite) {
108
- const serverResponse = createServerResponse(result.internalEvent, {});
109
- await proxyRequest(result.internalEvent, serverResponse);
110
- const externalResult = convertRes(serverResponse);
111
- const body = await fromReadableStream(externalResult.body, externalResult.isBase64Encoded);
112
- const cloudfrontResult = {
113
- status: externalResult.statusCode.toString(),
114
- statusDescription: "OK",
115
- headers: convertToCloudfrontHeaders(externalResult.headers, true),
116
- bodyEncoding: externalResult.isBase64Encoded
117
- ? "base64"
118
- : "text",
119
- body,
120
- };
121
- debug("externalResult", cloudfrontResult);
122
- return cloudfrontResult;
123
- }
124
105
  let customOrigin = origin?.custom;
125
- let host = responseHeaders["host"] ?? responseHeaders["Host"];
106
+ let host = responseHeaders.host ?? responseHeaders.Host;
126
107
  if (result.origin) {
127
108
  customOrigin = {
128
109
  ...customOrigin,
@@ -1,4 +1,4 @@
1
- import type { Converter } from "../../types/open-next";
1
+ import type { Converter } from "../../types/overrides";
2
2
  type DummyEventOrResult = {
3
3
  type: "dummy";
4
4
  original: any;
@@ -1,4 +1,5 @@
1
- import type { Converter, InternalEvent, InternalResult } from "../../types/open-next";
1
+ import type { InternalEvent, InternalResult } from "../../types/open-next";
2
+ import type { Converter } from "../../types/overrides";
2
3
  import type { MiddlewareOutputEvent } from "../../core/routingHandler";
3
4
  declare global {
4
5
  var __dangerous_ON_edge_converter_returns_request: boolean | undefined;
@@ -5,7 +5,7 @@ const converter = {
5
5
  const searchParams = new URL(event.url).searchParams;
6
6
  const query = {};
7
7
  for (const [key, value] of searchParams.entries()) {
8
- if (query[key]) {
8
+ if (key in query) {
9
9
  if (Array.isArray(query[key])) {
10
10
  query[key].push(value);
11
11
  }
@@ -26,19 +26,17 @@ const converter = {
26
26
  const rawPath = new URL(event.url).pathname;
27
27
  const method = event.method;
28
28
  const shouldHaveBody = method !== "GET" && method !== "HEAD";
29
+ const cookies = Object.fromEntries(parseCookies(event.headers.get("cookie")).map((cookie) => cookie.split("=")));
29
30
  return {
30
31
  type: "core",
31
32
  method,
32
33
  rawPath,
33
34
  url: event.url,
34
35
  body: shouldHaveBody ? Buffer.from(body) : undefined,
35
- headers: headers,
36
+ headers,
36
37
  remoteAddress: event.headers.get("x-forwarded-for") ?? "::1",
37
38
  query,
38
- cookies: Object.fromEntries(parseCookies(event.headers.get("cookie") ?? "")?.map((cookie) => {
39
- const [key, value] = cookie.split("=");
40
- return [key, value];
41
- }) ?? []),
39
+ cookies,
42
40
  };
43
41
  },
44
42
  convertTo: async (result) => {
@@ -75,16 +73,14 @@ const converter = {
75
73
  cf: cfCache,
76
74
  });
77
75
  }
78
- else {
79
- const headers = new Headers();
80
- for (const [key, value] of Object.entries(result.headers)) {
81
- headers.set(key, Array.isArray(value) ? value.join(",") : value);
82
- }
83
- return new Response(result.body, {
84
- status: result.statusCode,
85
- headers: headers,
86
- });
76
+ const headers = new Headers();
77
+ for (const [key, value] of Object.entries(result.headers)) {
78
+ headers.set(key, Array.isArray(value) ? value.join(",") : value);
87
79
  }
80
+ return new Response(result.body, {
81
+ status: result.statusCode,
82
+ headers: headers,
83
+ });
88
84
  },
89
85
  name: "edge",
90
86
  };
@@ -1,3 +1,3 @@
1
- import type { Converter } from "../../types/open-next";
1
+ import type { Converter } from "../../types/overrides";
2
2
  declare const converter: Converter;
3
3
  export default converter;
@@ -28,7 +28,7 @@ const converter = {
28
28
  req.socket.remoteAddress ??
29
29
  "::1",
30
30
  query,
31
- cookies: Object.fromEntries(parseCookies(req.headers["cookie"])?.map((cookie) => {
31
+ cookies: Object.fromEntries(parseCookies(req.headers.cookie)?.map((cookie) => {
32
32
  const [key, value] = cookie.split("=");
33
33
  return [key, value];
34
34
  }) ?? []),
@@ -1,4 +1,4 @@
1
- import type { Converter } from "../../types/open-next";
1
+ import type { Converter } from "../../types/overrides";
2
2
  import type { RevalidateEvent } from "../../adapters/revalidate";
3
3
  declare const converter: Converter<RevalidateEvent, RevalidateEvent>;
4
4
  export default converter;
@@ -1,3 +1,3 @@
1
- import type { ImageLoader } from "../../types/open-next";
1
+ import type { ImageLoader } from "../../types/overrides";
2
2
  declare const dummyLoader: ImageLoader;
3
3
  export default dummyLoader;
@@ -1,3 +1,3 @@
1
- import type { ImageLoader } from "../../types/open-next";
1
+ import type { ImageLoader } from "../../types/overrides";
2
2
  declare const hostLoader: ImageLoader;
3
3
  export default hostLoader;
@@ -1,3 +1,3 @@
1
- import type { ImageLoader } from "../../types/open-next";
1
+ import type { ImageLoader } from "../../types/overrides";
2
2
  declare const s3Loader: ImageLoader;
3
3
  export default s3Loader;
@@ -16,7 +16,7 @@ const s3Loader = {
16
16
  const response = await s3Client.send(new GetObjectCommand({
17
17
  Bucket: BUCKET_NAME,
18
18
  Key: keyPrefix
19
- ? keyPrefix + "/" + key.replace(/^\//, "")
19
+ ? `${keyPrefix}/${key.replace(/^\//, "")}`
20
20
  : key.replace(/^\//, ""),
21
21
  }));
22
22
  const body = response.Body;
@@ -1,3 +1,3 @@
1
- import type { IncrementalCache } from "./types";
1
+ import type { IncrementalCache } from "../../types/overrides";
2
2
  declare const dummyIncrementalCache: IncrementalCache;
3
3
  export default dummyIncrementalCache;
@@ -1,3 +1,3 @@
1
- import type { IncrementalCache } from "./types";
1
+ import type { IncrementalCache } from "../../types/overrides";
2
2
  declare const incrementalCache: IncrementalCache;
3
3
  export default incrementalCache;
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
+ import path from "node:path";
2
3
  import { AwsClient } from "aws4fetch";
3
- import path from "path";
4
4
  import { IgnorableError, RecoverableError } from "../../utils/error";
5
5
  import { customFetchClient } from "../../utils/fetch";
6
6
  import { parseNumberFromEnv } from "../../adapters/util";
@@ -10,16 +10,14 @@ const getAwsClient = () => {
10
10
  if (awsClient) {
11
11
  return awsClient;
12
12
  }
13
- else {
14
- awsClient = new AwsClient({
15
- accessKeyId: process.env.AWS_ACCESS_KEY_ID,
16
- secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
17
- sessionToken: process.env.AWS_SESSION_TOKEN,
18
- region: CACHE_BUCKET_REGION,
19
- retries: parseNumberFromEnv(process.env.AWS_SDK_S3_MAX_ATTEMPTS),
20
- });
21
- return awsClient;
22
- }
13
+ awsClient = new AwsClient({
14
+ accessKeyId: process.env.AWS_ACCESS_KEY_ID,
15
+ secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
16
+ sessionToken: process.env.AWS_SESSION_TOKEN,
17
+ region: CACHE_BUCKET_REGION,
18
+ retries: parseNumberFromEnv(process.env.AWS_SDK_S3_MAX_ATTEMPTS),
19
+ });
20
+ return awsClient;
23
21
  };
24
22
  const awsFetch = async (key, options) => {
25
23
  const { CACHE_BUCKET_REGION, CACHE_BUCKET_NAME } = process.env;
@@ -39,16 +37,14 @@ const incrementalCache = {
39
37
  if (result.status === 404) {
40
38
  throw new IgnorableError("Not found");
41
39
  }
42
- else if (result.status !== 200) {
40
+ if (result.status !== 200) {
43
41
  throw new RecoverableError(`Failed to get cache: ${result.status}`);
44
42
  }
45
- else {
46
- const cacheData = await result.json();
47
- return {
48
- value: cacheData,
49
- lastModified: new Date(result.headers.get("last-modified") ?? "").getTime(),
50
- };
51
- }
43
+ const cacheData = await result.json();
44
+ return {
45
+ value: cacheData,
46
+ lastModified: new Date(result.headers.get("last-modified") ?? "").getTime(),
47
+ };
52
48
  },
53
49
  async set(key, value, isFetch) {
54
50
  const response = await awsFetch(buildS3Key(key, isFetch ? "fetch" : "cache"), {
@@ -1,3 +1,3 @@
1
- import type { IncrementalCache } from "./types";
1
+ import type { IncrementalCache } from "../../types/overrides";
2
2
  declare const incrementalCache: IncrementalCache;
3
3
  export default incrementalCache;
@@ -1,5 +1,5 @@
1
+ import path from "node:path";
1
2
  import { DeleteObjectCommand, GetObjectCommand, PutObjectCommand, S3Client, } from "@aws-sdk/client-s3";
2
- import path from "path";
3
3
  import { awsLogger } from "../../adapters/logger";
4
4
  import { parseNumberFromEnv } from "../../adapters/util";
5
5
  const { CACHE_BUCKET_REGION, CACHE_BUCKET_KEY_PREFIX, NEXT_BUILD_ID, CACHE_BUCKET_NAME, } = process.env;
@@ -1,3 +1,3 @@
1
- import type { OriginResolver } from "../../types/open-next";
1
+ import type { OriginResolver } from "../../types/overrides";
2
2
  declare const dummyOriginResolver: OriginResolver;
3
3
  export default dummyOriginResolver;
@@ -1,3 +1,3 @@
1
- import type { OriginResolver } from "../../types/open-next";
1
+ import type { OriginResolver } from "../../types/overrides";
2
2
  declare const envLoader: OriginResolver;
3
3
  export default envLoader;
@@ -9,24 +9,23 @@ const envLoader = {
9
9
  // Convert cloudfront pattern to regex
10
10
  return new RegExp(
11
11
  // transform glob pattern to regex
12
- "/" +
13
- pattern
14
- .replace(/\*\*/g, "(.*)")
15
- .replace(/\*/g, "([^/]*)")
16
- .replace(/\//g, "\\/")
17
- .replace(/\?/g, ".")).test(_path);
12
+ `/${pattern
13
+ .replace(/\*\*/g, "(.*)")
14
+ .replace(/\*/g, "([^/]*)")
15
+ .replace(/\//g, "\\/")
16
+ .replace(/\?/g, ".")}`).test(_path);
18
17
  })) {
19
18
  debug("Using origin", key, value.patterns);
20
19
  return origin[key];
21
20
  }
22
21
  }
23
- if (_path.startsWith("/_next/image") && origin["imageOptimizer"]) {
22
+ if (_path.startsWith("/_next/image") && origin.imageOptimizer) {
24
23
  debug("Using origin", "imageOptimizer", _path);
25
- return origin["imageOptimizer"];
24
+ return origin.imageOptimizer;
26
25
  }
27
- if (origin["default"]) {
28
- debug("Using default origin", origin["default"], _path);
29
- return origin["default"];
26
+ if (origin.default) {
27
+ debug("Using default origin", origin.default, _path);
28
+ return origin.default;
30
29
  }
31
30
  return false;
32
31
  }
@@ -0,0 +1,3 @@
1
+ import type { ProxyExternalRequest } from "../../types/overrides";
2
+ declare const DummyProxyExternalRequest: ProxyExternalRequest;
3
+ export default DummyProxyExternalRequest;
@@ -0,0 +1,7 @@
1
+ const DummyProxyExternalRequest = {
2
+ name: "dummy",
3
+ proxy: async (_event) => {
4
+ throw new Error("This is a dummy implementation");
5
+ },
6
+ };
7
+ export default DummyProxyExternalRequest;
@@ -0,0 +1,3 @@
1
+ import type { ProxyExternalRequest } from "../../types/overrides";
2
+ declare const fetchProxy: ProxyExternalRequest;
3
+ export default fetchProxy;
@@ -0,0 +1,25 @@
1
+ import { emptyReadableStream } from "../../utils/stream";
2
+ const fetchProxy = {
3
+ name: "fetch-proxy",
4
+ // @ts-ignore
5
+ proxy: async (internalEvent) => {
6
+ const { url, headers, method, body } = internalEvent;
7
+ const response = await fetch(url, {
8
+ method,
9
+ headers,
10
+ body,
11
+ });
12
+ const responseHeaders = {};
13
+ response.headers.forEach((value, key) => {
14
+ responseHeaders[key] = value;
15
+ });
16
+ return {
17
+ type: "core",
18
+ headers: responseHeaders,
19
+ statusCode: response.status,
20
+ isBase64Encoded: true,
21
+ body: response.body ?? emptyReadableStream(),
22
+ };
23
+ },
24
+ };
25
+ export default fetchProxy;
@@ -0,0 +1,3 @@
1
+ import type { ProxyExternalRequest } from "../../types/overrides";
2
+ declare const nodeProxy: ProxyExternalRequest;
3
+ export default nodeProxy;