@h-ai/storage 0.1.0-alpha.70 → 0.1.0-alpha.72

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.
Files changed (2) hide show
  1. package/README.md +21 -21
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -255,27 +255,6 @@ if (!result.success && result.error.code === HaiStorageError.NOT_INITIALIZED.cod
255
255
 
256
256
  `uploadWithPresignedUrl(url, data, { onProgress, abortController })` 使用原生 XHR 报告进度;不传 `onProgress` 时使用 fetch。预先取消不发送请求,准备阶段和进行中取消、外部 XHR abort、网络/超时及进度回调异常都只结算一次失败,并移除本次监听。完成后再取消不会操作旧 XHR。取消只终止本地请求,不能回滚远端已写入的对象;应用须先核对对象状态,再授权删除。
257
257
 
258
- ## 开发测试
259
-
260
- ```bash
261
- pnpm --filter @h-ai/storage test
262
- ```
263
-
264
- S3 集成测试需要可用的 Docker 或兼容运行时;同一套初始化、文件、目录、预签名及真实 HTTP 上传下载用例分别在 MinIO 和 RustFS 上运行,不跳过容器启动失败。
265
-
266
- - MinIO:[`ghcr.io/coollabsio/minio:RELEASE.2025-10-15T17-29-55Z`](https://github.com/coollabsio/minio),从上游源码构建的社区镜像。
267
- - RustFS:[`ghcr.io/rustfs/rustfs:1.0.1`](https://github.com/rustfs/rustfs),官方镜像。
268
-
269
- 容器使用临时生成的测试凭据,等待服务就绪后通过 S3 API 建桶;最后一个租约释放时移除容器及匿名卷。
270
-
271
- 源码 JSDoc 遵循[统一规范](../../.agents/instructions/module-conventions.md#jsdoc-与示例验证):公开示例使用实际发布入口,内部示例在原模块作用域检查。构建后执行 `pnpm check:jsdoc --package storage`;示例编译不代替真实后端行为验证。
272
-
273
- 真实 Chrome 回归:先安装可用的 Chrome,设置 `HAI_STORAGE_RUN_BROWSER_GATES=1` 后执行 `pnpm --filter @h-ai/storage exec vitest run tests/storage-client-browser.test.ts`。该门禁实际发送 HTTP PUT 并检查原生取消和监听清理;缺少浏览器会失败。
274
-
275
- ## 许可证
276
-
277
- Apache-2.0
278
-
279
258
  ## 存储输入约束与跨端能力
280
259
 
281
260
  `@h-ai/storage/schemas` 是仅依赖 Zod 的浏览器安全入口;`api-contract` 与 `serv` 复用同一规则。Schema 只校验输入,服务端仍先认证、再按可信 session 授权每个资源,Local Provider 仍执行文件系统防逃逸。调用方不能把前缀校验或分页游标当成授权。
@@ -315,3 +294,24 @@ if (key.success) {
315
294
  | `presign.publicUrl` | 无默认端点 | 应用按公开资源策略使用 | 仅配置公开 S3 地址时有 URL;不是鉴权链接,Local 为 null |
316
295
 
317
296
  `FileUpload` / `ImageUpload` / `AvatarUpload` 的 `uploadHandler` 由应用实现。组件的 `maxSize`、`accept` 只负责前端选择体验,不能约束拿到签名后绕过组件的上传;服务端应在对象落库/回调或独立代理上传处验证实际大小、类型、内容和归属,再发布业务记录。不要把 Node `UploadOptions` 当成签名选项,也不要给组件编造不存在的框架上传端点。
297
+
298
+ ## 开发测试
299
+
300
+ ```bash
301
+ pnpm --filter @h-ai/storage test
302
+ ```
303
+
304
+ S3 集成测试需要可用的 Docker 或兼容运行时;同一套初始化、文件、目录、预签名及真实 HTTP 上传下载用例分别在 MinIO 和 RustFS 上运行,不跳过容器启动失败。
305
+
306
+ - MinIO:[`ghcr.io/coollabsio/minio:RELEASE.2025-10-15T17-29-55Z`](https://github.com/coollabsio/minio),从上游源码构建的社区镜像。
307
+ - RustFS:[`ghcr.io/rustfs/rustfs:1.0.1`](https://github.com/rustfs/rustfs),官方镜像。
308
+
309
+ 容器使用临时生成的测试凭据,等待服务就绪后通过 S3 API 建桶;最后一个租约释放时移除容器及匿名卷。
310
+
311
+ 源码 JSDoc 遵循[统一规范](../../.agents/instructions/module-conventions.md#jsdoc-与示例验证):公开示例使用实际发布入口,内部示例在原模块作用域检查。构建后执行 `pnpm check:jsdoc --package storage`;示例编译不代替真实后端行为验证。
312
+
313
+ 真实 Chrome 回归:先安装可用的 Chrome,设置 `HAI_STORAGE_RUN_BROWSER_GATES=1` 后执行 `pnpm --filter @h-ai/storage exec vitest run tests/storage-client-browser.test.ts`。该门禁实际发送 HTTP PUT 并检查原生取消和监听清理;缺少浏览器会失败。
314
+
315
+ ## 许可证
316
+
317
+ Apache-2.0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@h-ai/storage",
3
3
  "type": "module",
4
- "version": "0.1.0-alpha.70",
4
+ "version": "0.1.0-alpha.72",
5
5
  "description": "Hai Framework object storage module for S3-compatible and local backends.",
6
6
  "license": "Apache-2.0",
7
7
  "exports": {
@@ -36,7 +36,7 @@
36
36
  "@aws-sdk/client-s3": "^3.1149.0",
37
37
  "@aws-sdk/lib-storage": "^3.1149.0",
38
38
  "@aws-sdk/s3-request-presigner": "^3.1149.0",
39
- "@h-ai/core": "0.1.0-alpha.70",
39
+ "@h-ai/core": "0.1.0-alpha.72",
40
40
  "zod": "^4.6.5"
41
41
  },
42
42
  "devDependencies": {