Another fix release, and one of the fixes cleans up after v0.6.6. Nothing to update, unless you run dist/run.js in a container without --host.
Double slashes in route paths
A route that starts with an optional param, say pages/{filter}/index.tsx, compiles to a pattern that carries its own leading slash: {/:filter}. Joined with the base, that becomes /{/:filter}, and filling it in gives //active.
v0.6.5 built the same string, but path() ran the result through join, which collapsed the slashes on the way out. The v0.6.6 fix for index links stopped doing that, and the double slash leaked through:
base "/" -> //active
base "/front" -> /front//active
base "/api" -> /api//activeThe first one is the worst of the three. A browser does not read //active as a path at all, it reads it as a link to a host named active.
Links and fetch clients both build their paths this way, so both were affected. The path builder normalizes its own output now: /active, /front/active, /api/active.
Empty replies no longer throw
A 204, 205 or 304 reply has no body.
The fetch client tried to parse it anyway, the parse failed, and since v0.3.0 a failed parse on a successful reply is thrown. So a DELETE that answered 204 No Content threw Unexpected end of JSON input.
Now a null body is simply not parsed.
This is not meant to be defensive about every empty body, though. A 200 with nothing in it still supposed to fail, but at different layer. That one is for response validation to catch, not for the fetch client to paper over.
dist/run.js listens on 127.0.0.1 by default
A follow-up to the v0.6.6 fix.
Without --host, v0.6.6 let the server pick, and it listened on every interface. v0.6.7 listens on 127.0.0.1 instead, the framework's default host.
Behind a reverse proxy on the same machine, that is what you want. In a container, pass the host explicitly:
node dist/run.js -h 0.0.0.0 -p 4556