@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
@@ -1,10 +1,10 @@
1
1
  import { debug } from "../adapters/logger";
2
2
  import { generateUniqueId } from "../adapters/util";
3
- import { openNextHandler } from "./requestHandler.js";
4
- import { resolveConverter, resolveIncrementalCache, resolveQueue, resolveTagCache, resolveWrapper, } from "./resolve";
3
+ import { openNextHandler } from "./requestHandler";
4
+ import { resolveConverter, resolveIncrementalCache, resolveProxyRequest, resolveQueue, resolveTagCache, resolveWrapper, } from "./resolve";
5
5
  export async function createMainHandler() {
6
- //First we load the config
7
- const config = await import(process.cwd() + "/open-next.config.mjs").then((m) => m.default);
6
+ // @ts-expect-error `./open-next.config.mjs` exists only in the build output
7
+ const config = await import("./open-next.config.mjs").then((m) => m.default);
8
8
  const thisFunction = globalThis.fnName
9
9
  ? config.functions[globalThis.fnName]
10
10
  : config.default;
@@ -14,6 +14,7 @@ export async function createMainHandler() {
14
14
  globalThis.queue = await resolveQueue(thisFunction.override?.queue);
15
15
  globalThis.incrementalCache = await resolveIncrementalCache(thisFunction.override?.incrementalCache);
16
16
  globalThis.tagCache = await resolveTagCache(thisFunction.override?.tagCache);
17
+ globalThis.proxyExternalRequest = await resolveProxyRequest(thisFunction.override?.proxyExternalRequest);
17
18
  globalThis.lastModified = {};
18
19
  // From the config, we create the converter
19
20
  const converter = await resolveConverter(thisFunction.override?.converter);
@@ -1,54 +1,4 @@
1
- /// <reference types="node" />
2
- import type { OutgoingHttpHeaders } from "http";
3
- interface RequestData {
4
- geo?: {
5
- city?: string;
6
- country?: string;
7
- region?: string;
8
- latitude?: string;
9
- longitude?: string;
10
- };
11
- headers: OutgoingHttpHeaders;
12
- ip?: string;
13
- method: string;
14
- nextConfig?: {
15
- basePath?: string;
16
- i18n?: any;
17
- trailingSlash?: boolean;
18
- };
19
- page?: {
20
- name?: string;
21
- params?: {
22
- [key: string]: string | string[];
23
- };
24
- };
25
- url: string;
26
- body?: ReadableStream<Uint8Array>;
27
- signal: AbortSignal;
28
- }
29
- interface Entries {
30
- [k: string]: {
31
- default: (props: {
32
- page: string;
33
- request: RequestData;
34
- }) => Promise<{
35
- response: Response;
36
- waitUntil: Promise<void>;
37
- }>;
38
- };
39
- }
40
- declare global {
41
- var _ENTRIES: Entries;
42
- var _ROUTES: EdgeRoute[];
43
- var __storage__: Map<unknown, unknown>;
44
- var AsyncContext: any;
45
- var AsyncLocalStorage: any;
46
- }
47
- export interface EdgeRoute {
48
- name: string;
49
- page: string;
50
- regex: string[];
51
- }
1
+ import type { RequestData } from "../types/global";
52
2
  type EdgeRequest = Omit<RequestData, "page">;
53
3
  export default function edgeFunctionHandler(request: EdgeRequest): Promise<Response>;
54
4
  export {};
@@ -1,16 +1,15 @@
1
- const mod = require("module");
1
+ const mod = require("node:module");
2
2
  const resolveFilename = mod._resolveFilename;
3
3
  export function patchAsyncStorage() {
4
- mod._resolveFilename = function (originalResolveFilename, request, parent, isMain, options) {
4
+ mod._resolveFilename = ((originalResolveFilename, request, parent, isMain, options) => {
5
5
  if (request.endsWith("static-generation-async-storage.external") ||
6
6
  request.endsWith("static-generation-async-storage.external.js")) {
7
7
  return require.resolve("./patchedAsyncStorage.cjs");
8
8
  }
9
- else if (request.endsWith("static-generation-async-storage.external.original")) {
9
+ if (request.endsWith("static-generation-async-storage.external.original")) {
10
10
  return originalResolveFilename.call(mod, request.replace(".original", ".js"), parent, isMain, options);
11
11
  }
12
- else
13
- return originalResolveFilename.call(mod, request, parent, isMain, options);
12
+ return originalResolveFilename.call(mod, request, parent, isMain, options);
14
13
  // We use `bind` here to avoid referencing outside variables to create potential memory leaks.
15
- }.bind(null, resolveFilename);
14
+ }).bind(null, resolveFilename);
16
15
  }
@@ -1,65 +1,88 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
2
  import { IncomingMessage } from "../http/index.js";
3
- import { DetachedPromiseRunner } from "../utils/promise";
3
+ import { runWithOpenNextRequestContext } from "../utils/promise";
4
4
  import { debug, error, warn } from "../adapters/logger";
5
5
  import { patchAsyncStorage } from "./patchAsyncStorage";
6
- import { convertRes, createServerResponse, proxyRequest } from "./routing/util";
7
- import routingHandler from "./routingHandler";
6
+ import { convertRes, createServerResponse } from "./routing/util";
7
+ import routingHandler, { MIDDLEWARE_HEADER_PREFIX, MIDDLEWARE_HEADER_PREFIX_LEN, } from "./routingHandler";
8
8
  import { requestHandler, setNextjsPrebundledReact } from "./util";
9
9
  // This is used to identify requests in the cache
10
- globalThis.__als = new AsyncLocalStorage();
10
+ globalThis.__openNextAls = new AsyncLocalStorage();
11
11
  patchAsyncStorage();
12
12
  export async function openNextHandler(internalEvent, responseStreaming) {
13
- if (internalEvent.headers["x-forwarded-host"]) {
14
- internalEvent.headers.host = internalEvent.headers["x-forwarded-host"];
15
- }
16
- debug("internalEvent", internalEvent);
17
- let preprocessResult = {
18
- internalEvent: internalEvent,
19
- isExternalRewrite: false,
20
- origin: false,
21
- isISR: false,
22
- };
23
- //#override withRouting
24
- try {
25
- preprocessResult = await routingHandler(internalEvent);
26
- }
27
- catch (e) {
28
- warn("Routing failed.", e);
29
- }
30
- //#endOverride
31
- const headers = "type" in preprocessResult
32
- ? preprocessResult.headers
33
- : preprocessResult.internalEvent.headers;
34
- const overwrittenResponseHeaders = Object.entries("type" in preprocessResult
35
- ? preprocessResult.headers
36
- : preprocessResult.internalEvent.headers).reduce((acc, [key, value]) => {
37
- if (!key.startsWith("x-middleware-response-")) {
38
- return acc;
13
+ // We run everything in the async local storage context so that it is available in the middleware as well as in NextServer
14
+ return runWithOpenNextRequestContext({ isISRRevalidation: internalEvent.headers["x-isr"] === "1" }, async () => {
15
+ if (internalEvent.headers["x-forwarded-host"]) {
16
+ internalEvent.headers.host = internalEvent.headers["x-forwarded-host"];
39
17
  }
40
- else {
41
- const newKey = key.replace("x-middleware-response-", "");
42
- delete headers[key];
43
- headers[newKey] = value;
44
- return { ...acc, [newKey]: value };
18
+ debug("internalEvent", internalEvent);
19
+ let preprocessResult = {
20
+ internalEvent: internalEvent,
21
+ isExternalRewrite: false,
22
+ origin: false,
23
+ isISR: false,
24
+ };
25
+ //#override withRouting
26
+ try {
27
+ preprocessResult = await routingHandler(internalEvent);
28
+ }
29
+ catch (e) {
30
+ warn("Routing failed.", e);
45
31
  }
46
- }, {});
47
- if ("type" in preprocessResult) {
48
- // // res is used only in the streaming case
49
- if (responseStreaming) {
50
- const res = createServerResponse(internalEvent, headers, responseStreaming);
51
- res.statusCode = preprocessResult.statusCode;
52
- res.flushHeaders();
53
- const [bodyToConsume, bodyToReturn] = preprocessResult.body.tee();
54
- for await (const chunk of bodyToConsume) {
55
- res.write(chunk);
32
+ //#endOverride
33
+ const headers = "type" in preprocessResult
34
+ ? preprocessResult.headers
35
+ : preprocessResult.internalEvent.headers;
36
+ const overwrittenResponseHeaders = {};
37
+ for (const [rawKey, value] of Object.entries(headers)) {
38
+ if (!rawKey.startsWith(MIDDLEWARE_HEADER_PREFIX)) {
39
+ continue;
56
40
  }
57
- res.end();
58
- preprocessResult.body = bodyToReturn;
41
+ const key = rawKey.slice(MIDDLEWARE_HEADER_PREFIX_LEN);
42
+ overwrittenResponseHeaders[key] = value;
43
+ headers[key] = value;
44
+ delete headers[rawKey];
45
+ }
46
+ if ("isExternalRewrite" in preprocessResult &&
47
+ preprocessResult.isExternalRewrite === true) {
48
+ try {
49
+ preprocessResult = await globalThis.proxyExternalRequest.proxy(preprocessResult.internalEvent);
50
+ }
51
+ catch (e) {
52
+ error("External request failed.", e);
53
+ preprocessResult = {
54
+ internalEvent: {
55
+ type: "core",
56
+ rawPath: "/500",
57
+ method: "GET",
58
+ headers: {},
59
+ url: "/500",
60
+ query: {},
61
+ cookies: {},
62
+ remoteAddress: "",
63
+ },
64
+ // On error we need to rewrite to the 500 page which is an internal rewrite
65
+ isExternalRewrite: false,
66
+ isISR: false,
67
+ origin: false,
68
+ };
69
+ }
70
+ }
71
+ if ("type" in preprocessResult) {
72
+ // response is used only in the streaming case
73
+ if (responseStreaming) {
74
+ const response = createServerResponse(internalEvent, headers, responseStreaming);
75
+ response.statusCode = preprocessResult.statusCode;
76
+ response.flushHeaders();
77
+ const [bodyToConsume, bodyToReturn] = preprocessResult.body.tee();
78
+ for await (const chunk of bodyToConsume) {
79
+ response.write(chunk);
80
+ }
81
+ response.end();
82
+ preprocessResult.body = bodyToReturn;
83
+ }
84
+ return preprocessResult;
59
85
  }
60
- return preprocessResult;
61
- }
62
- else {
63
86
  const preprocessedEvent = preprocessResult.internalEvent;
64
87
  debug("preprocessedEvent", preprocessedEvent);
65
88
  const reqProps = {
@@ -74,58 +97,44 @@ export async function openNextHandler(internalEvent, responseStreaming) {
74
97
  body: preprocessedEvent.body,
75
98
  remoteAddress: preprocessedEvent.remoteAddress,
76
99
  };
77
- const requestId = Math.random().toString(36);
78
- const pendingPromiseRunner = new DetachedPromiseRunner();
79
- const isISRRevalidation = headers["x-isr"] === "1";
80
100
  const mergeHeadersPriority = globalThis.openNextConfig.dangerous
81
101
  ?.headersAndCookiesPriority
82
102
  ? globalThis.openNextConfig.dangerous.headersAndCookiesPriority(preprocessedEvent)
83
103
  : "middleware";
84
- const internalResult = await globalThis.__als.run({
85
- requestId,
86
- pendingPromiseRunner,
87
- isISRRevalidation,
88
- mergeHeadersPriority,
89
- }, async () => {
90
- const preprocessedResult = preprocessResult;
91
- const req = new IncomingMessage(reqProps);
92
- const res = createServerResponse(preprocessedEvent, overwrittenResponseHeaders, responseStreaming);
93
- await processRequest(req, res, preprocessedEvent, preprocessedResult.isExternalRewrite);
94
- const { statusCode, headers, isBase64Encoded, body } = convertRes(res);
95
- const internalResult = {
96
- type: internalEvent.type,
97
- statusCode,
98
- headers,
99
- body,
100
- isBase64Encoded,
101
- };
104
+ const store = globalThis.__openNextAls.getStore();
105
+ if (store) {
106
+ store.mergeHeadersPriority = mergeHeadersPriority;
107
+ }
108
+ const req = new IncomingMessage(reqProps);
109
+ const res = createServerResponse(preprocessedEvent, overwrittenResponseHeaders, responseStreaming);
110
+ await processRequest(req, res, preprocessedEvent);
111
+ const { statusCode, headers: responseHeaders, isBase64Encoded, body, } = convertRes(res);
112
+ const internalResult = {
113
+ type: internalEvent.type,
114
+ statusCode,
115
+ headers: responseHeaders,
116
+ body,
117
+ isBase64Encoded,
118
+ };
119
+ const requestId = store?.requestId;
120
+ if (requestId) {
102
121
  // reset lastModified. We need to do this to avoid memory leaks
103
122
  delete globalThis.lastModified[requestId];
104
- await pendingPromiseRunner.await();
105
- return internalResult;
106
- });
123
+ }
107
124
  return internalResult;
108
- }
125
+ });
109
126
  }
110
- async function processRequest(req, res, internalEvent, isExternalRewrite) {
127
+ async function processRequest(req, res, internalEvent) {
111
128
  // @ts-ignore
112
129
  // Next.js doesn't parse body if the property exists
113
130
  // https://github.com/dougmoscrop/serverless-http/issues/227
114
131
  delete req.body;
115
132
  try {
116
- // `serverHandler` is replaced at build time depending on user's
117
- // nextjs version to patch Nextjs 13.4.x and future breaking changes.
118
- const { rawPath } = internalEvent;
119
- if (isExternalRewrite) {
120
- return proxyRequest(internalEvent, res);
121
- }
122
- else {
123
- //#override applyNextjsPrebundledReact
124
- setNextjsPrebundledReact(rawPath);
125
- //#endOverride
126
- // Next Server
127
- await requestHandler(req, res);
128
- }
133
+ //#override applyNextjsPrebundledReact
134
+ setNextjsPrebundledReact(internalEvent.rawPath);
135
+ //#endOverride
136
+ // Next Server
137
+ await requestHandler(req, res);
129
138
  }
130
139
  catch (e) {
131
140
  // This might fail when using bundled next, importing won't do the trick either
@@ -3,7 +3,7 @@
3
3
  // Individually compiled modules are as defined for the compilation in bundles/webpack/packages/*.
4
4
  import { error } from "../adapters/logger.js";
5
5
  // This module will only be loaded once per process.
6
- const mod = require("module");
6
+ const mod = require("node:module");
7
7
  const resolveFilename = mod._resolveFilename;
8
8
  const hookPropertyMapApp = new Map();
9
9
  const hookPropertyMapPage = new Map();
@@ -17,7 +17,7 @@ export function overrideHooks(config) {
17
17
  throw e;
18
18
  }
19
19
  }
20
- function addHookAliases(aliases = [], type) {
20
+ function addHookAliases(aliases, type) {
21
21
  for (const [key, value] of aliases) {
22
22
  type === "app"
23
23
  ? hookPropertyMapApp.set(key, value)
@@ -68,12 +68,12 @@ function overrideDefault() {
68
68
  const toResolveMap = (map) => Object.entries(map).map(([key, value]) => [key, require.resolve(value)]);
69
69
  // Override built-in React packages if necessary
70
70
  function overrideReact(config) {
71
- addHookAliases([["react", require.resolve(`react`)]], "page");
71
+ addHookAliases([["react", require.resolve("react")]], "page");
72
72
  // ignore: react/jsx-dev-runtime is not available on older version of Next.js ie. v13.1.6
73
73
  // react/jsx-runtime is not available on newer version of Next.js ie. v13.4.10-canary.3
74
74
  try {
75
- addHookAliases([["react/jsx-runtime", require.resolve(`react/jsx-runtime`)]], "page");
76
- addHookAliases([["react/jsx-dev-runtime", require.resolve(`react/jsx-dev-runtime`)]], "page");
75
+ addHookAliases([["react/jsx-runtime", require.resolve("react/jsx-runtime")]], "page");
76
+ addHookAliases([["react/jsx-dev-runtime", require.resolve("react/jsx-dev-runtime")]], "page");
77
77
  }
78
78
  catch (e) { }
79
79
  if (config.experimental.appDir) {
@@ -90,13 +90,14 @@ function isApp() {
90
90
  process.env.__NEXT_PRIVATE_PREBUNDLED_REACT === "experimental");
91
91
  }
92
92
  export function applyOverride() {
93
- mod._resolveFilename = function (originalResolveFilename, requestMapApp, requestMapPage, request, parent, isMain, options) {
93
+ mod._resolveFilename = ((originalResolveFilename, requestMapApp, requestMapPage, request, parent, isMain, options) => {
94
94
  const hookResolved = isApp()
95
95
  ? requestMapApp.get(request)
96
96
  : requestMapPage.get(request);
97
+ // biome-ignore lint/style/noParameterAssign:
97
98
  if (hookResolved)
98
99
  request = hookResolved;
99
100
  return originalResolveFilename.call(mod, request, parent, isMain, options);
100
101
  // We use `bind` here to avoid referencing outside variables to create potential memory leaks.
101
- }.bind(null, resolveFilename, hookPropertyMapApp, hookPropertyMapPage);
102
+ }).bind(null, resolveFilename, hookPropertyMapApp, hookPropertyMapPage);
102
103
  }
@@ -1,5 +1,6 @@
1
- import type { BaseEventOrResult, Converter, DefaultOverrideOptions, ImageLoader, InternalEvent, InternalResult, LazyLoadedOverride, OriginResolver, OverrideOptions, Warmer, Wrapper } from "../types/open-next.js";
2
- import type { TagCache } from "../overrides/tagCache/types.js";
1
+ import type { BaseEventOrResult, DefaultOverrideOptions, InternalEvent, InternalResult, OpenNextConfig, OverrideOptions } from "../types/open-next";
2
+ import type { Converter, TagCache, Wrapper } from "../types/overrides";
3
+ type RemoveUndefined<T> = T extends undefined ? never : T;
3
4
  export declare function resolveConverter<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult>(converter: DefaultOverrideOptions<E, R>["converter"]): Promise<Converter<E, R>>;
4
5
  export declare function resolveWrapper<E extends BaseEventOrResult = InternalEvent, R extends BaseEventOrResult = InternalResult>(wrapper: DefaultOverrideOptions<E, R>["wrapper"]): Promise<Wrapper<E, R>>;
5
6
  /**
@@ -15,26 +16,31 @@ export declare function resolveTagCache(tagCache: OverrideOptions["tagCache"]):
15
16
  * @returns
16
17
  * @__PURE__
17
18
  */
18
- export declare function resolveQueue(queue: OverrideOptions["queue"]): Promise<import("../overrides/queue/types.js").Queue>;
19
+ export declare function resolveQueue(queue: OverrideOptions["queue"]): Promise<import("../types/overrides").Queue>;
19
20
  /**
20
21
  *
21
22
  * @param incrementalCache
22
23
  * @returns
23
24
  * @__PURE__
24
25
  */
25
- export declare function resolveIncrementalCache(incrementalCache: OverrideOptions["incrementalCache"]): Promise<import("../overrides/incrementalCache/types.js").IncrementalCache>;
26
+ export declare function resolveIncrementalCache(incrementalCache: OverrideOptions["incrementalCache"]): Promise<import("../types/overrides").IncrementalCache>;
26
27
  /**
27
28
  * @param imageLoader
28
29
  * @returns
29
30
  * @__PURE__
30
31
  */
31
- export declare function resolveImageLoader(imageLoader: LazyLoadedOverride<ImageLoader> | string): Promise<ImageLoader>;
32
+ export declare function resolveImageLoader(imageLoader: RemoveUndefined<OpenNextConfig["imageOptimization"]>["loader"]): Promise<import("../types/overrides").ImageLoader>;
32
33
  /**
33
34
  * @returns
34
35
  * @__PURE__
35
36
  */
36
- export declare function resolveOriginResolver(originResolver?: LazyLoadedOverride<OriginResolver> | string): Promise<OriginResolver>;
37
+ export declare function resolveOriginResolver(originResolver: RemoveUndefined<OpenNextConfig["middleware"]>["originResolver"]): Promise<import("../types/overrides").OriginResolver>;
37
38
  /**
38
39
  * @__PURE__
39
40
  */
40
- export declare function resolveWarmerInvoke(warmer?: LazyLoadedOverride<Warmer> | "aws-lambda"): Promise<Warmer>;
41
+ export declare function resolveWarmerInvoke(warmer: RemoveUndefined<OpenNextConfig["warmer"]>["invokeFunction"]): Promise<import("../types/overrides").Warmer>;
42
+ /**
43
+ * @__PURE__
44
+ */
45
+ export declare function resolveProxyRequest(proxyRequest: OverrideOptions["proxyExternalRequest"]): Promise<import("../types/overrides").ProxyExternalRequest>;
46
+ export {};
@@ -2,22 +2,18 @@ export async function resolveConverter(converter) {
2
2
  if (typeof converter === "function") {
3
3
  return converter();
4
4
  }
5
- else {
6
- const m_1 = await import(`../overrides/converters/aws-apigw-v2.js`);
7
- // @ts-expect-error
8
- return m_1.default;
9
- }
5
+ const m_1 = await import("../overrides/converters/aws-apigw-v2.js");
6
+ // @ts-expect-error
7
+ return m_1.default;
10
8
  }
11
9
  export async function resolveWrapper(wrapper) {
12
10
  if (typeof wrapper === "function") {
13
11
  return wrapper();
14
12
  }
15
- else {
16
- // This will be replaced by the bundler
17
- const m_1 = await import("../overrides/wrappers/aws-lambda.js");
18
- // @ts-expect-error
19
- return m_1.default;
20
- }
13
+ // This will be replaced by the bundler
14
+ const m_1 = await import("../overrides/wrappers/aws-lambda.js");
15
+ // @ts-expect-error
16
+ return m_1.default;
21
17
  }
22
18
  /**
23
19
  *
@@ -29,11 +25,9 @@ export async function resolveTagCache(tagCache) {
29
25
  if (typeof tagCache === "function") {
30
26
  return tagCache();
31
27
  }
32
- else {
33
- // This will be replaced by the bundler
34
- const m_1 = await import("../overrides/tagCache/dynamodb.js");
35
- return m_1.default;
36
- }
28
+ // This will be replaced by the bundler
29
+ const m_1 = await import("../overrides/tagCache/dynamodb.js");
30
+ return m_1.default;
37
31
  }
38
32
  /**
39
33
  *
@@ -45,10 +39,8 @@ export async function resolveQueue(queue) {
45
39
  if (typeof queue === "function") {
46
40
  return queue();
47
41
  }
48
- else {
49
- const m_1 = await import("../overrides/queue/sqs.js");
50
- return m_1.default;
51
- }
42
+ const m_1 = await import("../overrides/queue/sqs.js");
43
+ return m_1.default;
52
44
  }
53
45
  /**
54
46
  *
@@ -60,10 +52,8 @@ export async function resolveIncrementalCache(incrementalCache) {
60
52
  if (typeof incrementalCache === "function") {
61
53
  return incrementalCache();
62
54
  }
63
- else {
64
- const m_1 = await import("../overrides/incrementalCache/s3.js");
65
- return m_1.default;
66
- }
55
+ const m_1 = await import("../overrides/incrementalCache/s3.js");
56
+ return m_1.default;
67
57
  }
68
58
  /**
69
59
  * @param imageLoader
@@ -74,10 +64,8 @@ export async function resolveImageLoader(imageLoader) {
74
64
  if (typeof imageLoader === "function") {
75
65
  return imageLoader();
76
66
  }
77
- else {
78
- const m_1 = await import("../overrides/imageLoader/s3.js");
79
- return m_1.default;
80
- }
67
+ const m_1 = await import("../overrides/imageLoader/s3.js");
68
+ return m_1.default;
81
69
  }
82
70
  /**
83
71
  * @returns
@@ -87,10 +75,8 @@ export async function resolveOriginResolver(originResolver) {
87
75
  if (typeof originResolver === "function") {
88
76
  return originResolver();
89
77
  }
90
- else {
91
- const m_1 = await import("../overrides/originResolver/pattern-env.js");
92
- return m_1.default;
93
- }
78
+ const m_1 = await import("../overrides/originResolver/pattern-env.js");
79
+ return m_1.default;
94
80
  }
95
81
  /**
96
82
  * @__PURE__
@@ -99,8 +85,16 @@ export async function resolveWarmerInvoke(warmer) {
99
85
  if (typeof warmer === "function") {
100
86
  return warmer();
101
87
  }
102
- else {
103
- const m_1 = await import("../overrides/warmer/aws-lambda.js");
104
- return m_1.default;
88
+ const m_1 = await import("../overrides/warmer/aws-lambda.js");
89
+ return m_1.default;
90
+ }
91
+ /**
92
+ * @__PURE__
93
+ */
94
+ export async function resolveProxyRequest(proxyRequest) {
95
+ if (typeof proxyRequest === "function") {
96
+ return proxyRequest();
105
97
  }
98
+ const m_1 = await import("../overrides/proxyExternalRequest/node.js");
99
+ return m_1.default;
106
100
  }
@@ -31,7 +31,7 @@ async function computeCacheControl(path, body, host, revalidate, lastModified) {
31
31
  etag,
32
32
  };
33
33
  }
34
- else if (finalRevalidate !== CACHE_ONE_YEAR) {
34
+ if (finalRevalidate !== CACHE_ONE_YEAR) {
35
35
  const sMaxAge = Math.max(finalRevalidate - age, 1);
36
36
  debug("sMaxAge", {
37
37
  finalRevalidate,
@@ -58,13 +58,11 @@ async function computeCacheControl(path, body, host, revalidate, lastModified) {
58
58
  etag,
59
59
  };
60
60
  }
61
- else {
62
- return {
63
- "cache-control": `s-maxage=${CACHE_ONE_YEAR}, stale-while-revalidate=${CACHE_ONE_MONTH}`,
64
- "x-opennext-cache": "HIT",
65
- etag,
66
- };
67
- }
61
+ return {
62
+ "cache-control": `s-maxage=${CACHE_ONE_YEAR}, stale-while-revalidate=${CACHE_ONE_MONTH}`,
63
+ "x-opennext-cache": "HIT",
64
+ etag,
65
+ };
68
66
  }
69
67
  async function generateResult(event, localizedPath, cachedValue, lastModified) {
70
68
  debug("Returning result from experimental cache");
@@ -73,19 +71,19 @@ async function generateResult(event, localizedPath, cachedValue, lastModified) {
73
71
  let isDataRequest = false;
74
72
  switch (cachedValue.type) {
75
73
  case "app":
76
- isDataRequest = Boolean(event.headers["rsc"]);
74
+ isDataRequest = Boolean(event.headers.rsc);
77
75
  body = isDataRequest ? cachedValue.rsc : cachedValue.html;
78
76
  type = isDataRequest ? "text/x-component" : "text/html; charset=utf-8";
79
77
  break;
80
78
  case "page":
81
- isDataRequest = Boolean(event.query["__nextDataReq"]);
79
+ isDataRequest = Boolean(event.query.__nextDataReq);
82
80
  body = isDataRequest
83
81
  ? JSON.stringify(cachedValue.json)
84
82
  : cachedValue.html;
85
83
  type = isDataRequest ? "application/json" : "text/html; charset=utf-8";
86
84
  break;
87
85
  }
88
- const cacheControl = await computeCacheControl(localizedPath, body, event.headers["host"], cachedValue.revalidate, lastModified);
86
+ const cacheControl = await computeCacheControl(localizedPath, body, event.headers.host, cachedValue.revalidate, lastModified);
89
87
  return {
90
88
  type: "core",
91
89
  statusCode: 200,
@@ -130,12 +128,12 @@ export async function cacheInterceptor(event) {
130
128
  return event;
131
129
  }
132
130
  }
133
- const host = event.headers["host"];
131
+ const host = event.headers.host;
134
132
  switch (cachedData.value?.type) {
135
133
  case "app":
136
134
  case "page":
137
135
  return generateResult(event, localizedPath, cachedData.value, cachedData.lastModified);
138
- case "redirect":
136
+ case "redirect": {
139
137
  const cacheControl = await computeCacheControl(localizedPath, "", host, cachedData.value.revalidate, cachedData.lastModified);
140
138
  return {
141
139
  type: "core",
@@ -148,6 +146,7 @@ export async function cacheInterceptor(event) {
148
146
  },
149
147
  isBase64Encoded: false,
150
148
  };
149
+ }
151
150
  default:
152
151
  return event;
153
152
  }
@@ -11,6 +11,7 @@ function parse(raw, preferences, options) {
11
11
  lowers.set(lower, { orig: preference, pos: pos++ });
12
12
  if (options.prefixMatch) {
13
13
  const parts = lower.split("-");
14
+ // biome-ignore lint/style/noCommaOperator:
14
15
  while ((parts.pop(), parts.length > 0)) {
15
16
  const joined = parts.join("-");
16
17
  if (!lowers.has(joined)) {
@@ -32,7 +33,7 @@ function parse(raw, preferences, options) {
32
33
  if (params.length > 2) {
33
34
  throw new Error(`Invalid ${options.type} header`);
34
35
  }
35
- let token = params[0].toLowerCase();
36
+ const token = params[0].toLowerCase();
36
37
  if (!token) {
37
38
  throw new Error(`Invalid ${options.type} header`);
38
39
  }
@@ -47,7 +48,7 @@ function parse(raw, preferences, options) {
47
48
  if (!value || (key !== "q" && key !== "Q")) {
48
49
  throw new Error(`Invalid ${options.type} header`);
49
50
  }
50
- const score = parseFloat(value);
51
+ const score = Number.parseFloat(value);
51
52
  if (score === 0) {
52
53
  continue;
53
54
  }
@@ -1,14 +1,12 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import type { Header, PrerenderManifest, RedirectDefinition, RewriteDefinition } from "../../types/next-types";
4
2
  import type { InternalEvent, InternalResult } from "../../types/open-next";
5
- export declare function addNextConfigHeaders(event: InternalEvent, configHeaders?: Header[] | undefined): Record<string, string | undefined>;
3
+ export declare function getNextConfigHeaders(event: InternalEvent, configHeaders?: Header[] | undefined): Record<string, string | undefined>;
6
4
  export declare function handleRewrites<T extends RewriteDefinition>(event: InternalEvent, rewrites: T[]): {
7
5
  internalEvent: {
8
6
  rawPath: string;
9
7
  url: string;
10
8
  method: string;
11
- body?: Buffer | undefined;
9
+ body?: Buffer;
12
10
  headers: Record<string, string>;
13
11
  query: Record<string, string | string[]>;
14
12
  cookies: Record<string, string>;