mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 21:46:11 +05:00
torrent is parsing when added
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
"konva": "^8.0.1",
|
"konva": "^8.0.1",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"material-ui-image": "^3.3.2",
|
"material-ui-image": "^3.3.2",
|
||||||
|
"parse-torrent": "^9.1.3",
|
||||||
"parse-torrent-title": "^1.3.0",
|
"parse-torrent-title": "^1.3.0",
|
||||||
"react": "^17.0.2",
|
"react": "^17.0.2",
|
||||||
"react-copy-to-clipboard": "^5.0.3",
|
"react-copy-to-clipboard": "^5.0.3",
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { useCallback, useMemo, useState } from 'react'
|
import { useCallback, useEffect, useMemo, useState } from 'react'
|
||||||
import Button from '@material-ui/core/Button'
|
import Button from '@material-ui/core/Button'
|
||||||
import TextField from '@material-ui/core/TextField'
|
import TextField from '@material-ui/core/TextField'
|
||||||
import Dialog from '@material-ui/core/Dialog'
|
import Dialog from '@material-ui/core/Dialog'
|
||||||
@@ -12,11 +12,14 @@ import useChangeLanguage from 'utils/useChangeLanguage'
|
|||||||
import { Cancel as CancelIcon } from '@material-ui/icons'
|
import { Cancel as CancelIcon } from '@material-ui/icons'
|
||||||
import { useDropzone } from 'react-dropzone'
|
import { useDropzone } from 'react-dropzone'
|
||||||
import { useMediaQuery } from '@material-ui/core'
|
import { useMediaQuery } from '@material-ui/core'
|
||||||
|
import parseTorrent from 'parse-torrent'
|
||||||
|
import ptt from 'parse-torrent-title'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ButtonWrapper,
|
ButtonWrapper,
|
||||||
CancelIconWrapper,
|
CancelIconWrapper,
|
||||||
ClearPosterButton,
|
ClearPosterButton,
|
||||||
|
PosterLanguageSwitch,
|
||||||
Content,
|
Content,
|
||||||
Header,
|
Header,
|
||||||
IconWrapper,
|
IconWrapper,
|
||||||
@@ -36,7 +39,7 @@ import { checkImageURL, getMoviePosters } from './helpers'
|
|||||||
export default function AddDialog({ handleClose }) {
|
export default function AddDialog({ handleClose }) {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const [torrentSource, setTorrentSource] = useState('')
|
const [torrentSource, setTorrentSource] = useState('')
|
||||||
const [torrentSourceSelected, setTorrentSourceSelected] = useState(false)
|
const [isTorrentSourceActive, setIsTorrentSourceActive] = useState(false)
|
||||||
const [title, setTitle] = useState('')
|
const [title, setTitle] = useState('')
|
||||||
const [posterUrl, setPosterUrl] = useState('')
|
const [posterUrl, setPosterUrl] = useState('')
|
||||||
const [isPosterUrlCorrect, setIsPosterUrlCorrect] = useState(false)
|
const [isPosterUrlCorrect, setIsPosterUrlCorrect] = useState(false)
|
||||||
@@ -44,16 +47,63 @@ export default function AddDialog({ handleClose }) {
|
|||||||
const [isUserInteractedWithPoster, setIsUserInteractedWithPoster] = useState(false)
|
const [isUserInteractedWithPoster, setIsUserInteractedWithPoster] = useState(false)
|
||||||
const [currentLang] = useChangeLanguage()
|
const [currentLang] = useChangeLanguage()
|
||||||
const [selectedFile, setSelectedFile] = useState()
|
const [selectedFile, setSelectedFile] = useState()
|
||||||
|
const [posterSearchLanguage, setPosterSearchLanguage] = useState(currentLang === 'ru' ? 'ru' : 'en')
|
||||||
|
|
||||||
const fullScreen = useMediaQuery('@media (max-width:930px)')
|
const fullScreen = useMediaQuery('@media (max-width:930px)')
|
||||||
|
|
||||||
const handleCapture = useCallback(files => {
|
const posterSearch = useMemo(
|
||||||
|
() => (movieName, language) => {
|
||||||
|
getMoviePosters(movieName, language).then(urlList => {
|
||||||
|
if (urlList) {
|
||||||
|
setPosterList(urlList)
|
||||||
|
if (isUserInteractedWithPoster) return
|
||||||
|
|
||||||
|
const [firstPoster] = urlList
|
||||||
|
checkImageURL(firstPoster).then(correctImage => {
|
||||||
|
if (correctImage) {
|
||||||
|
setIsPosterUrlCorrect(true)
|
||||||
|
setPosterUrl(firstPoster)
|
||||||
|
} else removePoster()
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
setPosterList()
|
||||||
|
if (isUserInteractedWithPoster) return
|
||||||
|
|
||||||
|
removePoster()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
[isUserInteractedWithPoster],
|
||||||
|
)
|
||||||
|
|
||||||
|
const delayedPosterSearch = useMemo(() => debounce(posterSearch, 700), [posterSearch])
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
parseTorrent.remote(selectedFile || torrentSource, (err, parsedTorrent) => {
|
||||||
|
if (err) throw err
|
||||||
|
if (!parsedTorrent.name) return
|
||||||
|
|
||||||
|
const torrentName = ptt.parse(parsedTorrent.name).title
|
||||||
|
const fileInsideTorrentName = parsedTorrent.files ? ptt.parse(parsedTorrent.files[0].name).title : null
|
||||||
|
|
||||||
|
let value = torrentName
|
||||||
|
if (fileInsideTorrentName) {
|
||||||
|
value = torrentName.length < fileInsideTorrentName.length ? torrentName : fileInsideTorrentName
|
||||||
|
}
|
||||||
|
|
||||||
|
setTitle(value)
|
||||||
|
delayedPosterSearch(value, posterSearchLanguage)
|
||||||
|
})
|
||||||
|
}, [selectedFile, delayedPosterSearch, torrentSource, posterSearchLanguage])
|
||||||
|
|
||||||
|
const handleCapture = files => {
|
||||||
const [file] = files
|
const [file] = files
|
||||||
if (!file) return
|
if (!file) return
|
||||||
|
|
||||||
|
setIsUserInteractedWithPoster(false)
|
||||||
setSelectedFile(file)
|
setSelectedFile(file)
|
||||||
setTorrentSource(file.name)
|
setTorrentSource(file.name)
|
||||||
}, [])
|
}
|
||||||
|
|
||||||
const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop: handleCapture, accept: '.torrent' })
|
const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop: handleCapture, accept: '.torrent' })
|
||||||
|
|
||||||
@@ -62,36 +112,10 @@ export default function AddDialog({ handleClose }) {
|
|||||||
setPosterUrl('')
|
setPosterUrl('')
|
||||||
}
|
}
|
||||||
|
|
||||||
const delayedPosterSearch = useMemo(
|
|
||||||
() =>
|
|
||||||
debounce(movieName => {
|
|
||||||
getMoviePosters(movieName, currentLang === 'ru' ? 'ru' : 'en').then(urlList => {
|
|
||||||
if (urlList) {
|
|
||||||
setPosterList(urlList)
|
|
||||||
if (isUserInteractedWithPoster) return
|
|
||||||
|
|
||||||
const [firstPoster] = urlList
|
|
||||||
checkImageURL(firstPoster).then(correctImage => {
|
|
||||||
if (correctImage) {
|
|
||||||
setIsPosterUrlCorrect(true)
|
|
||||||
setPosterUrl(firstPoster)
|
|
||||||
} else removePoster()
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
setPosterList()
|
|
||||||
if (isUserInteractedWithPoster) return
|
|
||||||
|
|
||||||
removePoster()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}, 700),
|
|
||||||
[isUserInteractedWithPoster, currentLang],
|
|
||||||
)
|
|
||||||
|
|
||||||
const handleTorrentSourceChange = ({ target: { value } }) => setTorrentSource(value)
|
const handleTorrentSourceChange = ({ target: { value } }) => setTorrentSource(value)
|
||||||
const handleTitleChange = ({ target: { value } }) => {
|
const handleTitleChange = ({ target: { value } }) => {
|
||||||
setTitle(value)
|
setTitle(value)
|
||||||
delayedPosterSearch(value)
|
delayedPosterSearch(value, posterSearchLanguage)
|
||||||
}
|
}
|
||||||
const handlePosterUrlChange = ({ target: { value } }) => {
|
const handlePosterUrlChange = ({ target: { value } }) => {
|
||||||
setPosterUrl(value)
|
setPosterUrl(value)
|
||||||
@@ -174,6 +198,22 @@ export default function AddDialog({ handleClose }) {
|
|||||||
))}
|
))}
|
||||||
</PosterSuggestions>
|
</PosterSuggestions>
|
||||||
|
|
||||||
|
{currentLang !== 'en' && (
|
||||||
|
<PosterLanguageSwitch
|
||||||
|
onClick={() => {
|
||||||
|
setPosterSearchLanguage(posterSearchLanguage === 'en' ? 'ru' : 'en')
|
||||||
|
posterSearch(title, posterSearchLanguage === 'en' ? 'ru' : 'en')
|
||||||
|
setIsUserInteractedWithPoster(false)
|
||||||
|
}}
|
||||||
|
showbutton={+isPosterUrlCorrect}
|
||||||
|
color='primary'
|
||||||
|
variant='contained'
|
||||||
|
size='small'
|
||||||
|
>
|
||||||
|
{posterSearchLanguage === 'en' ? 'EN' : 'RU'}
|
||||||
|
</PosterLanguageSwitch>
|
||||||
|
)}
|
||||||
|
|
||||||
<ClearPosterButton
|
<ClearPosterButton
|
||||||
showbutton={+isPosterUrlCorrect}
|
showbutton={+isPosterUrlCorrect}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
@@ -183,7 +223,6 @@ export default function AddDialog({ handleClose }) {
|
|||||||
color='primary'
|
color='primary'
|
||||||
variant='contained'
|
variant='contained'
|
||||||
size='small'
|
size='small'
|
||||||
disabled={!posterUrl}
|
|
||||||
>
|
>
|
||||||
{t('Clear')}
|
{t('Clear')}
|
||||||
</ClearPosterButton>
|
</ClearPosterButton>
|
||||||
@@ -191,7 +230,7 @@ export default function AddDialog({ handleClose }) {
|
|||||||
</LeftSide>
|
</LeftSide>
|
||||||
|
|
||||||
<RightSide>
|
<RightSide>
|
||||||
<RightSideTopSection active={torrentSourceSelected}>
|
<RightSideTopSection active={isTorrentSourceActive}>
|
||||||
<TextField
|
<TextField
|
||||||
onChange={handleTorrentSourceChange}
|
onChange={handleTorrentSourceChange}
|
||||||
value={torrentSource}
|
value={torrentSource}
|
||||||
@@ -200,8 +239,8 @@ export default function AddDialog({ handleClose }) {
|
|||||||
helperText={t('TorrentSourceOptions')}
|
helperText={t('TorrentSourceOptions')}
|
||||||
type='text'
|
type='text'
|
||||||
fullWidth
|
fullWidth
|
||||||
onFocus={() => setTorrentSourceSelected(true)}
|
onFocus={() => setIsTorrentSourceActive(true)}
|
||||||
onBlur={() => setTorrentSourceSelected(false)}
|
onBlur={() => setIsTorrentSourceActive(false)}
|
||||||
inputProps={{ autoComplete: 'off' }}
|
inputProps={{ autoComplete: 'off' }}
|
||||||
disabled={!!selectedFile}
|
disabled={!!selectedFile}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -225,6 +225,38 @@ export const ClearPosterButton = styled(Button)`
|
|||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
export const PosterLanguageSwitch = styled.div`
|
||||||
|
grid-area: poster;
|
||||||
|
z-index: 5;
|
||||||
|
/* justify-self: center; */
|
||||||
|
/* transform: translateY(-50%); */
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
background: #74c39c;
|
||||||
|
border-radius: 50%;
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
color: #e1f4eb;
|
||||||
|
font-weight: 500;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.3s;
|
||||||
|
/* padding: 0; */
|
||||||
|
|
||||||
|
${({ showbutton }) => !showbutton && 'display: none'};
|
||||||
|
|
||||||
|
/* @media (max-width: 540px) {
|
||||||
|
transform: translateY(-140%);
|
||||||
|
} */
|
||||||
|
|
||||||
|
:hover {
|
||||||
|
filter: brightness(1.1);
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
export const ButtonWrapper = styled.div`
|
export const ButtonWrapper = styled.div`
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -3223,6 +3223,18 @@ batch@0.6.1:
|
|||||||
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
|
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
|
||||||
integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
|
integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
|
||||||
|
|
||||||
|
bencode@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/bencode/-/bencode-2.0.1.tgz#667a6a31c5e038d558608333da6b7c94e836c85b"
|
||||||
|
integrity sha512-2uhEl8FdjSBUyb69qDTgOEeeqDTa+n3yMQzLW0cOzNf1Ow5bwcg3idf+qsWisIKRH8Bk8oC7UXL8irRcPA8ZEQ==
|
||||||
|
dependencies:
|
||||||
|
safe-buffer "^5.1.1"
|
||||||
|
|
||||||
|
bep53-range@^1.1.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/bep53-range/-/bep53-range-1.1.0.tgz#a009311710c955d27eb3a30cf329e8c139693d27"
|
||||||
|
integrity sha512-yGQTG4NtwTciX0Bkgk1FqQL4p+NiCQKpTSFho2lrxvUkXIlzyJDwraj8aYxAxRZMnnOhRr7QlIBoMRPEnIR34Q==
|
||||||
|
|
||||||
bfj@^7.0.2:
|
bfj@^7.0.2:
|
||||||
version "7.0.2"
|
version "7.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2"
|
resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2"
|
||||||
@@ -3260,6 +3272,11 @@ bindings@^1.5.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
file-uri-to-path "1.0.0"
|
file-uri-to-path "1.0.0"
|
||||||
|
|
||||||
|
blob-to-buffer@^1.2.9:
|
||||||
|
version "1.2.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz#a17fd6c1c564011408f8971e451544245daaa84a"
|
||||||
|
integrity sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==
|
||||||
|
|
||||||
bluebird@^3.5.5:
|
bluebird@^3.5.5:
|
||||||
version "3.7.2"
|
version "3.7.2"
|
||||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
|
||||||
@@ -4528,6 +4545,13 @@ decode-uri-component@^0.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
||||||
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
||||||
|
|
||||||
|
decompress-response@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
|
||||||
|
integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
|
||||||
|
dependencies:
|
||||||
|
mimic-response "^3.1.0"
|
||||||
|
|
||||||
dedent@^0.7.0:
|
dedent@^0.7.0:
|
||||||
version "0.7.0"
|
version "0.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
|
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
|
||||||
@@ -5968,6 +5992,11 @@ get-package-type@^0.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
|
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
|
||||||
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
|
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
|
||||||
|
|
||||||
|
get-stdin@^8.0.0:
|
||||||
|
version "8.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
|
||||||
|
integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
|
||||||
|
|
||||||
get-stream@^4.0.0:
|
get-stream@^4.0.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
|
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
|
||||||
@@ -8143,6 +8172,14 @@ magic-string@^0.25.0, magic-string@^0.25.7:
|
|||||||
dependencies:
|
dependencies:
|
||||||
sourcemap-codec "^1.4.4"
|
sourcemap-codec "^1.4.4"
|
||||||
|
|
||||||
|
magnet-uri@^6.0.0:
|
||||||
|
version "6.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/magnet-uri/-/magnet-uri-6.2.0.tgz#10f7be050bf23452df210838239b118463c3eeff"
|
||||||
|
integrity sha512-O9AgdDwT771fnUj0giPYu/rACpz8173y8UXCSOdLITjOVfBenZ9H9q3FqQmveK+ORUMuD+BkKNSZP8C3+IMAKQ==
|
||||||
|
dependencies:
|
||||||
|
bep53-range "^1.1.0"
|
||||||
|
thirty-two "^1.0.2"
|
||||||
|
|
||||||
make-dir@^2.0.0, make-dir@^2.1.0:
|
make-dir@^2.0.0, make-dir@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
|
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
|
||||||
@@ -8338,6 +8375,11 @@ mimic-fn@^2.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||||
|
|
||||||
|
mimic-response@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
|
||||||
|
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
|
||||||
|
|
||||||
mini-css-extract-plugin@0.11.3:
|
mini-css-extract-plugin@0.11.3:
|
||||||
version "0.11.3"
|
version "0.11.3"
|
||||||
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6"
|
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6"
|
||||||
@@ -9100,6 +9142,19 @@ parse-torrent-title@^1.3.0:
|
|||||||
resolved "https://registry.yarnpkg.com/parse-torrent-title/-/parse-torrent-title-1.3.0.tgz#3dedea10277b17998b124a4fd67d9e190b0306b8"
|
resolved "https://registry.yarnpkg.com/parse-torrent-title/-/parse-torrent-title-1.3.0.tgz#3dedea10277b17998b124a4fd67d9e190b0306b8"
|
||||||
integrity sha512-R5wya73/Ef0qUhb9177Ko8nRQyN1ziWD5DPnlrDrrgcchUnmIrG//cPENunvFYRZCLDZosXTKTo7TpQ2Pgbryg==
|
integrity sha512-R5wya73/Ef0qUhb9177Ko8nRQyN1ziWD5DPnlrDrrgcchUnmIrG//cPENunvFYRZCLDZosXTKTo7TpQ2Pgbryg==
|
||||||
|
|
||||||
|
parse-torrent@^9.1.3:
|
||||||
|
version "9.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/parse-torrent/-/parse-torrent-9.1.3.tgz#9b4bc8dca243b356bf449938d6d38a259a2a707c"
|
||||||
|
integrity sha512-/Yr951CvJM8S6TjMaqrsmMxeQEAjDeCX+MZ3hGXXc7DG2wqzp/rzOsHtDzIVqN6NsFRCqy6wYLF/W7Sgvq7bXw==
|
||||||
|
dependencies:
|
||||||
|
bencode "^2.0.1"
|
||||||
|
blob-to-buffer "^1.2.9"
|
||||||
|
get-stdin "^8.0.0"
|
||||||
|
magnet-uri "^6.0.0"
|
||||||
|
queue-microtask "^1.2.2"
|
||||||
|
simple-get "^4.0.0"
|
||||||
|
simple-sha1 "^3.0.1"
|
||||||
|
|
||||||
parse5@6.0.1:
|
parse5@6.0.1:
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
|
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
|
||||||
@@ -10983,6 +11038,11 @@ run-queue@^1.0.0, run-queue@^1.0.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
aproba "^1.1.1"
|
aproba "^1.1.1"
|
||||||
|
|
||||||
|
rusha@^0.8.13:
|
||||||
|
version "0.8.14"
|
||||||
|
resolved "https://registry.yarnpkg.com/rusha/-/rusha-0.8.14.tgz#a977d0de9428406138b7bb90d3de5dcd024e2f68"
|
||||||
|
integrity sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==
|
||||||
|
|
||||||
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||||
version "5.1.2"
|
version "5.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||||
@@ -11276,6 +11336,28 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
||||||
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
||||||
|
|
||||||
|
simple-concat@^1.0.0:
|
||||||
|
version "1.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
|
||||||
|
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
||||||
|
|
||||||
|
simple-get@^4.0.0:
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.0.tgz#73fa628278d21de83dadd5512d2cc1f4872bd675"
|
||||||
|
integrity sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ==
|
||||||
|
dependencies:
|
||||||
|
decompress-response "^6.0.0"
|
||||||
|
once "^1.3.1"
|
||||||
|
simple-concat "^1.0.0"
|
||||||
|
|
||||||
|
simple-sha1@^3.0.1:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/simple-sha1/-/simple-sha1-3.1.0.tgz#40cac8436dfaf9924332fc46a5c7bca45f656131"
|
||||||
|
integrity sha512-ArTptMRC1v08H8ihPD6l0wesKvMfF9e8XL5rIHPanI7kGOsSsbY514MwVu6X1PITHCTB2F08zB7cyEbfc4wQjg==
|
||||||
|
dependencies:
|
||||||
|
queue-microtask "^1.2.2"
|
||||||
|
rusha "^0.8.13"
|
||||||
|
|
||||||
simple-swizzle@^0.2.2:
|
simple-swizzle@^0.2.2:
|
||||||
version "0.2.2"
|
version "0.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
||||||
@@ -11998,6 +12080,11 @@ textextensions@^3.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-3.3.0.tgz#03530d5287b86773c08b77458589148870cc71d3"
|
resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-3.3.0.tgz#03530d5287b86773c08b77458589148870cc71d3"
|
||||||
integrity sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==
|
integrity sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==
|
||||||
|
|
||||||
|
thirty-two@^1.0.2:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/thirty-two/-/thirty-two-1.0.2.tgz#4ca2fffc02a51290d2744b9e3f557693ca6b627a"
|
||||||
|
integrity sha1-TKL//AKlEpDSdEueP1V2k8prYno=
|
||||||
|
|
||||||
throat@^5.0.0:
|
throat@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
|
resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b"
|
||||||
|
|||||||
Reference in New Issue
Block a user