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

supabase / supabase-flutter / 40907008793
94%

Build:
DEFAULT BRANCH: main
Ran 29 Oct 2026 04:00PM UTC
Jobs 12
Files 192
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

29 Oct 2026 03:58PM UTC coverage: 94.229% (-0.004%) from 94.233%
40907008793

push

github

web-flow
feat(storage): add byte-capped collect and atomic write-to-file for streamed downloads (#2103)

Adds two helpers for consuming a streamed storage download, following
the `storage.file_buckets.download_as_stream` spec. Closes SDK-2590.

## Changes

- `StorageByteStream` extension on `Stream<Uint8List>`:
- `collectBytes({int? maxBytes})` counts bytes as they arrive, after
decoding by the HTTP stack. Once the cap is exceeded it cancels the
subscription (closing the connection), discards what was collected and
throws `StorageDownloadTooLargeException`. It never looks at
`Content-Length`. Without a cap it collects the whole body.
- `writeToFile(String path)` writes to a new temporary file next to the
destination and renames it over the destination once the stream ends
cleanly. On any failure, including an abort, the temporary file is
deleted and the destination is untouched. The directory must exist. On
the web it throws `UnsupportedError`, through the existing `dart:io`
conditional import.
- `StorageDownloadTooLargeException` extends `StorageException` and
carries `maxBytes`.
- The helpers are extensions on the stream, so they work with whatever
shape `downloadStream` ends up with in SDK-2576. Nothing about
`downloadStream` changes.
- `sdk-compliance.yaml` registers the new symbols.
`storage.file_buckets.download_as_stream` stays `partially_implemented`,
since the remaining `downloadStream` drifts are still open in SDK-2576.

## Tests

Exceeding the cap (including that the stream is cancelled), a body
exactly at the cap, a gzip body counted after decoding through a real
local server, a failure halfway through the file write, an aborted
download, replacing an existing file, and a missing directory.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
<!-- coderabbit-ai-generated:v1 -->

## Summary by CodeRabbit

* **New Features**
* Downloaded byte streams can be collected into memory, with an optional
size limit. Exceeding the limit... (continued)

25 of 27 new or added lines in 3 files covered. (92.59%)

12459 of 13222 relevant lines covered (94.23%)

6.56 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
92.31
packages/supabase_storage/lib/src/file_io.dart
1
96.0
-0.4% packages/supabase_storage/lib/src/types.dart
Jobs
ID Job ID Ran Files Coverage
3 supabase_auth - 40907008793.3 29 Oct 2026 04:04PM UTC 34
94.81
GitHub Action Run
4 supabase_storage - 40907008793.4 29 Oct 2026 04:02PM UTC 12
95.88
GitHub Action Run
5 supabase_realtime - 40907008793.5 29 Oct 2026 04:02PM UTC 14
92.01
GitHub Action Run
6 postgrest - 40907008793.6 29 Oct 2026 04:03PM UTC 30
92.82
GitHub Action Run
7 supabase_test - 40907008793.7 29 Oct 2026 04:00PM UTC 9
93.55
GitHub Action Run
8 supabase_functions - 40907008793.8 29 Oct 2026 04:00PM UTC 4
94.01
GitHub Action Run
9 iceberg - 40907008793.9 29 Oct 2026 04:00PM UTC 7
99.72
GitHub Action Run
10 supabase_typegen - 40907008793.10 29 Oct 2026 04:02PM UTC 6
94.44
GitHub Action Run
11 supabase - 40907008793.11 29 Oct 2026 04:03PM UTC 21
94.52
GitHub Action Run
12 supabase_flutter - 40907008793.12 29 Oct 2026 04:00PM UTC 16
89.03
GitHub Action Run
3 yet_another_json_isolate - 40346664947.3 26 Oct 2026 03:11PM UTC 2
98.65
GitHub Action Run
8 supabase_common - 40887808401.8 29 Oct 2026 02:07PM UTC 37
94.39
GitHub Action Run
Source Files on build 40907008793
  • Tree
  • List 192
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #40907008793
  • b7ec9e6a on github
  • Prev Build on main (#40904007901)
  • Next Build on main (#40911627463)
  • Delete
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