sproutboat 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/SURFACE.md +1 -1
- package/package.json +7 -7
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,59 @@ maintained going forward by the `release` skill.
|
|
|
10
10
|
|
|
11
11
|
## Unreleased
|
|
12
12
|
|
|
13
|
+
## [0.27.0] - 2026-10-22
|
|
14
|
+
|
|
15
|
+
Built on `@sproutboat/runtime` 0.27.1.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Bodies of megabytes no longer take hundreds of megabytes of memory. Turning
|
|
20
|
+
bytes into text and text into bytes made one string per character, so reading
|
|
21
|
+
a 5 MiB R2 object with `text()` peaked at about 400 MiB, and R2 multipart
|
|
22
|
+
uploads with real (5 MiB) parts ran sproutd's workers out of memory. On a
|
|
23
|
+
standalone build, at 5 MiB: `put()` of a string 82 to 16 MiB, `get()` and
|
|
24
|
+
`text()` 400 to 26 MiB, `request.text()` 402 to 24 MiB.
|
|
25
|
+
- R2 `uploadPart()` stores an `ArrayBuffer` or a typed array as its bytes, at
|
|
26
|
+
every date. It stored the text `[object ArrayBuffer]`.
|
|
27
|
+
- From compatibility date `2026-10-26`, `uploadPart()` takes what `put()` takes
|
|
28
|
+
(a `ReadableStream` or a `Blob` too) and stores text as UTF-8, as in Workers.
|
|
29
|
+
|
|
30
|
+
## [0.26.0] - 2026-10-22
|
|
31
|
+
|
|
32
|
+
Built on `@sproutboat/runtime` 0.27.0 and `@sproutboat/wire` 0.16.0.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- R2 behaves as in Workers from compatibility date `2026-10-26`:
|
|
37
|
+
- `get`, `put`, `head`, `delete`, `list` and `createMultipartUpload` return
|
|
38
|
+
Promises, and errors reject them.
|
|
39
|
+
- An object's `etag` is the MD5 of its bytes, with `checksums.md5`. Objects
|
|
40
|
+
written before keep their old etag.
|
|
41
|
+
- Objects have `uploaded` as a `Date`, `version`, `storageClass`, `range` and
|
|
42
|
+
`writeHttpMetadata(headers)`. A body has `body` (a `ReadableStream`),
|
|
43
|
+
`bodyUsed`, `text()`, `json()`, `arrayBuffer()` and `blob()`.
|
|
44
|
+
- `get(key, { range, onlyIf })` takes `{ offset, length }`, `{ suffix }` or a
|
|
45
|
+
`Range` header, and `etagMatches`, `etagDoesNotMatch`, `uploadedBefore`,
|
|
46
|
+
`uploadedAfter` or `If-*` headers. When the condition fails it returns the
|
|
47
|
+
object without a body.
|
|
48
|
+
- `put(key, value, { onlyIf, httpMetadata })` takes a `ReadableStream` or a
|
|
49
|
+
`Blob`, and `httpMetadata` as `Headers`. When the condition fails it returns
|
|
50
|
+
`null`.
|
|
51
|
+
- `delete([keys])` deletes several keys.
|
|
52
|
+
- `list({ prefix, limit, cursor, delimiter, include })` pages at up to 1,000
|
|
53
|
+
entries, groups keys into `delimitedPrefixes`, and returns `httpMetadata` and
|
|
54
|
+
`customMetadata` only when `include` asks for them.
|
|
55
|
+
- A value of the wrong type and a key longer than 1,024 bytes fail with R2's
|
|
56
|
+
errors.
|
|
57
|
+
|
|
58
|
+
Apps with an earlier date keep the synchronous R2. Move `compatibility_date`
|
|
59
|
+
to `2026-10-26` to opt in.
|
|
60
|
+
|
|
61
|
+
### Fixed
|
|
62
|
+
|
|
63
|
+
- An R2 `list()` prefix matches exactly, at every compatibility date. It used
|
|
64
|
+
SQL `LIKE`, so it ignored case and read `_` and `%` as wildcards.
|
|
65
|
+
|
|
13
66
|
## [0.25.0] - 2026-10-22
|
|
14
67
|
|
|
15
68
|
Built on `@sproutboat/runtime` 0.26.0 and `@sproutboat/wire` 0.15.0.
|
package/SURFACE.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sproutboat",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
4
|
"description": "Wrangler-shaped CLI for Sproutboat. Deploys workers to any control plane via --api-url / SPROUTBOAT_API_URL.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
"@sproutboat/artifact": "^0.3.0",
|
|
65
65
|
"@sproutboat/assets": "^0.3.0",
|
|
66
66
|
"@sproutboat/config": "^0.5.0",
|
|
67
|
-
"@sproutboat/runtime": "^0.
|
|
67
|
+
"@sproutboat/runtime": "^0.27.1",
|
|
68
68
|
"@sproutboat/toolchain": "^0.13.0",
|
|
69
|
-
"@sproutboat/wire": "^0.
|
|
69
|
+
"@sproutboat/wire": "^0.16.0"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@oxlint/plugins": "1.85.0",
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
"typescript": "7.0.2"
|
|
79
79
|
},
|
|
80
80
|
"optionalDependencies": {
|
|
81
|
-
"@sproutboat/cli-darwin-arm64": "0.
|
|
82
|
-
"@sproutboat/cli-darwin-x64": "0.
|
|
83
|
-
"@sproutboat/cli-linux-arm64": "0.
|
|
84
|
-
"@sproutboat/cli-linux-x64": "0.
|
|
81
|
+
"@sproutboat/cli-darwin-arm64": "0.27.0",
|
|
82
|
+
"@sproutboat/cli-darwin-x64": "0.27.0",
|
|
83
|
+
"@sproutboat/cli-linux-arm64": "0.27.0",
|
|
84
|
+
"@sproutboat/cli-linux-x64": "0.27.0"
|
|
85
85
|
},
|
|
86
86
|
"engines": {
|
|
87
87
|
"node": ">=18"
|