@livdot-tech/contracts

中文文档
1.19.1发布于 2026/11/02TypeScriptESM + CJS零依赖

LivDot平台的共享API契约

中文使用文档
文档目录10 节
  1. 目的
  2. 使用此包的存储库
  3. 属于这里的东西
  4. 这里不能添加什么
  5. 所有权
  6. 版本控制
  7. 变化的规则
  8. 结构
  9. 安装与使用
  10. 目标

LivDot共享合同

用于跨LivDot平台使用的模式和面向api的共享类型的中央契约存储库。

目的

这个存储库的存在是为了保持后端、前端和移动端在相同的契约表面上对齐,而不需要将代码库耦合到一个单线程中。 它是以下内容的单一共享源:

  • 请求和响应模式
  • 域枚举和状态常数
  • 规范错误码
  • 共享dto和验证规则
  • 其他api边界定义必须在服务和客户端之间保持一致

使用此包的存储库

  • livdot-backend
  • livdot-frontend
  • livdot-mobile

属于这里的东西

只有跨堆栈契约工件。 示例:

  • CreateEventRequest
  • BookingState
  • EventState
  • ApiErrorCode
  • 用于有效负载验证的模式
  • 共享的授权/令牌有效负载形状(如适用)

这里不能添加什么

这个存储库是 不 共享代码的垃圾场。 做。 不 添加:

  • 后端业务逻辑
  • ORM /数据库模型
  • 库/服务/用例
  • 前端UI组件
  • 特定于移动设备的运行时代码
  • 基础设施或部署逻辑
  • 不属于跨堆栈契约的实用程序 如果它不是合同边界的一部分,它就不属于这里。

所有权

后端仍然是系统行为和API真实性的权威。 这个存储库定义了 合同的形状,而不是实现或业务逻辑。

版本控制

发布是自动化的。 semantic-release 读取常规提交消息 main 并决定 他写道: CHANGELOG.md,标记,并发布到npm。 不要编辑 version 场 package.json 用手 - CI拥有它。

commit前缀决定了bump:

  • fix: → 补丁,向后兼容的修复
  • feat: → 小,向后兼容的添加
  • feat!: 或者一个 BREAKING CHANGE: 页脚→ 主要的

因为碰撞是从提交消息而不是从模式差异派生的,所以中断 提交的更改 fix: 将作为补丁发布。字段删除和重命名必须带有分隔符 标记。

消费者确定一个符号范围,并通过审查升级。

变化的规则

任何契约变更都必须谨慎对待,因为它可能影响多个代码库。 在合并更改之前:

  1. 确认更改确实是跨堆栈的
  2. 确定它是否断开或不断开
  3. 适当更新版本
  4. 如果消费者需要更改代码,则记录迁移说明

结构

每个域一个文件夹,每个导出 *.enums.ts, *.schemas.ts 和 *.types.ts 通过一个 index.ts 桶。

src/
  auth/          user/          event/
  booking/       marketplace/   joblisting/
  host/          moment/        chat/
  payment/       streaming/     dispute/
  notification/  common/        errors/
  index.ts       # master barrel

common/ 持有 CurrencyEnum、分页、审计枚举和 ResponseMessages; errors/ 拥有 ApiErrorCode 目录; booking/ 另外拥有 booking-state-machine.ts -有效的 转换、每个转换参与者RBAC以及哪些目标状态需要 reason.

添加域意味着三次编辑:创建包含其的文件夹 index.ts,重新出口 src/index.ts, 把它加到 entry 数组中 tsup.config.ts -错过了最后一个和 @livdot-tech/contracts/<domain> Subpath解析为空。

安装与使用

npm install @livdot-tech/contracts zod

zod 是一个 同行的依赖,而不是捆绑——包没有运行时依赖,并且保持 Zod在消费者端意味着只有一个Zod实例在运行。

import { BookingState, CurrencyEnum } from '@livdot-tech/contracts';
import { VALID_BOOKING_TRANSITIONS } from '@livdot-tech/contracts/booking';

看到 文档/ README.md 有关使用详情,请参阅 文档/ ONBOARDING.md 对于设置,以及 架构/ SAD.md 加上 架构决策/ 对于设计决策。

目标

保持契约明确、版本化和稳定。

这个存储库的存在是为了提高后端、前端和移动端的一致性,同时在独立的LivDot代码库之间保持清晰的所有权界限。

版本与发布记录

@livdot-tech/contracts 共发布 153 个版本,首次发布于 2026/04/28;过去 12 个月发布了 153 个版本。

版本发布日期距今
1.19.1latest2026/11/021 天前
1.19.02026/11/012 天前
1.18.62026/10/312 天前
1.18.52026/10/303 天前
1.18.42026/10/304 天前
1.18.32026/10/285 天前

关于 @livdot-tech/contracts 的常见问题

@livdot-tech/contracts 是什么?

LivDot平台的共享API契约

如何安装 @livdot-tech/contracts?

在项目目录运行 npm install @livdot-tech/contracts,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:zod(^4.4.3)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@livdot-tech/contracts 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@livdot-tech/contracts 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@livdot-tech/contracts 可以商用吗?

@livdot-tech/contracts 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@livdot-tech/contracts 还在维护吗?

最新版本 1.19.1 发布于 2026/11/02(1 天前);至今共发布 153 个版本,其中过去 12 个月发布了 153 个;首次发布于 2026/04/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。