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

39 lines
2.7 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-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](https://www.w3.org/TR/webvtt1/)(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 以
[验证记录](../baselines/vtt-thumbnail-parser.json)为准,不把纯 parser 测试称为安装包证据。
本任务完成的是 03 的内部结构和已复现输入/生命周期修复。04 继续严格 TS、公开类型和
旧消费形式;05/06 继续旧核心范围、移动/全屏/chapter 组合、安装/demo/编辑器。
类型/导出/完整生命周期风险继续由后续任务承接,不能据此声称包已可发布。
无新依赖或版本变化;正常构建生成 main/legacy/ESM 及 docs 副本。本任务独立提交,
回退只恢复解析检查点,前次资源修复仍可保留;不推送或发布。