moved back to commander and fixed React error

This commit is contained in:
stratumadev 2025-11-27 11:42:55 +01:00
parent c38dd20904
commit 3d5142540b
7 changed files with 427 additions and 334 deletions

View file

@ -105,7 +105,7 @@ export default class Crunchy implements ServiceClass {
await this.getCmsData(); await this.getCmsData();
} else if (argv.new) { } else if (argv.new) {
await this.refreshToken(); await this.refreshToken();
await this.getNewlyAdded(argv.page, argv['search-type'], argv.raw, argv.rawoutput); await this.getNewlyAdded(argv.page, argv.searchType, argv.raw, argv.rawoutput);
} else if (argv.search && argv.search.length > 2) { } else if (argv.search && argv.search.length > 2) {
await this.refreshToken(); await this.refreshToken();
await this.doSearch({ ...argv, search: argv.search as string }); await this.doSearch({ ...argv, search: argv.search as string });
@ -122,16 +122,16 @@ export default class Crunchy implements ServiceClass {
} }
} }
return true; return true;
} else if (argv['movie-listing'] && argv['movie-listing'].match(/^[0-9A-Z]{9,}$/)) { } else if (argv.movieListing && argv.movieListing.match(/^[0-9A-Z]{9,}$/)) {
await this.refreshToken(); await this.refreshToken();
await this.logMovieListingById(argv['movie-listing'] as string); await this.logMovieListingById(argv.movieListing as string);
} else if (argv['show-raw'] && argv['show-raw'].match(/^[0-9A-Z]{9,}$/)) { } else if (argv.showRaw && argv.showRaw.match(/^[0-9A-Z]{9,}$/)) {
await this.refreshToken(); await this.refreshToken();
await this.logShowRawById(argv['show-raw'] as string); await this.logShowRawById(argv.showRaw as string);
} else if (argv['season-raw'] && argv['season-raw'].match(/^[0-9A-Z]{9,}$/)) { } else if (argv.seasonRaw && argv.seasonRaw.match(/^[0-9A-Z]{9,}$/)) {
await this.refreshToken(); await this.refreshToken();
await this.logSeasonRawById(argv['season-raw'] as string); await this.logSeasonRawById(argv.seasonRaw as string);
} else if (argv['show-list-raw']) { } else if (argv.showListRaw) {
await this.refreshToken(); await this.refreshToken();
await this.logShowListRaw(); await this.logShowListRaw();
} else if (argv.s && argv.s.match(/^[0-9A-Z]{9,}$/)) { } else if (argv.s && argv.s.match(/^[0-9A-Z]{9,}$/)) {
@ -2076,16 +2076,22 @@ export default class Crunchy implements ServiceClass {
if (options.novids && options.noaudio) { if (options.novids && options.noaudio) {
if (videoStream) { if (videoStream) {
await this.refreshToken(true, true); await this.refreshToken(true, true);
await this.req.getData(`https://www.crunchyroll.com/playback/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${videoStream.token}`, { await this.req.getData(
...{ method: 'DELETE' }, `https://cr-play-service.prd.crunchyrollsvc.com/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${videoStream.token}`,
...AuthHeaders {
}); ...{ method: 'DELETE' },
...AuthHeaders
}
);
} }
if (audioStream && videoStream?.token !== audioStream.token) { if (audioStream && videoStream?.token !== audioStream.token) {
await this.req.getData(`https://www.crunchyroll.com/playback/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${audioStream.token}`, { await this.req.getData(
...{ method: 'DELETE' }, `https://cr-play-service.prd.crunchyrollsvc.com/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${audioStream.token}`,
...AuthHeaders {
}); ...{ method: 'DELETE' },
...AuthHeaders
}
);
} }
} }
@ -2208,13 +2214,13 @@ export default class Crunchy implements ServiceClass {
await this.refreshToken(true, true); await this.refreshToken(true, true);
if (videoStream) { if (videoStream) {
await this.req.getData( await this.req.getData(
`https://www.crunchyroll.com/playback/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${videoStream.token}/keepAlive?playhead=1`, `https://cr-play-service.prd.crunchyrollsvc.com/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${videoStream.token}/keepAlive?playhead=1`,
{ ...{ method: 'PATCH' }, ...AuthHeaders } { ...{ method: 'PATCH' }, ...AuthHeaders }
); );
} }
if (audioStream && videoStream?.token !== audioStream.token) { if (audioStream && videoStream?.token !== audioStream.token) {
await this.req.getData( await this.req.getData(
`https://www.crunchyroll.com/playback/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${audioStream.token}/keepAlive?playhead=1`, `https://cr-play-service.prd.crunchyrollsvc.com/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${audioStream.token}/keepAlive?playhead=1`,
{ ...{ method: 'PATCH' }, ...AuthHeaders } { ...{ method: 'PATCH' }, ...AuthHeaders }
); );
} }
@ -2286,16 +2292,22 @@ export default class Crunchy implements ServiceClass {
if (videoStream) { if (videoStream) {
await this.refreshToken(true, true); await this.refreshToken(true, true);
await this.req.getData(`https://www.crunchyroll.com/playback/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${videoStream.token}`, { await this.req.getData(
...{ method: 'DELETE' }, `https://cr-play-service.prd.crunchyrollsvc.com/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${videoStream.token}`,
...AuthHeaders {
}); ...{ method: 'DELETE' },
...AuthHeaders
}
);
} }
if (audioStream && videoStream?.token !== audioStream.token) { if (audioStream && videoStream?.token !== audioStream.token) {
await this.req.getData(`https://www.crunchyroll.com/playback/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${audioStream.token}`, { await this.req.getData(
...{ method: 'DELETE' }, `https://cr-play-service.prd.crunchyrollsvc.com/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${audioStream.token}`,
...AuthHeaders {
}); ...{ method: 'DELETE' },
...AuthHeaders
}
);
} }
let [audioDownloaded, videoDownloaded] = [false, false]; let [audioDownloaded, videoDownloaded] = [false, false];
@ -2625,13 +2637,13 @@ export default class Crunchy implements ServiceClass {
if (videoStream) { if (videoStream) {
await this.refreshToken(true, true); await this.refreshToken(true, true);
await this.req.getData( await this.req.getData(
`https://www.crunchyroll.com/playback/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${videoStream.token}`, `https://cr-play-service.prd.crunchyrollsvc.com/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${videoStream.token}`,
{ ...{ method: 'DELETE' }, ...AuthHeaders } { ...{ method: 'DELETE' }, ...AuthHeaders }
); );
} }
if (audioStream && videoStream?.token !== audioStream.token) { if (audioStream && videoStream?.token !== audioStream.token) {
await this.req.getData( await this.req.getData(
`https://www.crunchyroll.com/playback/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${audioStream.token}`, `https://cr-play-service.prd.crunchyrollsvc.com/v1/token/${currentVersion ? currentVersion.guid : currentMediaId}/${audioStream.token}`,
{ ...{ method: 'DELETE' }, ...AuthHeaders } { ...{ method: 'DELETE' }, ...AuthHeaders }
); );
} }

View file

@ -21,7 +21,7 @@
"@babel/preset-react": "^7.28.5", "@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5", "@babel/preset-typescript": "^7.28.5",
"@types/node": "^24.10.1", "@types/node": "^24.10.1",
"@types/react": "^19.2.6", "@types/react": "^19.2.7",
"@types/react-dom": "^19.2.3", "@types/react-dom": "^19.2.3",
"@types/uuid": "^10.0.0", "@types/uuid": "^10.0.0",
"babel-loader": "^10.0.0", "babel-loader": "^10.0.0",

View file

@ -10,19 +10,19 @@ importers:
dependencies: dependencies:
'@emotion/react': '@emotion/react':
specifier: ^11.14.0 specifier: ^11.14.0
version: 11.14.0(@types/react@19.2.6)(react@19.2.0) version: 11.14.0(@types/react@19.2.7)(react@19.2.0)
'@emotion/styled': '@emotion/styled':
specifier: ^11.14.1 specifier: ^11.14.1
version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
'@mui/icons-material': '@mui/icons-material':
specifier: ^7.3.5 specifier: ^7.3.5
version: 7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) version: 7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
'@mui/lab': '@mui/lab':
specifier: 7.0.0-beta.12 specifier: 7.0.0-beta.12
version: 7.0.0-beta.12(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) version: 7.0.0-beta.12(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@mui/material': '@mui/material':
specifier: ^7.3.5 specifier: ^7.3.5
version: 7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) version: 7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
notistack: notistack:
specifier: ^3.0.2 specifier: ^3.0.2
version: 3.0.2(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) version: 3.0.2(csstype@3.2.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
@ -58,11 +58,11 @@ importers:
specifier: ^24.10.1 specifier: ^24.10.1
version: 24.10.1 version: 24.10.1
'@types/react': '@types/react':
specifier: ^19.2.6 specifier: ^19.2.7
version: 19.2.6 version: 19.2.7
'@types/react-dom': '@types/react-dom':
specifier: ^19.2.3 specifier: ^19.2.3
version: 19.2.3(@types/react@19.2.6) version: 19.2.3(@types/react@19.2.7)
'@types/uuid': '@types/uuid':
specifier: ^10.0.0 specifier: ^10.0.0
version: 10.0.0 version: 10.0.0
@ -978,8 +978,8 @@ packages:
peerDependencies: peerDependencies:
'@types/react': '*' '@types/react': '*'
'@types/react@19.2.6': '@types/react@19.2.7':
resolution: {integrity: sha512-p/jUvulfgU7oKtj6Xpk8cA2Y1xKTtICGpJYeJXz2YVO2UcvjQgeRMLDGfDeqeRW2Ta+0QNFwcc8X3GH8SxZz6w==} resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==}
'@types/retry@0.12.2': '@types/retry@0.12.2':
resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==}
@ -1168,8 +1168,8 @@ packages:
balanced-match@1.0.2: balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
baseline-browser-mapping@2.8.29: baseline-browser-mapping@2.8.31:
resolution: {integrity: sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==} resolution: {integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==}
hasBin: true hasBin: true
batch@0.6.1: batch@0.6.1:
@ -1227,8 +1227,8 @@ packages:
camel-case@4.1.2: camel-case@4.1.2:
resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
caniuse-lite@1.0.30001755: caniuse-lite@1.0.30001757:
resolution: {integrity: sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==} resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==}
chalk@4.1.2: chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
@ -1453,8 +1453,8 @@ packages:
ee-first@1.1.1: ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
electron-to-chromium@1.5.255: electron-to-chromium@1.5.262:
resolution: {integrity: sha512-Z9oIp4HrFF/cZkDPMpz2XSuVpc1THDpT4dlmATFlJUIBVCy9Vap5/rIXsASP1CscBacBqhabwh8vLctqBwEerQ==} resolution: {integrity: sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==}
emoji-regex@8.0.0: emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@ -1474,8 +1474,8 @@ packages:
entities@2.2.0: entities@2.2.0:
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
envinfo@7.20.0: envinfo@7.21.0:
resolution: {integrity: sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==} resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==}
engines: {node: '>=4'} engines: {node: '>=4'}
hasBin: true hasBin: true
@ -1941,9 +1941,9 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
mime-types@3.0.1: mime-types@3.0.2:
resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==}
engines: {node: '>= 0.6'} engines: {node: '>=18'}
mime@1.6.0: mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
@ -1985,8 +1985,8 @@ packages:
no-case@3.0.4: no-case@3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
node-forge@1.3.1: node-forge@1.3.2:
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} resolution: {integrity: sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==}
engines: {node: '>= 6.13.0'} engines: {node: '>= 6.13.0'}
node-releases@2.0.27: node-releases@2.0.27:
@ -3475,7 +3475,7 @@ snapshots:
'@emotion/memoize@0.9.0': {} '@emotion/memoize@0.9.0': {}
'@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0)': '@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0)':
dependencies: dependencies:
'@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5 '@emotion/babel-plugin': 11.13.5
@ -3487,7 +3487,7 @@ snapshots:
hoist-non-react-statics: 3.3.2 hoist-non-react-statics: 3.3.2
react: 19.2.0 react: 19.2.0
optionalDependencies: optionalDependencies:
'@types/react': 19.2.6 '@types/react': 19.2.7
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -3501,18 +3501,18 @@ snapshots:
'@emotion/sheet@1.4.0': {} '@emotion/sheet@1.4.0': {}
'@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)': '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
dependencies: dependencies:
'@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4
'@emotion/babel-plugin': 11.13.5 '@emotion/babel-plugin': 11.13.5
'@emotion/is-prop-valid': 1.4.0 '@emotion/is-prop-valid': 1.4.0
'@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0) '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
'@emotion/serialize': 1.3.3 '@emotion/serialize': 1.3.3
'@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0) '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.0)
'@emotion/utils': 1.4.2 '@emotion/utils': 1.4.2
react: 19.2.0 react: 19.2.0
optionalDependencies: optionalDependencies:
'@types/react': 19.2.6 '@types/react': 19.2.7
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -3595,39 +3595,39 @@ snapshots:
'@mui/core-downloads-tracker@7.3.5': {} '@mui/core-downloads-tracker@7.3.5': {}
'@mui/icons-material@7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)': '@mui/icons-material@7.3.5(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
dependencies: dependencies:
'@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4
'@mui/material': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@mui/material': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
react: 19.2.0 react: 19.2.0
optionalDependencies: optionalDependencies:
'@types/react': 19.2.6 '@types/react': 19.2.7
'@mui/lab@7.0.0-beta.12(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': '@mui/lab@7.0.0-beta.12(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies: dependencies:
'@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4
'@mui/material': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@mui/material': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
'@mui/system': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) '@mui/system': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
'@mui/types': 7.4.8(@types/react@19.2.6) '@mui/types': 7.4.8(@types/react@19.2.7)
'@mui/utils': 7.3.5(@types/react@19.2.6)(react@19.2.0) '@mui/utils': 7.3.5(@types/react@19.2.7)(react@19.2.0)
clsx: 2.1.1 clsx: 2.1.1
prop-types: 15.8.1 prop-types: 15.8.1
react: 19.2.0 react: 19.2.0
react-dom: 19.2.0(react@19.2.0) react-dom: 19.2.0(react@19.2.0)
optionalDependencies: optionalDependencies:
'@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0) '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
'@types/react': 19.2.6 '@types/react': 19.2.7
'@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': '@mui/material@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)':
dependencies: dependencies:
'@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4
'@mui/core-downloads-tracker': 7.3.5 '@mui/core-downloads-tracker': 7.3.5
'@mui/system': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) '@mui/system': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
'@mui/types': 7.4.8(@types/react@19.2.6) '@mui/types': 7.4.8(@types/react@19.2.7)
'@mui/utils': 7.3.5(@types/react@19.2.6)(react@19.2.0) '@mui/utils': 7.3.5(@types/react@19.2.7)(react@19.2.0)
'@popperjs/core': 2.11.8 '@popperjs/core': 2.11.8
'@types/react-transition-group': 4.4.12(@types/react@19.2.6) '@types/react-transition-group': 4.4.12(@types/react@19.2.7)
clsx: 2.1.1 clsx: 2.1.1
csstype: 3.2.3 csstype: 3.2.3
prop-types: 15.8.1 prop-types: 15.8.1
@ -3636,20 +3636,20 @@ snapshots:
react-is: 19.2.0 react-is: 19.2.0
react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0) react-transition-group: 4.4.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
optionalDependencies: optionalDependencies:
'@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0) '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
'@types/react': 19.2.6 '@types/react': 19.2.7
'@mui/private-theming@7.3.5(@types/react@19.2.6)(react@19.2.0)': '@mui/private-theming@7.3.5(@types/react@19.2.7)(react@19.2.0)':
dependencies: dependencies:
'@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4
'@mui/utils': 7.3.5(@types/react@19.2.6)(react@19.2.0) '@mui/utils': 7.3.5(@types/react@19.2.7)(react@19.2.0)
prop-types: 15.8.1 prop-types: 15.8.1
react: 19.2.0 react: 19.2.0
optionalDependencies: optionalDependencies:
'@types/react': 19.2.6 '@types/react': 19.2.7
'@mui/styled-engine@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(react@19.2.0)': '@mui/styled-engine@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(react@19.2.0)':
dependencies: dependencies:
'@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4
'@emotion/cache': 11.14.0 '@emotion/cache': 11.14.0
@ -3659,42 +3659,42 @@ snapshots:
prop-types: 15.8.1 prop-types: 15.8.1
react: 19.2.0 react: 19.2.0
optionalDependencies: optionalDependencies:
'@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0) '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
'@mui/system@7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0)': '@mui/system@7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)':
dependencies: dependencies:
'@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4
'@mui/private-theming': 7.3.5(@types/react@19.2.6)(react@19.2.0) '@mui/private-theming': 7.3.5(@types/react@19.2.7)(react@19.2.0)
'@mui/styled-engine': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0))(react@19.2.0) '@mui/styled-engine': 7.3.5(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0))(react@19.2.0)
'@mui/types': 7.4.8(@types/react@19.2.6) '@mui/types': 7.4.8(@types/react@19.2.7)
'@mui/utils': 7.3.5(@types/react@19.2.6)(react@19.2.0) '@mui/utils': 7.3.5(@types/react@19.2.7)(react@19.2.0)
clsx: 2.1.1 clsx: 2.1.1
csstype: 3.2.3 csstype: 3.2.3
prop-types: 15.8.1 prop-types: 15.8.1
react: 19.2.0 react: 19.2.0
optionalDependencies: optionalDependencies:
'@emotion/react': 11.14.0(@types/react@19.2.6)(react@19.2.0) '@emotion/react': 11.14.0(@types/react@19.2.7)(react@19.2.0)
'@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.6)(react@19.2.0))(@types/react@19.2.6)(react@19.2.0) '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.7)(react@19.2.0))(@types/react@19.2.7)(react@19.2.0)
'@types/react': 19.2.6 '@types/react': 19.2.7
'@mui/types@7.4.8(@types/react@19.2.6)': '@mui/types@7.4.8(@types/react@19.2.7)':
dependencies: dependencies:
'@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4
optionalDependencies: optionalDependencies:
'@types/react': 19.2.6 '@types/react': 19.2.7
'@mui/utils@7.3.5(@types/react@19.2.6)(react@19.2.0)': '@mui/utils@7.3.5(@types/react@19.2.7)(react@19.2.0)':
dependencies: dependencies:
'@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4
'@mui/types': 7.4.8(@types/react@19.2.6) '@mui/types': 7.4.8(@types/react@19.2.7)
'@types/prop-types': 15.7.15 '@types/prop-types': 15.7.15
clsx: 2.1.1 clsx: 2.1.1
prop-types: 15.8.1 prop-types: 15.8.1
react: 19.2.0 react: 19.2.0
react-is: 19.2.0 react-is: 19.2.0
optionalDependencies: optionalDependencies:
'@types/react': 19.2.6 '@types/react': 19.2.7
'@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3':
optional: true optional: true
@ -3781,15 +3781,15 @@ snapshots:
'@types/range-parser@1.2.7': {} '@types/range-parser@1.2.7': {}
'@types/react-dom@19.2.3(@types/react@19.2.6)': '@types/react-dom@19.2.3(@types/react@19.2.7)':
dependencies: dependencies:
'@types/react': 19.2.6 '@types/react': 19.2.7
'@types/react-transition-group@4.4.12(@types/react@19.2.6)': '@types/react-transition-group@4.4.12(@types/react@19.2.7)':
dependencies: dependencies:
'@types/react': 19.2.6 '@types/react': 19.2.7
'@types/react@19.2.6': '@types/react@19.2.7':
dependencies: dependencies:
csstype: 3.2.3 csstype: 3.2.3
@ -4007,7 +4007,7 @@ snapshots:
balanced-match@1.0.2: {} balanced-match@1.0.2: {}
baseline-browser-mapping@2.8.29: {} baseline-browser-mapping@2.8.31: {}
batch@0.6.1: {} batch@0.6.1: {}
@ -4048,9 +4048,9 @@ snapshots:
browserslist@4.28.0: browserslist@4.28.0:
dependencies: dependencies:
baseline-browser-mapping: 2.8.29 baseline-browser-mapping: 2.8.31
caniuse-lite: 1.0.30001755 caniuse-lite: 1.0.30001757
electron-to-chromium: 1.5.255 electron-to-chromium: 1.5.262
node-releases: 2.0.27 node-releases: 2.0.27
update-browserslist-db: 1.1.4(browserslist@4.28.0) update-browserslist-db: 1.1.4(browserslist@4.28.0)
@ -4079,7 +4079,7 @@ snapshots:
pascal-case: 3.1.2 pascal-case: 3.1.2
tslib: 2.8.1 tslib: 2.8.1
caniuse-lite@1.0.30001755: {} caniuse-lite@1.0.30001757: {}
chalk@4.1.2: chalk@4.1.2:
dependencies: dependencies:
@ -4299,7 +4299,7 @@ snapshots:
ee-first@1.1.1: {} ee-first@1.1.1: {}
electron-to-chromium@1.5.255: {} electron-to-chromium@1.5.262: {}
emoji-regex@8.0.0: {} emoji-regex@8.0.0: {}
@ -4314,7 +4314,7 @@ snapshots:
entities@2.2.0: {} entities@2.2.0: {}
envinfo@7.20.0: {} envinfo@7.21.0: {}
error-ex@1.3.4: error-ex@1.3.4:
dependencies: dependencies:
@ -4755,7 +4755,7 @@ snapshots:
dependencies: dependencies:
mime-db: 1.52.0 mime-db: 1.52.0
mime-types@3.0.1: mime-types@3.0.2:
dependencies: dependencies:
mime-db: 1.54.0 mime-db: 1.54.0
@ -4789,7 +4789,7 @@ snapshots:
lower-case: 2.0.2 lower-case: 2.0.2
tslib: 2.8.1 tslib: 2.8.1
node-forge@1.3.1: {} node-forge@1.3.2: {}
node-releases@2.0.27: {} node-releases@2.0.27: {}
@ -5092,7 +5092,7 @@ snapshots:
selfsigned@2.4.1: selfsigned@2.4.1:
dependencies: dependencies:
'@types/node-forge': 1.3.14 '@types/node-forge': 1.3.14
node-forge: 1.3.1 node-forge: 1.3.2
semver@5.7.2: {} semver@5.7.2: {}
@ -5381,7 +5381,7 @@ snapshots:
colorette: 2.0.20 colorette: 2.0.20
commander: 12.1.0 commander: 12.1.0
cross-spawn: 7.0.6 cross-spawn: 7.0.6
envinfo: 7.20.0 envinfo: 7.21.0
fastest-levenshtein: 1.0.16 fastest-levenshtein: 1.0.16
import-local: 3.2.0 import-local: 3.2.0
interpret: 3.1.1 interpret: 3.1.1
@ -5395,7 +5395,7 @@ snapshots:
dependencies: dependencies:
colorette: 2.0.20 colorette: 2.0.20
memfs: 4.51.0 memfs: 4.51.0
mime-types: 3.0.1 mime-types: 3.0.2
on-finished: 2.4.1 on-finished: 2.4.1
range-parser: 1.2.1 range-parser: 1.2.1
schema-utils: 4.3.3 schema-utils: 4.3.3

View file

@ -1,3 +1,4 @@
import React from 'react';
import { Box, ThemeProvider, createTheme, Theme } from '@mui/material'; import { Box, ThemeProvider, createTheme, Theme } from '@mui/material';
const makeTheme = (mode: 'dark' | 'light'): Partial<Theme> => { const makeTheme = (mode: 'dark' | 'light'): Partial<Theme> => {

View file

@ -1,4 +1,4 @@
import yargs, { Choices } from 'yargs'; import { Command } from 'commander';
import { args, AvailableMuxer, groups } from './module.args'; import { args, AvailableMuxer, groups } from './module.args';
import { LanguageItem } from './module.langsData'; import { LanguageItem } from './module.langsData';
import { DownloadInfo } from '../@types/messageHandler'; import { DownloadInfo } from '../@types/messageHandler';
@ -32,13 +32,13 @@ export let argvC: {
auth: boolean | undefined; auth: boolean | undefined;
dlFonts: boolean | undefined; dlFonts: boolean | undefined;
search: string | undefined; search: string | undefined;
'search-type': string; searchType: string;
page: number | undefined; page: number | undefined;
locale: string; locale: string;
new: boolean | undefined; new: boolean | undefined;
'movie-listing': string | undefined; movieListing: string | undefined;
'show-raw': string | undefined; showRaw: string | undefined;
'season-raw': string | undefined; seasonRaw: string | undefined;
series: string | undefined; series: string | undefined;
s: string | undefined; s: string | undefined;
srz: string | undefined; srz: string | undefined;
@ -102,6 +102,43 @@ export let argvC: {
export type ArgvType = typeof argvC; export type ArgvType = typeof argvC;
// This functions manages slight mismatches like -srz and returns it as --srz
const processArgv = () => {
const argv = [];
const arrayFlags = args.filter((a) => a.type === 'array').map((a) => `--${a.name}`);
for (let i = 0; i < process.argv.length; i++) {
const arg = process.argv[i];
if (/^-[a-zA-Z]{2,}$/.test(arg)) {
const found = args.find((a) => a.name === arg.substring(1) || a.alias === arg.substring(1));
if (found) {
argv.push(`--${found.name}`);
continue;
}
}
if (arrayFlags.includes(arg)) {
const col = [];
let n = i + 1;
while (n < process.argv.length && !process.argv[n].startsWith('-')) {
col.push(process.argv[n]);
n++;
}
argv.push(arg);
argv.push(col.join(' '));
i = n - 1;
continue;
}
argv.push(arg);
}
return argv;
};
const appArgv = ( const appArgv = (
cfg: { cfg: {
[key: string]: unknown; [key: string]: unknown;
@ -109,41 +146,91 @@ const appArgv = (
isGUI = false isGUI = false
) => { ) => {
if (argvC) return argvC; if (argvC) return argvC;
yargs(process.argv.slice(2)); const argv = getCommander(cfg, isGUI).parse(processArgv());
const argv = getArgv(cfg, isGUI).parseSync(); const parsed = argv.opts() as ArgvType;
argvC = argv;
return argv; // Be sure that both vars (name and alias) are defined
for (const item of args) {
const name = item.name;
const alias = item.alias;
if (!alias) continue;
if (parsed[name] !== undefined) {
parsed[alias] = parsed[name];
}
if (parsed[alias] !== undefined) {
parsed[name] = parsed[alias];
}
}
if (!isGUI && (process.argv.length <= 2 || parsed.help)) {
argv.outputHelp();
process.exit(0);
}
argvC = parsed;
return parsed;
}; };
const overrideArguments = (cfg: { [key: string]: unknown }, override: Partial<typeof argvC>, isGUI = false) => { const overrideArguments = (cfg: { [key: string]: unknown }, override: Partial<typeof argvC>, isGUI = false) => {
const argv = getArgv(cfg, isGUI) const argv = getCommander(cfg, isGUI);
.middleware((ar) => { const baseArgv = [...processArgv()];
for (const key of Object.keys(override)) {
ar[key] = override[key]; for (const [key, val] of Object.entries(override)) {
} if (val === undefined) continue;
}) if (typeof val === 'boolean') {
.parseSync(); if (val) baseArgv.push(`--${key}`);
argvC = argv; } else {
baseArgv.push(`--${key}`, String(val));
}
}
const data = argv.parse(baseArgv);
const parsed = data.opts() as ArgvType;
// Be sure that both vars (name and alias) are defined
for (const item of args) {
const name = item.name;
const alias = item.alias;
if (!alias) continue;
if (parsed[name] !== undefined) {
parsed[alias] = parsed[name];
}
if (parsed[alias] !== undefined) {
parsed[name] = parsed[alias];
}
}
if (!isGUI && (process.argv.length <= 2 || parsed.help)) {
argv.outputHelp();
process.exit(0);
}
argvC = parsed;
}; };
export { appArgv, overrideArguments }; export { appArgv, overrideArguments };
const getArgv = (cfg: { [key: string]: unknown }, isGUI: boolean) => { const getCommander = (cfg: Record<string, unknown>, isGUI: boolean) => {
const program = new Command();
program
.name(process.platform === 'win32' ? 'aniDL.exe' : 'aniDL')
.description(pj.description)
.version(pj.version, '-v, --version', 'Show version')
.allowUnknownOption(false)
.allowExcessArguments(true);
const parseDefault = <T = unknown>(key: string, _default: T): T => { const parseDefault = <T = unknown>(key: string, _default: T): T => {
if (Object.prototype.hasOwnProperty.call(cfg, key)) { if (Object.prototype.hasOwnProperty.call(cfg, key)) {
return cfg[key] as T; return cfg[key] as T;
} else return _default; } else return _default;
}; };
const argv = yargs
.parserConfiguration({
'duplicate-arguments-array': false,
'camel-case-expansion': false
})
.wrap(yargs.terminalWidth())
.usage('Usage: $0 [options]')
.version(pj.version)
.help(true);
//.strictOptions()
const data = args.map((a) => { const data = args.map((a) => {
return { return {
...a, ...a,
@ -152,40 +239,83 @@ const getArgv = (cfg: { [key: string]: unknown }, isGUI: boolean) => {
default: typeof a.default === 'object' && !Array.isArray(a.default) ? parseDefault((a.default as any).name || a.name, (a.default as any).default) : a.default default: typeof a.default === 'object' && !Array.isArray(a.default) ? parseDefault((a.default as any).name || a.name, (a.default as any).default) : a.default
}; };
}); });
for (const item of data)
argv.option(item.name, { for (const item of data) {
...item, const option = program.createOption(
coerce: (value) => { (item.alias
if (item.transformer) { ? `${item.alias.length === 1 ? `-${item.alias}` : `--${item.alias}`}, ${item.name.length === 1 ? `-${item.name}` : `--${item.name}`}`
return item.transformer(value); : item.name.length === 1
} else { ? `-${item.name}`
return value; : `--${item.name}`) + (item.type === 'boolean' ? '' : ` <value>`),
item.describe ?? ''
);
if (item.default !== undefined) option.default(item.default);
option.argParser((value) => {
if (item.type === 'boolean') {
if (value === undefined) return true;
if (value === 'true') return true;
if (value === 'false') return false;
return Boolean(value);
}
if (item.type === 'array') {
if (typeof value === 'string' && value.includes(',')) {
return value.split(',').map((v) => v.trim());
} }
},
choices: item.name === 'service' && isGUI ? undefined : (item.choices as unknown as Choices) if (typeof value === 'string' && value.includes(' ')) {
return value.split(' ').map((v) => v.trim());
}
return Array.isArray(value) ? value : [value];
}
if (item.type === 'number') {
const num = Number(value);
return Number.isFinite(num) ? num : 0;
}
if (item.choices && !(isGUI && item.name === 'service')) {
if (!item.choices.includes(value)) {
console.error(`Invalid value '${value}' for --${item.name}. Allowed: ${item.choices.join(', ')}`);
process.exit(1);
}
}
if (item.transformer) return item.transformer(value);
return value;
}); });
// Custom logic for suggesting corrections for misspelled options program.addOption(option);
argv.middleware((argv: Record<string, any>) => { }
// List of valid options
const validOptions = [...args.map((a) => a.name), ...(args.map((a) => a.alias).filter((alias) => alias !== undefined) as string[])];
const unknownOptions = Object.keys(argv).filter((key) => !validOptions.includes(key) && key !== '_' && key !== '$0'); // Filter out known options
const suggestedOptions: Record<string, boolean> = {}; // Custom logic for suggesting corrections for misspelled options
unknownOptions.forEach((actualOption) => { program.hook('preAction', (_, command) => {
const closestOption = validOptions.find((option) => { const used = command.parent?.args || [];
const levenVal = leven(option, actualOption);
return levenVal <= 2 && levenVal > 0; const validOptions = [...args.map((a) => a.name), ...args.map((a) => a.alias).filter((a): a is string => a !== undefined)];
const unknownOptions = used.filter((arg) => arg.startsWith('-'));
const suggestions: Record<string, boolean> = {};
unknownOptions.forEach((opt) => {
const cleaned = opt.replace(/^-+/, '');
const closest = validOptions.find((vo) => {
const dist = leven(vo, cleaned);
return dist <= 2 && dist > 0;
}); });
if (closestOption && !suggestedOptions[closestOption]) { if (closest && !suggestions[closest]) {
suggestedOptions[closestOption] = true; console.info(`Unknown option ${opt}, did you mean --${closest}?`);
console.info(`Unknown option ${actualOption}, did you mean ${closestOption}?`); suggestions[closest] = true;
} else if (!suggestedOptions[actualOption]) { } else if (!suggestions[cleaned]) {
suggestedOptions[actualOption] = true; console.info(`Unknown option ${opt}`);
console.info(`Unknown option ${actualOption}`); suggestions[cleaned] = true;
} }
}); });
}); });
return argv as unknown as yargs.Argv<typeof argvC>;
return program;
}; };

View file

@ -55,8 +55,7 @@
"undici": "^7.16.0", "undici": "^7.16.0",
"widevine": "^1.0.3", "widevine": "^1.0.3",
"ws": "^8.18.3", "ws": "^8.18.3",
"yaml": "^2.8.1", "yaml": "^2.8.1"
"yargs": "^17.7.2"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.39.1", "@eslint/js": "^9.39.1",
@ -65,14 +64,13 @@
"@types/m3u8-parser": "^7.2.5", "@types/m3u8-parser": "^7.2.5",
"@types/node": "^24.10.1", "@types/node": "^24.10.1",
"@types/ws": "^8.18.1", "@types/ws": "^8.18.1",
"@types/yargs": "17.0.35",
"@typescript-eslint/eslint-plugin": "^8.48.0", "@typescript-eslint/eslint-plugin": "^8.48.0",
"@typescript-eslint/parser": "^8.48.0", "@typescript-eslint/parser": "^8.48.0",
"@yao-pkg/pkg": "^6.10.1", "@yao-pkg/pkg": "^6.10.1",
"esbuild": "0.25.12", "esbuild": "0.26.0",
"eslint": "^9.39.1", "eslint": "^9.39.1",
"eslint-config-prettier": "^10.1.8", "eslint-config-prettier": "^10.1.8",
"prettier": "^3.6.2", "prettier": "^3.7.0",
"removeNPMAbsolutePaths": "^3.0.1", "removeNPMAbsolutePaths": "^3.0.1",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"typescript": "^5.9.3", "typescript": "^5.9.3",

View file

@ -56,9 +56,6 @@ importers:
yaml: yaml:
specifier: ^2.8.1 specifier: ^2.8.1
version: 2.8.1 version: 2.8.1
yargs:
specifier: ^17.7.2
version: 17.7.2
devDependencies: devDependencies:
'@eslint/js': '@eslint/js':
specifier: ^9.39.1 specifier: ^9.39.1
@ -78,9 +75,6 @@ importers:
'@types/ws': '@types/ws':
specifier: ^8.18.1 specifier: ^8.18.1
version: 8.18.1 version: 8.18.1
'@types/yargs':
specifier: 17.0.35
version: 17.0.35
'@typescript-eslint/eslint-plugin': '@typescript-eslint/eslint-plugin':
specifier: ^8.48.0 specifier: ^8.48.0
version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3) version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)
@ -91,8 +85,8 @@ importers:
specifier: ^6.10.1 specifier: ^6.10.1
version: 6.10.1 version: 6.10.1
esbuild: esbuild:
specifier: 0.25.12 specifier: 0.26.0
version: 0.25.12 version: 0.26.0
eslint: eslint:
specifier: ^9.39.1 specifier: ^9.39.1
version: 9.39.1 version: 9.39.1
@ -100,8 +94,8 @@ importers:
specifier: ^10.1.8 specifier: ^10.1.8
version: 10.1.8(eslint@9.39.1) version: 10.1.8(eslint@9.39.1)
prettier: prettier:
specifier: ^3.6.2 specifier: ^3.7.0
version: 3.6.2 version: 3.7.0
removeNPMAbsolutePaths: removeNPMAbsolutePaths:
specifier: ^3.0.1 specifier: ^3.0.1
version: 3.0.1 version: 3.0.1
@ -149,158 +143,158 @@ packages:
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
engines: {node: '>=12'} engines: {node: '>=12'}
'@esbuild/aix-ppc64@0.25.12': '@esbuild/aix-ppc64@0.26.0':
resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} resolution: {integrity: sha512-hj0sKNCQOOo2fgyII3clmJXP28VhgDfU5iy3GNHlWO76KG6N7x4D9ezH5lJtQTG+1J6MFDAJXC1qsI+W+LvZoA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ppc64] cpu: [ppc64]
os: [aix] os: [aix]
'@esbuild/android-arm64@0.25.12': '@esbuild/android-arm64@0.26.0':
resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} resolution: {integrity: sha512-DDnoJ5eoa13L8zPh87PUlRd/IyFaIKOlRbxiwcSbeumcJ7UZKdtuMCHa1Q27LWQggug6W4m28i4/O2qiQQ5NZQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
'@esbuild/android-arm@0.25.12': '@esbuild/android-arm@0.26.0':
resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} resolution: {integrity: sha512-C0hkDsYNHZkBtPxxDx177JN90/1MiCpvBNjz1f5yWJo1+5+c5zr8apjastpEG+wtPjo9FFtGG7owSsAxyKiHxA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
'@esbuild/android-x64@0.25.12': '@esbuild/android-x64@0.26.0':
resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} resolution: {integrity: sha512-bKDkGXGZnj0T70cRpgmv549x38Vr2O3UWLbjT2qmIkdIWcmlg8yebcFWoT9Dku7b5OV3UqPEuNKRzlNhjwUJ9A==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [android] os: [android]
'@esbuild/darwin-arm64@0.25.12': '@esbuild/darwin-arm64@0.26.0':
resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} resolution: {integrity: sha512-6Z3naJgOuAIB0RLlJkYc81An3rTlQ/IeRdrU3dOea8h/PvZSgitZV+thNuIccw0MuK1GmIAnAmd5TrMZad8FTQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@esbuild/darwin-x64@0.25.12': '@esbuild/darwin-x64@0.26.0':
resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} resolution: {integrity: sha512-OPnYj0zpYW0tHusMefyaMvNYQX5pNQuSsHFTHUBNp3vVXupwqpxofcjVsUx11CQhGVkGeXjC3WLjh91hgBG2xw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@esbuild/freebsd-arm64@0.25.12': '@esbuild/freebsd-arm64@0.26.0':
resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} resolution: {integrity: sha512-jix2fa6GQeZhO1sCKNaNMjfj5hbOvoL2F5t+w6gEPxALumkpOV/wq7oUBMHBn2hY2dOm+mEV/K+xfZy3mrsxNQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
'@esbuild/freebsd-x64@0.25.12': '@esbuild/freebsd-x64@0.26.0':
resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} resolution: {integrity: sha512-tccJaH5xHJD/239LjbVvJwf6T4kSzbk6wPFerF0uwWlkw/u7HL+wnAzAH5GB2irGhYemDgiNTp8wJzhAHQ64oA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
'@esbuild/linux-arm64@0.25.12': '@esbuild/linux-arm64@0.26.0':
resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} resolution: {integrity: sha512-IMJYN7FSkLttYyTbsbme0Ra14cBO5z47kpamo16IwggzzATFY2lcZAwkbcNkWiAduKrTgFJP7fW5cBI7FzcuNQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@esbuild/linux-arm@0.25.12': '@esbuild/linux-arm@0.26.0':
resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} resolution: {integrity: sha512-JY8NyU31SyRmRpuc5W8PQarAx4TvuYbyxbPIpHAZdr/0g4iBr8KwQBS4kiiamGl2f42BBecHusYCsyxi7Kn8UQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@esbuild/linux-ia32@0.25.12': '@esbuild/linux-ia32@0.26.0':
resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} resolution: {integrity: sha512-XITaGqGVLgk8WOHw8We9Z1L0lbLFip8LyQzKYFKO4zFo1PFaaSKsbNjvkb7O8kEXytmSGRkYpE8LLVpPJpsSlw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
'@esbuild/linux-loong64@0.25.12': '@esbuild/linux-loong64@0.26.0':
resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} resolution: {integrity: sha512-MkggfbDIczStUJwq9wU7gQ7kO33d8j9lWuOCDifN9t47+PeI+9m2QVh51EI/zZQ1spZtFMC1nzBJ+qNGCjJnsg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
'@esbuild/linux-mips64el@0.25.12': '@esbuild/linux-mips64el@0.26.0':
resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} resolution: {integrity: sha512-fUYup12HZWAeccNLhQ5HwNBPr4zXCPgUWzEq2Rfw7UwqwfQrFZ0SR/JljaURR8xIh9t+o1lNUFTECUTmaP7yKA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
'@esbuild/linux-ppc64@0.25.12': '@esbuild/linux-ppc64@0.26.0':
resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} resolution: {integrity: sha512-MzRKhM0Ip+//VYwC8tialCiwUQ4G65WfALtJEFyU0GKJzfTYoPBw5XNWf0SLbCUYQbxTKamlVwPmcw4DgZzFxg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
'@esbuild/linux-riscv64@0.25.12': '@esbuild/linux-riscv64@0.26.0':
resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} resolution: {integrity: sha512-QhCc32CwI1I4Jrg1enCv292sm3YJprW8WHHlyxJhae/dVs+KRWkbvz2Nynl5HmZDW/m9ZxrXayHzjzVNvQMGQA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
'@esbuild/linux-s390x@0.25.12': '@esbuild/linux-s390x@0.26.0':
resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} resolution: {integrity: sha512-1D6vi6lfI18aNT1aTf2HV+RIlm6fxtlAp8eOJ4mmnbYmZ4boz8zYDar86sIYNh0wmiLJEbW/EocaKAX6Yso2fw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
'@esbuild/linux-x64@0.25.12': '@esbuild/linux-x64@0.26.0':
resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} resolution: {integrity: sha512-rnDcepj7LjrKFvZkx+WrBv6wECeYACcFjdNPvVPojCPJD8nHpb3pv3AuR9CXgdnjH1O23btICj0rsp0L9wAnHA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@esbuild/netbsd-arm64@0.25.12': '@esbuild/netbsd-arm64@0.26.0':
resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} resolution: {integrity: sha512-FSWmgGp0mDNjEXXFcsf12BmVrb+sZBBBlyh3LwB/B9ac3Kkc8x5D2WimYW9N7SUkolui8JzVnVlWh7ZmjCpnxw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [netbsd] os: [netbsd]
'@esbuild/netbsd-x64@0.25.12': '@esbuild/netbsd-x64@0.26.0':
resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} resolution: {integrity: sha512-0QfciUDFryD39QoSPUDshj4uNEjQhp73+3pbSAaxjV2qGOEDsM67P7KbJq7LzHoVl46oqhIhJ1S+skKGR7lMXA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
'@esbuild/openbsd-arm64@0.25.12': '@esbuild/openbsd-arm64@0.26.0':
resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} resolution: {integrity: sha512-vmAK+nHhIZWImwJ3RNw9hX3fU4UGN/OqbSE0imqljNbUQC3GvVJ1jpwYoTfD6mmXmQaxdJY6Hn4jQbLGJKg5Yw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [openbsd] os: [openbsd]
'@esbuild/openbsd-x64@0.25.12': '@esbuild/openbsd-x64@0.26.0':
resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} resolution: {integrity: sha512-GPXF7RMkJ7o9bTyUsnyNtrFMqgM3X+uM/LWw4CeHIjqc32fm0Ir6jKDnWHpj8xHFstgWDUYseSABK9KCkHGnpg==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
'@esbuild/openharmony-arm64@0.25.12': '@esbuild/openharmony-arm64@0.26.0':
resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} resolution: {integrity: sha512-nUHZ5jEYqbBthbiBksbmHTlbb5eElyVfs/s1iHQ8rLBq1eWsd5maOnDpCocw1OM8kFK747d1Xms8dXJHtduxSw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [openharmony] os: [openharmony]
'@esbuild/sunos-x64@0.25.12': '@esbuild/sunos-x64@0.26.0':
resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} resolution: {integrity: sha512-TMg3KCTCYYaVO+R6P5mSORhcNDDlemUVnUbb8QkboUtOhb5JWKAzd5uMIMECJQOxHZ/R+N8HHtDF5ylzLfMiLw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
'@esbuild/win32-arm64@0.25.12': '@esbuild/win32-arm64@0.26.0':
resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} resolution: {integrity: sha512-apqYgoAUd6ZCb9Phcs8zN32q6l0ZQzQBdVXOofa6WvHDlSOhwCWgSfVQabGViThS40Y1NA4SCvQickgZMFZRlA==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@esbuild/win32-ia32@0.25.12': '@esbuild/win32-ia32@0.26.0':
resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} resolution: {integrity: sha512-FGJAcImbJNZzLWu7U6WB0iKHl4RuY4TsXEwxJPl9UZLS47agIZuILZEX3Pagfw7I4J3ddflomt9f0apfaJSbaw==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@esbuild/win32-x64@0.25.12': '@esbuild/win32-x64@0.26.0':
resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} resolution: {integrity: sha512-WAckBKaVnmFqbEhbymrPK7M086DQMpL1XoRbpmN0iW8k5JSXjDRQBhcZNa0VweItknLq9eAeCL34jK7/CDcw7A==}
engines: {node: '>=18'} engines: {node: '>=18'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -450,12 +444,6 @@ packages:
'@types/ws@8.18.1': '@types/ws@8.18.1':
resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==}
'@types/yargs-parser@21.0.3':
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
'@types/yargs@17.0.35':
resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==}
'@typescript-eslint/eslint-plugin@8.48.0': '@typescript-eslint/eslint-plugin@8.48.0':
resolution: {integrity: sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==} resolution: {integrity: sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@ -684,10 +672,6 @@ packages:
cliui@7.0.4: cliui@7.0.4:
resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==}
cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
color-convert@2.0.1: color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'} engines: {node: '>=7.0.0'}
@ -814,8 +798,8 @@ packages:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
esbuild@0.25.12: esbuild@0.26.0:
resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} resolution: {integrity: sha512-3Hq7jri+tRrVWha+ZeIVhl4qJRha/XjRNSopvTsOaCvfPHrflTYTcUFcEjMKdxofsXXsdc4zjg5NOTnL4Gl57Q==}
engines: {node: '>=18'} engines: {node: '>=18'}
hasBin: true hasBin: true
@ -1332,8 +1316,8 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
prettier@3.6.2: prettier@3.7.0:
resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} resolution: {integrity: sha512-pBiBj/gjRY9Qpk1b7cDda6Rbwvkaggos779AHQ0Ek/odwDx6xG6DRBxtnp1QmxbuD7pAO8/SQ8vuhtGv9LoLWA==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
@ -1686,18 +1670,10 @@ packages:
resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
engines: {node: '>=10'} engines: {node: '>=10'}
yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
yargs@16.2.0: yargs@16.2.0:
resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==}
engines: {node: '>=10'} engines: {node: '>=10'}
yargs@17.7.2:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
yn@3.1.1: yn@3.1.1:
resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
engines: {node: '>=6'} engines: {node: '>=6'}
@ -1737,82 +1713,82 @@ snapshots:
dependencies: dependencies:
'@jridgewell/trace-mapping': 0.3.9 '@jridgewell/trace-mapping': 0.3.9
'@esbuild/aix-ppc64@0.25.12': '@esbuild/aix-ppc64@0.26.0':
optional: true optional: true
'@esbuild/android-arm64@0.25.12': '@esbuild/android-arm64@0.26.0':
optional: true optional: true
'@esbuild/android-arm@0.25.12': '@esbuild/android-arm@0.26.0':
optional: true optional: true
'@esbuild/android-x64@0.25.12': '@esbuild/android-x64@0.26.0':
optional: true optional: true
'@esbuild/darwin-arm64@0.25.12': '@esbuild/darwin-arm64@0.26.0':
optional: true optional: true
'@esbuild/darwin-x64@0.25.12': '@esbuild/darwin-x64@0.26.0':
optional: true optional: true
'@esbuild/freebsd-arm64@0.25.12': '@esbuild/freebsd-arm64@0.26.0':
optional: true optional: true
'@esbuild/freebsd-x64@0.25.12': '@esbuild/freebsd-x64@0.26.0':
optional: true optional: true
'@esbuild/linux-arm64@0.25.12': '@esbuild/linux-arm64@0.26.0':
optional: true optional: true
'@esbuild/linux-arm@0.25.12': '@esbuild/linux-arm@0.26.0':
optional: true optional: true
'@esbuild/linux-ia32@0.25.12': '@esbuild/linux-ia32@0.26.0':
optional: true optional: true
'@esbuild/linux-loong64@0.25.12': '@esbuild/linux-loong64@0.26.0':
optional: true optional: true
'@esbuild/linux-mips64el@0.25.12': '@esbuild/linux-mips64el@0.26.0':
optional: true optional: true
'@esbuild/linux-ppc64@0.25.12': '@esbuild/linux-ppc64@0.26.0':
optional: true optional: true
'@esbuild/linux-riscv64@0.25.12': '@esbuild/linux-riscv64@0.26.0':
optional: true optional: true
'@esbuild/linux-s390x@0.25.12': '@esbuild/linux-s390x@0.26.0':
optional: true optional: true
'@esbuild/linux-x64@0.25.12': '@esbuild/linux-x64@0.26.0':
optional: true optional: true
'@esbuild/netbsd-arm64@0.25.12': '@esbuild/netbsd-arm64@0.26.0':
optional: true optional: true
'@esbuild/netbsd-x64@0.25.12': '@esbuild/netbsd-x64@0.26.0':
optional: true optional: true
'@esbuild/openbsd-arm64@0.25.12': '@esbuild/openbsd-arm64@0.26.0':
optional: true optional: true
'@esbuild/openbsd-x64@0.25.12': '@esbuild/openbsd-x64@0.26.0':
optional: true optional: true
'@esbuild/openharmony-arm64@0.25.12': '@esbuild/openharmony-arm64@0.26.0':
optional: true optional: true
'@esbuild/sunos-x64@0.25.12': '@esbuild/sunos-x64@0.26.0':
optional: true optional: true
'@esbuild/win32-arm64@0.25.12': '@esbuild/win32-arm64@0.26.0':
optional: true optional: true
'@esbuild/win32-ia32@0.25.12': '@esbuild/win32-ia32@0.26.0':
optional: true optional: true
'@esbuild/win32-x64@0.25.12': '@esbuild/win32-x64@0.26.0':
optional: true optional: true
'@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)': '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1)':
@ -1970,12 +1946,6 @@ snapshots:
dependencies: dependencies:
'@types/node': 24.10.1 '@types/node': 24.10.1
'@types/yargs-parser@21.0.3': {}
'@types/yargs@17.0.35':
dependencies:
'@types/yargs-parser': 21.0.3
'@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)': '@typescript-eslint/eslint-plugin@8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1)(typescript@5.9.3))(eslint@9.39.1)(typescript@5.9.3)':
dependencies: dependencies:
'@eslint-community/regexpp': 4.12.2 '@eslint-community/regexpp': 4.12.2
@ -2276,12 +2246,6 @@ snapshots:
strip-ansi: 6.0.1 strip-ansi: 6.0.1
wrap-ansi: 7.0.0 wrap-ansi: 7.0.0
cliui@8.0.1:
dependencies:
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
color-convert@2.0.1: color-convert@2.0.1:
dependencies: dependencies:
color-name: 1.1.4 color-name: 1.1.4
@ -2373,34 +2337,34 @@ snapshots:
dependencies: dependencies:
es-errors: 1.3.0 es-errors: 1.3.0
esbuild@0.25.12: esbuild@0.26.0:
optionalDependencies: optionalDependencies:
'@esbuild/aix-ppc64': 0.25.12 '@esbuild/aix-ppc64': 0.26.0
'@esbuild/android-arm': 0.25.12 '@esbuild/android-arm': 0.26.0
'@esbuild/android-arm64': 0.25.12 '@esbuild/android-arm64': 0.26.0
'@esbuild/android-x64': 0.25.12 '@esbuild/android-x64': 0.26.0
'@esbuild/darwin-arm64': 0.25.12 '@esbuild/darwin-arm64': 0.26.0
'@esbuild/darwin-x64': 0.25.12 '@esbuild/darwin-x64': 0.26.0
'@esbuild/freebsd-arm64': 0.25.12 '@esbuild/freebsd-arm64': 0.26.0
'@esbuild/freebsd-x64': 0.25.12 '@esbuild/freebsd-x64': 0.26.0
'@esbuild/linux-arm': 0.25.12 '@esbuild/linux-arm': 0.26.0
'@esbuild/linux-arm64': 0.25.12 '@esbuild/linux-arm64': 0.26.0
'@esbuild/linux-ia32': 0.25.12 '@esbuild/linux-ia32': 0.26.0
'@esbuild/linux-loong64': 0.25.12 '@esbuild/linux-loong64': 0.26.0
'@esbuild/linux-mips64el': 0.25.12 '@esbuild/linux-mips64el': 0.26.0
'@esbuild/linux-ppc64': 0.25.12 '@esbuild/linux-ppc64': 0.26.0
'@esbuild/linux-riscv64': 0.25.12 '@esbuild/linux-riscv64': 0.26.0
'@esbuild/linux-s390x': 0.25.12 '@esbuild/linux-s390x': 0.26.0
'@esbuild/linux-x64': 0.25.12 '@esbuild/linux-x64': 0.26.0
'@esbuild/netbsd-arm64': 0.25.12 '@esbuild/netbsd-arm64': 0.26.0
'@esbuild/netbsd-x64': 0.25.12 '@esbuild/netbsd-x64': 0.26.0
'@esbuild/openbsd-arm64': 0.25.12 '@esbuild/openbsd-arm64': 0.26.0
'@esbuild/openbsd-x64': 0.25.12 '@esbuild/openbsd-x64': 0.26.0
'@esbuild/openharmony-arm64': 0.25.12 '@esbuild/openharmony-arm64': 0.26.0
'@esbuild/sunos-x64': 0.25.12 '@esbuild/sunos-x64': 0.26.0
'@esbuild/win32-arm64': 0.25.12 '@esbuild/win32-arm64': 0.26.0
'@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-ia32': 0.26.0
'@esbuild/win32-x64': 0.25.12 '@esbuild/win32-x64': 0.26.0
escalade@3.2.0: {} escalade@3.2.0: {}
@ -2927,7 +2891,7 @@ snapshots:
prelude-ls@1.2.1: {} prelude-ls@1.2.1: {}
prettier@3.6.2: {} prettier@3.7.0: {}
process-nextick-args@2.0.1: {} process-nextick-args@2.0.1: {}
@ -3320,8 +3284,6 @@ snapshots:
yargs-parser@20.2.9: {} yargs-parser@20.2.9: {}
yargs-parser@21.1.1: {}
yargs@16.2.0: yargs@16.2.0:
dependencies: dependencies:
cliui: 7.0.4 cliui: 7.0.4
@ -3332,16 +3294,6 @@ snapshots:
y18n: 5.0.8 y18n: 5.0.8
yargs-parser: 20.2.9 yargs-parser: 20.2.9
yargs@17.7.2:
dependencies:
cliui: 8.0.1
escalade: 3.2.0
get-caller-file: 2.0.5
require-directory: 2.1.1
string-width: 4.2.3
y18n: 5.0.8
yargs-parser: 21.1.1
yn@3.1.1: {} yn@3.1.1: {}
yocto-queue@0.1.0: {} yocto-queue@0.1.0: {}