mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-25 08:01:20 -08:00
refactor(vast): [PKG-VAST-03] isolate lifecycle ownership checkpoint
This commit is contained in:
1 parent
d5e1feadf5
commit
4f324a8438
30 files changed
+1453
-383
No files matched your search
@@ -0,0 +1,188 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"task": "PKG-VAST-03",
|
||||
"status": "doing",
|
||||
"sourceCommit": "d5e1fead",
|
||||
"checks": [
|
||||
{
|
||||
"command": "node --test refactor/.cache/vast03-before.test.mjs",
|
||||
"result": "15 expected failures on frozen workspace source; identical candidate assertions",
|
||||
"tests": 15,
|
||||
"failed": 15,
|
||||
"passed": 0,
|
||||
"log": {
|
||||
"file": "refactor/.cache/vast03-before.log",
|
||||
"sha256": "05bddd211578ae5086ce5b974d7598a1d0024bda69794026d730f8da02149058"
|
||||
},
|
||||
"fixture": {
|
||||
"file": "refactor/.cache/vast03-before.test.mjs",
|
||||
"sha256": "505d9a87e16138283ec2823b394eac6f0e640718a6cbf50af8a2dcfb3d611f49"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "node --test test/vast.test.js test/vast-lifecycle.test.js",
|
||||
"result": "pass",
|
||||
"tests": 60,
|
||||
"candidateLifecycle": 15,
|
||||
"log": {
|
||||
"file": "refactor/.cache/vast03-lifecycle-node-final.log",
|
||||
"sha256": "b1a22029079b702954cce52fc63a57203baa38bcfefbb0b7d60c4a7dc4c43408"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "yarn build artplayer-plugin-vast",
|
||||
"result": "pass",
|
||||
"formats": [
|
||||
"main",
|
||||
"legacy",
|
||||
"esm"
|
||||
],
|
||||
"log": {
|
||||
"file": "refactor/.cache/vast03-build.log",
|
||||
"sha256": "c32e975b99fdf2d88397ec528c2d4b954dab4cfdaedbf83c0f0f8f38672a9e65"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "yarn test:browser vast.spec.js",
|
||||
"result": "pass",
|
||||
"tests": 117,
|
||||
"stats": {
|
||||
"startTime": "2026-09-12T01:27:19.631Z",
|
||||
"duration": 49123.307,
|
||||
"expected": 117,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"scope": "Actual core 5.1.7/5.4.1/candidate, actual DOM/main media, controlled Glomex boundary in wrapper source builds. Not final bundled SDK runtime acceptance.",
|
||||
"log": {
|
||||
"file": "refactor/.cache/vast03-browser.log",
|
||||
"sha256": "848ea969ac9f30776817284eb488fdf9d660ae98bcd01d32dbaf8f70e04fdfb5"
|
||||
},
|
||||
"report": {
|
||||
"file": "refactor/.cache/vast03-browser-report.json",
|
||||
"sha256": "fd58f0b1ebcd1d2ec209bfd94e29f7387ef55d9ffdba8e145d7a22f72fbb079c"
|
||||
},
|
||||
"results": "refactor/.cache/vast03-browser-results"
|
||||
},
|
||||
{
|
||||
"command": "yarn ci:check",
|
||||
"result": "pass",
|
||||
"tests": {
|
||||
"unit": 832,
|
||||
"engineering": 14,
|
||||
"baseline": 54,
|
||||
"total": 900
|
||||
},
|
||||
"sourceTS": 274,
|
||||
"coreDeclarations": 37,
|
||||
"log": {
|
||||
"file": "refactor/.cache/vast03-ci.log",
|
||||
"sha256": "5e6bb801f578792debcd88ff0341922dd053f358b9f78f2d51839063132c0deb"
|
||||
}
|
||||
}
|
||||
],
|
||||
"pending": [
|
||||
"Published versus workspace initialization decision",
|
||||
"Published id/$container aliases",
|
||||
"Public declaration and CommonJS namespace reconciliation in04",
|
||||
"Real IMA and package distribution validation in05/06"
|
||||
],
|
||||
"inputs": [
|
||||
{
|
||||
"file": "package.json",
|
||||
"sha256LF": "fce3d3a49ba5bb24fd1ae2191e4e13b679395cf50df5d26b355904dd9b31caf2"
|
||||
},
|
||||
{
|
||||
"file": "yarn.lock",
|
||||
"sha256LF": "9bd01cf6394ece742aecb0ecc2a2aa563012de2c16f28141ed03dd37e17f8717"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-vast/package.json",
|
||||
"sha256LF": "dd4c196a8c94b0037bc156e428300b030d40b6f015f3ad165ef48aa733149052"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-vast/tsconfig.json",
|
||||
"sha256LF": "712a3fa32ed57692d16bf854a0e77ffaecd04236efa0f557905aab7291e0aef6"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-vast/src/index.ts",
|
||||
"sha256LF": "c17455be188ecb23161729234faa1b4309a3b60f08465509e873fee2f1dd21d6"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-vast/src/sdk.ts",
|
||||
"sha256LF": "aaff7c1e4a31ff99261b045648663caa46f66b5a25ad129e5fc929facaf1ff89"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-vast/src/session.ts",
|
||||
"sha256LF": "472ad363276711dd79c375e5cdfe44cc42dd7f781a04974442f2599998c8cbc2"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-vast/src/types.ts",
|
||||
"sha256LF": "0042303fd4206467724a7c5abda633436ac30a3d1139b24609e1a7dd1e890b23"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-vast/src/view.ts",
|
||||
"sha256LF": "c36008cdf2e6b7818b166deb4842ce8d405272486e2c07b6226e8e2905640328"
|
||||
},
|
||||
{
|
||||
"file": "test/helpers/vast-sdk.js",
|
||||
"sha256LF": "f8bc792ef16da9396bafefaf89f1b53b6254bf263d0c3019b87ee188eac35bd1"
|
||||
},
|
||||
{
|
||||
"file": "test/helpers/vast.js",
|
||||
"sha256LF": "ea985ca97946645a8b6fc76c9d69ec4fc12f959ab175402cd34e93bc81c14ce9"
|
||||
},
|
||||
{
|
||||
"file": "test/vast.test.js",
|
||||
"sha256LF": "b02c12c0440540f4f13929bbdcb3607621a42fdc6f29debbc912189c3aa025a6"
|
||||
},
|
||||
{
|
||||
"file": "test/vast-lifecycle.test.js",
|
||||
"sha256LF": "5b6eb97ee038755046fdc31b4fa12e4a3e20903deafc208d6378f7e5de61dfbc"
|
||||
},
|
||||
{
|
||||
"file": "test/browser/vast.spec.js",
|
||||
"sha256LF": "7cef5364837e3e0b4818ecfa954c1e4214ac6627be78ee85bd32cdb479b37f62"
|
||||
}
|
||||
],
|
||||
"artifacts": [
|
||||
{
|
||||
"file": "packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.js",
|
||||
"sha256": "874803ec726f04649bb636c1376de9e038754310ab0016a22da44f189b7a5ce0"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.legacy.js",
|
||||
"sha256": "7d4e0fdb95e6881f6b6379a7c36599fb5087cf9122253718a955931077c9f420"
|
||||
},
|
||||
{
|
||||
"file": "packages/artplayer-plugin-vast/dist/artplayer-plugin-vast.mjs",
|
||||
"sha256": "7650fb0d42e8bb7049d201859187d28f69b1868ac7e25539a7575ee50ae1b2d7"
|
||||
}
|
||||
],
|
||||
"dependency": {
|
||||
"package": "@alugha/ima",
|
||||
"version": "2.1.0",
|
||||
"license": "MIT",
|
||||
"purpose": "Public Glomex SDK declaration dependency; runtime loader remains existing Glomex implementation",
|
||||
"installation": {
|
||||
"file": "refactor/.cache/vast03-dependency.log",
|
||||
"sha256": "ad5ace8a5a596d521f65ab454793d3e3d2cce9b774310ce9082e232fd8d1bf95"
|
||||
},
|
||||
"consumerTypes": {
|
||||
"source": "import vast from \"artplayer-plugin-vast\"; vast(({imaPlayer})=>{void imaPlayer});",
|
||||
"results": [
|
||||
{
|
||||
"compiler": "5.9.3",
|
||||
"mode": "node10-commonjs",
|
||||
"diagnostics": []
|
||||
},
|
||||
{
|
||||
"compiler": "4.3.5",
|
||||
"mode": "node10-commonjs",
|
||||
"diagnostics": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
# PKG-VAST-03 生命周期实现检查点
|
||||
|
||||
起点d5e1fead。原index.js迁为5个严格TS模块:入口、SDK/request边界、session所有权、
|
||||
DOM视图及内部类型。实际职责/依赖/时序见
|
||||
[包内架构](../../packages/artplayer-plugin-vast/ARCHITECTURE.md)。
|
||||
|
||||
核心destroy在SDK加载前订阅;加载或callback完成后不会再创建终止实例的广告。
|
||||
session销毁时先使旧owner失效,再逐项释放监听/SDK/DOM,异常不阻断剩余清理;
|
||||
构造和事件注册失败回滚;旧事件不能污染新session;活动广告显式destroy后可重建。
|
||||
构造/订阅/销毁重入及request配置getter引发销毁/替换也有身份检查。
|
||||
|
||||
15项候选生命周期断言配合45项已有行为/历史观察,60项Node通过;另在冻结工作区
|
||||
执行同一候选断言记录修复前失败。三格式正式构建成功,117项真实浏览器测试通过,
|
||||
包含三核心/三引擎的新增终止、回调失败、旧事件与显式重建路径。SDK边界仍受控,
|
||||
不代表正式bundle中的实际IMA执行;该部分留给05/06。
|
||||
|
||||
直接固定依赖@alugha/ima2.1.0(MIT),补齐Glomex声明引用但未作为运行依赖提供的
|
||||
类型链;保持Glomex1.21.2与其实际SDK加载器,新增依赖没有直接运行时import。
|
||||
Yarn仅新增该依赖和相应锁条目;包的tsconfig纳入严格检查,未用skipLibCheck掩盖错误。
|
||||
初次lint发现单行try格式不符后修正,没有通过忽略整个文件避开检查。
|
||||
|
||||
**本任务仍doing**:[初始化决策](../vast-compatibility-decision.md) 展示npm发布版
|
||||
eager与未发布工作区lazy的不可同时满足条件。当前默认行为暂保持工作区,尚未恢复
|
||||
发布id/$container,因此不能声称03兼容验收完成。拟定方案默认保持npm1.0.0行为、
|
||||
另提供显式工作区兼容选择;尚未实现,等待用户确认。Ads批准不扩展到VAST。
|
||||
|
||||
公开类型同步误声明、历史CJS.default入口仍由04处理。新ID增加同毫秒区分后缀,保留
|
||||
workspace art-vast-前缀;发布ID规则与上面的初始化决策一起处理。SDK-07及VAST相关
|
||||
风险继续open,候选可控修复证据与实际供应商/发布验收分开记录。
|
||||
|
||||
执行结果、输入和产物指纹见 [验证记录](../baselines/vast-lifecycle-validation.json)。
|
||||
本批作为03未完成检查点独立本地提交;不push/tag/publish。回退该提交恢复旧VAST
|
||||
源码、依赖、构建输出和测试接入;01/02不可变基线与历史缺陷证据保留。
|
||||
|
||||
最终完整本地CI900项通过(832单元、14工程、54基线),274个生产TS检查,37份核心
|
||||
声明无漂移;15个候选断言在旧工作区均失败,修复后全部通过。TS5.9.3/4.3.5当前
|
||||
最小公开消费者的缺失类型错误均消除,但同步返回误声明仍开放。
|
||||
+3
-2
@@ -4,7 +4,7 @@
|
||||
|
||||
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 217 项,范围 22 个包及工作区/示例。
|
||||
|
||||
状态:todo 132 / doing 5 / blocked 0 / done 80 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
状态:todo 131 / doing 6 / blocked 0 / done 80 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
|
||||
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
|
||||
|
||||
@@ -269,7 +269,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 | todo |
|
||||
| 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-04 | artplayer-plugin-vast<br>迁移自有源码和公开类型 | PKG-VAST-03, ENG-04, ENG-06, CORE-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 |
|
||||
@@ -491,3 +491,4 @@
|
||||
- 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)
|
||||
@@ -1,5 +1,17 @@
|
||||
# 进度与证据
|
||||
|
||||
## 当前实施:VAST-03 TS拆分与生命周期修复
|
||||
|
||||
原入口拆成5个严格TS模块,处理核心终止、显式广告重建、SDK/DOM回滚与晚到/重入回调。
|
||||
15项候选生命周期断言在旧工作区全部失败,修复后60项Node通过;三格式构建成功,
|
||||
117项三核心/三引擎浏览器wrapper测试通过。完整CI900项通过、274个生产TS严格检查。
|
||||
补齐@alugha/ima2.1.0类型依赖,两个编译器不再出现SDK缺失类型错误。
|
||||
初始化行为存在真实发布/工作区冲突,已给出 [具体取舍](vast-compatibility-decision.md),
|
||||
确认前仍保持工作区默认,03保持doing;Google IMA及公开类型/分发完整验收未完成。
|
||||
当前217项:80 done、6 doing、131 todo。此批独立提交未完成检查点,见
|
||||
[实施记录](changes/2026-09-12-PKG-VAST-03-lifecycle.md) 和
|
||||
[验证证据](baselines/vast-lifecycle-validation.json)。
|
||||
|
||||
## 最新完成:VAST-02 行为与生命周期回归
|
||||
|
||||
45项Node测试通过,覆盖当前源码及两套冻结历史源码;实际核心5.1.7的197成员已归档。
|
||||
|
||||
+12
-6
@@ -702,7 +702,7 @@
|
||||
"PKG-VAST-05"
|
||||
],
|
||||
"evidence": [
|
||||
"packages/artplayer-plugin-vast/src/index.js",
|
||||
"packages/artplayer-plugin-vast/src/sdk.ts",
|
||||
"refactor/baselines/vast-contract.md",
|
||||
"refactor/baselines/vast-release.json",
|
||||
"refactor/changes/2026-09-12-PKG-VAST-01-contract.md",
|
||||
@@ -3181,7 +3181,8 @@
|
||||
"refactor/baselines/vast-contract.md",
|
||||
"refactor/baselines/vast-release.json",
|
||||
"refactor/changes/2026-09-12-PKG-VAST-01-contract.md",
|
||||
"refactor/baselines/vast-contract-validation.json"
|
||||
"refactor/baselines/vast-contract-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."
|
||||
@@ -3199,10 +3200,13 @@
|
||||
"refactor/baselines/vast-contract.md",
|
||||
"refactor/baselines/vast-release.json",
|
||||
"refactor/changes/2026-09-12-PKG-VAST-01-contract.md",
|
||||
"refactor/baselines/vast-contract-validation.json"
|
||||
"refactor/baselines/vast-contract-validation.json",
|
||||
"refactor/baselines/vast-lifecycle-validation.json",
|
||||
"refactor/changes/2026-09-12-PKG-VAST-03-lifecycle.md"
|
||||
],
|
||||
"compatibleResolution": "Provide accurate Promise/context/IMA types and a self-contained installed declaration chain while checking legacy export= and consumers.",
|
||||
"closureCriteria": "Strict isolated package consumers pass without skipLibCheck; synchronous Result inference differences are reproduced and resolved or separately approved. Ads approval does not apply."
|
||||
"closureCriteria": "Strict isolated package consumers pass without skipLibCheck; synchronous Result inference differences are reproduced and resolved or separately approved. Ads approval does not apply.",
|
||||
"workspaceState": "Direct @alugha/ima2.1.0 removes the two TS2307 diagnostics in TS5.9.3 and4.3.5; public synchronous Result mismatch and isolated packaged declaration validation remain04/06."
|
||||
},
|
||||
{
|
||||
"id": "VAST-LIFE-01",
|
||||
@@ -3222,11 +3226,13 @@
|
||||
"refactor/changes/2026-09-12-PKG-VAST-02-tests.md",
|
||||
"refactor/baselines/vast-behavior-validation.json",
|
||||
"refactor/baselines/vast-core.json",
|
||||
"refactor/vast-validation.md"
|
||||
"refactor/vast-validation.md",
|
||||
"refactor/baselines/vast-lifecycle-validation.json",
|
||||
"refactor/changes/2026-09-12-PKG-VAST-03-lifecycle.md"
|
||||
],
|
||||
"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."
|
||||
"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."
|
||||
},
|
||||
{
|
||||
"id": "VAST-DIST-01",
|
||||
|
||||
+6
-2
@@ -2692,11 +2692,15 @@
|
||||
"CORE-10",
|
||||
"CORE-13"
|
||||
],
|
||||
"status": "todo",
|
||||
"status": "doing",
|
||||
"risk": "H",
|
||||
"deliverable": "SDK loader、IMA adapter、广告状态和 DOM 清理分离;保持发布 callback 别名,明确初始化冲突;核心终止与显式 destroy 后重建区分",
|
||||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||||
"evidence": []
|
||||
"evidence": [
|
||||
"changes/2026-09-12-PKG-VAST-03-lifecycle.md",
|
||||
"baselines/vast-lifecycle-validation.json",
|
||||
"vast-compatibility-decision.md"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "PKG-VAST-04",
|
||||
|
||||
@@ -165,6 +165,7 @@
|
||||
{
|
||||
"name": "artplayer-plugin-vast",
|
||||
"declaredRuntimeDependencies": {
|
||||
"@alugha/ima": "2.1.0",
|
||||
"@glomex/vast-ima-player": "^1.21.2"
|
||||
},
|
||||
"resolvedRuntimeDependencies": [
|
||||
@@ -175,6 +176,14 @@
|
||||
"installedVersion": "1.21.2",
|
||||
"manifestLicense": "Apache-2.0",
|
||||
"licenseEvidence": "Installed package manifest claim; bundled notice and transitive/license review remain with the owning package."
|
||||
},
|
||||
{
|
||||
"name": "@alugha/ima",
|
||||
"range": "2.1.0",
|
||||
"lockedVersion": "2.1.0",
|
||||
"installedVersion": "2.1.0",
|
||||
"manifestLicense": "MIT",
|
||||
"licenseEvidence": "Installed package manifest and LICENSE.md; direct dependency supplies the public declaration chain referenced by Glomex."
|
||||
}
|
||||
],
|
||||
"developmentDependencies": {}
|
||||
@@ -1118,7 +1127,9 @@
|
||||
"PKG-VAST-05"
|
||||
],
|
||||
"sourceFiles": [
|
||||
"packages/artplayer-plugin-vast/src/index.js"
|
||||
"packages/artplayer-plugin-vast/src/index.ts",
|
||||
"packages/artplayer-plugin-vast/src/sdk.ts",
|
||||
"packages/artplayer-plugin-vast/src/session.ts"
|
||||
],
|
||||
"contract": "@glomex/vast-ima-player loadImaSdk loads external IMA; preserve event/content/ad state and teardown, do not equate mocks with vendor service acceptance.",
|
||||
"validationStatus": "Source integration observed; complete real SDK/service/device matrix not yet verified.",
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# VAST 初始化兼容决策:待用户选择
|
||||
|
||||
来源:[真实发布契约](baselines/vast-contract.md);已可重跑的
|
||||
`vast-contract.test.mjs`及`test/vast.test.js`固定以下矛盾:
|
||||
|
||||
| 同一次 callback 开始时 | npm1.0.0 | 未发布工作区1.2.0 |
|
||||
| --- | --- | --- |
|
||||
| imaPlayer | 已构造、非null | null,直到init/playUrl/playRes |
|
||||
| DOM | 已挂载$container,并提供id | 不存在容器,container getter为null |
|
||||
| 设置 | IMA默认值 | 默认启用preloading及restoreCustomPlaybackStateOnAdBreakComplete |
|
||||
|
||||
实际发布用户可以直接写 `({ imaPlayer }) => imaPlayer.addEventListener(...)`。
|
||||
工作区用户可以先判断`context.imaPlayer === null`并修改`playerOptions`,然后等待
|
||||
用户操作调用`init()`。在同一默认调用中无法同时保留非null和null,以及相反初始化时机。
|
||||
添加别名或getter也无法同时满足两种值;按callback源码猜测用户版本不可取。
|
||||
|
||||
## 推荐的具体处置(尚未实现)
|
||||
|
||||
优先保持实际npm1.0.0默认行为:回调前初始化、提供id/$container,SDK默认设置保持
|
||||
发布语义;保留workspace新增的init/container/settings等字段作为扩展。
|
||||
|
||||
确实依赖未发布1.2.0惰性行为的代码,拟通过新的可选第二参数明确选择该兼容模式:
|
||||
|
||||
```js
|
||||
// npm旧用法保持原样
|
||||
artplayerPluginVast(({ imaPlayer, $container, id }) => {
|
||||
imaPlayer.addEventListener('AdStarted', onAdStarted)
|
||||
})
|
||||
|
||||
// 未发布工作区1.2.0的初始化时机与默认设置保留在显式模式
|
||||
artplayerPluginVast((context) => {
|
||||
context.playerOptions.autoResize = false
|
||||
button.onclick = () => context.playUrl(adTag)
|
||||
}, { compatibility: 'workspace-1.2' })
|
||||
```
|
||||
|
||||
这意味着依赖未发布1.2.0默认惰性的代码需要增加一个参数。普通npm1.0.0用户保持
|
||||
原调用;这不是声称两种相反语义完全兼容。第二参数仅为待确认方案,当前生产代码
|
||||
尚未新增它;类型误声明、CJS.default和分发路径仍各自单独验证。
|
||||
|
||||
## 当前检查点
|
||||
|
||||
生命周期与资源修复不依赖该选择,已经推进;默认初始化暂保持工作区行为,不把
|
||||
PKG-VAST-03或VAST-CONTEXT-01标完成。用户针对Ads的类型推导批准不适用于本决策。
|
||||
需要用户确认是否按推荐方案优先实际发布默认行为;也可指定其他取舍。
|
||||
@@ -4,6 +4,14 @@
|
||||
[实际契约](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项候选修复断言,冻结工作区全部失败、
|
||||
当前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。以下缺陷清单保留历史
|
||||
来源,不代表候选实现仍包含这些已获可控修复证据的问题;真实IMA验收仍待05。
|
||||
|
||||
## 文件与执行
|
||||
|
||||
- `test/helpers/vast-sdk.js`:可在Node和浏览器使用的SDK记录器,控制加载、构造、
|
||||
|
||||
Reference in new issue
Block a user