diff options
| author | Fuwn <[email protected]> | 2026-03-01 16:13:28 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-03-01 16:13:45 -0800 |
| commit | 8510a4b87bd493d4451072c2e6b4fec6596d29c3 (patch) | |
| tree | 1a627753dd136d46ac3d7c098d72a43c8e73d66f /src | |
| parent | chore(biome): enable svelte formatting (diff) | |
| download | due.moe-8510a4b87bd493d4451072c2e6b4fec6596d29c3.tar.xz due.moe-8510a4b87bd493d4451072c2e6b4fec6596d29c3.zip | |
chore(biome): enable svelte linting
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/Landing.svelte | 4 | ||||
| -rw-r--r-- | src/lib/List/Anime/AnimeListTemplate.svelte | 4 | ||||
| -rw-r--r-- | src/lib/List/Anime/CompletedAnimeList.svelte | 7 | ||||
| -rw-r--r-- | src/lib/List/Anime/DueAnimeList.svelte | 5 | ||||
| -rw-r--r-- | src/lib/List/Manga/CleanMangaList.svelte | 4 | ||||
| -rw-r--r-- | src/lib/List/Manga/MangaListTemplate.svelte | 8 | ||||
| -rw-r--r-- | src/lib/Schedule/Days.svelte | 4 | ||||
| -rw-r--r-- | src/lib/Tools/Birthdays.svelte | 12 | ||||
| -rw-r--r-- | src/lib/Tools/BirthdaysTemplate.svelte | 6 | ||||
| -rw-r--r-- | src/lib/Tools/UmaMusumeBirthdays.svelte | 4 | ||||
| -rw-r--r-- | src/lib/Tools/Wrapped/Tool.svelte | 59 | ||||
| -rw-r--r-- | src/lib/User/BadgeWall/AWC.svelte | 30 | ||||
| -rw-r--r-- | src/routes/schedule/+page.svelte | 4 | ||||
| -rw-r--r-- | src/routes/tools/[tool]/+page.svelte | 2 |
14 files changed, 83 insertions, 70 deletions
diff --git a/src/lib/Landing.svelte b/src/lib/Landing.svelte index bddd16df..51167432 100644 --- a/src/lib/Landing.svelte +++ b/src/lib/Landing.svelte @@ -41,7 +41,9 @@ onMount(() => { { threshold: 0.1 } ); - document.querySelectorAll('.landing-section').forEach((el) => intersectionObserver.observe(el)); + document.querySelectorAll('.landing-section').forEach((el) => { + intersectionObserver.observe(el); + }); calculateLimit(); diff --git a/src/lib/List/Anime/AnimeListTemplate.svelte b/src/lib/List/Anime/AnimeListTemplate.svelte index cb1d0fcd..8f2846c6 100644 --- a/src/lib/List/Anime/AnimeListTemplate.svelte +++ b/src/lib/List/Anime/AnimeListTemplate.svelte @@ -3,7 +3,7 @@ import type { AniListAuthorisation } from '$lib/Data/AniList/identity'; import type { Media } from '$lib/Data/AniList/media'; -import Error from '$lib/Error/RateLimited.svelte'; +import RateLimitedError from '$lib/Error/RateLimited.svelte'; import settings from '$stores/settings'; import CleanAnimeList from './CleanAnimeList.svelte'; import ListTitle from '../ListTitle.svelte'; @@ -100,6 +100,6 @@ onMount(async () => { {:catch} <ListTitle time={0} count={-1337} {title} /> - <Error /> + <RateLimitedError /> {/await} {/if} diff --git a/src/lib/List/Anime/CompletedAnimeList.svelte b/src/lib/List/Anime/CompletedAnimeList.svelte index 240d386d..e308a230 100644 --- a/src/lib/List/Anime/CompletedAnimeList.svelte +++ b/src/lib/List/Anime/CompletedAnimeList.svelte @@ -68,8 +68,8 @@ const cleanMedia = (anime: Media[]) => { const outdatedCompletedAnime = anime.filter( (media: Media) => media.status === 'FINISHED' && - (media.mediaListEntry || { status: 'DROPPED' }).status != 'DROPPED' && - (media.mediaListEntry || { status: 'DROPPED' }).status != + (media.mediaListEntry || { status: 'DROPPED' }).status !== 'DROPPED' && + (media.mediaListEntry || { status: 'DROPPED' }).status !== ($settings.displayPausedMedia ? '' : 'PAUSED') && (media.mediaListEntry || { progress: 0 }).progress >= ($settings.displayNotStarted ? 0 : 1) ); @@ -100,6 +100,9 @@ const cleanMedia = (anime: Media[]) => { case 'time_remaining': return (a.nextAiringEpisode?.airingAt || 9999) - (b.nextAiringEpisode?.airingAt || 9999); + + default: + return 0; } }); diff --git a/src/lib/List/Anime/DueAnimeList.svelte b/src/lib/List/Anime/DueAnimeList.svelte index e19bcd0c..69b84b8f 100644 --- a/src/lib/List/Anime/DueAnimeList.svelte +++ b/src/lib/List/Anime/DueAnimeList.svelte @@ -62,7 +62,7 @@ const cleanMedia = (anime: Media[], displayUnresolved: boolean, subsPlease: Subs // Releasing media (media: Media) => media.status === 'RELEASING' && - (media.mediaListEntry || { status: 'DROPPED' }).status != + (media.mediaListEntry || { status: 'DROPPED' }).status !== ($settings.displayPausedMedia ? '' : 'PAUSED') && (media.mediaListEntry || { progress: 0 }).progress >= ($settings.displayNotStarted === true ? 0 : 1) && @@ -107,6 +107,9 @@ const cleanMedia = (anime: Media[], displayUnresolved: boolean, subsPlease: Subs case 'time_remaining': return (a.nextAiringEpisode?.airingAt || 9999) - (b.nextAiringEpisode?.airingAt || 9999); + + default: + return 0; } }); diff --git a/src/lib/List/Manga/CleanMangaList.svelte b/src/lib/List/Manga/CleanMangaList.svelte index 8964c15e..428c45f2 100644 --- a/src/lib/List/Manga/CleanMangaList.svelte +++ b/src/lib/List/Manga/CleanMangaList.svelte @@ -1,7 +1,7 @@ <script lang="ts"> import Spacer from '$lib/Layout/Spacer.svelte'; import type { Media } from '$lib/Data/AniList/media'; -import Error from '$lib/Error/RateLimited.svelte'; +import RateLimitedError from '$lib/Error/RateLimited.svelte'; import { volumeCount } from '$lib/Media/Manga/volumes'; import settings from '$stores/settings'; import ListTitle from '../ListTitle.svelte'; @@ -120,7 +120,7 @@ const increment = (manga: Media) => { <a href="https://due.moe">due.moe</a>'s manga data source is currently unavailable. Please check back later. {:else} - <Error /> + <RateLimitedError /> {/if} {:else} <Skeleton card={false} count={1} height="0.9rem" list /> diff --git a/src/lib/List/Manga/MangaListTemplate.svelte b/src/lib/List/Manga/MangaListTemplate.svelte index 740a1341..0b967cb2 100644 --- a/src/lib/List/Manga/MangaListTemplate.svelte +++ b/src/lib/List/Manga/MangaListTemplate.svelte @@ -10,7 +10,7 @@ import { database } from '$lib/Database/IDB/chapters'; import settings from '$stores/settings'; import lastPruneTimes from '$stores/lastPruneTimes'; import ListTitle from '../ListTitle.svelte'; -import Error from '$lib/Error/RateLimited.svelte'; +import RateLimitedError from '$lib/Error/RateLimited.svelte'; import CleanMangaList from './CleanMangaList.svelte'; import { incrementMediaProgress } from '$lib/Media/Anime/cache'; import { addNotification } from '$lib/Notification/store'; @@ -199,7 +199,9 @@ const cleanMedia = async (manga: Media[], displayUnresolved: boolean, force: boo if (progress < 100) progress += progressStep; } - finalMedia.forEach((m: Media, i) => (m.episodes = chapterCounts[i] || -1337)); + finalMedia.forEach((m: Media, i) => { + m.episodes = chapterCounts[i] || -1337; + }); if (!displayUnresolved) finalMedia = finalMedia.filter((m: Media) => m.episodes !== -1337); @@ -404,6 +406,6 @@ const cleanCache = () => { /> {/if} - <Error list={false} /> + <RateLimitedError list={false} /> {/await} {/await} diff --git a/src/lib/Schedule/Days.svelte b/src/lib/Schedule/Days.svelte index 416c0cce..6a2b2da6 100644 --- a/src/lib/Schedule/Days.svelte +++ b/src/lib/Schedule/Days.svelte @@ -16,7 +16,7 @@ import anime from '$stores/anime'; import lastPruneTimes from '$stores/lastPruneTimes'; import Message from '$lib/Loading/Message.svelte'; import Skeleton from '$lib/Loading/Skeleton.svelte'; -import Error from '$lib/Error/RateLimited.svelte'; +import RateLimitedError from '$lib/Error/RateLimited.svelte'; export let subsPlease: SubsPlease; export let scheduledMedia: Partial<Media[]>; @@ -195,7 +195,7 @@ const episode = (media: Media, weekday: string) => { </details> {/each} {:catch} - <Error type="Media lists" loginSessionError={false} card list={false} /> + <RateLimitedError type="Media lists" loginSessionError={false} card list={false} /> {/await} <style> diff --git a/src/lib/Tools/Birthdays.svelte b/src/lib/Tools/Birthdays.svelte index 6c81a233..49d72cfa 100644 --- a/src/lib/Tools/Birthdays.svelte +++ b/src/lib/Tools/Birthdays.svelte @@ -3,7 +3,7 @@ import { browser } from '$app/environment'; import { page } from '$app/stores'; import { ACDBBirthdays, type ACDBBirthday } from '$lib/Data/Birthday/secondary'; import { aniSearchBirthdays, type aniSearchBirthday } from '$lib/Data/Birthday/primary'; -import Error from '$lib/Error/RateLimited.svelte'; +import RateLimitedError from '$lib/Error/RateLimited.svelte'; import { onMount } from 'svelte'; import { clearAllParameters, parseOrDefault } from '../Utility/parameters'; import Skeleton from '$lib/Loading/Skeleton.svelte'; @@ -90,10 +90,10 @@ const combineBirthdaySources = ( return Array.from(nameMap.values()); }; -const resolveBirthdays = async ( +async function resolveBirthdays( month: number, day: number -): Promise<{ birthdays: Birthday[]; allSourcesFailed: boolean }> => { +): Promise<{ birthdays: Birthday[]; allSourcesFailed: boolean }> { const [acdbResult, aniSearchResult] = await Promise.allSettled([ ACDBBirthdays(month, day), browser ? aniSearchBirthdays(month, day) : Promise.resolve([]) @@ -105,7 +105,7 @@ const resolveBirthdays = async ( birthdays: combineBirthdaySources(acdb, aniSearch), allSourcesFailed: acdbResult.status === 'rejected' && aniSearchResult.status === 'rejected' }; -}; +} </script> {#await birthdays} @@ -114,7 +114,7 @@ const resolveBirthdays = async ( <Skeleton grid={true} count={100} width="150px" height="170px" /> {:then resolved} {#if resolved.allSourcesFailed} - <Error type="Character" card /> + <RateLimitedError type="Character" card /> {:else} <p> <select bind:value={month}> @@ -158,7 +158,7 @@ const resolveBirthdays = async ( </div> {/if} {:catch} - <Error type="Character" card /> + <RateLimitedError type="Character" card /> {/await} <style lang="scss"> diff --git a/src/lib/Tools/BirthdaysTemplate.svelte b/src/lib/Tools/BirthdaysTemplate.svelte index 0ec937c4..17763908 100644 --- a/src/lib/Tools/BirthdaysTemplate.svelte +++ b/src/lib/Tools/BirthdaysTemplate.svelte @@ -5,7 +5,7 @@ import { onMount } from 'svelte'; import { clearAllParameters, parseOrDefault } from '../Utility/parameters'; import Message from '$lib/Loading/Message.svelte'; import locale from '$stores/locale'; -import Error from '$lib/Error/RateLimited.svelte'; +import RateLimitedError from '$lib/Error/RateLimited.svelte'; import Skeleton from '$lib/Loading/Skeleton.svelte'; export let remoteURL: string; @@ -95,10 +95,10 @@ onMount(() => clearAllParameters(['month', 'day'])); </div> {/if} {:catch} - <Error type="Character" card /> + <RateLimitedError type="Character" card /> {/await} {:catch} - <Error type="Character" card /> + <RateLimitedError type="Character" card /> {/await} <style lang="scss"> diff --git a/src/lib/Tools/UmaMusumeBirthdays.svelte b/src/lib/Tools/UmaMusumeBirthdays.svelte index cc8c1513..7d49cfaa 100644 --- a/src/lib/Tools/UmaMusumeBirthdays.svelte +++ b/src/lib/Tools/UmaMusumeBirthdays.svelte @@ -1,7 +1,7 @@ <script lang="ts"> import { browser } from '$app/environment'; import { page } from '$app/stores'; -import Error from '$lib/Error/RateLimited.svelte'; +import RateLimitedError from '$lib/Error/RateLimited.svelte'; import { onMount } from 'svelte'; import { clearAllParameters, parseOrDefault } from '../Utility/parameters'; import Skeleton from '$lib/Loading/Skeleton.svelte'; @@ -117,7 +117,7 @@ onMount(() => { <Skeleton grid={true} count={100} width="150px" height="170px" /> {/if} {:catch} - <Error type="Character" card /> + <RateLimitedError type="Character" card /> {/await} <style lang="scss"> diff --git a/src/lib/Tools/Wrapped/Tool.svelte b/src/lib/Tools/Wrapped/Tool.svelte index 3f13b483..7ce50ac3 100644 --- a/src/lib/Tools/Wrapped/Tool.svelte +++ b/src/lib/Tools/Wrapped/Tool.svelte @@ -14,7 +14,7 @@ import { Type, mediaListCollection, type Media } from '$lib/Data/AniList/media'; import anime from '$stores/anime'; import lastPruneTimes from '$stores/lastPruneTimes'; import manga from '$stores/manga'; -import Error from '$lib/Error/RateLimited.svelte'; +import RateLimitedError from '$lib/Error/RateLimited.svelte'; import { domToBlob } from 'modern-screenshot'; import { browser } from '$app/environment'; import { page } from '$app/stores'; @@ -87,6 +87,7 @@ let lastUseFullActivityHistory = useFullActivityHistory; let lastDisableLoopingActivityCounter = disableLoopingActivityCounter; let lastStartDateFilter: Date | null = startDateFilter; let lastEndDateFilter: Date | null = endDateFilter; +const touch = (...values: unknown[]) => values; $: { if (browser && mounted) { @@ -136,32 +137,32 @@ $: { } $: { - includeMusic = includeMusic; - includeSpecials = includeSpecials; - includeRepeats = includeRepeats; - disableActivityHistory = disableActivityHistory; - highestRatedMediaPercentage = highestRatedMediaPercentage; - highestRatedGenreTagPercentage = highestRatedGenreTagPercentage; - topGenresTags = topGenresTags; - genreTagsSort = genreTagsSort; - mediaSort = mediaSort; - includeMovies = includeMovies; - includeOVAs = includeOVAs; - selectedYear = selectedYear; - includeOngoingMediaFromPreviousYears = includeOngoingMediaFromPreviousYears; - excludeUnratedUnwatched = excludeUnratedUnwatched; + touch( + includeMusic, + includeSpecials, + includeRepeats, + disableActivityHistory, + highestRatedMediaPercentage, + highestRatedGenreTagPercentage, + topGenresTags, + genreTagsSort, + mediaSort, + includeMovies, + includeOVAs, + selectedYear, + includeOngoingMediaFromPreviousYears, + excludeUnratedUnwatched + ); if (shouldFetchData) update().then(updateWidth).catch(updateWidth); } $: { - animeList = animeList; - mangaList = mangaList; - highestRatedCount = highestRatedCount; + touch(animeList, mangaList, highestRatedCount); new Promise((resolve) => setTimeout(resolve, 1)).then(updateWidth); } $: { - genreTagCount = genreTagCount; + touch(genreTagCount); if (animeList && mangaList) topMedia = tops( @@ -174,7 +175,7 @@ $: { new Promise((resolve) => setTimeout(resolve, 1)).then(updateWidth); } $: { - excludedKeywords = excludedKeywords; + touch(excludedKeywords); if (excludedKeywords.length > 0 && animeList !== undefined && mangaList !== undefined) { animeList = originalAnimeList; @@ -216,7 +217,7 @@ $: mangaMostTitle = (() => { } })(); -const updateWidth = () => { +function updateWidth() { if (!browser) return; const wrappedContainer = document.querySelector('#wrapped') as HTMLElement; @@ -263,7 +264,7 @@ const updateWidth = () => { reset(); reset(); -}; +} onMount(async () => { clearAllParameters([ @@ -407,7 +408,7 @@ const dummyActivities: ActivityHistoryEntry[] = []; const dummyAnimeList: Media[] = [createDummyMedia('ANIME')]; const dummyMangaList: Media[] = [createDummyMedia('MANGA')]; -const update = async () => { +async function update() { if ($userIdentity.id === -1) return; let rawAnimeList = await mediaListCollection( @@ -601,7 +602,7 @@ const update = async () => { } for (const media of calculatedMangaList) chapters += media.mediaListEntry?.progress || 0; -}; +} /* eslint-disable @typescript-eslint/no-explicit-any */ // const year = (statistic: { startYears: any }) => @@ -684,7 +685,7 @@ const submitExcludedKeywords = () => { .filter((k) => k.length > 0); }; -const excludeKeywords = (media: Media[]) => { +function excludeKeywords(media: Media[]) { if (excludedKeywords.length <= 0) return media; return media.filter((m) => { @@ -696,7 +697,7 @@ const excludeKeywords = (media: Media[]) => { return true; }); -}; +} const pruneFullYear = async () => { await database.activities.bulkDelete((await database.activities.toArray()).map((m) => m.page)); @@ -814,10 +815,10 @@ const pruneFullYear = async () => { </div> </div> {:catch} - <Error type="User" card list={false} /> + <RateLimitedError type="User" card list={false} /> {/await} {:catch} - <Error + <RateLimitedError card type={`${useFullActivityHistory ? 'Full-year activity' : 'Activity'} history`} loginSessionError={!useFullActivityHistory} @@ -830,7 +831,7 @@ const pruneFullYear = async () => { your local activity history database. </p> {/if} - </Error> + </RateLimitedError> {/await} {/key} {:else} diff --git a/src/lib/User/BadgeWall/AWC.svelte b/src/lib/User/BadgeWall/AWC.svelte index 52eb670a..6d8dcf76 100644 --- a/src/lib/User/BadgeWall/AWC.svelte +++ b/src/lib/User/BadgeWall/AWC.svelte @@ -14,17 +14,17 @@ export let preferences: Preferences; const awcBadgesGrouped = (awcResponse: string): AWCBadgesGroup[] => { return Array.from( new DOMParser().parseFromString(awcResponse, 'text/html').querySelectorAll('.container') - ) - .map((c) => { - const container = c as HTMLDivElement; - const header = container.querySelector('.container-header') as HTMLDivElement; + ).flatMap((c) => { + const container = c as HTMLDivElement; + const header = container.querySelector('.container-header') as HTMLDivElement; - if (!header) return; + if (!header) return []; - if (!['Anime', 'Manga', 'Special'].includes(header.innerText)) return; + if (!['Anime', 'Manga', 'Special'].includes(header.innerText)) return []; - if (header.innerText === 'Special') { - return { + if (header.innerText === 'Special') { + return [ + { group: header.innerText, badges: Array.from(container.querySelectorAll('.badge-display img')).map((b) => { const badge = b as HTMLImageElement; @@ -37,10 +37,12 @@ const awcBadgesGrouped = (awcResponse: string): AWCBadgesGroup[] => { : badge.src }; }) - }; - } + } + ]; + } - return { + return [ + { group: header.innerText, badges: Array.from(container.querySelectorAll('.badge-display a')).map((b) => { const badge = b as HTMLAnchorElement; @@ -54,9 +56,9 @@ const awcBadgesGrouped = (awcResponse: string): AWCBadgesGroup[] => { : image.src }; }) - }; - }) - .filter((b) => b !== undefined) as AWCBadgesGroup[]; + } + ]; + }) as AWCBadgesGroup[]; }; </script> diff --git a/src/routes/schedule/+page.svelte b/src/routes/schedule/+page.svelte index 59e086ce..ff83d895 100644 --- a/src/routes/schedule/+page.svelte +++ b/src/routes/schedule/+page.svelte @@ -1,5 +1,5 @@ <script lang="ts"> -import Error from '$lib/Error/RateLimited.svelte'; +import RateLimitedError from '$lib/Error/RateLimited.svelte'; import { onMount } from 'svelte'; import { parseOrDefault } from '$lib/Utility/parameters'; import { browser } from '$app/environment'; @@ -74,7 +74,7 @@ onMount(async () => { <Skeleton grid={true} count={7} height="15em" width="49.5%" /> {/if} {:catch} - <Error type="Media" loginSessionError={false} card list={false} /> + <RateLimitedError type="Media" loginSessionError={false} card list={false} /> {/await} {/if} diff --git a/src/routes/tools/[tool]/+page.svelte b/src/routes/tools/[tool]/+page.svelte index 6cae8433..f106d5b2 100644 --- a/src/routes/tools/[tool]/+page.svelte +++ b/src/routes/tools/[tool]/+page.svelte @@ -31,7 +31,7 @@ onMount(() => { $: suggestion = closest(tool, Object.keys(tools)); -$: if (tool == 'girls') goto(root('/girls')); +$: if (tool === 'girls') goto(root('/girls')); </script> <Picker bind:tool /> |