refactor(vtt-thumbnail): [PKG-VTT-THUMB-03] own pending requests and preview resources

This commit is contained in:
Harvey Zhao committed 2026-09-13 08:37:48 +08:00
1 parent 05244d1104
commit 524ddf784f
23 files changed
+3045 -262

No files matched your search

File diff suppressed because it is too large. Load diff
@@ -0,0 +1,32 @@
# PKG-VTT-THUMB-03 资源所有权检查点
将注册、请求、纯解析、预览/计时器和生命周期拆开;保留旧 getVttArray 源路径的包装函数。
这是 03 的源码检查点,**任务继续 doing**:解析错误/输入规则及更多资源边界尚需完成,
严格 TS/公开声明归 04,完整核心设备/安装/demo/编辑器验收归 05/06。
## 已实现修复
- 请求前订阅 destroy;原生 AbortController 可用时取消 fetch/body。即使 fetch 忽略 signal
或环境没有 AbortController,销毁也结算注册 Promise,迟到返回不安装控件,迟到拒绝被观察。
- setBar、移动隐藏计时器和控件均有独立清理。计时器 ID 0 有效,旧定时回调有代次检查,
在 setTimeout 返回之前重入销毁时仍清掉迟到的 handle。
- 每次样式写入检查关闭状态;销毁中重入不会再排计时器或后续写入。
- 安装失败保留原错误并回滚已安装监听器/控件。清理失败只记录警告,继续其它清理。
控件只在实时 alias 仍为本次 mounted 元素时移除,不误删别人替换的控件。
- HTTP 失败现在明确拒绝,不再解析错误响应体。这是单独复现的缺陷修正。
## 保持的边界
工厂/结果名、异步注册、URL/style 读取顺序、style 原对象、控件名/CSS/index、向下取整
时间区间及首个命中、xywh/URL 几何、500ms 移动隐藏均保留。restart 不触发新增下载。
源码抽出的 parseVtt 保持原算法;非法 cue/坐标、NOTE/ID 等仍不能称已修复。
旧版 CJS `.default` 与同步声明冲突仍待 04,不能以当前直接函数入口代替所有旧消费形式。
## 验证与交接
21 项候选回归在冻结旧版 4 通过/17 失败,新源码通过;保留 01/02 历史测试。
真实浏览器检查覆盖 published/candidate 核心、鼠标悬停、实际 sprite 像素和原生请求取消。
准确构建、源码/产物/浏览器与 CI 结果见 [验证记录](../baselines/vtt-thumbnail-resources.json)。
包内 ARCHITECTURE.md 说明实际文件地图和资源数据流。无依赖、版本或公开声明变更。
按仓库命令生成 dist/docs 编译产物,不手改。回退本检查点提交可回到 02 后生产实现;
历史对照仍可重跑。独立本地提交,不推送、不发布。
+3 -2
View File
@@ -4,7 +4,7 @@
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 222 项,范围 22 个包及工作区/示例。
状态:todo 94 / doing 12 / blocked 0 / done 116 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
状态:todo 93 / doing 13 / blocked 0 / done 116 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
@@ -184,7 +184,7 @@
| --- | --- | --- | --- | --- | --- | --- |
| PKG-VTT-THUMB-01 | artplayer-plugin-vtt-thumbnail<br>核对包契约与历史用法 | BASE-05 | vtt/style、异步返回、预览控件名与样式契约 | 源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结 | M | done |
| PKG-VTT-THUMB-02 | artplayer-plugin-vtt-thumbnail<br>建立特有行为与错误测试 | PKG-VTT-THUMB-01, ENG-03, ENG-05 | VTT 解析、xywh、相对 URL、时间边界、请求失败和定位 | 旧版本行为可重跑,成功/失败/切源/销毁有必要断言 | M | done |
| PKG-VTT-THUMB-03 | artplayer-plugin-vtt-thumbnail<br>整理内部职责与资源 | PKG-VTT-THUMB-02, CORE-09, CORE-19 | 纯解析/区间查找与 DOM、请求/定时器生命周期分离 | 结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过 | M | todo |
| PKG-VTT-THUMB-03 | artplayer-plugin-vtt-thumbnail<br>整理内部职责与资源 | PKG-VTT-THUMB-02, CORE-09, CORE-19 | 纯解析/区间查找与 DOM、请求/定时器生命周期分离 | 结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过 | M | doing |
| PKG-VTT-THUMB-04 | artplayer-plugin-vtt-thumbnail<br>迁移自有源码和公开类型 | PKG-VTT-THUMB-03, ENG-04, ENG-06, CORE-07 | cue/rect/result 和参数可选性保持兼容 | 严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容 | M | todo |
| PKG-VTT-THUMB-05 | artplayer-plugin-vtt-thumbnail<br>验证新旧核心和组合 | PKG-VTT-THUMB-04, CORE-22 | 鼠标和移动进度、全屏、切源、chapter 组合 | 最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成 | M | todo |
| PKG-VTT-THUMB-06 | artplayer-plugin-vtt-thumbnail<br>验证分发并同步文档 | PKG-VTT-THUMB-05, ENG-07 | vtt.thumbnail.js、VTT/图片资源解析和产物验证 | tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录 | M | todo |
@@ -499,6 +499,7 @@
- PKG-AUTO-THUMB-03: [记录](changes/2026-09-13-PKG-AUTO-THUMB-03-lifecycle-checkpoint.md) [记录](baselines/auto-thumbnail-lifecycle-checkpoint.json) [记录](changes/2026-09-13-PKG-AUTO-THUMB-03-hidden-renderer.md) [记录](baselines/auto-thumbnail-hidden-renderer.json) [记录](baselines/auto-thumbnail-timeline-media.json) [记录](changes/2026-09-13-PKG-AUTO-THUMB-03-frame-presentation.md) [记录](baselines/auto-thumbnail-frame-presentation.json)
- PKG-VTT-THUMB-01: [记录](baselines/vtt-thumbnail-release.json) [记录](baselines/vtt-thumbnail-contract.md) [记录](changes/2026-09-13-PKG-VTT-THUMB-01-contract.md)
- PKG-VTT-THUMB-02: [记录](baselines/vtt-thumbnail-failures.json) [记录](changes/2026-09-13-PKG-VTT-THUMB-02-failures.md)
- PKG-VTT-THUMB-03: [记录](changes/2026-09-13-PKG-VTT-THUMB-03-resources.md) [记录](baselines/vtt-thumbnail-resources.json)
- PKG-HLS-01: [记录](baselines/hls-control-contract.md) [记录](baselines/hls-control-release.json) [记录](changes/2026-09-11-PKG-HLS-01-contract.md)
- PKG-HLS-02: [记录](hls-validation.md) [记录](baselines/hls-sdk.json) [记录](baselines/hls-validation.json) [记录](changes/2026-09-11-PKG-HLS-02-tests.md)
- PKG-HLS-03: [记录](changes/2026-09-12-PKG-HLS-03-modules.md) [记录](baselines/hls-modules-validation.json) [记录](hls-validation.md)
+12
View File
@@ -1,5 +1,17 @@
# 进度与证据
## PKG-VTT-THUMB-03 请求与预览资源检查点(doing)
生产入口拆为注册、生命周期、请求、预览和纯解析,保留旧源码 helper。已修复销毁后
安装/样式写入、挂起请求取消、移动计时器和部分安装回滚;HTTP 错误明确拒绝。
21 项候选测试在旧版 4 通过/17 失败,源码/main/legacy 各 21 通过;原生旧版 6 项均复现失败,
候选三种入口各 12 项通过(两种核心 × 三浏览器 × 两场景),实际 ESM 也通过。
完整 CI 2038 项通过。构建产物与包内架构同步,未改变声明/版本;解析健壮性、严格 TS、
完整设备/核心组合与安装/demo 验收仍待。见[变更](changes/2026-09-13-PKG-VTT-THUMB-03-resources.md)
和[验证](baselines/vtt-thumbnail-resources.json)。222 项:116 done、13 doing、93 todo。
独立本地检查点提交,不推送、不发布。
## PKG-VTT-THUMB-02 特有失败与生命周期复现完成
108 项新历史测试复现销毁后安装/计时器写入、请求拒绝、HTTP 状态忽略、非法 VTT/坐标、
+8 -2
View File
@@ -4151,7 +4151,10 @@
"refactor/baselines/vtt-thumbnail-contract.md",
"refactor/scripts/vtt-thumbnail-contract.test.mjs",
"test/vtt-thumbnail.test.js",
"refactor/baselines/vtt-thumbnail-failures.json"
"refactor/baselines/vtt-thumbnail-failures.json",
"test/vtt-thumbnail-lifecycle.test.js",
"test/browser/vtt-thumbnail-lifecycle.spec.js",
"refactor/baselines/vtt-thumbnail-resources.json"
],
"compatibleResolution": "Preserve valid cue selection and geometry; test malformed data and standard VTT separately from old compiler defects.",
"closureCriteria": "Parser fixtures include malformed, empty, real demo VTT, fractional and shared bounds, relative URLs and historical accepted formats."
@@ -4171,7 +4174,10 @@
"refactor/baselines/vtt-thumbnail-contract.md",
"refactor/scripts/vtt-thumbnail-contract.test.mjs",
"test/vtt-thumbnail.test.js",
"refactor/baselines/vtt-thumbnail-failures.json"
"refactor/baselines/vtt-thumbnail-failures.json",
"test/vtt-thumbnail-lifecycle.test.js",
"test/browser/vtt-thumbnail-lifecycle.spec.js",
"refactor/baselines/vtt-thumbnail-resources.json"
],
"compatibleResolution": "Own requests, listeners, timers and controls per registration without stale writes or cross-instance cleanup.",
"closureCriteria": "Deferred request, destroy, failure, timer, repeated registration and native core scenarios demonstrate cleanup."
+5 -2
View File
@@ -1897,11 +1897,14 @@
"CORE-09",
"CORE-19"
],
"status": "todo",
"status": "doing",
"risk": "M",
"deliverable": "纯解析/区间查找与 DOM、请求/定时器生命周期分离",
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
"evidence": []
"evidence": [
"changes/2026-09-13-PKG-VTT-THUMB-03-resources.md",
"baselines/vtt-thumbnail-resources.json"
]
},
{
"id": "PKG-VTT-THUMB-04",