Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

oak-backend-base 更新日志

当前 package5.0.1
最新 tag5.0.0
覆盖区间4.1.29..5.0.0 / 5.0.0..HEAD

5.0.1 未发布(区间:5.0.0..HEAD

未发布server bundle runtime、routine 动态注册、endpoint 上下文和同步 trigger 是主要变化面。
  • AppLoader / ClusterAppLoader 构造函数新增 AppLoaderOptions,可传入 runtimeManifest。server bundle 可直接注入依赖顺序、同步配置、domain schema / actionDef、BackendRuntimeContext、runtime modules、ports 和 socket entry,不再强依赖项目 lib/* 文件路径逐个 require
  • runtime module 合并入口覆盖 exceptionsrelationaspectstriggerscheckersattrUpdateMatrixdataendpointswatcherstimersstartRoutinesstopRoutines;ports 也支持多份配置合并注册。
  • AppLoader 暴露运行时注册接口:registerTrigger / unregisterTriggerregisterChecker / unregisterCheckerregisterWatcher / unregisterWatcherregisterTimer / unregisterTimer / rescheduleTimerDbStore 同步透出 trigger / checker 注销能力。
  • start / stop free routine 收到的 runtime env 从 { socket, contextBuilder } 扩展为完整注册控制对象,routine 可以在启动或停止阶段动态挂载、移除、重排 trigger / checker / watcher / timer。
  • watcher 初始化改为 registry 模式:startWatchers() 首次初始化后从 registry 读取,支持后续动态注册;lazy watcher 的 skip-once 状态集中保存,注销 watcher 时会同步清理 skip 状态和执行中标记。
  • timer 调度拆成 executeTimerscheduleTimerregisterTimerunregisterTimerrescheduleTimer,重复 timer 名会立即报错,非法 cron 创建失败也会明确抛错;unmount() 统一通过 unregisterTimer 取消任务。
  • free endpoint 增加 connector metadata 透传:getEndpoints() 会把 protocoluseConnector 作为 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/toolkitoak-common-aspectoak-dboak-domain 转为 peer dependencies 并对齐 oak-domain 6.0.1;TypeScript / Vitest 等开发依赖升级,TS6 参数兼容同步进入源码和声明。
主要 diff 文件:src/AppLoader.tssrc/ClusterAppLoader.tssrc/DbStore.tssrc/Synchronizer.tssrc/types/runtime-manifest.tssrc/routines/i18n.tssrc/utils/requirePrj.tstest/test_sync_lock/index.tspackage.json

5.0.0(tag:5.0.0,区间:4.1.29..5.0.0

已发布5.x upgrade 和后端上下文迁移版本。
  • upgrade 命令、upgrade table、migration plan、rollback artifacts 和执行顺序重构。
  • 后端运行时上下文切到 oak-domain 提供的 BackendRuntimeContext
  • 初始化数据工具和 dbPriority 配置读取路径整理。
  • i18n 支持注入,不再作为后端基础包的硬依赖。
主要 diff 文件:src/upgrade.tssrc/routines/update.tssrc/dbPriority.tstest_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 和执行中标记。