{"_id":"@vonage/video-realtime-stats","_rev":"115-c1ff2d7b1d6a7128b1243fc60e6bc5c5","name":"@vonage/video-realtime-stats","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@vonage/video-realtime-stats","version":"0.1.0","author":{"name":"Javier Molina"},"license":"MIT","_id":"@vonage/video-realtime-stats@0.1.0","maintainers":[{"name":"javiermolsanz","email":"javier.molinasanz@vonage.com"},{"name":"agus-vonage","email":"agus.barra@vonage.com"},{"name":"yonatan.kra","email":"yonatan.kra@vonage.com"},{"name":"v-kpheng","email":"Kongpheng.Nanthavongsa@vonage.com"},{"name":"vgai-dev","email":"vgai-studio-developers@vonage.com"},{"name":"nitzanhardon","email":"nitzan.hardon@vonage.com"},{"name":"eportolanvonage","email":"enrico.portolan@vonage.com"},{"name":"web-il","email":"web-il@vonage.com"},{"name":"iceberg-team","email":"icebergteam@vonage.com"},{"name":"yinon","email":"yinon.oved@vonage.com"},{"name":"unified_portal","email":"unified_portal_dev@vonage.com"},{"name":"vreporter-npm","email":"vreporter-support@vonage.com"},{"name":"vbcbe","email":"vbc-be@vonage.com"},{"name":"voxip_team","email":"guy.mininberg@vonage.com"},{"name":"gunifydevops","email":"gunifydevops@vonage.com"},{"name":"yuri.guller","email":"gullerya@gmail.com"},{"name":"idanvon","email":"idan.cohen@vonage.com"},{"name":"nexmo-devrel","email":"devrel@vonage.com"},{"name":"vvd","email":"vivid@vonage.com"},{"name":"vonagemeetings","email":"VBC-Meetings@vonage.com"},{"name":"tweinfeld","email":"talw@webwise.co.il"},{"name":"vonage-jenkins","email":"video.api.ops@vonage.com"},{"name":"maikthomas","email":"michaelgeorge.thomas@vonage.com"},{"name":"germangol","email":"german.goldenstein@gmail.com"},{"name":"ashwinvprabhu","email":"ashwin.venkateshprabhu@vonage.com"},{"name":"arivonage","email":"ari.ades@vonage.com"}],"homepage":"https://github.com/nexmo-se/real-time-stats-video#readme","bugs":{"url":"https://github.com/nexmo-se/real-time-stats-video/issues"},"dist":{"shasum":"9d51b7e2f81d7ab4f1f7d2ab349c573906148e23","tarball":"https://registry.npmjs.org/@vonage/video-realtime-stats/-/video-realtime-stats-0.1.0.tgz","fileCount":19,"integrity":"sha512-rXjC9eK5nsHHZds3bY99q5/7JoiwA1D69k9fOIMeYYHOeY2E8q4IZX9Eta1TC/B/+R1cZTaLV1Erg4sDkm996A==","signatures":[{"sig":"MEUCIAImCKggfsIcUVYVeT/oOcd/k+zIQBFffTEVEC5KIXWbAiEAxpqySCE4DcENdS+8Mcg1nvvBQlyhHJGiXmVCUvGQ89c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":104355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitFXuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqI7xAAi8s4skQTKxjqNatqhkFR5kV1uk/+f9C6PYqvka2Wb9ULzhTR\r\nF75TpfEXzY9bM+/pR0wAfFjHhGmqhxe9yIWKXhowubetMEIjnqr2/mdQ9GUZ\r\nC2u4ve9PxGwu10eDarLcdUiJqhLXKWZhmn/1WGITtBeUdx4Rp0VJWPoQTU43\r\nslGq29LZj4mG+MegWBVo0aFUfcx/WIQfKO9MTwLdoTn8k4ABi8LInd/LUNfm\r\nzq5uQo1mT1FPBAvnjieSDQrNXyT4dlAawzja4cnkS8NqtqaTo93BUmjdV4bX\r\nGlWwL2sZImq76dpEdef1bNug39VB6g5T7XhPcGavI5f5UdK/Pcz8+7ZXND52\r\n/g46C7MKm+mbAmrqzvLFebokM8vMheXjXbdPAhSSD9WzQAs17caj6pFIQIEN\r\n0vr4RbrSKe5l5BzaH59piFoyCRGjVoGWJzkjuFUeiUIep6DMB+UtLEWYRtuD\r\n7aPEQ4BQ4sXq4PLZKfSTyr/l4vLaLSyNwVOkW7pLo9s7alcAFZvv3IjJDH1a\r\na1LTB/mKpfKjQPYHVpyj2ifX1gfG4v4OwifVYXsykyS70slhWX0Oq0lLSQGy\r\ntDww18tsK98txnpkwa6GGKCDLlv7ltZg7ZtPe3QKzRfEfn5gteP3Kdx/RIbH\r\nCySb6U1PhxjPoUbo33Pn6x7cbHrqr4BxoYI=\r\n=eksi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=14"},"gitHead":"0ab2c65708946b989c9816f84bf8e4b5085bd479","scripts":{"lint":"tslint -c ./tslint.json --project ./tsconfig.json -t stylish","build":"tsc","clean":"rimraf dist","watch":"npm run build && nodemon","prepare":"npm run clean && npm run build && npm run build-umd-prod","prelease":"npm version prerelease --preid=rc2","build-umd":"webpack && npm run copy:library-to-sample-app","build-umd-prod":"NODE_ENV=production webpack","copy:library-to-sample-app":"mkdir -p ./sample-app/library/ && cp -r ./dist/umd/* ./sample-app/library/"},"_npmUser":{"name":"javiermolsanz","email":"javier.molinasanz@vonage.com"},"repository":{"url":"git+https://github.com/nexmo-se/real-time-stats-video.git"},"_npmVersion":"6.14.14","description":"Library to add real-time stats to your Vonage Video application","directories":{},"_nodeVersion":"14.17.5","dependencies":{"events":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","tsify":"^5.0.4","rimraf":"^3.0.2","tslint":"^6.1.3","nodemon":"^2.0.13","ts-node":"^10.3.0","webpack":"^5.33.2","ts-loader":"^9.0.0","typescript":"^4.4.4","webpack-cli":"^4.7.2"},"_npmOperationalInternal":{"tmp":"tmp/video-realtime-stats_0.1.0_1655985645802_0.8840534040632777","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@vonage/video-realtime-stats","version":"0.1.1","author":{"name":"Javier Molina"},"license":"MIT","_id":"@vonage/video-realtime-stats@0.1.1","maintainers":[{"name":"javiermolsanz","email":"javier.molinasanz@vonage.com"},{"name":"agus-vonage","email":"agus.barra@vonage.com"},{"name":"yonatan.kra","email":"yonatan.kra@vonage.com"},{"name":"v-kpheng","email":"Kongpheng.Nanthavongsa@vonage.com"},{"name":"vgai-dev","email":"vgai-studio-developers@vonage.com"},{"name":"nitzanhardon","email":"nitzan.hardon@vonage.com"},{"name":"eportolanvonage","email":"enrico.portolan@vonage.com"},{"name":"web-il","email":"web-il@vonage.com"},{"name":"iceberg-team","email":"icebergteam@vonage.com"},{"name":"yinon","email":"yinon.oved@vonage.com"},{"name":"unified_portal","email":"unified_portal_dev@vonage.com"},{"name":"vreporter-npm","email":"vreporter-support@vonage.com"},{"name":"vbcbe","email":"vbc-be@vonage.com"},{"name":"voxip_team","email":"guy.mininberg@vonage.com"},{"name":"gunifydevops","email":"gunifydevops@vonage.com"},{"name":"yuri.guller","email":"gullerya@gmail.com"},{"name":"idanvon","email":"idan.cohen@vonage.com"},{"name":"nexmo-devrel","email":"devrel@vonage.com"},{"name":"vvd","email":"vivid@vonage.com"},{"name":"vonagemeetings","email":"VBC-Meetings@vonage.com"},{"name":"tweinfeld","email":"talw@webwise.co.il"},{"name":"vonage-jenkins","email":"video.api.ops@vonage.com"},{"name":"maikthomas","email":"michaelgeorge.thomas@vonage.com"},{"name":"germangol","email":"german.goldenstein@gmail.com"},{"name":"ashwinvprabhu","email":"ashwin.venkateshprabhu@vonage.com"},{"name":"arivonage","email":"ari.ades@vonage.com"}],"homepage":"https://github.com/nexmo-se/real-time-stats-video#readme","bugs":{"url":"https://github.com/nexmo-se/real-time-stats-video/issues"},"dist":{"shasum":"fd279c79d88e35af7ce701c89339be32d755b096","tarball":"https://registry.npmjs.org/@vonage/video-realtime-stats/-/video-realtime-stats-0.1.1.tgz","fileCount":19,"integrity":"sha512-gUsujTJwVexNqeDRXCnaSRkLTUSkyDkVxP1fvnl19MhuTact9iH7tne3VCfZGNXCMwX84RLkg4ck0DMn3KvfXg==","signatures":[{"sig":"MEUCIQDTEB/Mc7/qpVFd9NDCnr5oiyRHLnWjpAxQT2E5RTtH6QIgfzcOAsg/QAMGg7WCky+lm1CXl67pn4/3NivYFGFvd7E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":104517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitG3VACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoCqQ/+K8QL4b3N0XYHFLepXtgMlHwtWp2mFj45sTV1DWEayJu2nvPl\r\nOsP/lhQKGAwnpN54UL0EVJqyLSg0DtBph7WLBgqflgzUbkCYfVIRoV4MF1x9\r\noX0GxcROxDMraDucahvObT61bofP7Ce0tY+397x/Kio8rg5Vl6O6fHp0nLFU\r\nTEcArqx4Q8kW7eV+u3yNDG8UdWucIdqDxr4Y4/4OFPZMpdA4igQGvLyg6Toc\r\nEsn5f5CZuH8aXcOQyXQv+54rB4A+PYWgUqWhBI1/MKZHfILzywGbeE16cEzw\r\na8H7Re9i7C27rgfM7wzFiY83R0/H7YiefEztJCpPFgyndEMdbi0xfK9hYiHb\r\nnZQaFligG0VCn9vzjWbp+qH1qFfiEaXOnQ9E24MWzhl9hLC9sJ4S5cHGG3QF\r\nQFua298wjzmf3HYnxfcH+OkksxX1nPBz2nkKl6YwKLhOK+oI/6YE5LcjOytK\r\n0wndeylbbTFq60skdMZ6aSzANfRtiTWfCznpEK8bwhrob7UTQLGMdWZE7W35\r\nelQnnraQv7cFhTWvN10R4lLAtPx+lbRhJMJAULHXSbPO3yL0jtTNeS3Au7Ll\r\nkqFLqm73VF5Ga6bF/z3GnZ4fDHhPyZmG8fOEUuGekRXSl2yJ0MlR5V8Ophna\r\ndCnxLg0MlHBpRLubWkgV/bK1+HKr7TdecXI=\r\n=AHFe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=14"},"gitHead":"6add16f81ab8e1701bd2725fe65c3826f9362786","scripts":{"lint":"tslint -c ./tslint.json --project ./tsconfig.json -t stylish","build":"tsc","clean":"rimraf dist","watch":"npm run build && nodemon","prepare":"npm run clean && npm run build && npm run build-umd-prod","prelease":"npm version prerelease --preid=rc2","build-umd":"webpack && npm run copy:library-to-sample-app","build-umd-prod":"NODE_ENV=production webpack","copy:library-to-sample-app":"mkdir -p ./sample-app/library/ && cp -r ./dist/umd/* ./sample-app/library/"},"_npmUser":{"name":"javiermolsanz","email":"javier.molinasanz@vonage.com"},"repository":{"url":"git+https://github.com/nexmo-se/real-time-stats-video.git"},"_npmVersion":"6.14.14","description":"Library to add real-time stats to your Vonage Video application","directories":{},"_nodeVersion":"14.17.5","dependencies":{"events":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","tsify":"^5.0.4","rimraf":"^3.0.2","tslint":"^6.1.3","nodemon":"^2.0.13","ts-node":"^10.3.0","webpack":"^5.33.2","ts-loader":"^9.0.0","typescript":"^4.4.4","webpack-cli":"^4.7.2"},"_npmOperationalInternal":{"tmp":"tmp/video-realtime-stats_0.1.1_1655991765148_0.2720690410861055","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@vonage/video-realtime-stats","version":"0.1.2","author":{"name":"Javier Molina"},"license":"MIT","_id":"@vonage/video-realtime-stats@0.1.2","maintainers":[{"name":"javiermolsanz","email":"javier.molinasanz@vonage.com"},{"name":"agus-vonage","email":"agus.barra@vonage.com"},{"name":"yonatan.kra","email":"yonatan.kra@vonage.com"},{"name":"v-kpheng","email":"Kongpheng.Nanthavongsa@vonage.com"},{"name":"vgai-dev","email":"vgai-studio-developers@vonage.com"},{"name":"nitzanhardon","email":"nitzan.hardon@vonage.com"},{"name":"eportolanvonage","email":"enrico.portolan@vonage.com"},{"name":"web-il","email":"web-il@vonage.com"},{"name":"iceberg-team","email":"icebergteam@vonage.com"},{"name":"yinon","email":"yinon.oved@vonage.com"},{"name":"unified_portal","email":"unified_portal_dev@vonage.com"},{"name":"vreporter-npm","email":"vreporter-support@vonage.com"},{"name":"vbcbe","email":"vbc-be@vonage.com"},{"name":"voxip_team","email":"guy.mininberg@vonage.com"},{"name":"gunifydevops","email":"gunifydevops@vonage.com"},{"name":"yuri.guller","email":"gullerya@gmail.com"},{"name":"idanvon","email":"idan.cohen@vonage.com"},{"name":"nexmo-devrel","email":"devrel@vonage.com"},{"name":"vvd","email":"vivid@vonage.com"},{"name":"vonagemeetings","email":"VBC-Meetings@vonage.com"},{"name":"tweinfeld","email":"talw@webwise.co.il"},{"name":"vonage-jenkins","email":"video.api.ops@vonage.com"},{"name":"maikthomas","email":"michaelgeorge.thomas@vonage.com"},{"name":"germangol","email":"german.goldenstein@gmail.com"},{"name":"ashwinvprabhu","email":"ashwin.venkateshprabhu@vonage.com"},{"name":"arivonage","email":"ari.ades@vonage.com"}],"homepage":"https://github.com/nexmo-se/real-time-stats-video#readme","bugs":{"url":"https://github.com/nexmo-se/real-time-stats-video/issues"},"dist":{"shasum":"752d28c593af76c29e854effbed0b2a5b20b9fe3","tarball":"https://registry.npmjs.org/@vonage/video-realtime-stats/-/video-realtime-stats-0.1.2.tgz","fileCount":19,"integrity":"sha512-6oaYGtvK4dhST3kHV9tw6D4mGuu9OGYUrZ0hAWQ4vvgSy9F2g61dp8Gxwywtbwqvsqc+f3yVr3pKw9/Lv6FtMw==","signatures":[{"sig":"MEUCIQD0425GNBkdEutvAg6MARS5yAuPh0JSnXhOpAjbwXElogIgMFvwtj4fTcEEnCwGbFvFtcIJLo+AxsUOxlO3A1dtgk0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":104680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitZd3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq6HQ/9FITpZKYCBBpimEDUu7EwVrI/U2fSjOA4dyujJgtKcOxzp4X8\r\n0ijg8zpZsuSTpLDowkhBzckTb11QMj5+wQ6faO29oFlKpjThOjbKYNiuhIIJ\r\n5XEXwcS6SWooQMU4KCgtMMpzMQjh7l/LajJl3MDSon3cUb3t1YNpX5E2ENGd\r\nKOtUBxtd0MJBkZMpPefXBLJTtAaSNcFe6esZrFtJyH9NW3Wl5OdtCxDf7XjU\r\nSGyvNwyFFbKInug580uvuUYvFRukdXg94Q7M7gnsIBV8D+iRTAOHJLuyr7Ot\r\nqqsUHrAYNHxXlh6CSo9Q0O263FLbdVnXMVIqaWwL0sS3OthzF7Xc5Ww/D7UW\r\nTafwdTD9f+Irc5Znn0Agv+WlZ81Cnm4nbmGlyABYCDYHlyu1q7exWOA6Q8xR\r\nDgV/HQBv6Eq9TZSwhqQLiMnioB8NsQi+qywwOvAWCXgvG0fk/+FLSbUGTOJ8\r\nzrUnhU7M5C67eYsvUmClzybzPWLgqpjxLMEkdScvdhf7Bz0duTrDvHv8UXsY\r\nGR+j9PjkHMgc0vhcPx32qvVshP0iMbQRdMnUGT+GJ/U/bCguEU0WWDINra5h\r\nGn2xuRHvG+6HXzkb+44smEMQHTiA8fXNsptLwRgUaoEPRVBuRh1TXDFi1VGq\r\neEZm1H8b80w2emcn8i8/bT0j4lsrprdGP0U=\r\n=hudj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=14"},"gitHead":"4a1cd31bf3dfd184cc3861f85e97b70a483f7c04","scripts":{"lint":"tslint -c ./tslint.json --project ./tsconfig.json -t stylish","build":"tsc","clean":"rimraf dist","watch":"npm run build && nodemon","prepare":"npm run clean && npm run build && npm run build-umd-prod","prelease":"npm version prerelease --preid=rc2","build-umd":"webpack && npm run copy:library-to-sample-app","build-umd-prod":"NODE_ENV=production webpack","copy:library-to-sample-app":"mkdir -p ./sample-app/library/ && cp -r ./dist/umd/* ./sample-app/library/"},"_npmUser":{"name":"javiermolsanz","email":"javier.molinasanz@vonage.com"},"repository":{"url":"git+https://github.com/nexmo-se/real-time-stats-video.git"},"_npmVersion":"6.14.14","description":"Library to add real-time stats to your Vonage Video application","directories":{},"_nodeVersion":"14.17.5","dependencies":{"events":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","tsify":"^5.0.4","rimraf":"^3.0.2","tslint":"^6.1.3","nodemon":"^2.0.13","ts-node":"^10.3.0","webpack":"^5.33.2","ts-loader":"^9.0.0","typescript":"^4.4.4","webpack-cli":"^4.7.2"},"_npmOperationalInternal":{"tmp":"tmp/video-realtime-stats_0.1.2_1656067959827_0.5026210239410256","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"@vonage/video-realtime-stats","version":"0.1.3","author":{"name":"Javier Molina"},"license":"MIT","_id":"@vonage/video-realtime-stats@0.1.3","maintainers":[{"name":"javiermolsanz","email":"javier.molinasanz@vonage.com"},{"name":"agus-vonage","email":"agus.barra@vonage.com"},{"name":"yonatan.kra","email":"yonatan.kra@vonage.com"},{"name":"v-kpheng","email":"Kongpheng.Nanthavongsa@vonage.com"},{"name":"vgai-dev","email":"vgai-studio-developers@vonage.com"},{"name":"nitzanhardon","email":"nitzan.hardon@vonage.com"},{"name":"eportolanvonage","email":"enrico.portolan@vonage.com"},{"name":"web-il","email":"web-il@vonage.com"},{"name":"iceberg-team","email":"icebergteam@vonage.com"},{"name":"yinon","email":"yinon.oved@vonage.com"},{"name":"unified_portal","email":"unified_portal_dev@vonage.com"},{"name":"vreporter-npm","email":"vreporter-support@vonage.com"},{"name":"vbcbe","email":"vbc-be@vonage.com"},{"name":"voxip_team","email":"guy.mininberg@vonage.com"},{"name":"gunifydevops","email":"gunifydevops@vonage.com"},{"name":"yuri.guller","email":"gullerya@gmail.com"},{"name":"idanvon","email":"idan.cohen@vonage.com"},{"name":"nexmo-devrel","email":"devrel@vonage.com"},{"name":"vvd","email":"vivid@vonage.com"},{"name":"vonagemeetings","email":"VBC-Meetings@vonage.com"},{"name":"tweinfeld","email":"talw@webwise.co.il"},{"name":"vonage-jenkins","email":"video.api.ops@vonage.com"},{"name":"maikthomas","email":"michaelgeorge.thomas@vonage.com"},{"name":"germangol","email":"german.goldenstein@gmail.com"},{"name":"ashwinvprabhu","email":"ashwin.venkateshprabhu@vonage.com"},{"name":"arivonage","email":"ari.ades@vonage.com"}],"homepage":"https://github.com/nexmo-se/real-time-stats-video#readme","bugs":{"url":"https://github.com/nexmo-se/real-time-stats-video/issues"},"dist":{"shasum":"dcb5d3d8d35d419705e929090d81e287d8c7f08e","tarball":"https://registry.npmjs.org/@vonage/video-realtime-stats/-/video-realtime-stats-0.1.3.tgz","fileCount":19,"integrity":"sha512-aU6eNFYsyD9az8XNCc47hFk9SYaZAs26X3X9cMqgjHkSy+2gthMiEe6q8PYf5hjCQtZcXIqxrZPauPPmfzP9Pg==","signatures":[{"sig":"MEUCIQC0G1V74k0dRt3m0da2NMmrLVpaIQiwL1sZaUMQpT/wNQIgLATC+7Z6cADpc70SqqW4U+KHFJcD1xi6lbrUUV0uYtI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJitZlIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqBFBAAjspsxYhIMab8aXxpOmYKrYNxoc4gled4AJyZaU7IAFFBtVcB\r\nxUL1a7r1Lx1Mg9IXU6xcF+VQbrUoQp/oYOCeR3VCjQszXtrpbbAmaVwlmrA2\r\nvOQ0xdRxjUpmuyM9kaziAa40w7w6mkqmWO5d1ADl4FRjGmxWTz04DchpkcBX\r\notSsImUv8PYpl6OQjdJ2Ny9bEPwKLwfGiScP1dvlrt7cxWaxsH2/aEi9SYnk\r\nlphLLrq+dIVAlcNLFvLhlPANB3k3XMOmPwJ6neg5zsyvWGecqonz3KLGfHUi\r\n0C/3zhtlRuMKyamauNu746hsi8rGMYsXlIoivDE67k+tqKqLJqmiqhGXcGVf\r\nv1yNLTM8MbbvjnqYXxqmLFSFgYZMpLAA4F2h1d1SxpHW5xFVBnSvKu6AcGVy\r\nNeS1G29gkLx0oSQqSR8lgFfzoyqbEprMwN3TgcS0WUIrZqLU49rZpLPmUo2e\r\nRRVuND2+iHaSjfH4zAhjFjoVuKi8+pd16vEEvw94k66RsSHNlUhqK7ps9m3H\r\nFpM/yVGQr7ASHMBEacwzMkp5BQOK77p8unvFAokRAZP1tayTEOSzRLLamSQv\r\nfex/GFISdYaIP1WI6kzhbyYSzPIUEB76EC++jTFFIZSDCYGg0DXblfDfdZgb\r\nMcmL1zM/xDv4mLhBCgVfI07hWn+DIQPWK0s=\r\n=4gi6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=14"},"gitHead":"79f9160dba859657ed82cca9a2b3fde6ad767b48","scripts":{"lint":"tslint -c ./tslint.json --project ./tsconfig.json -t stylish","build":"tsc","clean":"rimraf dist","watch":"npm run build && nodemon","prepare":"npm run clean && npm run build && npm run build-umd-prod","prelease":"npm version prerelease --preid=rc2","build-umd":"webpack && npm run copy:library-to-sample-app","build-umd-prod":"NODE_ENV=production webpack","copy:library-to-sample-app":"mkdir -p ./sample-app/library/ && cp -r ./dist/umd/* ./sample-app/library/"},"_npmUser":{"name":"javiermolsanz","email":"javier.molinasanz@vonage.com"},"repository":{"url":"git+https://github.com/nexmo-se/real-time-stats-video.git"},"_npmVersion":"6.14.14","description":"Library to add real-time stats to your Vonage Video application","directories":{},"_nodeVersion":"14.17.5","dependencies":{"events":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsdx":"^0.14.1","tsify":"^5.0.4","rimraf":"^3.0.2","tslint":"^6.1.3","nodemon":"^2.0.13","ts-node":"^10.3.0","webpack":"^5.33.2","ts-loader":"^9.0.0","typescript":"^4.4.4","webpack-cli":"^4.7.2"},"_npmOperationalInternal":{"tmp":"tmp/video-realtime-stats_0.1.3_1656068424544_0.7407333970180576","host":"s3://npm-registry-packages"}}},"time":{"created":"2022-06-23T12:00:45.801Z","modified":"2026-09-03T04:38:34.342Z","0.1.0":"2022-06-23T12:00:45.968Z","0.1.1":"2022-06-23T13:42:45.318Z","0.1.2":"2022-06-24T10:52:39.970Z","0.1.3":"2022-06-24T11:00:24.764Z"},"bugs":{"url":"https://github.com/nexmo-se/real-time-stats-video/issues"},"author":{"name":"Javier Molina"},"license":"MIT","homepage":"https://github.com/nexmo-se/real-time-stats-video#readme","repository":{"url":"git+https://github.com/nexmo-se/real-time-stats-video.git"},"description":"Library to add real-time stats to your Vonage Video application","maintainers":[{"email":"web-il@vonage.com","name":"web-il"},{"email":"icebergteam@vonage.com","name":"iceberg-team"},{"email":"unified_portal_dev@vonage.com","name":"unified_portal"},{"email":"vreporter-support@vonage.com","name":"vreporter-npm"},{"email":"vbc-be@vonage.com","name":"vbcbe"},{"email":"gullerya@gmail.com","name":"yuri.guller"},{"email":"idan.cohen@vonage.com","name":"idanvon"},{"email":"devrel@vonage.com","name":"nexmo-devrel"},{"email":"vivid@vonage.com","name":"vvd"},{"email":"VBC-Meetings@vonage.com","name":"vonagemeetings"},{"email":"video.api.ops@vonage.com","name":"vonage-jenkins"},{"email":"andreina.dasilvacabral@vonage.com","name":"adasilvacabral"},{"email":"sarvesh.bisht@vonage.com","name":"sarvesh.bisht"},{"email":"vgai-studio-developers@vonage.com","name":"vgai-dev"},{"email":"vcp_webrtc@vonage.com","name":"vonage_client_media_processing"},{"email":"or.abramovich@vonage.com","name":"or.cpc"},{"email":"lily.lihovodov@vonage.com","name":"llihovodov"},{"email":"daniel.sapir@vonage.com","name":"daniel-sapir"},{"email":"Aviad.Houri@vonage.com","name":"aviadhouri.va"},{"email":"ignacio.delacruz@vonage.com","name":"idelacruz"},{"email":"frontier@vonage.com","name":"vonage-frontier"},{"email":"hila.klein@vonage.com","name":"hilakl"},{"email":"Saurabh.Kulkarni@vonage.com","name":"saurabh.vonage"},{"email":"tamir.nahum@vonage.com","name":"leppelin"},{"email":"antoni.silvestrepadros@vonage.com","name":"asilvonage"},{"email":"Gayathri.Pojula@vonage.com","name":"gpojula"},{"email":"egor.limenko@vonage.com","name":"elimenko.vonage"},{"email":"kanav.bhatia@vonage.com","name":"kanav_vonage"},{"email":"omri.zilber@vonage.com","name":"omrizilber"},{"email":"marceli.olszewski@vonage.com","name":"molszewski_v"},{"email":"sailu.vejella@vonage.com","name":"sailusha"},{"email":"ragul.palanisamy@vonage.com","name":"rpalanisamy-vonage"},{"email":"Valentyn.Bohdan@vonage.com","name":"vbohdan_vonage"},{"email":"andrew.bolles@vonage.com","name":"abolles"},{"email":"gorka.revillafernandez@vonage.com","name":"gorka.vonage"},{"email":"bharath.ps@vonage.com","name":"bharath-vonage"},{"email":"mor.tubul@vonage.com","name":"morvonage"},{"email":"ilan.aradbilavsky@vonage.com","name":"ilan.aradbilavsky.at.vonage.com"},{"email":"chuck.reeves@vonage.com","name":"vonreeves"},{"email":"avi.dantes@vonage.com","name":"avi.dantes"},{"email":"michal.galin@vonage.com","name":"mgalin"},{"email":"jakub.hajduk@vonage.com","name":"jhajduk.vonage"},{"email":"Nitsan.unger@vonage.com","name":"nitsanungerfrontier"},{"email":"vladimir.quezada@vonage.com","name":"vquezada"},{"email":"alessio.didomenico@vonage.com","name":"adidomenico"},{"email":"sathish.r@vonage.com","name":"sathishr-vonage"},{"email":"pamu.pravallika@vonage.com","name":"pravallika-pamu"},{"email":"avijit.bagdi@vonage.com","name":"abagdi"},{"email":"anuradh.lankapalli@vonage.com","name":"anuradhlankapalli"},{"email":"hen.rosenberg@vonage.com","name":"hrosenberg"},{"email":"gokul.narayanan@vonage.com","name":"gokul-vonage"},{"email":"alistair.slowe@vonage.com","name":"aslowe-vcc"},{"email":"vbc-web-cicd@vonage.com","name":"vbc-web-cicd-bot"},{"email":"marina.serranomontes@vonage.com","name":"mserranomontes"},{"email":"Ariel.Bar@vonage.com","name":"ariel12955"},{"email":"Francisco.Becerra@vonage.com","name":"franbecerra"},{"email":"Uri.Haim@vonage.com","name":"urihaim"},{"email":"manuel.veranieto@vonage.com","name":"mvera_vonage"},{"email":"mike.zhylevych@vonage.com","name":"mike.zhylevych"},{"email":"mithun.prabhu@vonage.com","name":"mprabhuvonage"},{"email":"sharad.srivastava@vonage.com","name":"sharad-srivastava2"},{"email":"lukasz.pilarski@vonage.com","name":"lucas_pilarski"},{"email":"manish.ranjan@vonage.com","name":"manish-ranjan07"},{"email":"shubham.rajput@vonage.com","name":"srajput0909"},{"email":"pablo.villenamontes@vonage.com","name":"pvillenamontes"},{"email":"diogo.simoes@vonage.com","name":"dsimoes2"},{"email":"manel.jimeno@vonage.com","name":"manel_vonage"},{"email":"joseantonio.oliveraortega@vonage.com","name":"joliveraortega"}],"readme":"# Vonage Video API - Real Time Stats\n\nThis library provides a wrapper built on top of [getRtcStatsReport API](https://tokbox.com/developer/sdks/js/reference/Publisher.html#getRtcStatsReport). The library exposes some methods and fires some events upon high packet loss or when the resolution is limited. For now, it only provides data on the publisher, but the subscribers may follow in the future.\n\n## Limitations/Known issues\n\n- The field `qualityLimitationReason` (https://developer.mozilla.org/en-US/docs/Web/API/RTCOutboundRtpStreamStats/qualityLimitationReason) does not exist on Firefox. This means that the `qualityLimited` event won't fire up in Firefox.\n\n- If you try to publish `1280X720` resolution and there are no users subscribing to your stream, the Vonage Media Server will intentionally limit the quality that you can send to avoid a waste of resources. This would trigger the `qualityLimited` event immediately. You can consider setting the `stats.on('qualityLimited', handler)` event listener only when there are more than 2 connections in the call or do a subscribers check on the callback function.\n\n`stats.on('qualityLimited', ()=> if (subscribers > 0) updateUI)`\n\n## Prerequisites\n\n- [Vonage Video API SDK](https://www.npmjs.com/package/@opentok/client)\n\n## Installation\n\n### NPM\n\nYou can install directly from npm.\n\n```\nnpm install\n```\n\nUsing this method, you can import `vonage-real-time-stats` like so:\n\n```ts\nimport * as VideoStats from '@vonage/video-realtime-stats';\n```\n\n### Script tag\n\nYou can also copy `vonage-real-time-stats.js` from the `dist/build` folder and include it directly in your web app using\na `<script>` tag.\n\n```html\n<script src=\"https://my-server-path/vonage-real-time-stats.js\"></script>\n```\n\nUsing this method, `vonage-real-time-stats.js` will set a browser global:\n\n```ts\nconst VideoNetworkQualityStats = OT.RealTimeStats;\n```\n\n### Build the library locally\n\nYou can build the library locally following these steps:\n\n1. `npm install`\n2. `npm run build-umd`\n3. `cd sample-app` and `npm install`. The app server will start on port 3000\n\n### VideoNetworkQualityStats\n\nThe VideoNetworkQualityStats initialises the library.\nThe constructor has the following options:\n\n| Option                   | Type   | Required | Description                                                                   |\n| ------------------------ | ------ | -------- | ----------------------------------------------------------------------------- |\n| intervalStats            | Number | Yes      | The interval at which get stats will be called in milleseconds (default 5000) |\n| VideoPacketLossThreshold | Number | Yes      | The threshold value for video packet loss in percentage (default 5%)          |\n\nExample:\n\n```js\nconst stats = new VideoNetworkQualityStats({\n  intervalStats: 3000,\n  VideoPacketLossThreshold: 5,\n});\n```\n\n### Methods\n\n**setPublisher**: This method sets the publisher\n\n```js\nstats.setPublisher(publisher);\n```\n\n**startStats**: This method starts the stats interval\n\n```js\nstats\n  .startStats()\n  .then(() => console.log('stats started'))\n  .catch((e) => console.log(e));\n```\n\n**stopStats**: This method stops the stats interval\n\n```js\nstats.stopStats();\n```\n\n**getCipher**: This method returns the srtp cipher used by the publisher stream\n\n```js\nstats.getCipher().then((srtpCipher) => console.log(srtpCipher));\n```\n\n**getMediaTransportType**: This method returns the connection type (TURN-tls, TURN-tcp, TURN-upd, UDP)\n\n```js\nstats\n  .getMediaTransportType()\n  .then((connectionType) => console.log(connectionType));\n```\n\n**getSimulcastLayers**: This method returns the simulcast layers used by the publisher. Simulcast is a publisher property that, in supported endpoints, allows the publisher to send several quality layers so that the media server can decide which one to forward to every subscriber depending on their network conditions. Depending on the resolution that you set when you initialise the publisher and your network conditions, you can see up to 3 different quality layers, containing the `fps`, width and height `qualityLimitationReason`, and `id` and an accumulator for the `bytesSent`. If the endpoint is non-simulcast capable or the API key does not have simulcast enabled, the publisher will only send one quality layer. This method will therefore return one single layer.\n\n```js\nconst simulcastLayers = stats.getSimulcastLayers();\nconsole.log(simulcastLayers);\n```\n\n### Events\n\n#### Events in stats\n\n**qualityLimited**: This event fires when the resolution of the publisher is limited due to bandwidth or CPU.The event contains the reason, the streamId and the current resolution of the publisher\n\n```js\nstats.on('qualityLimited', (event) => {\n  //console.log(`The quality of stream ${event.streamId} is limited due to ${event.reason}. Your current resolution is ${event.currentResolution}`)\n  //Update user interface letting the user know that the resolution they are sending is limited\n});\n```\n\n**qualityLimitedStopped**: This event fires when the resolution of the publisher is no longer limited due to bandwidth or CPU.\n\n```js\nstats.on('qualityLimitedStopped', (event) => {\n  //console.log(`The quality of stream ${event.streamId} is no longer limited due to ${event.reason}.\n  //Update user interface letting the user know that the resolution they are sending is no longer limited\n});\n```\n\n**highPacketLoss**: This event fires when the video packet loss reaches the threshold configured when initialising the stats object.\n\n```js\nstats.on('highPacketLoss', (event) => {\n  //console.log(`Packet loss over ${event.packetLossThreshold}% detected in stream ${event.streamId}`).\n  //Update user interface letting the user know that they are having packet loss\n});\n```\n\n**highPacketLossStopped**: This event fires when there was packet loss and now the packet loss value does not reach the threshold\n\n```js\nstats.on('highPacketLossStopped', (event) => {\n  //console.log(`Packet loss is now below ${event.packetLossThreshold}%  in stream ${event.streamId}`).\n  //Update user interface letting the user know that they are no longer having packet loss\n});\n```\n\n### Example\n\n```js\nconst { VideoNetworkQualityStats } = OT.RealTimeStats;\n\nconst stats = new VideoNetworkQualityStats({\n  intervalStats: 3000,\n  VideoPacketLossThreshold: 5,\n});\n\nasync function publishToSession() {\n  // Create the publisher and publish into the session\n  let publisher = OT.initPublisher(\n    'publisher',\n    {\n      width: 640,\n      height: 480,\n      publishAudio: false,\n      publishVideo: true,\n      insertMode: 'append',\n    },\n    (err) => {\n      if (err) console.error('Error publishing:', err);\n      else {\n        console.log('Publisher Created');\n      }\n    }\n  );\n  const session = OT.initSession(apikey, sessionId);\n  session.on('streamCreated', (stream) => {\n    session.subscribe(stream, (err) => {\n      if (err) console.error('Error while subscribing', err);\n      else console.log('Subscribed to ', stream);\n    });\n  });\n\n  session.connect(token, (err) => {\n    if (err) {\n      console.error('Error while connecting to the session falling', err);\n      return;\n    }\n    console.log('Session Connected');\n\n    session.publish(publisher, (errPublisher) => {\n      if (errPublisher)\n        console.error('Error while publishing into the session', errPublisher);\n      else {\n        stats.setPublisher(publisher);\n        stats\n          .startStats()\n          .then(() => {\n            stats.on('qualityLimited', (event) => {\n              //Update user interface\n              openToast(\n                'quality',\n                'The quality of your video is limited',\n                'show'\n              );\n            });\n            stats.on('qualityLimitedStopped', (event) => {\n              // Update user interface\n              openToast(\n                'quality',\n                'The quality of your video is limited',\n                'hide'\n              );\n              console.log(event);\n            });\n            stats.on('highPacketLoss', (event) => {\n              //Update user interface\n              openToast('packetLoss', 'You may face quality issues', 'show');\n            });\n            stats.on('highPacketLossStopped', (event) => {\n              //Update user interface\n              openToast('packetLoss', 'You may face quality issues', 'hide');\n            });\n\n            stats.getCipher().then((srtpCipher) => console.log(srtpCipher));\n            stats\n              .getConnectionType()\n              .then((connectionType) => console.log(connectionType));\n          })\n          .catch((e) => console.log(e));\n      }\n    });\n  });\n}\n\npublishToSession();\n```\n","readmeFilename":"README.md"}