oak-backend-base 更新日志
5.0.1 未发布(区间:5.0.0..HEAD)
AppLoader/ClusterAppLoader构造函数新增AppLoaderOptions,可传入runtimeManifest。server bundle 可直接注入依赖顺序、同步配置、domain schema / actionDef、BackendRuntimeContext、runtime modules、ports 和 socket entry,不再强依赖项目lib/*文件路径逐个require。- runtime module 合并入口覆盖
exceptions、relation、aspects、triggers、checkers、attrUpdateMatrix、data、endpoints、watchers、timers、startRoutines、stopRoutines;ports 也支持多份配置合并注册。 AppLoader暴露运行时注册接口:registerTrigger/unregisterTrigger、registerChecker/unregisterChecker、registerWatcher/unregisterWatcher、registerTimer/unregisterTimer/rescheduleTimer。DbStore同步透出 trigger / checker 注销能力。- start / stop free routine 收到的 runtime env 从
{ socket, contextBuilder }扩展为完整注册控制对象,routine 可以在启动或停止阶段动态挂载、移除、重排 trigger / checker / watcher / timer。 - watcher 初始化改为 registry 模式:
startWatchers()首次初始化后从 registry 读取,支持后续动态注册;lazywatcher 的 skip-once 状态集中保存,注销 watcher 时会同步清理 skip 状态和执行中标记。 - timer 调度拆成
executeTimer、scheduleTimer、registerTimer、unregisterTimer、rescheduleTimer,重复 timer 名会立即报错,非法 cron 创建失败也会明确抛错;unmount()统一通过unregisterTimer取消任务。 - free endpoint 增加 connector metadata 透传:
getEndpoints()会把protocol、useConnector作为 route options 返回给oak-cli;当useConnector为真时,free endpoint 的contextBuilder会使用请求头里的oak-cxt,没有oak-cxt时用{}初始化上下文,避免落入undefined初始化路径。 - 后端数据库创建链路增加 SQLite 支持;包自身编译已切到 Oak CLI,并启用当前 render 注入检查参数,和业务包的严格构建合同保持一致。
- connector-backed SSE endpoint 与
oak-domain/utils/sseEndpoint.makeSSEEndpoint(...)对齐:type: 'free'、protocol: 'sse'、useConnector: true的 endpoint 可以让oak-cli调用 connector 的 SSE 序列化能力。 Synchronizer的 sync trigger 增加运行锁,避免并发 commit trigger 同时扫描 / 锁定同一批oper;channel 推送失败会被正确 await 并转为OakPartialSuccess,不再让异步 rejection 漏出同步流程。- 同步 oper 数据清理从 lodash
unset改为只删除自身属性,避免TriggerDataAttribute/TriggerUuidAttribute这类带点字面量 key 被误当成路径删除。 - cluster volatile trigger 收到远端事件时会先检查本实例是否还注册对应 commit trigger;trigger 注销时同步清理
commitTriggers,避免动态卸载后仍响应跨进程事件。 - 依赖层调整:
lodash移除,改用oak-domain/lib/utils/toolkit;oak-common-aspect、oak-db、oak-domain转为 peer dependencies 并对齐oak-domain6.0.1;TypeScript / Vitest 等开发依赖升级,TS6 参数兼容同步进入源码和声明。
主要 diff 文件:
src/AppLoader.ts、src/ClusterAppLoader.ts、src/DbStore.ts、src/Synchronizer.ts、src/types/runtime-manifest.ts、src/routines/i18n.ts、src/utils/requirePrj.ts、test/test_sync_lock/index.ts、package.json5.0.0(tag:5.0.0,区间:4.1.29..5.0.0)
- upgrade 命令、upgrade table、migration plan、rollback artifacts 和执行顺序重构。
- 后端运行时上下文切到
oak-domain提供的BackendRuntimeContext。 - 初始化数据工具和
dbPriority配置读取路径整理。 - i18n 支持注入,不再作为后端基础包的硬依赖。
主要 diff 文件:
src/upgrade.ts、src/routines/update.ts、src/dbPriority.ts、test_upgrade/*升级注意
升级流程:升级 5.x 时应重新跑 upgrade 流程并检查 rollback artifacts。后端启动脚本如果手写 DB 配置读取顺序,需要对齐
dbPriority 的当前规则。endpoint 上下文:普通 free endpoint 仍不会自动继承调用方上下文;只有声明
useConnector: true 的 free endpoint 会从 connector 解析出的 oak-cxt 初始化 context。匿名 endpoint 如果依赖 application / user / rootMode,仍应显式确认上下文来源。动态注册:routine 现在可以动态注册和注销 watcher / timer / trigger / checker。注册名仍必须保持唯一,注销 watcher 会清理该 watcher 的 skip-once 和执行中标记。