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

supabase / supabase-swift / 28715233386
81%

Build:
DEFAULT BRANCH: main
Ran 04 Jul 2026 06:23PM UTC
Jobs 1
Files 94
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

04 Jul 2026 06:13PM UTC coverage: 80.957% (+0.2%) from 80.807%
28715233386

push

github

web-flow
fix(auth): decode callback URL params once, with form semantics (#1070)

* fix(auth): parse callback URL params with URL form decoding

extractParams had three defects versus parseParametersFromURL in
auth-js:

- Fragment pairs whose value contains an equals sign were dropped, and
  trailing base64 padding was truncated, because the parser split on
  every equals sign and kept only exact pairs.
- The fragment was taken from URLComponents.fragment, which percent-
  decodes before splitting, so encoded delimiters (%26, %3D) corrupted
  the parse and double-encoded values decoded twice.
- Plus signs were never decoded as spaces on either path, so GoTrue
  error descriptions rendered as Email+link+is+invalid+or+has+expired.

Parse the percent-encoded fragment and query with the same
URLSearchParams semantics: split pairs first, then decode plus signs
and percent escapes once.

* refactor(auth): address review — remove double + decoding, keep prior pair semantics

- Drop the now-redundant `+`→space passes in handleImplicitGrantFlow and
  handlePKCEFlow (decoding is centralized in extractParams; the second pass
  corrupted values with a literal + sent as %2B).
- Drop bare keys and empty-value pairs so error-detection control flow
  matches the previous implementation.
- Rename the private helper to parseFormEncodedPairs and build pairs
  directly instead of allocating URLQueryItem.

* test(auth): cover reviewer scenarios — bare query key dropped, literal + preserved

* chore: ignore url-encoded cspell fragments

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>

18 of 18 new or added lines in 2 files covered. (100.0%)

6 existing lines in 2 files now uncovered.

7665 of 9468 relevant lines covered (80.96%)

36.87 hits per line

Coverage Regressions

Lines Coverage ∆ File
5
37.23
11.68% Sources/Auth/Internal/Keychain.swift
1
41.67
-8.33% Sources/Auth/Storage/KeychainLocalStorage.swift
Jobs
ID Job ID Ran Files Coverage
1 28715233386.1 04 Jul 2026 06:23PM UTC 94
80.96
GitHub Action Run
Source Files on build 28715233386
  • Tree
  • List 94
  • Changed 4
  • Source Changed 2
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28715233386
  • 3b749aae on github
  • Prev Build on main (#28681755602)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc