taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit b843f0f73e0fa1d2dfa429077f77c28c01536e76
parent 051704d0d9b3a7e921c91a559e65c79a31f3fdc5
Author: Florian Dold <dold@taler.net>
Date:   Sun, 23 Aug 2026 10:53:05 +0200

web-util: fix trailing-slash story URL

Diffstat:
Mpackages/web-util/src/serve.ts | 12+++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/packages/web-util/src/serve.ts b/packages/web-util/src/serve.ts @@ -4,6 +4,8 @@ import { createApp, createRouter, defineEventHandler, + getRequestURL, + sendRedirect, toNodeListener, setResponseHeader, serveStatic, @@ -107,6 +109,14 @@ export async function serve(opts: { router.get( PATHS.EXAMPLE, defineEventHandler((event) => { + const requestUrl = getRequestURL(event); + if (requestUrl.pathname.endsWith("/")) { + return sendRedirect( + event, + `..${PATHS.EXAMPLE}${requestUrl.search}`, + 307, + ); + } setResponseHeader(event, "Content-Type", "text/html"); return storiesHtml .replace( @@ -133,7 +143,7 @@ export async function serve(opts: { <dt><a href="./app/">app</a></dt> <dd>Where you can find the application. Reloads on update.</dd> - <dt><a href="./examples/">ui examples</a></dt> + <dt><a href="./examples">ui examples</a></dt> <dd>Where you can browse static UI examples. Reloads on update.</dd> <dt><a href="./ws/">websocket</a></dt>