@react-router/architect 7.16.0 → 7.18.0

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # `@react-router/architect`
2
2
 
3
+ ## v7.18.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add a `useRequestContextDomainName` option to `createRequestHandler` to derive request URL hosts from the API Gateway request context. ([#15185](https://github.com/remix-run/react-router/pull/15185))
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies:
12
+ - [`react-router@7.18.0`](https://github.com/remix-run/react-router/releases/tag/react-router@7.18.0)
13
+ - [`@react-router/node@7.18.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/node@7.18.0)
14
+
15
+ ## v7.17.0
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies:
20
+ - [`react-router@7.17.0`](https://github.com/remix-run/react-router/releases/tag/react-router@7.17.0)
21
+ - [`@react-router/node@7.17.0`](https://github.com/remix-run/react-router/releases/tag/@react-router/node@7.17.0)
22
+
3
23
  ## v7.16.0
4
24
 
5
25
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -50,10 +50,11 @@ type RequestHandler = APIGatewayProxyHandlerV2;
50
50
  * Returns a request handler for Architect that serves the response using
51
51
  * React Router.
52
52
  */
53
- declare function createRequestHandler({ build, getLoadContext, mode, }: {
53
+ declare function createRequestHandler({ build, getLoadContext, mode, useRequestContextDomainName, }: {
54
54
  build: ServerBuild;
55
55
  getLoadContext?: GetLoadContextFunction;
56
56
  mode?: string;
57
+ useRequestContextDomainName?: boolean;
57
58
  }): RequestHandler;
58
59
 
59
60
  export { type GetLoadContextFunction, type RequestHandler, createArcTableSessionStorage, createRequestHandler };
package/dist/index.d.ts CHANGED
@@ -50,10 +50,11 @@ type RequestHandler = APIGatewayProxyHandlerV2;
50
50
  * Returns a request handler for Architect that serves the response using
51
51
  * React Router.
52
52
  */
53
- declare function createRequestHandler({ build, getLoadContext, mode, }: {
53
+ declare function createRequestHandler({ build, getLoadContext, mode, useRequestContextDomainName, }: {
54
54
  build: ServerBuild;
55
55
  getLoadContext?: GetLoadContextFunction;
56
56
  mode?: string;
57
+ useRequestContextDomainName?: boolean;
57
58
  }): RequestHandler;
58
59
 
59
60
  export { type GetLoadContextFunction, type RequestHandler, createArcTableSessionStorage, createRequestHandler };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/architect v7.16.0
2
+ * @react-router/architect v7.18.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -182,18 +182,25 @@ function isBinaryType(contentType) {
182
182
  function createRequestHandler({
183
183
  build,
184
184
  getLoadContext,
185
- mode = process.env.NODE_ENV
185
+ mode = process.env.NODE_ENV,
186
+ // TODO(v8): Remove this flag and make this the default behavior
187
+ useRequestContextDomainName = false
186
188
  }) {
187
189
  let handleRequest = (0, import_react_router2.createRequestHandler)(build, mode);
188
190
  return async (event) => {
189
- let request = createReactRouterRequest(event);
191
+ let request = createReactRouterRequest(event, useRequestContextDomainName);
190
192
  let loadContext = await getLoadContext?.(event);
191
193
  let response = await handleRequest(request, loadContext);
192
194
  return sendReactRouterResponse(response);
193
195
  };
194
196
  }
195
- function createReactRouterRequest(event) {
196
- let host = event.headers["x-forwarded-host"] || event.headers.host;
197
+ function createReactRouterRequest(event, useRequestContextDomainName = false) {
198
+ let rawHost = useRequestContextDomainName ? event.requestContext.domainName || event.headers.host || "" : event.headers["x-forwarded-host"] || event.headers.host || "";
199
+ let [hostname, portStr] = rawHost.split(":");
200
+ hostname = hostname.split(/[\\/?#@]/)[0] || "localhost";
201
+ let hostPort = Number.parseInt(portStr ?? "", 10);
202
+ let port = Number.isSafeInteger(hostPort) ? hostPort : void 0;
203
+ let host = `${hostname}${port ? `:${port}` : ""}`;
197
204
  let search = event.rawQueryString.length ? `?${event.rawQueryString}` : "";
198
205
  let scheme = process.env.ARC_SANDBOX ? "http" : "https";
199
206
  let url = new URL(`${scheme}://${host}${event.rawPath}${search}`);
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @react-router/architect v7.16.0
2
+ * @react-router/architect v7.18.0
3
3
  *
4
4
  * Copyright (c) Remix Software Inc.
5
5
  *
@@ -146,18 +146,25 @@ function isBinaryType(contentType) {
146
146
  function createRequestHandler({
147
147
  build,
148
148
  getLoadContext,
149
- mode = process.env.NODE_ENV
149
+ mode = process.env.NODE_ENV,
150
+ // TODO(v8): Remove this flag and make this the default behavior
151
+ useRequestContextDomainName = false
150
152
  }) {
151
153
  let handleRequest = createReactRouterRequestHandler(build, mode);
152
154
  return async (event) => {
153
- let request = createReactRouterRequest(event);
155
+ let request = createReactRouterRequest(event, useRequestContextDomainName);
154
156
  let loadContext = await getLoadContext?.(event);
155
157
  let response = await handleRequest(request, loadContext);
156
158
  return sendReactRouterResponse(response);
157
159
  };
158
160
  }
159
- function createReactRouterRequest(event) {
160
- let host = event.headers["x-forwarded-host"] || event.headers.host;
161
+ function createReactRouterRequest(event, useRequestContextDomainName = false) {
162
+ let rawHost = useRequestContextDomainName ? event.requestContext.domainName || event.headers.host || "" : event.headers["x-forwarded-host"] || event.headers.host || "";
163
+ let [hostname, portStr] = rawHost.split(":");
164
+ hostname = hostname.split(/[\\/?#@]/)[0] || "localhost";
165
+ let hostPort = Number.parseInt(portStr ?? "", 10);
166
+ let port = Number.isSafeInteger(hostPort) ? hostPort : void 0;
167
+ let host = `${hostname}${port ? `:${port}` : ""}`;
161
168
  let search = event.rawQueryString.length ? `?${event.rawQueryString}` : "";
162
169
  let scheme = process.env.ARC_SANDBOX ? "http" : "https";
163
170
  let url = new URL(`${scheme}://${host}${event.rawPath}${search}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-router/architect",
3
- "version": "7.16.0",
3
+ "version": "7.18.0",
4
4
  "description": "Architect server request handler for React Router",
5
5
  "bugs": {
6
6
  "url": "https://github.com/remix-run/react-router/issues"
@@ -59,13 +59,13 @@
59
59
  "tsup": "^8.3.0",
60
60
  "typescript": "^5.4.5",
61
61
  "wireit": "0.14.9",
62
- "@react-router/node": "7.16.0",
63
- "react-router": "7.16.0"
62
+ "@react-router/node": "7.18.0",
63
+ "react-router": "7.18.0"
64
64
  },
65
65
  "peerDependencies": {
66
66
  "typescript": "^5.1.0 || ^6.0.0",
67
- "@react-router/node": "^7.16.0",
68
- "react-router": "^7.16.0"
67
+ "@react-router/node": "^7.18.0",
68
+ "react-router": "^7.18.0"
69
69
  },
70
70
  "peerDependenciesMeta": {
71
71
  "typescript": {