• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Kikobeats / router-http / 31305711502
99%

Build:
DEFAULT BRANCH: master
Ran 09 Aug 2026 09:22AM UTC
Jobs 1
Files 1
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

09 Aug 2026 09:21AM UTC coverage: 99.45% (+1.5%) from 97.978%
31305711502

push

github

web-flow
fix: keep path middleware aligned with route normalization (#36)

* fix: keep path middleware aligned with route normalization

find-my-way can still match routes after collapsing duplicate slashes,
stripping semicolon delimiters, or folding case, while .use() mounts were
matched against the raw path — skipping auth middleware. Also run
onBadUrl/onMaxParamLength handlers instead of crashing on .handlers.

Co-authored-by: kikohumanbeatbox <kikohumanbeatbox@gmail.com>

* test: cover onBadUrl with raw http client

got rejects malformed percent-encoding before the request is sent, so the
onBadUrl regression uses Node's http client like the existing bad-URL test.

Co-authored-by: kikohumanbeatbox <kikohumanbeatbox@gmail.com>

* fix: mirror find-my-way fragment and absolute-form normalization

find-my-way truncates the lookup path at the first `#` unconditionally and
rewrites absolute-form request targets before matching. Neither was mirrored,
so `GET /admin#x` and `GET http://host/admin/secret` matched a route while
skipping its `.use()` mount, on default options.

Option detection now follows find-my-way's truthiness (`ignoreDuplicateSlashes`,
`useSemicolonDelimiter`) instead of `=== true`, and `caseSensitive` mirrors both
sides separately: routes are lowercased on `!caseSensitive`, the lookup path on
`caseSensitive === false`.

Mount stripping re-adds the leading slash whenever the remainder is not already
rooted, covering `;` and `#` remainders.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XYfkdSmf8BZzjm1oqP26A2

* fix: scope req.url rewriting and align query with the path delimiter

The req.url rewrite ran before any lookup, so a router mounted as connect
middleware handed a normalized url downstream even when it matched nothing
and delegated via next(). Only a matching .use() mount strips a prefix off
req.url, so only that path needs the rewrite.

req.path stopped at `#`/`;` while... (continued)

187 of 189 branches covered (98.94%)

Branch coverage included in aggregate %.

411 of 411 new or added lines in 1 file covered. (100.0%)

536 of 538 relevant lines covered (99.63%)

2812.51 hits per line

Jobs
ID Job ID Ran Files Coverage
1 31305711502.1 09 Aug 2026 09:22AM UTC 1
99.45
GitHub Action Run
Source Files on build 31305711502
  • Tree
  • List 1
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #31305711502
  • f581ef88 on github
  • Prev Build on master (#30891753913)
  • Next Build on master (#32227790585)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc