{"_id":"@flow-player/browser-runtime","_rev":"45-b243814135b3c5a118bda960ae377624","name":"@flow-player/browser-runtime","dist-tags":{"next":"0.15.1","latest":"0.17.1"},"versions":{"0.1.0":{"name":"@flow-player/browser-runtime","version":"0.1.0","keywords":["flow-player","flv","h264","h265","hevc","webcodecs","webgl2","wasm","esm"],"license":"MIT","_id":"@flow-player/browser-runtime@0.1.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"be951a133c5e9e378778da7005632e35c49a21a7","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.1.0.tgz","fileCount":28,"integrity":"sha512-nkw/ZB8wPgc2EE0YstSSnp2bpxmNFwHGL1BDZlHCG+eJLuWQTThs8ksR5yOljFN3CCtFQDZurRNSNQ37VzD0SQ==","signatures":[{"sig":"MEUCIH3+rqIo/kW/IONCcjAZt/w6cIUBfH7Rip42yaqoW/uSAiEAseVeN6e7EUdX95HJv645la+NeiexSMNnc5iIcvYID9Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211625},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"e9bcc3de6d84e299c01574defb43507ce2765780","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.12.1","description":"ESM browser runtime for Flow Player H264/HEVC FLV playback with WebCodecs, WebGL2, a module worker, and a WASM demux core.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.1.0_1777191955123_0.31744066804068916","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@flow-player/browser-runtime","version":"0.2.0","keywords":["flow-player","flv","h264","h265","hevc","webcodecs","webgl2","wasm","esm"],"license":"MIT","_id":"@flow-player/browser-runtime@0.2.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"1dc25e10cbb784d57eb67225bd06c4c709694e72","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.2.0.tgz","fileCount":88,"integrity":"sha512-liMypmAayYireG5d5ZUpLdk050cggAkOWcwQHcKO+BrHg55kN+17Zv5Y65yyl+yKWMKLAoIeMtO/XkLpSUyXvQ==","signatures":[{"sig":"MEUCIQCH3vi0ePuswHqu/4vvfK2k2jmAahbJ0BQX2b4/nWssZwIgG7yQ8lZHu683qQYh8YKYte0j0ISpz3DcZX7jil17l4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":746840},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"35a9f0d37ff2ac13b1162eb5b695ef5c543bcd4c","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.12.1","description":"ESM browser runtime for Flow Player H264/HEVC FLV playback with WebCodecs, WebGL2, a module worker, and a WASM demux core.","directories":{},"_nodeVersion":"24.15.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.2.0_1779769970226_0.8522402978321284","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@flow-player/browser-runtime","version":"0.3.1","keywords":["flow-player","flv","h264","h265","hevc","webcodecs","webgl2","wasm","esm"],"license":"MIT","_id":"@flow-player/browser-runtime@0.3.1","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"4edcc4b55d4a9877feb5dada0ede70f8870af7ff","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.3.1.tgz","fileCount":59,"integrity":"sha512-z+tyFC8UM47+OTme00cYKsS8Seoml5cCjqQI2UvNJj2PT5LGwsh2w2tQI/7tKenOpBsLhJoBOpYvo1ktbcJ+QQ==","signatures":[{"sig":"MEYCIQCIdOqgSdHoPhlsqSKJiTLIzH2TVOFm4NAxIW2LlkcLiAIhAKMvoeB0Oe/+ths/KmWrmR3S/qINhudCSVbsgbNexipx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":337012},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"01f99edd96ff6627c691f0acd6f1933c9277156c","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.12.1","description":"ESM browser runtime for Flow Player H264/HEVC FLV playback with WebCodecs, WebGL2, a module worker, and a WASM demux core.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.3.1_1779953517870_0.8220589189977716","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@flow-player/browser-runtime","version":"0.3.2","keywords":["flow-player","flv","h264","h265","hevc","webcodecs","webgl2","wasm","esm"],"license":"MIT","_id":"@flow-player/browser-runtime@0.3.2","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"801711c6562afd0f205781f70d46058df2cddc27","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.3.2.tgz","fileCount":63,"integrity":"sha512-iVYJ2gKJZog1P1xHqo1VRChXaYnACoVsQWCX9g2c9/+phOGACRpEjDR1BfydwiULNLQuEyO+ss+7ce3UzhmRdg==","signatures":[{"sig":"MEUCIBNdGDLwZoqyoGfxGgV/6BRN68S8r9FJMG0trOiYBAXRAiEAnYhNiiUJodWDFkFqfxAajAzp/m3XlTFNBjT677swP3A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":381601},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"defe4cf79c38d001ac68664aa6c5bfd236430631","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.13.0","description":"ESM browser runtime for Flow Player H264/HEVC FLV playback with WebCodecs, WebGL2, a module worker, and a WASM demux core.","directories":{},"sideEffects":false,"_nodeVersion":"26.2.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.3.2_1780294786847_0.5671748992208718","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@flow-player/browser-runtime","version":"0.3.3","keywords":["flow-player","flv","h264","h265","hevc","webcodecs","webgl2","wasm","esm"],"license":"MIT","_id":"@flow-player/browser-runtime@0.3.3","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"1e099668b1dce15fc3818c25dbd13dd4086b3df8","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.3.3.tgz","fileCount":63,"integrity":"sha512-ZVWLqzeTEJpcW07StpQhMOgnnwIXUudcBPnnBMgLcPS27lMlIfcRycMpNSbBy7sckVs4U8DRnuWeihUT1VjxTA==","signatures":[{"sig":"MEYCIQC+Vkj8wM9VhRynHnhQj3QWu5+YZ9Je3xVaLYpv62eTVwIhAMI9+3IccTdZ5lQZHhryTmLlj2/i1uPrqVug5EegDfC5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":393480},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"921037f9ecb45fdea590ad6298710272b3d64e87","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.13.0","description":"ESM browser runtime for Flow Player H264/HEVC FLV playback with WebCodecs, WebGL2, a module worker, and a WASM demux core.","directories":{},"sideEffects":false,"_nodeVersion":"26.2.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.3.3_1780456636965_0.5120212014799068","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@flow-player/browser-runtime","version":"0.3.4","keywords":["flow-player","flv","h264","h265","hevc","webcodecs","webgl2","wasm","esm"],"license":"MIT","_id":"@flow-player/browser-runtime@0.3.4","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"b28f6e61a107f74e7e85410f63cd8997ffc3a65e","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.3.4.tgz","fileCount":63,"integrity":"sha512-W5lzpNIZ60yLPycw07pwrxrhZWPSyc5ZnSpLIK9WS5++38oAo6dfvUT38SG8FpcjWd9lCc8NJGDz0KUVXPw2Bg==","signatures":[{"sig":"MEYCIQDpt39MuRyWUU8cmDheFAbEk9q+SsOxQTwY3iGFYLo6/AIhALJDmL7EjNxsL/zju4TJFd3TuAvNCnLy3oOY8rCtLFKR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":403925},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"fbe1493692c2f59684dd3ff81deb68440895ee0f","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.13.0","description":"ESM browser runtime for Flow Player H264/HEVC FLV playback with WebCodecs, WebGL2, a module worker, and a WASM demux core.","directories":{},"sideEffects":false,"_nodeVersion":"26.2.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.3.4_1780652421321_0.11183537265044086","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@flow-player/browser-runtime","version":"0.3.5","keywords":["flow-player","flv","h264","h265","hevc","webcodecs","webgl2","wasm","esm"],"license":"MIT","_id":"@flow-player/browser-runtime@0.3.5","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"10caf2901ba8392cd7a6cad848f9afdb3a0dd333","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.3.5.tgz","fileCount":63,"integrity":"sha512-aZ1p/whu4VmmTQD9VgEsHdz9VG4WupDeYlCksCIUejeeM6OiwQPorM5vfjFsjI7qKhoQEvVRrmG474DDimV2gg==","signatures":[{"sig":"MEUCICV2tZVndfZqPUYTEFigjNiD/oPtpQCVxr2VlmDnT24kAiEAwplKQxyG0u39EsjAXkDCfiesIGQNuwOjrOCMG8c6fq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":504169},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"c1171201460ace3ffc517f87b0a2648352ecd709","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.13.0","description":"ESM browser runtime for Flow Player H264/HEVC FLV playback with WebCodecs, WebGL2, a module worker, and a WASM demux core.","directories":{},"sideEffects":false,"_nodeVersion":"26.2.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.3.5_1780888110384_0.8483143348299427","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@flow-player/browser-runtime","version":"0.4.0","keywords":["flow-player","flv","h264","h265","hevc","webcodecs","webgl2","wasm","esm"],"license":"MIT","_id":"@flow-player/browser-runtime@0.4.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"17cf62f3970d149b15176e02b517fb9e489d43e3","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.4.0.tgz","fileCount":64,"integrity":"sha512-kTRV760GHyutEVrEhkZlmllr31xGfWL1qv+s3fiYaCTXJ/sL6u0Sin+Sd1SUCefBrDrb5I9Fsng24yx6ZrNbSA==","signatures":[{"sig":"MEUCIH9IdcFZobXGKq7Zt+0ONZxysBO9eQfDNNNi27Bx/ixkAiEA8qFrrVDPw9QwiqVXHcN3wYIwZII8VPfqU86NRW61yqQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":547591},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"718f5920c864214923d1e37626735a9ed21bc203","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.13.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.2.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.4.0_1781834933570_0.3479275960142634","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@flow-player/browser-runtime","version":"0.4.1","keywords":["flow-player","flv","h264","h265","hevc","webcodecs","webgl2","wasm","esm"],"license":"MIT","_id":"@flow-player/browser-runtime@0.4.1","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"82ccfb0083a118568f73a3580f83b23e9a2b6b0a","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.4.1.tgz","fileCount":64,"integrity":"sha512-0eZWpr8IGQu1vOE5Vft6PVEcx7PiOX13N09+BK1xO4SH4xnZzBMSkHGJ2k1Upfcd//sYDzVefEPtQVdZWqGhBA==","signatures":[{"sig":"MEUCICLqv3vrpcPNborTHRwxbXhuI0erQLzlfD2M0pYMiCIIAiEA7dCNog5UspFIlLlyAqakoEXUJAGg0bMxHYR4bJevJi4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":550903},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"d7e9f00562738aa5667a14689fe6895e6edd6026","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.13.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.2.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.4.1_1781846578544_0.7318339988240459","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@flow-player/browser-runtime","version":"0.4.2","keywords":["flow-player","flv","h264","h265","hevc","webcodecs","webgl2","wasm","esm"],"license":"MIT","_id":"@flow-player/browser-runtime@0.4.2","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"76138131577d4f086851f1217be57ede26dbf281","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.4.2.tgz","fileCount":64,"integrity":"sha512-cWtV79MYSQquBotMiGBhI4B7rDiM89BgNw7Pz9AN0XjokmFTq//Lax93GRa6d3/4QP/OD9xbhLT3sgI9AMzaJw==","signatures":[{"sig":"MEUCIQDzvuK0PZUONwIEo+VQd6Mt+02GGk8vnSEA0UEN+et4RQIgNCH6pEpdtI7qLWNR63PfXNVyWbAR4pOXTo1xrXoHYgE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":557506},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"1f30052e8f37e113aff03e608858dd8b27a1124b","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.16.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.3.1","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.4.2_1782103471668_0.42617604526417585","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@flow-player/browser-runtime","version":"0.4.3","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.4.3","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"04ffe33df2a556683bf61a0f6f399f77f754451f","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.4.3.tgz","fileCount":37,"integrity":"sha512-+7YNoi3icwIg1BIWK7p327mOUR82Rjun61cUFUOd/FFMw0UJFlTs9q19M6gt8KVmoa5ckXgE1efnVfoCS4PsNg==","signatures":[{"sig":"MEYCIQDsl5GierZcWyTv5kV58+cDVJqpb5jPFyiqOsBTgN2HAQIhAJLXzZ1wVfQdaVnSowfISIkL994lwQH1eSiUZqKCDAMk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":469641},"type":"module","types":"./src/index.d.ts","engines":{"node":">=26.0.0"},"exports":{".":{"types":"./src/index.d.ts","default":"./src/index.ts"},"./worker":{"types":"./src/worker/player-worker.d.ts","default":"./src/worker/player-worker.ts"}},"scripts":{"lint":"vp lint --ignore-pattern 'scripts/**' --ignore-pattern 'test/**' --ignore-pattern 'bench/**' --ignore-pattern '.types/**' -f agent","test":"node --test test/*.test.ts","check":"pnpm run format:check && pnpm run lint && pnpm run typecheck","clean":"node scripts/clean.ts","format":"vp fmt --write","dev:dist":"npm run build:dist && npm run dev:https","benchmark":"node bench/core-benchmark.ts","dev:https":"node bench/browser-playback-proxy-server.ts --cert /tmp/flow-player-local.pem --key /tmp/flow-player-local-key.pem --port 4176","typecheck":"vp check --no-fmt --no-lint","build:dist":"node scripts/build-dist.ts","build:wasm":"node scripts/build-wasm.ts","test:smoke":"npm run test","bench:proxy":"node bench/browser-playback-proxy-server.ts","build:types":"node scripts/build-declarations.ts --out-dir .types","check:lines":"node scripts/check-ts-file-lines.ts","check:types":"node scripts/build-declarations.ts --check","dev:package":"npm run build:package && npm run dev:https","format:check":"vp fmt --check","pack:package":"npm run build:package && node scripts/verify-package.ts","build:package":"node scripts/build-package.ts","publish:check":"npm run build:package && node scripts/verify-package.ts --require-clean","bench:hevcjs-api":"node bench/hevcjs-api-report.ts","bench:vod-reverse":"node bench/vod-reverse-bench.ts","compare:benchmark":"node bench/compare-benchmark.ts","release:readiness":"node bench/release-readiness-report.ts","bench:hevcjs-decode":"node bench/hevcjs-decode-sandbox.ts","validate:browser-ab":"node bench/validate-browser-ab-report.ts","release:software-gate":"node scripts/software-release-gate.ts","validate:software-poc":"node bench/validate-software-poc-report.ts","bench:hevcjs-bitstream":"node bench/hevcjs-bitstream-readiness.ts","bench:hevc-i420-adapter":"cargo run -p flow-player-core --example i420_adapter_bench --release --","bench:yuv-upload-render":"node bench/yuv-upload-render-bench.ts","bench:browser-ab-capture":"node bench/browser-ab-capture.ts","bench:decoder-candidates":"node bench/software-decoder-candidate-report.ts","bench:software-lifecycle":"node bench/software-decoder-lifecycle-report.ts"},"_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"_nodeVersion":"26.6.0","dependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@latest","vite-plus":"^0.2.1"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.2","@types/node":"^26"},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.4.3_1785844238386_0.9765962109331316","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@flow-player/browser-runtime","version":"0.4.4","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.4.4","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"40a79a2784f98458dfc7e08c02d2f0e5daecbd6d","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.4.4.tgz","fileCount":37,"integrity":"sha512-8VftnT3R+sd/ES05X/+c0Ht/r6Oc7g/Wm+nSI8mKklV8eMLFZxc1x8IcpjD/OBuuKK/KYGSm6+tWwT18Qta1kQ==","signatures":[{"sig":"MEUCIBsouYbYgKmlSeQwN7Lnpnntq3Grwk1b4AGewAY27ptkAiEA5N3Lx/TRAgM6BIHwSlm5xmLXs16cNELbJoqHy7GZpr4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":489487},"type":"module","types":"./src/index.d.ts","engines":{"node":">=26.0.0"},"exports":{".":{"types":"./src/index.d.ts","default":"./src/index.ts"},"./worker":{"types":"./src/worker/player-worker.d.ts","default":"./src/worker/player-worker.ts"}},"scripts":{"lint":"vp lint --ignore-pattern 'scripts/**' --ignore-pattern 'test/**' --ignore-pattern 'bench/**' --ignore-pattern '.types/**' -f agent","test":"node --test test/*.test.ts","check":"pnpm run format:check && pnpm run lint && pnpm run typecheck","clean":"node scripts/clean.ts","format":"vp fmt --write","dev:dist":"npm run build:dist && npm run dev:https","benchmark":"node bench/core-benchmark.ts","dev:https":"node bench/browser-playback-proxy-server.ts --cert /tmp/flow-player-local.pem --key /tmp/flow-player-local-key.pem --port 4176","typecheck":"vp check --no-fmt --no-lint","build:dist":"node scripts/build-dist.ts","build:wasm":"node scripts/build-wasm.ts","test:smoke":"npm run test","bench:proxy":"node bench/browser-playback-proxy-server.ts","build:types":"node scripts/build-declarations.ts --out-dir .types","check:lines":"node scripts/check-ts-file-lines.ts","check:types":"node scripts/build-declarations.ts --check","dev:package":"npm run build:package && npm run dev:https","format:check":"vp fmt --check","pack:package":"npm run build:package && node scripts/verify-package.ts","build:package":"node scripts/build-package.ts","publish:check":"npm run build:package && node scripts/verify-package.ts --require-clean","bench:hevcjs-api":"node bench/hevcjs-api-report.ts","bench:vod-reverse":"node bench/vod-reverse-bench.ts","compare:benchmark":"node bench/compare-benchmark.ts","release:readiness":"node bench/release-readiness-report.ts","bench:hevcjs-decode":"node bench/hevcjs-decode-sandbox.ts","validate:browser-ab":"node bench/validate-browser-ab-report.ts","release:software-gate":"node scripts/software-release-gate.ts","validate:software-poc":"node bench/validate-software-poc-report.ts","bench:hevcjs-bitstream":"node bench/hevcjs-bitstream-readiness.ts","bench:hevc-i420-adapter":"cargo run -p flow-player-core --example i420_adapter_bench --release --","bench:yuv-upload-render":"node bench/yuv-upload-render-bench.ts","bench:browser-ab-capture":"node bench/browser-ab-capture.ts","bench:decoder-candidates":"node bench/software-decoder-candidate-report.ts","bench:software-lifecycle":"node bench/software-decoder-lifecycle-report.ts"},"_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"_nodeVersion":"26.7.0","dependencies":{"vite":"npm:@voidzero-dev/vite-plus-core@latest","vite-plus":"^0.2.1"},"publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"~6.0.2","@types/node":"^26"},"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.4.4_1785996374271_0.6367387182398283","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@flow-player/browser-runtime","version":"0.5.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.5.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"d074d3ed528fec22bcfba1d65e92cdda08379e8a","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.5.0.tgz","fileCount":66,"integrity":"sha512-SvYb3HajxUjIKAFQS4AMjlfma/lN4/iTvBGZJoYdJkUZ1q+sUYLdhEoLGJz14x6rsEhs4coEPFBxVE2AgDXGlg==","signatures":[{"sig":"MEYCIQC/GAIt/1wrcGzoYzqYSq6qNRfU0/bdmrd1/hscwGumTwIhAO6q6Xre5VFlfahy3lY+8TQxSeo8FkeHHLfI05CCm4Wb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":637868},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.5.0_1786071552323_0.03978354848239052","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@flow-player/browser-runtime","version":"0.5.2","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.5.2","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"275e3d3f592976b8b69973bc2ad5df1cd0cf2780","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.5.2.tgz","fileCount":67,"integrity":"sha512-57lT1jS5FilPPPqPQcIAG951KjQ6+WP07UhOaYGi2wjzRXn1lH3Mn28Eli1ByfiRDY1cYPJ12F8np31MPh9PLA==","signatures":[{"sig":"MEUCIC9ohaGDNwK71DqrOaRYhGUGF4EmENi1ouxx2H0V3vi1AiEA7QqZkeUbW+WXxPSFlKABFUK228QEMmTFQZ0cHXz/098=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":646829},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.5.2_1786432984543_0.15212425625471138","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@flow-player/browser-runtime","version":"0.6.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.6.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"1d6dd808153e998fd8f4d6d0e0988f4534207a2c","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.6.0.tgz","fileCount":68,"integrity":"sha512-VxPLB8ouUKCT9S7uWkhe5N38GeZ31Q4kCtoQrsWIaFGpNUNgksVjOyzQeiIbHtTqmrSdAqH117TEq1jNMDxPTg==","signatures":[{"sig":"MEUCIQC1NnKhVakY8MbJ4f7Qk6zRKksC5eyaawAP8z3+DJg+NwIgH2fm8VCo/vg/Wo95qQJtYPravL5YyMMDFMf5b8b3PlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654630},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"5d06aff974bcc62bc481ecb5da89a93064b0192f","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.6.0_1786679512497_0.20084128548162217","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@flow-player/browser-runtime","version":"0.6.1","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.6.1","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"16db7ea560faff7ace65ffe2dfba6cc9a6a30879","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.6.1.tgz","fileCount":68,"integrity":"sha512-om+xUQIFP8s2uspsCJq72NAhvIvy+nrBAO/6JmY3g/C6u/db87DVjJpjVwI3/BcuEfvjIMjvV3u0Q/sJb6Kl0A==","signatures":[{"sig":"MEUCIQCpm2wcF9smUmEhre/BWLb7+Vou8Al6T7hbyyZao+bGfgIgVP/jWGuCruVAZq2VgFMe3GVk12VIixQQemr9mdO7eVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654630},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"494101c59e58164acf8871cf566f7f4705448d9d","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.6.1_1786680509187_0.5503902175039799","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@flow-player/browser-runtime","version":"0.6.2","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.6.2","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"99a95bb8c12890f2a1f094b88cffc265399e975b","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.6.2.tgz","fileCount":68,"integrity":"sha512-LW/fKT6iUgVDEc8760+P+vZM8z42lgSYnAIPfGg97LZDH7CbN80diP8gx/g4U3hos3ibwSMrjefgFFg48dSpkA==","signatures":[{"sig":"MEUCIBfEiklmVTRdz1Xf06Pg2uPBeeOaEIBu75a9os/jdef6AiEA3dhoM17VxNsZVlOhr+rdJ05woCqUNuLiQUvi3xBWlHM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":657241},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"cd44262e9f27423c3e925759f152de06dedd0068","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.6.2_1786697965195_0.7908375167617459","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@flow-player/browser-runtime","version":"0.6.3","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.6.3","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"1560b981a40f3710e252f33fba868571b3c250ba","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.6.3.tgz","fileCount":72,"integrity":"sha512-n8oZM7szLor1NA1ad5axkxNEKM5JX4NvdpTdmuAhUuJ1t2hNNkcN8/D5KLwnNfiS9SW+vQ6Q4w0d0sXJs3jTtw==","signatures":[{"sig":"MEUCIQD5vRZRPwqr6EkOgojre3H4hCMHnvojyhFj4HOrBBu5NQIgORl9GVdpg3z4cGD9jHGUvCxjyvmRMXyNdqsYcqvfLQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":662901},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"7b2662e5c81c2ad8879b1bc6a4cb57e67c9594a1","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.6.3_1787047835945_0.2923488840335513","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@flow-player/browser-runtime","version":"0.7.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.7.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"91cc8d96713ba6f60fbf2aefea0cb830ec3a9079","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.7.0.tgz","fileCount":121,"integrity":"sha512-09ypoRQvZ9wjtLfjDpyQhVPPbuYg4XfP2icglK+wnnRQVO/7qroYnsGfPFth/A4ao3xmELL1A5gdnGJrwvaNSg==","signatures":[{"sig":"MEUCIQC27c4+Tyjd2mmS530/jbHAr9laeOjQKR+gNh5ybvXQ8AIgZ0mWuGAWll92uG0BhousOleVDV+3CVkeJJQKVAfSFuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":691790},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"ac4a3e0f2e65441858f86157b552140dddf3d6c7","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.7.0_1787727889357_0.7031170571465009","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@flow-player/browser-runtime","version":"0.7.1","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.7.1","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"49f74e0c5d917902427a41333d44919866d20168","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.7.1.tgz","fileCount":121,"integrity":"sha512-T0sEBM70nWFdJg7VYwwaDLOX6p2krWge93wMwfztTD+S6kV2YpiokVNb8XvtxIgPXD6skk7Dd61rQf/aNzAiKw==","signatures":[{"sig":"MEQCIBc7SDXKj1j9f4pAkuXYsr2e6cHqqxffhAIKl7h1hko2AiB+q0EpS8TXWazLtz7++Da00AOmE0UAOpsOJJKR3WF/Mw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":694733},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"b5417fec861960fc0d849098f43b270e0c71e1e2","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.7.1_1787881151284_0.5778005426211279","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@flow-player/browser-runtime","version":"0.7.2","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.7.2","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"a1b2a4bc81ee4e189be170fefadc422ad4365610","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.7.2.tgz","fileCount":121,"integrity":"sha512-HOac2ax/qRuuY61mruTNSQBF2+3VXgxhfE72yLEhcOdo7CdnwQSuIZT7YkduaPk2xlA8m/Hh9iiVlPp1YRKfzw==","signatures":[{"sig":"MEUCIGL8UlVG2dQbr2TqHVRljomf50Sy2Bwsz6PcOlawCJBVAiEAySqr+86/1Wv1GnN2GooMwPBuz1UC2Sl1lkmQgVAmFJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":693757},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"d8eb54fc1ac50af6a9684179e2e2eed468755502","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.7.2_1787890516753_0.3573951531822932","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@flow-player/browser-runtime","version":"0.7.3","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.7.3","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"4c9bbad1b32dabb38ad28d6e5e567efd5e662e50","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.7.3.tgz","fileCount":121,"integrity":"sha512-tjgHoILeblXmgT0tyHxh8ieZ64k/V9FeLRFV23ji+LrjBzJfnNsYTz1HgmuJ9EKzKMYiJhV/WlT2t1hJKJh4gQ==","signatures":[{"sig":"MEYCIQDmRRCvBgHgYY+E1GqS5vDXcuVWZ4aKXl+IFs1gQocZQwIhAPGqzKop0VZsAUiit2O+ZNMfAIH/ITxBHllsz4YrP8xH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":703892},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"f6202f9b4c422a69737703c93ab9be6ccdb3d173","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.7.3_1788030920184_0.6302713156291648","host":"s3://npm-registry-packages-npm-production"}},"0.7.4":{"name":"@flow-player/browser-runtime","version":"0.7.4","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.7.4","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"17076e3f20c511ad8f7dc188895f697e7483d6be","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.7.4.tgz","fileCount":121,"integrity":"sha512-A+jiwB9uKHEoX5iHqxR+WCitoowPto5cNwxUrpGDvXnmUwVkpUPlBggB2gNe3pOYdJMfoBklUpyDxp90qwhULQ==","signatures":[{"sig":"MEUCIQCPOyb1mDWazoHW+7Zda09Rf6/tbFMgtpy0ehv/2VPdNwIgSpw6ZEZNBrL/eL4etp5nTAMogo88g6goio20vCtyNHs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":709259},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"7a8d23b6caaa9ec0404ae5e334505a3d98a004fe","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.7.4_1788246062507_0.8327649893531504","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"@flow-player/browser-runtime","version":"0.7.5","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.7.5","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"9ff55a3b96942d9251f23e4386e64a688110b626","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.7.5.tgz","fileCount":121,"integrity":"sha512-baEdY4pFX6sfCtbvdsIlyBt9MPQyQQy55PJQWskUbEIKAB7Cy1FUV2q4teJdtM1zG/oB1sGb4vnNK2limCTLlA==","signatures":[{"sig":"MEQCIClJ0sEreSQuxjvrZtFQHgYV8iz65xEYW7IoPX3MSDCoAiBev9pkeP3YTQKFq5jDIcMJJtpbTPNxgsJAkzo7NWjetA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":709967},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"b76b87a6927678d29ba4428be01693efa72609a2","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.7.5_1788314808883_0.3831449270613987","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"@flow-player/browser-runtime","version":"0.7.6","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.7.6","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"5dd84bd65c230728d2584739141a7f7d3b935204","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.7.6.tgz","fileCount":121,"integrity":"sha512-PyowdnsqwdESBLcwFIUeL/SQ8H/ab0CSBeNgbJgAhiivZmpOVphd3F7AQ2AEmBftadZEZX6TwIooL90cOi2h/A==","signatures":[{"sig":"MEYCIQDFnOkHwRlQKbKcsfHxqKnU5mRNHK9RkkegCZIpI3ibRQIhAJHXiTf+4jacK1/rqOxEbTUdDXN50Vgrsw+kDYY3b5Oz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":712402},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"d5da10d679a217a7273cf91caf50d83a288b08ca","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.7.6_1788349131273_0.2839314552498575","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"@flow-player/browser-runtime","version":"0.7.7","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.7.7","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"9bf484ca57ce7c9a42a32cc07e2b0b94bde36e27","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.7.7.tgz","fileCount":121,"integrity":"sha512-9s2gUur72cOVdGszwNuf0DflkgZ/hzJpZmlwvtPzBbsvpVMgdBYG77JNJNaCnl9dn5FW404NjuJBLFiRStGWRw==","signatures":[{"sig":"MEUCIQCOS4PTReH2F8t7KSKByCBzeHxa0Iq38TK3EWp73fmbxAIgLc2qmj1CN5X26sCZnr9At0QKSo1gJuvnttUvD55JRPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":718734},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"455a8cac2e839c3529ccfbfa3d5aaa03ae85f9d7","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.7.7_1788358316949_0.09736049859569285","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"@flow-player/browser-runtime","version":"0.7.8","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.7.8","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"5f24a011a7ea88c365d7a9f517ce2100502e24ca","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.7.8.tgz","fileCount":121,"integrity":"sha512-OYZ9qYq9wQWd1TlqyjHt++OBwbPyMvc93gtZJJQMSwwbFwv3rycf2o1lQVggcZuVZlZnvXMyNBuSV4pRjGzrEg==","signatures":[{"sig":"MEYCIQCE0B+6a+mBldELWbdrzyf/uamdHcJ10tn8Mn6u8fJ3EQIhAPCB0LOOyVEF9bnGJ4bbcS9B9BYb6zT2lexDJThuF5S8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBtM17DiWqEfqXIuAM2QBG+L4ICPva8SlTF8bNyDbOiwAiA628YyWtRhtvv021/RfTS6Enh+vEdXgMjDm12BRNQccA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":719579},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"7f2729813141ae4d291e3c9e90f5bad50b9220ab","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.7.8_1788521576271_0.0640592003517797","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@flow-player/browser-runtime","version":"0.8.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.8.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"80f05c7b95008f2472ae1d278d5dce4ed1051a04","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.8.0.tgz","fileCount":121,"integrity":"sha512-71CKV/yTk2FT6P+yZT19TE1peFGTOZ6plEEIpy5mFxAWPEf7UQqvMQv9Yz/oSTso/n42Cf0yxrgHA/1NWZ4F5Q==","signatures":[{"sig":"MEQCIETCLkVEk3XuZwhZGUjqwjpvNVBjGD7CojTaBmctDr4pAiBwLTFga5MCIJRECzg66XXRHTq3cvuj3V1jBWM0LwZ5Ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBKxXqn+YVbxlWhs3x4RtL/Y4FtYw6EnjywBJSOZ/xyaAiEA7ZlwbS+fFkQwZqx8M1CAvHhfgQWEOlKCa7Rhc0zeQXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":715076},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"053e75ae11c12bec279799b53dcf2e603df47e23","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.8.0_1788545457135_0.7700201308946053","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@flow-player/browser-runtime","version":"0.9.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.9.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"54f8733b570df3b3c003be5aa05933e3932b13a8","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.9.0.tgz","fileCount":126,"integrity":"sha512-GD51MrPVHY6wkTcC19jvWTchPJaPfjTSSUpAbxy7Yr4PeiCd55kxogwSAHLS/Qs9jCp5W4ca7xS603jq02l5Ig==","signatures":[{"sig":"MEYCIQDyg37Clxj/0i30vmpBLctYx0jNztLWYNDT18ICnQKrOgIhAIjPxLmC4o06R//kF0lPfTLFKVPih307DmIiGaQ0ZPI9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDUccY7XO4mLDM6iXps6lv7QT1vP4rkOxzNhXktv9qjxwIgZHALSUCDpHr1TB7v1SvnLs6I4RVnS/1mDnnFEhZxp2o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":723759},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"552a8220ac79426135401e78d7cae24e428c54d5","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.9.0_1788889559481_0.05124385087872341","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@flow-player/browser-runtime","version":"0.10.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.10.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"d0599b48a2fd08d5de4a4a7220349e0bb6c65359","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.10.0.tgz","fileCount":130,"integrity":"sha512-AyiMtL5L4+8n39bFDQJG86Lbsw7UZBwGTivT3AQtMKrzXFsinihBPDcwMk0MbuMjJAzb288KFEbAlJuOfc/B+A==","signatures":[{"sig":"MEUCIQDJuV8oNjCLTBzB9T+bQ2tYwAsHXa/Rlu3fESnsFIkUOwIgNMxms33Oa5MCLwQtOPRCgDp7zREBL9VV/H/+BdHlUbs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDi42yibGBTcZiXKhEKJRkYwZo4KM0mxw4cSrSGzlyjAwIhAL6FifON8cqZF/q8a0FN0r3Iwa25I83T9L17OGl9QdEN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":778654},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"da490f20798a176413b3bf33dffa702b924ea177","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.10.0_1788915521704_0.5603387252950875","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@flow-player/browser-runtime","version":"0.10.1","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.10.1","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"ced60721d31888138336f20d7880aeaef2bc50e2","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.10.1.tgz","fileCount":130,"integrity":"sha512-GR6NwpAis7DJizElRFhgemx1V6oLdIYaHthyJH6i1HRq5zGQ0oAOUjnw9gQl1L1ON+WbGcPxeIHDUR5iOaaLWw==","signatures":[{"sig":"MEUCIHLq7pjp8j5Yadiqlg6VNlp1rt9KYkC9JWePBag+RCZXAiEA5thq7VisRb3vRcbz7otkG7lUWFJ7sUKT8HIYy01zjLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH/rFRvP4YZ+3njVoPiXfjzlfctCz9J2gmBAjYX128cvAiEA5ay6Gc3mqZD+v56/d4de9rgs0q4CCAFo/oU/S8z3yAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":779849},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"bb57ec2e9fe52dabcf0443c79716bcae4862abe6","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.10.1_1788928826637_0.8431409342715035","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@flow-player/browser-runtime","version":"0.11.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.11.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"0d678d105450238a110278f5ccb0ea883043b46e","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.11.0.tgz","fileCount":130,"integrity":"sha512-FqhDaVP+kcCc8wsrnyiFUloASAG4JAhFN8t7wwVxeM1BjJrdKfbKjpelsvAfs8jS20KbkoCBSfCwwJbrobxr8A==","signatures":[{"sig":"MEQCIDyaeNfU2xP5lyuEmmehMMOpXUeCFaaqO9L9a9p/NPrMAiBLC5dfz5i3BPEIccX/zXq2WCKXYMAR61lviAhUcHRP2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDrYPPY9jL6Ja4W8dPBRFzhuE+Ue5AzstwE5JlZBUmCygIgZkNEu2bvg1GP45yj4JET6pP+In641imivBnciIFTnKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":784125},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"3d2a3a90e9ff5f3964f012dcffd6736c1da15b03","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.11.0_1789036641272_0.14683893172788065","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@flow-player/browser-runtime","version":"0.12.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.12.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"fe0c28514253850fbb021fb5135be2ebf761c637","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.12.0.tgz","fileCount":171,"integrity":"sha512-9ba1LVGHkXAkbSVDuIYwE9f/9TjGGJ/EkZWcUhJjlyCx126M8YHB9Q4ArTLkJF52ploTcrjvoa2IK7ds0gifvA==","signatures":[{"sig":"MEUCIAQVXjTmkOmk48D5IsIJtMqWNWcNDkl5vj8n2ZAd1BDzAiEA8UzlvWzBp0x3Y6ux4g0qwuBsXlJYc3kHxcyMCXpRB2c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCgrE2a8/deuDrHmnx+KQfO4khOtRuCffDguZ+uN70gzwIgaH99R1JChWWyF59F4bKYsmwJv1tFeuQnX8lmXQkm/co=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":860837},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"da055d0bc9f822b31b6495f49c88ad97c0a6b6db","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.12.0_1789140510008_0.4209859531188185","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@flow-player/browser-runtime","version":"0.12.1","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.12.1","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"b4e2807ae8575fc9d2bf7c1d3e9adccfb8964d96","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.12.1.tgz","fileCount":171,"integrity":"sha512-hvDs+/D5zD+MzmqijzhDl0S2vkXD7zRWIlXqI2P4PKxvk2tXuqH6150ronnqpGlSqoe2zrbHIyzEEF6KR5aefA==","signatures":[{"sig":"MEYCIQDmIgUzxtoQQWWXjH6cEOdno6Nva/3Bm4UFH5QC5If5HQIhALSILK6ESDqybLErzMjiFKzrR6TRPB/HTD6vuxZFibYX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCFTZa/15gMOMydgNFXuBHlDC4yZUnWAocYNDmpab8sKgIgDd/dRiEjh89hy/IqMrA+buZQ1ZWnj74NWGZZ4yL1pKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":861941},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"e3f2af36a2e28968c810c06a9c72d467a74055d7","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.12.1_1789148998798_0.24542580653148272","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@flow-player/browser-runtime","version":"0.13.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.13.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"7ad04da4a2cf852ab2f18a1bdc6c2a94e977b831","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.13.0.tgz","fileCount":173,"integrity":"sha512-fkrobZqpLpLH3wHxdC/K4SUfn5h4KOT84CmXhDYlGQ9e8uQg02ZviaB/SRA2HeByjxmj3KcrUU1mrKhBFo0Bvw==","signatures":[{"sig":"MEUCIQDBofggz4WpicUuXH8yeuY4YCBY6XRY4TOoxrLBp+IN7wIgBlDP49i0JZhysMB6yTfdWilOhOiM+PBnRPIQnUgxf+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHTFHV6XGTk6to3uFk4A3OgVd0hy06rtepX3C7yzgHx6AiA3ZkKhvoiSTEaSbBKjNHTMNGgyOEXATnfbB4gBxseR6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":868498},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"d3a3085568e9081b866ef2f4c100f6ed2116904f","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.13.0_1789344358944_0.6413277416415142","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@flow-player/browser-runtime","version":"0.14.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.14.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"021d136f759d505fc44f0c29851ca48f42da8154","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.14.0.tgz","fileCount":175,"integrity":"sha512-18pYe3KiPbOGKR0HyOupYmfiNVWl9uBrknp02s/mofle4TXnShxu0v1n/cYd+j45XE2nFvRRsssFfszdhiYIyw==","signatures":[{"sig":"MEUCIFpVVQoeQHuWM5nrHoblEZexS2MqFW1+CD92XsvUJz+EAiEAwQAx0uYpDs4QhjE42++p7H9Z3rbAxeKjSPS9laWxrDo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICc7azwAw1GED70DTPr+358yskUivyjwItNOyDcE+cBvAiEAzZ6FxFzQ1sKrYmZsnW/SVB7c9+C3IRMEl/ztsX61zbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":863089},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"20f72102a76dbb3c3a1f5f02b6c72eb54c3b0f27","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.14.0_1789414479650_0.6930919195670411","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"@flow-player/browser-runtime","version":"0.14.1","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.14.1","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"cf5b0f25c0bdd801d9fdfd02f364a89cfb0cee53","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.14.1.tgz","fileCount":175,"integrity":"sha512-bphXO2zXD2gcc9oVVfIf5HqKutfSJo2gM9zQcD7pgXz41W5WR4w6vp00xjFWHPXoUEAWXvdvWfbvm3qG2F1Zzw==","signatures":[{"sig":"MEUCIQCuvd5wOO5dVDoIXWzWdFArrT7PpeEIJLIKdL0i0AsoTwIgVZm8y6FOHzWDZNcCYnK1usiE/lDcK9AtjQqbEN2gYtQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDq3fEnp2QbhQLV3+NZ2B23D21+lOrSEgxnYx4Nsh3DVAIhAPWfJHo+uHOC+thG79iynpZXFicNZA7Wrb4BSiI1BVIC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":863350},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"47fd71f76711ed6cf063406bf3effdd1bcd6d9d6","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.14.1_1789445206029_0.5161084471352804","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"@flow-player/browser-runtime","version":"0.14.2","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.14.2","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"819246a4cde68288247f0d76e6e6863ea1872140","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.14.2.tgz","fileCount":175,"integrity":"sha512-UgHTBC6czY7gL9X7NsljYuJaz95OMVv9QgaQM4o27aT/m1AvkqDXLKC5ZgCXU8Gyr7TOj8ymkDJO76CY66GgOg==","signatures":[{"sig":"MEQCIHLjTGOlyaoJNX20lJvseFnaDIICYWSq4EUKIbSP7rA4AiBrW28Pc9W1bJMOz7cRC7Sd2bWXB7wpkK1oq0Khi+48Xg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDRmXwwkw27wOXY7vqyVhK8H+gxillbv/j+OtZFXsyFFAiA/lIH6tGdBJnSp4ySIKuKguwwhcfkUu4B7rSTGk7X37w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":864753},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"}},"gitHead":"0eac0f81bd0edcc39918c1d95bbd65dd59a31192","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.14.2_1789582585152_0.7657728363276544","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@flow-player/browser-runtime","version":"0.15.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.15.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"32c9368b65a68b0d3852f2aea96ec516a9e3cc7b","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.15.0.tgz","fileCount":216,"integrity":"sha512-xpEgYJFMqkwWupo1RUoJMFbdQ/JtAcGPnx2FTExZ968WplpD4Ts6KfPx19xGFAwanuPKkC7EOK9s5ewUQWkuYA==","signatures":[{"sig":"MEUCIHxTowmrrHMIea80mbPAeWEI70TmkMO4hgUGfmPUsSauAiEAlA+KUUdU6AIlWsuylNx6KJbdeqtWocm1jCxeRYMltuE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDdgu3O6KhFPTnVT4C/ZfMaWpVQxcN5jP8zW0nEvCMr+wIgU8WEBQThgzulmayKWG9VPsL5/fIxJXrFmYRzvPlMF8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1080011},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"},"./vod-group":{"types":"./dist/vod-group.d.ts","default":"./dist/vod-group.js"}},"gitHead":"0fc483841868f2022e45343d0a807c4f6c56c3f8","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.15.0_1790776651887_0.6477625305026362","host":"s3://npm-registry-packages-npm-production"}},"0.15.1":{"name":"@flow-player/browser-runtime","version":"0.15.1","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.15.1","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"c2bff62ad59eed6d30f9f4838e3edf6c52e9190a","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.15.1.tgz","fileCount":216,"integrity":"sha512-cAKKGOF+nM+zIa+12VNZQvF7rbjCcsowN19duZLEMTvrZpCGFSYGNxUn1y48boPx54OhxXO1FmHciV/YAVPKxg==","signatures":[{"sig":"MEYCIQDv7+FgIzVKnaJjxpYnTLx47o6npEettDJxHhHP9wOzSQIhALJc5k6nL7pXyMfVRMPQaiqFXtd4V6S+RIbYbue3KGVD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD8YngPWrnvZiT8mmbdCSqFfL69nK8rpuAOVhUmKkAKXAIgd0ZOsUAMb3uf4jMPRzDdXk80JmQzsJdBoi9Ph0fspD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1084227},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"},"./vod-group":{"types":"./dist/vod-group.d.ts","default":"./dist/vod-group.js"}},"gitHead":"87c904eac3b75b699f6f61b786b8aaf0a9f13fc7","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.15.1_1790845777579_0.23486105723820594","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@flow-player/browser-runtime","version":"0.16.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.16.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"f260f4b7d9189b007051c66341a6b8c487c2e622","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.16.0.tgz","fileCount":224,"integrity":"sha512-JWAkvuF/vOOFF/jylRRzGGEeE3OXjLpnsErywhdwFRQx/iFmUzU9NNND5tp3HsxGE1F00z52GPHXdDBeHzZSoQ==","signatures":[{"sig":"MEQCID9Aq2OhjipaZkLfGL6XostAzTwdqe5Vya5Zds+ZWxyLAiAuDURdDIYhOdwhwG20ygYZvNntJ191ztRgB78d30Lnvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDxsEwStaWksvu/fqCbJXhzN9MkxZhhQdf09Y/nIkCZkAiBq7cGaH8Q8+gi686fBqI5tTN1KldQx054t5pevQbsLPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1082666},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"},"./vod-group":{"types":"./dist/vod-group.d.ts","default":"./dist/vod-group.js"}},"gitHead":"07e1b199ad94d955605c9e77bd09c189ea195b4b","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.16.0_1790864914225_0.5517988414898269","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@flow-player/browser-runtime","version":"0.17.0","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"license":"MIT","_id":"@flow-player/browser-runtime@0.17.0","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"dist":{"shasum":"a247c811618cd21d94a4bdf4c9e2c17ded64baab","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.17.0.tgz","fileCount":234,"integrity":"sha512-ZMt+MugE12SxCS3J2e/KnAGsAXcSa1NaGfuBtPbueBfPDQJw63NY3ztMoQYYH/OKCe7NXFH9f3r+sw8S/fRszg==","signatures":[{"sig":"MEYCIQCpXJRF/oyzi/PGpo4c2oqEIykwj94sKTUzh2Mt3QIHAwIhAPf+Nhr1kY57YAuOsY+PVxjv/FBJsFs9nnNqd/enBGNL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIERZnbWQmGC4+zOilD59zkqrCbEWru/xqRiqZl5NpVeeAiAh67C4ixpV5EnYSjaqgPrTDW3vwDZO3Ox6yXeS210jYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1101129},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"},"./vod-cache":{"types":"./dist/vod-cache.d.ts","default":"./dist/vod-cache.js"},"./vod-group":{"types":"./dist/vod-group.d.ts","default":"./dist/vod-group.js"}},"gitHead":"79622c6bdc35e6840bd6e104d034cf848956b1fe","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/browser-runtime_0.17.0_1790885219687_0.2687571339622117","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"_id":"@flow-player/browser-runtime@0.17.1","dist":{"shasum":"bef6a3ea0dd95a59cd4b134133ff6dd1ba1b688c","tarball":"https://registry.npmjs.org/@flow-player/browser-runtime/-/browser-runtime-0.17.1.tgz","fileCount":238,"integrity":"sha512-/NmMYpQVRC31QxGLQCeSPEXn+pLeuahdQf64ovuOCxtWzwWyCmLpqS/vMshP0KarYgPdUmYvXcJCrDylpYLAgA==","signatures":[{"sig":"MEQCIA5AV7roz4F6/oieCGsdgUrBzNYkIZ1m6xh0J128ZDLoAiAKbYjkl9EMWXxg7HiiPfuH0S9oWB7T3RFwgm5pMSCLIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE1/Z/0a82MVjuswxaLPYdU4SbEsOG33zUeSkGT/wh5nAiAPiMJuvpV5OAw7PwVEJpsGA8mKm2y0otTrzrz1Hqx+uQ=="}],"unpackedSize":1118794},"main":"./dist/index.js","name":"@flow-player/browser-runtime","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vod":{"types":"./dist/vod.d.ts","default":"./dist/vod.js"},"./live":{"types":"./dist/live.d.ts","default":"./dist/live.js"},"./debug":{"types":"./dist/debug.d.ts","default":"./dist/debug.js"},"./wasm/*":"./wasm/*","./worker":{"types":"./dist/worker/player-worker.d.ts","default":"./dist/worker/player-worker.js"},"./vod-cache":{"types":"./dist/vod-cache.d.ts","default":"./dist/vod-cache.js"},"./vod-group":{"types":"./dist/vod-group.d.ts","default":"./dist/vod-group.js"}},"gitHead":"0c7c8b75447944230d6889768d9de787fa2bc500","license":"MIT","version":"0.17.1","_npmUser":{"name":"aziz-pong","email":"zhiming3399@gmail.com"},"keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"_npmVersion":"11.19.0","description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","directories":{},"maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"sideEffects":false,"_nodeVersion":"26.7.0","publishConfig":{"tag":"latest","access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/browser-runtime_0.17.1_1790940688864_0.651929715910174"}}},"time":{"created":"2026-04-26T08:25:54.981Z","modified":"2026-10-02T11:31:29.130Z","0.1.0":"2026-04-26T08:25:55.286Z","0.2.0":"2026-05-26T04:32:50.413Z","0.3.1":"2026-05-28T07:31:58.026Z","0.3.2":"2026-06-01T06:19:46.985Z","0.3.3":"2026-06-03T03:17:17.163Z","0.3.4":"2026-06-05T09:40:21.579Z","0.3.5":"2026-06-08T03:08:30.526Z","0.4.0":"2026-06-19T02:08:53.785Z","0.4.1":"2026-06-19T05:22:58.694Z","0.4.2":"2026-06-22T04:44:31.821Z","0.4.3":"2026-08-04T11:50:38.541Z","0.4.4":"2026-08-06T06:06:14.421Z","0.5.0":"2026-08-07T02:59:12.494Z","0.5.2":"2026-08-11T07:23:04.701Z","0.6.0":"2026-08-14T03:51:52.708Z","0.6.1":"2026-08-14T04:08:29.383Z","0.6.2":"2026-08-14T08:59:25.356Z","0.6.3":"2026-08-18T10:10:36.157Z","0.7.0":"2026-08-26T07:04:49.525Z","0.7.1":"2026-08-28T01:39:11.438Z","0.7.2":"2026-08-28T04:15:16.909Z","0.7.3":"2026-08-29T19:15:20.338Z","0.7.4":"2026-09-01T07:01:02.675Z","0.7.5":"2026-09-02T02:06:49.068Z","0.7.6":"2026-09-02T11:38:51.415Z","0.7.7":"2026-09-02T14:11:57.076Z","0.7.8":"2026-09-04T11:32:56.370Z","0.8.0":"2026-09-04T18:10:57.238Z","0.9.0":"2026-09-08T17:45:59.635Z","0.10.0":"2026-09-09T00:58:41.801Z","0.10.1":"2026-09-09T04:40:26.729Z","0.11.0":"2026-09-10T10:37:21.385Z","0.12.0":"2026-09-11T15:28:30.127Z","0.12.1":"2026-09-11T17:49:58.915Z","0.13.0":"2026-09-14T00:05:59.044Z","0.14.0":"2026-09-14T19:34:39.769Z","0.14.1":"2026-09-15T04:06:46.133Z","0.14.2":"2026-09-16T18:16:25.274Z","0.15.0":"2026-09-30T13:57:32.045Z","0.15.1":"2026-10-01T09:09:37.739Z","0.16.0":"2026-10-01T14:28:34.332Z","0.17.0":"2026-10-01T20:06:59.774Z","0.17.1":"2026-10-02T11:31:28.968Z"},"license":"MIT","keywords":["esm","flow-player","flv","h264","h265","hevc","wasm","webcodecs","webgl2"],"description":"Rust/WASM-powered browser video player runtime with FLV/HLS/MP4 demux, WebCodecs decode, WebGL2 render, and HEVC software decode fallback.","maintainers":[{"name":"aziz-pong","email":"zhiming3399@gmail.com"}],"readme":"# @flow-player/browser-runtime\n\nESM browser runtime for H.264 / H.265 FLV live and VOD playback with WebCodecs, WebGL2, and a Rust-powered WASM demux core. Zero npm dependencies.\n\n> **0.4.0 新增（@beta）**：HEVC 软件解码兜底。`decodeMode: \"auto\"` 在浏览器 WebCodecs HEVC 不可用时自动软解；默认 `decodeMode: \"webcodecs\"` 零回归。详见 [HEVC 软解（@beta）](#hevc-软解beta)。\n\n## Quick Start (Live)\n\n```typescript\nimport { flowLivePlayer } from \"@flow-player/browser-runtime\";\nimport PlayerWorker from \"@flow-player/browser-runtime/worker?worker\";\nimport wasmUrl from \"@flow-player/browser-runtime/wasm/flow_player_wasm.wasm?url\";\n\nconst player = new flowLivePlayer({\n  canvas: document.getElementById(\"player-canvas\") as HTMLCanvasElement,\n  workerFactory: () => new PlayerWorker(),\n  wasmUrl, // 生产构建必须显式声明（见下方说明）\n  useWCS: true,\n});\n\nplayer.on(\"play\", () => console.log(\"playing\"));\nplayer.on(\"stats\", (stats) => console.log(stats.fps, \"fps\"));\nplayer.on(\"diagnostic\", (detail) => console.warn(\"normalization:\", detail));\n\nawait player.play(\"https://example.com/live.flv\");\n```\n\n> **接入说明**：`wasmUrl` 和 `workerFactory` 在生产构建中**必须显式声明**。`new URL(variable, import.meta.url)` 自动推断在 dev 模式可用，但生产构建因 bundler 资产检测只识别字面量而失效。详见 [Consumer 接入体验优化 PRD](docs/features/consumer-onboarding-fix-prd.md)。`?worker` / `?url` 需要 `/// <reference types=\"vite/client\" />` 类型声明（vite 模板默认已有）。\n\n## Quick Start (VOD)\n\n```typescript\nimport { flowVodPlayer } from \"@flow-player/browser-runtime\";\nimport PlayerWorker from \"@flow-player/browser-runtime/worker?worker\";\nimport wasmUrl from \"@flow-player/browser-runtime/wasm/flow_player_wasm.wasm?url\";\n\nconst player = flowVodPlayer({\n  canvas: document.getElementById(\"vod-canvas\") as HTMLCanvasElement,\n  workerFactory: () => new PlayerWorker(),\n  wasmUrl,\n});\n\nplayer.playList([\n  {\n    url: \"/vod/1.mp4\",\n    startTimestamp: 0,\n    endTimestamp: 60000,\n    timeLen: 60,\n    fileSize: 1024000,\n    channelID: 1,\n    RecordType: 0,\n  },\n]);\n```\n\n## Worker Setup\n\nThe module worker is at `@flow-player/browser-runtime/worker`.\n\n| Bundler       | Import                                                                                            |\n| ------------- | ------------------------------------------------------------------------------------------------- |\n| **Vite**      | `import PlayerWorker from \"@flow-player/browser-runtime/worker?worker\"`                           |\n| **webpack 5** | `new Worker(new URL(\"@flow-player/browser-runtime/worker\", import.meta.url))`                     |\n| **esbuild**   | `new Worker(new URL(\"@flow-player/browser-runtime/worker\", import.meta.url), { type: \"module\" })` |\n\n## WASM 部署\n\n`.wasm` 产物（~147 KB release）包含在 npm 包的 `wasm/flow_player_wasm.wasm`，通过 `./wasm/*` 子路径暴露。\n\n### 加载机制\n\n提供两种互斥的 wasm 来源（按优先级）：\n\n| 选项        | 模式                 | 生产构建                                | 适用场景                 |\n| ----------- | -------------------- | --------------------------------------- | ------------------------ |\n| `wasmUrl`   | URL 字符串           | consumer `?url` 导入                    | **推荐**（Vite/Webpack） |\n| `wasmBytes` | BufferSource         | consumer `?arraybuffer` 导入            | 需绕过 URL（如内联）     |\n| 不传        | `new URL()` 自动推断 | **不可用**（非字面量不被 bundler 识别） | 仅 dev                   |\n\n另有独立并行通道 `wasmModule`（`WebAssembly.Module`）：作为 init payload 独立字段 postMessage 到 worker，与上述选项可共存（Safari fallback：`wasmModule` 失败时回落到 wasm config）。**不是互斥选项的第三选**。\n\n### Vite / webpack 5（推荐）\n\n用 `?url` 导入让 bundler 自动拷贝：\n\n```typescript\nimport wasmUrl from \"@flow-player/browser-runtime/wasm/flow_player_wasm.wasm?url\";\n\nnew flowLivePlayer({ wasmUrl /* ... */ });\n```\n\n### 手动部署（其他 bundler）\n\n拷贝 `wasm/flow_player_wasm.wasm` 到静态资源并传 URL：\n\n```typescript\nnew flowLivePlayer({\n  wasmUrl: \"https://cdn.example.com/flow_player_wasm.wasm\",\n  // ...\n});\n```\n\n## API Reference\n\n### `flowLivePlayer`\n\n| Method                                                                | Description                              |\n| --------------------------------------------------------------------- | ---------------------------------------- |\n| `play(url)`                                                           | Start streaming                          |\n| `pause()`                                                             | Pause                                    |\n| `close()` / `destroy()`                                               | Stop and release resources               |\n| `screenshot(filename?, format?, quality?, type?)`                     | Capture frame → `string \\| Blob \\| void` |\n| `startRecord(name?, type?)` / `stopRecordAndSave()` / `isRecording()` | Recording                                |\n| `mute()` / `cancelMute()` / `setVolume(v)` / `isMute()`               | Audio control                            |\n| `setScaleMode(m)` / `setRotate(deg)` / `resize(w, h)` / `clearView()` | Display                                  |\n| `setFullscreen(f)` / `toggleControlBar(b)` / `getControlBarShow()`    | Fullscreen                               |\n| `setKeepScreenOn()`                                                   | Prevent screen sleep                     |\n\n| Property                               | Type                                                   |\n| -------------------------------------- | ------------------------------------------------------ |\n| `metrics`                              | `RuntimeMetrics` (`chunksPushed`, `firstFrameAt`, ...) |\n| `loaded`, `playing`, `muted`, `volume` | State booleans/numbers                                 |\n| `scaleMode`, `fullscreen`, `rotate`    | Display state                                          |\n\n| Key Events                                  | Payload                                                         |\n| ------------------------------------------- | --------------------------------------------------------------- |\n| `play`, `pause`, `destroy`                  | `void`                                                          |\n| `start`                                     | `void` (play request started; not a rendered-frame signal)                                   |\n| `stats`                                     | `FlowLivePlayerStats` `{buf, fps, abps, vbps, ts}`              |\n| `videoInfo`                                 | `FlowLivePlayerVideoInfo` `{width, height, codec, codecString}` |\n| `error`                                     | `unknown`                                                       |\n| `diagnostic`                                | `unknown` (stream normalization detail)                         |\n| `timeout`                                   | `FlowLivePlayerTimeoutDetail`                                   |\n| `resize`                                    | `FlowLivePlayerResizeDetail`                                    |\n| `clearView`                                 | `FlowLivePlayerClearViewDetail`                                 |\n| `mute` / `fullscreen`                       | `boolean`                                                       |\n| `volume`                                    | `number`                                                        |\n| `scaleMode`                                 | `FlowLivePlayerScaleMode`                                       |\n| `rotate`                                    | `number`                                                        |\n| `recordStart` / `recordEnd` / `recordError` | `unknown`                                                       |\n| `recordingTimestamp`                        | `number` (seconds)                                              |\n\n### Live 事件与恢复契约\n\n`on`、`once`、`off` 共用 `FlowLivePlayerEventMap`，回调参数可自动推导。\n`off(event, handler)` 可用原回调取消普通订阅及一次性订阅；`off(event)` 清除此事件全部订阅。\n事件同步派发，`once` 在回调重入触发同名事件时也最多执行一次。\n\n```typescript\nconst onTime = (timestampMs: number) => console.log(timestampMs);\nplayer.on(\"timeUpdate\", onTime);\nplayer.off(\"timeUpdate\", onTime);\n```\n\n`play()` 返回的 Promise、`start` 和 `play` 表示播放请求已启动，不保证首帧。\n首帧使用 `render` 事件或 `metrics.firstFrameAt !== null` 判断。\n`timeUpdate` 单位是毫秒；`recordingTimestamp` 单位是秒。\n\n同一 URL 再次 `play()` 或自动重连会复用已保存的 `headers`、`format`、`retry`、\n`readTimeoutMs` 快照；显式传 `{}` 可清空配置。切换到不同 URL 且未传 options 时\n使用空配置，避免旧源的鉴权信息泄漏到新源。主动播放会取消旧退避任务，\n在 `retry` 回调内主动换流同样生效。双层重试限流和错误触发矩阵见\n[Live 重连契约](docs/features/live-retry-prd.md#事件-api)。\n\n### HEVC 软解（@beta）\n\n> ⚠️ **商用前置**：HEVC/H.265 涉及标准必要专利（HEVC Advance、MPEG LA、独立持有人），**无论用哪种 codec 实现，只要发生 HEVC 解码就触发专利授权义务**。商用前必须完成专利授权确认。详见 [HEVC 专利授权与商用合规](docs/reference/hevc-patent-licensing.md)。默认 `decodeMode: \"webcodecs\"` 不加载软解；启用 `auto`/`software` 前请确认授权。\n\n`flowLivePlayer` 支持 HEVC 软件解码兜底，软解后端由独立 npm 包 `@flow-player/software-decoder-ffmpeg`（FFmpeg→WASM / LGPL v2.1+）交付，**不进入本包**（包隔离 release gate 强约束）。接入需额外安装该包。\n\n| `decodeMode`          | 行为                                                                                                    |\n| --------------------- | ------------------------------------------------------------------------------------------------------- |\n| `\"webcodecs\"`（默认） | 仅 WebCodecs 硬解；不加载软解资源，零回归                                                               |\n| `\"auto\"`              | WebCodecs 不可用时自动软解兜底（仅 `decoder-capability` 错误触发，排除 keyframe/seek/network 暂态错误） |\n| `\"software\"`          | 强制软解（HEVC）；不支持的 codec（如 H.264）自动回退 WebCodecs                                          |\n\n```typescript\nimport { flowLivePlayer } from \"@flow-player/browser-runtime\";\nimport PlayerWorker from \"@flow-player/browser-runtime/worker?worker\";\nimport wasmUrl from \"@flow-player/browser-runtime/wasm/flow_player_wasm.wasm?url\";\nimport { ffmpegSoftwareDecoderOptions } from \"@flow-player/software-decoder-ffmpeg\";\n\nconst player = new flowLivePlayer({\n  canvas,\n  workerFactory: () => new PlayerWorker(),\n  wasmUrl,\n  decodeMode: \"auto\", // @beta\n  ...ffmpegSoftwareDecoderOptions(), // 提供 softwareDecoderUrl + softwareDecoderWorkerUrl\n});\n```\n\n安装：\n\n```bash\nnpm i @flow-player/browser-runtime @flow-player/software-decoder-ffmpeg\n```\n\n软解触发时 `metrics.decoderLoadingState` 流转：`idle` → `loading` → `decoder-ready` / `decoder-error`；`metrics.decoderWasmMemoryPeakMb` 记录 WASM 内存峰值。`decode-error` 事件携带 `classifyWebCodecsError` 分类（`decoder-capability` / `keyframe-required` / `keyframe-wait` / `seek-flush` / `network`）。\n\n> ⚠️ 软解包运行时产物内含 FFmpeg 9.0.1 WASM 构建（LGPL v2.1+），分发含软解的产物时请确认 LGPL 合规义务（提供对应源代码 / 重新链接机制）。HEVC 标准必要专利授权独立于软件 license（详见 [专利文档](docs/reference/hevc-patent-licensing.md)）。API 标注 `@beta`，后续版本可能调整。\n\n### `flowVodPlayer`\n\n| Method                                                | Description                                                                                                                                    |\n| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |\n| `playList(segments: FlowVodRecordSegment[])`          | Load and start VOD playback                                                                                                                    |\n| `seek(timestampMs)`                                   | Seek to absolute millisecond timestamp                                                                                                         |\n| `pause()` / `resume()`                                | Playback control                                                                                                                               |\n| `nextSegment()` / `previousSegment()`                 | Segment navigation                                                                                                                             |\n| `nextFrame()` / `previousFrame()`                     | Frame-stepping                                                                                                                                 |\n| `setRate(rate)`                                       | Playback speed. `rate > 0` = forward (e.g. `2` = 2×), `rate < 0` = reverse (e.g. `-4` = backward 4×, `\\|rate\\|` must be 1/2/4/8). `0` rejects. |\n| `setPlaybackDirection(\"forward\"\\|\"backward\", speed?)` | Reverse playback control. Equivalent to `setRate(-speed)` for `backward`.                                                                      |\n| `setGapPolicy(policy: FlowVodGapPolicy)`              | Gap handling (`\"jump\"` or `\"hold\"`)                                                                                                            |\n| `syncTo(targetMs, options?)`                          | Multi-player sync. Default smooth trim uses an adaptive absolute delta: `max(baseRate × 0.4, 1×)`; pass `smoothRates` to override.                  |\n\n`seek()` / hard `syncTo()` targets in a gap or outside the playlist use the configured\n`gapPolicy` consistently instead of entering the pipeline error state. Every seek settles\nexactly once via `seek-settled` with\n`{ targetMs, actualMs, errorMs, latencyMs, direction, generation, cancelled?, reason? }`:\neither a real arrival, or a `cancelled: true` settlement (`reason`: `\"superseded\"` when a\nnewer seek on the same player took over, `\"direction-change\"` when a true direction flip\nvoided the in-flight seek, `\"reset\"` when `playList()` replaced the list), so multi-player\nconsumers can stop polling `getPrecisePosition()` to detect settlement and never stall on a\nsuperseded seek.\n\n方向切换（`setPlaybackDirection` 真翻转 / `setRate` 负数）立即下发 worker：`directionchange`\n即代表解码方向开始切换，不再等待在途 seek 落定。在途 seek 被翻转作废时以\n`seek-settled { cancelled: true, reason: \"direction-change\" }` 结算；同方向仅切档（speed-only）\n遇在途 seek 仍延后到落定后生效。\n\nMP4 分片加载、解码或渲染失败时，播放器在保留既有 `error` 事件的同时派发\n`segment-load-error`。其 detail 包含脱敏后的 `segmentUrl` / `nextSegmentUrl`、\n`segmentIndex`、`httpStatus`、从 0 开始的 `retryCount`、`isLastSegment`、`layer`、\n`cause` 与 `message`。同一播放列表内同一分片连续失败达到\n`segmentLoadFailureThreshold`（默认 3）后，额外派发一次 `unrecoverable-error`；该阈值只\n用于错误升级观测，播放器不会自动重试或跳过分片。成功出帧或重新 `playList()` 会清空\n连续失败序列和 `snapshot.lastLoadError`。\n\n```typescript\nimport {\n  flowVodPlayer,\n} from \"@flow-player/browser-runtime\";\n\nconst player = flowVodPlayer({\n  segmentLoadFailureThreshold: 3,\n});\n\nplayer.addEventListener(\"segment-load-error\", (event) => {\n  const detail = event.detail;\n  console.warn(detail.cause, detail.httpStatus, detail.retryCount);\n});\n\nplayer.addEventListener(\"unrecoverable-error\", (event) => {\n  const detail = event.detail;\n  console.error(detail.segmentUrl, detail.totalRetries, detail.lastError);\n});\n```\n\n| Property       | Type                                                  |\n| -------------- | ----------------------------------------------------- |\n| `state`        | `\"idle\" \\| \"loading\" \\| \"playing\" \\| \"paused\" \\| ...` |\n| `rate`         | `number`                                              |\n| `snapshot`     | `FlowVodPlayerSnapshot`                               |\n| `effectiveSpeed` | `number`（正放为正，倒放为负） |\n\n### VOD API 与事件契约\n\n根入口和 `/vod` 子路径均导出 `FlowVodPlayUrlOptions`、`FlowVodSeekMapping`、\n`FlowVodPlayerEventMap`。`new FlowVodPlayer(options)` 与 `flowVodPlayer(options)` 等价。\n\n多路同步经 `./vod-group` 子路径的 `VodPlaybackGroup`（组时钟/屏障/准入/成员 reducer），\n命令返回带 `completion`/`cancel()` 的 Operation；附着组的 player 直控报 `control-owned-by-group`，\n`syncTo` 保留为单实例微调 API。0.15.0 breaking 面与迁移动作见\n[0.15.0 迁移说明](docs/reference/vod-rearchitecture-migration.md)。\n\n| 操作 / 事件 | 返回值或载荷与含义 |\n| --- | --- |\n| `playList` / `playUrl` / `pause` / `resume` / `setRate` / `setPlaybackSpeed` | 同步返回 `FlowVodPlayerSnapshot`，不等待网络或目标帧 |\n| `seek` / `nextSegment` / `previousSegment` / `nextFrame` / `previousFrame` | 返回 `FlowVodSeekMapping` 或 `null`（缺口 hold 或无相邻片段） |\n| `statechange` | 完整快照；UI 状态以此为准 |\n| `seek` | 请求已映射到片段；尚未保证目标帧呈现 |\n| `seek-settled` | 每个 seek 恰好一次：真实落定含 target/actual/error/latency/generation；被顶替/方向切换/列表重置/素材末端时 `cancelled: true` + `reason`（actual/error/latency 为占位值） |\n| `stream-end` | 播放列表素材末端到达（state 进入 `ended`）时一次性派发：`{ finalPositionMs, segmentIndex, direction, source }`。消费方据此渲染\"录像结束\"占位，与网络卡顿（error/buffering）区分 |\n| `timeupdate` | `{ positionMs, rate }`；位置为绝对时间轴毫秒，`rate` 为有符号倍率（direction 模式下倒放为负、档位切换立即可见），与 `snapshot.rate`/`effectiveSpeed` 同口径 |\n| `buffering` | `{ buffering }` 后端 stall 通知；loading/paused 等状态下可能不改变播放状态 |\n| `destroy` | 销毁完成时的快照；现有契约不额外发送 destroyed 的 `statechange` |\n\n`addEventListener` / `removeEventListener` 根据事件名推导 `CustomEvent.detail`，\n保留标准 EventTarget 的 `{ once, signal }`、对象监听器及自定义事件支持。\n异步播放错误通过 `error` 观测；同步参数错误通过异常反馈。\n无效 `playList` 不改变旧列表、pending seek 或暂停意图。\n当前 runtime/worker 通过消息 envelope 的 seekRequestId 隔离旧进度和迟到超时，\n旧 worker 缺少该字段时保持原有兼容行为。停止时钟确认不能结算 pending seek；\nruntime 的一次 progress 消息只派发一次载荷一致的事件。\n\n#### seek-error 恢复契约（自动恢复与 recover()）\n\nseek 超时以 `error { source: \"seek\", code: \"seek-error\", targetMs, generation }`\n派发，失败目标保留在播放器内。恢复配额关系如下：\n\n- **上游自动恢复**：每次 seek-error 事故自动以重启管线路径重发同一目标一次\n  （300ms 退避）。settle 成功或重新 `playList()` 后配额刷新；底层原因不消除时\n  不会形成重试风暴。\n- **`recover()`**：显式恢复入口，每次调用重发最后一次失败目标（无失败记录时\n  仅重建当前段管线）。与自动恢复配额相互独立——自动恢复已消耗后仍可调用。\n- **消费方指引**：收到 seek-error 后推荐调用一次 `recover()` 而非重建会话；\n  同一目标连续第 3 次 seek-error（自动恢复与 `recover()` 均已失败）说明会话\n  已僵死，建议重建会话（重新 `playList()` 或新建实例）。多路同步场景不要在\n  syncTo 失败路径上再自行包一层重试——与 `recover()` 叠加会形成双层重试。\n- **慢供给预算**：decoder 重建挂起（等目标段数据到位才能开始重配）的超时预算\n  与数据供给节奏解耦：供给仍在推进（字节持续到达/请求在途）时挂起等待自动\n  顺延（每次续期派发 `diagnostic`\"Seek suspension extended\"，总上限 30s）；\n  只有数据已到位而重配仍未完成，才在一个预算窗（8s）内判 `seek-error`。\n  NVR 夜间高峰等慢供给场景的初始 seek 不再被 8s 预算误杀。\n\n```typescript\nplayer.addEventListener(\"error\", (event) => {\n  const detail = (event as CustomEvent).detail;\n  if (detail?.code === \"seek-error\") {\n    // 推荐动作：一次 recover() 而非重建会话；连续第 3 次失败再重建。\n    player.recover();\n  }\n});\n```\n\n```typescript\nplayer.addEventListener(\"seek-settled\", (event) => {\n  console.log(event.detail.actualMs, event.detail.errorMs);\n}, { once: true });\n```\n\n参数与事件质量门禁：新增或变更公共 API 必须同时通过源码、workspace 声明、\n发布生成声明三种入口的 consumer 编译测试，并对事件次数、取消与重入行为补回归。\n现有用例为 `test/public-api-types.test.ts` 与 `test/player-events.test.ts`，随包单测执行。\n\n### VOD 段缓存（`./vod-cache` 子路径）\n\n`createVodSegmentCache` 提供 OPFS 落盘的跨会话段缓存，以 `FetchLike` 装饰器接入\n`FlowVodPlayerOptions.fetchImpl`：命中区间直接由缓存合成 206/200 响应，未命中回源并\n流式写穿（边下边落盘）。只支持\"不可变对象\"一致性模式——段内容定稿后同键不覆盖、\n不增长；`assertImmutableContent: true` 是构造硬准入门，无可靠内容版本的部署不得启用。\n一切存储故障 fail-open 降级回源，不影响播放。\n\n```typescript\nimport { createVodSegmentCache } from \"@flow-player/browser-runtime/vod-cache\";\n\nconst cache = await createVodSegmentCache({\n  assertImmutableContent: true,\n  credentialParams: [\"token\"], // 从缓存键剥离的凭证 query 参数\n});\n// flowVodPlayer({ ..., fetchImpl: cache.fetchImpl })\n```\n\n| Option | 默认值 | 含义 |\n| --- | --- | --- |\n| `assertImmutableContent` | 必填 | 内容不可变断言；非 `true` 构造抛错 |\n| `credentialParams` | `[]` | 缓存键剥离的凭证参数名（其余 query 保留） |\n| `budgetBytes` | 512 MiB | 磁盘总预算；超限按 LRU 逐出 |\n| `maxEntryAgeMs` | 7 天 | 条目最大存活时间，超龄在启动对账时回收 |\n| `fetch` | `globalThis.fetch` | 未命中时的回源实现 |\n| `directoryName` | `\"flow-player-vod-cache\"` | OPFS 目录名（同 origin 隔离命名空间） |\n\n`cache.metrics()` 返回命中/回源/逐出/清扫等计数快照；`cache.clear()` 清空整库。\n配额耗尽后进入\"停写保读\"（`writeDisabled`），读命中继续工作、新写直接旁路。\n启动时做双向对账：索引引用的文件必须存在，磁盘孤儿文件自动清扫；索引损坏则整库\n作废重建（`startupWiped`）。\n\n### 调试探针（`./debug` 子路径）\n\n`createFlowDebugProbe` 把播放器公开观测面（live 的 `metrics`/`on`/`off`、vod 与组的\n`addEventListener`/`snapshot`）封装成结构化快照与事件/指标采样器，供接入方排障、\n远程支持口径统一（\"贴一份 `probe.snapshot()`\"）。探针只读公开面，无播放器内部依赖。\n\n目标为 **labeled 多目标模型**：`targets` 返回 `{ label: 目标 }` 表，label 由接入方\n自定（NVR 场景即通道号），多路网格与单路场景同形表达；目标以惰性 getter 提供，\n实例销毁/重建后自动跟随当前实例。快照与采样报告按 label 分域。\n\n```typescript\nimport {\n  createFlowDebugProbe,\n  parseDebugFlagsFromUrl,\n  FLOW_PLAYER_VERSION,\n} from \"@flow-player/browser-runtime/debug\";\n\nconst probe = createFlowDebugProbe({\n  targets: () => ({\n    ch1: { kind: \"live\", player: livePlayer1 },\n    ch2: { kind: \"vod\", player: vodPlayer2 },\n    playback: { kind: \"group\", group: playbackGroup },\n  }),\n  meta: () => ({ app: \"my-nvr\", version: \"1.0.0\" }), // 顶层合并进快照（固定域键优先）\n});\n\nprobe.snapshot();   // 一次性快照：version/runtimeVersion/at/url/targets.<label> + meta\nconst handle = probe.startSampler({ intervalMs: 5000 });\nconst report = probe.stopSampler(); // 帧统计 + 事件 ring + counts + 指标采样环（均按 label 分域）\n```\n\n快照固定域含 `version`（报告 schema 版本）与 `runtimeVersion`（= `FLOW_PLAYER_VERSION`\n包版本，每份快照自描述，远程支持免反问）。\n\n采样器订阅 live（`play`/`stats`/`frame`/`error`/`retry` 等）、vod（`frame-rendered`/\n`seek-settled`/`segmentchange` 等）与组（`statechange`/`recoverychange`/`error` 等）\n事件：帧与周期事件只计数（`frames`/`counts`），其余事件按种类白名单字段进事件 ring\n（`maxEvents` 容量，超出丢最旧并计 `droppedEvents`）——白名单即脱敏，URL 等敏感字段\n一律不收；同时统计帧间隔超 100ms 次数与 `maxGapMs`，并按 `intervalMs` 采集采样环\n（`maxSamples` 容量，超出丢最旧并计 `droppedSamples`）。重复 `startSampler` 先停旧\n实例；采样期某 label 消失时该 label 样本标记 `gone`。\n\n`parseDebugFlagsFromUrl(location.search)` 解析 URL 调试开关（当前支持\n`?flowLogLevel=silent|error|warn|info`，非法值不透传），展开进播放器构造选项即可让\n集成页免改代码开日志：\n\n```typescript\nconst player = flowVodPlayer({ ...options, ...parseDebugFlagsFromUrl(location.search) });\n```\n\n排障组合建议：`?flowLogLevel=info` 开内部日志 + 本探针采快照/采样 +\n`detectBrowserCapabilities()` 排查环境。组目标注意：组 `snapshot` getter 会顺带执行\n惰性冻结执法（可能触发成员 pause 与 recoverychange 事件），探针只低频读取它；组\n`tick()` 是稳态驱动，探针不调用，接入方自己的驱动循环不要停。\n\n### `FlowVodRecordSegment`\n\n```typescript\ninterface FlowVodRecordSegment {\n  url: string;\n  startTimestamp: number;\n  endTimestamp: number;\n  timeLen: number;\n  fileSize: number;\n  channelID: number | string;\n  RecordType: number | string;\n}\n```\n\n## Tree Shaking\n\nPackage is `\"sideEffects\": false` with per-module output. Modern bundlers (Vite, webpack 5, Rollup, esbuild) will remove unused code automatically. Importing only `flowLivePlayer` excludes VOD from your bundle.\n\n## License\n\nMIT\n\n## Development\n\n```bash\n# Build WASM (requires Rust wasm32-unknown-unknown target)\nnpm run build:wasm\n\n# Build npm-grade package\nnpm run build:package\n\n# Verify before publish\nnpm run publish:check\n\n# Full test suite\nnpm run test:smoke\n\n# Type check\nnpm run typecheck\n```\n","readmeFilename":"README.md"}