diff --git a/.env.example b/.env.example index 03bbbe1..c23686c 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,3 @@ DATABASE_URL=postgresql://:@localhost:5432/ TOKENTERMINAL_API_KEY= +LIVEPEER_COM_API_KEY= \ No newline at end of file diff --git a/.eslintignore b/.eslintignore index 1380c2e..2c64347 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ node_modules -.next \ No newline at end of file +.next +*.css \ No newline at end of file diff --git a/.eslintrc b/.eslintrc index 7fd2d76..776f711 100644 --- a/.eslintrc +++ b/.eslintrc @@ -25,6 +25,7 @@ "@typescript-eslint/explicit-function-return-type": "off", "@typescript-eslint/ban-ts-ignore": "off", "@typescript-eslint/no-var-requires": "off", + "jsx-a11y/media-has-caption": "off", "jsx-a11y/label-has-associated-control": [ "error", { diff --git a/components/Footer/index.tsx b/components/Footer/index.tsx index 3d24aae..17d9313 100644 --- a/components/Footer/index.tsx +++ b/components/Footer/index.tsx @@ -21,12 +21,12 @@ const DiscordIcon = ({ ...props }) => { ); }; -const Footer = ({ ...props }) => { +const Footer = ({ logo = true, border = true, ...props }) => { return ( { - The Web3 Index™. All rights reserved + The Web3 Index { + useEffect(() => { + const screen = new ScreenEffect("#screen", {}); + const dat = require("dat.gui"); + const gui = new dat.GUI(); + + const config = { + effects: { + roll: { + enabled: false, + options: { + speed: 1000, + }, + }, + image: { + enabled: true, + options: { + src: "https://images.unsplash.com/photo-1505977404378-3a0e28ec6488?ixlib=rb-1.2.1&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjE0NTg5fQ", + blur: 1.2, + }, + }, + vignette: { enabled: true }, + scanlines: { enabled: true }, + vcr: { + enabled: true, + options: { + opacity: 1, + miny: 220, + miny2: 220, + num: 70, + fps: 60, + }, + }, + wobbley: { enabled: true }, + snow: { + enabled: true, + options: { + opacity: 0.2, + }, + }, + }, + }; + + const f1 = gui.addFolder("Effects"); + const f2 = gui.addFolder("Snow"); + const f3 = gui.addFolder("VCR"); + const f4 = gui.addFolder("Roll"); + const f5 = gui.addFolder("Image"); + + for (const effect in config.effects) { + const type = config.effects[effect]; + f1.add(type, "enabled") + .name(effect) + .onChange((bool) => { + if (bool) { + screen.add(effect, config.effects[effect].options); + } else { + screen.remove(effect); + } + }); + + if (type.options) { + const folder = effect === "vcr" || effect === "video" ? f3 : f2; + for (const p in type.options) { + if (p === "speed") { + f4.add(type.options, p) + .min(100) + .step(1) + .max(10000) + .onChange((val) => { + screen.effects[ + effect + ].node.style.animationDuration = `${val}ms`; + }); + } + + if (p === "opacity") { + folder + .add(type.options, p) + .name(`${effect} opacity`) + .min(0) + .step(0.1) + .max(1) + .onChange((val) => { + screen.effects[effect].node.style.opacity = val; + }); + } + + if (p === "miny") { + folder + .add(type.options, p) + .name(`tracking`) + .min(0) + .step(0.1) + .max(400) + .onChange((val) => { + screen.effects[effect].config.miny = val; + screen.effects[effect].config.miny2 = 400 - val; + }); + } + + if (p === "num") { + folder + .add(type.options, p) + .name(`tape age`) + .min(1) + .step(0.1) + .max(100) + .onChange((val) => { + screen.effects[effect].config.num = val; + }); + } + + if (p === "blur") { + f5.add(type.options, p) + .name(`blur`) + .min(1) + .step(0.1) + .max(5) + .onChange((val) => { + if (effect === "vcr") { + screen.effects[effect].config.blur = val; + } else { + screen.effects[effect].node.style.filter = `blur(${val}px)`; + } + }); + } + } + } + } + + f1.open(); + f2.open(); + f3.open(); + f4.open(); + f5.open(); + + setTimeout(() => { + for (const prop in config.effects) { + if (!!config.effects[prop].enabled) { + screen.add(prop, config.effects[prop].options); + } + } + }, 1000); + }, []); + + return ( + + + + ); +}; + +export default OldTV; diff --git a/components/Player/index.tsx b/components/Player/index.tsx new file mode 100644 index 0000000..813073f --- /dev/null +++ b/components/Player/index.tsx @@ -0,0 +1,52 @@ +import React from "react"; +import videojs from "video.js"; +import "videojs-contrib-quality-levels"; +import "videojs-hls-quality-selector"; +import "video.js/dist/video-js.css"; + +export const VideoJS = (props) => { + const videoRef = React.useRef(null); + const playerRef = React.useRef(null); + const { options, onReady } = props; + + React.useEffect(() => { + // make sure Video.js player is only initialized once + if (!playerRef.current) { + const videoElement = videoRef.current; + if (!videoElement) return; + + const player = (playerRef.current = videojs(videoElement, options, () => { + console.log("player is ready"); + onReady && onReady(player); + })); + } else { + // you can update player here [update player through props] + // const player = playerRef.current; + // player.autoplay(options.autoplay); + // player.src(options.sources); + } + }, [options, onReady]); + + // Dispose the Video.js player when the functional component unmounts + React.useEffect(() => { + return () => { + if (playerRef.current) { + playerRef.current.dispose(); + playerRef.current = null; + } + }; + }, []); + + return ( +
+
+ ); +}; + +export default VideoJS; diff --git a/css/tv.scss b/css/tv.scss new file mode 100644 index 0000000..9b531bc --- /dev/null +++ b/css/tv.scss @@ -0,0 +1,287 @@ +.tv { + #screen { + width: 100%; + height: 100%; + background: transparent linear-gradient(to bottom, #85908c 0%, #323431 100%) + repeat scroll 0 0; + background-size: cover; + } + + canvas { + position: absolute; + left: 0; + top: 0; + z-index: 9998; + // background-color: #fff; + width: 100%; + height: 100%; + + &.snow { + background-color: #aaa; + opacity: 0.2; + } + } + + .screen-container { + width: 100vw; + height: calc(100vh - 166px); + overflow: hidden; + position: relative; + } + + .screen-wrapper { + position: relative; + width: 100%; + height: 100%; + } + + .vcr { + opacity: 0.6; + } + .video { + filter: blur(1px); + width: 100%; + height: 100%; + } + .image { + width: 100%; + height: auto; + filter: blur(1.2px); + } + .vignette { + background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/86186/crt.png); + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + background-repeat: no-repeat; + background-size: 100% 100%; + z-index: 10000; + } + .scanlines { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; + z-index: 9999; + background: linear-gradient( + transparentize(#121010, 1) 50%, + transparentize(darken(#121010, 10), 0.75) 50% + ), + linear-gradient( + 90deg, + transparentize(#ff0000, 0.94), + transparentize(#00ff00, 0.98), + transparentize(#0000ff, 0.94) + ); + background-size: 100% 2px, 3px 100%; + pointer-events: none; + } + + .wobblex { + animation: wobblex 100ms infinite; + } + + .wobbley { + animation: wobbley 100ms infinite; + } + + .glitch { + animation: 5s ease 2000ms normal none infinite running glitch; + } + + @mixin pseudo { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + content: " "; + } + + @keyframes wobblex { + 50% { + transform: translateX(1px); + } + 51% { + transform: translateX(0); + } + } + @keyframes wobbley { + 0% { + transform: translateY(1px); + } + 100% { + transform: translateY(0); + } + } + @keyframes glitch { + 30% { + } + 40% { + opacity: 1; + transform: scale(1, 1); + transform: skew(0, 0); + } + 41% { + opacity: 0.8; + transform: scale(1, 1.2); + transform: skew(80deg, 0); + } + 42% { + opacity: 0.8; + transform: scale(1, 1.2); + transform: skew(-50deg, 0); + } + 43% { + opacity: 1; + transform: scale(1, 1); + transform: skew(0, 0); + } + 65% { + } + } + + @keyframes glitch1 { + 0% { + transform: translateX(0); + } + 30% { + transform: translateX(0); + } + 31% { + transform: translateX(10px); + } + 32% { + transform: translateX(0); + } + 98% { + transform: translateX(0); + } + 100% { + transform: translateX(10px); + } + } + .text span:nth-child(2) { + animation: glitch2 1s infinite; + } + @keyframes glitch2 { + 0% { + transform: translateX(0); + } + 30% { + transform: translateX(0); + } + 31% { + transform: translateX(-10px); + } + 32% { + transform: translateX(0); + } + 98% { + transform: translateX(0); + } + 100% { + transform: translateX(-10px); + } + } + + .overlay .text { + animation: 5s ease 2000ms normal none infinite running glitch; + } + + .on > .screen-wrapper { + animation: 3000ms linear 0ms normal forwards 1 running on; + } + .off > .screen-wrapper { + animation: 750ms cubic-bezier(0.23, 1, 0.32, 1) 0ms normal forwards 1 + running off; + } + + @keyframes on { + 0% { + transform: scale(1, 0.8) translate3d(0, 0, 0); + filter: brightness(4); + opacity: 1; + } + 3.5% { + transform: scale(1, 0.8) translate3d(0, 100%, 0); + } + + 3.6% { + transform: scale(1, 0.8) translate3d(0, -100%, 0); + opacity: 1; + } + + 9% { + transform: scale(1.3, 0.6) translate3d(0, 100%, 0); + filter: brightness(4); + opacity: 0; + } + + 11% { + transform: scale(1, 1) translate3d(0, 0, 0); + filter: contrast(0) brightness(0); + opacity: 0; + } + + 100% { + transform: scale(1, 1) translate3d(0, 0, 0); + filter: contrast(1) brightness(1.2) saturate(1.3); + opacity: 1; + } + } + + @keyframes off { + 0% { + transform: scale(1, 1); + filter: brightness(1); + } + 40% { + transform: scale(1, 0.005); + filter: brightness(100); + } + 70% { + transform: scale(1, 0.005); + } + 90% { + transform: scale(0.005, 0.005); + } + 100% { + transform: scale(0, 0); + } + } + + .roller { + position: relative; + + // &::after { + // width: 100%; + // height: 3px; + // position: absolute; + // left: 0; + // top: 0; + // background-color: rgba(0,0,0,0.2); + // filter: blur(1px); + // content: ""; + // animation: 1000ms linear 0ms forwards infinite roll; + // } + animation: 2000ms linear 0ms forwards infinite roll; + } + + @keyframes roll { + from { + transform: translate3d(0, 0, 0); + } + to { + transform: translate3d(0, -50%, 0); + } + } +} + +.dg.ac { + z-index: 10000 !important; + display: none; +} diff --git a/css/video.js.css b/css/video.js.css new file mode 100644 index 0000000..2ab4404 --- /dev/null +++ b/css/video.js.css @@ -0,0 +1,8 @@ +.vjs-tech { + height: calc(100vh - 164px) !important; +} + +.video-js { + height: calc(100vh - 164px) !important; + padding-top: 0 !important; +} diff --git a/layouts/tv.tsx b/layouts/tv.tsx new file mode 100644 index 0000000..6607970 --- /dev/null +++ b/layouts/tv.tsx @@ -0,0 +1,134 @@ +import Box from "../components/Box"; +import Section from "../components/Section"; +import { TwitterLogoIcon, GitHubLogoIcon } from "@modulz/radix-icons"; +import Link from "next/link"; +import { ReaderIcon } from "@modulz/radix-icons"; + +const DiscordIcon = ({ ...props }) => { + return ( + + + + ); +}; + +const Index = ({ children }) => { + return ( + + + + W + + + {children} + + + + + + Blog + + + + + Twitter + + + + Github + + + + Discord + + + + ); +}; + +export default Index; diff --git a/lib/screenEffect.js b/lib/screenEffect.js new file mode 100644 index 0000000..bc99669 --- /dev/null +++ b/lib/screenEffect.js @@ -0,0 +1,334 @@ +/* eslint-disable */ +function getRandomInt(min, max) { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1)) + min; +} + +export default class ScreenEffect { + constructor(parent, options) { + this.parent = parent; + if (typeof parent === "string") { + this.parent = document.querySelector(parent); + } + + this.config = Object.assign( + {}, + { + // + }, + options + ); + + this.effects = {}; + + this.events = { + resize: this.onResize.bind(this), + }; + + window.addEventListener("resize", this.events.resize, false); + + this.render(); + } + + render() { + const container = document.createElement("div"); + container.classList.add("screen-container"); + + const wrapper1 = document.createElement("div"); + wrapper1.classList.add("screen-wrapper"); + + const wrapper2 = document.createElement("div"); + wrapper2.classList.add("screen-wrapper"); + + const wrapper3 = document.createElement("div"); + wrapper3.classList.add("screen-wrapper"); + + wrapper1.appendChild(wrapper2); + wrapper2.appendChild(wrapper3); + + container.appendChild(wrapper1); + + this.parent.parentNode.insertBefore(container, this.parent); + wrapper3.appendChild(this.parent); + + this.nodes = { container, wrapper1, wrapper2, wrapper3 }; + + this.onResize(); + } + + onResize(e) { + this.rect = this.parent.getBoundingClientRect(); + + if (this.effects.vcr && !!this.effects.vcr.enabled) { + this.generateVCRNoise(); + } + } + + add(type, options) { + const config = Object.assign( + {}, + { + fps: 30, + blur: 1, + }, + options + ); + + if (Array.isArray(type)) { + for (const t of type) { + this.add(t); + } + + return this; + } + + const that = this; + + if (type === "snow") { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + canvas.classList.add(type); + canvas.width = this.rect.width / 2; + canvas.height = this.rect.height / 2; + + this.nodes.wrapper2.appendChild(canvas); + + animate(); + // that.generateSnow(ctx); + + function animate() { + that.generateSnow(ctx); + that.snowframe = requestAnimationFrame(animate); + } + + this.effects[type] = { + wrapper: this.nodes.wrapper2, + node: canvas, + enabled: true, + config, + }; + + return this; + } + + if (type === "roll") { + return this.enableRoll(); + } + + if (type === "vcr") { + const canvas = document.createElement("canvas"); + canvas.classList.add(type); + this.nodes.wrapper2.appendChild(canvas); + + canvas.width = this.rect.width; + canvas.height = this.rect.height; + + this.effects[type] = { + wrapper: this.nodes.wrapper2, + node: canvas, + ctx: canvas.getContext("2d"), + enabled: true, + config, + }; + + this.generateVCRNoise(); + + return this; + } + + let node = false; + let wrapper = this.nodes.wrapper2; + + switch (type) { + case "wobblex": + case "wobbley": + wrapper.classList.add(type); + break; + case "scanlines": + node = document.createElement("div"); + node.classList.add(type); + wrapper.appendChild(node); + break; + case "vignette": + wrapper = this.nodes.container; + node = document.createElement("div"); + node.classList.add(type); + wrapper.appendChild(node); + break; + case "image": + wrapper = this.parent; + node = document.createElement("img"); + node.classList.add(type); + + node.src = config.src; + + wrapper.appendChild(node); + break; + case "video": + wrapper = this.parent; + node = document.createElement("video"); + node.classList.add(type); + + node.src = config.src; + node.crossOrigin = "anonymous"; + node.autoplay = true; + node.muted = true; + node.loop = true; + wrapper.appendChild(node); + break; + } + + this.effects[type] = { + wrapper, + node, + enabled: true, + config, + }; + + return this; + } + + remove(type) { + const obj = this.effects[type]; + if (type in this.effects && !!obj.enabled) { + obj.enabled = false; + + if (type === "roll" && obj.original) { + this.parent.appendChild(obj.original); + } + + if (type === "vcr") { + clearInterval(this.vcrInterval); + } + + if (type === "snow") { + cancelAnimationFrame(this.snowframe); + } + + if (obj.node) { + obj.wrapper.removeChild(obj.node); + } else { + obj.wrapper.classList.remove(type); + } + } + + return this; + } + + enableRoll() { + const el = this.parent.firstElementChild; + + if (el) { + const div = document.createElement("div"); + div.classList.add("roller"); + + this.parent.appendChild(div); + div.appendChild(el); + div.appendChild(el.cloneNode(true)); + + // if ( this.effects.vcr.enabled ) { + // div.appendChild(this.effects.vcr.node); + // } + + this.effects.roll = { + enabled: true, + wrapper: this.parent, + node: div, + original: el, + }; + } + } + + generateVCRNoise() { + const canvas = this.effects.vcr.node; + const config = this.effects.vcr.config; + const div = this.effects.vcr.node; + + if (config.fps >= 60) { + cancelAnimationFrame(this.vcrInterval); + const animate = () => { + this.renderTrackingNoise(); + this.vcrInterval = requestAnimationFrame(animate); + }; + + animate(); + } else { + clearInterval(this.vcrInterval); + this.vcrInterval = setInterval(() => { + this.renderTrackingNoise(); + }, 1000 / config.fps); + } + } + + // Generate CRT noise + generateSnow(ctx) { + var w = ctx.canvas.width, + h = ctx.canvas.height, + d = ctx.createImageData(w, h), + b = new Uint32Array(d.data.buffer), + len = b.length; + + for (var i = 0; i < len; i++) { + b[i] = ((255 * Math.random()) | 0) << 24; + } + + ctx.putImageData(d, 0, 0); + } + + renderTrackingNoise(radius = 2, xmax, ymax) { + const canvas = this.effects.vcr.node; + const ctx = this.effects.vcr.ctx; + const config = this.effects.vcr.config; + let posy1 = config.miny || 0; + let posy2 = config.maxy || canvas.height; + let posy3 = config.miny2 || 0; + const num = config.num || 20; + + if (xmax === undefined) { + xmax = canvas.width; + } + + if (ymax === undefined) { + ymax = canvas.height; + } + + canvas.style.filter = `blur(${config.blur}px)`; + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.fillStyle = `#fff`; + + ctx.beginPath(); + for (var i = 0; i <= num; i++) { + var x = Math.random(i) * xmax; + var y1 = getRandomInt((posy1 += 3), posy2); + var y2 = getRandomInt(0, (posy3 -= 3)); + ctx.fillRect(x, y1, radius, radius); + ctx.fillRect(x, y2, radius, radius); + ctx.fill(); + + this.renderTail(ctx, x, y1, radius); + this.renderTail(ctx, x, y2, radius); + } + ctx.closePath(); + } + + renderTail(ctx, x, y, radius) { + const n = getRandomInt(1, 50); + + const dirs = [1, -1]; + let rd = radius; + const dir = dirs[Math.floor(Math.random() * dirs.length)]; + for (let i = 0; i < n; i++) { + const step = 0.01; + let r = getRandomInt((rd -= step), radius); + let dx = getRandomInt(1, 4); + + radius -= 0.1; + + dx *= dir; + + ctx.fillRect((x += dx), y, r, r); + ctx.fill(); + } + } +} diff --git a/package.json b/package.json index 7fc32cc..e0e1812 100644 --- a/package.json +++ b/package.json @@ -25,16 +25,21 @@ "@radix-ui/react-tooltip": "^0.1.0", "@stitches/core": "latest", "@stitches/react": "latest", + "@videojs/http-streaming": "^2.11.0", + "@videojs/themes": "^1.0.1", "ajv": "^7.2.1", "axios": "^0.21.1", + "dat.gui": "^0.7.7", "dayjs": "^1.10.4", "graphql": "^15.5.0", "graphql-request": "^3.4.0", "gray-matter": "^4.0.2", + "hls.js": "^1.0.10", "json-schema-to-typescript": "^10.1.4", "lightweight-charts": "^3.3.0", "limestone": "^0.2.0", "limestone-api": "^3.0.7", + "mux.js": "^5.14.0", "next": "^10.2.0", "next-mdx-remote": "^2.1.4", "next-seo": "^4.23.0", @@ -46,10 +51,16 @@ "react-dom": "17.0.2", "react-fast-marquee": "^1.1.2", "react-markdown": "^5.0.3", + "react-query": "^3.24.4", "react-table": "^7.6.3", "recharts": "2.0.9", "redstone-api": "^0.4.3", - "remark-dropcap": "^0.1.7" + "remark-dropcap": "^0.1.7", + "sass": "^1.42.1", + "video.js": "^7.15.4", + "videojs-contrib-hls": "^5.15.0", + "videojs-contrib-quality-levels": "^2.1.0", + "videojs-hls-quality-selector": "^1.1.4" }, "devDependencies": { "@types/node": "^14.14.33", diff --git a/pages/_app.tsx b/pages/_app.tsx index 532e897..586c154 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -6,6 +6,12 @@ import { IdProvider } from "@radix-ui/react-id"; import { pageview } from "../lib/utils"; import { useRouter } from "next/router"; import { useEffect } from "react"; +import { QueryClient, QueryClientProvider } from "react-query"; +import "@videojs/themes/dist/fantasy/index.css"; +import "../css/tv.scss"; +import "../css/video.js.css"; + +const queryClient = new QueryClient(); const globalStyles = globalCss({ body: { @@ -63,8 +69,10 @@ const App = ({ Component, pageProps }) => { defaultTheme="dark" value={{ light: lightThemeClass.className }} > - - + + + + ); diff --git a/pages/api/stream/[id].ts b/pages/api/stream/[id].ts new file mode 100644 index 0000000..b2e0aa1 --- /dev/null +++ b/pages/api/stream/[id].ts @@ -0,0 +1,33 @@ +import axios from "axios"; + +/** + * calls the /stream/ route of Livepeer.com APIs to get the stream's status to verify that the stream is live or not. + * isActive: true means video segments are currently being ingested by Livepeer.com. isActive: false means the live stream is idle and no + * video segments are currently being ingested by Livepeer.com. + */ +export default async (req, res) => { + if (req.method === "GET") { + const streamId = req.query.id; + try { + const streamStatusResponse = await axios.get( + `https://livepeer.com/api/stream/${streamId}`, + { + headers: { + "content-type": "application/json", + authorization: `Bearer ${process.env.LIVEPEER_COM_API_KEY}`, // API Key needs to be passed as a header + }, + } + ); + if (streamStatusResponse && streamStatusResponse.data) { + res.statusCode = 200; + res.json({ ...streamStatusResponse.data }); + } else { + res.statusCode = 500; + res.json({ error: "Something went wrong" }); + } + } catch (error) { + res.statusCode = 500; + res.json({ error }); + } + } +}; diff --git a/pages/index.tsx b/pages/index.tsx index 399ff4d..fce4b33 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -7,7 +7,6 @@ import Container from "../components/Container"; import Header from "../components/Header"; import Faq from "../components/Faq"; import CallToAction from "../components/CallToAction"; -import { trophies } from "../lib/utils"; import { getFaq } from "../lib/mdx"; import { getProjects } from "./api/projects"; diff --git a/pages/tv.tsx b/pages/tv.tsx new file mode 100644 index 0000000..c783912 --- /dev/null +++ b/pages/tv.tsx @@ -0,0 +1,72 @@ +import Player from "../components/Player"; +import { useQuery } from "react-query"; +import axios from "axios"; +import Layout from "../layouts/tv"; +import OldTV from "../components/OldTV"; +import { useRef } from "react"; + +const TV = () => { + const { isLoading, data } = useQuery( + "tv", + async () => { + const res = await axios.get( + "/api/stream/c6e78bdc-867d-4e1f-8fb3-9f24954b882e" + ); + return res.data; + }, + { + // Refetch the data every 4 seconds + refetchInterval: 4000, + } + ); + + const playerRef = useRef(null); + + const videoJsOptions = { + // lookup the options in the docs for more options + autoplay: true, + controls: true, + responsive: true, + fluid: true, + sources: [ + { + src: "https://cdn.livepeer.com/hls/c6e7en1y2trfc941/index.m3u8", + type: "application/x-mpegURL", + }, + ], + }; + + const handlePlayerReady = (player) => { + playerRef.current = player; + + player.hlsQualitySelector(); + + // you can handle player events here + player.on("waiting", () => { + console.log("player is waiting"); + }); + + player.on("dispose", () => { + console.log("player will dispose"); + }); + }; + + if (isLoading) { + return ( + + + + ); + } + return ( + + {data.isActive ? ( + + ) : ( + + )} + + ); +}; + +export default TV; diff --git a/tsconfig.json b/tsconfig.json index 35d51ea..93a83a4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,7 @@ { "compilerOptions": { "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "strict": false, @@ -18,12 +14,6 @@ "isolatedModules": true, "jsx": "preserve" }, - "include": [ - "next-env.d.ts", - "**/*.ts", - "**/*.tsx" - ], - "exclude": [ - "node_modules" - ] + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] } diff --git a/yarn.lock b/yarn.lock index 11c1421..fb61a0a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -981,7 +981,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.13.10", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.15.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a" integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== @@ -2110,11 +2110,78 @@ "@typescript-eslint/types" "4.31.2" eslint-visitor-keys "^2.0.0" +"@videojs/http-streaming@2.10.2": + version "2.10.2" + resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-2.10.2.tgz#02e6fcfa74f7850b5f9eb40a8e5c85c9d7d33eaf" + integrity sha512-JTAlAUHzj0sTsge2WBh4DWKM2I5BDFEZYOvzxmsK/ySILmI0GRyjAHx9uid68ZECQ2qbEAIRmZW5lWp0R5PeNA== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "3.0.3" + aes-decrypter "3.1.2" + global "^4.4.0" + m3u8-parser "4.7.0" + mpd-parser "0.19.0" + mux.js "5.13.0" + video.js "^6 || ^7" + +"@videojs/http-streaming@^2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@videojs/http-streaming/-/http-streaming-2.11.0.tgz#f5c57444f0d7a95ab95b6a7fb8300825dba96e48" + integrity sha512-B1aOI7SH/mSIwUqSvhI3zKJ7+xYHoF0A2A/QLsL8J30uV7nEqsDqMTTAkPgdOfyyS0Hj39wMii3fJD7SkZMI3Q== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "3.0.4" + aes-decrypter "3.1.2" + global "^4.4.0" + m3u8-parser "4.7.0" + mpd-parser "0.19.1" + mux.js "5.14.0" + video.js "^6 || ^7" + +"@videojs/themes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@videojs/themes/-/themes-1.0.1.tgz#c92389ce3ec603c7d8783a76eb29ecc366ed5d91" + integrity sha512-2b6YIIIz5x+/eSFdkSZ2RZJfHIMfP7bGODR3wDzLTqFF2kEKnJVIXxBUNzdZC/qiVETqAA2Ba6mCp+iXTUYt4A== + dependencies: + postcss-inline-svg "^4.1.0" + +"@videojs/vhs-utils@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@videojs/vhs-utils/-/vhs-utils-3.0.3.tgz#708bc50742e9481712039695299b32da6582ef92" + integrity sha512-bU7daxDHhzcTDbmty1cXjzsTYvx2cBGbA8hG5H2Gvpuk4sdfuvkZtMCwtCqL59p6dsleMPspyaNS+7tWXx2Y0A== + dependencies: + "@babel/runtime" "^7.12.5" + global "^4.4.0" + url-toolkit "^2.2.1" + +"@videojs/vhs-utils@3.0.4", "@videojs/vhs-utils@^3.0.0", "@videojs/vhs-utils@^3.0.2", "@videojs/vhs-utils@^3.0.3": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@videojs/vhs-utils/-/vhs-utils-3.0.4.tgz#e253eecd8e9318f767e752010d213587f94bb03a" + integrity sha512-hui4zOj2I1kLzDgf8QDVxD3IzrwjS/43KiS8IHQO0OeeSsb4pB/lgNt1NG7Dv0wMQfCccUpMVLGcK618s890Yg== + dependencies: + "@babel/runtime" "^7.12.5" + global "^4.4.0" + url-toolkit "^2.2.1" + +"@videojs/xhr@2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@videojs/xhr/-/xhr-2.6.0.tgz#cd897e0ad54faf497961bcce3fa16dc15a26bb80" + integrity sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q== + dependencies: + "@babel/runtime" "^7.5.5" + global "~4.4.0" + is-function "^1.0.1" + "@weavery/clarity@^0.1.5": version "0.1.5" resolved "https://registry.yarnpkg.com/@weavery/clarity/-/clarity-0.1.5.tgz#f06bbb0dac7c63c6e2ccd76cda3e8b32b57f82c2" integrity sha512-0ms2/sBx+uyW3EmXte5otIzNVAXpfJ3lBl6FS8JuLdWmPU6SxiAoGTMUT0N0SL3Ogiz2PZt6NV+mfApbSvYBaQ== +"@xmldom/xmldom@^0.7.2": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d" + integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A== + acorn-jsx@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -2125,6 +2192,23 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +aes-decrypter@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/aes-decrypter/-/aes-decrypter-1.0.3.tgz#9c06b8a5435a5ad09db933f8a014afcf184cc34e" + integrity sha1-nAa4pUNaWtCduTP4oBSvzxhMw04= + dependencies: + pkcs7 "^0.2.3" + +aes-decrypter@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-decrypter/-/aes-decrypter-3.1.2.tgz#3545546f8e9f6b878640339a242efe221ba7a7cb" + integrity sha512-42nRwfQuPRj9R1zqZBdoxnaAmnIFyDi0MNyTVhjdFOd8fifXKKRfwIHIZ6AMn1or4x5WONzjwRTbTWcsIQ0O4A== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.0" + global "^4.4.0" + pkcs7 "^1.0.4" + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -2229,7 +2313,7 @@ any-promise@^1.0.0: resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= -anymatch@~3.1.1: +anymatch@~3.1.1, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -2476,6 +2560,14 @@ babel-plugin-syntax-jsx@6.18.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= +babel-runtime@^6.9.2: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + bail@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" @@ -2510,6 +2602,11 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +big-integer@^1.6.16: + version "1.6.49" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.49.tgz#f6817d3ea5d4f3fb19e24df9f4b1b4471a8328ce" + integrity sha512-KJ7VhqH+f/BOt9a3yMwJNmcZjG53ijWMTjSAGMveQWyLwqIiwkjNP5PFgDob3Snnx86SjDj6I89fIbv0dkQeNw== + big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2554,6 +2651,11 @@ bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + boom@4.x.x: version "4.3.1" resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" @@ -2583,6 +2685,20 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" +broadcast-channel@^3.4.1: + version "3.7.0" + resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-3.7.0.tgz#2dfa5c7b4289547ac3f6705f9c00af8723889937" + integrity sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg== + dependencies: + "@babel/runtime" "^7.7.2" + detect-node "^2.1.0" + js-sha3 "0.8.0" + microseconds "0.2.0" + nano-time "1.0.0" + oblivious-set "1.0.0" + rimraf "3.0.2" + unload "2.2.0" + brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -2830,6 +2946,21 @@ chokidar@3.5.1: optionalDependencies: fsevents "~2.3.1" +"chokidar@>=3.0.0 <4.0.0": + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -3054,6 +3185,11 @@ core-js-pure@^3.16.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.18.0.tgz#e5187347bae66448c9e2d67c01c34c4df3261dc5" integrity sha512-ZnK+9vyuMhKulIGqT/7RHGRok8RtkHMEX/BGPHkHx+ouDkq+MUvf9mfIgdqhpmPDu8+V5UtRn/CbCRc9I4lX4w== +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -3146,11 +3282,26 @@ crypto-browserify@3.12.0, crypto-browserify@^3.11.0: randombytes "^2.0.0" randomfill "^1.0.3" +css-select@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + css-unit-converter@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21" integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + css.escape@1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" @@ -3263,6 +3414,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +dat.gui@^0.7.7: + version "0.7.7" + resolved "https://registry.yarnpkg.com/dat.gui/-/dat.gui-0.7.7.tgz#7f96dbd21621a76385203659aebfa264ee6ae89b" + integrity sha512-sRl/28gF/XRC5ywC9I4zriATTsQcpSsRG7seXCPnTkK8/EQMIbCu5NPMpICLGxX9ZEUvcXR3ArLYCtgreFoMDw== + data-uri-to-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" @@ -3348,6 +3504,11 @@ detab@2.0.4: dependencies: repeat-string "^1.5.4" +detect-node@^2.0.4, detect-node@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -3385,6 +3546,22 @@ dom-helpers@^3.4.0: dependencies: "@babel/runtime" "^7.1.2" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + dependencies: + domelementtype "^1.3.0" + entities "^1.1.1" + dom-serializer@^1.0.1: version "1.3.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" @@ -3394,6 +3571,11 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + domain-browser@4.19.0: version "4.19.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.19.0.tgz#1093e17c0a17dbd521182fe90d49ac1370054af1" @@ -3404,11 +3586,23 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + domhandler@^4.0, domhandler@^4.2.0, domhandler@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.2.tgz#e825d721d19a86b8c201a35264e226c678ee755f" @@ -3416,6 +3610,14 @@ domhandler@^4.0, domhandler@^4.2.0, domhandler@^4.2.2: dependencies: domelementtype "^2.2.0" +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -3500,6 +3702,11 @@ enquirer@^2.3.5, enquirer@^2.3.6: dependencies: ansi-colors "^4.1.1" +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -3559,6 +3766,11 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.51, es5-ext@ es6-symbol "~3.1.3" next-tick "~1.0.0" +es5-shim@^4.5.1: + version "4.6.2" + resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.6.2.tgz#827cdd0c6fb5beb26fd368d65430e8b5eaeba942" + integrity sha512-n0XTVMGps+Deyr38jtqKPR5F5hb9owYeRQcKJW39eFvzUk/u/9Ww315werRzbiNMnHCUw/YHDPBphTlEnzdi+A== + es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" @@ -4170,12 +4382,33 @@ form-data@~2.3.1, form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +fs-extra@^0.26.5: + version "0.26.7" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9" + integrity sha1-muH92UiXeY7at20JGM9C0MMYT6k= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-promise@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-0.5.0.tgz#4347d6bf624655a7061a4319213c393276ad3ef3" + integrity sha1-Q0fWv2JGVacGGkMZITw5MnatPvM= + dependencies: + any-promise "^1.0.0" + fs-extra "^0.26.5" + mz "^2.3.1" + thenify-all "^1.6.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@~2.3.1: +fsevents@~2.3.1, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -4248,7 +4481,7 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-parent@^5.1.2, glob-parent@~5.1.0: +glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -4279,6 +4512,22 @@ glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +global@4.3.2, global@~4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" + integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= + dependencies: + min-document "^2.19.0" + process "~0.5.1" + +global@^4.3.0, global@^4.3.1, global@^4.3.2, global@^4.4.0, global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" @@ -4303,7 +4552,7 @@ globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" -graceful-fs@^4.1.2: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.2.8" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== @@ -4487,6 +4736,11 @@ he@1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +hls.js@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/hls.js/-/hls.js-1.0.10.tgz#2626c19e0a32904c1915a842c591f9b0a9f5066b" + integrity sha512-P+o/wjGJsnqwdXXYfWvopOceXEXFV0H8vs/T+ApsscP/GlpUtdIRWie7qc+jbml95ThjE6+FVci9VGaD51r/6Q== + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -4516,6 +4770,18 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== +htmlparser2@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + htmlparser2@^7.0: version "7.1.2" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.1.2.tgz#587923d38f03bc89e03076e00cba2c7473f37f7c" @@ -4627,6 +4893,11 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== +individual@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/individual/-/individual-2.0.0.tgz#833b097dad23294e76117a98fb38e0d9ad61bb97" + integrity sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c= + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -4781,6 +5052,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + is-generator-function@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" @@ -4962,6 +5238,11 @@ js-sha3@0.5.7: resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5079,6 +5360,13 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + optionalDependencies: + graceful-fs "^4.1.6" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -5097,6 +5385,14 @@ jsprim@^1.2.2: array-includes "^3.1.3" object.assign "^4.1.2" +karma-safaritechpreview-launcher@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/karma-safaritechpreview-launcher/-/karma-safaritechpreview-launcher-0.0.6.tgz#7a841105aeb7053940e33df850edcf220eed906a" + integrity sha512-2QMxAGXPQ37H3KoR9SCdh0OoktQZ5MyrxkvBiZ+VVOQfYVrcyOQXGrPea0/DKvf8qoQvrvP2FHcP/BxsuxuyHw== + dependencies: + fs-promise "^0.5.0" + marcosc-async "^3.0.4" + keccak@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" @@ -5106,11 +5402,23 @@ keccak@^3.0.0: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keycode@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/keycode/-/keycode-2.2.0.tgz#3d0af56dc7b8b8e5cba8d0a97f107204eec22b04" + integrity sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ= + kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + optionalDependencies: + graceful-fs "^4.1.9" + language-subtag-registry@~0.3.2: version "0.3.21" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" @@ -5320,6 +5628,20 @@ lru-queue@0.1, lru-queue@^0.1.0: dependencies: es5-ext "~0.10.2" +m3u8-parser@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-2.1.0.tgz#c8170329ec1cd515d0d58bb8b762da9896cb0368" + integrity sha1-yBcDKewc1RXQ1Yu4t2LamJbLA2g= + +m3u8-parser@4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/m3u8-parser/-/m3u8-parser-4.7.0.tgz#e01e8ce136098ade1b14ee691ea20fc4dc60abf6" + integrity sha512-48l/OwRyjBm+QhNNigEEcRcgbRvnUjL7rxs597HmW9QSNbyNvt+RcZ9T/d9vxi9A9z7EZrB1POtZYhdRlwYQkQ== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.0" + global "^4.4.0" + make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -5327,11 +5649,24 @@ make-dir@^3.0.2: dependencies: semver "^6.0.0" +marcosc-async@^3.0.4: + version "3.0.5" + resolved "https://registry.yarnpkg.com/marcosc-async/-/marcosc-async-3.0.5.tgz#41e6d56c656c811859d34b97a0a26093f71dc360" + integrity sha1-QebVbGVsgRhZ00uXoKJgk/cdw2A= + markdown-escapes@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== +match-sorter@^6.0.2: + version "6.3.1" + resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.1.tgz#98cc37fda756093424ddf3cbc62bfe9c75b92bda" + integrity sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw== + dependencies: + "@babel/runtime" "^7.12.5" + remove-accents "0.4.2" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -5450,6 +5785,11 @@ micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" +microseconds@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39" + integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA== + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -5475,6 +5815,13 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -5514,6 +5861,26 @@ moment-timezone@^0.5.10: resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== +mpd-parser@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/mpd-parser/-/mpd-parser-0.19.0.tgz#8937044040ca85e20398ecf5d94552655e2c6728" + integrity sha512-FDLIXtZMZs99fv5iXNFg94quNFT26tobo0NUgHu7L3XgZvEq1NBarf5yxDFFJ1zzfbcmtj+NRaml6nYIxoPWvw== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.2" + "@xmldom/xmldom" "^0.7.2" + global "^4.4.0" + +mpd-parser@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/mpd-parser/-/mpd-parser-0.19.1.tgz#79e6fe65511c04481ce8def55beb5cdb086fe1b2" + integrity sha512-8Cf4rZCDvT6NLHnXoKEsreV+WSoB131DtD0202jSho0HkK0brTSXb2H2q6hdu9OeKDQBrS2PIMclZR2tXGVVOg== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/vhs-utils" "^3.0.2" + "@xmldom/xmldom" "^0.7.2" + global "^4.4.0" + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5529,7 +5896,26 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -mz@^2.7.0: +mux.js@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/mux.js/-/mux.js-4.3.2.tgz#576d537df037dc5ec35ec1316b948d815d35c210" + integrity sha512-g0q6DPdvb3yYcoK7ElBGobdSSrhY/RjPt19U7uUc733aqvc5bCS/aCvL9z+448y+IoCZnYDwyZfQBBXMSmGOaQ== + +mux.js@5.13.0: + version "5.13.0" + resolved "https://registry.yarnpkg.com/mux.js/-/mux.js-5.13.0.tgz#99c3da21f6c0362a1529729d1c5e5b51f34f606d" + integrity sha512-PkmnzHcTQjUBEHp3KRPQAFoNkJtKlpCEvsYtXDfDrC+/WqbMuxHvoYfmAbHVAH7Sa/KliPVU0dT1ureO8wilog== + dependencies: + "@babel/runtime" "^7.11.2" + +mux.js@5.14.0, mux.js@^5.14.0: + version "5.14.0" + resolved "https://registry.yarnpkg.com/mux.js/-/mux.js-5.14.0.tgz#898a7ec0f2009a346e976a4e3fb998d3947174bb" + integrity sha512-zrOH4TYQrVWWDnLMYzi5LxDMAb8PootOEh4mc6EU0SyYRYLPdaI12Lg0ZLBjlvY7Fmtg3qX16Cu8zaokE1NaRg== + dependencies: + "@babel/runtime" "^7.11.2" + +mz@^2.3.1, mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== @@ -5538,11 +5924,23 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" +nano-time@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/nano-time/-/nano-time-1.0.0.tgz#b0554f69ad89e22d0907f7a12b0993a5d96137ef" + integrity sha1-sFVPaa2J4i0JB/ehKwmTpdlhN+8= + dependencies: + big-integer "^1.6.16" + nanocolors@^0.1.5: version "0.1.6" resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.6.tgz#bc2350d3edfdbfadd7ac018c855ae7c13905a6ad" integrity sha512-2pvTw6vYRaBLGir2xR7MxaJtyWkrn+C53EpW8yPotG+pdAwBvt0Xwk4VJ6VHLY0aLthVZPvDfm9TdZvrvAm5UQ== +nanocolors@^0.2.2: + version "0.2.12" + resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.2.12.tgz#4d05932e70116078673ea4cc6699a1c56cc77777" + integrity sha512-SFNdALvzW+rVlzqexid6epYdt8H9Zol7xDoQarioEFcFN0JHo4CYNztAxmtfgGTVRCmFlEOqqhBpoFGKqSAMug== + nanoid@^3.1.22: version "3.1.25" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" @@ -5737,6 +6135,13 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + numeral@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" @@ -5826,6 +6231,11 @@ object.values@^1.1.4: define-properties "^1.1.3" es-abstract "^1.18.2" +oblivious-set@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.0.0.tgz#c8316f2c2fb6ff7b11b6158db3234c49f733c566" + integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw== + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -5962,6 +6372,11 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" +parse-headers@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.4.tgz#9eaf2d02bed2d1eff494331ce3df36d7924760bf" + integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw== + parse-json@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -6041,6 +6456,18 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +pkcs7@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/pkcs7/-/pkcs7-0.2.3.tgz#22d60666d01065c5f24439098e4a4830452273be" + integrity sha1-ItYGZtAQZcXyRDkJjkpIMEUic74= + +pkcs7@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/pkcs7/-/pkcs7-1.0.4.tgz#6090b9e71160dabf69209d719cbafa538b00a1cb" + integrity sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ== + dependencies: + "@babel/runtime" "^7.5.5" + pkg-dir@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -6074,11 +6501,27 @@ pnp-webpack-plugin@1.6.4: dependencies: ts-pnp "^1.1.6" +postcss-inline-svg@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-inline-svg/-/postcss-inline-svg-4.1.0.tgz#54e9199632242cc181af5b55f0f0691ad1020f95" + integrity sha512-0pYBJyoQ9/sJViYRc1cNOOTM7DYh0/rmASB0TBeRmWkG8YFK2tmgdkfjHkbRma1iFtBFKFHZFsHwRTDZTMKzSQ== + dependencies: + css-select "^2.0.2" + dom-serializer "^0.1.1" + htmlparser2 "^3.10.1" + postcss "^7.0.17" + postcss-value-parser "^4.0.0" + postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== +postcss-value-parser@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + postcss@8.2.13: version "8.2.13" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.13.tgz#dbe043e26e3c068e45113b1ed6375d2d37e2129f" @@ -6088,6 +6531,14 @@ postcss@8.2.13: nanoid "^3.1.22" source-map "^0.6.1" +postcss@^7.0.17: + version "7.0.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.38.tgz#5365a9c5126643d977046ad239f60eadda2491d6" + integrity sha512-wNrSHWjHDQJR/IZL5IKGxRtFgrYNaAA/UrkW2WqbtZO6uxSLMxMN+s2iqUMwnAWm3fMROlDYZB41dr0Mt7vBwQ== + dependencies: + nanocolors "^0.2.2" + source-map "^0.6.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -6127,6 +6578,11 @@ process@0.11.10, process@^0.11.1, process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= +process@~0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" + integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= + progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -6315,6 +6771,15 @@ react-markdown@^5.0.3: unist-util-visit "^2.0.0" xtend "^4.0.1" +react-query@^3.24.4: + version "3.24.4" + resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.24.4.tgz#20d8469cf7d6dda7c778ba6d374aa748e97e8381" + integrity sha512-p/t18+FN5P//bk/xR39r4JRWEigYzia2+J3lmKWSZHYbcivQlygJixY+81NiTNxT1P+/P6cl173b1lEbh1R8yQ== + dependencies: + "@babel/runtime" "^7.5.5" + broadcast-channel "^3.4.1" + match-sorter "^6.0.2" + react-refresh@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" @@ -6375,7 +6840,7 @@ readable-stream@^2.0.2, readable-stream@^2.3.3, readable-stream@^2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -6391,6 +6856,13 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + recharts-scale@^0.4.4: version "0.4.5" resolved "https://registry.yarnpkg.com/recharts-scale/-/recharts-scale-0.4.5.tgz#0969271f14e732e642fcc5bd4ab270d6e87dd1d9" @@ -6480,6 +6952,11 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + regenerator-runtime@^0.13.4: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" @@ -6591,6 +7068,11 @@ remark-squeeze-paragraphs@4.0.0: dependencies: mdast-squeeze-paragraphs "^4.0.0" +remove-accents@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5" + integrity sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U= + repeat-string@^1.5.4: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -6716,13 +7198,20 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.2: +rimraf@3.0.2, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" +rimraf@^2.2.8: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -6750,6 +7239,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rust-result@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rust-result/-/rust-result-1.0.0.tgz#34c75b2e6dc39fe5875e5bdec85b5e0f91536f72" + integrity sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I= + dependencies: + individual "^2.0.0" + rxjs@^6.4.0, rxjs@^6.6.7: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" @@ -6774,11 +7270,25 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-json-parse@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz#7c0f578cfccd12d33a71c0e05413e2eca171eaac" + integrity sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw= + dependencies: + rust-result "^1.0.0" + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sass@^1.42.1: + version "1.42.1" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.42.1.tgz#5ab17bebc1cb1881ad2e0c9a932c66ad64e441e2" + integrity sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg== + dependencies: + chokidar ">=3.0.0 <4.0.0" + sax@>=0.6.0: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -7266,7 +7776,7 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -thenify-all@^1.0.0: +thenify-all@^1.0.0, thenify-all@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= @@ -7386,6 +7896,11 @@ tslib@~2.1.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tsml@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tsml/-/tsml-1.0.1.tgz#89f8218b9d9e257f47d7f6b56d01c5a4d2c68fc3" + integrity sha1-ifghi52eJX9H1/a1bQHFpNLGj8M= + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -7595,6 +8110,14 @@ unist-util-visit@2.0.3, unist-util-visit@^2.0.0: unist-util-is "^4.0.0" unist-util-visit-parents "^3.0.0" +unload@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/unload/-/unload-2.2.0.tgz#ccc88fdcad345faa06a92039ec0f80b488880ef7" + integrity sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA== + dependencies: + "@babel/runtime" "^7.6.2" + detect-node "^2.0.4" + unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -7607,6 +8130,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +url-toolkit@^2.1.3, url-toolkit@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/url-toolkit/-/url-toolkit-2.2.3.tgz#78fa901215abbac34182066932220279b804522b" + integrity sha512-Da75SQoxsZ+2wXS56CZBrj2nukQ4nlGUZUP/dqUBG5E1su5GKThgT94Q00x81eVII7AyS1Pn+CtTTZ4Z0pLUtQ== + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -7719,6 +8247,112 @@ vfile@^4.0.0: unist-util-stringify-position "^2.0.0" vfile-message "^2.0.0" +"video.js@^5.17.0 || ^6.2.0", "video.js@^5.19.1 || ^6.2.0": + version "6.13.0" + resolved "https://registry.yarnpkg.com/video.js/-/video.js-6.13.0.tgz#f9487d46327340fa48ecd51372a2981dbb6cde4c" + integrity sha512-36/JR/GhPQSZj0o+GNbhcEYv/b0SkV9SQsjlodAnzMQYN0TA7VhmqrKPYMCi1NGRYu7S9W3OaFCFoUxkYfSVlg== + dependencies: + babel-runtime "^6.9.2" + global "4.3.2" + safe-json-parse "4.0.0" + tsml "1.0.1" + videojs-font "2.1.0" + videojs-ie8 "1.1.2" + videojs-vtt.js "0.12.6" + xhr "2.4.0" + +"video.js@^6 || ^7", video.js@^7.15.4, video.js@^7.5.5: + version "7.15.4" + resolved "https://registry.yarnpkg.com/video.js/-/video.js-7.15.4.tgz#0f96ef138035138cb30bf00a989b6174f0d16bac" + integrity sha512-hghxkgptLUvfkpktB4wxcIVF3VpY/hVsMkrjHSv0jpj1bW9Jplzdt8IgpTm9YhlB1KYAp07syVQeZcBFUBwhkw== + dependencies: + "@babel/runtime" "^7.12.5" + "@videojs/http-streaming" "2.10.2" + "@videojs/vhs-utils" "^3.0.3" + "@videojs/xhr" "2.6.0" + aes-decrypter "3.1.2" + global "^4.4.0" + keycode "^2.2.0" + m3u8-parser "4.7.0" + mpd-parser "0.19.0" + mux.js "5.13.0" + safe-json-parse "4.0.0" + videojs-font "3.2.0" + videojs-vtt.js "^0.15.3" + +videojs-contrib-hls@^5.15.0: + version "5.15.0" + resolved "https://registry.yarnpkg.com/videojs-contrib-hls/-/videojs-contrib-hls-5.15.0.tgz#fe4957367e5d68b7d23f78ed32e37a9dd892a0a8" + integrity sha512-18zbMYZ0XRBKTPEayA9bFTWWrqhT9b4G8+zf0czJLD7Epe5PcK1I/3dflTHQeQ5rwlWir+/XnFU3sMg/B2MMcw== + dependencies: + aes-decrypter "1.0.3" + global "^4.3.0" + m3u8-parser "2.1.0" + mux.js "4.3.2" + url-toolkit "^2.1.3" + video.js "^5.19.1 || ^6.2.0" + videojs-contrib-media-sources "4.7.2" + webwackify "0.1.6" + +videojs-contrib-media-sources@4.7.2: + version "4.7.2" + resolved "https://registry.yarnpkg.com/videojs-contrib-media-sources/-/videojs-contrib-media-sources-4.7.2.tgz#0adf929107d5b74cf2c8abb2824c82177e43858e" + integrity sha512-e6iCHWBFuV05EGo7v+pS9iepObXnJ9joms467gzi8ZjpKVb3ifha9M0Ja24Rd8JfvYpzjltsgDVtGFDvIg4hQQ== + dependencies: + global "^4.3.0" + mux.js "4.3.2" + video.js "^5.17.0 || ^6.2.0" + webwackify "0.1.6" + +videojs-contrib-quality-levels@^2.0.9, videojs-contrib-quality-levels@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.1.0.tgz#046e9e21ed01043f512b83a1916001d552457083" + integrity sha512-dqGQGbL9AFhucxki7Zh0c3kIhH0PAPcHEh6jUdRyaFCVeOuqnJrOYs/3wNtsokDdBdRf2Du2annpu4Z2XaSZRg== + dependencies: + global "^4.3.2" + video.js "^6 || ^7" + +videojs-font@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-2.1.0.tgz#a25930a67f6c9cfbf2bb88dacb8c6b451f093379" + integrity sha1-olkwpn9snPvyu4jay4xrRR8JM3k= + +videojs-font@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/videojs-font/-/videojs-font-3.2.0.tgz#212c9d3f4e4ec3fa7345167d64316add35e92232" + integrity sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA== + +videojs-hls-quality-selector@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/videojs-hls-quality-selector/-/videojs-hls-quality-selector-1.1.4.tgz#281b78c6653137b08c544e806aa9c91b71d16989" + integrity sha512-wWAjlLQui02gp//t9KHGd3XnbYO7wdOptskh3ZYCrbl/5Lbkveqb9yBVjH4e0zIQBPvGdWPMcOeDukf8iuYeBw== + dependencies: + global "^4.3.2" + karma-safaritechpreview-launcher "0.0.6" + video.js "^7.5.5" + videojs-contrib-quality-levels "^2.0.9" + +videojs-ie8@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/videojs-ie8/-/videojs-ie8-1.1.2.tgz#a23d3d8608ad7192b69c6077fc4eb848998d35d9" + integrity sha1-oj09hgitcZK2nGB3/E64SJmNNdk= + dependencies: + es5-shim "^4.5.1" + +videojs-vtt.js@0.12.6: + version "0.12.6" + resolved "https://registry.yarnpkg.com/videojs-vtt.js/-/videojs-vtt.js-0.12.6.tgz#e078600bda899eaa6f9c3307134cd0c811947b8e" + integrity sha512-XFXeGBQiljnElMhwCcZst0RDbZn2n8LU7ZScXryd3a00OaZsHAjdZu/7/RdSr7Z1jHphd45FnOvOQkGK4YrWCQ== + dependencies: + global "^4.3.1" + +videojs-vtt.js@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/videojs-vtt.js/-/videojs-vtt.js-0.15.3.tgz#84260393b79487fcf195d9372f812d7fab83a993" + integrity sha512-5FvVsICuMRx6Hd7H/Y9s9GDeEtYcXQWzGMS+sl4UX3t/zoHp3y+isSfIPRochnTH7h+Bh1ILyC639xy9Z6kPag== + dependencies: + global "^4.3.1" + vm-browserify@1.1.2, vm-browserify@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" @@ -7754,6 +8388,11 @@ webidl-conversions@^4.0.2: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webwackify@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/webwackify/-/webwackify-0.1.6.tgz#1d42a12ac61823d7e345abde084eaaa62a4a95eb" + integrity sha512-pGcw1T3HpNnM/UTRQqqRkkkzythSLts05mB+7Gr00B+0VbL0m39dFL5g20rSIEUt9Wrpw+/8k+snxRlUFHhcqA== + whatwg-fetch@^3.4.1: version "3.6.2" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" @@ -7844,6 +8483,16 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +xhr@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.4.0.tgz#e16e66a45f869861eeefab416d5eff722dc40993" + integrity sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM= + dependencies: + global "~4.3.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + xml2js@^0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"