From 0b48bfb77a1a051216a3ead95438f1a8409fb3ef Mon Sep 17 00:00:00 2001 From: George Moon Date: Sat, 31 Oct 2026 16:22:16 -0400 Subject: [PATCH] chore(release): 5.0.0 Breaking: unmapped S3 errors are sanitized to S3ProxyError(500) (original on err.cause), and mid-stream failures now terminate the response. See #124. Co-Authored-By: Claude Opus 4.8 (1M context) --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1a0f0d3 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog + +All notable changes to this project are documented in this file. This project +adheres to [Semantic Versioning](https://semver.org/). + +## [5.0.0](https://github.com/gmoon/s3proxy/compare/v4.2.1...v5.0.0) (2026-10-31) + +### ⚠ BREAKING CHANGES + +* **errors:** `fetch()`, `send()`, and `init()` now reject with a sanitized + `S3ProxyError` (status `500`) for previously-unclassified errors instead of + the raw `S3ServiceException`/AWS error. The original error is preserved on + `err.cause` for server-side logging. The known mappings — `S3NotFound` (404), + `S3Forbidden` (403), `S3InvalidRange` (416) — are unchanged. Consumers that + branch on raw AWS error types or messages must read `err.cause` instead. +* **streaming:** a mid-stream S3 failure (after status and headers have already + been sent) now terminates (destroys) the response rather than `end()`-ing it, + so a truncated body surfaces as a broken connection instead of a silently + short "successful" response. Affects `pipe()`, `middleware()`, and the + static-site adapter. + +### 🔒 Security + +* sanitize unmapped S3 errors so AWS internals (bucket region/endpoint, + request id, bucket name) can no longer leak into proxied error responses, and + switch the core streaming path to `stream.pipeline()` so the S3 source socket + is torn down when a client disconnects mid-transfer + ([#124](https://github.com/gmoon/s3proxy/pull/124)) diff --git a/package-lock.json b/package-lock.json index fcd8a8c..6561a9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "s3proxy", - "version": "4.2.1", + "version": "5.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "s3proxy", - "version": "4.2.1", + "version": "5.0.0", "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-s3": "^3.832.0" diff --git a/package.json b/package.json index 33eef43..2d3e1f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "s3proxy", - "version": "4.2.1", + "version": "5.0.0", "description": "Streaming web proxy for AWS S3", "main": "dist/src/index.js", "types": "dist/src/index.d.ts",