feat(server): lightweight s3 client (#14348)

#### PR Dependency Tree


* **PR #14348** 👈

This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)

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

* **New Features**
* Added a dedicated S3-compatible client package and expanded
S3-compatible storage config (endpoint, region, forcePathStyle,
requestTimeoutMs, minPartSize, presign options, sessionToken).
* Document sync now broadcasts batched/compressed doc updates for more
efficient real-time syncing.

* **Tests**
* New unit and benchmark tests for base64 utilities and S3 multipart
listing; updated storage-related tests to match new formats.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
DarkSky
2026-02-01 21:54:39 +08:00
committed by GitHub
parent 059d3aa04a
commit f1a6e409cb
37 changed files with 1539 additions and 1712 deletions

View File

@@ -64,3 +64,27 @@ impl Task for AsyncMintChallengeResponse {
pub fn mint_challenge_response(resource: String, bits: Option<u32>) -> AsyncTask<AsyncMintChallengeResponse> {
AsyncTask::new(AsyncMintChallengeResponse { bits, resource })
}
#[cfg(test)]
mod tests {
use napi::Task;
use super::*;
#[test]
fn hashcash_roundtrip() {
let resource = "test-resource".to_string();
let mut mint = AsyncMintChallengeResponse {
bits: Some(8),
resource: resource.clone(),
};
let stamp = mint.compute().unwrap();
let mut verify = AsyncVerifyChallengeResponse {
response: stamp,
bits: 8,
resource,
};
assert!(verify.compute().unwrap());
}
}

View File

@@ -1,5 +1,9 @@
pub mod hashcash;
#[cfg(not(target_arch = "arm"))]
#[global_allocator]
static ALLOC: mimalloc::MiMalloc = mimalloc::MiMalloc;
#[allow(unused_imports)]
pub use affine_media_capture::*;
pub use affine_nbstore::*;