mirror of
https://github.com/sussy-code/smov.git
synced 2024-12-20 14:37:43 +01:00
update sudo-flix
This commit is contained in:
commit
d32e285d8d
14 changed files with 579 additions and 94 deletions
|
@ -23,6 +23,7 @@ ARG ONBOARDING_PROXY_INSTALL_LINK
|
||||||
ARG DISALLOWED_IDS
|
ARG DISALLOWED_IDS
|
||||||
ARG CDN_REPLACEMENTS
|
ARG CDN_REPLACEMENTS
|
||||||
ARG TURNSTILE_KEY
|
ARG TURNSTILE_KEY
|
||||||
|
ARG ALLOW_AUTOPLAY="false"
|
||||||
|
|
||||||
ENV VITE_PWA_ENABLED=${PWA_ENABLED}
|
ENV VITE_PWA_ENABLED=${PWA_ENABLED}
|
||||||
ENV VITE_GA_ID=${GA_ID}
|
ENV VITE_GA_ID=${GA_ID}
|
||||||
|
@ -39,6 +40,7 @@ ENV VITE_ONBOARDING_PROXY_INSTALL_LINK=${ONBOARDING_PROXY_INSTALL_LINK}
|
||||||
ENV VITE_DISALLOWED_IDS=${DISALLOWED_IDS}
|
ENV VITE_DISALLOWED_IDS=${DISALLOWED_IDS}
|
||||||
ENV VITE_CDN_REPLACEMENTS=${CDN_REPLACEMENTS}
|
ENV VITE_CDN_REPLACEMENTS=${CDN_REPLACEMENTS}
|
||||||
ENV VITE_TURNSTILE_KEY=${TURNSTILE_KEY}
|
ENV VITE_TURNSTILE_KEY=${TURNSTILE_KEY}
|
||||||
|
ENV VITE_ALLOW_AUTOPLAY=${ALLOW_AUTOPLAY}
|
||||||
|
|
||||||
COPY . ./
|
COPY . ./
|
||||||
RUN pnpm run build
|
RUN pnpm run build
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "movie-web",
|
"name": "movie-web",
|
||||||
"version": "4.6.6",
|
"version": "4.7.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"homepage": "https://github.com/movie-web/movie-web",
|
"homepage": "https://github.com/movie-web/movie-web",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -30,8 +30,8 @@
|
||||||
"@headlessui/react": "^1.7.18",
|
"@headlessui/react": "^1.7.18",
|
||||||
"@ladjs/country-language": "^1.0.3",
|
"@ladjs/country-language": "^1.0.3",
|
||||||
"@movie-web/providers": "github:sussy-code/sudo-providers",
|
"@movie-web/providers": "github:sussy-code/sudo-providers",
|
||||||
"@noble/hashes": "^1.4.0",
|
"@noble/hashes": "^1.3.3",
|
||||||
"@plasmohq/messaging": "^0.6.2",
|
"@plasmohq/messaging": "^0.6.1",
|
||||||
"@react-spring/web": "^9.7.3",
|
"@react-spring/web": "^9.7.3",
|
||||||
"@scure/bip39": "^1.3.0",
|
"@scure/bip39": "^1.3.0",
|
||||||
"@sozialhelden/ietf-language-tags": "^5.4.2",
|
"@sozialhelden/ietf-language-tags": "^5.4.2",
|
||||||
|
|
308
pnpm-lock.yaml
308
pnpm-lock.yaml
|
@ -334,6 +334,14 @@ packages:
|
||||||
'@jridgewell/gen-mapping': 0.3.5
|
'@jridgewell/gen-mapping': 0.3.5
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
|
|
||||||
|
/@ampproject/remapping@2.3.0:
|
||||||
|
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
|
||||||
|
engines: {node: '>=6.0.0'}
|
||||||
|
dependencies:
|
||||||
|
'@jridgewell/gen-mapping': 0.3.5
|
||||||
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@apideck/better-ajv-errors@0.3.6(ajv@8.12.0):
|
/@apideck/better-ajv-errors@0.3.6(ajv@8.12.0):
|
||||||
resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==}
|
resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
@ -396,6 +404,16 @@ packages:
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
jsesc: 2.5.2
|
jsesc: 2.5.2
|
||||||
|
|
||||||
|
/@babel/generator@7.24.1:
|
||||||
|
resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
dependencies:
|
||||||
|
'@babel/types': 7.24.0
|
||||||
|
'@jridgewell/gen-mapping': 0.3.5
|
||||||
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
|
jsesc: 2.5.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@babel/helper-annotate-as-pure@7.22.5:
|
/@babel/helper-annotate-as-pure@7.22.5:
|
||||||
resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
|
resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
@ -465,6 +483,21 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.3):
|
||||||
|
resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==}
|
||||||
|
peerDependencies:
|
||||||
|
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
|
||||||
|
dependencies:
|
||||||
|
'@babel/core': 7.24.3
|
||||||
|
'@babel/helper-compilation-targets': 7.23.6
|
||||||
|
'@babel/helper-plugin-utils': 7.24.0
|
||||||
|
debug: 4.3.4
|
||||||
|
lodash.debounce: 4.0.8
|
||||||
|
resolve: 1.22.8
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@babel/helper-environment-visitor@7.22.20:
|
/@babel/helper-environment-visitor@7.22.20:
|
||||||
resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
|
resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
@ -508,6 +541,20 @@ packages:
|
||||||
'@babel/helper-split-export-declaration': 7.22.6
|
'@babel/helper-split-export-declaration': 7.22.6
|
||||||
'@babel/helper-validator-identifier': 7.22.20
|
'@babel/helper-validator-identifier': 7.22.20
|
||||||
|
|
||||||
|
/@babel/helper-module-transforms@7.23.3(@babel/core@7.24.3):
|
||||||
|
resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
peerDependencies:
|
||||||
|
'@babel/core': ^7.0.0
|
||||||
|
dependencies:
|
||||||
|
'@babel/core': 7.24.3
|
||||||
|
'@babel/helper-environment-visitor': 7.22.20
|
||||||
|
'@babel/helper-module-imports': 7.22.15
|
||||||
|
'@babel/helper-simple-access': 7.22.5
|
||||||
|
'@babel/helper-split-export-declaration': 7.22.6
|
||||||
|
'@babel/helper-validator-identifier': 7.22.20
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@babel/helper-optimise-call-expression@7.22.5:
|
/@babel/helper-optimise-call-expression@7.22.5:
|
||||||
resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
|
resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
@ -543,6 +590,18 @@ packages:
|
||||||
'@babel/helper-optimise-call-expression': 7.22.5
|
'@babel/helper-optimise-call-expression': 7.22.5
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@babel/helper-replace-supers@7.24.1(@babel/core@7.24.3):
|
||||||
|
resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
peerDependencies:
|
||||||
|
'@babel/core': ^7.0.0
|
||||||
|
dependencies:
|
||||||
|
'@babel/core': 7.24.3
|
||||||
|
'@babel/helper-environment-visitor': 7.22.20
|
||||||
|
'@babel/helper-member-expression-to-functions': 7.23.0
|
||||||
|
'@babel/helper-optimise-call-expression': 7.22.5
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@babel/helper-simple-access@7.22.5:
|
/@babel/helper-simple-access@7.22.5:
|
||||||
resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
|
resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
@ -566,6 +625,11 @@ packages:
|
||||||
resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
|
resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
|
/@babel/helper-string-parser@7.24.1:
|
||||||
|
resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@babel/helper-validator-identifier@7.22.20:
|
/@babel/helper-validator-identifier@7.22.20:
|
||||||
resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
|
resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
@ -1905,6 +1969,13 @@ packages:
|
||||||
'@jridgewell/resolve-uri': 3.1.2
|
'@jridgewell/resolve-uri': 3.1.2
|
||||||
'@jridgewell/sourcemap-codec': 1.4.15
|
'@jridgewell/sourcemap-codec': 1.4.15
|
||||||
|
|
||||||
|
/@jridgewell/trace-mapping@0.3.25:
|
||||||
|
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
|
||||||
|
dependencies:
|
||||||
|
'@jridgewell/resolve-uri': 3.1.2
|
||||||
|
'@jridgewell/sourcemap-codec': 1.4.15
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@ladjs/country-language@1.0.3:
|
/@ladjs/country-language@1.0.3:
|
||||||
resolution: {integrity: sha512-FJROu9/hh4eqVAGDyfL8vpv6Vb0qKHX1ozYLRZ+beUzD5xFf+3r0J+SVIWKviEa7W524Qvqou+ta1WrsRgzxGw==}
|
resolution: {integrity: sha512-FJROu9/hh4eqVAGDyfL8vpv6Vb0qKHX1ozYLRZ+beUzD5xFf+3r0J+SVIWKviEa7W524Qvqou+ta1WrsRgzxGw==}
|
||||||
engines: {node: '>= 14'}
|
engines: {node: '>= 14'}
|
||||||
|
@ -2248,6 +2319,12 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 5.26.5
|
undici-types: 5.26.5
|
||||||
|
|
||||||
|
/@types/node@20.12.2:
|
||||||
|
resolution: {integrity: sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==}
|
||||||
|
dependencies:
|
||||||
|
undici-types: 5.26.5
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@types/pako@2.0.3:
|
/@types/pako@2.0.3:
|
||||||
resolution: {integrity: sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==}
|
resolution: {integrity: sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -2533,6 +2610,13 @@ packages:
|
||||||
resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
|
resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
|
||||||
engines: {node: '>=0.4.0'}
|
engines: {node: '>=0.4.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/acorn@8.11.3:
|
||||||
|
resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
|
||||||
|
engines: {node: '>=0.4.0'}
|
||||||
|
hasBin: true
|
||||||
|
dev: true
|
||||||
|
|
||||||
/agent-base@7.1.1:
|
/agent-base@7.1.1:
|
||||||
resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
|
resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
|
||||||
|
@ -2707,6 +2791,20 @@ packages:
|
||||||
is-shared-array-buffer: 1.0.3
|
is-shared-array-buffer: 1.0.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/arraybuffer.prototype.slice@1.0.3:
|
||||||
|
resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
array-buffer-byte-length: 1.0.1
|
||||||
|
call-bind: 1.0.7
|
||||||
|
define-properties: 1.2.1
|
||||||
|
es-abstract: 1.23.3
|
||||||
|
es-errors: 1.3.0
|
||||||
|
get-intrinsic: 1.2.4
|
||||||
|
is-array-buffer: 3.0.4
|
||||||
|
is-shared-array-buffer: 1.0.3
|
||||||
|
dev: true
|
||||||
|
|
||||||
/assertion-error@1.1.0:
|
/assertion-error@1.1.0:
|
||||||
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
|
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -2750,6 +2848,13 @@ packages:
|
||||||
possible-typed-array-names: 1.0.0
|
possible-typed-array-names: 1.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/available-typed-arrays@1.0.7:
|
||||||
|
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
possible-typed-array-names: 1.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/axe-core@4.7.0:
|
/axe-core@4.7.0:
|
||||||
resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==}
|
resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
@ -2797,6 +2902,17 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.3):
|
||||||
|
resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==}
|
||||||
|
peerDependencies:
|
||||||
|
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
|
||||||
|
dependencies:
|
||||||
|
'@babel/core': 7.24.3
|
||||||
|
'@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.3)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: true
|
||||||
|
|
||||||
/balanced-match@1.0.2:
|
/balanced-match@1.0.2:
|
||||||
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -2844,6 +2960,17 @@ packages:
|
||||||
node-releases: 2.0.14
|
node-releases: 2.0.14
|
||||||
update-browserslist-db: 1.0.13(browserslist@4.23.0)
|
update-browserslist-db: 1.0.13(browserslist@4.23.0)
|
||||||
|
|
||||||
|
/browserslist@4.23.0:
|
||||||
|
resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
|
||||||
|
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
caniuse-lite: 1.0.30001603
|
||||||
|
electron-to-chromium: 1.4.722
|
||||||
|
node-releases: 2.0.14
|
||||||
|
update-browserslist-db: 1.0.13(browserslist@4.23.0)
|
||||||
|
dev: true
|
||||||
|
|
||||||
/buffer-from@1.1.2:
|
/buffer-from@1.1.2:
|
||||||
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
|
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -2869,6 +2996,17 @@ packages:
|
||||||
set-function-length: 1.2.2
|
set-function-length: 1.2.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/call-bind@1.0.7:
|
||||||
|
resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
es-define-property: 1.0.0
|
||||||
|
es-errors: 1.3.0
|
||||||
|
function-bind: 1.1.2
|
||||||
|
get-intrinsic: 1.2.4
|
||||||
|
set-function-length: 1.2.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/callsites@3.1.0:
|
/callsites@3.1.0:
|
||||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
@ -3238,6 +3376,15 @@ packages:
|
||||||
gopd: 1.0.1
|
gopd: 1.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/define-data-property@1.1.4:
|
||||||
|
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
es-define-property: 1.0.0
|
||||||
|
es-errors: 1.3.0
|
||||||
|
gopd: 1.0.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
/define-lazy-prop@2.0.0:
|
/define-lazy-prop@2.0.0:
|
||||||
resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
|
resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
@ -3349,6 +3496,10 @@ packages:
|
||||||
/electron-to-chromium@1.4.736:
|
/electron-to-chromium@1.4.736:
|
||||||
resolution: {integrity: sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q==}
|
resolution: {integrity: sha512-Rer6wc3ynLelKNM4lOCg7/zPQj8tPOCB2hzD32PX9wd3hgRRi9MxEbmkFCokzcEhRVMiOVLjnL9ig9cefJ+6+Q==}
|
||||||
|
|
||||||
|
/electron-to-chromium@1.4.722:
|
||||||
|
resolution: {integrity: sha512-5nLE0TWFFpZ80Crhtp4pIp8LXCztjYX41yUcV6b+bKR2PqzjskTMOOlBi1VjBHlvHwS+4gar7kNKOrsbsewEZQ==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/emoji-regex@8.0.0:
|
/emoji-regex@8.0.0:
|
||||||
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -4104,6 +4255,17 @@ packages:
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/get-intrinsic@1.2.4:
|
||||||
|
resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
es-errors: 1.3.0
|
||||||
|
function-bind: 1.1.2
|
||||||
|
has-proto: 1.0.3
|
||||||
|
has-symbols: 1.0.3
|
||||||
|
hasown: 2.0.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/get-own-enumerable-property-symbols@3.0.2:
|
/get-own-enumerable-property-symbols@3.0.2:
|
||||||
resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
|
resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -4245,6 +4407,11 @@ packages:
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/has-proto@1.0.3:
|
||||||
|
resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/has-symbols@1.0.3:
|
/has-symbols@1.0.3:
|
||||||
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
|
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
@ -4391,6 +4558,15 @@ packages:
|
||||||
side-channel: 1.0.6
|
side-channel: 1.0.6
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/internal-slot@1.0.7:
|
||||||
|
resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
es-errors: 1.3.0
|
||||||
|
hasown: 2.0.2
|
||||||
|
side-channel: 1.0.6
|
||||||
|
dev: true
|
||||||
|
|
||||||
/invariant@2.2.4:
|
/invariant@2.2.4:
|
||||||
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
|
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -4405,6 +4581,14 @@ packages:
|
||||||
get-intrinsic: 1.2.4
|
get-intrinsic: 1.2.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/is-array-buffer@3.0.4:
|
||||||
|
resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
call-bind: 1.0.7
|
||||||
|
get-intrinsic: 1.2.4
|
||||||
|
dev: true
|
||||||
|
|
||||||
/is-arrayish@0.3.2:
|
/is-arrayish@0.3.2:
|
||||||
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
|
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -4454,6 +4638,13 @@ packages:
|
||||||
is-typed-array: 1.1.13
|
is-typed-array: 1.1.13
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/is-data-view@1.0.1:
|
||||||
|
resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
is-typed-array: 1.1.13
|
||||||
|
dev: true
|
||||||
|
|
||||||
/is-date-object@1.0.5:
|
/is-date-object@1.0.5:
|
||||||
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
|
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
@ -4509,6 +4700,11 @@ packages:
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/is-negative-zero@2.0.3:
|
||||||
|
resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/is-number-object@1.0.7:
|
/is-number-object@1.0.7:
|
||||||
resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
|
resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
@ -4559,6 +4755,13 @@ packages:
|
||||||
call-bind: 1.0.7
|
call-bind: 1.0.7
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/is-shared-array-buffer@1.0.3:
|
||||||
|
resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
call-bind: 1.0.7
|
||||||
|
dev: true
|
||||||
|
|
||||||
/is-stream@2.0.1:
|
/is-stream@2.0.1:
|
||||||
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
|
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
@ -5164,6 +5367,10 @@ packages:
|
||||||
resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
|
resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/object-inspect@1.13.1:
|
||||||
|
resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/object-keys@1.1.1:
|
/object-keys@1.1.1:
|
||||||
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
|
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
@ -5795,6 +6002,10 @@ packages:
|
||||||
/regenerator-runtime@0.14.1:
|
/regenerator-runtime@0.14.1:
|
||||||
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
|
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
|
||||||
|
|
||||||
|
/regenerator-runtime@0.14.1:
|
||||||
|
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/regenerator-transform@0.15.2:
|
/regenerator-transform@0.15.2:
|
||||||
resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
|
resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -5811,6 +6022,16 @@ packages:
|
||||||
set-function-name: 2.0.2
|
set-function-name: 2.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/regexp.prototype.flags@1.5.2:
|
||||||
|
resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
call-bind: 1.0.7
|
||||||
|
define-properties: 1.2.1
|
||||||
|
es-errors: 1.3.0
|
||||||
|
set-function-name: 2.0.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/regexpu-core@5.3.2:
|
/regexpu-core@5.3.2:
|
||||||
resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==}
|
resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
@ -5965,6 +6186,16 @@ packages:
|
||||||
isarray: 2.0.5
|
isarray: 2.0.5
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/safe-array-concat@1.1.2:
|
||||||
|
resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==}
|
||||||
|
engines: {node: '>=0.4'}
|
||||||
|
dependencies:
|
||||||
|
call-bind: 1.0.7
|
||||||
|
get-intrinsic: 1.2.4
|
||||||
|
has-symbols: 1.0.3
|
||||||
|
isarray: 2.0.5
|
||||||
|
dev: true
|
||||||
|
|
||||||
/safe-buffer@5.2.1:
|
/safe-buffer@5.2.1:
|
||||||
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
|
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -5978,6 +6209,15 @@ packages:
|
||||||
is-regex: 1.1.4
|
is-regex: 1.1.4
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/safe-regex-test@1.0.3:
|
||||||
|
resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
call-bind: 1.0.7
|
||||||
|
es-errors: 1.3.0
|
||||||
|
is-regex: 1.1.4
|
||||||
|
dev: true
|
||||||
|
|
||||||
/safer-buffer@2.1.2:
|
/safer-buffer@2.1.2:
|
||||||
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -6043,6 +6283,16 @@ packages:
|
||||||
has-property-descriptors: 1.0.2
|
has-property-descriptors: 1.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/set-function-name@2.0.2:
|
||||||
|
resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
define-data-property: 1.1.4
|
||||||
|
es-errors: 1.3.0
|
||||||
|
functions-have-names: 1.2.3
|
||||||
|
has-property-descriptors: 1.0.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/set-harmonic-interval@1.0.1:
|
/set-harmonic-interval@1.0.1:
|
||||||
resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==}
|
resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==}
|
||||||
engines: {node: '>=6.9'}
|
engines: {node: '>=6.9'}
|
||||||
|
@ -6074,6 +6324,16 @@ packages:
|
||||||
object-inspect: 1.13.1
|
object-inspect: 1.13.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/side-channel@1.0.6:
|
||||||
|
resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
call-bind: 1.0.7
|
||||||
|
es-errors: 1.3.0
|
||||||
|
get-intrinsic: 1.2.4
|
||||||
|
object-inspect: 1.13.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
/siginfo@2.0.0:
|
/siginfo@2.0.0:
|
||||||
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
|
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -6233,6 +6493,15 @@ packages:
|
||||||
es-object-atoms: 1.0.0
|
es-object-atoms: 1.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/string.prototype.trimstart@1.0.8:
|
||||||
|
resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
call-bind: 1.0.7
|
||||||
|
define-properties: 1.2.1
|
||||||
|
es-object-atoms: 1.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/stringify-object@3.3.0:
|
/stringify-object@3.3.0:
|
||||||
resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
|
resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
@ -6604,6 +6873,18 @@ packages:
|
||||||
possible-typed-array-names: 1.0.0
|
possible-typed-array-names: 1.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/typed-array-length@1.0.6:
|
||||||
|
resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
call-bind: 1.0.7
|
||||||
|
for-each: 0.3.3
|
||||||
|
gopd: 1.0.1
|
||||||
|
has-proto: 1.0.3
|
||||||
|
is-typed-array: 1.1.13
|
||||||
|
possible-typed-array-names: 1.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/typescript@4.9.5:
|
/typescript@4.9.5:
|
||||||
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
|
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
|
||||||
engines: {node: '>=4.2.0'}
|
engines: {node: '>=4.2.0'}
|
||||||
|
@ -6679,6 +6960,11 @@ packages:
|
||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/universalify@2.0.1:
|
||||||
|
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
|
||||||
|
engines: {node: '>= 10.0.0'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/unpacker@1.0.1:
|
/unpacker@1.0.1:
|
||||||
resolution: {integrity: sha512-0HTljwp8+JBdITpoHcK1LWi7X9U2BspUmWv78UWZh7NshYhbh1nec8baY/iSbe2OQTZ2bhAtVdnr6/BTD0DKVg==}
|
resolution: {integrity: sha512-0HTljwp8+JBdITpoHcK1LWi7X9U2BspUmWv78UWZh7NshYhbh1nec8baY/iSbe2OQTZ2bhAtVdnr6/BTD0DKVg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -6708,6 +6994,17 @@ packages:
|
||||||
escalade: 3.1.2
|
escalade: 3.1.2
|
||||||
picocolors: 1.0.0
|
picocolors: 1.0.0
|
||||||
|
|
||||||
|
/update-browserslist-db@1.0.13(browserslist@4.23.0):
|
||||||
|
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
|
||||||
|
hasBin: true
|
||||||
|
peerDependencies:
|
||||||
|
browserslist: '>= 4.21.0'
|
||||||
|
dependencies:
|
||||||
|
browserslist: 4.23.0
|
||||||
|
escalade: 3.1.1
|
||||||
|
picocolors: 1.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/uri-js@4.4.1:
|
/uri-js@4.4.1:
|
||||||
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
|
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -7089,6 +7386,17 @@ packages:
|
||||||
has-tostringtag: 1.0.2
|
has-tostringtag: 1.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/which-typed-array@1.1.15:
|
||||||
|
resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
dependencies:
|
||||||
|
available-typed-arrays: 1.0.7
|
||||||
|
call-bind: 1.0.7
|
||||||
|
for-each: 0.3.3
|
||||||
|
gopd: 1.0.1
|
||||||
|
has-tostringtag: 1.0.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/which@2.0.2:
|
/which@2.0.2:
|
||||||
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
|
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
|
@ -400,9 +400,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nextEpisode": {
|
"nextEpisode": {
|
||||||
"replay": "Replay",
|
"cancel": "Cancel",
|
||||||
"nextIn": "Next episode in {{seconds}}",
|
"next": "Next episode",
|
||||||
"next": "Next Episode"
|
"nextSeason": "Next season"
|
||||||
},
|
},
|
||||||
"playbackError": {
|
"playbackError": {
|
||||||
"badge": "Playback error",
|
"badge": "Playback error",
|
||||||
|
@ -582,6 +582,9 @@
|
||||||
"thumbnail": "Generate thumbnails",
|
"thumbnail": "Generate thumbnails",
|
||||||
"thumbnailDescription": "Most of the time, videos don't have thumbnails. You can enable this setting to generate them on the fly but they can make your video slower.",
|
"thumbnailDescription": "Most of the time, videos don't have thumbnails. You can enable this setting to generate them on the fly but they can make your video slower.",
|
||||||
"thumbnailLabel": "Generate thumbnails",
|
"thumbnailLabel": "Generate thumbnails",
|
||||||
|
"autoplay": "Autoplay",
|
||||||
|
"autoplayDescription": "Automatically play the next episode in a series after reaching the end. Can be enabled by users with the browser extension, a custom proxy, or with the default setup if allowed by the host.",
|
||||||
|
"autoplayLabel": "Autoplay",
|
||||||
"title": "Preferences"
|
"title": "Preferences"
|
||||||
},
|
},
|
||||||
"reset": "Reset",
|
"reset": "Reset",
|
||||||
|
|
|
@ -312,7 +312,7 @@
|
||||||
},
|
},
|
||||||
"noEmbeds": {
|
"noEmbeds": {
|
||||||
"text": "نتوانستیم اطلاعات را پیدا کنیم، لطفا منبع دیگری را امتحان کنید.",
|
"text": "نتوانستیم اطلاعات را پیدا کنیم، لطفا منبع دیگری را امتحان کنید.",
|
||||||
"title": "اطلاعات پیدا نشد"
|
"title": "هیج اطلاعاتی پیدا نشد"
|
||||||
},
|
},
|
||||||
"noStream": {
|
"noStream": {
|
||||||
"text": "فیلم یا سریال شما در این منبع وجود ندارد.",
|
"text": "فیلم یا سریال شما در این منبع وجود ندارد.",
|
||||||
|
@ -372,10 +372,10 @@
|
||||||
"badge": "مشکلی در پخش به وجود آمده",
|
"badge": "مشکلی در پخش به وجود آمده",
|
||||||
"errors": {
|
"errors": {
|
||||||
"errorAborted": "دریافت محتوا با درخواست کاربر لغو شد.",
|
"errorAborted": "دریافت محتوا با درخواست کاربر لغو شد.",
|
||||||
"errorDecode": "با وجود اینکه قبلا مشخص شده بود که قابل استفاده است، یک خطا در هنگام تلاش برای رمزگشایی رسانه رخ داد که باعث مشکل شد.",
|
"errorDecode": "با وجود اینکه قبلا مشخص شده بود که قابل استفاده است، یک خطا در هنگام تلاش برای رمزگشایی محتوا رخ داد که باعث مشکل شد.",
|
||||||
"errorGenericMedia": "خطای محتوای ناشناخته رخ داد.",
|
"errorGenericMedia": "خطای محتوای ناشناخته رخ داد.",
|
||||||
"errorNetwork": "با وجود اینکه قبلا در دسترس بود، نوعی خطای شبکه رخ داد که مانع از دریافت محتوا شد.",
|
"errorNetwork": "با وجود اینکه قبلا در دسترس بود، نوعی خطای شبکه رخ داد که مانع از دریافت محتوا شد.",
|
||||||
"errorNotSupported": "محتوا یا ارائه دهنده رسانه پشتیبانی نمیشود."
|
"errorNotSupported": "محتوا یا ارائه دهنده محتوا پشتیبانی نمیشود."
|
||||||
},
|
},
|
||||||
"homeButton": "بازگشت به خانه",
|
"homeButton": "بازگشت به خانه",
|
||||||
"text": "مشکلی در پخش محتوا وجود داشت. لطفا دوباره تلاش کنید.",
|
"text": "مشکلی در پخش محتوا وجود داشت. لطفا دوباره تلاش کنید.",
|
||||||
|
@ -398,7 +398,7 @@
|
||||||
"badge": "پیدا نشد",
|
"badge": "پیدا نشد",
|
||||||
"detailsButton": "نمایش جزئیات",
|
"detailsButton": "نمایش جزئیات",
|
||||||
"homeButton": "بازگشت به خانه",
|
"homeButton": "بازگشت به خانه",
|
||||||
"text": "ما در ارائه دهندگان جستجو کرده ایم ولی نمی توانیم محتوایی را که به دنبال آن را هستید پیدا کنیم! ما رسانه ها را میزبانی نمی کنیم و هیچ کنترلی بر آنچه در دسترس است نداریم. لطفا برای جزئیات بیشتر روی \"نمایش جزئیات\" در زیر کلیک کنید.",
|
"text": "ما در ارائه دهندگان جستجو کرده ایم ولی نمی توانیم محتوایی را که به دنبال آن را هستید پیدا کنیم! ما محتواها را میزبانی نمی کنیم و هیچ کنترلی بر آنچه در دسترس است نداریم. لطفا برای جزئیات بیشتر روی \"نمایش جزئیات\" در زیر کلیک کنید.",
|
||||||
"title": "نتونستیم پیداش کنیم"
|
"title": "نتونستیم پیداش کنیم"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -503,7 +503,7 @@
|
||||||
},
|
},
|
||||||
"redoSetup": "تنظیم مجدد",
|
"redoSetup": "تنظیم مجدد",
|
||||||
"successStatus": {
|
"successStatus": {
|
||||||
"description": "همه چیز برای شروع تماشای محتوای مورد علاقهتان آماده است.",
|
"description": "همه چیز برای شروع تماشای فیلم مورد علاقهتان آماده است.",
|
||||||
"title": "همه چیز تنظیم شده است!"
|
"title": "همه چیز تنظیم شده است!"
|
||||||
},
|
},
|
||||||
"unsetStatus": {
|
"unsetStatus": {
|
||||||
|
@ -516,7 +516,7 @@
|
||||||
"addButton": "اضافه کردن worker جدید",
|
"addButton": "اضافه کردن worker جدید",
|
||||||
"description": "برای ایجاد عملکرد برنامه، تمام ترافیک از طریق پروکسی ها هدایت می شود. اگر میخواید این کار انجام دهید حتما از worker های خودتان استفاده کنید. <0>دستورالعمل ها.</0>",
|
"description": "برای ایجاد عملکرد برنامه، تمام ترافیک از طریق پروکسی ها هدایت می شود. اگر میخواید این کار انجام دهید حتما از worker های خودتان استفاده کنید. <0>دستورالعمل ها.</0>",
|
||||||
"emptyState": "هنوز هیچ worker ای وجود ندارد، یکی اضافه کنید",
|
"emptyState": "هنوز هیچ worker ای وجود ندارد، یکی اضافه کنید",
|
||||||
"label": "استفاده از worker های پروکسی سفارشی",
|
"label": "از پروکسی worker کاستوم استفاده کنید",
|
||||||
"urlLabel": "لینک worker ها",
|
"urlLabel": "لینک worker ها",
|
||||||
"urlPlaceholder": "https://"
|
"urlPlaceholder": "https://"
|
||||||
}
|
}
|
||||||
|
@ -525,7 +525,7 @@
|
||||||
"language": "زبان برنامه",
|
"language": "زبان برنامه",
|
||||||
"languageDescription": "زبان برای کل برنامه اعمال شد.",
|
"languageDescription": "زبان برای کل برنامه اعمال شد.",
|
||||||
"thumbnail": "ایجاد تامبنیل",
|
"thumbnail": "ایجاد تامبنیل",
|
||||||
"thumbnailDescription": "بیشتر اوقات، ویدیوها تامبنیل ندارند. شما می توانید این تنظیم را فعال کنید تا آنها را در لحظه تولید کنید، اما آنها می توانند ویدیوی شما را کندتر کنند.",
|
"thumbnailDescription": "بیشتر اوقات، ویدیوها تامبنیل ندارند. شما می توانید این تنظیم را فعال کنید تا آنها را در لحظه ببینید، اما آنها می توانند ویدیوی شما را کندتر کنند.",
|
||||||
"thumbnailLabel": "ایجاد تامبنیل",
|
"thumbnailLabel": "ایجاد تامبنیل",
|
||||||
"title": "اولویت ها"
|
"title": "اولویت ها"
|
||||||
},
|
},
|
||||||
|
@ -536,8 +536,8 @@
|
||||||
"appVersion": "نسخه برنامه",
|
"appVersion": "نسخه برنامه",
|
||||||
"backendUrl": "لینک بک-اند",
|
"backendUrl": "لینک بک-اند",
|
||||||
"backendVersion": "نسخه بک-اند",
|
"backendVersion": "نسخه بک-اند",
|
||||||
"hostname": "نام میزبان",
|
"hostname": "نام هاست",
|
||||||
"insecure": "نا امن",
|
"insecure": "ناامن",
|
||||||
"notLoggedIn": "شما وارد نشده اید",
|
"notLoggedIn": "شما وارد نشده اید",
|
||||||
"secure": "امن",
|
"secure": "امن",
|
||||||
"title": "اطلاعات برنامه",
|
"title": "اطلاعات برنامه",
|
||||||
|
@ -551,7 +551,7 @@
|
||||||
"colorLabel": "رنگ",
|
"colorLabel": "رنگ",
|
||||||
"previewQuote": "نباید بترسم، ترس قاتل ذهن است.",
|
"previewQuote": "نباید بترسم، ترس قاتل ذهن است.",
|
||||||
"textSizeLabel": "اندازه متن",
|
"textSizeLabel": "اندازه متن",
|
||||||
"title": "زیرنویس"
|
"title": "زیرنویسها"
|
||||||
},
|
},
|
||||||
"unsaved": "شما تغییرات ذخیره نشده دارید"
|
"unsaved": "شما تغییرات ذخیره نشده دارید"
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,7 @@
|
||||||
"title": "D'où vient le contenu ?"
|
"title": "D'où vient le contenu ?"
|
||||||
},
|
},
|
||||||
"q2": {
|
"q2": {
|
||||||
"body": "Il est impossible de solliciter une émission ou un film car sudo-flix ne gère aucun contenu. Les sources sur Internet sont utilisées pour consulter tous les contenus.",
|
"body": "Il est impossible de demander un film ou une série, car movie-web ne gère aucun contenu. Le contenu est récupéré en explorant d'autres sites sur Internet.",
|
||||||
"body": "Il est impossible de demander un film ou une série car sudo-flix ne gère aucun contenu. Le contenu est récupéré en explorant d'autres sites sur Internet.",
|
|
||||||
"title": "Où puis-je demander une série ou un film ?"
|
"title": "Où puis-je demander une série ou un film ?"
|
||||||
},
|
},
|
||||||
"q3": {
|
"q3": {
|
||||||
|
@ -26,26 +25,26 @@
|
||||||
"deviceNameLabel": "Nom de l'appareil",
|
"deviceNameLabel": "Nom de l'appareil",
|
||||||
"deviceNamePlaceholder": "Téléphone personnel",
|
"deviceNamePlaceholder": "Téléphone personnel",
|
||||||
"generate": {
|
"generate": {
|
||||||
"description": "Le nom d'utilisateur et le mot de passe sont obtenus à partir de votre passphrase. Vous devrez la saisir pour accéder à votre compte, alors gardez-la précieusement",
|
"description": "Le nom d'utilisateur et le mot de passe sont obtenus à partir de votre phrase d'accès. Vous devrez la saisir pour accéder à votre compte, alors gardez-la précieusement",
|
||||||
"next": "J'ai sauvegardé ma passphrase",
|
"next": "J'ai sauvegardé ma phrase d'accès",
|
||||||
"passphraseFrameLabel": "Passphrase",
|
"passphraseFrameLabel": "Phrase d'accès",
|
||||||
"title": "Votre passphrase"
|
"title": "Votre phrase d'accès"
|
||||||
},
|
},
|
||||||
"hasAccount": "Avez-vous déjà un compte ? <0>Connectez-vous ici.</0>",
|
"hasAccount": "Avez-vous déjà un compte ? <0>Connectez-vous ici.</0>",
|
||||||
"login": {
|
"login": {
|
||||||
"description": "Veuillez saisir votre passphrase pour accéder à votre compte",
|
"description": "Veuillez saisir votre phrase d'accès pour accéder à votre compte",
|
||||||
"deviceLengthError": "Veuillez saisir un nom d'appareil",
|
"deviceLengthError": "Veuillez saisir un nom d'appareil",
|
||||||
"passphraseLabel": "Passphrase de 12 mots",
|
"passphraseLabel": "Phrase d'accès de 12 mots",
|
||||||
"passphrasePlaceholder": "Passphrase",
|
"passphrasePlaceholder": "Phrase d'accès",
|
||||||
"submit": "Se connecter",
|
"submit": "Se connecter",
|
||||||
"title": "Connectez-vous à votre compte",
|
"title": "Connectez-vous à votre compte",
|
||||||
"validationError": "Passphrase incorrecte ou incomplète"
|
"validationError": "Phrase d'accès incorrecte ou incomplète"
|
||||||
},
|
},
|
||||||
"register": {
|
"register": {
|
||||||
"information": {
|
"information": {
|
||||||
"color1": "Première couleur de profil",
|
"color1": "Première couleur de profil",
|
||||||
"color2": "Seconde couleur de profil",
|
"color2": "Seconde couleur de profil",
|
||||||
"header": "Veuillez entrer un nom pour votre appareil, choisir une couleur et une icône utilisateur de votre choix",
|
"header": "Veuillez entrer un nom pour votre appareil, choisir vos couleurs et une icône utilisateur de votre choix",
|
||||||
"icon": "Icône d'utilisateur",
|
"icon": "Icône d'utilisateur",
|
||||||
"next": "Suivant",
|
"next": "Suivant",
|
||||||
"title": "Informations du compte"
|
"title": "Informations du compte"
|
||||||
|
@ -64,13 +63,13 @@
|
||||||
"yes": "Je fais confiance à ce serveur"
|
"yes": "Je fais confiance à ce serveur"
|
||||||
},
|
},
|
||||||
"verify": {
|
"verify": {
|
||||||
"description": "Veuillez saisir votre passphrase pour confirmer que vous l'avez enregistrée et pour créer votre compte",
|
"description": "Veuillez saisir votre phrase d'accès pour confirmer que vous l'avez enregistrée et pour créer votre compte",
|
||||||
"invalidData": "Les données ne sont pas valides",
|
"invalidData": "Les données ne sont pas valides",
|
||||||
"noMatch": "La passphrase ne correspond pas",
|
"noMatch": "La phrase d'accès ne correspond pas",
|
||||||
"passphraseLabel": "Votre passphrase de 12 mots",
|
"passphraseLabel": "Votre phrase d'accès de 12 mots",
|
||||||
"recaptchaFailed": "La validation ReCaptcha a échouée",
|
"recaptchaFailed": "La validation ReCaptcha a échoué",
|
||||||
"register": "Créer un compte",
|
"register": "Créer un compte",
|
||||||
"title": "Resaisissez votre passphrase"
|
"title": "Ressaisissez votre phrase d'accès"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"errors": {
|
"errors": {
|
||||||
|
@ -83,7 +82,7 @@
|
||||||
"footer": {
|
"footer": {
|
||||||
"legal": {
|
"legal": {
|
||||||
"disclaimer": "Avertissement",
|
"disclaimer": "Avertissement",
|
||||||
"disclaimerText": "Le site sudo-flix ne stocke pas de fichiers, mais propose des liens vers des services externes. Les problèmes juridiques doivent être traités avec les fournisseurs et les hébergeurs de fichiers. Les fichiers multimédias diffusés par les fournisseurs de vidéos ne sont pas couverts par sudo-flix."
|
"disclaimerText": "movie-web ne stocke pas de fichiers, mais propose des liens vers des services externes. Les problèmes juridiques doivent être traités avec les fournisseurs et les hébergeurs de fichiers. Les fichiers multimédias diffusés par les fournisseurs de vidéos ne sont pas couverts par movie-web."
|
||||||
},
|
},
|
||||||
"links": {
|
"links": {
|
||||||
"discord": "Discord",
|
"discord": "Discord",
|
||||||
|
@ -116,14 +115,14 @@
|
||||||
},
|
},
|
||||||
"search": {
|
"search": {
|
||||||
"allResults": "C'est tout ce que nous avons !",
|
"allResults": "C'est tout ce que nous avons !",
|
||||||
"failed": "Le média n'a pas été trouvé, veuillez réessayez !",
|
"failed": "Le média n'a pas été trouvé, veuillez réessayer !",
|
||||||
"loading": "Chargement...",
|
"loading": "Chargement...",
|
||||||
"noResults": "Nous n'avons rien trouvé !",
|
"noResults": "Nous n'avons rien trouvé !",
|
||||||
"placeholder": {
|
"placeholder": {
|
||||||
"default": "Que voulez-vous voir ?",
|
"default": "Que voulez-vous voir ?",
|
||||||
"extra": [
|
"extra": [
|
||||||
"Que voulez-vous explorer ?",
|
"Que voulez-vous explorer ?",
|
||||||
"Que y a-t-il dans votre liste de lecture?",
|
"Qu'y a-t-il dans votre liste de lecture ?",
|
||||||
"Quel est votre film préféré ?",
|
"Quel est votre film préféré ?",
|
||||||
"Quelle est votre série préférée ?"
|
"Quelle est votre série préférée ?"
|
||||||
]
|
]
|
||||||
|
@ -156,11 +155,12 @@
|
||||||
"types": {
|
"types": {
|
||||||
"movie": "Film",
|
"movie": "Film",
|
||||||
"show": "Série"
|
"show": "Série"
|
||||||
}
|
},
|
||||||
|
"unreleased": "Non publié"
|
||||||
},
|
},
|
||||||
"navigation": {
|
"navigation": {
|
||||||
"banner": {
|
"banner": {
|
||||||
"offline": "Vérifiez votre connexion internet"
|
"offline": "Veuillez vérifier votre connexion internet"
|
||||||
},
|
},
|
||||||
"menu": {
|
"menu": {
|
||||||
"about": "À propos de nous",
|
"about": "À propos de nous",
|
||||||
|
@ -174,24 +174,24 @@
|
||||||
"notFound": {
|
"notFound": {
|
||||||
"badge": "Introuvable",
|
"badge": "Introuvable",
|
||||||
"goHome": "Retourner à l'accueil",
|
"goHome": "Retourner à l'accueil",
|
||||||
"message": "Nous avons cherché partout : sous les poubelles, dans le placard, derrière le proxy, mais nous n'avons finalement pas trouvé la page que vous cherchez.",
|
"message": "Nous avons cherché partout : sous les poubelles, dans le placard, derrière le proxy, mais nous n'avons pas pu trouver la page que vous cherchez.",
|
||||||
"title": "Impossible de trouver cette page"
|
"title": "Impossible de trouver cette page"
|
||||||
},
|
},
|
||||||
"onboarding": {
|
"onboarding": {
|
||||||
"defaultConfirm": {
|
"defaultConfirm": {
|
||||||
"cancel": "Annuler",
|
"cancel": "Annuler",
|
||||||
"confirm": "Utiliser la configuration par défaut",
|
"confirm": "Utiliser la configuration par défaut",
|
||||||
"description": "La configuration par défaut n'offre pas les meilleurs flux et peut être insupportablement lente.",
|
"description": "La configuration par défaut n'offre pas les meilleurs flux et peut-être insupportablement lente.",
|
||||||
"title": "Êtes-vous sûr ?"
|
"title": "Êtes-vous sûr ?"
|
||||||
},
|
},
|
||||||
"extension": {
|
"extension": {
|
||||||
"back": "Revenir en arrière",
|
"back": "Revenir en arrière",
|
||||||
"explainer": "En utilisant l'extension de navigateur, vous pouvez obtenir les meilleurs flux que nous avons à offrir. Avec juste une simple installation.",
|
"explainer": "En utilisant l'extension de navigateur, vous pouvez obtenir les meilleurs flux que nous avons à offrir. Avec juste une simple installation.",
|
||||||
"explainerIos": "Malheureusement, l'extension web n'est pas prise en charge sur iOS, appuyez sur <bold> Revenir en arrière </bold> pour choisir une autre option.",
|
"explainerIos": "Malheureusement, l'extension web n'est pas prise en charge sur iOS, appuyez sur <bold>Retour</bold> pour choisir une autre option.",
|
||||||
"extensionHelp": "Si vous avez installé l'extension mais qu'elle n'est pas détectée, <bold>ouvrez l'extension via le menu des extensions de votre navigateur</bold> et suivez les étapes à l'écran.",
|
"extensionHelp": "Si vous avez installé l'extension, mais qu'elle n'est pas détectée, <bold>ouvrez l'extension via le menu des extensions de votre navigateur</bold> et suivez les étapes à l'écran.",
|
||||||
"linkChrome": "Installer l'extension Chrome",
|
"linkChrome": "Installer l'extension Chrome",
|
||||||
"linkFirefox": "Installer l'extension Firefox",
|
"linkFirefox": "Installer l'extension Firefox",
|
||||||
"notDetecting": "L'extension est installée sur Chrome mais le site ne la détecte pas ? Essayez de rafraîchir la page !",
|
"notDetecting": "L'extension est installée sur Chrome, mais le site ne la détecte pas ? Essayez de rafraîchir la page !",
|
||||||
"notDetectingAction": "Rafraîchir la page",
|
"notDetectingAction": "Rafraîchir la page",
|
||||||
"status": {
|
"status": {
|
||||||
"disallowed": "L'extension n'est pas activée pour cette page",
|
"disallowed": "L'extension n'est pas activée pour cette page",
|
||||||
|
@ -205,12 +205,12 @@
|
||||||
"title": "Commençons par une extension"
|
"title": "Commençons par une extension"
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"back": "Revenir en arrière",
|
"back": "Retour",
|
||||||
"explainer": "Avec la méthode du proxy, vous pouvez obtenir des flux de bonne qualité en créant un proxy en libre-service.",
|
"explainer": "Avec la méthode du proxy, vous pouvez obtenir des flux de bonne qualité en créant un proxy en libre-service.",
|
||||||
"input": {
|
"input": {
|
||||||
"errorConnection": "Impossible de se connecter au proxy",
|
"errorConnection": "Impossible de se connecter au proxy",
|
||||||
"errorInvalidUrl": "URL non valide",
|
"errorInvalidUrl": "URL non valide",
|
||||||
"errorNotProxy": "Je m'attendais à un proxy mais j'ai obtenu un site Web",
|
"errorNotProxy": "Je m'attendais à un proxy, mais j'ai obtenu un site Web",
|
||||||
"label": "URL du proxy",
|
"label": "URL du proxy",
|
||||||
"placeholder": "https://"
|
"placeholder": "https://"
|
||||||
},
|
},
|
||||||
|
@ -222,17 +222,17 @@
|
||||||
"explainer": "Pour obtenir les meilleurs flux possibles, vous devrez choisir la méthode de streaming que vous souhaitez utiliser.",
|
"explainer": "Pour obtenir les meilleurs flux possibles, vous devrez choisir la méthode de streaming que vous souhaitez utiliser.",
|
||||||
"options": {
|
"options": {
|
||||||
"default": {
|
"default": {
|
||||||
"text": "Je ne veux pas de flux de bonne qualité,<0 /> <1>Utiliser le flux par défaut</1>"
|
"text": "Je ne veux pas de flux de bonne qualité,<0 /> <1>utiliser le flux par défaut</1>"
|
||||||
},
|
},
|
||||||
"extension": {
|
"extension": {
|
||||||
"action": "Installer l'extension",
|
"action": "Installer l'extension",
|
||||||
"description": "Installez l'extension pour navigateur et accédez aux meilleures sources.",
|
"description": "Installez l'extension pour navigateur et accédez aux meilleures sources.",
|
||||||
"quality": "Meilleur qualité",
|
"quality": "Meilleure qualité",
|
||||||
"title": "Extension du navigateur"
|
"title": "Extension du navigateur"
|
||||||
},
|
},
|
||||||
"proxy": {
|
"proxy": {
|
||||||
"action": "Configurez le proxy",
|
"action": "Configurez le proxy",
|
||||||
"description": "Configurez un proxy en seulement 5 minutes et accédez à d'excellentes sources.",
|
"description": "Configurez un proxy en seulement cinq minutes et accédez à d'excellentes sources.",
|
||||||
"quality": "Bonne qualité",
|
"quality": "Bonne qualité",
|
||||||
"title": "Proxy personnalisé"
|
"title": "Proxy personnalisé"
|
||||||
}
|
}
|
||||||
|
@ -257,14 +257,14 @@
|
||||||
"disclaimer": "Les téléchargements sont effectués directement par le fournisseur. sudo-flix n'a aucun contrôle sur la manière dont les téléchargements sont effectués.",
|
"disclaimer": "Les téléchargements sont effectués directement par le fournisseur. sudo-flix n'a aucun contrôle sur la manière dont les téléchargements sont effectués.",
|
||||||
"downloadSubtitle": "Télécharger les sous-titres",
|
"downloadSubtitle": "Télécharger les sous-titres",
|
||||||
"downloadVideo": "Télécharger la vidéo",
|
"downloadVideo": "Télécharger la vidéo",
|
||||||
"hlsDisclaimer": "Les téléchargements sont effectués directement auprès du fournisseur. sudo-flix n'a aucun contrôle sur la façon dont les téléchargements sont fournis.<br /><br />Veuillez noter que vous téléchargez une liste de lecture HLS, <bold>il n'est pas recommandé de la télécharger si vous n'êtes pas familier avec les formats de streaming avancés. </bold>. Essayez différentes sources pour différents formats.",
|
"hlsDisclaimer": "Les téléchargements sont effectués directement auprès du fournisseur. movie-web n'a aucun contrôle sur la façon dont les téléchargements sont fournis.<br /><br />Veuillez noter que vous téléchargez une liste de lecture HLS, <bold>il n'est pas recommandé de la télécharger si vous n'êtes pas familier avec les formats de streaming avancés</bold>. Essayez différentes sources pour différents formats.",
|
||||||
"onAndroid": {
|
"onAndroid": {
|
||||||
"1": "Pour télécharger sur Android, cliquez sur le bouton de téléchargement puis, sur la nouvelle page, <bold>tapez et maintenez </bold> sur la vidéo, puis sélectionnez <bold>enregistrer</bold>.",
|
"1": "Pour télécharger sur Android, cliquez sur le bouton de téléchargement, puis, sur la nouvelle page, <bold>tapez et maintenez</bold> sur la vidéo, et sélectionnez <bold>enregistrer</bold>.",
|
||||||
"shortTitle": "Télécharger / Android",
|
"shortTitle": "Télécharger / Android",
|
||||||
"title": "Téléchargement sur Android"
|
"title": "Téléchargement sur Android"
|
||||||
},
|
},
|
||||||
"onIos": {
|
"onIos": {
|
||||||
"1": "Pour télécharger sur iOS, cliquez sur le bouton de téléchargement puis, sur la nouvelle page, cliquez sur <bold><ios_share /></bold>, puis <bold>Enregistrer dans les fichiers <ios_files /></bold>.",
|
"1": "Pour télécharger sur iOS, cliquez sur le bouton de téléchargement, puis, sur la nouvelle page, cliquez sur <bold><ios_share /></bold>, et <bold>Enregistrer dans les fichiers <ios_files /></bold>.",
|
||||||
"shortTitle": "Télécharger / iOS",
|
"shortTitle": "Télécharger / iOS",
|
||||||
"title": "Télécharger sur iOS"
|
"title": "Télécharger sur iOS"
|
||||||
},
|
},
|
||||||
|
@ -282,7 +282,7 @@
|
||||||
"loadingError": "Erreur lors du chargement de la saison",
|
"loadingError": "Erreur lors du chargement de la saison",
|
||||||
"loadingList": "Chargement...",
|
"loadingList": "Chargement...",
|
||||||
"loadingTitle": "Chargement...",
|
"loadingTitle": "Chargement...",
|
||||||
"unairedEpisodes": "Un ou plusieurs épisodes de cette saison ont été désactivés car ils n'ont pas encore été diffusés."
|
"unairedEpisodes": "Un ou plusieurs épisodes de cette saison ont été désactivés, car ils n'ont pas encore été diffusés."
|
||||||
},
|
},
|
||||||
"playback": {
|
"playback": {
|
||||||
"speedLabel": "Vitesse de lecture",
|
"speedLabel": "Vitesse de lecture",
|
||||||
|
@ -291,7 +291,7 @@
|
||||||
"quality": {
|
"quality": {
|
||||||
"automaticLabel": "Qualité automatique",
|
"automaticLabel": "Qualité automatique",
|
||||||
"hint": "Vous pouvez essayer de <0>changer de source</0> pour obtenir différentes options de qualité.",
|
"hint": "Vous pouvez essayer de <0>changer de source</0> pour obtenir différentes options de qualité.",
|
||||||
"iosNoQuality": "En raison des limitations définies par Apple, la sélection de la qualité n'est pas disponible sur iOS pour cette source. Vous pouvez essayer <0>de passer à une autre source</0> pour obtenir des options de qualité différentes.",
|
"iosNoQuality": "En raison des limitations définies par Apple, la sélection de la qualité n'est pas disponible sur iOS pour cette source. Vous pouvez essayer <0>de changer de source</0> pour obtenir des options de qualité différentes.",
|
||||||
"title": "Qualité"
|
"title": "Qualité"
|
||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
|
@ -312,7 +312,7 @@
|
||||||
},
|
},
|
||||||
"noEmbeds": {
|
"noEmbeds": {
|
||||||
"text": "Nous n'avons pas trouvé de liens, veuillez essayer une autre source.",
|
"text": "Nous n'avons pas trouvé de liens, veuillez essayer une autre source.",
|
||||||
"title": "Pas d'embeds trouvés"
|
"title": "Pas d'intégrations (embeds) trouvées"
|
||||||
},
|
},
|
||||||
"noStream": {
|
"noStream": {
|
||||||
"text": "Cette source n'a pas de flux pour ce film ou cette série.",
|
"text": "Cette source n'a pas de flux pour ce film ou cette série.",
|
||||||
|
@ -375,13 +375,20 @@
|
||||||
"errorDecode": "Bien qu'elle ait été jugée utilisable, une erreur s'est produite lors de la tentative de décodage de la ressource multimédia, ce qui a entraîné une erreur.",
|
"errorDecode": "Bien qu'elle ait été jugée utilisable, une erreur s'est produite lors de la tentative de décodage de la ressource multimédia, ce qui a entraîné une erreur.",
|
||||||
"errorGenericMedia": "Une erreur de média inconnue est survenue.",
|
"errorGenericMedia": "Une erreur de média inconnue est survenue.",
|
||||||
"errorNetwork": "Une erreur de réseau s'est produite qui a empêché la récupération du média, bien qu'il ait été disponible auparavant.",
|
"errorNetwork": "Une erreur de réseau s'est produite qui a empêché la récupération du média, bien qu'il ait été disponible auparavant.",
|
||||||
"errorNotSupported": "L'objet du media ou de la source du média n'est pas supporté."
|
"errorNotSupported": "L'objet du média ou de la source du média n'est pas supporté."
|
||||||
},
|
},
|
||||||
"homeButton": "Revenir à l'accueil",
|
"homeButton": "Revenir à l'accueil",
|
||||||
"text": "Une erreur s'est produite lors de la lecture du média. Veuillez réessayer.",
|
"text": "Une erreur s'est produite lors de la lecture du média. Veuillez réessayer.",
|
||||||
"title": "Oups, c'est coupé !"
|
"title": "Oups, c'est coupé !"
|
||||||
},
|
},
|
||||||
"scraping": {
|
"scraping": {
|
||||||
|
"extensionFailure": {
|
||||||
|
"badge": "Extension désactivée",
|
||||||
|
"enableExtension": "Activer l'extension",
|
||||||
|
"homeButton": "Revenir à l'accueil",
|
||||||
|
"text": "Vous avez installé l'extension movie-web. Pour commencer à l'utiliser, vous devez activer l'extension pour ce site.",
|
||||||
|
"title": "Veuillez activer l'extension"
|
||||||
|
},
|
||||||
"items": {
|
"items": {
|
||||||
"failure": "Une erreur est survenue",
|
"failure": "Une erreur est survenue",
|
||||||
"notFound": "N'a pas la vidéo",
|
"notFound": "N'a pas la vidéo",
|
||||||
|
@ -410,7 +417,7 @@
|
||||||
},
|
},
|
||||||
"screens": {
|
"screens": {
|
||||||
"dmca": {
|
"dmca": {
|
||||||
"text": "Bienvenue sur la page de contact DMCA de sudo-flix ! Nous respectons les droits de propriété intellectuelle et souhaitons répondre rapidement à toute question relative aux droits d'auteur. Si vous pensez que votre œuvre protégée par des droits d'auteur a été utilisée de manière inappropriée sur notre plateforme, veuillez envoyer une notification DMCA détaillée à l'adresse électronique ci-dessous. Veuillez inclure une description du matériel protégé par des droits d'auteur, vos coordonnées et une déclaration de bonne foi. Nous nous engageons à résoudre ces problèmes rapidement et vous remercions de votre coopération pour que sudo-flix reste un lieu respectueux de la créativité et des droits d'auteur.",
|
"text": "Bienvenue sur la page de contact DMCA de movie-web ! Nous respectons les droits de propriété intellectuelle et souhaitons répondre rapidement à toute question relative aux droits d'auteur. Si vous pensez que votre œuvre protégée par des droits d'auteur a été utilisée de manière inappropriée sur notre plateforme, veuillez envoyer une notification DMCA détaillée à l'adresse électronique ci-dessous. Veuillez inclure une description du matériel protégé par des droits d'auteur, vos coordonnées et une déclaration de bonne foi. Nous nous engageons à résoudre ces problèmes rapidement et vous remercions pour votre coopération pour que movie-web reste un lieu respectueux de la créativité et des droits d'auteur.",
|
||||||
"title": "DMCA"
|
"title": "DMCA"
|
||||||
},
|
},
|
||||||
"loadingApp": "Chargement de l'application",
|
"loadingApp": "Chargement de l'application",
|
||||||
|
@ -422,7 +429,7 @@
|
||||||
"textWithReset": "Echec du chargement de votre profil à partir de votre serveur personnalisé, souhaitez-vous revenir au serveur par défaut ?"
|
"textWithReset": "Echec du chargement de votre profil à partir de votre serveur personnalisé, souhaitez-vous revenir au serveur par défaut ?"
|
||||||
},
|
},
|
||||||
"migration": {
|
"migration": {
|
||||||
"failed": "La migration de vos données a échouée.",
|
"failed": "La migration de vos données a échoué.",
|
||||||
"inProgress": "Veuillez patienter, nous sommes en train de migrer vos données. Cela ne devrait pas prendre longtemps."
|
"inProgress": "Veuillez patienter, nous sommes en train de migrer vos données. Cela ne devrait pas prendre longtemps."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -459,7 +466,7 @@
|
||||||
"userIcon": "Icône de l'utilisateur"
|
"userIcon": "Icône de l'utilisateur"
|
||||||
},
|
},
|
||||||
"register": {
|
"register": {
|
||||||
"cta": "Démarrer",
|
"cta": "Commencer",
|
||||||
"text": "Partagez la progression de vos films et séries entre vos appareils et gardez-les synchronisés.",
|
"text": "Partagez la progression de vos films et séries entre vos appareils et gardez-les synchronisés.",
|
||||||
"title": "Synchroniser au Cloud"
|
"title": "Synchroniser au Cloud"
|
||||||
},
|
},
|
||||||
|
@ -472,7 +479,7 @@
|
||||||
"default": "Défaut",
|
"default": "Défaut",
|
||||||
"gray": "Gris",
|
"gray": "Gris",
|
||||||
"red": "Rouge",
|
"red": "Rouge",
|
||||||
"teal": "Saphir"
|
"teal": "Bleu canard"
|
||||||
},
|
},
|
||||||
"title": "Apparence"
|
"title": "Apparence"
|
||||||
},
|
},
|
||||||
|
@ -496,8 +503,8 @@
|
||||||
},
|
},
|
||||||
"redoSetup": "Refaire la configuration",
|
"redoSetup": "Refaire la configuration",
|
||||||
"successStatus": {
|
"successStatus": {
|
||||||
"description": "Tout est réuni pour que vous puissiez commencer à regarder vos médias préférés.",
|
"description": "Tout prêt pour que vous puissiez commencer à regarder vos médias préférés.",
|
||||||
"title": "Tout est mis en place !"
|
"title": "Tout est en place !"
|
||||||
},
|
},
|
||||||
"unsetStatus": {
|
"unsetStatus": {
|
||||||
"description": "Pour commencer le processus de configuration, veuillez cliquer sur le bouton à droite.",
|
"description": "Pour commencer le processus de configuration, veuillez cliquer sur le bouton à droite.",
|
||||||
|
@ -515,11 +522,11 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"preferences": {
|
"preferences": {
|
||||||
"language": "Language de l'application",
|
"language": "Langage de l'application",
|
||||||
"languageDescription": "Langue appliquée à l’ensemble de l’application.",
|
"languageDescription": "Langue appliquée à l’ensemble de l’application.",
|
||||||
"thumbnail": "Générer des miniatures",
|
"thumbnail": "Générer les miniatures",
|
||||||
"thumbnailDescription": "La plupart du temps, les vidéos n'ont pas de miniatures. Vous pouvez activer ce paramètre pour les générer à la volée, mais ils peuvent ralentir votre vidéo.",
|
"thumbnailDescription": "La plupart du temps, les vidéos n'ont pas de miniatures. Vous pouvez activer ce paramètre pour les générer à la volée, mais ils peuvent ralentir votre vidéo.",
|
||||||
"thumbnailLabel": "Générer des miniatures",
|
"thumbnailLabel": "Générer les miniatures",
|
||||||
"title": "Préférences"
|
"title": "Préférences"
|
||||||
},
|
},
|
||||||
"reset": "Réinitialiser",
|
"reset": "Réinitialiser",
|
||||||
|
@ -527,7 +534,7 @@
|
||||||
"sidebar": {
|
"sidebar": {
|
||||||
"info": {
|
"info": {
|
||||||
"appVersion": "Version de l'application",
|
"appVersion": "Version de l'application",
|
||||||
"backendUrl": "URL de Backend",
|
"backendUrl": "URL du Backend",
|
||||||
"backendVersion": "Version du Backend",
|
"backendVersion": "Version du Backend",
|
||||||
"hostname": "Nom d'hôte",
|
"hostname": "Nom d'hôte",
|
||||||
"insecure": "Non sécurisé",
|
"insecure": "Non sécurisé",
|
||||||
|
@ -540,7 +547,7 @@
|
||||||
},
|
},
|
||||||
"subtitles": {
|
"subtitles": {
|
||||||
"backgroundBlurLabel": "Flou d'arrière-plan",
|
"backgroundBlurLabel": "Flou d'arrière-plan",
|
||||||
"backgroundLabel": "Opacité du fond",
|
"backgroundLabel": "Opacité de l'arrière-plan",
|
||||||
"colorLabel": "Couleur",
|
"colorLabel": "Couleur",
|
||||||
"previewQuote": "Plus l'obscurité est profonde, plus la lumière brille.",
|
"previewQuote": "Plus l'obscurité est profonde, plus la lumière brille.",
|
||||||
"textSizeLabel": "Taille des textes",
|
"textSizeLabel": "Taille des textes",
|
||||||
|
|
|
@ -143,26 +143,37 @@ export function decodeTMDBId(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const baseURL = "https://api.themoviedb.org/3";
|
const tmdbBaseUrl1 = "https://api.themoviedb.org/3";
|
||||||
|
const tmdbBaseUrl2 = "https://api.tmdb.org/3";
|
||||||
|
|
||||||
const apiKey = conf().TMDB_READ_API_KEY;
|
const apiKey = conf().TMDB_READ_API_KEY;
|
||||||
|
|
||||||
const headers = {
|
const tmdbHeaders = {
|
||||||
accept: "application/json",
|
accept: "application/json",
|
||||||
Authorization: `Bearer ${apiKey}`,
|
Authorization: `Bearer ${apiKey}`,
|
||||||
};
|
};
|
||||||
|
|
||||||
export async function get<T>(url: string, params?: object): Promise<T> {
|
export async function get<T>(url: string, params?: object): Promise<T> {
|
||||||
if (!apiKey) throw new Error("TMDB API key not set");
|
if (!apiKey) throw new Error("TMDB API key not set");
|
||||||
|
try {
|
||||||
const res = await proxiedFetch<any>(encodeURI(url), {
|
return await mwFetch<T>(encodeURI(url), {
|
||||||
headers,
|
headers: tmdbHeaders,
|
||||||
baseURL,
|
baseURL: tmdbBaseUrl1,
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
},
|
},
|
||||||
|
signal: AbortSignal.timeout(5000),
|
||||||
});
|
});
|
||||||
return res;
|
} catch (err) {
|
||||||
|
return mwFetch<T>(encodeURI(url), {
|
||||||
|
headers: tmdbHeaders,
|
||||||
|
baseURL: tmdbBaseUrl2,
|
||||||
|
params: {
|
||||||
|
...params,
|
||||||
|
},
|
||||||
|
signal: AbortSignal.timeout(30000),
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function multiSearch(
|
export async function multiSearch(
|
||||||
|
|
|
@ -1,13 +1,20 @@
|
||||||
import classNames from "classnames";
|
import classNames from "classnames";
|
||||||
import React, { useCallback } from "react";
|
import { useCallback, useEffect, useRef } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { useAsync } from "react-use";
|
||||||
|
|
||||||
|
import { getMetaFromId } from "@/backend/metadata/getmeta";
|
||||||
|
import { MWMediaType, MWSeasonMeta } from "@/backend/metadata/types/mw";
|
||||||
import { Icon, Icons } from "@/components/Icon";
|
import { Icon, Icons } from "@/components/Icon";
|
||||||
import { usePlayerMeta } from "@/components/player/hooks/usePlayerMeta";
|
import { usePlayerMeta } from "@/components/player/hooks/usePlayerMeta";
|
||||||
import { Transition } from "@/components/utils/Transition";
|
import { Transition } from "@/components/utils/Transition";
|
||||||
import { PlayerMeta } from "@/stores/player/slices/source";
|
import { PlayerMeta } from "@/stores/player/slices/source";
|
||||||
import { usePlayerStore } from "@/stores/player/store";
|
import { usePlayerStore } from "@/stores/player/store";
|
||||||
|
import { usePreferencesStore } from "@/stores/preferences";
|
||||||
import { useProgressStore } from "@/stores/progress";
|
import { useProgressStore } from "@/stores/progress";
|
||||||
|
import { isAutoplayAllowed } from "@/utils/autoplay";
|
||||||
|
|
||||||
|
import { hasAired } from "../utils/aired";
|
||||||
|
|
||||||
function shouldShowNextEpisodeButton(
|
function shouldShowNextEpisodeButton(
|
||||||
time: number,
|
time: number,
|
||||||
|
@ -39,6 +46,45 @@ function Button(props: {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function useSeasons(mediaId: string, isLastEpisode: boolean = false) {
|
||||||
|
const state = useAsync(async () => {
|
||||||
|
if (isLastEpisode) {
|
||||||
|
const data = await getMetaFromId(MWMediaType.SERIES, mediaId ?? "");
|
||||||
|
if (data?.meta.type !== MWMediaType.SERIES) return null;
|
||||||
|
return data.meta.seasons;
|
||||||
|
}
|
||||||
|
}, [mediaId, isLastEpisode]);
|
||||||
|
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
function useNextSeasonEpisode(
|
||||||
|
nextSeason: MWSeasonMeta | undefined,
|
||||||
|
mediaId: string,
|
||||||
|
) {
|
||||||
|
const state = useAsync(async () => {
|
||||||
|
if (nextSeason) {
|
||||||
|
const data = await getMetaFromId(
|
||||||
|
MWMediaType.SERIES,
|
||||||
|
mediaId ?? "",
|
||||||
|
nextSeason?.id,
|
||||||
|
);
|
||||||
|
if (data?.meta.type !== MWMediaType.SERIES) return null;
|
||||||
|
|
||||||
|
const nextSeasonEpisodes = data?.meta?.seasonData?.episodes
|
||||||
|
.filter((episode) => hasAired(episode.air_date))
|
||||||
|
.map((episode) => ({
|
||||||
|
number: episode.number,
|
||||||
|
title: episode.title,
|
||||||
|
tmdbId: episode.id,
|
||||||
|
}));
|
||||||
|
|
||||||
|
if (nextSeasonEpisodes.length > 0) return nextSeasonEpisodes[0];
|
||||||
|
}
|
||||||
|
}, [mediaId, nextSeason?.id]);
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
export function NextEpisodeButton(props: {
|
export function NextEpisodeButton(props: {
|
||||||
controlsShowing: boolean;
|
controlsShowing: boolean;
|
||||||
onChange?: (meta: PlayerMeta) => void;
|
onChange?: (meta: PlayerMeta) => void;
|
||||||
|
@ -56,8 +102,24 @@ export function NextEpisodeButton(props: {
|
||||||
(s) => s.setShouldStartFromBeginning,
|
(s) => s.setShouldStartFromBeginning,
|
||||||
);
|
);
|
||||||
const updateItem = useProgressStore((s) => s.updateItem);
|
const updateItem = useProgressStore((s) => s.updateItem);
|
||||||
|
const enableAutoplay = usePreferencesStore((s) => s.enableAutoplay);
|
||||||
|
|
||||||
|
const isLastEpisode =
|
||||||
|
meta?.episode?.number === meta?.episodes?.at(-1)?.number;
|
||||||
|
|
||||||
|
const seasons = useSeasons(meta?.tmdbId ?? "", isLastEpisode);
|
||||||
|
|
||||||
|
const nextSeason = seasons.value?.find(
|
||||||
|
(season) => season.number === (meta?.season?.number ?? 0) + 1,
|
||||||
|
);
|
||||||
|
|
||||||
|
const nextSeasonEpisode = useNextSeasonEpisode(
|
||||||
|
nextSeason,
|
||||||
|
meta?.tmdbId ?? "",
|
||||||
|
);
|
||||||
|
|
||||||
let show = false;
|
let show = false;
|
||||||
|
const hasAutoplayed = useRef(false);
|
||||||
if (showingState === "always") show = true;
|
if (showingState === "always") show = true;
|
||||||
else if (showingState === "hover" && props.controlsShowing) show = true;
|
else if (showingState === "hover" && props.controlsShowing) show = true;
|
||||||
if (isHidden || status !== "playing" || duration === 0) show = false;
|
if (isHidden || status !== "playing" || duration === 0) show = false;
|
||||||
|
@ -69,7 +131,9 @@ export function NextEpisodeButton(props: {
|
||||||
? bottom
|
? bottom
|
||||||
: "bottom-[calc(3rem+env(safe-area-inset-bottom))]";
|
: "bottom-[calc(3rem+env(safe-area-inset-bottom))]";
|
||||||
|
|
||||||
const nextEp = meta?.episodes?.find(
|
const nextEp = isLastEpisode
|
||||||
|
? nextSeasonEpisode.value
|
||||||
|
: meta?.episodes?.find(
|
||||||
(v) => v.number === (meta?.episode?.number ?? 0) + 1,
|
(v) => v.number === (meta?.episode?.number ?? 0) + 1,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -77,6 +141,13 @@ export function NextEpisodeButton(props: {
|
||||||
if (!meta || !nextEp) return;
|
if (!meta || !nextEp) return;
|
||||||
const metaCopy = { ...meta };
|
const metaCopy = { ...meta };
|
||||||
metaCopy.episode = nextEp;
|
metaCopy.episode = nextEp;
|
||||||
|
metaCopy.season =
|
||||||
|
isLastEpisode && nextSeason
|
||||||
|
? {
|
||||||
|
...nextSeason,
|
||||||
|
tmdbId: nextSeason.id,
|
||||||
|
}
|
||||||
|
: metaCopy.season;
|
||||||
setShouldStartFromBeginning(true);
|
setShouldStartFromBeginning(true);
|
||||||
setDirectMeta(metaCopy);
|
setDirectMeta(metaCopy);
|
||||||
props.onChange?.(metaCopy);
|
props.onChange?.(metaCopy);
|
||||||
|
@ -92,17 +163,21 @@ export function NextEpisodeButton(props: {
|
||||||
props,
|
props,
|
||||||
setShouldStartFromBeginning,
|
setShouldStartFromBeginning,
|
||||||
updateItem,
|
updateItem,
|
||||||
|
isLastEpisode,
|
||||||
|
nextSeason,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const startCurrentEpisodeFromBeginning = useCallback(() => {
|
useEffect(() => {
|
||||||
if (!meta || !meta.episode) return;
|
if (!enableAutoplay || metaType !== "show") return;
|
||||||
const metaCopy = { ...meta };
|
const onePercent = duration / 100;
|
||||||
setShouldStartFromBeginning(true);
|
const isEnding = time >= duration - onePercent && duration !== 0;
|
||||||
setDirectMeta(metaCopy);
|
|
||||||
props.onChange?.(metaCopy);
|
|
||||||
}, [setDirectMeta, meta, props, setShouldStartFromBeginning]);
|
|
||||||
|
|
||||||
// TODO: If the type is a movie add a Go home button instead!
|
if (duration === 0) hasAutoplayed.current = false;
|
||||||
|
if (isEnding && isAutoplayAllowed() && !hasAutoplayed.current) {
|
||||||
|
hasAutoplayed.current = true;
|
||||||
|
loadNextEpisode();
|
||||||
|
}
|
||||||
|
}, [duration, enableAutoplay, loadNextEpisode, metaType, time]);
|
||||||
|
|
||||||
if (!meta?.episode || !nextEp) return null;
|
if (!meta?.episode || !nextEp) return null;
|
||||||
if (metaType !== "show") return null;
|
if (metaType !== "show") return null;
|
||||||
|
@ -133,7 +208,9 @@ export function NextEpisodeButton(props: {
|
||||||
className="bg-buttons-primary hover:bg-buttons-primaryHover text-buttons-primaryText flex justify-center items-center"
|
className="bg-buttons-primary hover:bg-buttons-primaryHover text-buttons-primaryText flex justify-center items-center"
|
||||||
>
|
>
|
||||||
<Icon className="text-xl mr-1" icon={Icons.SKIP_EPISODE} />
|
<Icon className="text-xl mr-1" icon={Icons.SKIP_EPISODE} />
|
||||||
{t("player.nextEpisode.next")}
|
{isLastEpisode && nextEp
|
||||||
|
? t("player.nextEpisode.nextSeason")
|
||||||
|
: t("player.nextEpisode.next")}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</Transition>
|
</Transition>
|
||||||
|
|
|
@ -51,6 +51,7 @@ export function useSettingsState(
|
||||||
}
|
}
|
||||||
| undefined,
|
| undefined,
|
||||||
enableThumbnails: boolean,
|
enableThumbnails: boolean,
|
||||||
|
enableAutoplay: boolean,
|
||||||
) {
|
) {
|
||||||
const [proxyUrlsState, setProxyUrls, resetProxyUrls, proxyUrlsChanged] =
|
const [proxyUrlsState, setProxyUrls, resetProxyUrls, proxyUrlsChanged] =
|
||||||
useDerived(proxyUrls);
|
useDerived(proxyUrls);
|
||||||
|
@ -84,6 +85,12 @@ export function useSettingsState(
|
||||||
resetEnableThumbnails,
|
resetEnableThumbnails,
|
||||||
enableThumbnailsChanged,
|
enableThumbnailsChanged,
|
||||||
] = useDerived(enableThumbnails);
|
] = useDerived(enableThumbnails);
|
||||||
|
const [
|
||||||
|
enableAutoplayState,
|
||||||
|
setEnableAutoplayState,
|
||||||
|
resetEnableAutoplay,
|
||||||
|
enableAutoplayChanged,
|
||||||
|
] = useDerived(enableAutoplay);
|
||||||
|
|
||||||
function reset() {
|
function reset() {
|
||||||
resetTheme();
|
resetTheme();
|
||||||
|
@ -95,6 +102,7 @@ export function useSettingsState(
|
||||||
resetDeviceName();
|
resetDeviceName();
|
||||||
resetProfile();
|
resetProfile();
|
||||||
resetEnableThumbnails();
|
resetEnableThumbnails();
|
||||||
|
resetEnableAutoplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
const changed =
|
const changed =
|
||||||
|
@ -105,7 +113,8 @@ export function useSettingsState(
|
||||||
backendUrlChanged ||
|
backendUrlChanged ||
|
||||||
proxyUrlsChanged ||
|
proxyUrlsChanged ||
|
||||||
profileChanged ||
|
profileChanged ||
|
||||||
enableThumbnailsChanged;
|
enableThumbnailsChanged ||
|
||||||
|
enableAutoplayChanged;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
reset,
|
reset,
|
||||||
|
@ -150,5 +159,10 @@ export function useSettingsState(
|
||||||
set: setEnableThumbnailsState,
|
set: setEnableThumbnailsState,
|
||||||
changed: enableThumbnailsChanged,
|
changed: enableThumbnailsChanged,
|
||||||
},
|
},
|
||||||
|
enableAutoplay: {
|
||||||
|
state: enableAutoplayState,
|
||||||
|
set: setEnableAutoplayState,
|
||||||
|
changed: enableAutoplayChanged,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,6 +123,9 @@ export function SettingsPage() {
|
||||||
const enableThumbnails = usePreferencesStore((s) => s.enableThumbnails);
|
const enableThumbnails = usePreferencesStore((s) => s.enableThumbnails);
|
||||||
const setEnableThumbnails = usePreferencesStore((s) => s.setEnableThumbnails);
|
const setEnableThumbnails = usePreferencesStore((s) => s.setEnableThumbnails);
|
||||||
|
|
||||||
|
const enableAutoplay = usePreferencesStore((s) => s.enableAutoplay);
|
||||||
|
const setEnableAutoplay = usePreferencesStore((s) => s.setEnableAutoplay);
|
||||||
|
|
||||||
const account = useAuthStore((s) => s.account);
|
const account = useAuthStore((s) => s.account);
|
||||||
const updateProfile = useAuthStore((s) => s.setAccountProfile);
|
const updateProfile = useAuthStore((s) => s.setAccountProfile);
|
||||||
const updateDeviceName = useAuthStore((s) => s.updateDeviceName);
|
const updateDeviceName = useAuthStore((s) => s.updateDeviceName);
|
||||||
|
@ -145,6 +148,7 @@ export function SettingsPage() {
|
||||||
backendUrlSetting,
|
backendUrlSetting,
|
||||||
account?.profile,
|
account?.profile,
|
||||||
enableThumbnails,
|
enableThumbnails,
|
||||||
|
enableAutoplay,
|
||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -197,6 +201,7 @@ export function SettingsPage() {
|
||||||
}
|
}
|
||||||
|
|
||||||
setEnableThumbnails(state.enableThumbnails.state);
|
setEnableThumbnails(state.enableThumbnails.state);
|
||||||
|
setEnableAutoplay(state.enableAutoplay.state);
|
||||||
setAppLanguage(state.appLanguage.state);
|
setAppLanguage(state.appLanguage.state);
|
||||||
setTheme(state.theme.state);
|
setTheme(state.theme.state);
|
||||||
setSubStyling(state.subtitleStyling.state);
|
setSubStyling(state.subtitleStyling.state);
|
||||||
|
@ -218,18 +223,19 @@ export function SettingsPage() {
|
||||||
setBackendUrl(url);
|
setBackendUrl(url);
|
||||||
}
|
}
|
||||||
}, [
|
}, [
|
||||||
state,
|
|
||||||
account,
|
account,
|
||||||
backendUrl,
|
backendUrl,
|
||||||
setEnableThumbnails,
|
setEnableThumbnails,
|
||||||
|
state,
|
||||||
|
setEnableAutoplay,
|
||||||
setAppLanguage,
|
setAppLanguage,
|
||||||
setTheme,
|
setTheme,
|
||||||
setSubStyling,
|
setSubStyling,
|
||||||
|
setProxySet,
|
||||||
updateDeviceName,
|
updateDeviceName,
|
||||||
updateProfile,
|
updateProfile,
|
||||||
setProxySet,
|
|
||||||
setBackendUrl,
|
|
||||||
logout,
|
logout,
|
||||||
|
setBackendUrl,
|
||||||
]);
|
]);
|
||||||
return (
|
return (
|
||||||
<SubPageLayout>
|
<SubPageLayout>
|
||||||
|
@ -270,6 +276,8 @@ export function SettingsPage() {
|
||||||
setLanguage={state.appLanguage.set}
|
setLanguage={state.appLanguage.set}
|
||||||
enableThumbnails={state.enableThumbnails.state}
|
enableThumbnails={state.enableThumbnails.state}
|
||||||
setEnableThumbnails={state.enableThumbnails.set}
|
setEnableThumbnails={state.enableThumbnails.set}
|
||||||
|
enableAutoplay={state.enableAutoplay.state}
|
||||||
|
setEnableAutoplay={state.enableAutoplay.set}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div id="settings-appearance" className="mt-48">
|
<div id="settings-appearance" className="mt-48">
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import classNames from "classnames";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
import { Toggle } from "@/components/buttons/Toggle";
|
import { Toggle } from "@/components/buttons/Toggle";
|
||||||
|
@ -5,6 +6,7 @@ import { FlagIcon } from "@/components/FlagIcon";
|
||||||
import { Dropdown } from "@/components/form/Dropdown";
|
import { Dropdown } from "@/components/form/Dropdown";
|
||||||
import { Heading1 } from "@/components/utils/Text";
|
import { Heading1 } from "@/components/utils/Text";
|
||||||
import { appLanguageOptions } from "@/setup/i18n";
|
import { appLanguageOptions } from "@/setup/i18n";
|
||||||
|
import { isAutoplayAllowed } from "@/utils/autoplay";
|
||||||
import { getLocaleInfo, sortLangCodes } from "@/utils/language";
|
import { getLocaleInfo, sortLangCodes } from "@/utils/language";
|
||||||
|
|
||||||
export function PreferencesPart(props: {
|
export function PreferencesPart(props: {
|
||||||
|
@ -12,10 +14,14 @@ export function PreferencesPart(props: {
|
||||||
setLanguage: (l: string) => void;
|
setLanguage: (l: string) => void;
|
||||||
enableThumbnails: boolean;
|
enableThumbnails: boolean;
|
||||||
setEnableThumbnails: (v: boolean) => void;
|
setEnableThumbnails: (v: boolean) => void;
|
||||||
|
enableAutoplay: boolean;
|
||||||
|
setEnableAutoplay: (v: boolean) => void;
|
||||||
}) {
|
}) {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const sorted = sortLangCodes(appLanguageOptions.map((item) => item.code));
|
const sorted = sortLangCodes(appLanguageOptions.map((item) => item.code));
|
||||||
|
|
||||||
|
const allowAutoplay = isAutoplayAllowed();
|
||||||
|
|
||||||
const options = appLanguageOptions
|
const options = appLanguageOptions
|
||||||
.sort((a, b) => sorted.indexOf(a.code) - sorted.indexOf(b.code))
|
.sort((a, b) => sorted.indexOf(a.code) - sorted.indexOf(b.code))
|
||||||
.map((opt) => ({
|
.map((opt) => ({
|
||||||
|
@ -62,6 +68,32 @@ export function PreferencesPart(props: {
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-white font-bold mb-3">
|
||||||
|
{t("settings.preferences.autoplay")}
|
||||||
|
</p>
|
||||||
|
<p className="max-w-[25rem] font-medium">
|
||||||
|
{t("settings.preferences.autoplayDescription")}
|
||||||
|
</p>
|
||||||
|
<div
|
||||||
|
onClick={() =>
|
||||||
|
allowAutoplay
|
||||||
|
? props.setEnableAutoplay(!props.enableAutoplay)
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
className={classNames(
|
||||||
|
"bg-dropdown-background hover:bg-dropdown-hoverBackground select-none my-4 cursor-pointer space-x-3 flex items-center max-w-[25rem] py-3 px-4 rounded-lg",
|
||||||
|
allowAutoplay
|
||||||
|
? "cursor-pointer opacity-100 pointer-events-auto"
|
||||||
|
: "cursor-not-allowed opacity-50 pointer-events-none",
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<Toggle enabled={props.enableAutoplay && allowAutoplay} />
|
||||||
|
<p className="flex-1 text-white font-bold">
|
||||||
|
{t("settings.preferences.autoplayLabel")}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ interface Config {
|
||||||
ONBOARDING_CHROME_EXTENSION_INSTALL_LINK: string;
|
ONBOARDING_CHROME_EXTENSION_INSTALL_LINK: string;
|
||||||
ONBOARDING_FIREFOX_EXTENSION_INSTALL_LINK: string;
|
ONBOARDING_FIREFOX_EXTENSION_INSTALL_LINK: string;
|
||||||
ONBOARDING_PROXY_INSTALL_LINK: string;
|
ONBOARDING_PROXY_INSTALL_LINK: string;
|
||||||
|
ALLOW_AUTOPLAY: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RuntimeConfig {
|
export interface RuntimeConfig {
|
||||||
|
@ -42,6 +43,7 @@ export interface RuntimeConfig {
|
||||||
TURNSTILE_KEY: string | null;
|
TURNSTILE_KEY: string | null;
|
||||||
CDN_REPLACEMENTS: Array<string[]>;
|
CDN_REPLACEMENTS: Array<string[]>;
|
||||||
HAS_ONBOARDING: boolean;
|
HAS_ONBOARDING: boolean;
|
||||||
|
ALLOW_AUTOPLAY: boolean;
|
||||||
ONBOARDING_CHROME_EXTENSION_INSTALL_LINK: string | null;
|
ONBOARDING_CHROME_EXTENSION_INSTALL_LINK: string | null;
|
||||||
ONBOARDING_FIREFOX_EXTENSION_INSTALL_LINK: string | null;
|
ONBOARDING_FIREFOX_EXTENSION_INSTALL_LINK: string | null;
|
||||||
ONBOARDING_PROXY_INSTALL_LINK: string | null;
|
ONBOARDING_PROXY_INSTALL_LINK: string | null;
|
||||||
|
@ -68,6 +70,7 @@ const env: Record<keyof Config, undefined | string> = {
|
||||||
TURNSTILE_KEY: import.meta.env.VITE_TURNSTILE_KEY,
|
TURNSTILE_KEY: import.meta.env.VITE_TURNSTILE_KEY,
|
||||||
CDN_REPLACEMENTS: import.meta.env.VITE_CDN_REPLACEMENTS,
|
CDN_REPLACEMENTS: import.meta.env.VITE_CDN_REPLACEMENTS,
|
||||||
HAS_ONBOARDING: import.meta.env.VITE_HAS_ONBOARDING,
|
HAS_ONBOARDING: import.meta.env.VITE_HAS_ONBOARDING,
|
||||||
|
ALLOW_AUTOPLAY: import.meta.env.VITE_ALLOW_AUTOPLAY,
|
||||||
};
|
};
|
||||||
|
|
||||||
function coerceUndefined(value: string | null | undefined): string | undefined {
|
function coerceUndefined(value: string | null | undefined): string | undefined {
|
||||||
|
@ -113,7 +116,8 @@ export function conf(): RuntimeConfig {
|
||||||
.map((v) => v.trim())
|
.map((v) => v.trim())
|
||||||
.filter((v) => v.length > 0),
|
.filter((v) => v.length > 0),
|
||||||
NORMAL_ROUTER: getKey("NORMAL_ROUTER", "false") === "true",
|
NORMAL_ROUTER: getKey("NORMAL_ROUTER", "false") === "true",
|
||||||
HAS_ONBOARDING: getKey("HAS_ONBOARDING", "false") === "true",
|
HAS_ONBOARDING: getKey("HAS_ONBOARDING", "true") === "true",
|
||||||
|
ALLOW_AUTOPLAY: getKey("ALLOW_AUTOPLAY", "false") === "true",
|
||||||
TURNSTILE_KEY: getKey("TURNSTILE_KEY"),
|
TURNSTILE_KEY: getKey("TURNSTILE_KEY"),
|
||||||
DISALLOWED_IDS: getKey("DISALLOWED_IDS", "")
|
DISALLOWED_IDS: getKey("DISALLOWED_IDS", "")
|
||||||
.split(",")
|
.split(",")
|
||||||
|
|
|
@ -5,6 +5,8 @@ import { immer } from "zustand/middleware/immer";
|
||||||
export interface PreferencesStore {
|
export interface PreferencesStore {
|
||||||
enableThumbnails: boolean;
|
enableThumbnails: boolean;
|
||||||
setEnableThumbnails(v: boolean): void;
|
setEnableThumbnails(v: boolean): void;
|
||||||
|
enableAutoplay: boolean;
|
||||||
|
setEnableAutoplay(v: boolean): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const usePreferencesStore = create(
|
export const usePreferencesStore = create(
|
||||||
|
@ -16,6 +18,12 @@ export const usePreferencesStore = create(
|
||||||
s.enableThumbnails = v;
|
s.enableThumbnails = v;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
enableAutoplay: false,
|
||||||
|
setEnableAutoplay(v) {
|
||||||
|
set((s) => {
|
||||||
|
s.enableAutoplay = v;
|
||||||
|
});
|
||||||
|
},
|
||||||
})),
|
})),
|
||||||
{
|
{
|
||||||
name: "__MW::preferences",
|
name: "__MW::preferences",
|
||||||
|
|
11
src/utils/autoplay.ts
Normal file
11
src/utils/autoplay.ts
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import { isExtensionActiveCached } from "@/backend/extension/messaging";
|
||||||
|
import { conf } from "@/setup/config";
|
||||||
|
import { useAuthStore } from "@/stores/auth";
|
||||||
|
|
||||||
|
export function isAutoplayAllowed() {
|
||||||
|
return Boolean(
|
||||||
|
conf().ALLOW_AUTOPLAY ||
|
||||||
|
isExtensionActiveCached() ||
|
||||||
|
useAuthStore.getState().proxySet,
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in a new issue