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

supabase / supabase-swift / 41040687466
96%

Build:
DEFAULT BRANCH: main
Ran 30 Oct 2026 10:32AM UTC
Jobs 1
Files 189
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

30 Oct 2026 10:25AM UTC coverage: 93.975% (+0.01%) from 93.963%
41040687466

push

github

web-flow
feat(supabase): typed postgresChanges(for:where:) over _PostgrestRelation (#1670)

* feat(supabase): typed postgresChanges(for:where:) over _PostgrestRelation

Add an experimental RealtimeChannel.postgresChanges(for:event:where:decoder:)
in the Supabase module. The relation supplies the schema and table, and the
where closure builds the row filter from the same column namespace a typed
query uses. The filter renders to the postgres_changes grammar: comparisons,
a negated single condition, and && joined by commas. Filters Realtime cannot
run (||, ! over a group, array/range/JSON/full-text operators, JSON paths)
trap with preconditionFailure at construction.

PostgrestFilterNode becomes package-visible so Supabase can render it without
Realtime depending on PostgREST. Rows decode with the PostgREST decoder.

Fixes SDK-2112

* test(supabase): declare PostgrestMacros in the 6.2 manifest and guard exit tests

SupabaseTests imports PostgrestMacros for its @Table fixture, but only
Package.swift declared it, so Swift 6.2/6.3 and Xcode 26 builds failed.
The exit tests now run only on macOS and Linux, like the other exit tests
in the repo, since processExitsWith is unavailable on iOS and Mac Catalyst.

* test(supabase): use a hand-written relation fixture instead of @Table

Depending on PostgrestMacros pulled the macro plugin's sources into the
iOS coverage report at 0%, which dropped Coveralls by 3.9%. The unit test
now spells out the relation as @Table would expand it, and both manifests
go back to main. The integration test still exercises a generated @Table
relation.

* fix(supabase): check raw nodes in typed Realtime filters

A raw filter node went to Realtime as written, so an unsupported operator
reached the join instead of trapping like the typed operators do. Raw and
typed nodes now share one operator list (the server's realtime.equality_op
values) and one column check, which also rejects casts. A raw operand must
be in operator.value form, and a raw n... (continued)

93 of 96 new or added lines in 3 files covered. (96.88%)

1 existing line in 1 file now uncovered.

13243 of 14092 relevant lines covered (93.98%)

591674.12 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
96.59
Sources/Supabase/RealtimeChannel+TypedPostgresChanges.swift

Coverage Regressions

Lines Coverage ∆ File
1
98.56
-0.29% Sources/Auth/Internal/SessionStore.swift
Jobs
ID Job ID Ran Files Coverage
1 41040687466.1 30 Oct 2026 10:32AM UTC 189
93.98
GitHub Action Run
Source Files on build 41040687466
  • Tree
  • List 189
  • Changed 3
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #41040687466
  • 287cfcc5 on github
  • Prev Build on main (#41025581756)
  • Next Build on main (#41051547105)
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