mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-16 09:36:16 -08:00
refactor(core): CORE-01 migrate utility contracts to TypeScript
This commit is contained in:
1 parent
e005e5f249
commit
d3c695024a
33 files changed
+1269
-305
No files matched your search
@@ -0,0 +1,520 @@
|
||||
{
|
||||
"task": "CORE-01",
|
||||
"capturedAt": "2026-09-10T15:48:53.420Z",
|
||||
"source": {
|
||||
"error.ts": "ba303c7d4e4228919088f9d608fa364596f5853ee646eda2008deee354866f38",
|
||||
"file.ts": "ea71d7fc0e818d473bf5a596211ba9d571e4febdf1878014eadefa8d0a98d4cc",
|
||||
"format.ts": "891df5b7542b713aef46bf2b93924f42e68eee574afd802db3e6c62ff2655ede",
|
||||
"index.ts": "5211af833dddb2937d25dcc772740d62f9d5c5039ce5505bffff0796d4afd756",
|
||||
"property.ts": "c737d4582a4382f4038d12dafdf8b43418e508c9b8b859b2f0cc17c20f370343",
|
||||
"subtitle.ts": "f058851d11a418e321a8a498472b67fa535fec2c7b5d3df739b6b4f263d00337",
|
||||
"time.ts": "b8ce3d50865f6c343e8e3ce9f5c87de565a87b4e9fbcbccbe7030e30e80b93fe"
|
||||
},
|
||||
"packages": [
|
||||
{
|
||||
"name": "artplayer",
|
||||
"version": "5.4.1",
|
||||
"archive": "artplayer.tgz",
|
||||
"sha256": "8b60d4191be520a888c38ec230b7cfb75cc9ccac5bce8a7588a80c201322db2c",
|
||||
"files": {
|
||||
"package/ARCHITECTURE.md": "0e406879bf36f0187bf1613ff5022b59ba48b5df7688304c7b7c8bc56332ca85",
|
||||
"package/README.md": "1e185e65f67fc2081b4182bbc6c4558ea05b6e3fa3acc5dd0c3ac7df1d542b09",
|
||||
"package/dist/artplayer.js": "42acc1efc93d9924acabf4a70982818b3d6d9c5030651cc87071945f14f78f5f",
|
||||
"package/dist/artplayer.legacy.js": "557055987edea9eb24608f54b1ba233306d8d18b9b3f99f15032906d7d38df04",
|
||||
"package/dist/artplayer.mjs": "25124538859c15713b20ae93e6b1a1ac11ca6effc367f34dbe90e6756ab98ef2",
|
||||
"package/dist/i18n/ar.js": "61c43469ee95a00dc624583f418653e3dcbf48b24ae6a4c203ad986234852365",
|
||||
"package/dist/i18n/ar.mjs": "68922fdc9f80d3321ea0654c8ff8f5875b6715103d2b14ffcf17f93738b39cf9",
|
||||
"package/dist/i18n/cs.js": "ad7bbf8853204a6955ef84bfbd932cab3f141a7e73a8145f28ba7a5b2b83b7c0",
|
||||
"package/dist/i18n/cs.mjs": "29a489be767fda9d46b59c9adbaad323f17a5e67daf7f7aa78b7ce8fb5b4d63c",
|
||||
"package/dist/i18n/es.js": "aaa95cc9645b734c58fba06fdbcdda962c4cb3a0e7eb6206f06d6168208cd86b",
|
||||
"package/dist/i18n/es.mjs": "331d2ef74da2eec8f3304fec0b5340c795d9c1eec24e08167c9a7b66bf30973b",
|
||||
"package/dist/i18n/fa.js": "c998467261cbdfd2c3fb16c0ae4b2c48c409f42f41aea35ed94766f1e12819d5",
|
||||
"package/dist/i18n/fa.mjs": "b4c98894b46975cebf5ea9088bcf0b5bdfd408bc3c82f4e2e9128133c7de2d4d",
|
||||
"package/dist/i18n/fr.js": "6b06e16b1fb01c8695fb5c10b32a00421399180de5dc5d845ce17010f2fd3e66",
|
||||
"package/dist/i18n/fr.mjs": "abe8e3548fa7304f302e2c74818a6176edee8c3b65e33cb6f62e96d130749ee5",
|
||||
"package/dist/i18n/id.js": "a5832c4bfc03c7f16418bf4b324d9773895541dc823ece9114741794737aad74",
|
||||
"package/dist/i18n/id.mjs": "a40a433be6ca1ac1ee1810fe805ee60784d349e59b9ad82ea80201d660db4e68",
|
||||
"package/dist/i18n/pl.js": "2491487062bdfc91d60f17c6e9a83ee196c991216d15f525fe3536b98873da2c",
|
||||
"package/dist/i18n/pl.mjs": "ad8ea2c03785edbfe1f35761bec21b8a04213f9fa88a794d850bb3973564930f",
|
||||
"package/dist/i18n/ru.js": "2d3a9ee6533cb6fa961f0a24a25ce63cc76992fca17e1769b6fa75104f8a1529",
|
||||
"package/dist/i18n/ru.mjs": "a89b8c36cfd7c181c2b31aa823deda3d7c37b56b2b81746338c52ea1c1d93352",
|
||||
"package/dist/i18n/tr.js": "438b06a4c3f479a2901b0085eaa7bdba8eaef87bdb07ff3faa559c85403fe433",
|
||||
"package/dist/i18n/tr.mjs": "cc96f9cbb9c1587d5cd8f25b0b9800678ad76e93de089ae42c38dee16e6fe8fa",
|
||||
"package/dist/i18n/vi.js": "1ffbd62843a902ea2967eab46432d3fc548f5633e53eed104314b523cacc46a8",
|
||||
"package/dist/i18n/vi.mjs": "7872ded84622bcda20e8c1d70c597c2ba071b50701900efa47cc4683ee17f1a2",
|
||||
"package/dist/i18n/zh-tw.js": "2d43577f98456488196921e1ec721695a95e1b8c827077286b02ce3fb987e8ff",
|
||||
"package/dist/i18n/zh-tw.mjs": "7ec638b4babe59d3ab1d3e64abdd74a96fefb260a50e2cd7240f8d50a1340925",
|
||||
"package/package.json": "b343df9955df9ac0ea71ea775bd0743c6b26c06d3bb7699128f7eac484fa769f",
|
||||
"package/types/README.md": "d38bb63f9e96f995273f9da6833a8b936a74718ef7b710dbd316530d41ccae07",
|
||||
"package/types/artplayer.d.cts": "be67cbb6c352944741bca88f969ad1bafa9898049595930e2dc6693d5e7262f5",
|
||||
"package/types/artplayer.d.mts": "87d1f0e2a7bf7b7bdf700875cb2c77dea8be34ba3ac943e5fd35e8daa99bf241",
|
||||
"package/types/artplayer.d.ts": "98d3e7b65f9f81fba155da08fd47e4fb25f4c69279e3afd993c4a55070f8a850",
|
||||
"package/types/component.d.ts": "facfa29d9092fe2c63a7d8357ce7d0faa5e32811d2fedeef6dc8b28ad5d04891",
|
||||
"package/types/config.d.ts": "c4fd8681bf32b10c743e3e561c532520c8f32e43fd765524850b15e55cb91c72",
|
||||
"package/types/cssVar.d.ts": "e027d82fb4f01c9ce7559cf679b2d5ee1962d3f7e5b4dd64ca21f472b933efb6",
|
||||
"package/types/events.d.ts": "98c74aebb82455accc0b3523af5a1145bc9119da58c884200adc36e70a164b02",
|
||||
"package/types/i18n.d.ts": "3e14759caf71f97f01650839248c8737c42d2c2979dabc43ad92b724da648708",
|
||||
"package/types/icons.d.ts": "0d8e8e52e52130dd4a29bab551dd7a2a954797e42e92a6e068c85d583e23e6a4",
|
||||
"package/types/language.d.cts": "1c9e0c47fae3c2d68c3e144d95a55071318a03bb31554dd049109efd3d0f95a4",
|
||||
"package/types/language.d.mts": "c391e863012c77769e661afbf8fa949e9373aa88d17f58cbba7f5696edb8077f",
|
||||
"package/types/legacy/language.d.ts": "c452ffd764ff9b29b819b3475c42395d2ea7a33560d8c186ef5df3844b9524c3",
|
||||
"package/types/option.d.ts": "d4de53930c2fa9d59c77c4324d63f24b057bce6c4d0273c34a0ab06094dcea2c",
|
||||
"package/types/player.d.ts": "986382bb6b4e82746fd2405092e69d0ef413988887a557a0fd4db85d64b78d54",
|
||||
"package/types/quality.d.ts": "7ed6ed78cea52991b2f6ddd2bd3b7bd8c5146fdfff7486fe8b814c3e632f1567",
|
||||
"package/types/setting.d.ts": "d12a75b656fff70cbb30be4bffec46d9c4273636e8722bce971a4d2b188712a1",
|
||||
"package/types/subtitle.d.ts": "d25b470e47d6a9bd696d9c1ad8adb58e56a208f05695186d513bc8c43c2e8acf",
|
||||
"package/types/template.d.ts": "68aed9e97d006d6be4fabb8504ca84dafab770b0925f4d6e7319e67c82f21b0d",
|
||||
"package/types/utils.d.ts": "d3fb67b9187e1c81c6b3850694cf2627e927225ace160ae58c11631e9f673a98"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "artplayer-plugin-chapter",
|
||||
"version": "1.1.0",
|
||||
"archive": "artplayer-plugin-chapter.tgz",
|
||||
"sha256": "b22c6f3a40aecf5f41fc1a88ddbd5ecb782f058e3d3f63fbfb18de828afff2e8",
|
||||
"files": {
|
||||
"package/ARCHITECTURE.md": "20743bad87a174b0450e0d876b6aa6b2a9f47df296d479511ce7cc9298fdb57c",
|
||||
"package/README.md": "b95400ff3d525621a15268bb56a2d353aacaaadefde7e735d7abd91a34edd96f",
|
||||
"package/dist/artplayer-plugin-chapter.js": "6ac3dfe28f46084ac7caedd571b1a97dcee3cf9d708112f1b8bbd6566e1dc5c5",
|
||||
"package/dist/artplayer-plugin-chapter.legacy.js": "6d9bff885412169e701670961aa00c2e46c4b42c9b9647ff4e6d198777d2a359",
|
||||
"package/dist/artplayer-plugin-chapter.mjs": "26415cecab2c0198c566cef0232e20123413782d5bad7534a32939b3298617af",
|
||||
"package/package.json": "24eec6907b3218439189adab6af3f932c1497c47c2d41209311c01042b07fd4f",
|
||||
"package/types/artplayer-plugin-chapter.d.cts": "4f07514b37453cd6cea8e5aa28fa018ff31738e0d423c11a3b5eccd50ed30bcc",
|
||||
"package/types/artplayer-plugin-chapter.d.mts": "610179754db36276e161a07bccf4eaba8b4480f053e716a2bcc5a1574871a171",
|
||||
"package/types/artplayer-plugin-chapter.d.ts": "581aa2862e709601c87a23585f54a969ebd350be56a7469a31ff53f1311b578d"
|
||||
}
|
||||
}
|
||||
],
|
||||
"runtimeChecks": 23,
|
||||
"knownTypeBlockers": 0,
|
||||
"ciChecks": 75,
|
||||
"artifactUtilityChecks": {
|
||||
"umd": 18,
|
||||
"legacy": 18,
|
||||
"esm": 18
|
||||
},
|
||||
"browser": {
|
||||
"startTime": "2026-09-10T15:44:26.623Z",
|
||||
"duration": 30148.234,
|
||||
"expected": 69,
|
||||
"skipped": 0,
|
||||
"unexpected": 0,
|
||||
"flaky": 0
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"title": "published-only observations: blank title, NaN and once-only metadata are historical defects",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "candidate clears titles on blank chapters, zero hover and replacement",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "candidate rejects NaN and can recover after an invalid update",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "candidate releases only its listeners and DOM across multiple instances and early destruction",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "candidate ignores pending metadata initialization after immediate destroy",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "candidate deduplicates stylesheet injection while the document is loading",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "published-only observations: blank title, NaN and once-only metadata are historical defects",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "candidate clears titles on blank chapters, zero hover and replacement",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "candidate rejects NaN and can recover after an invalid update",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "candidate releases only its listeners and DOM across multiple instances and early destruction",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "candidate ignores pending metadata initialization after immediate destroy",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "candidate deduplicates stylesheet injection while the document is loading",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "published-only observations: blank title, NaN and once-only metadata are historical defects",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "candidate clears titles on blank chapters, zero hover and replacement",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "candidate rejects NaN and can recover after an invalid update",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "candidate releases only its listeners and DOM across multiple instances and early destruction",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "candidate ignores pending metadata initialization after immediate destroy",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "candidate deduplicates stylesheet injection while the document is loading",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "factory, registration, input normalization and safe title text",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "progress bars, real hover, title edges and boundary seek",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "sync update, Infinity, object identity, empty lists and invalid data",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "explicit source update and core-owned destruction",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "factory, registration, input normalization and safe title text",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "progress bars, real hover, title edges and boundary seek",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "sync update, Infinity, object identity, empty lists and invalid data",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "explicit source update and core-owned destruction",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "factory, registration, input normalization and safe title text",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "progress bars, real hover, title edges and boundary seek",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "sync update, Infinity, object identity, empty lists and invalid data",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "explicit source update and core-owned destruction",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "factory, registration, input normalization and safe title text",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "progress bars, real hover, title edges and boundary seek",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "sync update, Infinity, object identity, empty lists and invalid data",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "explicit source update and core-owned destruction",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "factory, registration, input normalization and safe title text",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "progress bars, real hover, title edges and boundary seek",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "sync update, Infinity, object identity, empty lists and invalid data",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "explicit source update and core-owned destruction",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "factory, registration, input normalization and safe title text",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "progress bars, real hover, title edges and boundary seek",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "sync update, Infinity, object identity, empty lists and invalid data",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "explicit source update and core-owned destruction",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "published: real playback, pause, seek, switch and destroy",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "candidate: real playback, pause, seek, switch and destroy",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "controlled HTTP media failure emits a real video error",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "Range, media identity and docs candidate routes",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "published: real playback, pause, seek, switch and destroy",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "candidate: real playback, pause, seek, switch and destroy",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "controlled HTTP media failure emits a real video error",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "Range, media identity and docs candidate routes",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "published: real playback, pause, seek, switch and destroy",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "candidate: real playback, pause, seek, switch and destroy",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "controlled HTTP media failure emits a real video error",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "Range, media identity and docs candidate routes",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "published: subtitle object URL contains real VTT data",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "published: download starts and removes its temporary anchor",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "candidate: subtitle object URL contains real VTT data",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "candidate: download starts and removes its temporary anchor",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "candidate download releases the anchor even when click fails",
|
||||
"project": "chromium",
|
||||
"status": "passed",
|
||||
"browser": "153.0.8010.12"
|
||||
},
|
||||
{
|
||||
"title": "published: subtitle object URL contains real VTT data",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "published: download starts and removes its temporary anchor",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "candidate: subtitle object URL contains real VTT data",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "candidate: download starts and removes its temporary anchor",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "candidate download releases the anchor even when click fails",
|
||||
"project": "firefox",
|
||||
"status": "passed",
|
||||
"browser": "155.0"
|
||||
},
|
||||
{
|
||||
"title": "published: subtitle object URL contains real VTT data",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "published: download starts and removes its temporary anchor",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "candidate: subtitle object URL contains real VTT data",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "candidate: download starts and removes its temporary anchor",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
},
|
||||
{
|
||||
"title": "candidate download releases the anchor even when click fails",
|
||||
"project": "webkit",
|
||||
"status": "passed",
|
||||
"browser": "26.6"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
# CORE-01:核心工具模块 TypeScript 迁移
|
||||
|
||||
## 实际源码与边界
|
||||
|
||||
time/property/format/file/error/subtitle 与导出 barrel 共七个生产文件迁移到严格 TS。
|
||||
沿用现有合理职责划分,无机械增加空转发文件。纯计算不接收播放器实例;DOM 下载和 Blob URL
|
||||
创建的资源责任有明确说明,见 [核心架构](../../packages/artplayer/ARCHITECTURE.md)。
|
||||
|
||||
核心入口及 DOM/capability/Emitter/Component 仍为 JS,由后续任务迁移。没有宣称核心整体完成。
|
||||
Artplayer.utils 的运行时导出与之前工作区完全一致;对发布基线的两个已有扩展
|
||||
silencePromise/getSafeAreaInsets 也保留。函数参数个数、native def、属性描述符、调用方数组引用、
|
||||
合并时一层 concat 展开、字幕字符串、定时器 this/参数/前沿后沿/重入/抛错行为均有对照测试。
|
||||
|
||||
格式化的私有实体映射复用,getExt 改为一次截取 query/hash;保留原字符串结果和 ES2015 能力边界,
|
||||
没有据此宣称浏览器性能提升。ArtPlayerError 的栈捕获按实际引擎能力判断;内部 Promise 抑制
|
||||
保持与外部 play/toggle Promise 分离。
|
||||
|
||||
## 有意修复与类型债务
|
||||
|
||||
- UTIL-MERGE-01:Object.keys 遍历到 JSON `__proto__` 时,旧实现改变返回对象的原型。
|
||||
现在用 own data descriptor 写键,保留普通合并语义;嵌套情况、输入未变和原型未替换通过。
|
||||
这是结果对象原型的修正,不声称旧实现已被证明能修改全局 Object.prototype。
|
||||
- UTIL-DOWNLOAD-01:下载临时 anchor 在 click 抛错时也由 finally 删除;异常继续传播。
|
||||
三浏览器验证真实下载成功及受控失败清理,调用者提供的 URL 不被擅自 revoke。
|
||||
- BASE-TYPE-05:公开 Utils 声明原有缺项、定时器返回值/context、def/sleep 签名差异继续交给
|
||||
CORE-07。本任务内部类型已准确描述返回值/receiver,公开旧消费未静默收紧。该条保持 open。
|
||||
|
||||
动态 merge accumulator 和 catch 鸭子类型各有局部边界,未增加全文件忽略、运行依赖或泛化 any。
|
||||
|
||||
## 验证
|
||||
|
||||
- `yarn ci:check`:75 项 Node/基线测试通过,严格源类型/31 个消费场景通过。
|
||||
- 新增 13 项工具测试含发布/当前对照;实际 core UMD、legacy、ESM 各运行 18 项通过。
|
||||
- `yarn build artplayer` 和 `yarn build:i18n` 重新生成 core dist 与 docs/compiled。
|
||||
当前核心产物同时包含 ENG-06 已验证的 AMD 修正,之前 tracked dist 尚未重建;没有手改产物。
|
||||
- `yarn test:package:release` 实际安装后 23 项运行时、五组类型零诊断。
|
||||
- 安装候选 Chromium/Firefox/WebKit 总计 69 项通过,无重试/跳过;包括旧核心/新 chapter、
|
||||
新核心/旧 chapter(工具页面加载)、播放/seek/切源/销毁、真实下载和 VTT Blob 数据。
|
||||
新核心与旧 chapter 的完整插件功能仍由后续组合任务覆盖,不把加载脚本当作完整集成。
|
||||
- [执行指纹](../baselines/core-utils-validation.json) 核对最终 runtime 文件与浏览器加载内容、
|
||||
仓库生成产物一致。包内文档增加后重跑打包,运行时 SHA 未变,无需重复播放同一字节。
|
||||
|
||||
更新测试入口和包内维护文档;新增风险进入统一台账。下一项按依赖迁移 Emitter 等核心模块。
|
||||
没有升级包版本、推送或发布。回退本任务独立提交会同时恢复源码、测试、记录和生成产物。
|
||||
+4
-3
@@ -4,7 +4,7 @@
|
||||
|
||||
基线:`40fcda6a37d0049d42e49c1e64e70d4fd9ba5f7f`。总任务 214 项,范围 22 个包及工作区/示例。
|
||||
|
||||
状态:todo 178 / doing 0 / blocked 0 / done 36 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
状态:todo 177 / doing 0 / blocked 0 / done 37 / deferred 0。风险 L/M/H 表示兼容风险,不表示工期。
|
||||
|
||||
前置依赖是启动条件;验收是完成条件。任务可以继续拆分,但不能复用或悄悄删除旧 ID。
|
||||
|
||||
@@ -104,13 +104,13 @@
|
||||
|
||||
| ID | 范围 / 步骤 | 前置依赖 | 交付物 | 验收条件 | 风险 | 状态 |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| CORE-01 | artplayer<br>迁移纯工具并冻结导出 | ENG-03, ENG-04, ENG-06, PILOT-01 | utils/time/property/format/file/error/subtitle 的分批 TS 迁移 | Artplayer.utils 导出/参数/绑定保持,纯逻辑与类型测试通过 | M | todo |
|
||||
| CORE-01 | artplayer<br>迁移纯工具并冻结导出 | ENG-03, ENG-04, ENG-06, PILOT-01 | utils/time/property/format/file/error/subtitle 的分批 TS 迁移 | Artplayer.utils 导出/参数/绑定保持,纯逻辑与类型测试通过 | M | done |
|
||||
| CORE-02 | artplayer<br>迁移内部 Emitter | CORE-01, BASE-03 | 带类型事件映射的原 Emitter 实现 | ctx、once/off、重入/异常和链式返回保持 | H | todo |
|
||||
| CORE-03 | artplayer<br>建立内部资源作用域 | CORE-02 | 监听/订阅/定时器/RAF/请求/URL 的资源登记 | 实例与操作作用域分离,单项清理失败不阻断其他资源 | H | todo |
|
||||
| CORE-04 | artplayer<br>修复初始化与销毁生命周期 | CORE-03, ENG-05, BASE-07 | 构造失败回收、重复/重入 destroy、instances 修复 | 事件顺序、removeHtml、多实例和销毁中异步有真实回归;处理 baselines/lifecycle-coverage.md 的 BASE-LIFE-04/05 并增加候选正向回归;协调 BASE-PERF-01 销毁后定时器与回调归属 | H | todo |
|
||||
| CORE-05 | artplayer<br>区分输入配置和内部配置 | CORE-01, ENG-04 | Option/ResolvedOption、默认值与校验整理 | 配置合并/错误时机不变,JS 输入仍运行时校验 | M | todo |
|
||||
| CORE-06 | artplayer<br>建立内部媒体与宿主类型 | CORE-05 | 原生 video、canvas shim、UI host 类型 | 不更改公开 art.video 用法,不以 HTMLVideoElement 断言掩盖 shim | M | todo |
|
||||
| CORE-07 | artplayer<br>逐项协调公开声明差异 | CORE-02, CORE-06, BASE-07 | plugins/toggle/cue/setting/static 的旧新类型对照 | 每项有兼容重载/扩展或待决结论,不能删除旧类型样例;处理 BASE-TYPE-01/04,分别保留旧合法声明消费并验证真实返回 | H | todo |
|
||||
| CORE-07 | artplayer<br>逐项协调公开声明差异 | CORE-02, CORE-06, BASE-07 | plugins/toggle/cue/setting/static 的旧新类型对照 | 每项有兼容重载/扩展或待决结论,不能删除旧类型样例;处理 BASE-TYPE-01/04,分别保留旧合法声明消费并验证真实返回;协调 BASE-TYPE-05 的 Utils 导出、descriptor 和 timer 旧声明差异 | H | todo |
|
||||
| CORE-08 | artplayer<br>整理插件管理器与扩展类型 | CORE-03, CORE-07 | 注册流程、同步/异步结果、插件/事件扩展接口 | 旧插件同步可见性、重名与命名、销毁中异步插件保持明确语义;处理 baselines/lifecycle-coverage.md 的 BASE-LIFE-03 并增加候选正向回归 | H | todo |
|
||||
| CORE-09 | artplayer<br>整理 URL 与切源操作 | CORE-04, CORE-06, CORE-08 | url/switch/customType 的操作身份及取消方案 | 并发切源、错误、同 URL、销毁和 Promise 结算有契约;处理 baselines/lifecycle-coverage.md 的 BASE-LIFE-01/02/06 并增加候选正向回归 | H | todo |
|
||||
| CORE-10 | artplayer<br>迁移播放与时间/状态属性 | CORE-09 | play/pause/toggle/seek/volume/rate/duration 等模块 | 旧返回值、拒绝、mutex、位置恢复、属性描述符与事件通过 | H | todo |
|
||||
@@ -435,6 +435,7 @@
|
||||
- ENG-07: [记录](changes/2026-09-10-ENG-07-package-consumers.md) [记录](baselines/package-validation.json)
|
||||
- ENG-10: [记录](changes/2026-09-10-ENG-10-test-reliability.md) [记录](test-reliability.md)
|
||||
- PILOT-01: [记录](changes/2026-09-10-PILOT-01-chapter.md) [记录](baselines/pilot-validation.json)
|
||||
- CORE-01: [记录](changes/2026-09-10-CORE-01-typed-utils.md) [记录](baselines/core-utils-validation.json)
|
||||
- PKG-CHAPTER-01: [记录](changes/2026-09-10-PKG-CHAPTER-01-contract.md) [记录](baselines/chapter-contract.md)
|
||||
- PKG-CHAPTER-02: [记录](changes/2026-09-10-PKG-CHAPTER-02-tests.md) [记录](baselines/chapter-validation.json)
|
||||
- PKG-CHAPTER-03: [记录](changes/2026-09-10-PKG-CHAPTER-03-typescript-modules.md) [记录](baselines/chapter-migration-validation.json)
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# 进度与证据
|
||||
|
||||
## 当前实施:CORE-01 核心工具 TS 迁移完成
|
||||
|
||||
七个核心 utils 文件已迁移为 TS,保留导出、属性与定时器契约,修复合并结果原型和下载失败清理;核心产物与 docs/compiled 已由脚本更新。75 项 Node/基线检查、69 项安装产物三浏览器测试、三格式各 18 项工具契约通过;严格打包零诊断。见 [交付](changes/2026-09-10-CORE-01-typed-utils.md)。当前 214 项,37 完成、177 待办。生产迁移:chapter 五个 TS 文件、核心 utils 七个 TS 文件;核心其他模块仍待迁移。下一项 CORE-02 内部 Emitter。公开 Utils 声明差异单独登记 BASE-TYPE-05,交 CORE-07 协调,不计为已修复。
|
||||
|
||||
## 当前实施:PILOT-01 试点出口通过
|
||||
|
||||
当前源码和包内文件指纹与既有通过证据一致;chapter 的 TS、旧核心、三浏览器、打包、类型和维护地图闭环,见 [汇总](changes/2026-09-10-PILOT-01-chapter.md)。当前 214 项,36 完成、178 待办。接下来 CORE-01 开始核心纯工具 TS 迁移,不再建立重复基线;chapter 05/06 和完整发布验收仍待执行。
|
||||
|
||||
@@ -44,3 +44,6 @@
|
||||
| SDK-11 | open / 待取证 | asr-caller-service 实际集成验证范围 | PKG-ASR-01, PKG-ASR-05, EX-03 |
|
||||
| SDK-12 | open / 待取证 | option-validator 实际集成验证范围 | CORE-01, CORE-07 |
|
||||
| BUILD-AMD-01 | resolved / 已复现 | AMD 全局导出补丁误将固定参数 t 当作全局对象 | ENG-06 |
|
||||
| UTIL-MERGE-01 | resolved / 已复现 | mergeDeep lets a JSON __proto__ key replace the result prototype | CORE-01 |
|
||||
| UTIL-DOWNLOAD-01 | resolved / 源码/产物事实 | Temporary download anchor remains if click throws | CORE-01 |
|
||||
| BASE-TYPE-05 | open / 源码/产物事实 | Public Utils declarations omit exports and misstate timer/descriptor signatures | CORE-07 |
|
||||
+60
-1
@@ -2,7 +2,7 @@
|
||||
"schemaVersion": 1,
|
||||
"task": "BASE-07",
|
||||
"sourceCommit": "e01f39ff",
|
||||
"updatedAt": "2026-09-10T15:27:41.538Z",
|
||||
"updatedAt": "2026-09-10T15:48:43.324Z",
|
||||
"note": "Open means closure evidence is outstanding; source-observed and unverified are not reproduced runtime bugs. A source issue already mitigated in the workspace still requires candidate regression evidence. No accepted-with-scope item is implied by baseline task completion.",
|
||||
"items": [
|
||||
{
|
||||
@@ -656,6 +656,65 @@
|
||||
"refactor/scripts/build.test.mjs"
|
||||
],
|
||||
"resolutionRationale": "构建逻辑修复已完成;63 产物中 24 仅修复接收者,42 浏览器 AMD 检查通过。未改变旧 npm 内容;正式发布仍须用新工具生成实际候选。"
|
||||
},
|
||||
{
|
||||
"id": "UTIL-MERGE-01",
|
||||
"title": "mergeDeep lets a JSON __proto__ key replace the result prototype",
|
||||
"confirmation": "reproduced",
|
||||
"status": "resolved",
|
||||
"owners": [
|
||||
"CORE-01"
|
||||
],
|
||||
"evidence": [
|
||||
"test/utils.test.js",
|
||||
"refactor/changes/2026-09-10-CORE-01-typed-utils.md"
|
||||
],
|
||||
"compatibleResolution": "Write own data properties while preserving ordinary deep merge and array semantics.",
|
||||
"closureCriteria": "Published defect remains observable; current and three artifacts keep normal prototypes, nested behavior and input identity.",
|
||||
"resolutionEvidence": [
|
||||
"test/utils.test.js",
|
||||
"packages/artplayer/src/utils/property.ts",
|
||||
"refactor/changes/2026-09-10-CORE-01-typed-utils.md"
|
||||
],
|
||||
"resolutionRationale": "Published/current and three format contracts prove the __proto__ result-prototype correction, with ordinary merge/reference behavior retained."
|
||||
},
|
||||
{
|
||||
"id": "UTIL-DOWNLOAD-01",
|
||||
"title": "Temporary download anchor remains if click throws",
|
||||
"confirmation": "source-observed",
|
||||
"status": "resolved",
|
||||
"owners": [
|
||||
"CORE-01"
|
||||
],
|
||||
"evidence": [
|
||||
"refactor/changes/2026-09-10-CORE-01-typed-utils.md",
|
||||
"test/browser/utils.spec.js"
|
||||
],
|
||||
"compatibleResolution": "Use finally to remove only the owned anchor, preserve thrown error and caller URL ownership.",
|
||||
"closureCriteria": "Real successful download and controlled click-failure cleanup pass in all three browsers.",
|
||||
"resolutionEvidence": [
|
||||
"test/browser/utils.spec.js",
|
||||
"packages/artplayer/src/utils/file.ts",
|
||||
"refactor/changes/2026-09-10-CORE-01-typed-utils.md"
|
||||
],
|
||||
"resolutionRationale": "Chromium, Firefox and WebKit downloaded the real fixture; controlled click failure still propagated and left no anchor."
|
||||
},
|
||||
{
|
||||
"id": "BASE-TYPE-05",
|
||||
"title": "Public Utils declarations omit exports and misstate timer/descriptor signatures",
|
||||
"confirmation": "source-observed",
|
||||
"status": "open",
|
||||
"owners": [
|
||||
"CORE-07"
|
||||
],
|
||||
"evidence": [
|
||||
"packages/artplayer/types/utils.d.ts",
|
||||
"test/utils.test.js",
|
||||
"test/types/utils-source.ts",
|
||||
"refactor/changes/2026-09-10-CORE-01-typed-utils.md"
|
||||
],
|
||||
"compatibleResolution": "Coordinate compatible public overloads/exports separately; use accurate strict types in migrated source.",
|
||||
"closureCriteria": "Cover missing unescape/ArtPlayerError, def identity/property keys, optional sleep, timer void returns and ignored debounce context; retain legal old consumers in new/old compilers."
|
||||
}
|
||||
]
|
||||
}
|
||||
+6
-3
@@ -750,11 +750,14 @@
|
||||
"ENG-06",
|
||||
"PILOT-01"
|
||||
],
|
||||
"status": "todo",
|
||||
"status": "done",
|
||||
"risk": "M",
|
||||
"deliverable": "utils/time/property/format/file/error/subtitle 的分批 TS 迁移",
|
||||
"acceptance": "Artplayer.utils 导出/参数/绑定保持,纯逻辑与类型测试通过",
|
||||
"evidence": []
|
||||
"evidence": [
|
||||
"changes/2026-09-10-CORE-01-typed-utils.md",
|
||||
"baselines/core-utils-validation.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "CORE-02",
|
||||
@@ -855,7 +858,7 @@
|
||||
"status": "todo",
|
||||
"risk": "H",
|
||||
"deliverable": "plugins/toggle/cue/setting/static 的旧新类型对照",
|
||||
"acceptance": "每项有兼容重载/扩展或待决结论,不能删除旧类型样例;处理 BASE-TYPE-01/04,分别保留旧合法声明消费并验证真实返回",
|
||||
"acceptance": "每项有兼容重载/扩展或待决结论,不能删除旧类型样例;处理 BASE-TYPE-01/04,分别保留旧合法声明消费并验证真实返回;协调 BASE-TYPE-05 的 Utils 导出、descriptor 和 timer 旧声明差异",
|
||||
"evidence": []
|
||||
},
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user