From edf697e68a4b718b7a7361e97a0b97dea0379f8d Mon Sep 17 00:00:00 2001 From: Rewrite0 Date: Fri, 6 Oct 2023 04:32:33 +0000 Subject: [PATCH] feat: lint & format --- webui/.eslintignore | 1 + webui/.prettierignore | 1 + webui/src/App.vue | 1 - webui/src/api/bangumi.ts | 257 +++++++++---------- webui/src/api/check.ts | 3 +- webui/src/api/download.ts | 22 +- webui/src/api/log.ts | 2 +- webui/src/api/program.ts | 3 +- webui/src/api/rss.ts | 32 ++- webui/src/api/search.ts | 47 ++-- webui/src/components/ab-add-rss.vue | 13 +- webui/src/components/ab-bangumi-card.vue | 135 +++++----- webui/src/components/ab-rss-item.vue | 55 ++-- webui/src/components/ab-search-bar.vue | 69 +++-- webui/src/components/ab-status-bar.vue | 101 ++++---- webui/src/components/basic/ab-add.vue | 7 +- webui/src/components/basic/ab-checkbox.vue | 43 ++-- webui/src/components/basic/ab-search.vue | 85 +++--- webui/src/components/basic/ab-select.vue | 3 +- webui/src/components/basic/ab-tag.stories.ts | 29 +-- webui/src/components/basic/ab-tag.vue | 52 ++-- webui/src/components/layout/ab-topbar.vue | 42 +-- webui/src/hooks/useAuth.ts | 2 +- webui/src/main.ts | 10 +- webui/src/pages/index/bangumi.vue | 36 +-- webui/src/pages/index/rss.vue | 33 +-- webui/src/store/bangumi.ts | 164 ++++++------ webui/src/store/rss.ts | 118 +++++---- webui/src/store/search.ts | 132 +++++----- webui/src/utils/axios.ts | 62 ++--- webui/types/api.ts | 2 +- webui/types/bangumi.ts | 10 +- webui/types/dts/html.d.ts | 4 +- webui/types/rss.ts | 2 +- webui/types/torrent.ts | 12 +- webui/unocss.config.ts | 64 ++--- 36 files changed, 821 insertions(+), 833 deletions(-) diff --git a/webui/.eslintignore b/webui/.eslintignore index 2247d5f9..88bef34a 100644 --- a/webui/.eslintignore +++ b/webui/.eslintignore @@ -1,2 +1,3 @@ /build /dist +/dev-dist diff --git a/webui/.prettierignore b/webui/.prettierignore index 4875f84a..7163ffe0 100644 --- a/webui/.prettierignore +++ b/webui/.prettierignore @@ -1,5 +1,6 @@ /build /dist +/dev-dist /pnpm-lock.yaml auto-imports.d.ts components.d.ts diff --git a/webui/src/App.vue b/webui/src/App.vue index 373f747d..af1f79a4 100644 --- a/webui/src/App.vue +++ b/webui/src/App.vue @@ -5,7 +5,6 @@ import { NMessageProvider, } from 'naive-ui'; - const theme: GlobalThemeOverrides = { Spin: { color: '#fff', diff --git a/webui/src/api/bangumi.ts b/webui/src/api/bangumi.ts index 69ed9a21..d04fa2cb 100644 --- a/webui/src/api/bangumi.ts +++ b/webui/src/api/bangumi.ts @@ -1,137 +1,136 @@ -import type {BangumiAPI, BangumiRule} from '#/bangumi'; -import type {ApiSuccess} from '#/api'; - +import type { BangumiAPI, BangumiRule } from '#/bangumi'; +import type { ApiSuccess } from '#/api'; export const apiBangumi = { - /** - * 获取所有 bangumi 数据 - * @returns 所有 bangumi 数据 - */ - async getAll() { - const {data} = await axios.get('api/v1/bangumi/get/all'); - const result: BangumiRule[] = data.map((bangumi) => ( - { - ...bangumi, - filter: bangumi.filter.split(','), - rss_link: bangumi.rss_link.split(','), - } - )); - return result; - }, + /** + * 获取所有 bangumi 数据 + * @returns 所有 bangumi 数据 + */ + async getAll() { + const { data } = await axios.get('api/v1/bangumi/get/all'); + const result: BangumiRule[] = data.map((bangumi) => ({ + ...bangumi, + filter: bangumi.filter.split(','), + rss_link: bangumi.rss_link.split(','), + })); + return result; + }, - /** - * 获取指定 bangumiId 的规则 - * @param bangumiId bangumi id - * @returns 指定 bangumi 的规则 - */ - async getRule(bangumiId: number) { - const {data} = await axios.get( - `api/v1/bangumi/get/${bangumiId}` - ); - const result: BangumiRule = { - ...data, - filter: data.filter.split(','), - rss_link: data.rss_link.split(','), - } - return result; - }, + /** + * 获取指定 bangumiId 的规则 + * @param bangumiId bangumi id + * @returns 指定 bangumi 的规则 + */ + async getRule(bangumiId: number) { + const { data } = await axios.get( + `api/v1/bangumi/get/${bangumiId}` + ); + const result: BangumiRule = { + ...data, + filter: data.filter.split(','), + rss_link: data.rss_link.split(','), + }; + return result; + }, - /** - * 更新指定 bangumiId 的规则 - * @param bangumiId - 需要更新的 bangumi 的 id - * @param bangumiRule - * @returns axios 请求返回的数据 - */ - async updateRule(bangumiId: number, bangumiRule: BangumiRule) { - const rule: BangumiAPI = { - ...bangumiRule, - filter: bangumiRule.filter.join(','), - rss_link: bangumiRule.rss_link.join(','), - } - const post = omit(rule, ['id']) - const {data} = await axios.patch( - `api/v1/bangumi/update/${bangumiId}`, - post - ); - return data; - }, + /** + * 更新指定 bangumiId 的规则 + * @param bangumiId - 需要更新的 bangumi 的 id + * @param bangumiRule + * @returns axios 请求返回的数据 + */ + async updateRule(bangumiId: number, bangumiRule: BangumiRule) { + const rule: BangumiAPI = { + ...bangumiRule, + filter: bangumiRule.filter.join(','), + rss_link: bangumiRule.rss_link.join(','), + }; + const post = omit(rule, ['id']); + const { data } = await axios.patch( + `api/v1/bangumi/update/${bangumiId}`, + post + ); + return data; + }, - /** - * 删除指定 bangumiId 的数据库规则,会在重新匹配到后重建 - * @param bangumiId - 需要删除的 bangumi 的 id - * @param file - 是否同时删除关联文件。 - * @returns axios 请求返回的数据 - */ - async deleteRule(bangumiId: number | number[], file: boolean) { - let url = 'api/v1/bangumi/delete'; - let ids: undefined | number[]; + /** + * 删除指定 bangumiId 的数据库规则,会在重新匹配到后重建 + * @param bangumiId - 需要删除的 bangumi 的 id + * @param file - 是否同时删除关联文件。 + * @returns axios 请求返回的数据 + */ + async deleteRule(bangumiId: number | number[], file: boolean) { + let url = 'api/v1/bangumi/delete'; + let ids: undefined | number[]; - if (typeof bangumiId === 'number') { - url = `${url}/${bangumiId}`; - } else { - url = `${url}/many`; - ids = bangumiId; - } - - const {data} = await axios.delete(url, { - data: ids, - params: { - file, - }, - }); - return data; - }, - - /** - * 删除指定 bangumiId 的规则。如果 file 为 true,则同时删除关联文件。 - * @param bangumiId - 需要删除规则的 bangumi 的 id。 - * @param file - 是否同时删除关联文件。 - * @returns axios 请求返回的数据 - */ - async disableRule(bangumiId: number | number[], file: boolean) { - let url = 'api/v1/bangumi/disable'; - let ids: undefined | number[]; - - if (typeof bangumiId === 'number') { - url = `${url}/${bangumiId}`; - } else { - url = `${url}/many`; - ids = bangumiId; - } - - const {data} = await axios.delete(url, { - data: ids, - params: { - file, - }, - }); - return data; - }, - - /** - * 启用指定 bangumiId 的规则 - * @param bangumiId - 需要启用的 bangumi 的 id - */ - async enableRule(bangumiId: number) { - const {data} = await axios.get( - `api/v1/bangumi/enable/${bangumiId}` - ); - return data; - }, - - /** - * 重置所有 bangumi 数据 - */ - async resetAll() { - const {data} = await axios.get('api/v1/bangumi/reset/all'); - return data; - }, - - /** - * 刷新所有没有海报的 bangumi 海报 - */ - async refreshPoster() { - const {data} = await axios.get('api/v1/bangumi/refresh/poster/all'); - return data; + if (typeof bangumiId === 'number') { + url = `${url}/${bangumiId}`; + } else { + url = `${url}/many`; + ids = bangumiId; } + + const { data } = await axios.delete(url, { + data: ids, + params: { + file, + }, + }); + return data; + }, + + /** + * 删除指定 bangumiId 的规则。如果 file 为 true,则同时删除关联文件。 + * @param bangumiId - 需要删除规则的 bangumi 的 id。 + * @param file - 是否同时删除关联文件。 + * @returns axios 请求返回的数据 + */ + async disableRule(bangumiId: number | number[], file: boolean) { + let url = 'api/v1/bangumi/disable'; + let ids: undefined | number[]; + + if (typeof bangumiId === 'number') { + url = `${url}/${bangumiId}`; + } else { + url = `${url}/many`; + ids = bangumiId; + } + + const { data } = await axios.delete(url, { + data: ids, + params: { + file, + }, + }); + return data; + }, + + /** + * 启用指定 bangumiId 的规则 + * @param bangumiId - 需要启用的 bangumi 的 id + */ + async enableRule(bangumiId: number) { + const { data } = await axios.get( + `api/v1/bangumi/enable/${bangumiId}` + ); + return data; + }, + + /** + * 重置所有 bangumi 数据 + */ + async resetAll() { + const { data } = await axios.get('api/v1/bangumi/reset/all'); + return data; + }, + + /** + * 刷新所有没有海报的 bangumi 海报 + */ + async refreshPoster() { + const { data } = await axios.get( + 'api/v1/bangumi/refresh/poster/all' + ); + return data; + }, }; diff --git a/webui/src/api/check.ts b/webui/src/api/check.ts index a59a3a73..e05cebeb 100644 --- a/webui/src/api/check.ts +++ b/webui/src/api/check.ts @@ -6,5 +6,4 @@ export const apiCheck = { const { data } = await axios.get('api/v1/check/downloader'); return data; }, - -} \ No newline at end of file +}; diff --git a/webui/src/api/download.ts b/webui/src/api/download.ts index 29594559..909ed0d2 100644 --- a/webui/src/api/download.ts +++ b/webui/src/api/download.ts @@ -1,6 +1,6 @@ import type { BangumiAPI, BangumiRule } from '#/bangumi'; import type { RSS } from '#/rss'; -import type { ApiError, ApiSuccess } from '#/api'; +import type { ApiSuccess } from '#/api'; export const apiDownload = { /** @@ -10,14 +10,14 @@ export const apiDownload = { async analysis(rss_item: RSS) { const { data } = await axios.post( 'api/v1/rss/analysis', - rss_item + rss_item ); const result: BangumiRule = { - ...data, - filter: data.filter.split(','), - rss_link: data.rss_link.split(','), - } + ...data, + filter: data.filter.split(','), + rss_link: data.rss_link.split(','), + }; return result; }, @@ -30,7 +30,7 @@ export const apiDownload = { ...bangumiData, filter: bangumiData.filter.join(','), rss_link: bangumiData.rss_link.join(','), - } + }; const { data } = await axios.post( 'api/v1/rss/collect', postData @@ -44,10 +44,10 @@ export const apiDownload = { */ async subscribe(bangumiData: BangumiRule) { const postData: BangumiAPI = { - ...bangumiData, - filter: bangumiData.filter.join(','), - rss_link: bangumiData.rss_link.join(','), - } + ...bangumiData, + filter: bangumiData.filter.join(','), + rss_link: bangumiData.rss_link.join(','), + }; const { data } = await axios.post( 'api/v1/rss/subscribe', postData diff --git a/webui/src/api/log.ts b/webui/src/api/log.ts index b7492153..bf9baf5b 100644 --- a/webui/src/api/log.ts +++ b/webui/src/api/log.ts @@ -1,4 +1,4 @@ -import type { ApiSuccess } from "#/api"; +import type { ApiSuccess } from '#/api'; export const apiLog = { async getLog() { diff --git a/webui/src/api/program.ts b/webui/src/api/program.ts index d8ce5f0b..eea8e1bb 100644 --- a/webui/src/api/program.ts +++ b/webui/src/api/program.ts @@ -1,5 +1,4 @@ -import type { ApiSuccess } from "#/api"; - +import type { ApiSuccess } from '#/api'; export const apiProgram = { /** diff --git a/webui/src/api/rss.ts b/webui/src/api/rss.ts index c92b0889..9cd5d92b 100644 --- a/webui/src/api/rss.ts +++ b/webui/src/api/rss.ts @@ -14,32 +14,48 @@ export const apiRSS = { }, async delete(rss_id: number) { - const { data } = await axios.delete(`api/v1/rss/delete/${rss_id}`); + const { data } = await axios.delete( + `api/v1/rss/delete/${rss_id}` + ); return data!; }, async deleteMany(rss_list: number[]) { - const { data } = await axios.post(`api/v1/rss/delete/many`, rss_list); + const { data } = await axios.post( + `api/v1/rss/delete/many`, + rss_list + ); return data!; }, async disable(rss_id: number) { - const { data } = await axios.patch(`api/v1/rss/disable/${rss_id}`); + const { data } = await axios.patch( + `api/v1/rss/disable/${rss_id}` + ); return data!; }, async disableMany(rss_list: number[]) { - const { data } = await axios.post(`api/v1/rss/disable/many`, rss_list); + const { data } = await axios.post( + `api/v1/rss/disable/many`, + rss_list + ); return data!; }, async update(rss_id: number, rss: RSS) { - const { data } = await axios.patch(`api/v1/rss/update/${rss_id}`, rss); + const { data } = await axios.patch( + `api/v1/rss/update/${rss_id}`, + rss + ); return data!; }, async enableMany(rss_list: number[]) { - const { data } = await axios.post(`api/v1/rss/enable/many`, rss_list); + const { data } = await axios.post( + `api/v1/rss/enable/many`, + rss_list + ); return data!; }, @@ -49,7 +65,9 @@ export const apiRSS = { }, async refresh(rss_id: number) { - const { data } = await axios.get(`api/v1/rss/refresh/${rss_id}`); + const { data } = await axios.get( + `api/v1/rss/refresh/${rss_id}` + ); return data!; }, diff --git a/webui/src/api/search.ts b/webui/src/api/search.ts index 61f26591..0be88f79 100644 --- a/webui/src/api/search.ts +++ b/webui/src/api/search.ts @@ -1,37 +1,47 @@ -import { - Observable, -} from 'rxjs'; +import { Observable } from 'rxjs'; -import type { BangumiRule, BangumiAPI } from '#/bangumi'; +import type { BangumiAPI, BangumiRule } from '#/bangumi'; export const apiSearch = { /** * 番剧搜索接口是 Server Send 流式数据,每条是一个 Bangumi JSON 字符串, * 使用接口方式是监听连接消息后,转为 Observable 配合外层调用时 switchMap 订阅使用 */ - get(keyword: string, site = 'mikan'): Observable { - const bangumiInfo$ = new Observable(observer => { + get(keyword: string, site = 'mikan'): Observable { + const bangumiInfo$ = new Observable((observer) => { const eventSource = new EventSource( - `api/v1/search/bangumi?site=${site}&keywords=${encodeURIComponent(keyword)}`, - { withCredentials: true }, + `api/v1/search/bangumi?site=${site}&keywords=${encodeURIComponent( + keyword + )}`, + { withCredentials: true } ); - eventSource.onmessage = ev => { + eventSource.onmessage = (ev) => { try { const apiData: BangumiAPI = JSON.parse(ev.data); - const data: BangumiRule = { - ...apiData, - filter: apiData.filter.split(','), - rss_link: apiData.rss_link.split(','), - } + const data: BangumiRule = { + ...apiData, + filter: apiData.filter.split(','), + rss_link: apiData.rss_link.split(','), + }; observer.next(data); } catch (error) { - console.error('[/search/bangumi] Parse Error |', { keyword }, 'response:', ev.data) + console.error( + '[/search/bangumi] Parse Error |', + { keyword }, + 'response:', + ev.data + ); } }; - eventSource.onerror = ev => { - console.error('[/search/bangumi] Server Error |', { keyword }, 'error:', ev) + eventSource.onerror = (ev) => { + console.error( + '[/search/bangumi] Server Error |', + { keyword }, + 'error:', + ev + ); // 目前后端搜索完成关闭连接时会触发 error 事件,前端手动调用 close 不再自动重连 eventSource.close(); }; @@ -47,6 +57,5 @@ export const apiSearch = { async getProvider() { const { data } = await axios.get('api/v1/search/provider'); return data; - } + }, }; - diff --git a/webui/src/components/ab-add-rss.vue b/webui/src/components/ab-add-rss.vue index 67925e87..ee3b0d37 100644 --- a/webui/src/components/ab-add-rss.vue +++ b/webui/src/components/ab-add-rss.vue @@ -4,7 +4,7 @@ import type { BangumiRule } from '#/bangumi'; import type { RSS } from '#/rss'; import { rssTemplate } from '#/rss'; import { ruleTemplate } from '#/bangumi'; -import type { ApiError } from "#/api"; +import type { ApiError } from '#/api'; /** v-model show */ const show = defineModel('show', { default: false }); @@ -13,7 +13,7 @@ const message = useMessage(); const { getAll } = useBangumiStore(); const rss = ref(rssTemplate); -const rule = defineModel('rule', { default: ruleTemplate }) +const rule = defineModel('rule', { default: ruleTemplate }); const parserType = ['mikan', 'tmdb', 'parser']; const window = reactive({ @@ -147,12 +147,9 @@ async function subscribe() { >
- {{ $t('topbar.add.button') }} + {{ + $t('topbar.add.button') + }}
diff --git a/webui/src/components/ab-bangumi-card.vue b/webui/src/components/ab-bangumi-card.vue index fd5a0344..ec73e6d9 100644 --- a/webui/src/components/ab-bangumi-card.vue +++ b/webui/src/components/ab-bangumi-card.vue @@ -1,15 +1,15 @@ - - \ No newline at end of file + diff --git a/webui/src/components/ab-status-bar.vue b/webui/src/components/ab-status-bar.vue index d0caa4e7..e0932388 100644 --- a/webui/src/components/ab-status-bar.vue +++ b/webui/src/components/ab-status-bar.vue @@ -1,20 +1,20 @@ diff --git a/webui/src/components/basic/ab-checkbox.vue b/webui/src/components/basic/ab-checkbox.vue index e787cef4..5733c87f 100644 --- a/webui/src/components/basic/ab-checkbox.vue +++ b/webui/src/components/basic/ab-checkbox.vue @@ -1,16 +1,16 @@