Files
ArtPlayer/refactor/changes/2026-09-12-PKG-DASH-03-runtime.md
T

2.8 KiB

PKG-DASH-03:两代 SDK 适配、菜单与生命周期拆分

起点 762cc634。把单一入口拆为入口生命周期、SDK 方法适配、selector 模型、菜单所有权 四个模块。保持 JavaScript 完成本步结构与行为修复,下一步 04 再迁移严格 TS 和公开声明。 包内 架构图 随实际实现维护。

行为修正

  • 恢复发布版 dash.js 4.x 方法表,同时保留工作区 5.x 稳定 ID;不使用过滤后的下标选画质。
  • 空拓扑、禁用菜单、渲染失败清理自有 UI;换 SDK/重建/销毁后旧引用无副作用。
  • 销毁释放 ready/restart/destroy 订阅,安装异常回滚;不销毁调用方 SDK,不误删调用方替换的菜单。
  • 当前重复标签保留实际当前 key/track;零 ID、唯一克隆轨道高亮正确,歧义轨道不伪造选中。
  • SDK/getName 重入使旧 revision 失效;回调销毁后停止后续格式化、SDK 写入和提示。 清理中同步重建时只释放旧所有权,不删除重建的新菜单。

公开工厂、同步 update/选中返回、getName 身份/参数、通知顺序、DOM/CSS hooks 与包入口保持。 错误继续同步传播原对象,次要清理异常不覆盖原错误。上述历史缺陷作为有意修正记录, 不把冻结旧实现的缺陷观察改成候选期望。README 更新 SDK 适配说明,没有改 demo 或增加依赖。

验证

最初 22 项新增回归先运行旧源码;后续重入和格式化关闭的两组红灯另保留。正式三格式加入 生命周期回归时发现 4 项 Node VM 数组原型比较问题,实际内容相同;用本地 Array.from 比较原有精确内容,未放宽断言。所有日志和输入指纹见 执行证据。

最终源码 116 项、包含三格式及两代 SDK 的 Node 266 项通过;正式 main/legacy 浏览器各 84 项通过。完整 CI 712 项(661 单元、14 工程、37 基线)通过;包三格式构建成功, 计划/风险/本地链接校验通过。没有重试或跳过。DASH-LIFE-01 关闭,SDK/实际轨道风险仍 open。 当前 217 项:73 done、3 doing、141 todo。已完成结构步,不计为 TS 迁移或发布完成。

真实 DOM 浏览器测试扩充到两种候选 SDK、两代核心及空拓扑/销毁:每格式 84 项。 仍是可控 SDK 方法与原生 MP4,不是实际 dash.js/MPD/ABR 验收。SDK/状态的真实媒体风险 继续由 05 接续;04 精确类型、06 分发、真机和全局发布复盘没有被本步替代。

本步通过标准构建脚本生成 dist/docs compiled,未手改产物。独立本地提交;不推送、不发布。 回退本提交同时撤回结构、行为修正、回归和产物,恢复重构前仅支持 5.x 的源码;该限制需知悉。