mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-27 17:51:20 -08:00
refactor(core): CORE-05 separate typed defaults and resolved options
This commit is contained in:
1 parent
4eec8112fa
commit
97d320bd74
27 files changed
+2278
-240
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,53 @@
|
||||
# CORE-05:输入配置与内部配置
|
||||
|
||||
## 文件与数据流
|
||||
|
||||
核心入口直接调用 option/resolve.ts,默认值移入 option/defaults.ts,scheme/index.js 迁移为
|
||||
scheme/index.ts。option/types.ts 区分公开 Option 输入、补齐默认字段的
|
||||
ResolvedOption 和保留应用扩展字段的 ResolvedInput。主入口不再内嵌默认值列表和合并步骤,
|
||||
但仍是 JS 兼容门面,完整 TS 收敛属于 CORE-20。
|
||||
|
||||
数据流保持 Artplayer.option → mergeDeep(defaults, input) → 恢复 input.container 引用 →
|
||||
原 option-validator 校验 → 后续生命周期。每次默认 getter 都生成独立对象、数组和 onVttLoad
|
||||
回调;Safari preload、读取 navigator.language 的时点、字段次序与默认值不变。
|
||||
实例 ID 在校验前递增,非法 JS 配置仍在挂载 DOM/调用 proxy 前抛错。
|
||||
|
||||
ResolvedOption 只用于符合已声明输入合同且成功合并的配置,不宣称是任意 unknown 的完整安全
|
||||
类型守卫。顶层及 subtitle/thumbnails 默认字段成为必需,proxy 明确保留 undefined;集合成员、
|
||||
回调和应用扩展沿用输入类型,不引入新的全局 any 索引签名。动态 merge 与该合同之间保留一处
|
||||
有注释的结果断言,未知 JS/扩展数据仍须在具体消费者中核实。
|
||||
|
||||
scheme 的所有键以 Record<keyof Option, Scheme> 检查,保留原可变对象、ComponentOption
|
||||
共享引用和错误消息。根 types/option-validator.d.ts 根据现有 2.0.6 实现补充 identity validator、
|
||||
schema 回调路径、kindOf 类型;没有更换依赖、包装运行时或改变 Artplayer.validator 的引用。
|
||||
根和核心 tsconfig 引入该声明,lint 同时覆盖根声明文件;test:unit 加入配置对照测试。
|
||||
|
||||
## 保留行为与声明缺口
|
||||
|
||||
API-01/03/04/07/09/11:容器 identity、输入 getter 的顺序/次数、继承容器恢复、unknown 自有
|
||||
字段、数组元素引用、嵌套对象合并和原始 callback 引用均保留。显式 undefined 仍可能被原校验
|
||||
拒绝,不改成悄悄填默认值;错误 path、首次错误及抛出类型与真实发布版对照。
|
||||
|
||||
新增 BASE-TYPE-06,交 CORE-07:真实旧/新 JS 均允许省略 url,并可将数字用作控件 HTML,
|
||||
当前公开 Option/ComponentOption 却拒绝这两种形式。真实浏览器和类型反例分别证明差异;
|
||||
公开声明本次保持,后续将这些类型负例转为正向消费者检查,不能修改运行时去迎合旧声明。
|
||||
更宽松的底层 validator 接受某个值也不表示之后的 DOM/媒体模块一定接受它,阶段边界继续保留。
|
||||
|
||||
## 验证
|
||||
|
||||
- 八项 Node 配置测试:真实发布/当前默认对象隔离、完整默认值/字段顺序、合并所有权、getter
|
||||
读取、继承容器、九组非法字段输入的错误对照。
|
||||
- 严格类型包含五项正常类型约束反例和两项已登记的公开声明缺口反例;回调 receiver、已补齐
|
||||
字段和应用扩展字段有正例。yarn ci:check 共 107 项:79 单元、4 工程、24 冻结基线;21 个
|
||||
自有 TS 源文件进入严格检查。
|
||||
- 实际安装 UMD 候选三浏览器完整 126 项通过,其中 18 项配置场景验证正常/错误/声明差异,
|
||||
包含真实媒体 customType 与 ready 回调;其他播放、插件及生命周期回归同时通过。
|
||||
- 实际安装 legacy 候选三浏览器配置与生命周期共 48 项通过,无源码回退、重试或跳过。
|
||||
- yarn build artplayer / yarn build:i18n 生成核心 dist 与 docs/compiled;严格 tarball 仓库外
|
||||
消费通过 27 项运行时、五组类型零诊断。包内架构/类型说明更新后重新打包,最终 JS 指纹与
|
||||
UMD/legacy 浏览器候选匹配。
|
||||
|
||||
详见 [验证报告](../baselines/options-validation.json)、[核心架构](../../packages/artplayer/ARCHITECTURE.md)
|
||||
和 [类型维护说明](../../packages/artplayer/types/README.md)。没有修改冻结发布数据、升级依赖、
|
||||
更改版本或推送/发布。本任务独立提交,回退提交可恢复入口、模块、类型配置及生成产物。
|
||||
下一项 CORE-06 建立内部媒体与宿主类型,随后 CORE-07 逐项协调公开声明差异。
|
||||
+3
-2
@@ -4,7 +4,7 @@
|
||||
|
||||
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 214 项,范围 22 个包及工作区/示例。
|
||||
|
||||
状态:todo 174 / doing 0 / blocked 0 / done 40 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
状态:todo 173 / doing 0 / blocked 0 / done 41 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
|
||||
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
| CORE-02 | artplayer<br>迁移内部 Emitter | CORE-01, BASE-03 | 带类型事件映射的原 Emitter 实现 | ctx、once/off、重入/异常和链式返回保持 | H | done |
|
||||
| CORE-03 | artplayer<br>建立内部资源作用域 | CORE-02 | 监听/订阅/定时器/RAF/请求/URL 的资源登记 | 实例与操作作用域分离,单项清理失败不阻断其他资源 | H | done |
|
||||
| CORE-04 | artplayer<br>修复初始化与销毁生命周期 | CORE-03, ENG-05, BASE-07 | 构造失败回收、重复/重入 destroy、instances 修复 | 事件顺序、removeHtml、多实例和销毁中异步有真实回归;处理 baselines/lifecycle-coverage.md 的 BASE-LIFE-04/05 并增加候选正向回归;协调 BASE-PERF-01 销毁后定时器与回调归属 | H | done |
|
||||
| CORE-05 | artplayer<br>区分输入配置和内部配置 | CORE-01, ENG-04 | Option/ResolvedOption、默认值与校验整理 | 配置合并/错误时机不变,JS 输入仍运行时校验 | M | todo |
|
||||
| CORE-05 | artplayer<br>区分输入配置和内部配置 | CORE-01, ENG-04 | Option/ResolvedOption、默认值与校验整理 | 配置合并/错误时机不变,JS 输入仍运行时校验 | M | done |
|
||||
| CORE-06 | artplayer<br>建立内部媒体与宿主类型 | CORE-05 | 原生 video、canvas shim、UI host 类型 | 不更改公开 art.video 用法,不以 HTMLVideoElement 断言掩盖 shim | M | todo |
|
||||
| CORE-07 | artplayer<br>逐项协调公开声明差异 | CORE-02, CORE-06, BASE-07 | plugins/toggle/cue/setting/static 的旧新类型对照 | 每项有兼容重载/扩展或待决结论,不能删除旧类型样例;处理 BASE-TYPE-01/04,分别保留旧合法声明消费并验证真实返回;协调 BASE-TYPE-05 的 Utils 导出、descriptor 和 timer 旧声明差异 | H | todo |
|
||||
| CORE-08 | artplayer<br>整理插件管理器与扩展类型 | CORE-03, CORE-07 | 注册流程、同步/异步结果、插件/事件扩展接口 | 旧插件同步可见性、重名与命名、销毁中异步插件保持明确语义;处理 baselines/lifecycle-coverage.md 的 BASE-LIFE-03 并增加候选正向回归 | H | todo |
|
||||
@@ -439,6 +439,7 @@
|
||||
- CORE-02: [记录](changes/2026-09-11-CORE-02-typed-emitter.md) [记录](baselines/emitter-validation.json)
|
||||
- CORE-03: [记录](changes/2026-09-11-CORE-03-resource-scope.md) [记录](baselines/resource-scope-validation.json)
|
||||
- CORE-04: [记录](changes/2026-09-11-CORE-04-instance-lifecycle.md) [记录](baselines/instance-lifecycle-validation.json)
|
||||
- CORE-05: [记录](changes/2026-09-11-CORE-05-resolved-options.md) [记录](baselines/options-validation.json)
|
||||
- PKG-CHAPTER-01: [记录](changes/2026-09-10-PKG-CHAPTER-01-contract.md) [记录](baselines/chapter-contract.md)
|
||||
- PKG-CHAPTER-02: [记录](changes/2026-09-10-PKG-CHAPTER-02-tests.md) [记录](baselines/chapter-validation.json)
|
||||
- PKG-CHAPTER-03: [记录](changes/2026-09-10-PKG-CHAPTER-03-typescript-modules.md) [记录](baselines/chapter-migration-validation.json)
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# 进度与证据
|
||||
|
||||
## 当前实施:CORE-05 配置与默认值 TS 拆分完成
|
||||
|
||||
核心入口接入独立默认值/解析模块,scheme 迁移 TS,区分 Option 与 ResolvedOption 并保留应用扩展类型。107 项 Node/基线、安装 UMD 三浏览器 126 项及 legacy 配置/生命周期 48 项通过;严格打包 27 项运行时、五组类型零诊断。见 [交付](changes/2026-09-11-CORE-05-resolved-options.md)。新登记 BASE-TYPE-06(省略 URL/数字控件 HTML 的声明缺口)交 CORE-07。当前 214 项,41 完成、173 待办;核心十六个 TS 文件、chapter 五个。下一项 CORE-06 内部媒体与宿主类型。
|
||||
|
||||
## 当前实施:CORE-04 构造/销毁生命周期完成
|
||||
|
||||
核心入口接入实例作用域,修复重复/重入销毁、失败构造回滚和 pending resize;正常 destroy 回调仍可挂载替代实例。99 项 Node/基线、安装 UMD 三浏览器 108 项及 legacy 三浏览器 30 项通过;严格打包 27 项运行时、五组类型零诊断。见 [交付](changes/2026-09-11-CORE-04-instance-lifecycle.md)。关闭 BASE-LIFE-04/05 与 BASE-PERF-01,字幕/异步插件等后续任务继续开放。当前 214 项,40 完成、174 待办;核心十二个 TS 文件、chapter 五个,主入口仍为 JS 兼容门面。下一项 CORE-05 输入与内部配置类型。
|
||||
|
||||
@@ -49,3 +49,4 @@
|
||||
| BASE-TYPE-05 | open / 源码/产物事实 | Public Utils declarations omit exports and misstate timer/descriptor signatures | CORE-07 |
|
||||
| EVENT-NAME-01 | resolved / 已复现 | Emitter event names collide with Object.prototype | CORE-02 |
|
||||
| EVENT-ONCE-01 | resolved / 已复现 | Nested dispatch snapshots invoke the same once registration twice | CORE-02 |
|
||||
| BASE-TYPE-06 | open / 已复现 | Public Option requires url and excludes numeric control HTML accepted by existing JS | CORE-07 |
|
||||
@@ -782,6 +782,23 @@
|
||||
"test/browser/emitter.spec.js"
|
||||
],
|
||||
"resolutionRationale": "The wrapper records consumption before unsubscribe/invocation; ordinary dispatch snapshot semantics are retained."
|
||||
},
|
||||
{
|
||||
"id": "BASE-TYPE-06",
|
||||
"title": "Public Option requires url and excludes numeric control HTML accepted by existing JS",
|
||||
"confirmation": "reproduced",
|
||||
"status": "open",
|
||||
"owners": [
|
||||
"CORE-07"
|
||||
],
|
||||
"evidence": [
|
||||
"test/browser/options.spec.js",
|
||||
"test/types/options-source.ts",
|
||||
"refactor/baselines/options-validation.json",
|
||||
"refactor/changes/2026-09-11-CORE-05-resolved-options.md"
|
||||
],
|
||||
"compatibleResolution": "Expand public declarations for the verified legal JS forms; preserve existing typed inputs and runtime defaults.",
|
||||
"closureCriteria": "Replace the two historical negative fixtures with positive public consumers and verify old/new TypeScript plus installed package modes."
|
||||
}
|
||||
]
|
||||
}
|
||||
+5
-2
@@ -830,11 +830,14 @@
|
||||
"CORE-01",
|
||||
"ENG-04"
|
||||
],
|
||||
"status": "todo",
|
||||
"status": "done",
|
||||
"risk": "M",
|
||||
"deliverable": "Option/ResolvedOption、默认值与校验整理",
|
||||
"acceptance": "配置合并/错误时机不变,JS 输入仍运行时校验",
|
||||
"evidence": []
|
||||
"evidence": [
|
||||
"changes/2026-09-11-CORE-05-resolved-options.md",
|
||||
"baselines/options-validation.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "CORE-06",
|
||||
|
||||
Reference in new issue
Block a user