feat: dplayer

This commit is contained in:
mozzie 2023-03-02 16:40:25 +08:00
parent d4a845c59c
commit c215c6fa37
7 changed files with 155 additions and 80 deletions

View File

@ -10,5 +10,6 @@
<body>
<div id="bs-app"></div>
<script type="module" src="/src/main.tsx"></script>
<script src="/hls.js"></script>
</body>
</html>

View File

@ -18,7 +18,8 @@
"@ricons/utils": "0.1.6",
"dayjs": "1.11.7",
"identicon": "3.1.1",
"react-perfect-scrollbar": "1.5.8"
"react-perfect-scrollbar": "1.5.8",
"dplayer": "1.27.1"
},
"devDependencies": {
"@types/react": "^18.0.27",
@ -27,6 +28,7 @@
"@vitejs/plugin-react": "^3.1.0",
"vite-tsconfig-paths": "4.0.5",
"typescript": "^4.9.3",
"vite": "^4.1.0"
"vite": "^4.1.0",
"@types/dplayer": "1.25.2"
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
.dplayer-menu {
display: none !important;
}

View File

@ -0,0 +1,38 @@
import { useEffect, useRef } from "react";
import DPlayer from "dplayer";
import './index.less'
interface IProps {
video: {
url: string;
pic: string;
};
}
function Player(props: IProps) {
const playerRef = useRef<any>();
useEffect(() => {
if (props.video) {
new DPlayer({
container: playerRef.current,
video: {
...props.video,
type: "hls",
},
preload: "auto",
playbackSpeed: [0.5, 0.75, 1, 1.25, 1.5, 2],
screenshot: true,
pluginOptions: {
hls: {
// hls config
},
},
});
}
}, [props.video]);
return <div id="vs" ref={playerRef} style={{ height: "100%" }}></div>;
}
export default Player;

View File

@ -1,12 +1,12 @@
import { useEffect, useState } from "react";
import "./index.less";
import { ResizeBox, Space, Result, Button, Spin } from "@arco-design/web-react";
import { ResizeBox, Space, Result, Button } from "@arco-design/web-react";
import { Icon } from "@ricons/utils";
import "react-perfect-scrollbar/dist/css/styles.css";
import PerfectScrollbar from "react-perfect-scrollbar";
import Player, { IVideo } from "./components/Player";
import Material from "./components/Material";
import { useMount } from "../../hook";
import Player from "./components/DPlayer";
function CourseDetail() {
const [toc, setToc] = useState([
@ -25,14 +25,28 @@ function CourseDetail() {
level: 2,
time: "3:23",
active: false,
video: { fileID: "243791579995468466", appID: "1500018521" },
view: (
<Player
video={{
url: "https://1500018521.vod2.myqcloud.com/a28b6648vodtranssh1500018521/3fb96ced243791579995468466/adp.10.m3u8",
pic: "https://1500018521.vod2.myqcloud.com/a28b6648vodtranssh1500018521/3fb96ced243791579995468466/coverBySnapshot_10_0.jpg",
}}
/>
),
},
{
title: "Vite + React + TS - Google Chrome 2023-02-15 09-55-08",
level: 2,
time: "4:13",
active: false,
video: { fileID: "243791580097740418", appID: "1500018521" },
view: (
<Player
video={{
url: "https://1500018521.vod2.myqcloud.com/a28b6648vodtranssh1500018521/29226db4243791580097740418/adp.10.m3u8",
pic: "https://1500018521.vod2.myqcloud.com/a28b6648vodtranssh1500018521/29226db4243791580097740418/coverBySnapshot/coverBySnapshot_10_0.jpg",
}}
/>
),
},
{
title: "使用CSS",
@ -52,14 +66,12 @@ function CourseDetail() {
},
]);
const [spinVisible, setSpinVisible] = useState(false);
const [video, setVideo] = useState<IVideo | null>(null);
const [view, setView] = useState<any>(null);
const notFound = (
<Result
status="403"
subTitle="挖宝藏,请加入矿工"
extra={<Button type="text">1</Button>}
subTitle="无权访问"
extra={<Button type="text"></Button>}
></Result>
);
@ -75,12 +87,7 @@ function CourseDetail() {
setToc((t: any) =>
t.map((p: any) => ({ ...p, active: i.title === p.title }))
);
if (i.video) {
setVideo(i.video);
setView(null);
} else {
setView(i.view ?? notFound);
}
};
return (
@ -125,22 +132,7 @@ function CourseDetail() {
</aside>
</PerfectScrollbar>,
<article>
{spinVisible ? (
<div className="mask">
<Spin tip="内容准备中..." loading />
</div>
) : (
<main>
{view}
{/* 默认隐藏播放器 */}
<div
style={{ display: !view ? "block" : "none" }}
className="player-container"
>
<Player video={video} />
</div>
</main>
)}
<main>{view}</main>
</article>,
]}
/>

View File

@ -180,11 +180,13 @@ importers:
'@arco-design/web-react': 2.45.0
'@ricons/fluent': 0.12.0
'@ricons/utils': 0.1.6
'@types/dplayer': 1.25.2
'@types/react': ^18.0.27
'@types/react-dom': ^18.0.10
'@types/react-router-dom': 5.3.3
'@vitejs/plugin-react': ^3.1.0
dayjs: 1.11.7
dplayer: 1.27.1
identicon: 3.1.1
less: ^4.1.3
react: ^18.2.0
@ -199,6 +201,7 @@ importers:
'@ricons/fluent': registry.npmmirror.com/@ricons/fluent/0.12.0
'@ricons/utils': 0.1.6_biqbaboplfbrettd7655fr4n2y
dayjs: registry.npmmirror.com/dayjs/1.11.7
dplayer: registry.npmmirror.com/dplayer/1.27.1
identicon: registry.npmmirror.com/identicon/3.1.1
less: registry.npmmirror.com/less/4.1.3
react: registry.npmmirror.com/react/18.2.0
@ -206,6 +209,7 @@ importers:
react-perfect-scrollbar: registry.npmmirror.com/react-perfect-scrollbar/1.5.8_biqbaboplfbrettd7655fr4n2y
react-router-dom: registry.npmmirror.com/react-router-dom/6.8.0_biqbaboplfbrettd7655fr4n2y
devDependencies:
'@types/dplayer': registry.npmmirror.com/@types/dplayer/1.25.2
'@types/react': registry.npmmirror.com/@types/react/18.0.27
'@types/react-dom': registry.npmmirror.com/@types/react-dom/18.0.10
'@types/react-router-dom': registry.npmmirror.com/@types/react-router-dom/5.3.3
@ -1365,19 +1369,6 @@ packages:
css-render: 0.13.9
dev: false
/ansi-styles/3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
engines: {node: '>=4'}
dependencies:
color-convert: registry.npmmirror.com/color-convert/1.9.3
dev: true
/ansi-styles/4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
dependencies:
color-convert: registry.npmmirror.com/color-convert/2.0.1
/babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.21.0:
resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==}
peerDependencies:
@ -1418,14 +1409,6 @@ packages:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
dev: true
/chalk/4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
dependencies:
ansi-styles: 4.3.0
supports-color: 7.2.0
dev: true
/core-js-compat/3.28.0:
resolution: {integrity: sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==}
dependencies:
@ -1467,16 +1450,6 @@ packages:
engines: {node: '>=4'}
dev: true
/has-flag/3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
dev: true
/has-flag/4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
dev: true
/is-extglob/2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@ -1567,13 +1540,6 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
/supports-color/7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
dependencies:
has-flag: 4.0.0
dev: true
/to-fast-properties/2.0.0:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'}
@ -4074,6 +4040,12 @@ packages:
'@types/node': registry.npmmirror.com/@types/node/18.13.0
dev: true
registry.npmmirror.com/@types/dplayer/1.25.2:
resolution: {integrity: sha512-bkTVZkK3Vi7N7eX2FUBnqKhCjTaeRLkhvY8H6zolatbSTtjPPdxyUzhE3C29sIBYRRq1kQHSduFgCHKg5VF3Jw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/dplayer/-/dplayer-1.25.2.tgz}
name: '@types/dplayer'
version: 1.25.2
dev: true
registry.npmmirror.com/@types/eslint-scope/3.7.4:
resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz}
name: '@types/eslint-scope'
@ -5054,6 +5026,15 @@ packages:
version: 5.0.1
engines: {node: '>=8'}
registry.npmmirror.com/ansi-styles/3.2.1:
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz}
name: ansi-styles
version: 3.2.1
engines: {node: '>=4'}
dependencies:
color-convert: registry.npmmirror.com/color-convert/1.9.3
dev: true
registry.npmmirror.com/ansi-styles/4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz}
name: ansi-styles
@ -5263,7 +5244,6 @@ packages:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz}
name: asynckit
version: 0.4.0
dev: true
registry.npmmirror.com/autoprefixer/10.4.13_postcss@8.4.21:
resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.13.tgz}
@ -5298,6 +5278,18 @@ packages:
dev: true
optional: true
registry.npmmirror.com/axios/1.2.3:
resolution: {integrity: sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/axios/-/axios-1.2.3.tgz}
name: axios
version: 1.2.3
dependencies:
follow-redirects: registry.npmmirror.com/follow-redirects/1.15.2
form-data: registry.npmmirror.com/form-data/4.0.0
proxy-from-env: registry.npmmirror.com/proxy-from-env/1.1.0
transitivePeerDependencies:
- debug
dev: false
registry.npmmirror.com/b-tween/0.3.3:
resolution: {integrity: sha512-oEHegcRpA7fAuc9KC4nktucuZn2aS8htymCPcP3qkEGPqiBH+GfqtqoG2l7LxHngg6O0HFM7hOeOYExl1Oz4ZA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/b-tween/-/b-tween-0.3.3.tgz}
name: b-tween
@ -5334,6 +5326,12 @@ packages:
name: balanced-match
version: 1.0.2
registry.npmmirror.com/balloon-css/1.2.0:
resolution: {integrity: sha512-urXwkHgwp6GsXVF+it01485Z2Cj4pnW02ICnM0TemOlkKmCNnDLmyy+ZZiRXBpwldUXO+aRNr7Hdia4CBvXJ5A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/balloon-css/-/balloon-css-1.2.0.tgz}
name: balloon-css
version: 1.2.0
dev: false
registry.npmmirror.com/base64-js/1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz}
name: base64-js
@ -5387,7 +5385,7 @@ packages:
dependencies:
ansi-align: registry.npmmirror.com/ansi-align/3.0.1
camelcase: registry.npmmirror.com/camelcase/6.3.0
chalk: 4.1.2
chalk: registry.npmmirror.com/chalk/4.1.2
cli-boxes: registry.npmmirror.com/cli-boxes/2.2.1
string-width: registry.npmmirror.com/string-width/4.2.3
type-fest: registry.npmmirror.com/type-fest/0.20.2
@ -5614,7 +5612,7 @@ packages:
version: 2.4.2
engines: {node: '>=4'}
dependencies:
ansi-styles: 3.2.1
ansi-styles: registry.npmmirror.com/ansi-styles/3.2.1
escape-string-regexp: registry.npmmirror.com/escape-string-regexp/1.0.5
supports-color: registry.npmmirror.com/supports-color/5.5.0
dev: true
@ -5876,7 +5874,6 @@ packages:
engines: {node: '>= 0.8'}
dependencies:
delayed-stream: registry.npmmirror.com/delayed-stream/1.0.0
dev: true
registry.npmmirror.com/commander/2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz}
@ -6411,7 +6408,6 @@ packages:
name: delayed-stream
version: 1.0.0
engines: {node: '>=0.4.0'}
dev: true
registry.npmmirror.com/delegates/1.0.0:
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz}
@ -6577,6 +6573,18 @@ packages:
engines: {node: '>=12'}
dev: false
registry.npmmirror.com/dplayer/1.27.1:
resolution: {integrity: sha512-2laBMXs5V1B9zPwJ7eAIw/OBo+Xjvy03i4GHTk3Cg+IWbrq8rKMFO0fFr6ClAYotYOCcFGOvaJDkOZcgKllsCA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dplayer/-/dplayer-1.27.1.tgz}
name: dplayer
version: 1.27.1
dependencies:
axios: registry.npmmirror.com/axios/1.2.3
balloon-css: registry.npmmirror.com/balloon-css/1.2.0
promise-polyfill: registry.npmmirror.com/promise-polyfill/8.3.0
transitivePeerDependencies:
- debug
dev: false
registry.npmmirror.com/duplexer/0.1.2:
resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz}
name: duplexer
@ -7287,6 +7295,18 @@ packages:
tslib: registry.npmmirror.com/tslib/2.5.0
dev: false
registry.npmmirror.com/follow-redirects/1.15.2:
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz}
name: follow-redirects
version: 1.15.2
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
peerDependenciesMeta:
debug:
optional: true
dev: false
registry.npmmirror.com/forever-agent/0.6.1:
resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz}
name: forever-agent
@ -7315,7 +7335,6 @@ packages:
asynckit: registry.npmmirror.com/asynckit/0.4.0
combined-stream: registry.npmmirror.com/combined-stream/1.0.8
mime-types: registry.npmmirror.com/mime-types/2.1.35
dev: true
registry.npmmirror.com/formidable/2.1.2:
resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/formidable/-/formidable-2.1.2.tgz}
@ -7694,6 +7713,13 @@ packages:
engines: {node: '>=6'}
dev: true
registry.npmmirror.com/has-flag/3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz}
name: has-flag
version: 3.0.0
engines: {node: '>=4'}
dev: true
registry.npmmirror.com/has-flag/4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz}
name: has-flag
@ -8314,7 +8340,7 @@ packages:
hasBin: true
dependencies:
async: registry.npmmirror.com/async/3.2.4
chalk: 4.1.2
chalk: registry.npmmirror.com/chalk/4.1.2
filelist: registry.npmmirror.com/filelist/1.0.4
minimatch: registry.npmmirror.com/minimatch/3.1.2
dev: true
@ -10453,6 +10479,12 @@ packages:
bluebird: registry.npmmirror.com/bluebird/3.7.2
dev: true
registry.npmmirror.com/promise-polyfill/8.3.0:
resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/promise-polyfill/-/promise-polyfill-8.3.0.tgz}
name: promise-polyfill
version: 8.3.0
dev: false
registry.npmmirror.com/promise.series/0.2.0:
resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/promise.series/-/promise.series-0.2.0.tgz}
name: promise.series
@ -10480,6 +10512,12 @@ packages:
react-is: registry.npmmirror.com/react-is/16.13.1
dev: false
registry.npmmirror.com/proxy-from-env/1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz}
name: proxy-from-env
version: 1.1.0
dev: false
registry.npmmirror.com/prr/1.0.1:
resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz}
name: prr
@ -12103,7 +12141,7 @@ packages:
version: 4.0.0
engines: {node: '>=10'}
dependencies:
ansi-styles: 4.3.0
ansi-styles: registry.npmmirror.com/ansi-styles/4.3.0
astral-regex: registry.npmmirror.com/astral-regex/2.0.0
is-fullwidth-code-point: registry.npmmirror.com/is-fullwidth-code-point/3.0.0
dev: true
@ -12439,7 +12477,7 @@ packages:
version: 5.5.0
engines: {node: '>=4'}
dependencies:
has-flag: 3.0.0
has-flag: registry.npmmirror.com/has-flag/3.0.0
dev: true
registry.npmmirror.com/supports-color/7.2.0:
@ -13556,7 +13594,7 @@ packages:
version: 7.0.0
engines: {node: '>=10'}
dependencies:
ansi-styles: 4.3.0
ansi-styles: registry.npmmirror.com/ansi-styles/4.3.0
string-width: registry.npmmirror.com/string-width/4.2.3
strip-ansi: registry.npmmirror.com/strip-ansi/6.0.1