test(dpip): [PKG-DPIP-01] freeze actual releases and window contracts

This commit is contained in:
Harvey Zhao committed 2026-09-12 13:51:30 +08:00
1 parent 224572032a
commit efbbdb4782
16 files changed
+1041 -10

No files matched your search

@@ -0,0 +1,101 @@
{
"schemaVersion": 1,
"task": "PKG-DPIP-01",
"status": "done",
"checks": [
{
"command": "node --test refactor/scripts/dpip-contract.test.mjs refactor/scripts/contracts.test.mjs",
"result": "pass",
"tests": 23,
"dpip": 16,
"indexValidation": 7
},
{
"command": "focused eslint --no-fix",
"result": "pass"
},
{
"command": "yarn ci:check",
"result": "pass",
"tests": {
"unit": 938,
"engineering": 14,
"baseline": 116,
"mainTotal": 1068,
"repeatedContractExecutions": 44
},
"strictProductionTypeScriptFiles": 284
}
],
"limitations": [
"npm1.0.0 lacks all declared runtime files and is not a runnable fixture.",
"Controlled DOM/window tests are not native Document PiP or device acceptance.",
"Pending-window, delayed callback and rollback concerns remain source-observed for task02 reproduction."
],
"parentCommit": "224572032a418a82e9fdfb931f2b8cbba4295c27",
"archiveScope": {
"publishedVersions": [
"1.1.0",
"1.0.2",
"1.0.1",
"1.0.0"
],
"members": 21,
"workspaceFiles": 7,
"runnableVersions": [
"1.1.0",
"1.0.2",
"1.0.1"
],
"missingRuntime": "1.0.0",
"supportedCoreRange": "not inferred from Git associations"
},
"inputs": [
{
"file": "refactor/baselines/dpip-release.json",
"sha256LF": "afcf54f22fb3f57186e19bdf384a130c6388e972164774ee56eeca23fc814c23"
},
{
"file": "refactor/scripts/dpip-contract.mjs",
"sha256LF": "7801c893e8c4c8f158d484a4bafd4db88a12ca6f7ec219453e2ba176a186710f"
},
{
"file": "refactor/scripts/dpip-contract.test.mjs",
"sha256LF": "b5c46dc9f918635e8b6001bb660edc31759e084ff4f419e2328341d77463aede"
},
{
"file": "test/helpers/dpip.js",
"sha256LF": "727a0a2ab9d6552198d16779739dbabed2d86691f8e6695c5bde0ed2d27b8016"
},
{
"file": "refactor/contract-policy.json",
"sha256LF": "a7654b53b8436d70d1c697f2fc70e65221bd83a5ec51bbff822958d8b1a4df53"
},
{
"file": "refactor/scripts/contracts.test.mjs",
"sha256LF": "e52835b7f59a71108f62e786a787a67748da4cbe682b08860cd8773f3255aa80"
}
],
"logs": [
{
"file": "refactor/.cache/dpip01-missing-entry-observation.log",
"sha256": "ec76d068fc579ffbdd03913db632553ca1fc4c0bab408444107aad830e6f1420"
},
{
"file": "refactor/.cache/dpip01-capture-final.log",
"sha256": "670debdc562d8f2e32cf9a316afef92ed2b5fd5c76a967bedcd2eb4359d701da"
},
{
"file": "refactor/.cache/dpip01-targeted.log",
"sha256": "60e3ddd5ef0457a9e3278a883ce62ca8a0efb214b895088b2373f0f47ad65f83"
},
{
"file": "refactor/.cache/dpip01-lint-final.log",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"file": "refactor/.cache/dpip01-ci.log",
"sha256": "e9a75c3d72ccce0f180e88f88394e6ab8df86a350353a13575f27d0677fb539d"
}
]
}
+53
View File
@@ -0,0 +1,53 @@
# Document PiP 发布契约
来源:dpip-release.json固定实际npm1.0.0、1.0.1、1.0.2、1.1.0四个归档,共21个文件。
SHA512 integrity、归档SHA256、每个成员哈希、manifest入口、发布时点均可重跑核验。
冻结当前Git的src/index.js、style.less、声明、manifest、README、.npmignore和demo
共7个输入;未来迁移不改写这些历史哈希。
**1.0.0只有README、package.json和声明,缺少main/module/legacy指定的三个文件。**
归档没有运行时代码,不能用同版本Git源码冒充已发布实现。验证器固定缺失清单,
现有打包检查必须拒绝此归档。行为矩阵只执行实际1.0.1/1.0.2/1.1.0与冻结工作区;
1.0.0仅作分发缺陷和类型对照。全局契约索引中的发布点不代表每类行为均可运行。
## 正常公开行为
- 工厂运行时options可省略;默认width480、height270、fallbackToVideoPiP=true,
placeholder为Playing in Document Picture-in-Picture。工厂调用时浅拷贝一次,
之后修改调用者对象不影响结果;显式width:undefined会覆盖480默认值。
- 注册同步返回name/isSupported/isActive/open/close/toggle。状态为enumerable只读
getter;isSupported在注册时检测window.documentPictureInPicture.requestWindow,
之后新增能力不会改变此快照;isActive反映是否保存窗口引用。
- open与close实际返回Promise<void>,toggle返回undefined并内部发起open/close。
不支持且fallback=true时设置art.pip=true,输出warning;不支持且fallback=false
会进入open的错误提示路径,而非假装已经打开文档窗口。
- 始终添加document-pip右侧控件,index40、pip图标、PIP Mode提示,点击调用toggle。
document-pip事件的true/false分别切换Exit PIP Mode/PIP Mode提示。
- 正常open请求窗口尺寸,在原位置添加placeholder,将同一个$player通过adoptNode
移入新document。复制全局document里的link/style及相关属性,补viewport和基础样式。
绑定窗口resize/pagehide/unload,添加class,重绑核心全局事件,发document-pip=true,
await sleep(100)后发resize。正常close先去窗口监听,再恢复原位置、关闭窗口、移除
class、重绑事件、发false,await sleep(100)后发resize。普通关闭保留控件。
- 包加载时注入固定ID样式,loading文档等待DOMContentLoaded,否则立即插入。
这些均是受控DOM和异步边界的契约,不能当作真实窗口/用户激活/原生视频PiP验收。
## 声明与导出差异
四版声明一致:options必填、各字段可选,open/close/toggle均写void,状态字段写成
可赋值boolean。运行时省略options、异步open/close和只读getter已由测试确认。
04需要保留已有合法消费者,明确异步能力与历史void/Parameters提取的兼容方案;
不能因为Ads曾获批推导修正就自动改变本包返回类型。
1.0.1/1.0.2的CommonJS是namespace.default,1.1.0是可调用工厂;三份可运行归档
都有独立mjs默认导出和浏览器全局artplayerPluginDocumentPip。04/06须兼容两代访问,
而非用1.0.0缺失runtime作导出成功证据。
registry gitHead关联核心依次为5.3.0、5.3.0、5.3.0-beta.3、5.3.1。这里只冻结
对应Git manifest,不代表相同版本npm核心实现相同,更不声明连续兼容范围。
## 后续实现约束
源码观察到pending requestWindow未单独跟踪、open/close后的sleep没有取消、错误
只写notice而缺少回滚、销毁仅调用close、全局document与实际ownerDocument可能不同。
这些疑点登记为source-observed,由02复现后再03修复;正常流程16项通过不等于
生命周期问题已解决。真实窗口、原生视频/Canvas/Mediabunny、焦点键盘和恢复留05。
+268
View File
@@ -0,0 +1,268 @@
{
"schemaVersion": 1,
"task": "PKG-DPIP-01",
"capturedAt": "2026-09-12T05:31:41.167Z",
"sourceCommit": "224572032a418a82e9fdfb931f2b8cbba4295c27",
"registryObservation": {
"versions": [
"1.0.0",
"1.0.1",
"1.0.2",
"1.1.0"
],
"latest": "1.1.0",
"workspaceVersion": "1.1.0"
},
"release": {
"name": "artplayer-plugin-document-pip",
"version": "1.1.0",
"metadataUrl": "https://registry.npmjs.org/artplayer-plugin-document-pip/1.1.0",
"tarball": "https://registry.npmjs.org/artplayer-plugin-document-pip/-/artplayer-plugin-document-pip-1.1.0.tgz",
"integrity": "sha512-+HCrlO+bQwBrig1bI/IIxgGvbcG7i+aNHAnR5vLqB+RdyIY+FKCHyEe0o9yZREnbYOe0XJVqjv2buEVrouzdoQ==",
"sha256": "b864befea9aff84b3352782a9670ebe72ff073606fec7cdc31d31e92a5ad6d8a",
"archiveBytes": 4575,
"publishedAt": "2026-03-12T14:20:57.572Z",
"registryGitHead": "daf133b22630b4a0eecfa3336bbddab0e9119d96",
"files": {
"package/README.md": "e66acb1026ced7b058327814a8b7d31433c029c292991cdba747302c6b663d10",
"package/dist/artplayer-plugin-document-pip.js": "261d4ae84579c569ade1b1e7e91d51e3bd00c6efbea8c51a48b8283e0f4f3496",
"package/dist/artplayer-plugin-document-pip.legacy.js": "8e36b658196dece391add21c249b735f3abfe4082fc968d3dbbbb1ae58a77b31",
"package/dist/artplayer-plugin-document-pip.mjs": "22b432b5fc958f6f838b83fdfcc7e5ab7144137111b1f8cf081eb2e21afd8382",
"package/package.json": "cd0c0c17fde404f93fc6bd64f6317d29ce54908e15b956c465124dd9fe2c77f6",
"package/types/artplayer-plugin-document-pip.d.ts": "e5bf38dd4829a075bd6d1a2e356a9ee56434b65f622fb623ac57e9fe46151077"
},
"manifest": {
"name": "artplayer-plugin-document-pip",
"version": "1.1.0",
"description": "Document PIP plugin for ArtPlayer",
"author": "Harvey Zhao <laozhaochaguan@gmail.com>",
"license": "MIT",
"homepage": "https://artplayer.org",
"repository": {
"type": "git",
"url": "git+https://github.com/zhw2590582/ArtPlayer.git"
},
"bugs": {
"url": "https://github.com/zhw2590582/ArtPlayer/issues"
},
"keywords": [
"html5",
"video",
"player"
],
"exports": {
".": {
"types": "./types/artplayer-plugin-document-pip.d.ts",
"import": "./dist/artplayer-plugin-document-pip.mjs",
"require": "./dist/artplayer-plugin-document-pip.js"
},
"./legacy": {
"types": "./types/artplayer-plugin-document-pip.d.ts",
"import": "./dist/artplayer-plugin-document-pip.legacy.js",
"require": "./dist/artplayer-plugin-document-pip.legacy.js"
}
},
"main": "./dist/artplayer-plugin-document-pip.js",
"module": "./dist/artplayer-plugin-document-pip.mjs",
"types": "./types/artplayer-plugin-document-pip.d.ts",
"legacy": "./dist/artplayer-plugin-document-pip.legacy.js",
"browserslist": "last 1 Chrome version"
},
"missingEntrypoints": {},
"historicalCore": {
"version": "5.3.1",
"commit": "daf133b22630b4a0eecfa3336bbddab0e9119d96",
"file": "packages/artplayer/package.json",
"sha256LF": "862f3697876fe915dd0ada178da766ce823aae7563ed30b3e5b11b811202929c",
"scope": "Git association only, not actual npm compatibility verification"
}
},
"previous": [
{
"name": "artplayer-plugin-document-pip",
"version": "1.0.2",
"metadataUrl": "https://registry.npmjs.org/artplayer-plugin-document-pip/1.0.2",
"tarball": "https://registry.npmjs.org/artplayer-plugin-document-pip/-/artplayer-plugin-document-pip-1.0.2.tgz",
"integrity": "sha512-/vUpB3GsvOabRoBAZWkXXk6QZ3Ja2XbNZr3i933HSKhzpUc6zfvh3VajTkCb3CfDz37/pjR3cPbKBWnWwx+8pA==",
"sha256": "0657a1b2e3e82ccfd29dea824baca7f93748d0107942d4befd360be7bf4efd68",
"archiveBytes": 9233,
"publishedAt": "2025-09-06T05:18:19.436Z",
"registryGitHead": "fd9aeddbedffe9fd00f827a271672bc2510fb503",
"files": {
"package/README.md": "6802bbd78f851115f27cd856d8604c4ab898b788568e1a3eae62d12c7acb5e07",
"package/dist/artplayer-plugin-document-pip.js": "514c047594dbb887b68f3d6aa841af4105a537c804cbb4eb11ecbeda692280f8",
"package/dist/artplayer-plugin-document-pip.legacy.js": "07cff703943c34832fdd1b828a72fabd2093b45cd5bc37e4c9de16d1dbe4e6d3",
"package/dist/artplayer-plugin-document-pip.mjs": "21571df888278f21d46f28355bdf2f70c531b5fa8286eb45366a34de18266f08",
"package/package.json": "5c93563a3d0b6b1fdd8f0b89eca83bb2685d6748397fc4a5fd20403aa743201f",
"package/types/artplayer-plugin-document-pip.d.ts": "e5bf38dd4829a075bd6d1a2e356a9ee56434b65f622fb623ac57e9fe46151077"
},
"manifest": {
"name": "artplayer-plugin-document-pip",
"version": "1.0.2",
"description": "Document PIP plugin for ArtPlayer",
"author": "Harvey Zack <laozhaochaguan@gmail.com>",
"license": "MIT",
"homepage": "https://artplayer.org",
"repository": {
"type": "git",
"url": "git+https://github.com/zhw2590582/ArtPlayer.git"
},
"bugs": {
"url": "https://github.com/zhw2590582/ArtPlayer/issues"
},
"keywords": [
"html5",
"video",
"player"
],
"exports": {
".": {
"import": "./dist/artplayer-plugin-document-pip.mjs",
"require": "./dist/artplayer-plugin-document-pip.js",
"types": "./types/artplayer-plugin-document-pip.d.ts"
}
},
"main": "./dist/artplayer-plugin-document-pip.js",
"module": "./dist/artplayer-plugin-document-pip.mjs",
"types": "./types/artplayer-plugin-document-pip.d.ts",
"legacy": "./dist/artplayer-plugin-document-pip.legacy.js",
"browserslist": "last 1 Chrome version"
},
"missingEntrypoints": {},
"historicalCore": {
"version": "5.3.0-beta.3",
"commit": "fd9aeddbedffe9fd00f827a271672bc2510fb503",
"file": "packages/artplayer/package.json",
"sha256LF": "fbadd47595d282efdfddfb3fe0b8470c2fe12319a7737a6abd77fd7155ba4f7a",
"scope": "Git association only, not actual npm compatibility verification"
}
},
{
"name": "artplayer-plugin-document-pip",
"version": "1.0.1",
"metadataUrl": "https://registry.npmjs.org/artplayer-plugin-document-pip/1.0.1",
"tarball": "https://registry.npmjs.org/artplayer-plugin-document-pip/-/artplayer-plugin-document-pip-1.0.1.tgz",
"integrity": "sha512-u/lCjgeanxZcMpcFZMojUF9KppzP+f1ALUt2u2MCa73CXhmb0hn/vI99hR7qALck6XamfSpDbjDw6i0p6HrScA==",
"sha256": "dcf611aa5c4247858cb61e197f073db719a4806dc97da2d927394169d428316f",
"archiveBytes": 9233,
"publishedAt": "2025-09-03T10:31:57.113Z",
"registryGitHead": "9bfd535e57ddd489da3b7875f965fee81abbac51",
"files": {
"package/README.md": "6802bbd78f851115f27cd856d8604c4ab898b788568e1a3eae62d12c7acb5e07",
"package/dist/artplayer-plugin-document-pip.js": "d3878387d6110f7080dcf0f253b4c99391e7213c17c4b224c00b856e9a82a9ee",
"package/dist/artplayer-plugin-document-pip.legacy.js": "134112d64aa571d40c65dd89b218409c62d7c87713b6cb2885cac281b55f1028",
"package/dist/artplayer-plugin-document-pip.mjs": "8731b8ba47d65427e2804549a2912577bc9a7ad666880c9ff4fe71d13b1ccc1f",
"package/package.json": "30167428c3e2058f48de0a5209ae9dba9ce30556a2d78e7bdf4e8d1b0c104004",
"package/types/artplayer-plugin-document-pip.d.ts": "e5bf38dd4829a075bd6d1a2e356a9ee56434b65f622fb623ac57e9fe46151077"
},
"manifest": {
"name": "artplayer-plugin-document-pip",
"version": "1.0.1",
"description": "Document PIP plugin for ArtPlayer",
"author": "Harvey Zack <laozhaochaguan@gmail.com>",
"license": "MIT",
"homepage": "https://artplayer.org",
"repository": {
"type": "git",
"url": "git+https://github.com/zhw2590582/ArtPlayer.git"
},
"bugs": {
"url": "https://github.com/zhw2590582/ArtPlayer/issues"
},
"keywords": [
"html5",
"video",
"player"
],
"exports": {
".": {
"import": "./dist/artplayer-plugin-document-pip.mjs",
"require": "./dist/artplayer-plugin-document-pip.js"
}
},
"main": "./dist/artplayer-plugin-document-pip.js",
"module": "./dist/artplayer-plugin-document-pip.mjs",
"types": "./types/artplayer-plugin-document-pip.d.ts",
"legacy": "./dist/artplayer-plugin-document-pip.legacy.js",
"browserslist": "last 1 Chrome version"
},
"missingEntrypoints": {},
"historicalCore": {
"version": "5.3.0",
"commit": "9bfd535e57ddd489da3b7875f965fee81abbac51",
"file": "packages/artplayer/package.json",
"sha256LF": "9f8756b84dcf3f5edf811e835859b13e5c64e75c154348d31178de43183954d9",
"scope": "Git association only, not actual npm compatibility verification"
}
},
{
"name": "artplayer-plugin-document-pip",
"version": "1.0.0",
"metadataUrl": "https://registry.npmjs.org/artplayer-plugin-document-pip/1.0.0",
"tarball": "https://registry.npmjs.org/artplayer-plugin-document-pip/-/artplayer-plugin-document-pip-1.0.0.tgz",
"integrity": "sha512-mm1OYSE7M9brzODk/VdGfk7LjfPD5FKY7iUXESsQYMsQ5T4vr1VaacprnWRk5G75E0ON4RNRNjAIwGvJ1qETDg==",
"sha256": "3b0164391171c817ab511f740205732e65db0e8f1d65d63f0d24d8eef4251573",
"archiveBytes": 818,
"publishedAt": "2025-09-03T10:28:27.976Z",
"registryGitHead": "9bfd535e57ddd489da3b7875f965fee81abbac51",
"files": {
"package/README.md": "6802bbd78f851115f27cd856d8604c4ab898b788568e1a3eae62d12c7acb5e07",
"package/package.json": "259a13eee4128cac7eeb2586b237c01a098151f5411700be96b3bc603703acbd",
"package/types/artplayer-plugin-document-pip.d.ts": "e5bf38dd4829a075bd6d1a2e356a9ee56434b65f622fb623ac57e9fe46151077"
},
"manifest": {
"name": "artplayer-plugin-document-pip",
"version": "1.0.0",
"description": "Document PIP plugin for ArtPlayer",
"author": "Harvey Zack <laozhaochaguan@gmail.com>",
"license": "MIT",
"homepage": "https://artplayer.org",
"repository": {
"type": "git",
"url": "git+https://github.com/zhw2590582/ArtPlayer.git"
},
"bugs": {
"url": "https://github.com/zhw2590582/ArtPlayer/issues"
},
"keywords": [
"html5",
"video",
"player"
],
"exports": {
".": {
"import": "./dist/artplayer-plugin-document-pip.mjs",
"require": "./dist/artplayer-plugin-document-pip.js"
}
},
"main": "./dist/artplayer-plugin-document-pip.js",
"module": "./dist/artplayer-plugin-document-pip.mjs",
"types": "./types/artplayer-plugin-document-pip.d.ts",
"legacy": "./dist/artplayer-plugin-document-pip.legacy.js",
"browserslist": "last 1 Chrome version"
},
"missingEntrypoints": {
"main": "./dist/artplayer-plugin-document-pip.js",
"module": "./dist/artplayer-plugin-document-pip.mjs",
"legacy": "./dist/artplayer-plugin-document-pip.legacy.js"
},
"historicalCore": {
"version": "5.3.0",
"commit": "9bfd535e57ddd489da3b7875f965fee81abbac51",
"file": "packages/artplayer/package.json",
"sha256LF": "9f8756b84dcf3f5edf811e835859b13e5c64e75c154348d31178de43183954d9",
"scope": "Git association only, not actual npm compatibility verification"
}
}
],
"source": {
"packages/artplayer-plugin-document-pip/src/index.js": "655818d30d82e43443e9a7ea185f91fc951eb72ad11edaaed0264182e62f32ba",
"packages/artplayer-plugin-document-pip/src/style.less": "a75ae94a569c8fd6ce925dcc7ab6b22cfa39a4d81decb30cc447dd7108a84a22",
"packages/artplayer-plugin-document-pip/types/artplayer-plugin-document-pip.d.ts": "e5bf38dd4829a075bd6d1a2e356a9ee56434b65f622fb623ac57e9fe46151077",
"packages/artplayer-plugin-document-pip/package.json": "cd0c0c17fde404f93fc6bd64f6317d29ce54908e15b956c465124dd9fe2c77f6",
"packages/artplayer-plugin-document-pip/README.md": "e66acb1026ced7b058327814a8b7d31433c029c292991cdba747302c6b663d10",
"packages/artplayer-plugin-document-pip/.npmignore": "46063058e98be55dba5cf5f33d379e73eca048f4126e7af75f8011bab7f09145",
"docs/assets/example/document.pip.js": "2600948ff0128e2e77fe08fbefa9be96543d8fcd81421534dfbfe9cb84e91fde"
},
"limitation": "Git core association is not a verified npm support range; native window/device, race and installed consumers remain later tasks."
}