From a77235f9386309bc7f0e89d6e502065de4b401e3 Mon Sep 17 00:00:00 2001 From: Yury Michurin Date: Wed, 19 Mar 2025 09:54:45 +0200 Subject: [PATCH 01/11] Add docs for preRenderedFetch param to render --- .../docs/en/reference/adapter-reference.mdx | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index d3e30f0d23f59..269697f3c2602 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -215,10 +215,10 @@ const response = await app.render(request);

-**Type:** `{addCookieHeader?: boolean; clientAddress?: string; locals?: object; routeData?: RouteData;}` +**Type:** `{addCookieHeader?: boolean; clientAddress?: string; locals?: object; preRenderedFetch: (string: string) => Promise; routeData?: RouteData;}`

-The `app.render()` method accepts a mandatory `request` argument, and an optional `RenderOptions` object for [`addCookieHeader`](#addcookieheader), [`clientAddress`](#clientaddress), [`locals`](#locals), and [`routeData`](#routedata). +The `app.render()` method accepts a mandatory `request` argument, and an optional `RenderOptions` object for [`addCookieHeader`](#addcookieheader), [`clientAddress`](#clientaddress), [`locals`](#locals), [`preRenderedFetch`](#preRenderedFetch), and [`routeData`](#routedata). ###### `addCookieHeader` @@ -277,6 +277,38 @@ try { } ``` +###### `preRenderedFetch` + +

+ +**Type:** `preRenderedFetch`
+**Default:** `fetch` +

+ +In some environments, it would be useful to provide a custom implementation for fetching the prerendered error pages, for example if you don't have `fetch` available +or cannot call the server from itself. + +The example bellow reads 500.html and 404.html from disk instead of performing an HTTP call. + +```js "preRenderedFetch" +return app.render(request, { + preRenderedFetch: async (url: string): Promise => { + if (url.includes("/500")) { + const content = await fs.promises.readFile("500.html", "utf-8"); + return new Response(content, { + status: 500, + headers: { "Content-Type": "text/html" }, + }); + } + + const content = await fs.promises.readFile("404.html", "utf-8"); + return new Response(content, { + status: 404, + headers: { "Content-Type": "text/html" }, + }); +}); +``` + ###### `routeData`

From 51ca816211b003dd871b36bd3c9dece065f4106f Mon Sep 17 00:00:00 2001 From: Yury Michurin Date: Wed, 19 Mar 2025 09:58:00 +0200 Subject: [PATCH 02/11] Add since --- src/content/docs/en/reference/adapter-reference.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index 269697f3c2602..7fde86b38bc0d 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -285,6 +285,8 @@ try { **Default:** `fetch`

+

+ In some environments, it would be useful to provide a custom implementation for fetching the prerendered error pages, for example if you don't have `fetch` available or cannot call the server from itself. From 1f991bd64566d2eaa95b3ed606e6bee845e95fa8 Mon Sep 17 00:00:00 2001 From: Yury Michurin Date: Wed, 19 Mar 2025 10:07:04 +0200 Subject: [PATCH 03/11] The id is lower case, so need to use lowercase in the link --- src/content/docs/en/reference/adapter-reference.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index 7fde86b38bc0d..ef854ea28d6ae 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -218,7 +218,7 @@ const response = await app.render(request); **Type:** `{addCookieHeader?: boolean; clientAddress?: string; locals?: object; preRenderedFetch: (string: string) => Promise; routeData?: RouteData;}`

-The `app.render()` method accepts a mandatory `request` argument, and an optional `RenderOptions` object for [`addCookieHeader`](#addcookieheader), [`clientAddress`](#clientaddress), [`locals`](#locals), [`preRenderedFetch`](#preRenderedFetch), and [`routeData`](#routedata). +The `app.render()` method accepts a mandatory `request` argument, and an optional `RenderOptions` object for [`addCookieHeader`](#addcookieheader), [`clientAddress`](#clientaddress), [`locals`](#locals), [`preRenderedFetch`](#prerenderedfetch), and [`routeData`](#routedata). ###### `addCookieHeader` From fe0c3821140352c9944390eaf444d91018f5939a Mon Sep 17 00:00:00 2001 From: Yury Michurin Date: Wed, 19 Mar 2025 10:54:01 +0200 Subject: [PATCH 04/11] Add clarification about default --- src/content/docs/en/reference/adapter-reference.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index ef854ea28d6ae..a3c51c67e008d 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -311,6 +311,8 @@ return app.render(request, { }); ``` +If not provided, Astro will fallback to its default behavior for fetching error pages. + ###### `routeData`

From 0fe82df43c0d8471ba544b5b35b726817b29c2e4 Mon Sep 17 00:00:00 2001 From: Yury Michurin Date: Thu, 27 Mar 2025 14:25:07 +0200 Subject: [PATCH 05/11] Since should be in the same block as Type/Default Co-authored-by: Armand Philippot --- src/content/docs/en/reference/adapter-reference.mdx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index a3c51c67e008d..10e0eadaf42a1 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -282,11 +282,10 @@ try {

**Type:** `preRenderedFetch`
-**Default:** `fetch` +**Default:** `fetch`
+

-

- In some environments, it would be useful to provide a custom implementation for fetching the prerendered error pages, for example if you don't have `fetch` available or cannot call the server from itself. From 7be431a0c5443b31d829ea6cdf0015b3027ea467 Mon Sep 17 00:00:00 2001 From: Yury Michurin Date: Thu, 27 Mar 2025 14:25:19 +0200 Subject: [PATCH 06/11] Typo Co-authored-by: Armand Philippot --- src/content/docs/en/reference/adapter-reference.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index 10e0eadaf42a1..50262a019e356 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -289,7 +289,7 @@ try { In some environments, it would be useful to provide a custom implementation for fetching the prerendered error pages, for example if you don't have `fetch` available or cannot call the server from itself. -The example bellow reads 500.html and 404.html from disk instead of performing an HTTP call. +The example below reads 500.html and 404.html from disk instead of performing an HTTP call. ```js "preRenderedFetch" return app.render(request, { From bdb86009af1042cae9e727ea0167c04d3bb21184 Mon Sep 17 00:00:00 2001 From: Yury Michurin Date: Thu, 27 Mar 2025 14:25:41 +0200 Subject: [PATCH 07/11] Exact type Co-authored-by: Armand Philippot --- src/content/docs/en/reference/adapter-reference.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index 50262a019e356..d4aa1b09314a2 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -281,7 +281,7 @@ try {

-**Type:** `preRenderedFetch`
+**Type:** `(url: ErrorPagePath) => Promise`
**Default:** `fetch`

From f001956e9079ed263582c3c21d496e3f23e34783 Mon Sep 17 00:00:00 2001 From: Yury Michurin Date: Thu, 27 Mar 2025 14:30:22 +0200 Subject: [PATCH 08/11] Update types Co-authored-by: Armand Philippot --- src/content/docs/en/reference/adapter-reference.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index d4aa1b09314a2..654c85820f35d 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -215,7 +215,7 @@ const response = await app.render(request);

-**Type:** `{addCookieHeader?: boolean; clientAddress?: string; locals?: object; preRenderedFetch: (string: string) => Promise; routeData?: RouteData;}` +**Type:** `{addCookieHeader?: boolean; clientAddress?: string; locals?: object; preRenderedFetch?: (url: ErrorPagePath) => Promise; routeData?: RouteData;}`

The `app.render()` method accepts a mandatory `request` argument, and an optional `RenderOptions` object for [`addCookieHeader`](#addcookieheader), [`clientAddress`](#clientaddress), [`locals`](#locals), [`preRenderedFetch`](#prerenderedfetch), and [`routeData`](#routedata). From 0968ef43dc71aa6956260970d3c0857d154ce67d Mon Sep 17 00:00:00 2001 From: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com> Date: Mon, 31 Mar 2025 19:43:12 -0300 Subject: [PATCH 09/11] light docs editing polish --- src/content/docs/en/reference/adapter-reference.mdx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index 654c85820f35d..e8c281cc2ba22 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -286,10 +286,11 @@ try {

-In some environments, it would be useful to provide a custom implementation for fetching the prerendered error pages, for example if you don't have `fetch` available -or cannot call the server from itself. +A function that allows you to provide custom implementations for fetching prerendered error pages. -The example below reads 500.html and 404.html from disk instead of performing an HTTP call. +This is used to override the default `fetch()` behavior, for example when `fetch()` is unavailable or when you cannot call the server from itself. + +The following example reads 500.html and 404.html from disk instead of performing an HTTP call: ```js "preRenderedFetch" return app.render(request, { From 34ee3a4939742efa998c0030552fea31348209d5 Mon Sep 17 00:00:00 2001 From: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com> Date: Tue, 1 Apr 2025 08:23:00 -0300 Subject: [PATCH 10/11] preRenderedFetch -> prerenderedErrorPageFetch --- src/content/docs/en/reference/adapter-reference.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index e8c281cc2ba22..bec4ac8b83b2a 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -215,10 +215,10 @@ const response = await app.render(request);

-**Type:** `{addCookieHeader?: boolean; clientAddress?: string; locals?: object; preRenderedFetch?: (url: ErrorPagePath) => Promise; routeData?: RouteData;}` +**Type:** `{addCookieHeader?: boolean; clientAddress?: string; locals?: object; prerenderedErrorPageFetch?: (url: ErrorPagePath) => Promise; routeData?: RouteData;}`

-The `app.render()` method accepts a mandatory `request` argument, and an optional `RenderOptions` object for [`addCookieHeader`](#addcookieheader), [`clientAddress`](#clientaddress), [`locals`](#locals), [`preRenderedFetch`](#prerenderedfetch), and [`routeData`](#routedata). +The `app.render()` method accepts a mandatory `request` argument, and an optional `RenderOptions` object for [`addCookieHeader`](#addcookieheader), [`clientAddress`](#clientaddress), [`locals`](#locals), [`prerenderedErrorPageFetch`](#prerenderedErrorPageFetch), and [`routeData`](#routedata). ###### `addCookieHeader` @@ -277,7 +277,7 @@ try { } ``` -###### `preRenderedFetch` +###### `prerenderedErrorPageFetch`

@@ -292,9 +292,9 @@ This is used to override the default `fetch()` behavior, for example when `fetch The following example reads 500.html and 404.html from disk instead of performing an HTTP call: -```js "preRenderedFetch" +```js "prerenderedErrorPageFetch" return app.render(request, { - preRenderedFetch: async (url: string): Promise => { + prerenderedErrorPageFetch: async (url: string): Promise => { if (url.includes("/500")) { const content = await fs.promises.readFile("500.html", "utf-8"); return new Response(content, { From 760011887744695a96b872f71752925c851d61c9 Mon Sep 17 00:00:00 2001 From: Sarah Rainsberger <5098874+sarah11918@users.noreply.github.com> Date: Tue, 1 Apr 2025 09:39:18 -0300 Subject: [PATCH 11/11] fix link and comma nit Co-authored-by: Yan <61414485+yanthomasdev@users.noreply.github.com> --- src/content/docs/en/reference/adapter-reference.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/en/reference/adapter-reference.mdx b/src/content/docs/en/reference/adapter-reference.mdx index bec4ac8b83b2a..06e6fdca9fe8c 100644 --- a/src/content/docs/en/reference/adapter-reference.mdx +++ b/src/content/docs/en/reference/adapter-reference.mdx @@ -218,7 +218,7 @@ const response = await app.render(request); **Type:** `{addCookieHeader?: boolean; clientAddress?: string; locals?: object; prerenderedErrorPageFetch?: (url: ErrorPagePath) => Promise; routeData?: RouteData;}`

-The `app.render()` method accepts a mandatory `request` argument, and an optional `RenderOptions` object for [`addCookieHeader`](#addcookieheader), [`clientAddress`](#clientaddress), [`locals`](#locals), [`prerenderedErrorPageFetch`](#prerenderedErrorPageFetch), and [`routeData`](#routedata). +The `app.render()` method accepts a mandatory `request` argument, and an optional `RenderOptions` object for [`addCookieHeader`](#addcookieheader), [`clientAddress`](#clientaddress), [`locals`](#locals), [`prerenderedErrorPageFetch`](#prerenderederrorpagefetch), and [`routeData`](#routedata). ###### `addCookieHeader` @@ -288,7 +288,7 @@ try { A function that allows you to provide custom implementations for fetching prerendered error pages. -This is used to override the default `fetch()` behavior, for example when `fetch()` is unavailable or when you cannot call the server from itself. +This is used to override the default `fetch()` behavior, for example, when `fetch()` is unavailable or when you cannot call the server from itself. The following example reads 500.html and 404.html from disk instead of performing an HTTP call: