4.2 KiB
VAST 实际发布契约
PKG-VAST-01;固定内容见 发布及SDK归档。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规则始终无法加载时,可以记录并跳过,留给用户 后续处理。仍记录实际失败与未验证范围;本轮注册表/归档下载正常,未使用此例外。