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 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
@@ -3,7 +3,7 @@
3
3
  > Generated by `src/surface.test.ts` from `src/surface.ts` + the pinned
4
4
  > toolchain constants. Do not edit by hand — run `UPDATE_SURFACE=1 bun test`.
5
5
 
6
- **Package:** `sproutboat` 0.25.0
6
+ **Package:** `sproutboat` 0.27.0
7
7
 
8
8
  ## Commands
9
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sproutboat",
3
- "version": "0.25.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.26.0",
67
+ "@sproutboat/runtime": "^0.27.1",
68
68
  "@sproutboat/toolchain": "^0.13.0",
69
- "@sproutboat/wire": "^0.15.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.25.0",
82
- "@sproutboat/cli-darwin-x64": "0.25.0",
83
- "@sproutboat/cli-linux-arm64": "0.25.0",
84
- "@sproutboat/cli-linux-x64": "0.25.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"