mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-15 09:06:16 -08:00
fix(vast): [PKG-VAST-03] preserve npm initialization with explicit workspace mode
This commit is contained in:
1 parent
314a1c3163
commit
c162d2b3b3
27 files changed
+13189
-191
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,61 @@
|
||||
# PKG-VAST-03:按已确认决策完成运行时兼容与资源整理
|
||||
|
||||
基线314a1c3163e4c5bc8d1a9f1432726824ea3af7dc;本记录完成早期
|
||||
[03检查点](2026-09-12-PKG-VAST-03-lifecycle.md)的剩余初始化兼容任务。
|
||||
2026-09-14用户明确接受“保留 npm 默认行为,显式选择工作区惰性模式”,
|
||||
[具体决策与迁移示例](../vast-compatibility-decision.md)现在是实现依据。
|
||||
|
||||
## 实现及兼容边界
|
||||
|
||||
五个TS模块已分离工厂/异步注册、SDK边界、会话资源、DOM样式和内部类型。
|
||||
默认工厂在callback前创建Player,恢复实际npm1.0.0的id/$container/imaPlayer
|
||||
可写数据属性与SDK默认设置。默认包装层不添加工作区四事件显隐或活动请求抑制,
|
||||
透明容器保留发布样式,显式请求继续逐次转发;没有把SDK行为复制到包装层。
|
||||
|
||||
可选第二参数`{ compatibility: 'workspace-1.2' }`保留未发布工作区的惰性初始化、
|
||||
设置/选项原对象、两个默认flags、黑色overlay、四事件显隐、活动广告抑制和资源
|
||||
实时getter。模式在工厂创建时快照一次,未知值在加载SDK前抛TypeError。
|
||||
普通已发布JS调用无需变化;依赖未发布默认惰性的代码必须按已批准方案增加选项。
|
||||
|
||||
两种模式共享早期修复的core销毁终止、晚到SDK/回调取消、失败回滚、会话身份隔离、
|
||||
重复清理与显式重建。默认发布数据字段保留已释放资源快照,扩展container getter归零;
|
||||
后续显式重建更新数据字段,core销毁禁止重建。工作区资源getter随当前会话归零。
|
||||
ID保留各自art-/art-vast-前缀并增加递增后缀,保留已复现同毫秒碰撞的修复。
|
||||
|
||||
公开声明没有在本任务完成:04仍须协调历史同步误声明、回调字段、第二参数和准确
|
||||
类型入口;本次运行时授权不自动授权其他类型取舍。实际Google IMA由05验收,最终
|
||||
安装分发由06验收。README明确JS示例及当前声明门槛;未改变包版本或依赖/lockfile。
|
||||
现有docs/assets/example/vast.js使用默认回调和playUrl,符合npm模式,不需改写。
|
||||
|
||||
## 验证与失败记录
|
||||
|
||||
完整输入/日志/产物指纹见[验证索引](../baselines/vast-compatibility-validation.json)。
|
||||
|
||||
- 新兼容文件初始7项:旧候选2通过5失败,包含默认初始化、旧字段与提前构造失败。
|
||||
修复后7通过,再补回调失败的二次清理异常、显式重建和选项快照/非法值,最终10通过。
|
||||
- 当前完整`yarn test:vast`82通过、零跳过;包括旧发布/冻结工作区观察、显式模式及默认
|
||||
生命周期。该文件进入test:vast/test:unit;工程脚本相关12项测试通过。
|
||||
- 三桌面引擎×三个核心×四种实现/模式162通过:99候选、63历史。核验异步注册门控、
|
||||
回调开始前资源、字段描述符、默认值、真实DOM显隐/清理、主片解码及切源。
|
||||
候选两模式执行同一份编译源码,以选项区分;第三方SDK为明确标记的受控记录器。
|
||||
本次报告确认核心实际为npm5.1.7、npm5.4.0、候选5.4.1;早期文档将published路径
|
||||
写成5.4.1不准确,以附件中的来源哈希和实际coreVersion为准,本次更正维护说明。
|
||||
- 首轮153通过9失败:旧candidate显隐用例沿用工作区art-vast-选择器与四事件显隐,
|
||||
和已确认的npm默认语义不符。保留原日志/trace;按两种历史行为验证实际容器数、
|
||||
0/4监听、显隐,再验证重建/销毁。回调失败也按实际容器前缀检测,避免虚假零残留。
|
||||
增加回调开始时字段/时机断言后162通过;源码lint整理后最终162再次通过。
|
||||
- 严格TS5.9.3及源/测试lint通过。初次lint6项格式/声明顺序错误已修正并保留日志;
|
||||
没有引入禁用规则。严格固定工具链检查通过。
|
||||
- 正常VAST构建三格式成功,dist与docs/compiled对应文件哈希一致。实际main+ESM和
|
||||
legacy+ESM分别4项导出用例通过:CommonJS/global/AMD和原生ESM,均验证default别名。
|
||||
这些产物用例使用已销毁宿主,不执行IMA;不能把它们解释为正式SDK广告播放通过。
|
||||
|
||||
## 任务边界及回退
|
||||
|
||||
PKG-VAST-03完成运行时结构/资源/初始化协调,VAST-CONTEXT-01按用户决策接受限定范围。
|
||||
VAST-LIFE-01保留实际供应商恢复验证门槛;VAST-TYPE/DIST及04/05/06仍开放。
|
||||
没有使用VPN例外、模拟广告成功、远端CI或npm发布声明。
|
||||
|
||||
本任务独立本地commit包含源、测试、构建、文档、任务及风险索引,提交后核验审计。
|
||||
回退本提交并重建VAST会恢复此前默认工作区初始化,也撤销本次兼容选择;旧已发布
|
||||
默认调用的失败将重现。早期资源修复检查点不随本提交回退而消失。
|
||||
+3
-3
@@ -4,7 +4,7 @@
|
||||
|
||||
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 262 项,范围 22 个包及工作区/示例。
|
||||
|
||||
状态:todo 48 / doing 21 / blocked 0 / done 193 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
状态:todo 48 / doing 20 / blocked 0 / done 194 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
|
||||
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
|
||||
|
||||
@@ -296,7 +296,7 @@
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| PKG-VAST-01 | artplayer-plugin-vast<br>核对包契约与历史用法 | BASE-05 | 异步工厂、callback context、playUrl/playRes/init 与 SDK 版本;实际 npm 1.0.0 与未发布 1.2.0、SDK 1.21.0/1.21.2 的60成员归档和发布关联核心5.1.7 | 源码/声明/README/demo/发布包差异已登记;公开形状和版本范围冻结 | H | done |
|
||||
| PKG-VAST-02 | artplayer-plugin-vast<br>建立特有行为与错误测试 | PKG-VAST-01, ENG-03, ENG-05 | SDK 失败、重复初始化、广告事件、内容恢复和销毁竞态;发布 id/$container/eager 与工作区 lazy/config 覆盖、callback拒绝、加载中销毁、同毫秒多实例与晚到事件 | 旧版本行为可重跑,成功/失败/切源/销毁有必要断言 | H | done |
|
||||
| PKG-VAST-03 | artplayer-plugin-vast<br>整理内部职责与资源 | PKG-VAST-02, CORE-10, CORE-13 | SDK loader、IMA adapter、广告状态和 DOM 清理分离;保持发布 callback 别名,明确初始化冲突;核心终止与显式 destroy 后重建区分 | 结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过 | H | doing |
|
||||
| PKG-VAST-03 | artplayer-plugin-vast<br>整理内部职责与资源 | PKG-VAST-02, CORE-10, CORE-13 | SDK loader、IMA adapter、广告状态和 DOM 清理分离;保持发布 callback 别名,明确初始化冲突;核心终止与显式 destroy 后重建区分 | 结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过 | H | done |
|
||||
| PKG-VAST-04 | artplayer-plugin-vast<br>迁移自有源码和公开类型 | PKG-VAST-03, ENG-04, ENG-06, CORE-07, PKG-VAST-07 | IMA/context/Promise 真实类型,外部 SDK 动态对象限定边界;修复 @alugha/ima 声明依赖链,保留 export= 和 require.default 消费;同步错误声明的兼容决策单列 | 严格类型检查、旧消费样例通过;声明路径/导出和同步异步兼容 | H | todo |
|
||||
| PKG-VAST-05 | artplayer-plugin-vast<br>验证新旧核心和组合 | PKG-VAST-04, CORE-22 | 官方测试广告或受控 SDK 环境,错误后主视频状态恢复;核验真实5.1.7/5.4.1/候选核心,VAST VPN外部脚本例外逐项记录,不将受控SDK当作实际IMA验收 | 最终核心与原支持范围核心分别通过;设备/SDK 缺证据不能标完成 | H | todo |
|
||||
| PKG-VAST-06 | artplayer-plugin-vast<br>验证分发并同步文档 | PKG-VAST-05, ENG-07 | vast.js、SDK 资源、声明消费和独立版本记录;核验实际发布 namespace default、历史深路径、ESM和准确声明,版本按政策2.0.0由REL-09统一处理 | tarball 入口/资源、类型、8082 demo 和 README 一致,有回退记录 | H | todo |
|
||||
@@ -600,7 +600,7 @@
|
||||
- PKG-ADS-05: [记录](changes/2026-09-12-PKG-ADS-05-browser.md) [记录](baselines/ads-ui-visibility-validation.json)
|
||||
- PKG-VAST-01: [记录](baselines/vast-contract.md) [记录](baselines/vast-release.json) [记录](changes/2026-09-12-PKG-VAST-01-contract.md) [记录](baselines/vast-contract-validation.json)
|
||||
- PKG-VAST-02: [记录](changes/2026-09-12-PKG-VAST-02-tests.md) [记录](baselines/vast-behavior-validation.json) [记录](baselines/vast-core.json) [记录](vast-validation.md)
|
||||
- PKG-VAST-03: [记录](changes/2026-09-12-PKG-VAST-03-lifecycle.md) [记录](baselines/vast-lifecycle-validation.json) [记录](vast-compatibility-decision.md)
|
||||
- PKG-VAST-03: [记录](changes/2026-09-12-PKG-VAST-03-lifecycle.md) [记录](baselines/vast-lifecycle-validation.json) [记录](vast-compatibility-decision.md) [记录](changes/2026-09-14-PKG-VAST-03-compatibility.md) [记录](baselines/vast-compatibility-validation.json)
|
||||
- PKG-CAST-01: [记录](baselines/chromecast-release.json) [记录](baselines/chromecast-contract.md) [记录](baselines/chromecast-contract-validation.json) [记录](changes/2026-09-13-PKG-CAST-01-contracts.md)
|
||||
- PKG-CAST-02: [记录](changes/2026-09-13-PKG-CAST-02-failures.md) [记录](baselines/chromecast-failures-validation.json)
|
||||
- PKG-CAST-03: [记录](changes/2026-09-13-PKG-CAST-03-runtime.md) [记录](baselines/chromecast-runtime-validation.json)
|
||||
|
||||
@@ -1,5 +1,25 @@
|
||||
# 进度与证据
|
||||
|
||||
## PKG-VAST-03 已确认初始化策略与运行时资源整理完成
|
||||
|
||||
用户于2026-09-14明确接受npm提前初始化默认、显式workspace-1.2惰性模式。
|
||||
默认恢复回调前Player、id/$container/imaPlayer可写数据字段及SDK原默认设置;
|
||||
显式模式保留工作区四事件显隐、活动请求抑制、可变设置和资源实时getter。
|
||||
两者共享销毁终止、失败回滚、旧会话隔离和显式重建修复;模块地图/迁移JS示例同步。
|
||||
|
||||
当前Node82通过,三浏览器162通过(99候选、63历史),工程脚本12通过;严格
|
||||
TS5.9.3、lint和工具链检查通过。首轮浏览器153通过9失败保留:旧断言误用
|
||||
工作区选择器/显隐语义,现按历史责任分模式并补充回调起始状态断言,未放宽清理。
|
||||
实际核心为npm5.1.7/npm5.4.0/候选5.4.1,纠正旧维护说明误称published5.4.1。
|
||||
正常构建三格式及docs副本一致,实际main+ESM/legacy+ESM各4项导出检查通过。
|
||||
|
||||
详见[变更](changes/2026-09-14-PKG-VAST-03-compatibility.md)、
|
||||
[指纹和结果](baselines/vast-compatibility-validation.json)及
|
||||
[接受的决策](vast-compatibility-decision.md)。本项完成,262项现194 done、
|
||||
20 doing、48 todo;初始化风险按用户决定限定接受。SDK仍受控,实际IMA恢复、
|
||||
公开声明(包括第二参数)、安装分发分别留在05/04/06;未用VPN例外,未push/发布。
|
||||
本任务独立本地提交,提交后先核验审计;下一步处理VAST公开类型04。
|
||||
|
||||
## PKG-DANMUKU-MASK-LOAD-01 真实模型负载漏显与积压修复
|
||||
|
||||
连续播放采样补回主线程卡顿跨过的既有wait行,公开readys窗口不变;允许重叠
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
| ADS-LIFE-01 | resolved / 已复现 | Ads 计时链、重复/过早调用、工厂复用与销毁缺乏资源边界 | PKG-ADS-02, PKG-ADS-03, PKG-ADS-05 |
|
||||
| ADS-MEDIA-01 | open / 已复现 | Ads metadata 与 play 拒绝、隐藏页媒体状态和内容恢复仍缺真实验证 | PKG-ADS-02, PKG-ADS-03, PKG-ADS-05 |
|
||||
| ADS-UI-01 | resolved / 已复现 | Ads 零等待跳过与初始状态不符,全屏图标/外部状态需核验 | PKG-ADS-02, PKG-ADS-03, PKG-ADS-05 |
|
||||
| VAST-CONTEXT-01 | open / 已复现 | Published VAST callback aliases and eager Player differ from the unpublished lazy workspace | PKG-VAST-02, PKG-VAST-03, PKG-VAST-04 |
|
||||
| VAST-CONTEXT-01 | accepted-with-scope / 已复现 | Published VAST callback aliases and eager Player differ from the unpublished lazy workspace | PKG-VAST-02, PKG-VAST-03, PKG-VAST-04 |
|
||||
| VAST-TYPE-01 | open / 已复现 | VAST declares an async factory as synchronous and imports an unavailable SDK type dependency | PKG-VAST-04, PKG-VAST-06 |
|
||||
| VAST-LIFE-01 | open / 已复现 | VAST SDK and container lack core destruction ownership and pending work cancellation | PKG-VAST-02, PKG-VAST-03, PKG-VAST-05 |
|
||||
| VAST-DIST-01 | open / 已复现 | Published VAST CommonJS default namespace differs from the current callable distribution | PKG-VAST-04, PKG-VAST-06, PKG-VAST-07 |
|
||||
|
||||
+15
-5
@@ -3255,7 +3255,7 @@
|
||||
"id": "VAST-CONTEXT-01",
|
||||
"title": "Published VAST callback aliases and eager Player differ from the unpublished lazy workspace",
|
||||
"confirmation": "reproduced",
|
||||
"status": "open",
|
||||
"status": "accepted-with-scope",
|
||||
"owners": [
|
||||
"PKG-VAST-02",
|
||||
"PKG-VAST-03",
|
||||
@@ -3266,10 +3266,18 @@
|
||||
"refactor/baselines/vast-release.json",
|
||||
"refactor/changes/2026-09-12-PKG-VAST-01-contract.md",
|
||||
"refactor/baselines/vast-contract-validation.json",
|
||||
"refactor/vast-compatibility-decision.md",
|
||||
"refactor/changes/2026-09-14-PKG-VAST-03-compatibility.md",
|
||||
"refactor/baselines/vast-compatibility-validation.json"
|
||||
],
|
||||
"compatibleResolution": "User accepted npm eager default and explicit workspace-1.2 lazy mode. Published callback data fields, SDK defaults, container styles and request forwarding are preserved; workspace extensions are opt-in.",
|
||||
"closureCriteria": "Published and workspace consumer fixtures cover all callback fields and initialization timing; any irreconcilable behavior has a concrete decision rather than implicit waiver.",
|
||||
"resolutionEvidence": [
|
||||
"refactor/changes/2026-09-14-PKG-VAST-03-compatibility.md",
|
||||
"refactor/baselines/vast-compatibility-validation.json",
|
||||
"refactor/vast-compatibility-decision.md"
|
||||
],
|
||||
"compatibleResolution": "Restore published id/$container access and reconcile eager non-null Player with lazy workspace usage using explicit consumer evidence.",
|
||||
"closureCriteria": "Published and workspace consumer fixtures cover all callback fields and initialization timing; any irreconcilable behavior has a concrete decision rather than implicit waiver."
|
||||
"resolutionRationale": "The mutually exclusive initialization timing is explicitly approved and covered by published/workspace consumer tests. Unpublished lazy callers add the second option; public declarations remain VAST-TYPE-01/task04 and real IMA remains task05."
|
||||
},
|
||||
{
|
||||
"id": "VAST-TYPE-01",
|
||||
@@ -3312,11 +3320,13 @@
|
||||
"refactor/baselines/vast-core.json",
|
||||
"refactor/vast-validation.md",
|
||||
"refactor/baselines/vast-lifecycle-validation.json",
|
||||
"refactor/changes/2026-09-12-PKG-VAST-03-lifecycle.md"
|
||||
"refactor/changes/2026-09-12-PKG-VAST-03-lifecycle.md",
|
||||
"refactor/changes/2026-09-14-PKG-VAST-03-compatibility.md",
|
||||
"refactor/baselines/vast-compatibility-validation.json"
|
||||
],
|
||||
"compatibleResolution": "Reproduce pending SDK/callback destruction, errors, duplicate IDs and stale ad events before adding compatible cleanup and state ownership.",
|
||||
"closureCriteria": "Tests prove cleanup during load/callback rejection/core destruction and distinguish explicit plugin recreation from terminal core destruction; vendor media restoration is separately verified.",
|
||||
"workspaceState": "45 Node tests include 16 frozen historical observations across 10 lifecycle/error categories. Real browser core destruction plus late SDK resolution leaves a newly allocated recorder in the detached player across 5.1.7/5.4.1/candidate. Google IMA allocation itself is not simulated as evidence; exact wrapper SDK boundary is controlled. All production fixes remain PKG-VAST-03 work. PKG-VAST-03 checkpoint: 15 candidate lifecycle assertions fail on frozen workspace and pass after TS ownership changes; 117 real browser wrapper checks pass with controlled SDK. Risk stays open pending full compatibility and actual vendor acceptance."
|
||||
"workspaceState": "Task03 runtime ownership and both approved modes pass82 Node and162 real-browser wrapper checks (99 candidate,63 historical), with controlled SDK only. Eager callback errors/cancellation, rollback and explicit recreation are covered. Risk remains open for actual vendor media restoration in task05; no VPN exception was used."
|
||||
},
|
||||
{
|
||||
"id": "VAST-DIST-01",
|
||||
|
||||
+4
-2
@@ -3086,14 +3086,16 @@
|
||||
"CORE-10",
|
||||
"CORE-13"
|
||||
],
|
||||
"status": "doing",
|
||||
"status": "done",
|
||||
"risk": "H",
|
||||
"deliverable": "SDK loader、IMA adapter、广告状态和 DOM 清理分离;保持发布 callback 别名,明确初始化冲突;核心终止与显式 destroy 后重建区分",
|
||||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||||
"evidence": [
|
||||
"changes/2026-09-12-PKG-VAST-03-lifecycle.md",
|
||||
"baselines/vast-lifecycle-validation.json",
|
||||
"vast-compatibility-decision.md"
|
||||
"vast-compatibility-decision.md",
|
||||
"changes/2026-09-14-PKG-VAST-03-compatibility.md",
|
||||
"baselines/vast-compatibility-validation.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
# VAST 初始化兼容决策:待用户选择
|
||||
# VAST 初始化兼容决策:已确认并完成运行时实施
|
||||
|
||||
2026-09-14用户明确接受:“保留 npm 默认行为,显式选择工作区惰性模式”。
|
||||
以下推荐方案现在是实施依据,不再等待此项授权。生命周期、类型、实际IMA与
|
||||
分发仍须分别验证;本确认不豁免这些门槛,也不授权发布。
|
||||
|
||||
来源:[真实发布契约](baselines/vast-contract.md);已可重跑的
|
||||
`vast-contract.test.mjs`及`test/vast.test.js`固定以下矛盾:
|
||||
@@ -14,12 +18,12 @@
|
||||
用户操作调用`init()`。在同一默认调用中无法同时保留非null和null,以及相反初始化时机。
|
||||
添加别名或getter也无法同时满足两种值;按callback源码猜测用户版本不可取。
|
||||
|
||||
## 推荐的具体处置(尚未实现)
|
||||
## 已接受并实施的具体处置
|
||||
|
||||
优先保持实际npm1.0.0默认行为:回调前初始化、提供id/$container,SDK默认设置保持
|
||||
发布语义;保留workspace新增的init/container/settings等字段作为扩展。
|
||||
|
||||
确实依赖未发布1.2.0惰性行为的代码,拟通过新的可选第二参数明确选择该兼容模式:
|
||||
确实依赖未发布1.2.0惰性行为的代码,通过新的可选第二参数明确选择该兼容模式:
|
||||
|
||||
```js
|
||||
// npm旧用法保持原样
|
||||
@@ -35,11 +39,27 @@ artplayerPluginVast((context) => {
|
||||
```
|
||||
|
||||
这意味着依赖未发布1.2.0默认惰性的代码需要增加一个参数。普通npm1.0.0用户保持
|
||||
原调用;这不是声称两种相反语义完全兼容。第二参数仅为待确认方案,当前生产代码
|
||||
尚未新增它;类型误声明、CJS.default和分发路径仍各自单独验证。
|
||||
原调用;这不是声称两种相反语义完全兼容。第二参数已获用户明确授权,生产代码
|
||||
由PKG-VAST-03落实;公开类型由04协调,CJS.default和完整分发各自单独验证。
|
||||
|
||||
## 当前检查点
|
||||
默认模式同时保持发布版的可写数据字段、SDK默认设置、透明容器和每次显式请求
|
||||
转发;包装层不订阅工作区新增的四个广告事件,不代替SDK管理广告显隐。
|
||||
显式工作区模式保留黑色容器、四事件显隐、活动广告期间请求抑制及实时getter。
|
||||
两者共享已修复的资源所有权、初始化回滚和终止规则。
|
||||
|
||||
生命周期与资源修复不依赖该选择,已经推进;默认初始化暂保持工作区行为,不把
|
||||
PKG-VAST-03或VAST-CONTEXT-01标完成。用户针对Ads的类型推导批准不适用于本决策。
|
||||
需要用户确认是否按推荐方案优先实际发布默认行为;也可指定其他取舍。
|
||||
默认模式销毁后保留三个发布数据字段的快照,容器已移除、SDK已释放;扩展的
|
||||
container getter返回null。显式重建会更新三个数据字段;核心销毁则禁止重建。
|
||||
工作区模式所有资源getter随当前session归零。默认ID保留art-前缀,工作区保留
|
||||
art-vast-;两者增加单模块递增后缀修复同毫秒ID碰撞,不恢复已复现的重复ID缺陷。
|
||||
|
||||
兼容选项在工厂调用时读取一次,后续修改原options不改变已创建的注册函数。
|
||||
未知compatibility值抛TypeError,发生在加载SDK之前。公开声明尚由04负责,
|
||||
本步骤的JS示例不是宣称新的第二参数已完成TypeScript消费验收。
|
||||
|
||||
## 当前验收边界
|
||||
|
||||
PKG-VAST-03已落实默认模式、显式工作区模式与发布字段,82项Node、162项三浏览器
|
||||
受控SDK检查通过;初始化风险按本次用户决定限定接受。详见
|
||||
[完成记录](changes/2026-09-14-PKG-VAST-03-compatibility.md)。实际IMA播放和公开声明
|
||||
尚未完成。此前Ads的类型推导批准与本次VAST运行时决定分别记录;未来类型协调
|
||||
继续以实际发布声明为基线。
|
||||
@@ -1,34 +1,50 @@
|
||||
# VAST 测试维护
|
||||
|
||||
当前完成 PKG-VAST-01/02;生产重构由03/04继续。来源见
|
||||
PKG-VAST-03现已落实用户确认的两种初始化模式;公开声明继续由04协调。来源见
|
||||
[实际契约](baselines/vast-contract.md)、[VAST/SDK归档](baselines/vast-release.json)
|
||||
和 [核心5.1.7归档](baselines/vast-core.json)。工作区1.2.0不是npm发布版本。
|
||||
|
||||
03检查点:新增`test/vast-lifecycle.test.js`的15项候选修复断言,冻结工作区全部失败、
|
||||
早期03检查点:新增`test/vast-lifecycle.test.js`的15项候选修复断言,冻结工作区全部失败、
|
||||
当前5个TS模块全部通过;现有测试共60项Node、117项浏览器通过。覆盖终止/回调失败、
|
||||
初始化回滚、活动广告重建、旧事件、配置getter和SDK同步重入;完整CI900项通过。
|
||||
该文件已纳入`yarn test:vast`和`test:unit`。实际资源所有权见
|
||||
[包内架构](../packages/artplayer-plugin-vast/ARCHITECTURE.md);
|
||||
[初始化冲突](vast-compatibility-decision.md)未决定,03仍doing。以下缺陷清单保留历史
|
||||
[初始化冲突](vast-compatibility-decision.md)当时尚未决定。以下缺陷清单保留历史
|
||||
来源,不代表候选实现仍包含这些已获可控修复证据的问题;真实IMA验收仍待05。
|
||||
|
||||
## 文件与执行
|
||||
|
||||
PKG-VAST-07补回工厂`.default`自身别名,不改变初始化决策。当前`yarn test:vast`
|
||||
PKG-VAST-07补回工厂`.default`自身别名,不改变初始化决策。当时`yarn test:vast`
|
||||
65项通过;实际main/legacy加ESM各4项导出通过。117项三浏览器检查通过,其中候选
|
||||
异步注册场景使用`.default`,其他场景保留直接调用。浏览器仍替换SDK边界,实际
|
||||
打包SDK只做无广告的导出/已销毁宿主验证。详见
|
||||
[变更](changes/2026-09-14-PKG-VAST-07-default-alias.md)。
|
||||
|
||||
2026-09-14用户确认默认保留npm语义、显式选择workspace惰性模式。当前Node82项
|
||||
通过,三浏览器×三核心×四插件实现/模式162项通过(99候选,63历史)。主片解码
|
||||
是真实浏览器行为,SDK仍受控。首次新增7项Node中5项在原候选失败,修复后新增
|
||||
10项全过;首轮浏览器153过9失败来自默认模式仍被旧断言当作工作区显隐,原报告
|
||||
保留。修正为各自历史前缀、监听数和显隐责任,并补充回调开始时资源/数据字段
|
||||
检查;未删除清理/重建断言。最终源码格式整理后重跑,完整证据见
|
||||
[03完成记录](changes/2026-09-14-PKG-VAST-03-compatibility.md)。
|
||||
版本以实际附件为准:npm核心5.1.7/5.4.0、候选5.4.1;早期文档把published路径
|
||||
写为5.4.1不准确,本轮报告已按来源及实际coreVersion纠正。
|
||||
|
||||
- `test/vast-exports.test.js`:源码构建或环境变量指定的实际main/legacy/ESM导出。
|
||||
保持现有callable,不宣称复刻旧namespace对象的反射形状;新文件纳入test:vast/test:unit。
|
||||
- `test/helpers/vast-sdk.js`:可在Node和浏览器使用的SDK记录器,控制加载、构造、
|
||||
监听、请求、销毁失败和晚到事件;不实现IMA、广告请求或主片暂停恢复。
|
||||
- `test/helpers/vast.js`:只在精确的`@glomex/vast-ima-player`导入边界替换SDK。
|
||||
当前JS/TS入口可打包加载;两套历史源码必须来自哈希验证的npm归档/Git内容。
|
||||
source与source-workspace是相同编译代码,后者显式传第二参数;published字段
|
||||
表示行为模式,historical才表示历史代码。浏览器附件记录实际选项,避免混计。
|
||||
Node宿主仅提供事件和DOM所有权意图,不模拟布局或视频解码。
|
||||
- `test/vast.test.js`:共享契约、工作区新增功能、独立的历史缺陷观察。
|
||||
修复时为当前候选增加正确行为断言,保留历史缺陷复现,不能把旧缺陷移入共享契约。
|
||||
- `test/vast-compatibility.test.js`:对照实际npm源码,验证提前初始化、原数据属性、
|
||||
SDK默认设置、重复请求、回调拒绝/取消、构造重入、销毁重建及显式模式选择。
|
||||
与原生命周期文件一起纳入test:vast/test:unit;后者保留工作区专属getter/四事件
|
||||
故障断言,默认模式由兼容文件和共享/浏览器矩阵覆盖。
|
||||
- `test/browser/vast.spec.js`:三真实浏览器×三核心,测试异步注册、加载失败、真实
|
||||
DOM显隐、显式清理重建、主片解码/切源和销毁后晚到初始化。SDK仍是同一受控记录器。
|
||||
- `refactor/scripts/vast-core.test.mjs`:实际5.1.7 tarball、197成员和发布关联检查。
|
||||
@@ -54,9 +70,9 @@ VAST-LIFE-01由源码观察提升为受控运行复现,问题如下:
|
||||
9. 工作区SDK destroy抛错阻止DOM及引用清理。
|
||||
10. 工作区事件注册失败后留下不完整SDK,下一次init错误地认为它已就绪。
|
||||
|
||||
03应建立明确的生命周期/SDK/DOM所有权,并区分可重建的显式广告destroy与终止性的
|
||||
核心destroy。04处理准确类型、SDK声明依赖和同步误声明;初始化冲突应以发布及
|
||||
工作区消费者证据明确处置,Ads的专属类型批准不能扩展到VAST。
|
||||
03已建立生命周期/SDK/DOM所有权,区分可重建的显式广告destroy与终止性的核心destroy。
|
||||
初始化差异按用户本次独立确认处置;04处理准确类型、SDK声明依赖和同步误声明。
|
||||
运行时确认没有扩大Ads类型批准范围,也不自动豁免VAST声明兼容。
|
||||
|
||||
## 验证边界
|
||||
|
||||
@@ -65,4 +81,4 @@ VAST-LIFE-01由源码观察提升为受控运行复现,问题如下:
|
||||
使用精确注入;Node固定Date.now用于同毫秒ID复现,未改变生产时钟。
|
||||
|
||||
只有实际VAST外部脚本持续因VPN无法加载时,可按用户授权记录并跳过该网络验证;
|
||||
它不豁免类型、生命周期或其他包。到02为止未用该例外。03~06和SDK-07继续开放。
|
||||
它不豁免类型、生命周期或其他包。本次未用该例外。04~06和SDK-07继续开放。
|
||||
Reference in new issue
Block a user