Files
ArtPlayer/refactor/changes/2026-09-12-PKG-MB-08-entry-checkpoint.md
T

67 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PKG-MB-08 检查点:入口、Canvas 转发与公开声明
任务保持doing。本包自有源码已全部迁移为34个strict TS模块,但不可解码轨道的回退与
就绪能力审查尚未完成;不能据此把整个MB-08标done。进入本轮的源码/产物冻结于
[入口基线](../baselines/mb-entry-source.json),对应8a2b56e8。
## 实现与兼容边界
入口从index.js迁至index.ts,Canvas转发、入口生命周期和通用清理分别进入
canvas-bridge.ts、entry-lifecycle.ts、cleanup.ts。后者从HLS菜单层下移,避免入口依赖
UI层的通用释放实现。HLS初始化支持部分注册失败时撤销,返回内部destroy供入口回滚。
保留createElement脱离receiver调用、原生可枚举方法getter读取两次、Canvas原生方法优先、
shim own/直接prototype转发、每次读取绑定方法、getter-only写入TypeError等旧行为。
资源状态不增加Canvas公开字段。销毁取消入口resize/metadata/destroy监听,已保存回调失效;
只删除仍属于当前shim的art.mediabunny,保留调用方替换的别名。一个清理步骤抛错仍尝试其余步骤,
setup失败保留原始异常。缺少off的历史自定义host仍可用,残留回调在销毁后保持无副作用。
公开默认工厂继续是可选Option到同步initializer、精确HTMLCanvasElement的签名;不将Result
缩窄成Canvas与shim交叉类型,不增加强制default属性,也不全局增强Artplayer。
新增type-only Option/Result、MediaBunnyShim、MediaBunnyCanvas、MediaBunnyPlayer、HLS状态和
SyntheticFrameCallback等。MediaBunnyPlayer的别名可缺省;Canvas视图明确原生DOM方法优先。
VideoShim实际implements媒体视图,getter显式返回类型防止unknown setter污染读取推导。
声明不引入MediaBunny SDK的现代DOM/Disposable依赖;track对象保持unknown,由消费者按
自用SDK缩窄。SyntheticFrameMetadata保留历史估算语义,尤其presentationTime是媒体秒数。
canPlayType仍恒为maybe,TimeRanges不代表真实网络缓冲;新类型不制造能力承诺。
新增.d.mts及条件types路由修正NodeNext ESM不可调用问题,typesVersions补齐经典解析的legacy。
CommonJS继续保留旧default声明门面;运行时直接工厂增加不可枚举、可写、可配置的default自身别名,
同时支持1.0.0的namespace.default和1.2.0的直接调用。整工厂双向赋值使用实际两个npm冻结声明检查。
## 验证与迭代
15条入口断言在旧main上6通过/9失败;候选包专项241通过,main/legacy各217通过,其中
各213条候选断言和4条冻结正常控制。HLS测试将清理断言限定为其自己拥有的5个listener;
新增入口断言单独检查额外3个listener,不再错误假设resize回调应一直残留。
新增12浏览器用例使用真实Canvas与发布版/候选核心,覆盖方法receiver、DOM事件/属性优先、
清理和替换别名。旧main同12项全部复现缺陷;候选通过。首轮夹具错误地把后续核心尺寸处理后的
inline style当作入口独占结果,现单独调用已注册入口resize callback验证其行为;首轮18份失败
report/results保留,并合并了两组重复场景。未增加重试或放宽超时。最终8个MediaBunny浏览器文件
共120通过:新增12项为Canvas/生命周期检查,原有29项为Windows WebKit能力对照,均不冒充播放。
新增yarn test:mediabunny-types-package:实际pack核心与代理,在工作区外安装两个冻结发布包及
候选,offline/frozen重装、锁文件和安装文件哈希检查。17组编译/导出矩阵通过;候选7组各拒绝
15条非法用法,并验证原始两份声明的整工厂双向赋值。保留旧版NodeNext ESM的准确诊断作为负例。
最初pack发现tsconfig泄漏,补入.npmignore后修复。旧TS不读取SDK声明,所有解析文件限于安装
目录或编译器标准库。该检查并非MB-10完整分发/许可验收。
最终源码、打包安装、构建与浏览器证据见[检查点记录](../baselines/mb-entry-checkpoint.json)。
完整CI1402项(1247单元+14工程+141基线)通过,另44重复契约,324生产TS。
首轮全局noUncheckedIndexedAccess发现消费者夹具直接读取空数组首项,改为可选访问后
完整CI和17组实际安装矩阵重跑通过;运行时产物未变化。本轮未添加依赖,Yarn和SDK锁版本不变。
## 立即接续
继续检查已有track但codec/canDecode不可用时,VideoEngine/AudioEngine的历史空轨道回退。
必须保留有效audio-only/video-only播放,阻止没有可用解码器时假就绪,并覆盖加载、HLS替换、
晚能力查询、pause/source/destroy和错误事件顺序。不要仅凭新增接口或现有WebKit负例宣布修复。
长播放/AV sync/设备及组合由MB-09,示例、安装分发及MPL/source notice由MB-10继续。
本检查点独立本地提交,回退该提交即可恢复本轮前状态;冻结历史输入保持不变,不推送或发布。
接续缺陷已用实际SDK解析的video-only MP4复现:受控canDecode=false与AudioContext下,
旧/候选均为videoSink=null、audioSink=null,却readyState=4并发loadedmetadata/data/canplay/through;
replaceTracks后同样假就绪。该受控复现见检查点记录,不能当作真实浏览器解码结果。