diff --git a/.eslintrc.json b/.eslintrc.json index 7b246c6..1b48ac0 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -22,6 +22,7 @@ "@typescript-eslint" ], "rules": { + "react-hooks/exhaustive-deps": 0, "@typescript-eslint/no-explicit-any": "off", "indent": [ "error", diff --git a/@types/ws.d.ts b/@types/ws.d.ts index 13e1f24..1cfb292 100644 --- a/@types/ws.d.ts +++ b/@types/ws.d.ts @@ -1,5 +1,5 @@ import { GUIConfig } from '../modules/module.cfg-loader'; -import { AuthResponse, CheckTokenResponse, EpisodeListResponse, FolderTypes, QueueItem, ResolveItemsData, ResponseBase, SearchData, SearchResponse } from './messageHandler'; +import { AuthResponse, CheckTokenResponse, EpisodeListResponse, FolderTypes, QueueItem, ResolveItemsData, SearchData, SearchResponse } from './messageHandler'; export type WSMessage = { name: T, diff --git a/crunchy.ts b/crunchy.ts index 9004121..6fa8c87 100644 --- a/crunchy.ts +++ b/crunchy.ts @@ -16,14 +16,6 @@ import * as yamlCfg from './modules/module.cfg-loader'; import * as yargs from './modules/module.app-args'; import Merger, { Font, MergerInput, SubtitleInput } from './modules/module.merger'; -export type sxItem = { - language: langsData.LanguageItem, - path: string, - file: string - title: string, - fonts: Font[] -} - // args // load req @@ -41,6 +33,14 @@ import { AvailableFilenameVars, getDefault } from './modules/module.args'; import { AuthData, AuthResponse, Episode, ResponseBase, SearchData, SearchResponse, SearchResponseItem } from './@types/messageHandler'; import { ServiceClass } from './@types/serviceClassInterface'; +export type sxItem = { + language: langsData.LanguageItem, + path: string, + file: string + title: string, + fonts: Font[] +} + export default class Crunchy implements ServiceClass { public cfg: yamlCfg.ConfigObject; private token: Record; diff --git a/funi.ts b/funi.ts index 524fd6f..b486d98 100644 --- a/funi.ts +++ b/funi.ts @@ -3,10 +3,7 @@ import fs from 'fs'; import path from 'path'; // package json -import packageJson from './package.json'; - -// program name -const api_host = 'https://prod-api-funimationnow.dadcdigital.com/api'; +import packageJson from './package.json'; // modules extra import * as shlp from 'sei-helper'; @@ -39,7 +36,10 @@ import { TitleElement } from './@types/episode'; import { AvailableFilenameVars } from './modules/module.args'; import { AuthData, AuthResponse, CheckTokenResponse, FuniGetEpisodeData, FuniGetEpisodeResponse, FuniGetShowData, SearchData, FuniSearchReponse, FuniShowResponse, FuniStreamData, FuniSubsData, FuniEpisodeData, ResponseBase } from './@types/messageHandler'; import { ServiceClass } from './@types/serviceClassInterface'; -import { SubtitleRequest } from './@types/funiSubtitleRequest'; +import { SubtitleRequest } from './@types/funiSubtitleRequest'; + +// program name +const api_host = 'https://prod-api-funimationnow.dadcdigital.com/api'; // check page // fn variables diff --git a/gui/react/src/@types/FC.d.ts b/gui/react/src/@types/FC.d.ts index 3e3f00a..a6cdb42 100644 --- a/gui/react/src/@types/FC.d.ts +++ b/gui/react/src/@types/FC.d.ts @@ -1,3 +1,3 @@ type FCWithChildren = React.FC<{ children?: React.ReactNode[]|React.ReactNode -}> \ No newline at end of file +} & T> \ No newline at end of file diff --git a/gui/react/src/App.tsx b/gui/react/src/App.tsx index e868163..7763b06 100644 --- a/gui/react/src/App.tsx +++ b/gui/react/src/App.tsx @@ -1,6 +1,4 @@ import React from 'react'; -import { Button, TextField, Box } from '@mui/material'; -import { messageChannelContext } from './provider/MessageChannel'; import Layout from './Layout'; const App: React.FC = () => { diff --git a/gui/react/src/Layout.tsx b/gui/react/src/Layout.tsx index a88aa00..9b473dd 100644 --- a/gui/react/src/Layout.tsx +++ b/gui/react/src/Layout.tsx @@ -6,14 +6,12 @@ import LogoutButton from "./components/LogoutButton"; import AddToQueue from "./components/AddToQueue/AddToQueue"; import { messageChannelContext } from './provider/MessageChannel'; import { ClearAll, Folder } from "@mui/icons-material"; -import useStore from "./hooks/useStore"; import StartQueueButton from "./components/StartQueue"; import MenuBar from "./components/MenuBar/MenuBar"; const Layout: React.FC = () => { const messageHandler = React.useContext(messageChannelContext); - const [, dispatch] = useStore(); return diff --git a/gui/react/src/components/AddToQueue/DownloadSelector/DownloadSelector.tsx b/gui/react/src/components/AddToQueue/DownloadSelector/DownloadSelector.tsx index 24a05f4..155262a 100644 --- a/gui/react/src/components/AddToQueue/DownloadSelector/DownloadSelector.tsx +++ b/gui/react/src/components/AddToQueue/DownloadSelector/DownloadSelector.tsx @@ -1,11 +1,10 @@ import React from "react"; -import { Backdrop, Box, Button, Checkbox, Chip, FormControl, FormControlLabel, IconButton, InputLabel, MenuItem, OutlinedInput, Select, TextField } from "@mui/material"; +import { Box, Button, TextField } from "@mui/material"; import useStore from "../../../hooks/useStore"; import MultiSelect from "../../reusable/MultiSelect"; import { messageChannelContext } from "../../../provider/MessageChannel"; import LoadingButton from '@mui/lab/LoadingButton'; import { useSnackbar } from "notistack"; -import { Folder } from "@mui/icons-material"; type DownloadSelectorProps = { onFinish?: () => unknown diff --git a/gui/react/src/components/AddToQueue/DownloadSelector/Listing/EpisodeListing.tsx b/gui/react/src/components/AddToQueue/DownloadSelector/Listing/EpisodeListing.tsx index 0bbeeb2..b4f9464 100644 --- a/gui/react/src/components/AddToQueue/DownloadSelector/Listing/EpisodeListing.tsx +++ b/gui/react/src/components/AddToQueue/DownloadSelector/Listing/EpisodeListing.tsx @@ -93,7 +93,7 @@ const EpisodeListing: React.FC = () => { {e} - + thumbnail diff --git a/gui/react/src/components/AddToQueue/SearchBox/SearchBox.tsx b/gui/react/src/components/AddToQueue/SearchBox/SearchBox.tsx index 4d00963..a4e7155 100644 --- a/gui/react/src/components/AddToQueue/SearchBox/SearchBox.tsx +++ b/gui/react/src/components/AddToQueue/SearchBox/SearchBox.tsx @@ -58,7 +58,7 @@ const SearchBox: React.FC = () => { }}> - + thumbnail diff --git a/gui/react/src/components/MainFrame/DownloadManager/DownloadManager.tsx b/gui/react/src/components/MainFrame/DownloadManager/DownloadManager.tsx index 57f2233..b99277f 100644 --- a/gui/react/src/components/MainFrame/DownloadManager/DownloadManager.tsx +++ b/gui/react/src/components/MainFrame/DownloadManager/DownloadManager.tsx @@ -1,7 +1,6 @@ import React from "react"; import { ExtendedProgress } from "../../../../../../@types/messageHandler"; import { RandomEvent } from "../../../../../../@types/randomEvents"; -import useStore from "../../../hooks/useStore"; import { messageChannelContext } from "../../../provider/MessageChannel"; const useDownloadManager = () => { diff --git a/gui/react/src/components/MainFrame/Queue/Queue.tsx b/gui/react/src/components/MainFrame/Queue/Queue.tsx index 10a232b..6011919 100644 --- a/gui/react/src/components/MainFrame/Queue/Queue.tsx +++ b/gui/react/src/components/MainFrame/Queue/Queue.tsx @@ -1,6 +1,5 @@ import { Box, Button, Divider, LinearProgress, Skeleton, Typography } from "@mui/material"; import React from "react"; -import useStore from "../../../hooks/useStore"; import { messageChannelContext } from "../../../provider/MessageChannel"; import { queueContext } from "../../../provider/QueueProvider"; diff --git a/gui/react/src/components/StartQueue.tsx b/gui/react/src/components/StartQueue.tsx index 0364a9b..ad40e65 100644 --- a/gui/react/src/components/StartQueue.tsx +++ b/gui/react/src/components/StartQueue.tsx @@ -1,7 +1,6 @@ -import { ExitToApp, PauseCircleFilled, PlayCircleFilled } from "@mui/icons-material"; +import { PauseCircleFilled, PlayCircleFilled } from "@mui/icons-material"; import { Button } from "@mui/material"; import React from "react"; -import useStore from "../hooks/useStore"; import { messageChannelContext } from "../provider/MessageChannel"; import Require from "./Require"; diff --git a/gui/react/src/components/reusable/ContextMenu.tsx b/gui/react/src/components/reusable/ContextMenu.tsx index d9252a5..e7f6dca 100644 --- a/gui/react/src/components/reusable/ContextMenu.tsx +++ b/gui/react/src/components/reusable/ContextMenu.tsx @@ -1,5 +1,4 @@ -import { StyledOptions } from "@emotion/styled"; -import { Box, Button, Card, Divider, List, Typography, SxProps } from "@mui/material"; +import { Box, Button, Divider, List, SxProps } from "@mui/material"; import React from "react"; export type Option = { diff --git a/gui/react/src/components/reusable/MultiSelect.tsx b/gui/react/src/components/reusable/MultiSelect.tsx index 233aa03..fffa650 100644 --- a/gui/react/src/components/reusable/MultiSelect.tsx +++ b/gui/react/src/components/reusable/MultiSelect.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { Box, Chip, FormControl, InputLabel, MenuItem, OutlinedInput, Select, Theme, useTheme } from "@mui/material"; +import { FormControl, InputLabel, MenuItem, OutlinedInput, Select, Theme, useTheme } from "@mui/material"; export type MultiSelectProps = { values: string[], diff --git a/gui/react/src/provider/ErrorHandler.tsx b/gui/react/src/provider/ErrorHandler.tsx index 02ddc68..6328c8b 100644 --- a/gui/react/src/provider/ErrorHandler.tsx +++ b/gui/react/src/provider/ErrorHandler.tsx @@ -1,4 +1,4 @@ -import { Backdrop, Box, Typography } from "@mui/material"; +import { Box, Typography } from "@mui/material"; import React from "react"; export default class ErrorHandler extends React.Component<{ diff --git a/gui/react/src/provider/MessageChannel.tsx b/gui/react/src/provider/MessageChannel.tsx index 7d602e4..ab0bd3a 100644 --- a/gui/react/src/provider/MessageChannel.tsx +++ b/gui/react/src/provider/MessageChannel.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { MessageHandler, QueueItem } from '../../../../@types/messageHandler'; +import { MessageHandler } from '../../../../@types/messageHandler'; import useStore from '../hooks/useStore'; import type { MessageTypes, WSMessage, WSMessageWithID } from '../../../../@types/ws'; import type { Handler, RandomEvent, RandomEvents } from '../../../../@types/randomEvents'; diff --git a/gui/react/src/provider/Store.tsx b/gui/react/src/provider/Store.tsx index 71025ef..2be4632 100644 --- a/gui/react/src/provider/Store.tsx +++ b/gui/react/src/provider/Store.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Episode, QueueItem } from '../../../../@types/messageHandler'; +import { Episode } from '../../../../@types/messageHandler'; import { dubLanguageCodes } from '../../../../modules/module.langsData'; export type DownloadOptions = { diff --git a/gui/server/serviceHandler.ts b/gui/server/serviceHandler.ts index 5d46fa4..dcbd9b0 100644 --- a/gui/server/serviceHandler.ts +++ b/gui/server/serviceHandler.ts @@ -46,8 +46,8 @@ export default class ServiceHandler { return respond({ isOk: false, reason: new Error('No service selected') }); respond(await this.service.auth(data)); }); - this.ws.events.on('type', async ({}, respond) => respond(this.service === undefined ? undefined : this.service instanceof Funi ? 'funi' : 'crunchy')); - this.ws.events.on('checkToken', async ({}, respond) => { + this.ws.events.on('type', async (_, respond) => respond(this.service === undefined ? undefined : this.service instanceof Funi ? 'funi' : 'crunchy')); + this.ws.events.on('checkToken', async (_, respond) => { if (this.service === undefined) return respond({ isOk: false, reason: new Error('No service selected') }); respond(await this.service.checkToken()); @@ -62,12 +62,12 @@ export default class ServiceHandler { return respond({ isOk: false, reason: new Error('No service selected') }); respond(await this.service.handleDefault(data)); }); - this.ws.events.on('availableDubCodes', async ({}, respond) => { + this.ws.events.on('availableDubCodes', async (_, respond) => { if (this.service === undefined) return respond([]); respond(await this.service.availableDubCodes()); }); - this.ws.events.on('availableSubCodes', async ({}, respond) => { + this.ws.events.on('availableSubCodes', async (_, respond) => { if (this.service === undefined) return respond([]); respond(await this.service.availableSubCodes()); @@ -83,33 +83,33 @@ export default class ServiceHandler { respond(await this.service.listEpisodes(data)); }); this.ws.events.on('downloadItem', async ({ data }, respond) => { - this.service!.downloadItem(data); + this.service?.downloadItem(data); respond(undefined); }); this.ws.events.on('writeToClipboard', async ({ data }, respond) => { - this.service!.writeToClipboard(data); + this.service?.writeToClipboard(data); respond(undefined); }); this.ws.events.on('openFolder', async ({ data }, respond) => { - this.service!.openFolder(data); + this.service?.openFolder(data); respond(undefined); }); this.ws.events.on('openFile', async ({ data }, respond) => { - this.service!.openFile(data); + this.service?.openFile(data); respond(undefined); }); this.ws.events.on('openURL', async ({ data }, respond) => { - this.service!.openURL(data); + this.service?.openURL(data); respond(undefined); }); - this.ws.events.on('getQueue', async ({ }, respond) => { + this.ws.events.on('getQueue', async (_, respond) => { respond(await this.service?.getQueue() ?? []); }); this.ws.events.on('removeFromQueue', async ({ data }, respond) => { this.service?.removeFromQueue(data); respond(undefined); }); - this.ws.events.on('clearQueue', async ({ }, respond) => { + this.ws.events.on('clearQueue', async (_, respond) => { this.service?.clearQueue(); respond(undefined); }); @@ -117,10 +117,10 @@ export default class ServiceHandler { this.service?.setDownloadQueue(data); respond(undefined); }); - this.ws.events.on('getDownloadQueue', async ({ }, respond) => { + this.ws.events.on('getDownloadQueue', async (_, respond) => { respond(await this.service?.getDownloadQueue() ?? false); }); - this.ws.events.on('isDownloading', async ({}, respond) => respond(await this.service!.isDownloading())); + this.ws.events.on('isDownloading', async (_, respond) => respond(await this.service?.isDownloading() ?? false)); } } \ No newline at end of file diff --git a/gui/server/services/base.ts b/gui/server/services/base.ts index 8b4dc57..e05b30c 100644 --- a/gui/server/services/base.ts +++ b/gui/server/services/base.ts @@ -36,7 +36,7 @@ export default class Base { progress: data } }); - }).bind(this); + }); } sendMessage(data: RandomEvent) { @@ -120,5 +120,8 @@ export default class Base { } //Overriten - public async downloadItem(data: QueueItem) {} + // eslint-disable-next-line + public async downloadItem(_: QueueItem) { + throw new Error('downloadItem not overriden'); + } } \ No newline at end of file diff --git a/gui/server/services/crunchyroll.ts b/gui/server/services/crunchyroll.ts index 2aec28a..5daf7fe 100644 --- a/gui/server/services/crunchyroll.ts +++ b/gui/server/services/crunchyroll.ts @@ -1,4 +1,4 @@ -import { AuthData, CheckTokenResponse, DownloadData, EpisodeListResponse, MessageHandler, QueueItem, ResolveItemsData, ResponseBase, SearchData, SearchResponse } from '../../../@types/messageHandler'; +import { AuthData, CheckTokenResponse, DownloadData, EpisodeListResponse, MessageHandler, ResolveItemsData, SearchData, SearchResponse } from '../../../@types/messageHandler'; import Crunchy from '../../../crunchy'; import { ArgvType } from '../../../modules/module.app-args'; import { buildDefault, getDefault } from '../../../modules/module.args'; diff --git a/gui/server/services/funimation.ts b/gui/server/services/funimation.ts index abdd8ec..205a376 100644 --- a/gui/server/services/funimation.ts +++ b/gui/server/services/funimation.ts @@ -1,4 +1,4 @@ -import { AuthData, CheckTokenResponse, DownloadData, EpisodeListResponse, MessageHandler, QueueItem, ResolveItemsData, ResponseBase, SearchData, SearchResponse } from '../../../@types/messageHandler'; +import { AuthData, CheckTokenResponse, EpisodeListResponse, MessageHandler, QueueItem, ResolveItemsData, SearchData, SearchResponse } from '../../../@types/messageHandler'; import Funimation from '../../../funi'; import { ArgvType } from '../../../modules/module.app-args'; import { buildDefault, getDefault } from '../../../modules/module.args'; diff --git a/index.ts b/index.ts index ce58672..597bdbc 100644 --- a/index.ts +++ b/index.ts @@ -45,7 +45,7 @@ import update from './modules/module.updater'; if (key.endsWith('crunchy.js') || key.endsWith('funi.js')) delete require.cache[key]; }); - const service = new (argv.service === 'funi' ? (await import('./funi')).default : (await import('./crunchy')).default) as ServiceClass; + const service = new (argv.service === 'funi' ? (await import('./funi')).default : (await import('./crunchy')).default)() as ServiceClass; await service.cli(); } } else { diff --git a/modules/build.ts b/modules/build.ts index aff5da5..9e36247 100644 --- a/modules/build.ts +++ b/modules/build.ts @@ -4,7 +4,6 @@ import pkg from '../package.json'; import modulesCleanup from 'removeNPMAbsolutePaths'; import { exec } from 'pkg'; import { execSync } from 'child_process'; -import path from 'path'; const buildsDir = './_builds'; const nodeVer = 'node16-'; diff --git a/modules/module.req.ts b/modules/module.req.ts index 447cf3c..4d54135 100644 --- a/modules/module.req.ts +++ b/modules/module.req.ts @@ -68,7 +68,7 @@ class Req { options.followRedirect = params.followRedirect; } // if auth - const loc = new URL(durl); + //const loc = new URL(durl); // avoid cloudflare protection // debug options.hooks = { diff --git a/tsc.ts b/tsc.ts index 1266ad7..850bcbe 100644 --- a/tsc.ts +++ b/tsc.ts @@ -2,7 +2,6 @@ import { ChildProcess, exec } from 'child_process'; import fs from 'fs-extra'; import path from 'path'; import { removeSync, copyFileSync } from 'fs-extra'; -import packageJSON from './package.json'; const argv = process.argv.slice(2); let buildIgnore: string[] = [];