mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-09 20:26:16 -08:00
48 lines
4.2 KiB
Markdown
48 lines
4.2 KiB
Markdown
# VAST 实际发布契约
|
||
|
||
PKG-VAST-01;固定内容见 [发布及SDK归档](vast-release.json)。2026-09-12查阅npm注册表,
|
||
VAST仅发布1.0.0(2024-10-12),工作区1.2.0未发布;目标依既定政策为2.0.0,正式
|
||
发布前重新核对版本占用。此处不是未来latest承诺。
|
||
|
||
## 发布版与工作区差异
|
||
|
||
| 契约 | 实际npm 1.0.0 | 冻结工作区1.2.0 | 后续处理 |
|
||
| --- | --- | --- | --- |
|
||
| 工厂 | `factory(callback)(art)`,第二层async;先await SDK,再await callback | 同样async,可省略callback | 保持Promise与回调完成顺序,补错误/销毁竞态测试 |
|
||
| 公开声明 | export=、全局namespace;第二层错误声明为同步Result;callback参数必需 | default export;仍错误声明同步Result;新增Instance/Option类型 | 协调实际Promise与旧类型消费者,不把Ads专属批准自动扩大到VAST |
|
||
| callback字段 | art/id/ima/imaPlayer/$container/playUrl/playRes | art/playUrl/playRes/init/ima/adsRenderingSettings/playerOptions;imaPlayer/container为getter | 恢复真实发布别名并评估两套消费形状,不能漏掉旧id/$container |
|
||
| 初始化 | 回调前创建Player和container,imaPlayer非空 | init/playUrl/playRes触发懒初始化,回调初始imaPlayer/container为null | 立即初始化与惰性行为存在真实冲突,明确处置而非假称两者一致 |
|
||
| 请求 | playUrl写adTagUrl;playRes写adsResponse;都返回void | 增加config枚举覆盖,可覆盖主字段;广告播放中请求直接返回 | 保留合法请求及config用法,测试继承字段/重复/失败路径 |
|
||
| 返回值 | await后仅{name} | await后{name,destroy},destroy同步 | 核心destroy与显式SDK destroy区分,核实重建语义 |
|
||
| 容器 | `art-${Date.now()}`,display:none;交由SDK显示 | `art-vast-${Date.now()}`,黑底/pointerEvents;监听四种广告事件显隐 | DOM/ID/事件时序及同毫秒多实例待测 |
|
||
| 默认SDK设置 | new AdsRenderingSettings/PlayerOptions默认值 | 额外打开restoreCustomPlaybackStateOnAdBreakComplete和enablePreloading | 先固定真实SDK行为,禁止把默认值变化当作无影响整理 |
|
||
| CommonJS/script | Parcel namespace `{default:factory}`,window全局;main/legacy | callable、ESM/legacy和exports | 兼容旧`.default`、原dist路径和类型入口 |
|
||
| 生命周期 | 无核心destroy订阅,无自动清理 | 仍无核心destroy订阅,只有回调完成后的公开destroy | 资源所有权、SDK加载中销毁、callback拒绝、晚到事件需复现及修复 |
|
||
|
||
## SDK与历史核心
|
||
|
||
发布版依赖范围@glomex/vast-ima-player ^1.21.0,工作区^1.21.2、锁定安装1.21.2。
|
||
冻结SDK1.21.0/1.21.2的全部27+27成员及插件6成员,SHA512和SHA256校验,不把
|
||
工作区node_modules当作实际发布来源。SDK打包代码包含loadImaSdk,远程地址为
|
||
`https://imasdk.googleapis.com/js/sdkloader/ima3.js`;该远程服务不是已冻结的本地SDK
|
||
tarball,真实网络/广告行为仍需05取证。
|
||
|
||
两版SDK的公开dist/index.d.ts和vast-ima-player.d.ts都引用@alugha/ima,但仅把它
|
||
列入devDependencies。当前工作区未安装该包,TS5.9.3和4.3.5的最小VAST消费者各有
|
||
两个TS2307;记录在本步验证证据中。04应使实际安装后的声明自洽,不能依靠skipLibCheck。
|
||
|
||
发布gitHead对应核心5.1.7,源manifest哈希已固定;这是历史关联,不是该核心tarball
|
||
或媒体组合已通过。02/05应核验真实5.1.7以及5.4.1/候选核心。
|
||
|
||
## 验证边界
|
||
|
||
`vast-contract.mjs`校验三份归档、60成员、冻结Git源码与核心关联。
|
||
`vast-contract.test.mjs`执行实际发布main/legacy的导出形状,并在准确SDK注入边界
|
||
运行哈希校验过的两套源码,观察callback字段、提前/惰性初始化、Promise等待、
|
||
请求配置和Result。这里的Player是受控记录器,不是Google IMA或真实广告播放。
|
||
VM导出检查提供当前平台CustomEvent;初次未提供时触发SDK事件polyfill的document
|
||
访问,属于测试夹具缺项,不能泛称当前Node的SSR必然失败。
|
||
|
||
用户明确更正:只有VAST脚本确因VPN规则始终无法加载时,可以记录并跳过,留给用户
|
||
后续处理。仍记录实际失败与未验证范围;本轮注册表/归档下载正常,未使用此例外。
|