Files
ArtPlayer/refactor/changes/2026-09-13-PKG-VTT-THUMB-03-parser.md
T

2.7 KiB
Raw Blame History

PKG-VTT-THUMB-03 解析与模块整理完成

在 524ddf78 的请求/资源检查点基础上,完成纯解析与区间查找边界。 parseVtt 导出纯 findThumbnail,preview 只负责消费 cue、定位和计时器。 注册、请求、生命周期、解析、视图及旧源码 helper 的职责详见包内 ARCHITECTURE.md。

格式支持和修复

新解析器识别 BOM/CRLF、header 注释、cue ID、NOTE 注释、STYLE/REGION 块与 timing settings。 这些块不用于修改播放器样式。三位及更长小时数不再被截断。无效头、时间戳、逆向区间、 缺失图片、重复/未知 xywh 键、非有限/负数坐标、零尺寸等给出带原始行号的 TypeError, 在安装 UI 之前整体拒绝。坐标前后空白现在规范为可用 CSS 数字。

格式结构参考 W3C WebVTT(2026-09-13 核对), 采用自有实现,没有引入第三方解析器或复制其实现。这里仅解析 thumbnail metadata, 不是完整字幕解析/渲染器;不处理多行字幕 payload、timestamp-map 偏移或全部字幕设置。

兼容边界

保留 floor 时间边界、首个包含端点的命中、原始输入顺序、重叠/未排序 cue、正常小数矩形、 四键排列与字面 URL 拼接。还保留历史紧凑箭头、纯秒时间、分钟/秒字段的进位算术、 零时长 cue、紧密 cue 对及 time/payload 间空行;不因标准校验重新收紧已可用的旧输入。 空文件/仅头/仅注释均为空预览。真实 demo 120 个 cue 与旧 parser 深度比较完全相同。 坏格式曾生成错误 CSS 或无法定位的异常,不视为要求继续保持的有效 API。

验证

26 项解析测试在固定旧 parser/运行产物上 5 通过、21 失败;新源码通过。 坏输入还通过候选工厂验证 Promise 拒绝及监听器/控件清理;扩展 cue 验证重叠首个命中。 浏览器用真实 HTTP 文本、sprite、旧/新核心验证扩展 VTT 悬停与坏格式拒绝后的重试恢复, 继续运行原生请求取消和 destroy(false) 清理。各入口和最终 CI 以 验证记录为准,不把纯 parser 测试称为安装包证据。

本任务完成的是 03 的内部结构和已复现输入/生命周期修复。04 继续严格 TS、公开类型和 旧消费形式;05/06 继续旧核心范围、移动/全屏/chapter 组合、安装/demo/编辑器。 类型/导出/完整生命周期风险继续由后续任务承接,不能据此声称包已可发布。 无新依赖或版本变化;正常构建生成 main/legacy/ESM 及 docs 副本。本任务独立提交, 回退只恢复解析检查点,前次资源修复仍可保留;不推送或发布。