diff --git a/package-lock.json b/package-lock.json index f1226da6..2ec73b15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,38 +1,38 @@ { "name": "ffplayout", - "version": "4.0.0", + "version": "5.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ffplayout", - "version": "4.0.0", + "version": "5.0.0", "dependencies": { "@nuxtjs/axios": "^5.13.6", "@nuxtjs/dayjs": "^1.4.1", "@nuxtjs/dotenv": "^1.4.1", "bootstrap": "^4.6.1", "bootstrap-vue": "^2.22.0", - "cookie-universal-nuxt": "^2.1.5", + "cookie-universal-nuxt": "^2.2.1", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "mpegts.js": "^1.6.10", "nuxt": "^2.15.8", "splitpanes": "^2.3.8", - "video.js": "^7.18.1", + "video.js": "^7.19.2", "vue-loading-overlay": "^3.4.2", "vue2-perfect-scrollbar": "^1.5.5", "vuedraggable": "^2.24.3" }, "devDependencies": { - "@babel/eslint-parser": "^7.17.0", - "@babel/preset-react": "^7.16.7", + "@babel/eslint-parser": "^7.18.2", + "@babel/preset-react": "^7.18.6", "@nuxtjs/eslint-config": "^5.0.0", "@nuxtjs/eslint-module": "^3.1.0", "@nuxtjs/style-resources": "^1.2.1", "eslint": "^7.32.0", "eslint-plugin-nuxt": ">=2.0.0", - "sass": "^1.51.0", + "sass": "^1.53.0", "sass-loader": "^10.2.1" } }, @@ -85,9 +85,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", - "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", + "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", "dev": true, "dependencies": { "eslint-scope": "^5.1.1", @@ -116,11 +116,11 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -277,11 +277,11 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -317,9 +317,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", + "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==", "engines": { "node": ">=6.9.0" } @@ -386,17 +386,17 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", "engines": { "node": ">=6.9.0" } @@ -815,11 +815,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1269,12 +1269,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", - "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1284,16 +1284,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", - "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz", + "integrity": "sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1303,12 +1303,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", - "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", "dev": true, "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.16.7" + "@babel/plugin-transform-react-jsx": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1318,13 +1318,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", - "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1583,17 +1583,17 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", - "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-react-display-name": "^7.16.7", - "@babel/plugin-transform-react-jsx": "^7.16.7", - "@babel/plugin-transform-react-jsx-development": "^7.16.7", - "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -1647,11 +1647,11 @@ } }, "node_modules/@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", + "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" }, "engines": { @@ -3153,16 +3153,16 @@ } }, "node_modules/@videojs/http-streaming": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-2.13.1.tgz", - "integrity": "sha512-1x3fkGSPyL0+iaS3/lTvfnPTtfqzfgG+ELQtPPtTvDwqGol9Mx3TNyZwtSTdIufBrqYRn7XybB/3QNMsyjq13A==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-2.14.2.tgz", + "integrity": "sha512-K1raSfO/pq5r8iUas3OSYni0kXOj91n8ealIpV02khghzGv9LQ6O3YUqYd/eAhJ1HIrmZWOnrYpK/P+mhUExXQ==", "dependencies": { "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "3.0.4", - "aes-decrypter": "3.1.2", + "@videojs/vhs-utils": "3.0.5", + "aes-decrypter": "3.1.3", "global": "^4.4.0", - "m3u8-parser": "4.7.0", - "mpd-parser": "0.21.0", + "m3u8-parser": "4.7.1", + "mpd-parser": "0.21.1", "mux.js": "6.0.1", "video.js": "^6 || ^7" }, @@ -3174,20 +3174,6 @@ "video.js": "^6 || ^7" } }, - "node_modules/@videojs/http-streaming/node_modules/@videojs/vhs-utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.4.tgz", - "integrity": "sha512-hui4zOj2I1kLzDgf8QDVxD3IzrwjS/43KiS8IHQO0OeeSsb4pB/lgNt1NG7Dv0wMQfCccUpMVLGcK618s890Yg==", - "dependencies": { - "@babel/runtime": "^7.12.5", - "global": "^4.4.0", - "url-toolkit": "^2.2.1" - }, - "engines": { - "node": ">=8", - "npm": ">=5" - } - }, "node_modules/@videojs/vhs-utils": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz", @@ -3586,12 +3572,12 @@ } }, "node_modules/aes-decrypter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.2.tgz", - "integrity": "sha512-42nRwfQuPRj9R1zqZBdoxnaAmnIFyDi0MNyTVhjdFOd8fifXKKRfwIHIZ6AMn1or4x5WONzjwRTbTWcsIQ0O4A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.3.tgz", + "integrity": "sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==", "dependencies": { "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.0", + "@videojs/vhs-utils": "^3.0.5", "global": "^4.4.0", "pkcs7": "^1.0.4" } @@ -5105,29 +5091,29 @@ } }, "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-universal": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/cookie-universal/-/cookie-universal-2.1.5.tgz", - "integrity": "sha512-nqOOmEkovCQxNYGIyzhcwsmh4c7xnxe7RWdiYFOoml9MP4L32IlU3LdPC7r7nQEnnM+9Uxlk/UhtvBl5is6M/w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cookie-universal/-/cookie-universal-2.2.1.tgz", + "integrity": "sha512-HMm8mNbMJ81IER5BZ3QF0wz5OA/od4jDB6agNwJjJ7oDnBnQBQwUJNeCXrYCBiCKh+ZzHDQ74D96HjUTHQHjsg==", "dependencies": { "@types/cookie": "^0.3.3", "cookie": "^0.4.0" } }, "node_modules/cookie-universal-nuxt": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/cookie-universal-nuxt/-/cookie-universal-nuxt-2.1.5.tgz", - "integrity": "sha512-P0WCTKIyemWNtHi9lxrS5cxZmieOIEjt28B7Alu6cdSB9RqtUtpkqYyV9PRK6oJrT5eIPDYjHsJQlh6SUrFJOg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cookie-universal-nuxt/-/cookie-universal-nuxt-2.2.1.tgz", + "integrity": "sha512-pzk+CsmnNgcpFPNr8GO+B3dR0d0ovjnyFMC5Trx3zNUEEplw94CoEbv+SLSjxsXCMOF21Cmq202Od0zYbkOa+g==", "dependencies": { "@types/cookie": "^0.3.3", - "cookie-universal": "^2.1.5" + "cookie-universal": "^2.2.1" } }, "node_modules/copy-concurrently": { @@ -9390,12 +9376,12 @@ } }, "node_modules/m3u8-parser": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.7.0.tgz", - "integrity": "sha512-48l/OwRyjBm+QhNNigEEcRcgbRvnUjL7rxs597HmW9QSNbyNvt+RcZ9T/d9vxi9A9z7EZrB1POtZYhdRlwYQkQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.7.1.tgz", + "integrity": "sha512-pbrQwiMiq+MmI9bl7UjtPT3AK603PV9bogNlr83uC+X9IoxqL5E4k7kU7fMQ0dpRgxgeSMygqUa0IMLQNXLBNA==", "dependencies": { "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.0", + "@videojs/vhs-utils": "^3.0.5", "global": "^4.4.0" } }, @@ -9779,12 +9765,12 @@ } }, "node_modules/mpd-parser": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.21.0.tgz", - "integrity": "sha512-NbpMJ57qQzFmfCiP1pbL7cGMbVTD0X1hqNgL0VYP1wLlZXLf/HtmvQpNkOA1AHkPVeGQng+7/jEtSvNUzV7Gdg==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.21.1.tgz", + "integrity": "sha512-BxlSXWbKE1n7eyEPBnTEkrzhS3PdmkkKdM1pgKbPnPOH0WFZIc0sPOWi7m0Uo3Wd2a4Or8Qf4ZbS7+ASqQ49fw==", "dependencies": { "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.2", + "@videojs/vhs-utils": "^3.0.5", "@xmldom/xmldom": "^0.7.2", "global": "^4.4.0" }, @@ -12830,9 +12816,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz", - "integrity": "sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -14931,19 +14917,19 @@ } }, "node_modules/video.js": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/video.js/-/video.js-7.18.1.tgz", - "integrity": "sha512-mnXdmkVcD5qQdKMZafDjqdhrnKGettZaGSVkExjACiylSB4r2Yt5W1bchsKmjFpfuNfszsMjTUnnoIWSSqoe/Q==", + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/video.js/-/video.js-7.19.2.tgz", + "integrity": "sha512-+rV/lJ1bDoMW3SbYlRp0eC9//RgvfBpEQ0USOyx44tHVxVyMjq+G9jZoiulsDXaIp4BX9q5+/y87TbZUysXBHA==", "dependencies": { "@babel/runtime": "^7.12.5", - "@videojs/http-streaming": "2.13.1", + "@videojs/http-streaming": "2.14.2", "@videojs/vhs-utils": "^3.0.4", "@videojs/xhr": "2.6.0", - "aes-decrypter": "3.1.2", + "aes-decrypter": "3.1.3", "global": "^4.4.0", "keycode": "^2.2.0", - "m3u8-parser": "4.7.0", - "mpd-parser": "0.21.0", + "m3u8-parser": "4.7.1", + "mpd-parser": "0.21.1", "mux.js": "6.0.1", "safe-json-parse": "4.0.0", "videojs-font": "3.2.0", @@ -16749,9 +16735,9 @@ } }, "@babel/eslint-parser": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.17.0.tgz", - "integrity": "sha512-PUEJ7ZBXbRkbq3qqM/jZ2nIuakUBqCYc7Qf52Lj7dlZ6zERnqisdHioL0l4wwQZnmskMeasqUNzLBFKs3nylXA==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz", + "integrity": "sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==", "dev": true, "requires": { "eslint-scope": "^5.1.1", @@ -16770,11 +16756,11 @@ } }, "@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -16886,11 +16872,11 @@ } }, "@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.18.6" } }, "@babel/helper-module-transforms": { @@ -16917,9 +16903,9 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz", + "integrity": "sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg==" }, "@babel/helper-remap-async-to-generator": { "version": "7.16.8", @@ -16968,14 +16954,14 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==" }, "@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" }, "@babel/helper-wrap-function": { "version": "7.16.8", @@ -17241,11 +17227,11 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", - "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -17521,44 +17507,44 @@ } }, "@babel/plugin-transform-react-display-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", - "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz", - "integrity": "sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz", + "integrity": "sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-jsx": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.18.6" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", - "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", "dev": true, "requires": { - "@babel/plugin-transform-react-jsx": "^7.16.7" + "@babel/plugin-transform-react-jsx": "^7.18.6" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", - "integrity": "sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" } }, "@babel/plugin-transform-regenerator": { @@ -17742,17 +17728,17 @@ } }, "@babel/preset-react": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.16.7.tgz", - "integrity": "sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==", + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-transform-react-display-name": "^7.16.7", - "@babel/plugin-transform-react-jsx": "^7.16.7", - "@babel/plugin-transform-react-jsx-development": "^7.16.7", - "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" } }, "@babel/runtime": { @@ -17791,11 +17777,11 @@ } }, "@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "version": "7.18.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", + "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-validator-identifier": "^7.18.6", "to-fast-properties": "^2.0.0" } }, @@ -19006,30 +18992,18 @@ } }, "@videojs/http-streaming": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-2.13.1.tgz", - "integrity": "sha512-1x3fkGSPyL0+iaS3/lTvfnPTtfqzfgG+ELQtPPtTvDwqGol9Mx3TNyZwtSTdIufBrqYRn7XybB/3QNMsyjq13A==", + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-2.14.2.tgz", + "integrity": "sha512-K1raSfO/pq5r8iUas3OSYni0kXOj91n8ealIpV02khghzGv9LQ6O3YUqYd/eAhJ1HIrmZWOnrYpK/P+mhUExXQ==", "requires": { "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "3.0.4", - "aes-decrypter": "3.1.2", + "@videojs/vhs-utils": "3.0.5", + "aes-decrypter": "3.1.3", "global": "^4.4.0", - "m3u8-parser": "4.7.0", - "mpd-parser": "0.21.0", + "m3u8-parser": "4.7.1", + "mpd-parser": "0.21.1", "mux.js": "6.0.1", "video.js": "^6 || ^7" - }, - "dependencies": { - "@videojs/vhs-utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.4.tgz", - "integrity": "sha512-hui4zOj2I1kLzDgf8QDVxD3IzrwjS/43KiS8IHQO0OeeSsb4pB/lgNt1NG7Dv0wMQfCccUpMVLGcK618s890Yg==", - "requires": { - "@babel/runtime": "^7.12.5", - "global": "^4.4.0", - "url-toolkit": "^2.2.1" - } - } } }, "@videojs/vhs-utils": { @@ -19382,12 +19356,12 @@ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" }, "aes-decrypter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.2.tgz", - "integrity": "sha512-42nRwfQuPRj9R1zqZBdoxnaAmnIFyDi0MNyTVhjdFOd8fifXKKRfwIHIZ6AMn1or4x5WONzjwRTbTWcsIQ0O4A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.3.tgz", + "integrity": "sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==", "requires": { "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.0", + "@videojs/vhs-utils": "^3.0.5", "global": "^4.4.0", "pkcs7": "^1.0.4" } @@ -20559,26 +20533,26 @@ } }, "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" }, "cookie-universal": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/cookie-universal/-/cookie-universal-2.1.5.tgz", - "integrity": "sha512-nqOOmEkovCQxNYGIyzhcwsmh4c7xnxe7RWdiYFOoml9MP4L32IlU3LdPC7r7nQEnnM+9Uxlk/UhtvBl5is6M/w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cookie-universal/-/cookie-universal-2.2.1.tgz", + "integrity": "sha512-HMm8mNbMJ81IER5BZ3QF0wz5OA/od4jDB6agNwJjJ7oDnBnQBQwUJNeCXrYCBiCKh+ZzHDQ74D96HjUTHQHjsg==", "requires": { "@types/cookie": "^0.3.3", "cookie": "^0.4.0" } }, "cookie-universal-nuxt": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/cookie-universal-nuxt/-/cookie-universal-nuxt-2.1.5.tgz", - "integrity": "sha512-P0WCTKIyemWNtHi9lxrS5cxZmieOIEjt28B7Alu6cdSB9RqtUtpkqYyV9PRK6oJrT5eIPDYjHsJQlh6SUrFJOg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cookie-universal-nuxt/-/cookie-universal-nuxt-2.2.1.tgz", + "integrity": "sha512-pzk+CsmnNgcpFPNr8GO+B3dR0d0ovjnyFMC5Trx3zNUEEplw94CoEbv+SLSjxsXCMOF21Cmq202Od0zYbkOa+g==", "requires": { "@types/cookie": "^0.3.3", - "cookie-universal": "^2.1.5" + "cookie-universal": "^2.2.1" } }, "copy-concurrently": { @@ -23801,12 +23775,12 @@ } }, "m3u8-parser": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.7.0.tgz", - "integrity": "sha512-48l/OwRyjBm+QhNNigEEcRcgbRvnUjL7rxs597HmW9QSNbyNvt+RcZ9T/d9vxi9A9z7EZrB1POtZYhdRlwYQkQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.7.1.tgz", + "integrity": "sha512-pbrQwiMiq+MmI9bl7UjtPT3AK603PV9bogNlr83uC+X9IoxqL5E4k7kU7fMQ0dpRgxgeSMygqUa0IMLQNXLBNA==", "requires": { "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.0", + "@videojs/vhs-utils": "^3.0.5", "global": "^4.4.0" } }, @@ -24114,12 +24088,12 @@ } }, "mpd-parser": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.21.0.tgz", - "integrity": "sha512-NbpMJ57qQzFmfCiP1pbL7cGMbVTD0X1hqNgL0VYP1wLlZXLf/HtmvQpNkOA1AHkPVeGQng+7/jEtSvNUzV7Gdg==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.21.1.tgz", + "integrity": "sha512-BxlSXWbKE1n7eyEPBnTEkrzhS3PdmkkKdM1pgKbPnPOH0WFZIc0sPOWi7m0Uo3Wd2a4Or8Qf4ZbS7+ASqQ49fw==", "requires": { "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.2", + "@videojs/vhs-utils": "^3.0.5", "@xmldom/xmldom": "^0.7.2", "global": "^4.4.0" } @@ -26538,9 +26512,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz", - "integrity": "sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==", + "version": "1.53.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", + "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -28171,19 +28145,19 @@ "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==" }, "video.js": { - "version": "7.18.1", - "resolved": "https://registry.npmjs.org/video.js/-/video.js-7.18.1.tgz", - "integrity": "sha512-mnXdmkVcD5qQdKMZafDjqdhrnKGettZaGSVkExjACiylSB4r2Yt5W1bchsKmjFpfuNfszsMjTUnnoIWSSqoe/Q==", + "version": "7.19.2", + "resolved": "https://registry.npmjs.org/video.js/-/video.js-7.19.2.tgz", + "integrity": "sha512-+rV/lJ1bDoMW3SbYlRp0eC9//RgvfBpEQ0USOyx44tHVxVyMjq+G9jZoiulsDXaIp4BX9q5+/y87TbZUysXBHA==", "requires": { "@babel/runtime": "^7.12.5", - "@videojs/http-streaming": "2.13.1", + "@videojs/http-streaming": "2.14.2", "@videojs/vhs-utils": "^3.0.4", "@videojs/xhr": "2.6.0", - "aes-decrypter": "3.1.2", + "aes-decrypter": "3.1.3", "global": "^4.4.0", "keycode": "^2.2.0", - "m3u8-parser": "4.7.0", - "mpd-parser": "0.21.0", + "m3u8-parser": "4.7.1", + "mpd-parser": "0.21.1", "mux.js": "6.0.1", "safe-json-parse": "4.0.0", "videojs-font": "3.2.0", diff --git a/package.json b/package.json index 42ff15f6..592d47ac 100644 --- a/package.json +++ b/package.json @@ -17,26 +17,26 @@ "@nuxtjs/dotenv": "^1.4.1", "bootstrap": "^4.6.1", "bootstrap-vue": "^2.22.0", - "cookie-universal-nuxt": "^2.1.5", + "cookie-universal-nuxt": "^2.2.1", "jwt-decode": "^3.1.2", "lodash": "^4.17.21", "mpegts.js": "^1.6.10", "nuxt": "^2.15.8", "splitpanes": "^2.3.8", - "video.js": "^7.18.1", + "video.js": "^7.19.2", "vue-loading-overlay": "^3.4.2", "vue2-perfect-scrollbar": "^1.5.5", "vuedraggable": "^2.24.3" }, "devDependencies": { - "@babel/eslint-parser": "^7.17.0", - "@babel/preset-react": "^7.16.7", + "@babel/eslint-parser": "^7.18.2", + "@babel/preset-react": "^7.18.6", "@nuxtjs/eslint-config": "^5.0.0", "@nuxtjs/eslint-module": "^3.1.0", "@nuxtjs/style-resources": "^1.2.1", "eslint": "^7.32.0", "eslint-plugin-nuxt": ">=2.0.0", - "sass": "^1.51.0", + "sass": "^1.53.0", "sass-loader": "^10.2.1" } } diff --git a/pages/configure.vue b/pages/configure.vue index 92ed7b72..cc8324dd 100644 --- a/pages/configure.vue +++ b/pages/configure.vue @@ -184,19 +184,11 @@ - - - - +
- - -
-
-
-

ffplayout

-

- {{ stat.system }}
- {{ stat.node }}
- {{ stat.machine }} -

-
-
-
- -
-
- CPU -
-
-
-
- Usage: {{ stat.cpu_usage }}%
- Load: {{ stat.cpu_load[0] }} {{ stat.cpu_load[1] }} {{ stat.cpu_load[2] }} -
-
-
-
-
- -
-
- RAM -
-
-
-
- Total: {{ stat.ram_total[1] }}
- Used: {{ stat.ram_used[1] }}
- Free: {{ stat.ram_free[1] }}
- Cached: {{ stat.ram_cached[1] }} -
-
-
-
-
- -
-
- SWAP -
-
-
-
- Total: {{ stat.swap_total[1] }}
- Used: {{ stat.swap_used[1] }}
- Free: {{ stat.swap_free[1] }} -
-
-
-
-
- -
-
- DISK -
-
-
-
- Total: {{ stat.disk_total[1] }}
- Used: {{ stat.disk_used[1] }}
- Free: {{ stat.disk_free[1] }} -
-
-
-
-
- -
-
- NET -
-
-
-
- Download: {{ stat.net_speed_recv[1] }}/s
- Upload: {{ stat.net_speed_send[1] }}/s
- Downloaded: {{ stat.net_recv[1] }}
- Uploaded: {{ stat.net_send[1] }}
- Recived Errors: {{ stat.net_errin }}
- Sended Errors: {{ stat.net_errout }} -
-
-
-
-
-
- +
+ +
@@ -183,7 +91,6 @@ export default { methods: { async init () { await this.$store.dispatch('auth/inspectToken') - this.checkLogin() }, async login () { try { @@ -195,12 +102,11 @@ export default { this.formPassword = '' this.formError = null - if (status === 401) { + if (status === 401 || status === 400) { this.formError = 'Wrong user or password!' this.showError = true } - this.checkLogin() await this.$store.dispatch('config/nuxtClientInit') } catch (e) { this.formError = e.message @@ -215,31 +121,6 @@ export default { } catch (e) { this.formError = e.message } - }, - checkLogin () { - if (this.$store.state.auth.isLogin) { - this.sysStats() - } - }, - - async sysStats () { - const response = await this.$axios.get('api/player/stats/?stats=all') - - if (!response.data) { - this.$router.push('/configure') - } - this.stat = response.data - - if (process.browser && !this.interval) { - this.interval = setInterval(async () => { - if (this.$store.state.auth.isLogin && this.$route.path === '/') { - const response = await this.$axios.get('api/player/stats/?stats=all') - this.stat = response.data - } else { - clearInterval(this.interval) - } - }, 2000) - } } } } @@ -258,6 +139,12 @@ export default { margin-bottom: 3em; } +.logo-div { + width: 100%; + text-align: center; + margin-bottom: 5em; +} + .login-form { min-width: 300px; } diff --git a/pages/logging.vue b/pages/logging.vue index a7781899..d2ab9b36 100644 --- a/pages/logging.vue +++ b/pages/logging.vue @@ -81,11 +81,17 @@ export default { methods: { async getLog () { - const response = await this.$axios.get( - `api/player/log/?date=${this.listDate}&channel=${this.$store.state.config.configGui[this.$store.state.config.configID].id}`) + let date = this.listDate - if (response.data.log) { - this.currentLog = response.data.log + if (date === this.$dayjs().tz(this.timezone).format('YYYY-MM-DD')) { + date = '' + } + + const response = await this.$axios.get( + `api/log/${this.$store.state.config.configGui[this.$store.state.config.configID].id}/${date}`) + + if (response.data) { + this.currentLog = response.data } else { this.currentLog = '' } diff --git a/pages/media.vue b/pages/media.vue index 8699e0bd..608e3ea4 100644 --- a/pages/media.vue +++ b/pages/media.vue @@ -14,7 +14,7 @@
-
+
@@ -43,12 +43,12 @@ - + {{ folder }} - + @@ -70,8 +70,8 @@ @@ -79,10 +79,10 @@ - {{ file.file }} + {{ file }} - + @@ -90,12 +90,12 @@ {{ file.duration | toMin }} - + - + diff --git a/pages/message.vue b/pages/message.vue index 02c93704..02711139 100644 --- a/pages/message.vue +++ b/pages/message.vue @@ -99,21 +99,6 @@ /> - - - - - @@ -138,21 +123,6 @@ /> - - - - - { - if (res.status === 201 || res.status === 200) { - store.commit('auth/UPADTE_TOKEN', { token: res.data.access }) - originalRequest.headers.Authorization = `Bearer ${res.data.access}` - return $axios(originalRequest) - } - }) - .catch((error) => { - if (error.response.status === 401) { - store.commit('auth/REMOVE_TOKEN') - store.commit('auth/UPDATE_IS_LOGIN', false) - redirect('/') - return Promise.reject(error) - } - }) + + store.commit('auth/REMOVE_TOKEN') + store.commit('auth/UPDATE_IS_LOGIN', false) + redirect('/') } return Promise.reject(error) }) diff --git a/static/images/ffplayout.png b/static/images/ffplayout.png new file mode 100644 index 00000000..549c4298 Binary files /dev/null and b/static/images/ffplayout.png differ diff --git a/store/auth.js b/store/auth.js index dbbd16b2..8cdd101e 100644 --- a/store/auth.js +++ b/store/auth.js @@ -3,37 +3,25 @@ import jwt_decode from 'jwt-decode' export const state = () => ({ jwtToken: '', - jwtRefresh: '', isLogin: false }) // mutate values in state export const mutations = { - UPADTE_TOKEN (state, obj) { + UPDATE_TOKEN (state, obj) { state.jwtToken = obj.token this.$cookies.set('token', obj.token, { path: '/', maxAge: 60 * 60 * 24 * 365, sameSite: 'lax' }) - - if (obj.refresh) { - state.jwtRefresh = obj.refresh - this.$cookies.set('refresh', obj.refresh, { - path: '/', - maxAge: 60 * 60 * 24 * 365, - sameSite: 'lax' - }) - } }, UPDATE_IS_LOGIN (state, bool) { state.isLogin = bool }, REMOVE_TOKEN (state) { this.$cookies.remove('token') - this.$cookies.remove('refresh') state.jwtToken = null - state.jwtRefresh = null } } @@ -44,9 +32,9 @@ export const actions = { password } let code = null - await this.$axios.post('auth/token/', payload) + await this.$axios.post('auth/login/', payload) .then((response) => { - commit('UPADTE_TOKEN', { token: response.data.access, refresh: response.data.refresh }) + commit('UPDATE_TOKEN', { token: response.data.user.token }) commit('UPDATE_IS_LOGIN', true) code = response.status }) @@ -56,43 +44,18 @@ export const actions = { return code }, - async refreshToken ({ commit, state }) { - const payload = { - refresh: state.jwtRefresh, - progress: false - } - await this.$axios.post('auth/token/refresh/', payload) - .then((response) => { - commit('UPADTE_TOKEN', { token: response.data.access }) - commit('UPDATE_IS_LOGIN', true) - }) - .catch((error) => { - if (error.response.status === 401) { - commit('REMOVE_TOKEN') - commit('UPDATE_IS_LOGIN', false) - } - }) - }, - - async inspectToken ({ commit, dispatch, state }) { + inspectToken ({ commit, dispatch, state }) { const token = this.$cookies.get('token') - const refresh = this.$cookies.get('refresh') - if (token && refresh) { - commit('UPADTE_TOKEN', { token, refresh }) + if (token) { + commit('UPDATE_TOKEN', { token }) const decoded_token = jwt_decode(token) - const decoded_refresh = jwt_decode(refresh) const timestamp = Date.now() / 1000 const expire_token = decoded_token.exp - const expire_refresh = decoded_refresh.exp if (state.jwtToken && expire_token - timestamp > 15) { - // DO NOTHING, DO NOT REFRESH commit('UPDATE_IS_LOGIN', true) - } else if (!state.jwtToken || expire_refresh - timestamp > 0) { - commit('UPADTE_TOKEN', { token, refresh }) - await dispatch('refreshToken') } else { // PROMPT USER TO RE-LOGIN, THIS ELSE CLAUSE COVERS THE CONDITION WHERE A TOKEN IS EXPIRED AS WELL commit('UPDATE_IS_LOGIN', false) diff --git a/store/config.js b/store/config.js index f2550dce..3fb1e044 100644 --- a/store/config.js +++ b/store/config.js @@ -5,7 +5,6 @@ export const state = () => ({ configCount: 0, configGui: null, configGuiRaw: null, - netChoices: [], startInSec: 0, playlistLength: 86400.0, configPlayout: {}, @@ -28,9 +27,6 @@ export const mutations = { UPDATE_GUI_CONFIG_RAW (state, config) { state.configGuiRaw = config }, - UPDATE_NET_CHOICES (state, list) { - state.netChoices = list - }, UPDATE_START_TIME (state, sec) { state.startInSec = sec }, @@ -48,9 +44,6 @@ export const mutations = { }, UPDATE_TIMEZONE (state, zone) { state.timezone = zone - }, - UPDATE_MULTI_CHANNEL (state, bool) { - state.multiChannel = bool } } @@ -58,38 +51,16 @@ export const actions = { async nuxtClientInit ({ commit, dispatch, rootState }) { await dispatch('auth/inspectToken', null, { root: true }) if (rootState.auth.isLogin) { - await dispatch('getTimezone') await dispatch('getGuiConfig') await dispatch('getPlayoutConfig') await dispatch('getUserConfig') } }, - async getTimezone ({ commit, state }) { - const response = await this.$axios.get('api/player/stats/?stats=settings') + async getGuiConfig ({ commit, state }) { + const response = await this.$axios.get('api/settings') if (response.data) { - commit('UPDATE_TIMEZONE', response.data.timezone) - commit('UPDATE_MULTI_CHANNEL', response.data.multi_channel) - } else { - commit('UPDATE_TIMEZONE', this.$dayjs.tz.guess()) - } - }, - - async getGuiConfig ({ commit, state }) { - const options = await this.$axios.options('api/player/guisettings/') - const response = await this.$axios.get('api/player/guisettings/') - - if (options.data) { - const choices = options.data.actions.POST.net_interface.choices.map(function (obj) { - obj.text = obj.display_name - delete obj.display_name - return obj - }) - commit('UPDATE_NET_CHOICES', choices) - } - - if (response.data && response.data[0]) { for (const data of response.data) { if (data.extra_extensions) { data.extra_extensions = data.extra_extensions.split(',') @@ -98,6 +69,7 @@ export const actions = { } } + commit('UPDATE_TIMEZONE', response.data.timezone) commit('UPDATE_GUI_CONFIG', response.data) commit('UPDATE_GUI_CONFIG_RAW', _.cloneDeep(response.data)) commit('UPDATE_CONFIG_COUNT', response.data.length) @@ -105,10 +77,8 @@ export const actions = { commit('UPDATE_GUI_CONFIG', [{ id: 1, channel: '', - player_url: '', + preview_url: '', playout_config: '', - net_interface: '', - media_disk: '', extra_extensions: [] }]) } @@ -146,7 +116,7 @@ export const actions = { async getPlayoutConfig ({ commit, state, rootState }) { const channel = state.configGui[state.configID].id - const response = await this.$axios.get(`api/player/config/?configPlayout&channel=${channel}`) + const response = await this.$axios.get(`api/playout/config/${channel}`) if (response.data) { if (response.data.playlist.day_start) { @@ -165,27 +135,24 @@ export const actions = { }, async setPlayoutConfig ({ commit, state }, obj) { - const update = await this.$axios.post('api/player/config/?configPlayout', { - data: obj, - channel: state.configGui[state.configID].id - }) + const channel = state.configGui[state.configID].id + const update = await this.$axios.put(`api/playout/config/${channel}`, obj) return update }, async getUserConfig ({ commit, state }) { - const user = await this.$axios.get('api/player/user/current/') - const response = await this.$axios.get(`api/player/user/users/?username=${user.data.username}`) + const user = await this.$axios.get('api/user') if (user.data) { commit('SET_CURRENT_USER', user.data.username) } - if (response.data) { - commit('UPDATE_USER_CONFIG', response.data[0]) + if (user.data) { + commit('UPDATE_USER_CONFIG', user.data) } }, async setUserConfig ({ commit, state }, obj) { - const update = await this.$axios.put(`api/player/user/users/${obj.id}/`, obj) + const update = await this.$axios.put(`api/user/${obj.id}`, obj) return update } } diff --git a/store/media.js b/store/media.js index c3ee4ed3..a05b1ea0 100644 --- a/store/media.js +++ b/store/media.js @@ -21,25 +21,24 @@ export const actions = { const crumbs = [] let root = '/' const channel = rootState.config.configGui[rootState.config.configID].id - const response = await this.$axios.get( - `api/player/media/?extensions=${extensions}&channel=${channel}&path=${path}`) + const response = await this.$axios.post( + `api/file/${channel}/browse/`, { source: path }) - if (response.data.tree) { - const pathArr = response.data.tree[0].split('/') - - if (response.data.tree[1].length === 0) { - response.data.tree[1].push(pathArr[pathArr.length - 1]) - } + if (response.data) { + const pathStr = 'Home/' + response.data.source + const pathArr = pathStr.split('/') if (path) { for (const crumb of pathArr) { - if (crumb) { + if (crumb === 'Home') { + crumbs.push({ text: crumb, path: root }) + } else if (crumb) { root += crumb + '/' crumbs.push({ text: crumb, path: root }) } } } else { - crumbs.push({ text: pathArr[pathArr.length - 1], path: '' }) + crumbs.push({ text: 'Home', path: '' }) } commit('UPDATE_CURRENT_PATH', path)