SuperAPI AI 工具集

effect-and-errors

通用与其它

查看项目

更新于 10-16 06:22

技能介绍

用途:在 Effect TS 项目中组合 Effect 程序、定义领域错误与 HttpError、设计仓储错误类型,并在 HTTP 边界传播错误。

主要能力与约定:优先用 Effect.gen 做顺序组合;用 Effect.tryPromise 包装 Promise API 并带类型化错误;用 Data.TaggedError 定义领域错误;用 Effect.repeat 配合 Schedule 做轮询;用 Fiber 管理长生命周期。领域错误须实现 HttpError 接口(httpStatus、httpMessage),静态消息用 readonly 字段,动态消息用 getter。仓储返回类型化错误(如 NotFoundError)而非 null。路由不写 try/catch,由 app.onError(honoErrorHandler) 集中转换 HttpError 为 HTTP 响应。

作用域限制:在 Layer.effect 构建闭包中不得捕获请求/作业作用域服务(SqlClient、ChSqlClient、HttpServerRequest、会话级认证上下文等),应在每个方法内重新 yield* 解析;端口方法签名的 R 通道需包含这些服务,并用 @effect-leakable-service 标注。进程单例服务(密钥、静态配置、队列发布者)可在构建时捕获。

可观测性:通过 @effect/opentelemetry 接入 OTel。每个用例函数用 Effect.withSpan 包裹,命名 {domain}.{functionName}(camelCase),并用 Effect.annotateCurrentSpan 标注关键 ID。每个 Effect.runPromise 调用点需在管道中加入 withTracing(来自 @repo/observability),与 withPostgres/withClickHouse 并列;否则 withSpan 为空操作。

使用方式:先运行 effect-solutions list 查看指南,再运行 effect-solutions show <topic>... 获取模式,可查阅 ~/.local/share/effect-solutions/effect 中的 Effect v4 源码。

限制:资料未提供安装命令、收费、平台与效果数据。