Rerouted (regenerated, verified). Same repository and tag, but GitHub now builds the zip with different bytes, so it no longer matches the SHA-1 package.elm-lang.org recorded. The Lamdera package server serves a copy recovered from https://github.com/dillonkearns/elm-pages-v3-beta.
What we checked: Tag 8.0.0 is still on github.com/dillonkearns/elm-pages-v3-beta; its commit b7735572454e is from 2023-01-17 05:49 UTC, before the version was published (2023-01-17 05:52 UTC); elm.json is byte-identical to package.elm-lang.org's; the exposed modules match docs.json; the zip's SHA-1 is not the published one (GitHub's zip no longer comes out byte for byte the same), so the contents were checked instead.
The Lamdera compiler uses this copy and prints a one-line notice saying so. elm itself fails to download this version.
Details · package.elm-lang.org's zip: https://github.com/dillonkearns/elm-pages-v3-beta/zipball/8.0.0/
There are two top-level response types:
A Server Response is a way to directly send a low-level server response, with no additional magic. You can set a String body,
a list of headers, the status code, etc. The Server Response helpers like json and temporaryRedirect are just helpers for
building up those low-level Server Responses.
Render Responses are a little more special in the way they are connected to your elm-pages app. They allow you to render
the current Route Module. To do that, you'll need to pass along the data for your Route Module.
You can use withHeader and withStatusCode to customize either type of Response (Server Responses or Render Responses).
Build a 308 permanent redirect response.
Permanent redirects tell the browser that a resource has permanently moved. If you redirect because a user is not logged in, then you do not want to use a permanent redirect because the page they are looking for hasn't changed, you are just temporarily pointing them to a new page since they need to authenticate.
Permanent redirects are aggressively cached so be careful not to use them when you mean to use temporary redirects instead.
If you need to specifically rely on a 301 permanent redirect (see https://stackoverflow.com/a/42138726 on the difference between 301 and 308),
use customResponse instead.