diff options
| author | Fuwn <[email protected]> | 2026-05-29 23:44:08 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-05-29 23:44:08 +0000 |
| commit | 49879c43ebd9f36ec19f4c02fa2b121314126286 (patch) | |
| tree | bbf1e42eba5996640ffcc7f44d07245cdf2c5e5c | |
| parent | chore(biome): scope linting to remove Svelte false positives (diff) | |
| download | due.moe-49879c43ebd9f36ec19f4c02fa2b121314126286.tar.xz due.moe-49879c43ebd9f36ec19f4c02fa2b121314126286.zip | |
Auto-fixed cosmetic findings (import ordering, obj["k"]->obj.k, optional
chaining, template literals, Date.now, parseInt radix, useless ternaries/
switch cases). Resolved the non-autofixable rest by hand:
- Senpy: static-only class -> object literal (no this/static reliance).
- app.html: var global shim -> window.global = window (keeps the shim,
drops the unused-var flag).
- biome-ignore with rationale for the logout document.cookie clear and the
holodule scrape non-null assertion.
Verified: biome check 0 diagnostics, svelte-check 0/0, 24/24 unit tests.
152 files changed, 579 insertions, 603 deletions
diff --git a/src/app.html b/src/app.html index fb48fb03..a8eceb73 100644 --- a/src/app.html +++ b/src/app.html @@ -107,7 +107,7 @@ </script> <script> - var global = window; + window.global = window; aoButa = ''; @@ -170,8 +170,6 @@ aoButa = 'tomoe'; break; - - case 7: default: aoButa = 'mai_2'; diff --git a/src/graphql/anime/index.ts b/src/graphql/anime/index.ts index d5eef7f2..f0b5a602 100644 --- a/src/graphql/anime/index.ts +++ b/src/graphql/anime/index.ts @@ -1,4 +1,4 @@ -import typeDefs from "./schema.graphql?raw"; import { resolvers } from "./resolvers"; +import typeDefs from "./schema.graphql?raw"; export default { typeDefs, resolvers }; diff --git a/src/graphql/anime/resolvers.ts b/src/graphql/anime/resolvers.ts index 2b897eda..577950f7 100644 --- a/src/graphql/anime/resolvers.ts +++ b/src/graphql/anime/resolvers.ts @@ -1,5 +1,4 @@ -import type { WithIndex } from "../$types"; -import type { Resolvers as RootResolvers } from "../$types"; +import type { Resolvers as RootResolvers, WithIndex } from "../$types"; type AnimeResolvers = Pick< RootResolvers, diff --git a/src/graphql/server.ts b/src/graphql/server.ts index f5731080..7e1e41dc 100644 --- a/src/graphql/server.ts +++ b/src/graphql/server.ts @@ -1,6 +1,6 @@ import { createSchema, createServer } from "sveltekit-graphql"; -import userModule from "./user"; import animeModule from "./anime"; +import userModule from "./user"; const schema = createSchema([userModule, animeModule]); const server = createServer(schema); diff --git a/src/graphql/user/index.ts b/src/graphql/user/index.ts index d5eef7f2..f0b5a602 100644 --- a/src/graphql/user/index.ts +++ b/src/graphql/user/index.ts @@ -1,4 +1,4 @@ -import typeDefs from "./schema.graphql?raw"; import { resolvers } from "./resolvers"; +import typeDefs from "./schema.graphql?raw"; export default { typeDefs, resolvers }; diff --git a/src/graphql/user/resolvers.ts b/src/graphql/user/resolvers.ts index 360d622b..905a2b4f 100644 --- a/src/graphql/user/resolvers.ts +++ b/src/graphql/user/resolvers.ts @@ -1,20 +1,18 @@ +import type { RequestEvent } from "@sveltejs/kit"; import { safeUserIdentity, type UserIdentity, } from "$lib/Data/AniList/identity"; import { addUserBadge, + type Badge as DatabaseBadge, getUserBadges, removeAllUserBadges, removeUserBadge, setShadowHidden, setShadowHiddenBadge, updateUserBadge, - type Badge as DatabaseBadge, } from "$lib/Database/SB/User/badges"; -import type { WithIndex } from "../$types"; -import type { Resolvers as RootResolvers, Badge } from "../$types"; -import type { RequestEvent } from "@sveltejs/kit"; import { getUserPreferences, setBiography, @@ -26,8 +24,9 @@ import { togglePinnedBadgeWallCategory, type UserPreferences, } from "$lib/Database/SB/User/preferences"; -import privilegedUser from "$lib/Utility/privilegedUser"; import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; +import privilegedUser from "$lib/Utility/privilegedUser"; +import type { Badge, Resolvers as RootResolvers, WithIndex } from "../$types"; type Context = RequestEvent<Partial<Record<string, string>>, string | null>; type UserResolvers = Pick< @@ -188,15 +187,14 @@ export const resolvers: WithIndex<UserResolvers> = { .map(async (badge) => { await updateUserBadge(identity.id, badge.id as number, { ...badge, - hidden: + hidden: !( allBadges .filter((badge) => badge.category === category) .filter((badge) => badge.hidden).length > allBadges.filter((badge) => badge.category === category) .length / 2 - ? false - : true, + ), }); }), ); diff --git a/src/hooks.server.ts b/src/hooks.server.ts index ca4fd8d3..ca781408 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,6 +1,6 @@ -import root from "$lib/Utility/root"; -import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; import type { Handle, RequestEvent } from "@sveltejs/kit"; +import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; +import root from "$lib/Utility/root"; const redirectWithParameters = ( event: RequestEvent<Partial<Record<string, string>>, string | null>, diff --git a/src/lib/Announcement.svelte b/src/lib/Announcement.svelte index 4338f8ff..f1f87069 100644 --- a/src/lib/Announcement.svelte +++ b/src/lib/Announcement.svelte @@ -1,9 +1,9 @@ <script lang="ts"> +import { env } from "$env/dynamic/public"; import Spacer from "$lib/Layout/Spacer.svelte"; -import Popup from "./Layout/Popup.svelte"; import announcementHash from "$stores/announcementHash"; -import { env } from "$env/dynamic/public"; import identity from "$stores/identity"; +import Popup from "./Layout/Popup.svelte"; const announcement = env.PUBLIC_ANNOUNCEMENT; const dismissButton = env.PUBLIC_ANNOUNCEMENT_DISMISS; @@ -28,11 +28,11 @@ const maxWidth = (input: string, max = 100) => { for (const word of input.split(" ")) { if (line.length + word.length > max) { - output += line + "\n"; + output += `${line}\n`; line = ""; } - line += word + " "; + line += `${word} `; } return output + line; diff --git a/src/lib/CommandPalette/CommandPalette.svelte b/src/lib/CommandPalette/CommandPalette.svelte index bf568200..81ce112c 100644 --- a/src/lib/CommandPalette/CommandPalette.svelte +++ b/src/lib/CommandPalette/CommandPalette.svelte @@ -1,10 +1,10 @@ <script lang="ts"> import { onMount } from "svelte"; -import { fly, fade } from "svelte/transition"; import { flip } from "svelte/animate"; -import type { CommandPaletteAction } from "./actions"; -import locale from "$stores/locale"; +import { fade, fly } from "svelte/transition"; import { track } from "$lib/analytics"; +import locale from "$stores/locale"; +import type { CommandPaletteAction } from "./actions"; export let items: CommandPaletteAction[] = []; export let open = false; diff --git a/src/lib/CommandPalette/actions.ts b/src/lib/CommandPalette/actions.ts index d2ed5a1d..19d7394e 100644 --- a/src/lib/CommandPalette/actions.ts +++ b/src/lib/CommandPalette/actions.ts @@ -1,6 +1,6 @@ +import { get } from "svelte/store"; import { invalidateListCaches } from "$lib/Media/invalidate"; import locale from "$stores/locale"; -import { get } from "svelte/store"; export interface CommandPaletteAction { name: string; @@ -173,7 +173,8 @@ export const defaultActions = (): CommandPaletteAction[] => { tags: ["user", "me", "settings"], }, { - name: l.commandPalette?.refreshCaches ?? "Refresh Anime & Manga List Caches", + name: + l.commandPalette?.refreshCaches ?? "Refresh Anime & Manga List Caches", url: "", preventDefault: true, tags: [ diff --git a/src/lib/CommandPalette/authActions.ts b/src/lib/CommandPalette/authActions.ts index 3dd51bf7..7123db06 100644 --- a/src/lib/CommandPalette/authActions.ts +++ b/src/lib/CommandPalette/authActions.ts @@ -1,9 +1,9 @@ +import localforage from "localforage"; +import { get } from "svelte/store"; import { env } from "$env/dynamic/public"; -import root from "$lib/Utility/root"; import { track } from "$lib/analytics"; -import localforage from "localforage"; +import root from "$lib/Utility/root"; import locale from "$stores/locale"; -import { get } from "svelte/store"; import type { CommandPaletteAction } from "./actions"; export const authActions = ( @@ -24,6 +24,7 @@ export const authActions = ( await localforage.removeItem("identity"); await localforage.removeItem("commit"); + // biome-ignore lint/suspicious/noDocumentCookie: synchronous cookie clear on logout right before navigation; the Cookie Store API is async and not universally supported. document.cookie = "user=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; diff --git a/src/lib/CommandPalette/syncActions.ts b/src/lib/CommandPalette/syncActions.ts index b3cf01c6..07b312d7 100644 --- a/src/lib/CommandPalette/syncActions.ts +++ b/src/lib/CommandPalette/syncActions.ts @@ -1,11 +1,11 @@ -import { addNotification } from "$lib/Notification/store"; +import { get } from "svelte/store"; import { options } from "$lib/Notification/options"; +import { addNotification } from "$lib/Notification/store"; import root from "$lib/Utility/root"; +import locale from "$stores/locale"; import settings from "$stores/settings"; import settingsSyncPulled from "$stores/settingsSyncPulled"; import settingsSyncTimes from "$stores/settingsSyncTimes"; -import locale from "$stores/locale"; -import { get } from "svelte/store"; import type { CommandPaletteAction } from "./actions"; export const syncActions = ( diff --git a/src/lib/CommandPalette/toggleActions.ts b/src/lib/CommandPalette/toggleActions.ts index 9ba1d121..f09a0358 100644 --- a/src/lib/CommandPalette/toggleActions.ts +++ b/src/lib/CommandPalette/toggleActions.ts @@ -1,6 +1,6 @@ -import settings, { type Settings } from "$stores/settings"; -import locale from "$stores/locale"; import { get } from "svelte/store"; +import locale from "$stores/locale"; +import settings, { type Settings } from "$stores/settings"; import type { CommandPaletteAction } from "./actions"; const TITLE_FORMATS: Settings["displayTitleFormat"][] = [ diff --git a/src/lib/Data/AniList/activity.ts b/src/lib/Data/AniList/activity.ts index 11466cc5..07dbeff7 100644 --- a/src/lib/Data/AniList/activity.ts +++ b/src/lib/Data/AniList/activity.ts @@ -115,7 +115,7 @@ export const activityHistoryOptions = async ( }), }) ).json() - )["data"]["User"]; + ).data.User; }; const convertToTimezoneOffset = (timeStr: string) => { @@ -228,7 +228,7 @@ export const fullActivityHistory = async ( for (const activity of currentPage.data.Page.activities) activities.push(activity); - while (currentPage["data"]["Page"]["pageInfo"]["hasNextPage"]) { + while (currentPage.data.Page.pageInfo.hasNextPage) { if (disableLoopingActivityCounter) break; for (const activity of currentPage.data.Page.activities) @@ -276,7 +276,7 @@ export const fullActivityHistory = async ( } fullLocalActivityHistory = fullLocalActivityHistory.filter( - (a) => !isNaN(a.date), + (a) => !Number.isNaN(a.date), ); if (new Date().getMonth() > 6) @@ -320,7 +320,7 @@ export const activityLikes = async (id: number): Promise<Partial<User>[]> => { }) ).json(); - return activityResponse["data"]["Activity"]["likes"]; + return activityResponse.data.Activity.likes; }; export const activityText = async ( @@ -343,10 +343,10 @@ export const activityText = async ( }), }) ).json(); - let text = activityResponse["data"]["Activity"]["text"]; + let text = activityResponse.data.Activity.text; if (replies) - for (const reply of activityResponse["data"]["Activity"]["replies"]) + for (const reply of activityResponse.data.Activity.replies) text += reply.text; return text; diff --git a/src/lib/Data/AniList/cacheHydration.ts b/src/lib/Data/AniList/cacheHydration.ts index 61cb1e60..ee5ba2f1 100644 --- a/src/lib/Data/AniList/cacheHydration.ts +++ b/src/lib/Data/AniList/cacheHydration.ts @@ -1,8 +1,8 @@ +import localforage from "localforage"; import { browser } from "$app/environment"; import anime from "$stores/anime"; import lastPruneTimes from "$stores/lastPruneTimes"; import manga from "$stores/manga"; -import localforage from "localforage"; type MediaCacheKind = "anime" | "manga"; const cacheStorageKey = (kind: MediaCacheKind) => `${kind}:v3`; diff --git a/src/lib/Data/AniList/character.ts b/src/lib/Data/AniList/character.ts index 3c53b91b..e694edc7 100644 --- a/src/lib/Data/AniList/character.ts +++ b/src/lib/Data/AniList/character.ts @@ -43,28 +43,28 @@ export const todaysCharacterBirthdays = async (): Promise<Character[]> => { let page = 1; let currentPage = await charactersPage(page); - for (const character of currentPage["data"]["Page"]["characters"]) + for (const character of currentPage.data.Page.characters) characters.push({ - id: character["id"], + id: character.id, name: { - full: character["name"]["full"], + full: character.name.full, }, image: { - large: character["image"]["large"], - medium: character["image"]["medium"], + large: character.image.large, + medium: character.image.medium, }, }); - while (currentPage["data"]["Page"]["pageInfo"]["hasNextPage"]) { - for (const character of currentPage["data"]["Page"]["characters"]) + while (currentPage.data.Page.pageInfo.hasNextPage) { + for (const character of currentPage.data.Page.characters) characters.push({ - id: character["id"], + id: character.id, name: { - full: character["name"]["full"], + full: character.name.full, }, image: { - large: character["image"]["large"], - medium: character["image"]["medium"], + large: character.image.large, + medium: character.image.medium, }, }); @@ -72,15 +72,15 @@ export const todaysCharacterBirthdays = async (): Promise<Character[]> => { currentPage = await charactersPage(page); } - for (const character of currentPage["data"]["Page"]["characters"]) + for (const character of currentPage.data.Page.characters) characters.push({ - id: character["id"], + id: character.id, name: { - full: character["name"]["full"], + full: character.name.full, }, image: { - large: character["image"]["large"], - medium: character["image"]["medium"], + large: character.image.large, + medium: character.image.medium, }, }); diff --git a/src/lib/Data/AniList/follow.ts b/src/lib/Data/AniList/follow.ts index 6aec8b9a..daafc8f6 100644 --- a/src/lib/Data/AniList/follow.ts +++ b/src/lib/Data/AniList/follow.ts @@ -45,5 +45,5 @@ export const toggleFollow = async ( }), }) ).json() - )["data"]["ToggleFollow"]; + ).data.ToggleFollow; }; diff --git a/src/lib/Data/AniList/following.ts b/src/lib/Data/AniList/following.ts index 60bb3ccc..b8184e53 100644 --- a/src/lib/Data/AniList/following.ts +++ b/src/lib/Data/AniList/following.ts @@ -1,4 +1,4 @@ -import { user, type User } from "./user"; +import { type User, user } from "./user"; export interface FollowingPage { data: { @@ -46,7 +46,7 @@ export const followers = async (name: string): Promise<Partial<User>[]> => { for (const activity of currentPage.data.Page.following) activities.push(activity); - while (currentPage["data"]["Page"]["pageInfo"]["hasNextPage"]) { + while (currentPage.data.Page.pageInfo.hasNextPage) { for (const activity of currentPage.data.Page.following) activities.push(activity); diff --git a/src/lib/Data/AniList/forum.ts b/src/lib/Data/AniList/forum.ts index 05cb508c..b69e86ff 100644 --- a/src/lib/Data/AniList/forum.ts +++ b/src/lib/Data/AniList/forum.ts @@ -81,5 +81,5 @@ export const threadLikes = async (id: number): Promise<Partial<User>[]> => { }) ).json(); - return activityResponse["data"]["Thread"]["likes"]; + return activityResponse.data.Thread.likes; }; diff --git a/src/lib/Data/AniList/identity.ts b/src/lib/Data/AniList/identity.ts index 973e1184..073df29b 100644 --- a/src/lib/Data/AniList/identity.ts +++ b/src/lib/Data/AniList/identity.ts @@ -29,9 +29,9 @@ export const userIdentity = async ( ).json(); return { - id: userIdResponse["data"]["Viewer"]["id"], - name: userIdResponse["data"]["Viewer"]["name"], - avatar: userIdResponse["data"]["Viewer"]["avatar"]["large"], + id: userIdResponse.data.Viewer.id, + name: userIdResponse.data.Viewer.name, + avatar: userIdResponse.data.Viewer.avatar.large, }; }; diff --git a/src/lib/Data/AniList/media.ts b/src/lib/Data/AniList/media.ts index 0a83dda6..d38d073e 100644 --- a/src/lib/Data/AniList/media.ts +++ b/src/lib/Data/AniList/media.ts @@ -1,16 +1,16 @@ +import localforage from "localforage"; +import { get } from "svelte/store"; import { browser } from "$app/environment"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; import { parseJsonStringOrDefault } from "$lib/Effect/json"; -import type { UserIdentity } from "./identity"; +import { options as getOptions, type Options } from "$lib/Notification/options"; import anime from "$stores/anime"; +import lastPruneTimes from "$stores/lastPruneTimes"; +import locale from "$stores/locale"; import manga from "$stores/manga"; import settings from "$stores/settings"; -import lastPruneTimes from "$stores/lastPruneTimes"; -import { options as getOptions, type Options } from "$lib/Notification/options"; +import type { UserIdentity } from "./identity"; import type { PrequelRelation, PrequelRelations } from "./prequels"; -import localforage from "localforage"; -import locale from "$stores/locale"; -import { get } from "svelte/store"; export enum Type { Anime, @@ -340,21 +340,20 @@ export const mediaListCollection = async ( currentLastPruneAt = hydratedInputs.currentLastPruneAt; if (String(currentLastPruneAt) === "") { - if (type === Type.Anime) - lastPruneTimes.setKey("anime", new Date().getTime()); - else lastPruneTimes.setKey("manga", new Date().getTime()); + if (type === Type.Anime) lastPruneTimes.setKey("anime", Date.now()); + else lastPruneTimes.setKey("manga", Date.now()); } else { if ( - (new Date().getTime() - Number(currentLastPruneAt)) / 1000 / 60 > + (Date.now() - Number(currentLastPruneAt)) / 1000 / 60 > Number(currentCacheMinutes) || options.forcePrune ) { if (type === Type.Anime) { - lastPruneTimes.setKey("anime", new Date().getTime()); + lastPruneTimes.setKey("anime", Date.now()); if (usesSharedMediaStore(options)) anime.set(""); } else { - lastPruneTimes.setKey("manga", new Date().getTime()); + lastPruneTimes.setKey("manga", Date.now()); if (usesSharedMediaStore(options)) manga.set(""); } @@ -387,14 +386,14 @@ export const mediaListCollection = async ( ).json(); if ( - !userIdResponse["data"] || - !userIdResponse["data"]["MediaListCollection"] || - !userIdResponse["data"]["MediaListCollection"]["lists"] + !userIdResponse.data || + !userIdResponse.data.MediaListCollection || + !userIdResponse.data.MediaListCollection.lists ) return []; const flattened = flattenLists( - userIdResponse["data"]["MediaListCollection"]["lists"], + userIdResponse.data.MediaListCollection.lists, options.all, ); @@ -518,15 +517,13 @@ export const recentMediaActivities = async ( ).json(); const guesses: number[] = []; - activities["data"]["Page"]["activities"].forEach( - (activity: { progress: string }) => { - if (activity.progress !== null) { - const progress = Number((activity.progress.match(/\d+$/) || [0])[0]); + activities.data.Page.activities.forEach((activity: { progress: string }) => { + if (activity.progress !== null) { + const progress = Number((activity.progress.match(/\d+$/) || [0])[0]); - if (progress !== 65535) guesses.push(progress); - } - }, - ); + if (progress !== 65535) guesses.push(progress); + } + }); guesses.sort((a, b) => b - a); if (guesses.length) { @@ -588,8 +585,8 @@ export const recentMediaActivities = async ( // } // if (activities['data']['MediaList']['progress'] !== null) { - if (activities["data"]["MediaList"]["progress"] > bestGuess) - bestGuess = activities["data"]["MediaList"]["progress"]; + if (activities.data.MediaList.progress > bestGuess) + bestGuess = activities.data.MediaList.progress; // } return Math.round(bestGuess); @@ -614,7 +611,7 @@ export const mediaCover = async (id: number) => }), }) ).json() - )["data"]["Media"]["coverImage"]["extraLarge"]; + ).data.Media.coverImage.extraLarge; export interface UnwatchedRelationMap { media: Media; diff --git a/src/lib/Data/AniList/notifications.ts b/src/lib/Data/AniList/notifications.ts index a12fd402..587486c7 100644 --- a/src/lib/Data/AniList/notifications.ts +++ b/src/lib/Data/AniList/notifications.ts @@ -76,9 +76,9 @@ export const notifications = async ( }) ).json(); - if (data["errors"]) return null; + if (data.errors) return null; - return data["data"]["Page"]["notifications"]; + return data.data.Page.notifications; }; export const isNotificationQueued = ( @@ -89,7 +89,7 @@ export const isNotificationQueued = ( recentNotifications.length > 0 && (recentNotifications[0].id > (lastNotificationID as number) || new Date(recentNotifications[0].createdAt * 1000).getTime() + 30000 > - new Date().getTime()); + Date.now()); export const updateLastNotificationID = async ( userID: number, diff --git a/src/lib/Data/AniList/prequels.ts b/src/lib/Data/AniList/prequels.ts index b521616f..9d5f39f0 100644 --- a/src/lib/Data/AniList/prequels.ts +++ b/src/lib/Data/AniList/prequels.ts @@ -151,7 +151,7 @@ export const prequels = async ( for (const candidate of currentPage.data.Page.media) candidates.push(candidate); - while (currentPage["data"]["Page"]["pageInfo"]["hasNextPage"]) { + while (currentPage.data.Page.pageInfo.hasNextPage) { for (const candidate of currentPage.data.Page.media) candidates.push(candidate); diff --git a/src/lib/Data/AniList/user.ts b/src/lib/Data/AniList/user.ts index d16b8612..e6e37ac7 100644 --- a/src/lib/Data/AniList/user.ts +++ b/src/lib/Data/AniList/user.ts @@ -71,7 +71,7 @@ export const user = async ( }) ).json(); - return response["data"]["User"] === null ? null : response["data"]["User"]; + return response.data.User === null ? null : response.data.User; }; export const dumpUser = async (username: string): Promise<FullUser> => @@ -94,4 +94,4 @@ export const dumpUser = async (username: string): Promise<FullUser> => }), }) ).json() - )["data"]["User"]; + ).data.User; diff --git a/src/lib/Data/AniList/wrapped.ts b/src/lib/Data/AniList/wrapped.ts index a7b4f829..130c57d3 100644 --- a/src/lib/Data/AniList/wrapped.ts +++ b/src/lib/Data/AniList/wrapped.ts @@ -89,15 +89,15 @@ const profileActivities = async ( let response = await get(page); const beginningOfYear = new Date(now).setMonth(0, 1) / 1000; - pages.push(response["data"]["Page"]["activities"]); + pages.push(response.data.Page.activities); - while (response["data"]["Page"]["pageInfo"]["hasNextPage"]) { + while (response.data.Page.pageInfo.hasNextPage) { if (disableLoopingActivityCounter) break; page += 1; response = await get(page); - pages.push(response["data"]["Page"]["activities"]); + pages.push(response.data.Page.activities); } return { @@ -133,8 +133,7 @@ export const wrapped = async ( }; if (anilistAuthorisation) { - headers["Authorization"] = - `${anilistAuthorisation.tokenType} ${anilistAuthorisation.accessToken}`; + headers.Authorization = `${anilistAuthorisation.tokenType} ${anilistAuthorisation.accessToken}`; } const wrappedResponse = await ( @@ -178,12 +177,12 @@ export const wrapped = async ( } return { - statistics: wrappedResponse["data"]["User"]["statistics"], + statistics: wrappedResponse.data.User.statistics, activities: { statusCount: statusCountActivities, messageCount: messageCountActivities, }, - avatar: wrappedResponse["data"]["User"]["avatar"], + avatar: wrappedResponse.data.User.avatar, }; }; @@ -222,7 +221,7 @@ export const tops = ( } = {}; media.forEach((m) => { - if (m.mediaListEntry && m.mediaListEntry.score) { + if (m.mediaListEntry?.score) { m.genres.forEach((genre) => { if (!genresMap[genre]) genresMap[genre] = { totalScore: 0, count: 0, minutesWatched: 0 }; diff --git a/src/lib/Data/hololive.ts b/src/lib/Data/hololive.ts index 576a30ed..f86e75de 100644 --- a/src/lib/Data/hololive.ts +++ b/src/lib/Data/hololive.ts @@ -66,11 +66,8 @@ function parseToLiveBlocks(html: string): LiveBlock[] { const dateDiv = row.querySelector(".holodule"); if (dateDiv) { date = dateDiv.textContent?.replace(/\s+/g, "") || ""; + // biome-ignore lint/style/noNonNullAssertion: holodule date cells always carry an M/D date; a missing match means the scrape format changed and should surface rather than be silently swallowed. date = date.match(/\d+\/\d+/)![0].replace("/", "-"); - - // const dateMatch = date.match(/\d+\/\d+/); - // - // date = dateMatch ? dateMatch[0].replace('/', '-') : ''; } const allThumbnail = row.querySelectorAll("a.thumbnail"); diff --git a/src/lib/Data/senpy.ts b/src/lib/Data/senpy.ts index 8c4f675f..1d9674aa 100644 --- a/src/lib/Data/senpy.ts +++ b/src/lib/Data/senpy.ts @@ -5,26 +5,26 @@ export interface SenpyRandomImage { image: string; } -class Senpy { - static async getImages(language: string): Promise<string[]> { +const Senpy = { + async getImages(language: string): Promise<string[]> { language = language.replace("#", "%23"); const response = await fetch(`${senpyAPI}/language/${language}`); return await response.json(); - } + }, - static async getLanguages(): Promise<string[]> { + async getLanguages(): Promise<string[]> { const response = await fetch(`${senpyAPI}/languages`); return await response.json(); - } + }, - static async getRandomImage(): Promise<SenpyRandomImage> { + async getRandomImage(): Promise<SenpyRandomImage> { const response = await fetch(`${senpyAPI}/random`); return await response.json(); - } -} + }, +}; export default Senpy; diff --git a/src/lib/Database/IDB/activities.ts b/src/lib/Database/IDB/activities.ts index 3aaf1d61..15d9ccbc 100644 --- a/src/lib/Database/IDB/activities.ts +++ b/src/lib/Database/IDB/activities.ts @@ -1,5 +1,5 @@ -import type { ActivitiesPage } from "$lib/Data/AniList/activity"; import Dexie, { type Table } from "dexie"; +import type { ActivitiesPage } from "$lib/Data/AniList/activity"; export interface ActivityPage { page: number; diff --git a/src/lib/Database/IDB/user.ts b/src/lib/Database/IDB/user.ts index 1158a8ff..23e274d4 100644 --- a/src/lib/Database/IDB/user.ts +++ b/src/lib/Database/IDB/user.ts @@ -1,5 +1,5 @@ -import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; import Dexie, { type Table } from "dexie"; +import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; export interface User { id: number; diff --git a/src/lib/Effect/authCookie.test.ts b/src/lib/Effect/authCookie.test.ts index bdcc4561..20c7724a 100644 --- a/src/lib/Effect/authCookie.test.ts +++ b/src/lib/Effect/authCookie.test.ts @@ -1,5 +1,5 @@ -import { describe, expect, it } from "vitest"; import { Result } from "effect"; +import { describe, expect, it } from "vitest"; import { decodeAuthCookieEither, decodeAuthCookieOrNull, diff --git a/src/lib/Effect/authCookie.ts b/src/lib/Effect/authCookie.ts index f407216e..75b73124 100644 --- a/src/lib/Effect/authCookie.ts +++ b/src/lib/Effect/authCookie.ts @@ -1,5 +1,5 @@ -import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; import { Effect, Result, Schema } from "effect"; +import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; const UserCookieSchema = Schema.Struct({ token_type: Schema.NonEmptyString, diff --git a/src/lib/Effect/json.test.ts b/src/lib/Effect/json.test.ts index c13824fe..6d5eb13f 100644 --- a/src/lib/Effect/json.test.ts +++ b/src/lib/Effect/json.test.ts @@ -1,10 +1,10 @@ +import { Schema } from "effect"; import { describe, expect, it } from "vitest"; import { parseJsonStringOrDefault, parseJsonStringOrThrow, parseJsonStringWithSchemaOrDefault, } from "$lib/Effect/json"; -import { Schema } from "effect"; describe("effect json parsing", () => { it("parses valid json strings", () => { diff --git a/src/lib/Effect/requestBody.test.ts b/src/lib/Effect/requestBody.test.ts index 8ca31036..72f2af39 100644 --- a/src/lib/Effect/requestBody.test.ts +++ b/src/lib/Effect/requestBody.test.ts @@ -1,5 +1,5 @@ -import { describe, expect, it } from "vitest"; import { Schema } from "effect"; +import { describe, expect, it } from "vitest"; import { decodeRequestJsonOrThrow, decodeUnknownOrThrow, diff --git a/src/lib/Error/AnimeRateLimited.svelte b/src/lib/Error/AnimeRateLimited.svelte index c8b822e0..e0932b44 100644 --- a/src/lib/Error/AnimeRateLimited.svelte +++ b/src/lib/Error/AnimeRateLimited.svelte @@ -1,6 +1,6 @@ <script> -import Spacer from "$lib/Layout/Spacer.svelte"; import Popup from "$lib/Layout/Popup.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import locale from "$stores/locale"; </script> diff --git a/src/lib/Error/LogInRestricted.svelte b/src/lib/Error/LogInRestricted.svelte index 0d4f00e3..ca3be93c 100644 --- a/src/lib/Error/LogInRestricted.svelte +++ b/src/lib/Error/LogInRestricted.svelte @@ -1,7 +1,7 @@ <script> -import Popup from "$lib/Layout/Popup.svelte"; -import { env } from "$env/dynamic/public"; import localforage from "localforage"; +import { env } from "$env/dynamic/public"; +import Popup from "$lib/Layout/Popup.svelte"; import locale from "$stores/locale"; </script> diff --git a/src/lib/Events/AniListBadges/EasterEvent2025/EasterEgg.svelte b/src/lib/Events/AniListBadges/EasterEvent2025/EasterEgg.svelte index bd77ab4c..1ec6a40a 100644 --- a/src/lib/Events/AniListBadges/EasterEvent2025/EasterEgg.svelte +++ b/src/lib/Events/AniListBadges/EasterEvent2025/EasterEgg.svelte @@ -1,9 +1,9 @@ <script lang="ts"> +import { Schema } from "effect"; import { onMount, tick } from "svelte"; import { browser } from "$app/environment"; -import Popup from "$lib/Layout/Popup.svelte"; import { parseJsonStringWithSchemaOrDefault } from "$lib/Effect/json"; -import { Schema } from "effect"; +import Popup from "$lib/Layout/Popup.svelte"; export let targetID = "easter-target"; export let id: number; diff --git a/src/lib/Hololive/Lives.svelte b/src/lib/Hololive/Lives.svelte index eb357104..76e1ea8d 100644 --- a/src/lib/Hololive/Lives.svelte +++ b/src/lib/Hololive/Lives.svelte @@ -2,9 +2,9 @@ import Spacer from "$lib/Layout/Spacer.svelte"; import Message from "$lib/Loading/Message.svelte"; import root from "$lib/Utility/root"; +import locale from "$stores/locale"; import type { Live, ParseResult } from "./hololive"; import Stream from "./Stream.svelte"; -import locale from "$stores/locale"; export let schedule: ParseResult; export let pinnedStreams: string[]; diff --git a/src/lib/Hololive/Stream.svelte b/src/lib/Hololive/Stream.svelte index 1d464d7a..213ddea0 100644 --- a/src/lib/Hololive/Stream.svelte +++ b/src/lib/Hololive/Stream.svelte @@ -1,10 +1,10 @@ <script lang="ts"> +import Icon from "@iconify/svelte"; +import type { LiveInfo } from "$lib/Data/hololive"; import ParallaxImage from "$lib/Image/ParallaxImage.svelte"; import root from "$lib/Utility/root"; import identity from "$stores/identity"; import locale from "$stores/locale"; -import Icon from "@iconify/svelte"; -import type { LiveInfo } from "$lib/Data/hololive"; export let live: LiveInfo; export let pinStream: (streamer: string) => void; diff --git a/src/lib/Home/HeadTitle.svelte b/src/lib/Home/HeadTitle.svelte index 73cf3e3d..228304b4 100644 --- a/src/lib/Home/HeadTitle.svelte +++ b/src/lib/Home/HeadTitle.svelte @@ -1,7 +1,7 @@ <script lang="ts"> +import type { Locale } from "$lib/Locale/layout"; import { siteUrl } from "$lib/Utility/appOrigin"; import locale from "$stores/locale"; -import type { Locale } from "$lib/Locale/layout"; type HeadTitleKey = keyof NonNullable<Locale["headTitle"]>; @@ -18,7 +18,7 @@ let { const resolved = $derived( routeKey ? ($locale().headTitle?.[routeKey] ?? routeKey) : route, ); -const title = $derived((resolved ? `${resolved} • ` : "") + "due.moe"); +const title = $derived(`${resolved ? `${resolved} • ` : ""}due.moe`); </script> <svelte:head> diff --git a/src/lib/Home/LastActivity.svelte b/src/lib/Home/LastActivity.svelte index 1b4952f8..6a8c3f6a 100644 --- a/src/lib/Home/LastActivity.svelte +++ b/src/lib/Home/LastActivity.svelte @@ -1,11 +1,11 @@ <script lang="ts"> -import userIdentity from "$stores/identity"; import { onMount } from "svelte"; +import { get } from "svelte/store"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; -import { lastActivityDate } from "../Data/AniList/lastActivity"; -import settings from "$stores/settings"; +import userIdentity from "$stores/identity"; import locale from "$stores/locale"; -import { get } from "svelte/store"; +import settings from "$stores/settings"; +import { lastActivityDate } from "../Data/AniList/lastActivity"; let { user }: { user: AniListAuthorisation } = $props(); let lastActivityWasToday = $state(true); diff --git a/src/lib/Home/Root.svelte b/src/lib/Home/Root.svelte index 32a86761..793a0151 100644 --- a/src/lib/Home/Root.svelte +++ b/src/lib/Home/Root.svelte @@ -1,6 +1,6 @@ <script lang="ts"> -import settings from "$stores/settings"; import { fly } from "svelte/transition"; +import settings from "$stores/settings"; export let data: { url: string }; export let way: number; diff --git a/src/lib/Landing.svelte b/src/lib/Landing.svelte index 4a6fa3d7..e2e3d206 100644 --- a/src/lib/Landing.svelte +++ b/src/lib/Landing.svelte @@ -1,8 +1,8 @@ <script lang="ts"> -import root from "./Utility/root"; -import { env } from "$env/dynamic/public"; import localforage from "localforage"; import { onMount } from "svelte"; +import { env } from "$env/dynamic/public"; +import root from "./Utility/root"; let sectionsLoaded = $state<boolean[]>([false, false, false]); let mangaContainer: HTMLElement; diff --git a/src/lib/LandingHero.svelte b/src/lib/LandingHero.svelte index ed019274..b3fb6817 100644 --- a/src/lib/LandingHero.svelte +++ b/src/lib/LandingHero.svelte @@ -1,8 +1,8 @@ <script lang="ts"> -import { env } from "$env/dynamic/public"; import localforage from "localforage"; -import lenis from "$stores/lenis"; +import { env } from "$env/dynamic/public"; import { track } from "$lib/analytics"; +import lenis from "$stores/lenis"; let heroSection = $state<HTMLElement>(); diff --git a/src/lib/Layout/NumberTicker.svelte b/src/lib/Layout/NumberTicker.svelte index fac0ea40..f965ee39 100644 --- a/src/lib/Layout/NumberTicker.svelte +++ b/src/lib/Layout/NumberTicker.svelte @@ -1,6 +1,6 @@ <script> -import { tweened } from "svelte/motion"; import { cubicOut } from "svelte/easing"; +import { tweened } from "svelte/motion"; export let start = 0; export let end = 100; diff --git a/src/lib/Layout/Popup.svelte b/src/lib/Layout/Popup.svelte index 103e4e26..148b4a84 100644 --- a/src/lib/Layout/Popup.svelte +++ b/src/lib/Layout/Popup.svelte @@ -1,6 +1,6 @@ <script lang="ts"> -import { browser } from "$app/environment"; import { onMount } from "svelte"; +import { browser } from "$app/environment"; export let onLeave = () => { return; diff --git a/src/lib/Layout/TextTransition.svelte b/src/lib/Layout/TextTransition.svelte index a31b3ae3..f5b777c1 100644 --- a/src/lib/Layout/TextTransition.svelte +++ b/src/lib/Layout/TextTransition.svelte @@ -1,6 +1,6 @@ <script> -import { tweened } from "svelte/motion"; import { cubicOut } from "svelte/easing"; +import { tweened } from "svelte/motion"; export let text = ""; export let opacityTransitionDuration = 50; diff --git a/src/lib/Lazy.svelte b/src/lib/Lazy.svelte index 489793cc..801987fc 100644 --- a/src/lib/Lazy.svelte +++ b/src/lib/Lazy.svelte @@ -1,5 +1,5 @@ <script lang="ts"> -import { onMount, onDestroy } from "svelte"; +import { onDestroy, onMount } from "svelte"; export let top = 0; export let bottom = 0; diff --git a/src/lib/List/Anime/AnimeListTemplate.svelte b/src/lib/List/Anime/AnimeListTemplate.svelte index 538889b4..ae7ee1f1 100644 --- a/src/lib/List/Anime/AnimeListTemplate.svelte +++ b/src/lib/List/Anime/AnimeListTemplate.svelte @@ -1,18 +1,18 @@ <script lang="ts"> +import localforage from "localforage"; +import { onMount } from "svelte"; +import { browser } from "$app/environment"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; import type { Media } from "$lib/Data/AniList/media"; import RateLimitedError from "$lib/Error/RateLimited.svelte"; -import settings from "$stores/settings"; -import CleanAnimeList from "./CleanAnimeList.svelte"; -import ListTitle from "../ListTitle.svelte"; import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; -import PlaceholderList from "./PlaceholderList.svelte"; -import { browser } from "$app/environment"; -import { onMount } from "svelte"; -import subsPlease from "$stores/subsPlease"; import identity from "$stores/identity"; -import localforage from "localforage"; +import settings from "$stores/settings"; +import subsPlease from "$stores/subsPlease"; +import ListTitle from "../ListTitle.svelte"; import type { Title } from "../mediaTitle"; +import CleanAnimeList from "./CleanAnimeList.svelte"; +import PlaceholderList from "./PlaceholderList.svelte"; export let endTime: number; export let cleanMedia: ( @@ -51,7 +51,7 @@ onMount(async () => { }AnimeListLength`, )) as string | null; - if (lastStoredList) lastListSize = parseInt(lastStoredList); + if (lastStoredList) lastListSize = parseInt(lastStoredList, 10); } }); </script> diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte index c8bf1b7d..0bc88489 100644 --- a/src/lib/List/Anime/CleanAnimeList.svelte +++ b/src/lib/List/Anime/CleanAnimeList.svelte @@ -1,27 +1,26 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import locale from "$stores/locale"; - -import settings from "$stores/settings"; -import type { Media } from "$lib/Data/AniList/media"; -import { cleanCache, incrementMediaProgress } from "$lib/Media/Anime/cache"; -import { totalEpisodes } from "$lib/Media/Anime/episodes"; -import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; -import ListTitle from "../ListTitle.svelte"; import { onDestroy, onMount } from "svelte"; +import { browser } from "$app/environment"; +import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; +import type { Media } from "$lib/Data/AniList/media"; +import Spacer from "$lib/Layout/Spacer.svelte"; import AiringTime from "$lib/Media/Anime/Airing/AiringTime.svelte"; import { hasDueEpisodes } from "$lib/Media/Anime/Airing/classify"; -import { browser } from "$app/environment"; +import { cleanCache, incrementMediaProgress } from "$lib/Media/Anime/cache"; +import { totalEpisodes } from "$lib/Media/Anime/episodes"; import identity from "$stores/identity"; +import locale from "$stores/locale"; +import settings from "$stores/settings"; +import ListTitle from "../ListTitle.svelte"; import "../covers.css"; -import revalidateAnime from "$stores/revalidateAnime"; +import localforage from "localforage"; +import { track } from "$lib/analytics"; import CleanGrid from "$lib/List/CleanGrid.svelte"; -import CleanList from "../CleanList.svelte"; +import revalidateAnime from "$stores/revalidateAnime"; import stateBin from "$stores/stateBin"; -import localforage from "localforage"; +import CleanList from "../CleanList.svelte"; import MediaRoulette from "../MediaRoulette.svelte"; import type { Title } from "../mediaTitle"; -import { track } from "$lib/analytics"; export let media: Media[]; export let title: Title; diff --git a/src/lib/List/Anime/CompletedAnimeList.svelte b/src/lib/List/Anime/CompletedAnimeList.svelte index 9c58a311..ba5df51b 100644 --- a/src/lib/List/Anime/CompletedAnimeList.svelte +++ b/src/lib/List/Anime/CompletedAnimeList.svelte @@ -1,15 +1,15 @@ <script lang="ts"> -import { mediaListCollection, Type, type Media } from "$lib/Data/AniList/media"; +import { onMount } from "svelte"; import { hydrateMediaListCache } from "$lib/Data/AniList/cacheHydration"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; -import { onMount } from "svelte"; +import { type Media, mediaListCollection, Type } from "$lib/Data/AniList/media"; +import { addNotification } from "$lib/Notification/store"; import anime from "$stores/anime"; +import identity from "$stores/identity"; import lastPruneTimes from "$stores/lastPruneTimes"; +import locale from "$stores/locale"; import settings from "$stores/settings"; import AnimeList from "./AnimeListTemplate.svelte"; -import { addNotification } from "$lib/Notification/store"; -import locale from "$stores/locale"; -import identity from "$stores/identity"; export let user: AniListAuthorisation = { accessToken: "", diff --git a/src/lib/List/Anime/DueAnimeList.svelte b/src/lib/List/Anime/DueAnimeList.svelte index 29af4a88..8ff0539d 100644 --- a/src/lib/List/Anime/DueAnimeList.svelte +++ b/src/lib/List/Anime/DueAnimeList.svelte @@ -1,22 +1,22 @@ <script lang="ts"> -import { mediaListCollection, Type, type Media } from "$lib/Data/AniList/media"; +import { onDestroy, onMount } from "svelte"; import { hydrateMediaListCache } from "$lib/Data/AniList/cacheHydration"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; -import { onDestroy, onMount } from "svelte"; -import anime from "$stores/anime"; -import settings from "$stores/settings"; -import lastPruneTimes from "$stores/lastPruneTimes"; -import AnimeList from "./AnimeListTemplate.svelte"; -import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; -import { injectAiringTime } from "$lib/Media/Anime/Airing/Subtitled/match"; +import { type Media, mediaListCollection, Type } from "$lib/Data/AniList/media"; import { hasDueEpisodes, hasNoAiredEpisodes, } from "$lib/Media/Anime/Airing/classify"; +import { injectAiringTime } from "$lib/Media/Anime/Airing/Subtitled/match"; +import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; import { addNotification } from "$lib/Notification/store"; -import locale from "$stores/locale"; +import anime from "$stores/anime"; import identity from "$stores/identity"; +import lastPruneTimes from "$stores/lastPruneTimes"; +import locale from "$stores/locale"; import revalidateAnime from "$stores/revalidateAnime"; +import settings from "$stores/settings"; +import AnimeList from "./AnimeListTemplate.svelte"; export let user: AniListAuthorisation; let animeLists: Promise<Media[]>; diff --git a/src/lib/List/Anime/DueIndexColumn.svelte b/src/lib/List/Anime/DueIndexColumn.svelte index 3fadc8c2..a1bc3f50 100644 --- a/src/lib/List/Anime/DueIndexColumn.svelte +++ b/src/lib/List/Anime/DueIndexColumn.svelte @@ -1,11 +1,11 @@ <script lang="ts"> +import { onMount } from "svelte"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; +import AnimeList from "$lib/List/Anime/DueAnimeList.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; import locale from "$stores/locale"; -import ListTitle from "../ListTitle.svelte"; -import AnimeList from "$lib/List/Anime/DueAnimeList.svelte"; -import { onMount } from "svelte"; import stateBin, { hydrateStateBin } from "$stores/stateBin"; +import ListTitle from "../ListTitle.svelte"; export let userIdentity: { id: number }; export let user: AniListAuthorisation; diff --git a/src/lib/List/Anime/UpcomingAnimeList.svelte b/src/lib/List/Anime/UpcomingAnimeList.svelte index ed47f22f..b88937e9 100644 --- a/src/lib/List/Anime/UpcomingAnimeList.svelte +++ b/src/lib/List/Anime/UpcomingAnimeList.svelte @@ -1,23 +1,23 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import { mediaListCollection, Type, type Media } from "$lib/Data/AniList/media"; +import { onMount } from "svelte"; import { hydrateMediaListCache } from "$lib/Data/AniList/cacheHydration"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; -import { onMount } from "svelte"; -import anime from "$stores/anime"; -import lastPruneTimes from "$stores/lastPruneTimes"; -import AnimeList from "./AnimeListTemplate.svelte"; -import settings from "$stores/settings"; -import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; -import { addNotification } from "$lib/Notification/store"; -import locale from "$stores/locale"; -import identity from "$stores/identity"; -import { injectAiringTime } from "$lib/Media/Anime/Airing/Subtitled/match"; +import { type Media, mediaListCollection, Type } from "$lib/Data/AniList/media"; +import Spacer from "$lib/Layout/Spacer.svelte"; import { hasDueEpisodes, hasNoAiredEpisodes, } from "$lib/Media/Anime/Airing/classify"; +import { injectAiringTime } from "$lib/Media/Anime/Airing/Subtitled/match"; +import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; +import { addNotification } from "$lib/Notification/store"; +import anime from "$stores/anime"; +import identity from "$stores/identity"; +import lastPruneTimes from "$stores/lastPruneTimes"; +import locale from "$stores/locale"; import revalidateAnime from "$stores/revalidateAnime"; +import settings from "$stores/settings"; +import AnimeList from "./AnimeListTemplate.svelte"; export let user: AniListAuthorisation; let animeLists: Promise<Media[]>; diff --git a/src/lib/List/CleanGrid.svelte b/src/lib/List/CleanGrid.svelte index 384d4940..011a3e5d 100644 --- a/src/lib/List/CleanGrid.svelte +++ b/src/lib/List/CleanGrid.svelte @@ -16,7 +16,7 @@ export let notYetReleased = false; export let reverseSort = false; export let limit: number | undefined = undefined; -let uniqueID = new Date().getTime(); +let uniqueID = Date.now(); $: sortedMedia = reverseSort ? [...media].reverse() : media; $: processedMedia = diff --git a/src/lib/List/CleanList.svelte b/src/lib/List/CleanList.svelte index bb6c15f3..adc4ca19 100644 --- a/src/lib/List/CleanList.svelte +++ b/src/lib/List/CleanList.svelte @@ -1,6 +1,6 @@ <script lang="ts"> -import MediaTitleDisplay from "$lib/List/MediaTitleDisplay.svelte"; import type { Media } from "$lib/Data/AniList/media"; +import MediaTitleDisplay from "$lib/List/MediaTitleDisplay.svelte"; import { outboundLink } from "$lib/Media/links"; import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte"; import settings from "$stores/settings"; diff --git a/src/lib/List/ListTitle.svelte b/src/lib/List/ListTitle.svelte index e9603066..f24476fe 100644 --- a/src/lib/List/ListTitle.svelte +++ b/src/lib/List/ListTitle.svelte @@ -1,7 +1,7 @@ <script lang="ts"> +import NumberTicker from "$lib/Layout/NumberTicker.svelte"; import tooltip from "$lib/Tooltip/tooltip"; import settings from "$stores/settings"; -import NumberTicker from "$lib/Layout/NumberTicker.svelte"; import type { Title } from "./mediaTitle"; export let time: number | undefined = undefined; diff --git a/src/lib/List/Manga/MangaListTemplate.svelte b/src/lib/List/Manga/MangaListTemplate.svelte index 1bb53be1..d4e7dec9 100644 --- a/src/lib/List/Manga/MangaListTemplate.svelte +++ b/src/lib/List/Manga/MangaListTemplate.svelte @@ -1,6 +1,7 @@ <script lang="ts"> import localforage from "localforage"; import { onDestroy, onMount } from "svelte"; +import { get } from "svelte/store"; import { browser } from "$app/environment"; import { env } from "$env/dynamic/public"; import { hydrateMediaListCache } from "$lib/Data/AniList/cacheHydration"; @@ -18,7 +19,6 @@ import privilegedUser from "$lib/Utility/privilegedUser"; import identity from "$stores/identity"; import lastPruneTimes from "$stores/lastPruneTimes"; import locale from "$stores/locale"; -import { get } from "svelte/store"; import manga from "$stores/manga"; import revalidateManga from "$stores/revalidateManga"; import settings from "$stores/settings"; @@ -334,7 +334,7 @@ const updateMedia = async ( const foundEntry = media.find((m) => m.id === id); - if (foundEntry && foundEntry.mediaListEntry) + if (foundEntry?.mediaListEntry) foundEntry.mediaListEntry.progress = (progress || 0) + 1; mangaLists = mediaListCollection( diff --git a/src/lib/List/MediaRoulette.svelte b/src/lib/List/MediaRoulette.svelte index 64c585df..6fb11a8e 100644 --- a/src/lib/List/MediaRoulette.svelte +++ b/src/lib/List/MediaRoulette.svelte @@ -1,11 +1,11 @@ <script lang="ts"> +import { track } from "$lib/analytics"; import type { Media } from "$lib/Data/AniList/media"; import ParallaxImage from "$lib/Image/ParallaxImage.svelte"; import { outboundLink } from "$lib/Media/links"; -import settings from "$stores/settings"; import locale from "$stores/locale"; +import settings from "$stores/settings"; import { mediaTitle } from "./mediaTitle"; -import { track } from "$lib/analytics"; interface Props { media: Media[]; diff --git a/src/lib/List/MediaTitleDisplay.svelte b/src/lib/List/MediaTitleDisplay.svelte index e7c26fb0..83073b04 100644 --- a/src/lib/List/MediaTitleDisplay.svelte +++ b/src/lib/List/MediaTitleDisplay.svelte @@ -1,10 +1,10 @@ <script lang="ts"> +import LZString from "lz-string"; +import * as wanakana from "wanakana"; import type { MediaTitle } from "$lib/Data/AniList/media"; import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte"; import { abbreviate as abbreviated } from "$lib/Utility/string"; import settings from "$stores/settings"; -import LZString from "lz-string"; -import * as wanakana from "wanakana"; export let title: MediaTitle; export let abbreviate = false; diff --git a/src/lib/List/mediaTitle.ts b/src/lib/List/mediaTitle.ts index 0e1d65cf..1e469f41 100644 --- a/src/lib/List/mediaTitle.ts +++ b/src/lib/List/mediaTitle.ts @@ -1,6 +1,6 @@ +import { get } from "svelte/store"; import type { Media } from "$lib/Data/AniList/media"; import settings from "$stores/settings"; -import { get } from "svelte/store"; export interface Title { title: string; diff --git a/src/lib/Loading/Message.svelte b/src/lib/Loading/Message.svelte index 4aedbe26..81772232 100644 --- a/src/lib/Loading/Message.svelte +++ b/src/lib/Loading/Message.svelte @@ -1,9 +1,9 @@ <script lang="ts"> -import Ellipsis from "./Ellipsis.svelte"; -import Ripple from "./Ripple.svelte"; -import Grid from "./Grid.svelte"; import Popup from "$lib/Layout/Popup.svelte"; import locale from "$stores/locale"; +import Ellipsis from "./Ellipsis.svelte"; +import Grid from "./Grid.svelte"; +import Ripple from "./Ripple.svelte"; export let message: string | undefined = undefined; export let loader: "ellipsis" | "ripple" | "grid" = "ellipsis"; diff --git a/src/lib/Locale/english.ts b/src/lib/Locale/english.ts index 6e46f132..16eff123 100644 --- a/src/lib/Locale/english.ts +++ b/src/lib/Locale/english.ts @@ -1,5 +1,5 @@ -import settings from "$stores/settings"; import { get } from "svelte/store"; +import settings from "$stores/settings"; import type { Locale } from "./layout"; const English: Locale = { diff --git a/src/lib/Locale/japanese.ts b/src/lib/Locale/japanese.ts index 2e683926..9dd82ff2 100644 --- a/src/lib/Locale/japanese.ts +++ b/src/lib/Locale/japanese.ts @@ -1,6 +1,6 @@ import { get } from "svelte/store"; -import type { Locale } from "./layout"; import settings from "$stores/settings"; +import type { Locale } from "./layout"; const Japanese: Locale = { navigation: { diff --git a/src/lib/Locale/layout.ts b/src/lib/Locale/layout.ts index f5f2fbf6..de4b7f97 100644 --- a/src/lib/Locale/layout.ts +++ b/src/lib/Locale/layout.ts @@ -97,8 +97,8 @@ export interface Locale { limitPanelAreaToScreenHeight: LocaleValue; interfaceLanguage: LocaleValue; aniListNotificationsHint?: LocaleValue; - aniListNotificationsHint1?: LocaleValue; - aniListNotificationsHint2?: LocaleValue; + aniListNotificationsHint1?: LocaleValue; + aniListNotificationsHint2?: LocaleValue; }; }; dataSaver: LocaleValue; diff --git a/src/lib/Media/Anime/Airing/AiringTime.svelte b/src/lib/Media/Anime/Airing/AiringTime.svelte index 6553c769..d824956a 100644 --- a/src/lib/Media/Anime/Airing/AiringTime.svelte +++ b/src/lib/Media/Anime/Airing/AiringTime.svelte @@ -1,10 +1,10 @@ <script lang="ts"> import type { Media } from "$lib/Data/AniList/media"; -import settings from "$stores/settings"; import type { MediaPrequel } from "$lib/Data/AniList/prequels"; import tooltip from "$lib/Tooltip/tooltip"; -import locale from "$stores/locale"; import airingNow from "$stores/airingNow"; +import locale from "$stores/locale"; +import settings from "$stores/settings"; import { formatCountdown } from "./format"; export let originalAnime: Media; diff --git a/src/lib/Media/Anime/Airing/Subtitled/match.ts b/src/lib/Media/Anime/Airing/Subtitled/match.ts index b72be71d..a89ac8ac 100644 --- a/src/lib/Media/Anime/Airing/Subtitled/match.ts +++ b/src/lib/Media/Anime/Airing/Subtitled/match.ts @@ -1,9 +1,9 @@ -import { get } from "svelte/store"; -import type { Media } from "../../../../Data/AniList/media"; -import settings from "$stores/settings"; -import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; import stringSimilarity from "string-similarity"; +import { get } from "svelte/store"; import excludeMatch from "$lib/Data/Static/matchExclude.json"; +import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; +import settings from "$stores/settings"; +import type { Media } from "../../../../Data/AniList/media"; import { season } from "../../season"; export interface Time { diff --git a/src/lib/Media/Anime/Airing/classify.test.ts b/src/lib/Media/Anime/Airing/classify.test.ts index 2b40d7df..161787ba 100644 --- a/src/lib/Media/Anime/Airing/classify.test.ts +++ b/src/lib/Media/Anime/Airing/classify.test.ts @@ -1,16 +1,16 @@ import { describe, expect, it } from "vitest"; -import settings from "$stores/settings"; import type { Media } from "$lib/Data/AniList/media"; -import { season } from "$lib/Media/Anime/season"; import { - hasDueEpisodes, getAnimeEpisodeState, + hasDueEpisodes, } from "$lib/Media/Anime/Airing/classify"; import { clearInjectAiringTimeCache, injectAiringTime, } from "$lib/Media/Anime/Airing/Subtitled/match"; import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; +import { season } from "$lib/Media/Anime/season"; +import settings from "$stores/settings"; const toScheduleTime = (epochSeconds: number) => { const date = new Date(epochSeconds * 1000); diff --git a/src/lib/Media/Anime/Airing/format.ts b/src/lib/Media/Anime/Airing/format.ts index a7819999..6f678f4a 100644 --- a/src/lib/Media/Anime/Airing/format.ts +++ b/src/lib/Media/Anime/Airing/format.ts @@ -1,5 +1,5 @@ -import settings from "$stores/settings"; import { get } from "svelte/store"; +import settings from "$stores/settings"; type Options = { forceDays?: boolean; diff --git a/src/lib/Media/Anime/Airing/time.ts b/src/lib/Media/Anime/Airing/time.ts index 97f8818a..e2111e86 100644 --- a/src/lib/Media/Anime/Airing/time.ts +++ b/src/lib/Media/Anime/Airing/time.ts @@ -1,11 +1,11 @@ +import { get } from "svelte/store"; import type { Media } from "$lib/Data/AniList/media"; import type { MediaPrequel } from "$lib/Data/AniList/prequels"; import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; import settings from "$stores/settings"; +import { totalEpisodes } from "../episodes"; import { formatCountdown } from "./format"; import { injectAiringTime } from "./Subtitled/match"; -import { totalEpisodes } from "../episodes"; -import { get } from "svelte/store"; export const airingTime = ( originalAnime: Media, diff --git a/src/lib/Media/Anime/cache.ts b/src/lib/Media/Anime/cache.ts index e1a711ca..482078e0 100644 --- a/src/lib/Media/Anime/cache.ts +++ b/src/lib/Media/Anime/cache.ts @@ -1,12 +1,12 @@ import { get } from "svelte/store"; import anime from "$stores/anime"; -import { mediaListCollection, Type } from "../../Data/AniList/media"; import lastPruneTimes from "$stores/lastPruneTimes"; import settings from "$stores/settings"; import type { AniListAuthorisation, UserIdentity, } from "../../Data/AniList/identity"; +import { mediaListCollection, Type } from "../../Data/AniList/media"; export const cleanCache = ( user: AniListAuthorisation, diff --git a/src/lib/Media/Cover/hoverCover.ts b/src/lib/Media/Cover/hoverCover.ts index 933f35c3..9c88bcb1 100644 --- a/src/lib/Media/Cover/hoverCover.ts +++ b/src/lib/Media/Cover/hoverCover.ts @@ -1,7 +1,7 @@ -import type { Media } from "$lib/Data/AniList/media"; import { get } from "svelte/store"; -import type { SubsPleaseEpisode } from "../Anime/Airing/Subtitled/subsPlease"; +import type { Media } from "$lib/Data/AniList/media"; import settings from "$stores/settings"; +import type { SubsPleaseEpisode } from "../Anime/Airing/Subtitled/subsPlease"; export interface HoverCoverResponse { // OnMouseEnterLeave diff --git a/src/lib/Media/Manga/cache.ts b/src/lib/Media/Manga/cache.ts index 68d52299..533f383c 100644 --- a/src/lib/Media/Manga/cache.ts +++ b/src/lib/Media/Manga/cache.ts @@ -1,5 +1,5 @@ -import { database } from "../../Database/IDB/chapters"; import manga from "$stores/manga"; +import { database } from "../../Database/IDB/chapters"; export const pruneAllManga = async () => { const all = await database.chapters.toArray(); diff --git a/src/lib/Media/invalidate.ts b/src/lib/Media/invalidate.ts index 2db4b9af..fb9b100a 100644 --- a/src/lib/Media/invalidate.ts +++ b/src/lib/Media/invalidate.ts @@ -1,10 +1,10 @@ +import { get } from "svelte/store"; import { browser } from "$app/environment"; -import { addNotification } from "$lib/Notification/store"; import { options } from "$lib/Notification/options"; +import { addNotification } from "$lib/Notification/store"; +import locale from "$stores/locale"; import revalidateAnime from "$stores/revalidateAnime"; import revalidateManga from "$stores/revalidateManga"; -import locale from "$stores/locale"; -import { get } from "svelte/store"; export const invalidateListCaches = () => { if (!browser) return; diff --git a/src/lib/Notification/Notification.svelte b/src/lib/Notification/Notification.svelte index 3c466b90..18eadeeb 100644 --- a/src/lib/Notification/Notification.svelte +++ b/src/lib/Notification/Notification.svelte @@ -1,6 +1,6 @@ <script lang="ts"> -import settings from "$stores/settings"; import { onMount } from "svelte"; +import settings from "$stores/settings"; import type { Notification } from "./store"; export let notification: Notification; diff --git a/src/lib/Notification/NotificationsProvider.svelte b/src/lib/Notification/NotificationsProvider.svelte index c346aceb..b734a7c6 100644 --- a/src/lib/Notification/NotificationsProvider.svelte +++ b/src/lib/Notification/NotificationsProvider.svelte @@ -1,6 +1,6 @@ <script lang="ts"> -import { notifications } from "./store"; import EventNotification from "./Notification.svelte"; +import { notifications } from "./store"; export let zIndex = 5000; diff --git a/src/lib/Reader/Chapters/Rawkuma.svelte b/src/lib/Reader/Chapters/Rawkuma.svelte index ee2ab116..a4957c1f 100644 --- a/src/lib/Reader/Chapters/Rawkuma.svelte +++ b/src/lib/Reader/Chapters/Rawkuma.svelte @@ -1,6 +1,6 @@ <script lang="ts"> -import { getChaptersFromText } from "$lib/Data/Manga/raw"; import { onMount } from "svelte"; +import { getChaptersFromText } from "$lib/Data/Manga/raw"; export let data: string; diff --git a/src/lib/Schedule/Crunchyroll.svelte b/src/lib/Schedule/Crunchyroll.svelte index a3adeb60..ba04b250 100644 --- a/src/lib/Schedule/Crunchyroll.svelte +++ b/src/lib/Schedule/Crunchyroll.svelte @@ -1,6 +1,6 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; import crunchyroll from "$lib/Data/Static/crunchyroll.json"; +import Spacer from "$lib/Layout/Spacer.svelte"; import locale from "$stores/locale"; import "./container.css"; @@ -41,11 +41,11 @@ const ordinalSuffix = (i: number) => { const j = i % 10; const k = i % 100; - if (j === 1 && k !== 11) return i + "st"; - if (j === 2 && k !== 12) return i + "nd"; - if (j === 3 && k !== 13) return i + "rd"; + if (j === 1 && k !== 11) return `${i}st`; + if (j === 2 && k !== 12) return `${i}nd`; + if (j === 3 && k !== 13) return `${i}rd`; - return i + "th"; + return `${i}th`; }; </script> diff --git a/src/lib/Schedule/Days.svelte b/src/lib/Schedule/Days.svelte index 9ecf76b9..5a57905a 100644 --- a/src/lib/Schedule/Days.svelte +++ b/src/lib/Schedule/Days.svelte @@ -1,8 +1,8 @@ <script lang="ts"> import { browser } from "$app/environment"; -import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; -import { mediaListCollection, Type, type Media } from "$lib/Data/AniList/media"; import { hydrateMediaListCache } from "$lib/Data/AniList/cacheHydration"; +import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; +import { type Media, mediaListCollection, Type } from "$lib/Data/AniList/media"; import { findClosestMedia } from "$lib/Media/Anime/Airing/Subtitled/match"; import type { SubsPlease, @@ -13,15 +13,15 @@ import { parseOrDefault } from "$lib/Utility/parameters"; import settings from "$stores/settings"; import CoverBypass from "./CoverBypass.svelte"; import "$lib/List/covers.css"; +import { onMount } from "svelte"; +import RateLimitedError from "$lib/Error/RateLimited.svelte"; import ParallaxImage from "$lib/Image/ParallaxImage.svelte"; +import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte"; -import { onMount } from "svelte"; -import identity from "$stores/identity"; import anime from "$stores/anime"; +import identity from "$stores/identity"; import lastPruneTimes from "$stores/lastPruneTimes"; -import Message from "$lib/Loading/Message.svelte"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; -import RateLimitedError from "$lib/Error/RateLimited.svelte"; export let subsPlease: SubsPlease; export let scheduledMedia: Partial<Media[]>; @@ -109,8 +109,7 @@ const episode = (media: Media, weekday: string) => { if ( media.nextAiringEpisode?.airingAt && weekday === new Date().toLocaleString("en-us", { weekday: "long" }) && - new Date(media.nextAiringEpisode.airingAt * 1000).getTime() - - new Date().getTime() > + new Date(media.nextAiringEpisode.airingAt * 1000).getTime() - Date.now() > 24 * 60 * 60 * 1000 ) return media.nextAiringEpisode?.episode - 1; diff --git a/src/lib/Settings/Categories/Cache.svelte b/src/lib/Settings/Categories/Cache.svelte index 0df59db2..a5f2c2a0 100644 --- a/src/lib/Settings/Categories/Cache.svelte +++ b/src/lib/Settings/Categories/Cache.svelte @@ -1,7 +1,7 @@ <script> import Spacer from "$lib/Layout/Spacer.svelte"; -import settings from "$stores/settings"; import locale from "$stores/locale"; +import settings from "$stores/settings"; </script> <small class="opaque"> diff --git a/src/lib/Settings/Categories/Debug.svelte b/src/lib/Settings/Categories/Debug.svelte index a18eea9d..55a89939 100644 --- a/src/lib/Settings/Categories/Debug.svelte +++ b/src/lib/Settings/Categories/Debug.svelte @@ -1,14 +1,14 @@ <script lang="ts"> +import localforage from "localforage"; +import { get } from "svelte/store"; import Spacer from "$lib/Layout/Spacer.svelte"; -import settings from "$stores/settings"; -import { addNotification } from "$lib/Notification/store"; -import SettingHint from "../SettingHint.svelte"; +import { invalidateListCaches } from "$lib/Media/invalidate"; import { options } from "$lib/Notification/options"; +import { addNotification } from "$lib/Notification/store"; import locale from "$stores/locale"; +import settings from "$stores/settings"; import SettingCheckboxToggle from "../SettingCheckboxToggle.svelte"; -import localforage from "localforage"; -import { invalidateListCaches } from "$lib/Media/invalidate"; -import { get } from "svelte/store"; +import SettingHint from "../SettingHint.svelte"; </script> <SettingCheckboxToggle setting="debugDummyLists" text={$locale().debug.dummyLists} /> diff --git a/src/lib/Settings/Categories/Display.svelte b/src/lib/Settings/Categories/Display.svelte index b2acd270..f560c65c 100644 --- a/src/lib/Settings/Categories/Display.svelte +++ b/src/lib/Settings/Categories/Display.svelte @@ -1,13 +1,13 @@ <script lang="ts"> +import { track } from "$lib/analytics"; import Spacer from "$lib/Layout/Spacer.svelte"; +import { getFingerprint } from "$lib/Utility/fingerprint"; +import { requestNotifications } from "$lib/Utility/notifications"; +import root from "$lib/Utility/root"; +import locale from "$stores/locale"; import settings from "$stores/settings"; import SettingCheckboxToggle from "../SettingCheckboxToggle.svelte"; import SettingHint from "../SettingHint.svelte"; -import root from "$lib/Utility/root"; -import locale from "$stores/locale"; -import { requestNotifications } from "$lib/Utility/notifications"; -import { getFingerprint } from "$lib/Utility/fingerprint"; -import { track } from "$lib/analytics"; const trackSetting = (key: string) => (event: Event) => track("Change Setting", { @@ -70,9 +70,7 @@ const onHelperChange = () => { } break; case "none": { - { - mai.style.display = "none"; - } + mai.style.display = "none"; break; } } diff --git a/src/lib/Settings/Categories/RSSFeeds.svelte b/src/lib/Settings/Categories/RSSFeeds.svelte index eaf21345..49a6eb5a 100644 --- a/src/lib/Settings/Categories/RSSFeeds.svelte +++ b/src/lib/Settings/Categories/RSSFeeds.svelte @@ -1,11 +1,11 @@ <script lang="ts"> +import { get } from "svelte/store"; import { options } from "$lib/Notification/options"; import { addNotification } from "$lib/Notification/store"; +import tooltip from "$lib/Tooltip/tooltip"; import { appOrigin } from "$lib/Utility/appOrigin"; import locale from "$stores/locale"; import SettingHint from "../SettingHint.svelte"; -import tooltip from "$lib/Tooltip/tooltip"; -import { get } from "svelte/store"; export let user: { accessToken: string; refreshToken: string }; </script> diff --git a/src/lib/Settings/Categories/SettingSync.svelte b/src/lib/Settings/Categories/SettingSync.svelte index e45fdfb9..60bfdc7f 100644 --- a/src/lib/Settings/Categories/SettingSync.svelte +++ b/src/lib/Settings/Categories/SettingSync.svelte @@ -1,14 +1,14 @@ <script lang="ts"> +import { get } from "svelte/store"; import Spacer from "$lib/Layout/Spacer.svelte"; import { options } from "$lib/Notification/options"; +import { addNotification } from "$lib/Notification/store"; import root from "$lib/Utility/root"; import identity from "$stores/identity"; -import settings from "$stores/settings"; -import { addNotification } from "$lib/Notification/store"; -import SettingHint from "../SettingHint.svelte"; import locale from "$stores/locale"; +import settings from "$stores/settings"; import settingsSyncTimes from "$stores/settingsSyncTimes"; -import { get } from "svelte/store"; +import SettingHint from "../SettingHint.svelte"; </script> {#if !$settings.settingsSync} diff --git a/src/lib/Settings/SettingCheckboxToggle.svelte b/src/lib/Settings/SettingCheckboxToggle.svelte index e45077f7..6f28a194 100644 --- a/src/lib/Settings/SettingCheckboxToggle.svelte +++ b/src/lib/Settings/SettingCheckboxToggle.svelte @@ -1,8 +1,8 @@ <script lang="ts"> +import { track } from "$lib/analytics"; import Spacer from "$lib/Layout/Spacer.svelte"; import tooltip from "$lib/Tooltip/tooltip"; import settings, { type Settings } from "$stores/settings"; -import { track } from "$lib/analytics"; type BooleanSettingsKeys<T> = { [K in keyof T]: T[K] extends boolean ? K : never; diff --git a/src/lib/Settings/SettingToggle.svelte b/src/lib/Settings/SettingToggle.svelte index a84a7a72..8df2dcaa 100644 --- a/src/lib/Settings/SettingToggle.svelte +++ b/src/lib/Settings/SettingToggle.svelte @@ -1,7 +1,7 @@ <script lang="ts"> +import { track } from "$lib/analytics"; import Spacer from "$lib/Layout/Spacer.svelte"; import settings, { type Settings } from "$stores/settings"; -import { track } from "$lib/analytics"; export let setting: keyof Settings; export let on = ""; diff --git a/src/lib/Tools/ActivityHistory/Grid.svelte b/src/lib/Tools/ActivityHistory/Grid.svelte index afa9cd8f..630c5d3b 100644 --- a/src/lib/Tools/ActivityHistory/Grid.svelte +++ b/src/lib/Tools/ActivityHistory/Grid.svelte @@ -1,17 +1,17 @@ <script lang="ts"> +import { onMount } from "svelte"; import { - fillMissingDays, type ActivityHistoryEntry, activityHistory, + fillMissingDays, } from "$lib/Data/AniList/activity"; -import { onMount } from "svelte"; -import userIdentity from "$stores/identity"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; -import { clearAllParameters } from "../../Utility/parameters"; +import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; import tooltip from "$lib/Tooltip/tooltip"; -import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; +import userIdentity from "$stores/identity"; import locale from "$stores/locale"; +import { clearAllParameters } from "../../Utility/parameters"; export let user: AniListAuthorisation; export let activityData: ActivityHistoryEntry[] | null = null; diff --git a/src/lib/Tools/ActivityHistory/Tool.svelte b/src/lib/Tools/ActivityHistory/Tool.svelte index df1613b9..5aec66ad 100644 --- a/src/lib/Tools/ActivityHistory/Tool.svelte +++ b/src/lib/Tools/ActivityHistory/Tool.svelte @@ -1,20 +1,20 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; +import { domToBlob } from "modern-screenshot"; +import { onMount } from "svelte"; import { + type ActivityHistoryEntry, activityHistory, fillMissingDays, - type ActivityHistoryEntry, } from "$lib/Data/AniList/activity"; -import { onMount } from "svelte"; -import userIdentity from "$stores/identity"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; -import { clearAllParameters } from "../../Utility/parameters"; -import { domToBlob } from "modern-screenshot"; -import ActivityHistoryGrid from "./Grid.svelte"; -import SettingHint from "$lib/Settings/SettingHint.svelte"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; +import SettingHint from "$lib/Settings/SettingHint.svelte"; +import userIdentity from "$stores/identity"; import locale from "$stores/locale"; +import { clearAllParameters } from "../../Utility/parameters"; +import ActivityHistoryGrid from "./Grid.svelte"; export let user: AniListAuthorisation; @@ -46,9 +46,8 @@ const screenshot = async () => { const object = ( window.URL || window.webkitURL || - window || - {} - ).createObjectURL(blob); + window + )?.createObjectURL(blob); downloadWrapper.href = object; downloadWrapper.target = "_blank"; diff --git a/src/lib/Tools/Birthdays.svelte b/src/lib/Tools/Birthdays.svelte index 3f02eb97..7b8b5b12 100644 --- a/src/lib/Tools/Birthdays.svelte +++ b/src/lib/Tools/Birthdays.svelte @@ -1,17 +1,17 @@ <script lang="ts"> +import { onMount } from "svelte"; import { browser } from "$app/environment"; import { page } from "$app/stores"; -import { ACDBBirthdays, type ACDBBirthday } from "$lib/Data/Birthday/secondary"; import { - aniSearchBirthdays, type aniSearchBirthday, + aniSearchBirthdays, } from "$lib/Data/Birthday/primary"; +import { type ACDBBirthday, ACDBBirthdays } from "$lib/Data/Birthday/secondary"; import RateLimitedError from "$lib/Error/RateLimited.svelte"; -import { onMount } from "svelte"; -import { clearAllParameters, parseOrDefault } from "../Utility/parameters"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; import tooltip from "$lib/Tooltip/tooltip"; +import { clearAllParameters, parseOrDefault } from "../Utility/parameters"; interface Birthday { name: string; diff --git a/src/lib/Tools/BirthdaysTemplate.svelte b/src/lib/Tools/BirthdaysTemplate.svelte index 8db7b442..50b3b8bf 100644 --- a/src/lib/Tools/BirthdaysTemplate.svelte +++ b/src/lib/Tools/BirthdaysTemplate.svelte @@ -1,12 +1,12 @@ <script lang="ts"> +import { onMount } from "svelte"; import { browser } from "$app/environment"; import { page } from "$app/stores"; -import { onMount } from "svelte"; -import { clearAllParameters, parseOrDefault } from "../Utility/parameters"; -import Message from "$lib/Loading/Message.svelte"; -import locale from "$stores/locale"; import RateLimitedError from "$lib/Error/RateLimited.svelte"; +import Message from "$lib/Loading/Message.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; +import locale from "$stores/locale"; +import { clearAllParameters, parseOrDefault } from "../Utility/parameters"; export let remoteURL: string; diff --git a/src/lib/Tools/DumpProfile.svelte b/src/lib/Tools/DumpProfile.svelte index 88605ffc..ab46f895 100644 --- a/src/lib/Tools/DumpProfile.svelte +++ b/src/lib/Tools/DumpProfile.svelte @@ -1,11 +1,11 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; +import LZString from "lz-string"; import { dumpUser } from "$lib/Data/AniList/user"; -import RateLimited from "$lib/Error/RateLimited.svelte"; import { parseJsonStringOrDefault } from "$lib/Effect/json"; +import RateLimited from "$lib/Error/RateLimited.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; import InputTemplate from "./InputTemplate.svelte"; -import LZString from "lz-string"; let submission = ""; diff --git a/src/lib/Tools/EpisodeDiscussionCollector.svelte b/src/lib/Tools/EpisodeDiscussionCollector.svelte index 2bbefc0a..09a5a42c 100644 --- a/src/lib/Tools/EpisodeDiscussionCollector.svelte +++ b/src/lib/Tools/EpisodeDiscussionCollector.svelte @@ -1,12 +1,12 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import { threads } from "$lib/Data/AniList/forum"; import { onMount } from "svelte"; -import { clearAllParameters } from "../Utility/parameters"; +import { threads } from "$lib/Data/AniList/forum"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; -import InputTemplate from "./InputTemplate.svelte"; import tooltip from "$lib/Tooltip/tooltip"; import locale from "$stores/locale"; +import { clearAllParameters } from "../Utility/parameters"; +import InputTemplate from "./InputTemplate.svelte"; let submission = ""; diff --git a/src/lib/Tools/Hayai.svelte b/src/lib/Tools/Hayai.svelte index 8d9c2c9b..012e4bc8 100644 --- a/src/lib/Tools/Hayai.svelte +++ b/src/lib/Tools/Hayai.svelte @@ -1,7 +1,7 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import { onMount } from "svelte"; import JSZip from "jszip"; +import { onMount } from "svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; let fileInput: HTMLInputElement | null = null; diff --git a/src/lib/Tools/InputTemplate.svelte b/src/lib/Tools/InputTemplate.svelte index c9d96dfb..ae953d72 100644 --- a/src/lib/Tools/InputTemplate.svelte +++ b/src/lib/Tools/InputTemplate.svelte @@ -1,8 +1,8 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import { clearAllParameters } from "$lib/Utility/parameters"; import { onMount } from "svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import SettingHint from "$lib/Settings/SettingHint.svelte"; +import { clearAllParameters } from "$lib/Utility/parameters"; import locale from "$stores/locale"; export let field: string; diff --git a/src/lib/Tools/Likes.svelte b/src/lib/Tools/Likes.svelte index 70739ee6..af3424d3 100644 --- a/src/lib/Tools/Likes.svelte +++ b/src/lib/Tools/Likes.svelte @@ -4,8 +4,8 @@ import { threadLikes } from "$lib/Data/AniList/forum"; import RateLimited from "$lib/Error/RateLimited.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; import tooltip from "$lib/Tooltip/tooltip"; -import settings from "$stores/settings"; import locale from "$stores/locale"; +import settings from "$stores/settings"; import InputTemplate from "./InputTemplate.svelte"; let submission = ""; diff --git a/src/lib/Tools/RandomFollower.svelte b/src/lib/Tools/RandomFollower.svelte index 7ef0adb5..07aa7463 100644 --- a/src/lib/Tools/RandomFollower.svelte +++ b/src/lib/Tools/RandomFollower.svelte @@ -1,9 +1,9 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; import { followers } from "$lib/Data/AniList/following"; import RateLimited from "$lib/Error/RateLimited.svelte"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import TextSwap from "$lib/Layout/TextTransition.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; import InputTemplate from "./InputTemplate.svelte"; let submission = ""; diff --git a/src/lib/Tools/SequelCatcher/List.svelte b/src/lib/Tools/SequelCatcher/List.svelte index 4b1b8107..af6ee502 100644 --- a/src/lib/Tools/SequelCatcher/List.svelte +++ b/src/lib/Tools/SequelCatcher/List.svelte @@ -1,10 +1,10 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; import { filterRelations, type Media } from "$lib/Data/AniList/media"; +import Spacer from "$lib/Layout/Spacer.svelte"; import MediaTitleDisplay from "$lib/List/MediaTitleDisplay.svelte"; import { outboundLink } from "$lib/Media/links"; -import settings from "$stores/settings"; import locale from "$stores/locale"; +import settings from "$stores/settings"; export let mediaListUnchecked: Media[]; @@ -12,8 +12,7 @@ let includeCurrent = false; let includeSideStories = false; const matchCheck = (media: Media | undefined, swap = false) => - (media && - media.mediaListEntry && + (media?.mediaListEntry && media.mediaListEntry?.status !== "CURRENT" && media.mediaListEntry?.status !== "REPEATING" && media.mediaListEntry?.status !== "PAUSED") || diff --git a/src/lib/Tools/SequelCatcher/Tool.svelte b/src/lib/Tools/SequelCatcher/Tool.svelte index f75b1f78..9e3063b7 100644 --- a/src/lib/Tools/SequelCatcher/Tool.svelte +++ b/src/lib/Tools/SequelCatcher/Tool.svelte @@ -1,18 +1,18 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import List from "./List.svelte"; +import { onMount } from "svelte"; import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; -import userIdentity from "$stores/identity"; import { type Media, mediaListCollection, Type } from "$lib/Data/AniList/media"; import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import Username from "$lib/Layout/Username.svelte"; +import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; import anime from "$stores/anime"; +import userIdentity from "$stores/identity"; import identity from "$stores/identity"; -import { onMount } from "svelte"; import lastPruneTimes from "$stores/lastPruneTimes"; -import Message from "$lib/Loading/Message.svelte"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; -import Username from "$lib/Layout/Username.svelte"; import locale from "$stores/locale"; +import List from "./List.svelte"; export let user: AniListAuthorisation; diff --git a/src/lib/Tools/SequelSpy/Prequels.svelte b/src/lib/Tools/SequelSpy/Prequels.svelte index 98fea353..f2b4a35e 100644 --- a/src/lib/Tools/SequelSpy/Prequels.svelte +++ b/src/lib/Tools/SequelSpy/Prequels.svelte @@ -1,10 +1,10 @@ <script lang="ts"> +import type { Media } from "$lib/Data/AniList/media"; import type { MediaPrequel } from "$lib/Data/AniList/prequels"; import MediaTitleDisplay from "$lib/List/MediaTitleDisplay.svelte"; import { airingTime } from "$lib/Media/Anime/Airing/time"; import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte"; import settings from "$stores/settings"; -import type { Media } from "$lib/Data/AniList/media"; export let currentPrequels: MediaPrequel[]; diff --git a/src/lib/Tools/SequelSpy/Tool.svelte b/src/lib/Tools/SequelSpy/Tool.svelte index 87931176..84a13d6d 100644 --- a/src/lib/Tools/SequelSpy/Tool.svelte +++ b/src/lib/Tools/SequelSpy/Tool.svelte @@ -1,16 +1,16 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; -import { prequels, type MediaPrequel } from "$lib/Data/AniList/prequels"; import { onMount } from "svelte"; -import { clearAllParameters, parseOrDefault } from "../../Utility/parameters"; -import { page } from "$app/stores"; import { browser } from "$app/environment"; -import { season as getSeason } from "$lib/Media/Anime/season"; +import { page } from "$app/stores"; +import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; +import { type MediaPrequel, prequels } from "$lib/Data/AniList/prequels"; +import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; +import { season as getSeason } from "$lib/Media/Anime/season"; import identity from "$stores/identity"; -import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; import locale from "$stores/locale"; +import { clearAllParameters, parseOrDefault } from "../../Utility/parameters"; import Prequels from "./Prequels.svelte"; export let user: AniListAuthorisation; diff --git a/src/lib/Tools/Tracker/Tool.svelte b/src/lib/Tools/Tracker/Tool.svelte index 3185e79b..c8977bc9 100644 --- a/src/lib/Tools/Tracker/Tool.svelte +++ b/src/lib/Tools/Tracker/Tool.svelte @@ -1,11 +1,11 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; +import { onMount } from "svelte"; +import { get } from "svelte/store"; import { v6 as uuidv6 } from "uuid"; import { database, type TrackerEntry } from "$lib/Database/IDB/tracker"; -import { onMount } from "svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Message from "$lib/Loading/Message.svelte"; import locale from "$stores/locale"; -import { get } from "svelte/store"; let url = ""; let title = ""; @@ -47,7 +47,8 @@ const addEntry = async (url: string, title: string, progress: number) => { const existing = listAccess.find((entry) => entry.url === url)?.title; error = ( - get(locale)().tools.tracker?.entryExists ?? "Entry with URL already exists: {url}" + get(locale)().tools.tracker?.entryExists ?? + "Entry with URL already exists: {url}" ).replace("{url}", existing ?? ""); return; diff --git a/src/lib/Tools/UmaMusumeBirthdays.svelte b/src/lib/Tools/UmaMusumeBirthdays.svelte index ddb3045c..4669645c 100644 --- a/src/lib/Tools/UmaMusumeBirthdays.svelte +++ b/src/lib/Tools/UmaMusumeBirthdays.svelte @@ -1,14 +1,14 @@ <script lang="ts"> +import { onMount } from "svelte"; import { browser } from "$app/environment"; import { page } from "$app/stores"; import RateLimitedError from "$lib/Error/RateLimited.svelte"; -import { onMount } from "svelte"; -import { clearAllParameters, parseOrDefault } from "../Utility/parameters"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; import tooltip from "$lib/Tooltip/tooltip"; -import settings from "$stores/settings"; import locale from "$stores/locale"; +import settings from "$stores/settings"; +import { clearAllParameters, parseOrDefault } from "../Utility/parameters"; interface Birthday { birth_day: number; diff --git a/src/lib/Tools/Wrapped/Tool.svelte b/src/lib/Tools/Wrapped/Tool.svelte index b7d67cb0..44ac78f1 100644 --- a/src/lib/Tools/Wrapped/Tool.svelte +++ b/src/lib/Tools/Wrapped/Tool.svelte @@ -1,45 +1,45 @@ <script lang="ts"> import Spacer from "$lib/Layout/Spacer.svelte"; import "./wrapped.css"; -import userIdentity from "$stores/identity"; -import locale from "$stores/locale"; -import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; +import { domToBlob } from "modern-screenshot"; import { onMount } from "svelte"; +import { browser } from "$app/environment"; +import { page } from "$app/stores"; import { - tops, - wrapped, - type TopMedia, - SortOptions, - type Wrapped, -} from "$lib/Data/AniList/wrapped"; -import { + type ActivityHistoryEntry, fullActivityHistory, activityHistory as getActivityHistory, - type ActivityHistoryEntry, } from "$lib/Data/AniList/activity"; -import { Type, mediaListCollection, type Media } from "$lib/Data/AniList/media"; +import type { AniListAuthorisation } from "$lib/Data/AniList/identity"; +import { type Media, mediaListCollection, Type } from "$lib/Data/AniList/media"; +import { + SortOptions, + type TopMedia, + tops, + type Wrapped, + wrapped, +} from "$lib/Data/AniList/wrapped"; +import { database } from "$lib/Database/IDB/activities"; +import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; +import RateLimitedError from "$lib/Error/RateLimited.svelte"; +import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; +import SettingHint from "$lib/Settings/SettingHint.svelte"; +import tooltip from "$lib/Tooltip/tooltip"; import anime from "$stores/anime"; +import userIdentity from "$stores/identity"; import lastPruneTimes from "$stores/lastPruneTimes"; +import locale from "$stores/locale"; import manga from "$stores/manga"; -import RateLimitedError from "$lib/Error/RateLimited.svelte"; -import { domToBlob } from "modern-screenshot"; -import { browser } from "$app/environment"; -import { page } from "$app/stores"; import { clearAllParameters } from "../../Utility/parameters"; -import SettingHint from "$lib/Settings/SettingHint.svelte"; -import { database } from "$lib/Database/IDB/activities"; +import ActivityHistory from "./ActivityHistory.svelte"; +import DataLoader from "./DataLoader.svelte"; +import MediaPanel from "./Media.svelte"; +import MediaExtras from "./MediaExtras.svelte"; import Activity from "./Top/Activity.svelte"; import Anime from "./Top/Anime.svelte"; import Manga from "./Top/Manga.svelte"; -import ActivityHistory from "./ActivityHistory.svelte"; -import MediaExtras from "./MediaExtras.svelte"; -import MediaPanel from "./Media.svelte"; import Watermark from "./Watermark.svelte"; -import DataLoader from "./DataLoader.svelte"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; -import Message from "$lib/Loading/Message.svelte"; -import tooltip from "$lib/Tooltip/tooltip"; -import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; export let user: AniListAuthorisation; @@ -48,12 +48,12 @@ let selectedYear = currentYear; let episodes = 0; let chapters = 0; let minutesWatched = 0; -let animeList: Media[] | undefined = undefined; -let mangaList: Media[] | undefined = undefined; -let calculatedAnimeList: Media[] | undefined = undefined; -let calculatedMangaList: Media[] | undefined = undefined; -let originalAnimeList: Media[] | undefined = undefined; -let originalMangaList: Media[] | undefined = undefined; +let animeList: Media[] | undefined; +let mangaList: Media[] | undefined; +let calculatedAnimeList: Media[] | undefined; +let calculatedMangaList: Media[] | undefined; +let originalAnimeList: Media[] | undefined; +let originalMangaList: Media[] | undefined; let transparency = false; let lightTheme = true; let watermark = false; @@ -458,7 +458,7 @@ async function update() { $anime, $lastPruneTimes.anime, { - forcePrune: dateTicked ? false : true, + forcePrune: !dateTicked, includeCompleted: true, all: true, }, @@ -523,7 +523,6 @@ async function update() { b.duration * b.mediaListEntry.progress - a.duration * a.mediaListEntry.progress ); - case SortOptions.SCORE: default: if (a.mediaListEntry?.score === undefined) return 1; else if (b.mediaListEntry?.score === undefined) return -1; @@ -582,7 +581,6 @@ async function update() { b.duration * b.mediaListEntry.progress - a.duration * a.mediaListEntry.progress ); - case SortOptions.SCORE: default: if (a.mediaListEntry?.score === undefined) return 1; else if (b.mediaListEntry?.score === undefined) return -1; @@ -597,7 +595,7 @@ async function update() { $manga, $lastPruneTimes.manga, { - forcePrune: dateTicked ? false : true, + forcePrune: !dateTicked, includeCompleted: true, all: true, }, @@ -716,9 +714,8 @@ const screenshot = async () => { const object = ( window.URL || window.webkitURL || - window || - {} - ).createObjectURL(blob); + window + )?.createObjectURL(blob); // downloadWrapper.download = `due_dot_moe_wrapped_${dark ? 'dark' : 'light'}.png`; downloadWrapper.href = object; diff --git a/src/lib/Tools/Wrapped/Top/Activity.svelte b/src/lib/Tools/Wrapped/Top/Activity.svelte index 16edeaec..f7bbdcfe 100644 --- a/src/lib/Tools/Wrapped/Top/Activity.svelte +++ b/src/lib/Tools/Wrapped/Top/Activity.svelte @@ -1,8 +1,8 @@ <script lang="ts"> import type { ActivityHistoryEntry } from "$lib/Data/AniList/activity"; -import identity from "$stores/identity"; import type { Wrapped } from "$lib/Data/AniList/wrapped"; import proxy from "$lib/Utility/proxy"; +import identity from "$stores/identity"; export let wrapped: Wrapped; export let year: number; diff --git a/src/lib/Tools/tools.ts b/src/lib/Tools/tools.ts index cc11050b..65bda35c 100644 --- a/src/lib/Tools/tools.ts +++ b/src/lib/Tools/tools.ts @@ -1,6 +1,6 @@ +import { get } from "svelte/store"; import type { CommandPaletteAction } from "$lib/CommandPalette/actions"; import locale from "$stores/locale"; -import { get } from "svelte/store"; export const toolsAsCommandPaletteActions = (): CommandPaletteAction[] => Object.entries(tools) diff --git a/src/lib/Tooltip/LinkedTooltip.svelte b/src/lib/Tooltip/LinkedTooltip.svelte index 4776322d..7d75092c 100644 --- a/src/lib/Tooltip/LinkedTooltip.svelte +++ b/src/lib/Tooltip/LinkedTooltip.svelte @@ -1,7 +1,7 @@ <script lang="ts"> -import tooltipPosition from "$stores/tooltipPosition"; -import { fade } from "svelte/transition"; import { onDestroy } from "svelte"; +import { fade } from "svelte/transition"; +import tooltipPosition from "$stores/tooltipPosition"; export let id: string | undefined = undefined; export let pin: string | undefined = undefined; diff --git a/src/lib/User/BadgeWall/AWC.svelte b/src/lib/User/BadgeWall/AWC.svelte index 5684eb2f..df4f45e1 100644 --- a/src/lib/User/BadgeWall/AWC.svelte +++ b/src/lib/User/BadgeWall/AWC.svelte @@ -1,10 +1,10 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; import type { AWCBadgesGroup } from "$lib/Data/awc"; +import Spacer from "$lib/Layout/Spacer.svelte"; import { cdn, thumbnail } from "$lib/Utility/image"; +import locale from "$stores/locale"; import type { Preferences } from "../../../graphql/$types"; import FallbackBadge from "./FallbackBadge.svelte"; -import locale from "$stores/locale"; import "./badges.css"; export let awcPromise: Promise<Response>; diff --git a/src/lib/User/BadgeWall/BadgePreview.svelte b/src/lib/User/BadgeWall/BadgePreview.svelte index ebf47d9b..d630de3e 100644 --- a/src/lib/User/BadgeWall/BadgePreview.svelte +++ b/src/lib/User/BadgeWall/BadgePreview.svelte @@ -1,13 +1,12 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import { thumbnail } from "$lib/Utility/image"; +import { onMount } from "svelte"; import type { Badge } from "$lib/Database/SB/User/badges"; -import { cdn } from "$lib/Utility/image"; +import ParallaxImage from "$lib/Image/ParallaxImage.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import { cdn, thumbnail } from "$lib/Utility/image"; +import root from "$lib/Utility/root"; import { databaseTimeToDate } from "$lib/Utility/time"; import locale from "$stores/locale"; -import { onMount } from "svelte"; -import root from "$lib/Utility/root"; -import ParallaxImage from "$lib/Image/ParallaxImage.svelte"; export let selectedBadge: Badge | undefined; export let onNext: () => void = () => undefined; @@ -19,7 +18,7 @@ let source = cdn(thumbnail(selectedBadge?.image || "")) || ""; let badgeReference: HTMLImageElement; $: { - if (selectedBadge && selectedBadge.image) { + if (selectedBadge?.image) { const image = new Image(); image.src = cdn(selectedBadge.image) || ""; diff --git a/src/lib/User/BadgeWall/Badges.svelte b/src/lib/User/BadgeWall/Badges.svelte index 1d620c2f..d2c56392 100644 --- a/src/lib/User/BadgeWall/Badges.svelte +++ b/src/lib/User/BadgeWall/Badges.svelte @@ -1,14 +1,14 @@ <script lang="ts"> +import FallbackImage from "$lib/Image/FallbackImage.svelte"; import Spacer from "$lib/Layout/Spacer.svelte"; import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte"; import tooltip from "$lib/Tooltip/tooltip"; -import locale from "$stores/locale"; -import { databaseTimeToDate } from "$lib/Utility/time"; -import FallbackImage from "$lib/Image/FallbackImage.svelte"; import { cdn, thumbnail } from "$lib/Utility/image"; -import FallbackBadge from "./FallbackBadge.svelte"; +import { databaseTimeToDate } from "$lib/Utility/time"; +import locale from "$stores/locale"; import type { Preferences } from "../../../graphql/$types"; import type { IndexedBadge } from "./badge"; +import FallbackBadge from "./FallbackBadge.svelte"; export let ungroupedBadges: IndexedBadge[]; export let groupedBadges: [string, IndexedBadge[]][]; diff --git a/src/lib/User/BadgeWall/FallbackBadge.svelte b/src/lib/User/BadgeWall/FallbackBadge.svelte index 04793aa0..f645176c 100644 --- a/src/lib/User/BadgeWall/FallbackBadge.svelte +++ b/src/lib/User/BadgeWall/FallbackBadge.svelte @@ -1,14 +1,14 @@ <script lang="ts"> -import { classifyDesignerName } from "./badge"; -import locale from "$stores/locale"; +import { cubicOut } from "svelte/easing"; import { tweened } from "svelte/motion"; -import type { Badge } from "../../Database/SB/User/badges"; +import { dev } from "$app/environment"; +import locale from "$stores/locale"; +import type { Preferences } from "../../../graphql/$types"; import type { AWCBadge } from "../../Data/awc"; +import type { Badge } from "../../Database/SB/User/badges"; import Tooltip from "../../Tooltip/LinkedTooltip.svelte"; import { databaseTimeToDate } from "../../Utility/time"; -import { cubicOut } from "svelte/easing"; -import { dev } from "$app/environment"; -import type { Preferences } from "../../../graphql/$types"; +import { classifyDesignerName } from "./badge"; export let source: string | null | undefined; export let alternative: string | null | undefined; diff --git a/src/lib/Utility/html.ts b/src/lib/Utility/html.ts index 10d52971..db9bfe7a 100644 --- a/src/lib/Utility/html.ts +++ b/src/lib/Utility/html.ts @@ -1,5 +1,5 @@ -import settings from "$stores/settings"; import { get } from "svelte/store"; +import settings from "$stores/settings"; export const nbsp = (str: string) => str.replace(/ /g, " "); diff --git a/src/lib/Utility/image.ts b/src/lib/Utility/image.ts index c1c2ae0e..6652e97f 100644 --- a/src/lib/Utility/image.ts +++ b/src/lib/Utility/image.ts @@ -23,10 +23,10 @@ export const thumbnail = (url: string | undefined) => { const width = 144; const height = 200; - if (url && url.includes("catbox.moe") && !url.includes("gif")) + if (url?.includes("catbox.moe") && !url.includes("gif")) return url.replace("catbox.moe/", "catbox.moe/thumbs/t_"); - if (url && url.includes("imgur") && !url.includes("gif")) + if (url?.includes("imgur") && !url.includes("gif")) return ( !url.includes("i.imgur.com") ? url.replace("imgur.com", "i.imgur.com") @@ -36,7 +36,7 @@ export const thumbnail = (url: string | undefined) => { `_d.webp?maxwidth=${width}&shape=thumb&fidelity=high`, ); - if (url && url.includes("discordapp")) { + if (url?.includes("discordapp")) { const match = url.match(/attachments\/(\d+)\/(\d+)\/(.+)/); if (match) { diff --git a/src/lib/Utility/oauth.ts b/src/lib/Utility/oauth.ts index 07e8f114..c225d43c 100644 --- a/src/lib/Utility/oauth.ts +++ b/src/lib/Utility/oauth.ts @@ -1,4 +1,4 @@ -import { redirect, type Cookies } from "@sveltejs/kit"; +import { type Cookies, redirect } from "@sveltejs/kit"; export interface ClientOptions { id: string; diff --git a/src/lib/Utility/parameters.ts b/src/lib/Utility/parameters.ts index 17e97f1e..add0b8f8 100644 --- a/src/lib/Utility/parameters.ts +++ b/src/lib/Utility/parameters.ts @@ -1,6 +1,6 @@ +import { get } from "svelte/store"; import { browser } from "$app/environment"; import { page } from "$app/stores"; -import { get } from "svelte/store"; export const clearAllParameters = (saved: string[] = []) => { if (browser) { diff --git a/src/lib/Utility/persistentStore.ts b/src/lib/Utility/persistentStore.ts index a3837a5b..475dd4ec 100644 --- a/src/lib/Utility/persistentStore.ts +++ b/src/lib/Utility/persistentStore.ts @@ -1,4 +1,4 @@ -import { writable, type Writable } from "svelte/store"; +import { type Writable, writable } from "svelte/store"; import { browser } from "$app/environment"; export const persistentStore = <T>(key: string, initial: T): Writable<T> => { diff --git a/src/lib/Utility/time.ts b/src/lib/Utility/time.ts index a390c3d5..acd0436b 100644 --- a/src/lib/Utility/time.ts +++ b/src/lib/Utility/time.ts @@ -1,4 +1,4 @@ -export const databaseTimeToDate = (time: string) => new Date(time + "Z"); +export const databaseTimeToDate = (time: string) => new Date(`${time}Z`); export const dateToDatabaseTime = (date: Date) => date.toISOString().replace("T", " ").replace(/\..+/, ""); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index a35fee29..f58bff4d 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,47 +1,47 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import type { SubsPleaseEpisode } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; +import { onDestroy, onMount } from "svelte"; +import { browser } from "$app/environment"; import { env } from "$env/dynamic/public"; import { userIdentity as getUserIdentity } from "$lib/Data/AniList/identity"; -import { onDestroy, onMount } from "svelte"; +import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import type { SubsPleaseEpisode } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; import userIdentity from "$stores/identity"; import settings from "$stores/settings"; -import { browser } from "$app/environment"; -import HeadTitle from "$lib/Home/HeadTitle.svelte"; import "../app.css"; -import { get, readable, type Readable } from "svelte/store"; -import { navigating } from "$app/stores"; -import { onNavigate } from "$app/navigation"; -import NotificationsProvider from "$lib/Notification/NotificationsProvider.svelte"; -import Root from "$lib/Home/Root.svelte"; -import root from "$lib/Utility/root"; -import { addMessages, init, locale as i18nLocale, locales } from "svelte-i18n"; -import english from "$lib/Locale/english"; -import japanese from "$lib/Locale/japanese"; -import type { LocaleDictionary } from "$lib/Locale/layout"; -import locale from "$stores/locale"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; -import subsPlease from "$stores/subsPlease"; -import Dropdown from "$lib/Layout/Dropdown.svelte"; +import { injectAnalytics } from "@vercel/analytics/sveltekit"; import { injectSpeedInsights } from "@vercel/speed-insights/sveltekit"; -import subtitles from "$lib/Data/Static/subtitles.json"; -import settingsSyncPulled from "$stores/settingsSyncPulled"; -import settingsSyncTimes from "$stores/settingsSyncTimes"; +import Lenis from "lenis"; +import localforage from "localforage"; +import { get, type Readable, readable } from "svelte/store"; +import { addMessages, locale as i18nLocale, init, locales } from "svelte-i18n"; +import { dev } from "$app/environment"; +import { onNavigate } from "$app/navigation"; +import { navigating } from "$app/stores"; import Announcement from "$lib/Announcement.svelte"; -import Message from "$lib/Loading/Message.svelte"; -import { requestNotifications } from "$lib/Utility/notifications"; -import { database as userDatabase } from "$lib/Database/IDB/user"; -import CommandPalette from "$lib/CommandPalette/CommandPalette.svelte"; import { track } from "$lib/analytics"; import { defaultActions } from "$lib/CommandPalette/actions"; import { authActions } from "$lib/CommandPalette/authActions"; +import CommandPalette from "$lib/CommandPalette/CommandPalette.svelte"; import { syncActions } from "$lib/CommandPalette/syncActions"; import { toggleActions } from "$lib/CommandPalette/toggleActions"; +import subtitles from "$lib/Data/Static/subtitles.json"; +import { database as userDatabase } from "$lib/Database/IDB/user"; +import Root from "$lib/Home/Root.svelte"; +import Dropdown from "$lib/Layout/Dropdown.svelte"; +import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; +import english from "$lib/Locale/english"; +import japanese from "$lib/Locale/japanese"; +import type { LocaleDictionary } from "$lib/Locale/layout"; +import NotificationsProvider from "$lib/Notification/NotificationsProvider.svelte"; import { toolsAsCommandPaletteActions } from "$lib/Tools/tools"; -import localforage from "localforage"; -import { dev } from "$app/environment"; -import { injectAnalytics } from "@vercel/analytics/sveltekit"; -import Lenis from "lenis"; +import { requestNotifications } from "$lib/Utility/notifications"; +import root from "$lib/Utility/root"; +import locale from "$stores/locale"; +import settingsSyncPulled from "$stores/settingsSyncPulled"; +import settingsSyncTimes from "$stores/settingsSyncTimes"; +import subsPlease from "$stores/subsPlease"; import "lenis/dist/lenis.css"; import lenisStore from "$stores/lenis"; import type { LayoutData } from "./$types"; @@ -53,9 +53,8 @@ export let data: LayoutData; let isHeaderVisible = true; let previousScrollPosition = 0; -let notificationInterval: ReturnType<typeof setInterval> | undefined = - undefined; -let lenis: Lenis | undefined = undefined; +let notificationInterval: ReturnType<typeof setInterval> | undefined; +let lenis: Lenis | undefined; let isMenuOpen = false; addMessages("en", english as unknown as LocaleDictionary); @@ -74,7 +73,7 @@ const navigationOrder = [ ]; const previousPage: Readable<string | null> = readable(null, (set) => { const unsubscribe = navigating.subscribe(($navigating) => { - if ($navigating && $navigating.from) + if ($navigating?.from) set($navigating.from.url.pathname as unknown as null); }); @@ -83,7 +82,7 @@ const previousPage: Readable<string | null> = readable(null, (set) => { $: way = data.url.includes("/user") ? 200 - : $previousPage && $previousPage.includes("/user") + : $previousPage?.includes("/user") ? -200 : navigationOrder.indexOf(data.url) > navigationOrder.indexOf($previousPage ?? "/") @@ -116,7 +115,10 @@ onNavigate((navigation) => { ? 1 : -1; - document.documentElement.style.setProperty("--vt-direction", String(direction)); + document.documentElement.style.setProperty( + "--vt-direction", + String(direction), + ); return new Promise((resolve) => { ( @@ -238,13 +240,13 @@ onMount(async () => { (response) => { if (response.ok) response.json().then((data) => { - if (data && data.configuration) { + if (data?.configuration) { console.log("Pulled remote configuration"); settings.set(data.configuration); settingsSyncPulled.set(true); settingsSyncTimes.set({ lastPull: new Date(), - lastPush: new Date(data.updated_at + "Z"), + lastPush: new Date(`${data.updated_at}Z`), }); } }); diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 218bc8d5..074619cb 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,17 +1,17 @@ <script lang="ts"> import type { Component } from "svelte"; +import { onDestroy, onMount } from "svelte"; import { browser } from "$app/environment"; +import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Landing from "$lib/Landing.svelte"; +import LandingHero from "$lib/LandingHero.svelte"; import Spacer from "$lib/Layout/Spacer.svelte"; -import { onDestroy, onMount } from "svelte"; -import userIdentity from "$stores/identity.js"; -import settings from "$stores/settings"; import ListTitle from "$lib/List/ListTitle.svelte"; -import HeadTitle from "$lib/Home/HeadTitle.svelte"; -import { createHeightObserver } from "$lib/Utility/html.js"; import Skeleton from "$lib/Loading/Skeleton.svelte"; +import { createHeightObserver } from "$lib/Utility/html.js"; +import userIdentity from "$stores/identity.js"; import locale from "$stores/locale.js"; -import Landing from "$lib/Landing.svelte"; -import LandingHero from "$lib/LandingHero.svelte"; +import settings from "$stores/settings"; import stateBin, { hydrateStateBin } from "$stores/stateBin.js"; import type { PageData } from "./$types"; diff --git a/src/routes/anilist-badges-easter-event-2025/+page.svelte b/src/routes/anilist-badges-easter-event-2025/+page.svelte index b9c1295d..ecf74a47 100644 --- a/src/routes/anilist-badges-easter-event-2025/+page.svelte +++ b/src/routes/anilist-badges-easter-event-2025/+page.svelte @@ -22,7 +22,7 @@ onMount(() => { const urlParameters = new URLSearchParams(window.location.search); const pageParameter = urlParameters.get("page"); - if (pageParameter) page = parseInt(pageParameter) || 0; + if (pageParameter) page = parseInt(pageParameter, 10) || 0; }); const updatePage = (to: number | undefined = undefined) => { diff --git a/src/routes/api/animeschedule/oauth/callback/+server.ts b/src/routes/api/animeschedule/oauth/callback/+server.ts index 294abc05..677aff68 100644 --- a/src/routes/api/animeschedule/oauth/callback/+server.ts +++ b/src/routes/api/animeschedule/oauth/callback/+server.ts @@ -1,6 +1,6 @@ -import { callback } from "$lib/Utility/oauth.js"; import { env } from "$env/dynamic/private"; import { env as env2 } from "$env/dynamic/public"; +import { callback } from "$lib/Utility/oauth.js"; export const GET = async ({ url, cookies }) => callback({ diff --git a/src/routes/api/authentication/log-out/+server.ts b/src/routes/api/authentication/log-out/+server.ts index c04fa5c5..8623dfd1 100644 --- a/src/routes/api/authentication/log-out/+server.ts +++ b/src/routes/api/authentication/log-out/+server.ts @@ -1,5 +1,5 @@ -import root from "$lib/Utility/root.js"; import { redirect } from "@sveltejs/kit"; +import root from "$lib/Utility/root.js"; export const GET = ({ cookies }) => { cookies.delete("user", { path: "/" }); diff --git a/src/routes/api/badges/+server.ts b/src/routes/api/badges/+server.ts index 46b98cbc..2673273c 100644 --- a/src/routes/api/badges/+server.ts +++ b/src/routes/api/badges/+server.ts @@ -1,20 +1,20 @@ +import { Schema } from "effect"; import { safeUserIdentity } from "$lib/Data/AniList/identity"; -import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; -import { decodeRequestJsonOrThrow } from "$lib/Effect/requestBody"; import { - removeAllUserBadges, - removeUserBadge, - updateUserBadge, - getUserBadges, addUserBadge, type Badge, type BadgeInput, + getUserBadges, + incrementClickCount, migrateCategory, + removeAllUserBadges, + removeUserBadge, setShadowHidden, setShadowHiddenBadge, - incrementClickCount, + updateUserBadge, } from "$lib/Database/SB/User/badges"; -import { Schema } from "effect"; +import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; +import { decodeRequestJsonOrThrow } from "$lib/Effect/requestBody"; import { appOrigin, appOriginHeaders } from "$lib/Utility/appOrigin"; import privilegedUser from "$lib/Utility/privilegedUser"; @@ -118,7 +118,7 @@ export const PUT = async ({ cookies, url, request }) => { .map(async (badge) => { await updateUserBadge(identity.id, badge.id as number, { ...badge, - hidden: + hidden: !( allBadges .filter( (badge) => @@ -130,8 +130,7 @@ export const PUT = async ({ cookies, url, request }) => { badge.category === (url.searchParams.get("category") || ""), ).length / 2 - ? false - : true, + ), }); }), ); @@ -144,7 +143,7 @@ export const PUT = async ({ cookies, url, request }) => { await setShadowHiddenBadge( Number(url.searchParams.get("shadowHideBadge")), - url.searchParams.get("status") === "true" ? false : true, + url.searchParams.get("status") !== "true", ); return await badges(Number(url.searchParams.get("id"))); diff --git a/src/routes/api/myanimelist/oauth/callback/+server.ts b/src/routes/api/myanimelist/oauth/callback/+server.ts index 57a5fbe4..0fe774d9 100644 --- a/src/routes/api/myanimelist/oauth/callback/+server.ts +++ b/src/routes/api/myanimelist/oauth/callback/+server.ts @@ -1,6 +1,6 @@ -import { callback } from "$lib/Utility/oauth.js"; import { env } from "$env/dynamic/private"; import { env as env2 } from "$env/dynamic/public"; +import { callback } from "$lib/Utility/oauth.js"; export const GET = async ({ url, cookies }) => callback({ diff --git a/src/routes/api/notifications/subscribe/+server.ts b/src/routes/api/notifications/subscribe/+server.ts index 203470e0..51dbf340 100644 --- a/src/routes/api/notifications/subscribe/+server.ts +++ b/src/routes/api/notifications/subscribe/+server.ts @@ -1,8 +1,8 @@ +import { Schema } from "effect"; import { safeUserIdentity } from "$lib/Data/AniList/identity"; import { setUserSubscription } from "$lib/Database/SB/User/notifications"; import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; import { decodeRequestJsonOrThrow } from "$lib/Effect/requestBody"; -import { Schema } from "effect"; const unauthorised = new Response("Unauthorised", { status: 401 }); diff --git a/src/routes/api/oauth/callback/+server.ts b/src/routes/api/oauth/callback/+server.ts index c5faa859..96990bf0 100644 --- a/src/routes/api/oauth/callback/+server.ts +++ b/src/routes/api/oauth/callback/+server.ts @@ -1,6 +1,6 @@ -import { callback } from "$lib/Utility/oauth.js"; import { env } from "$env/dynamic/private"; import { env as env2 } from "$env/dynamic/public"; +import { callback } from "$lib/Utility/oauth.js"; export const GET = async ({ url, cookies }) => callback({ diff --git a/src/routes/api/oauth/refresh/+server.ts b/src/routes/api/oauth/refresh/+server.ts index 13e7ab09..d9e33f51 100644 --- a/src/routes/api/oauth/refresh/+server.ts +++ b/src/routes/api/oauth/refresh/+server.ts @@ -1,6 +1,6 @@ +import { redirect } from "@sveltejs/kit"; import { env } from "$env/dynamic/private"; import { env as env2 } from "$env/dynamic/public"; -import { redirect } from "@sveltejs/kit"; export const GET = async ({ url, cookies }) => { const formData = new FormData(); diff --git a/src/routes/api/preferences/pin/+server.ts b/src/routes/api/preferences/pin/+server.ts index b69a8142..118dd5ba 100644 --- a/src/routes/api/preferences/pin/+server.ts +++ b/src/routes/api/preferences/pin/+server.ts @@ -1,6 +1,6 @@ import { safeUserIdentity } from "$lib/Data/AniList/identity"; -import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; import { toggleHololiveStreamPinning } from "$lib/Database/SB/User/preferences"; +import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; import { appOriginHeaders } from "$lib/Utility/appOrigin"; const unauthorised = new Response("Unauthorised", { status: 401 }); diff --git a/src/routes/completed/+page.svelte b/src/routes/completed/+page.svelte index 3720bf60..78cb1614 100644 --- a/src/routes/completed/+page.svelte +++ b/src/routes/completed/+page.svelte @@ -1,15 +1,15 @@ <script lang="ts"> import type { Component } from "svelte"; -import Spacer from "$lib/Layout/Spacer.svelte"; import { onDestroy, onMount } from "svelte"; -import userIdentity from "$stores/identity.js"; -import settings from "$stores/settings"; -import ListTitle from "$lib/List/ListTitle.svelte"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; -import { createHeightObserver } from "$lib/Utility/html.js"; +import Landing from "$lib/Landing.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import ListTitle from "$lib/List/ListTitle.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; +import { createHeightObserver } from "$lib/Utility/html.js"; +import userIdentity from "$stores/identity.js"; import locale from "$stores/locale.js"; -import Landing from "$lib/Landing.svelte"; +import settings from "$stores/settings"; import stateBin, { hydrateStateBin } from "$stores/stateBin.js"; import type { PageData } from "./$types"; diff --git a/src/routes/events/+page.svelte b/src/routes/events/+page.svelte index 0474852b..4fa734bd 100644 --- a/src/routes/events/+page.svelte +++ b/src/routes/events/+page.svelte @@ -1,6 +1,6 @@ <script> -import Spacer from "$lib/Layout/Spacer.svelte"; import Event from "$lib/Events/Event.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Message from "$lib/Loading/Message.svelte"; import root from "$lib/Utility/root"; diff --git a/src/routes/events/group/[group]/+page.svelte b/src/routes/events/group/[group]/+page.svelte index 34db0fae..f7ca8769 100644 --- a/src/routes/events/group/[group]/+page.svelte +++ b/src/routes/events/group/[group]/+page.svelte @@ -1,12 +1,12 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import type { Group as GroupType } from "$lib/Database/SB/groups.js"; +import { onMount } from "svelte"; import type { Event as EventType } from "$lib/Database/SB/events.js"; +import type { Group as GroupType } from "$lib/Database/SB/groups.js"; +import Event from "$lib/Events/Event.svelte"; +import Group from "$lib/Events/Group.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Message from "$lib/Loading/Message.svelte"; import root from "$lib/Utility/root"; -import { onMount } from "svelte"; -import Group from "$lib/Events/Group.svelte"; -import Event from "$lib/Events/Event.svelte"; import locale from "$stores/locale"; import type { PageData } from "./$types"; diff --git a/src/routes/events/groups/+page.svelte b/src/routes/events/groups/+page.svelte index 198c637b..f0c0f44b 100644 --- a/src/routes/events/groups/+page.svelte +++ b/src/routes/events/groups/+page.svelte @@ -1,10 +1,10 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; +import { onMount } from "svelte"; import type { Group as GroupType } from "$lib/Database/SB/groups"; +import Group from "$lib/Events/Group.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Message from "$lib/Loading/Message.svelte"; import root from "$lib/Utility/root"; -import { onMount } from "svelte"; -import Group from "$lib/Events/Group.svelte"; import locale from "$stores/locale"; let groupsResponse: Promise<Response>; diff --git a/src/routes/feeds/activity-notifications/+server.ts b/src/routes/feeds/activity-notifications/+server.ts index 70b24a20..64ba3fdc 100644 --- a/src/routes/feeds/activity-notifications/+server.ts +++ b/src/routes/feeds/activity-notifications/+server.ts @@ -1,15 +1,12 @@ import { - notifications, type Notification, + notifications, } from "$lib/Data/AniList/notifications"; import { siteUrl } from "$lib/Utility/appOrigin"; import root from "$lib/Utility/root"; const htmlEncode = (input: string) => { - return input.replace( - /[\u00A0-\u9999<>&]/g, - (i) => "&#" + i.charCodeAt(0) + ";", - ); + return input.replace(/[\u00A0-\u9999<>&]/g, (i) => `&#${i.charCodeAt(0)};`); }; const render = ( @@ -82,7 +79,7 @@ export const GET = async ({ url }) => { if (notification === null) { token = ( await (await fetch(root(`/api/oauth/refresh?token=${refresh}`))).json() - )["access_token"]; + ).access_token; notification = await notifications(token as string); } diff --git a/src/routes/girls/+page.svelte b/src/routes/girls/+page.svelte index e45dad4d..b07a1bcc 100644 --- a/src/routes/girls/+page.svelte +++ b/src/routes/girls/+page.svelte @@ -1,7 +1,7 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; import Senpy from "$lib/Data/senpy"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Message from "$lib/Loading/Message.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; import root from "$lib/Utility/root"; diff --git a/src/routes/hololive/[[stream]]/+page.svelte b/src/routes/hololive/[[stream]]/+page.svelte index 250ce22a..38969b45 100644 --- a/src/routes/hololive/[[stream]]/+page.svelte +++ b/src/routes/hololive/[[stream]]/+page.svelte @@ -1,15 +1,15 @@ <script lang="ts"> import { onMount } from "svelte"; +import { parseScheduleHtml } from "$lib/Data/hololive"; +import { typeSchedule } from "$lib/Hololive/hololive"; +import Lives from "$lib/Hololive/Lives.svelte"; +import HeadTitle from "$lib/Home/HeadTitle.svelte"; import Message from "$lib/Loading/Message.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; -import HeadTitle from "$lib/Home/HeadTitle.svelte"; -import { parseScheduleHtml } from "$lib/Data/hololive"; import proxy from "$lib/Utility/proxy"; -import locale from "$stores/locale"; import root from "$lib/Utility/root"; import identity from "$stores/identity"; -import Lives from "$lib/Hololive/Lives.svelte"; -import { typeSchedule } from "$lib/Hololive/hololive"; +import locale from "$stores/locale"; import type { PageData } from "./$types"; export let data: PageData; @@ -35,7 +35,7 @@ const getPinnedStreams = () => { fetch(root(`/api/preferences?id=${$identity.id}`)).then((response) => { if (response.ok) response.json().then((data) => { - if (data && data.pinned_hololive_streams) + if (data?.pinned_hololive_streams) streams = data.pinned_hololive_streams; setSchedule(); diff --git a/src/routes/schedule/+page.svelte b/src/routes/schedule/+page.svelte index 9dcda20a..d6708a3e 100644 --- a/src/routes/schedule/+page.svelte +++ b/src/routes/schedule/+page.svelte @@ -1,19 +1,19 @@ <script lang="ts"> -import RateLimitedError from "$lib/Error/RateLimited.svelte"; import { onMount } from "svelte"; -import { parseOrDefault } from "$lib/Utility/parameters"; import { browser } from "$app/environment"; import type { Media } from "$lib/Data/AniList/media"; import { scheduleMediaListCollection } from "$lib/Data/AniList/schedule"; -import { season } from "$lib/Media/Anime/season"; +import RateLimitedError from "$lib/Error/RateLimited.svelte"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import { season } from "$lib/Media/Anime/season"; +import { parseOrDefault } from "$lib/Utility/parameters"; // import Crunchyroll from '$lib/Schedule/Crunchyroll.svelte'; import "$lib/Schedule/container.css"; -import Days from "$lib/Schedule/Days.svelte"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; import Message from "$lib/Loading/Message.svelte"; -import subsPlease from "$stores/subsPlease"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; +import Days from "$lib/Schedule/Days.svelte"; import locale from "$stores/locale"; +import subsPlease from "$stores/subsPlease"; import type { PageData } from "./$types"; export let data: PageData; diff --git a/src/routes/settings/+page.svelte b/src/routes/settings/+page.svelte index f9a2ee87..79642944 100644 --- a/src/routes/settings/+page.svelte +++ b/src/routes/settings/+page.svelte @@ -1,18 +1,17 @@ <script lang="ts"> +import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; +import HeadTitle from "$lib/Home/HeadTitle.svelte"; import Spacer from "$lib/Layout/Spacer.svelte"; - import Attributions from "$lib/Settings/Categories/Attributions.svelte"; -import HeadTitle from "$lib/Home/HeadTitle.svelte"; -import Display from "$lib/Settings/Categories/Display.svelte"; +import Cache from "$lib/Settings/Categories/Cache.svelte"; import Calculation from "$lib/Settings/Categories/Calculation.svelte"; import Debug from "$lib/Settings/Categories/Debug.svelte"; -import Cache from "$lib/Settings/Categories/Cache.svelte"; +import Display from "$lib/Settings/Categories/Display.svelte"; +import RssFeeds from "$lib/Settings/Categories/RSSFeeds.svelte"; +import SettingSync from "$lib/Settings/Categories/SettingSync.svelte"; import Category from "$lib/Settings/Category.svelte"; import tooltip from "$lib/Tooltip/tooltip"; import locale from "$stores/locale.js"; -import LogInRestricted from "$lib/Error/LogInRestricted.svelte"; -import SettingSync from "$lib/Settings/Categories/SettingSync.svelte"; -import RssFeeds from "$lib/Settings/Categories/RSSFeeds.svelte"; import type { PageData } from "./$types"; export let data: PageData; diff --git a/src/routes/tools/+page.svelte b/src/routes/tools/+page.svelte index 3589fa9f..27604874 100644 --- a/src/routes/tools/+page.svelte +++ b/src/routes/tools/+page.svelte @@ -1,6 +1,6 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; import Picker from "$lib/Tools/Picker.svelte"; import { tools } from "$lib/Tools/tools.js"; import root from "$lib/Utility/root"; diff --git a/src/routes/tools/[tool]/+page.svelte b/src/routes/tools/[tool]/+page.svelte index b74952a5..1778752f 100644 --- a/src/routes/tools/[tool]/+page.svelte +++ b/src/routes/tools/[tool]/+page.svelte @@ -1,26 +1,26 @@ <script lang="ts"> -import Hayai from "./../../../lib/Tools/Hayai.svelte"; -import UmaMusumeBirthdays from "./../../../lib/Tools/UmaMusumeBirthdays.svelte"; -import ActivityHistory from "$lib/Tools/ActivityHistory/Tool.svelte"; -import Wrapped from "$lib/Tools/Wrapped/Tool.svelte"; -import EpisodeDiscussionCollector from "$lib/Tools/EpisodeDiscussionCollector.svelte"; -import CharacterBirthdays from "$lib/Tools/Birthdays.svelte"; -import SequelSpy from "$lib/Tools/SequelSpy/Tool.svelte"; +import { onMount } from "svelte"; +import { goto } from "$app/navigation"; import { closest } from "$lib/Error/path"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Popup from "$lib/Layout/Popup.svelte"; +import ActivityHistory from "$lib/Tools/ActivityHistory/Tool.svelte"; +import CharacterBirthdays from "$lib/Tools/Birthdays.svelte"; +import BirthdaysTemplate from "$lib/Tools/BirthdaysTemplate.svelte"; +import EpisodeDiscussionCollector from "$lib/Tools/EpisodeDiscussionCollector.svelte"; +import Likes from "$lib/Tools/Likes.svelte"; +import Picker from "$lib/Tools/Picker.svelte"; import RandomFollower from "$lib/Tools/RandomFollower.svelte"; +import SequelCatcher from "$lib/Tools/SequelCatcher/Tool.svelte"; +import SequelSpy from "$lib/Tools/SequelSpy/Tool.svelte"; +import Tracker from "$lib/Tools/Tracker/Tool.svelte"; // import DumpProfile from '$lib/Tools/DumpProfile.svelte'; import { tools } from "$lib/Tools/tools.js"; -import { onMount } from "svelte"; -import { goto } from "$app/navigation"; -import Picker from "$lib/Tools/Picker.svelte"; -import Likes from "$lib/Tools/Likes.svelte"; +import Wrapped from "$lib/Tools/Wrapped/Tool.svelte"; import root from "$lib/Utility/root.js"; -import Popup from "$lib/Layout/Popup.svelte"; -import SequelCatcher from "$lib/Tools/SequelCatcher/Tool.svelte"; -import Tracker from "$lib/Tools/Tracker/Tool.svelte"; -import BirthdaysTemplate from "$lib/Tools/BirthdaysTemplate.svelte"; import locale from "$stores/locale"; +import Hayai from "./../../../lib/Tools/Hayai.svelte"; +import UmaMusumeBirthdays from "./../../../lib/Tools/UmaMusumeBirthdays.svelte"; import type { PageData } from "./$types"; export let data: PageData; diff --git a/src/routes/updates/+page.svelte b/src/routes/updates/+page.svelte index 71a6d2e3..357a5906 100644 --- a/src/routes/updates/+page.svelte +++ b/src/routes/updates/+page.svelte @@ -1,16 +1,16 @@ <script lang="ts"> +import { onDestroy, onMount } from "svelte"; import { browser } from "$app/environment"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; import Skeleton from "$lib/Loading/Skeleton.svelte"; import { createHeightObserver } from "$lib/Utility/html"; import root from "$lib/Utility/root"; -import { onDestroy, onMount } from "svelte"; import locale from "$stores/locale"; let feed: | { items: { title: string; link: string; content: string }[] } | null - | undefined = undefined; + | undefined; let novelFeed: | { data: { @@ -22,7 +22,7 @@ let novelFeed: }[]; }; } - | undefined = undefined; + | undefined; let startTime: number; let mangaEndTime: number; let novelEndTime: number; diff --git a/src/routes/user/+page.svelte b/src/routes/user/+page.svelte index 3fdf1dc6..dc75802f 100644 --- a/src/routes/user/+page.svelte +++ b/src/routes/user/+page.svelte @@ -1,13 +1,13 @@ <script lang="ts"> +import localforage from "localforage"; +import { onMount } from "svelte"; import { browser } from "$app/environment"; import { goto } from "$app/navigation"; -import type { UserIdentity } from "$lib/Data/AniList/identity"; -import { onMount } from "svelte"; +import { page } from "$app/stores"; import { env } from "$env/dynamic/public"; +import type { UserIdentity } from "$lib/Data/AniList/identity"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; import root from "$lib/Utility/root"; -import { page } from "$app/stores"; -import localforage from "localforage"; onMount(async () => { if (browser) { diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte index bfcdd87b..771683ad 100644 --- a/src/routes/user/[user]/+page.svelte +++ b/src/routes/user/[user]/+page.svelte @@ -1,27 +1,27 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import settings from "$stores/settings"; -import ParallaxImage from "../../../lib/Image/ParallaxImage.svelte"; -import { typeSchedule, type ParseResult } from "$lib/Hololive/hololive"; -import HeadTitle from "$lib/Home/HeadTitle.svelte"; -import Message from "$lib/Loading/Message.svelte"; -import { estimatedDayReading } from "$lib/Media/Manga/time"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; -import root from "$lib/Utility/root"; -import locale from "$stores/locale"; +import SvelteMarkdown from "@humanspeak/svelte-markdown"; import { onMount } from "svelte"; +import { graphql } from "$houdini"; +import { parseScheduleHtml } from "$lib/Data/hololive"; import authorisedUsers from "$lib/Data/Static/authorised.json"; -import tooltip from "$lib/Tooltip/tooltip"; import AnimeRateLimited from "$lib/Error/AnimeRateLimited.svelte"; -import identity from "$stores/identity"; +import { type ParseResult, typeSchedule } from "$lib/Hololive/hololive"; +import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; +import MarkdownLink from "$lib/MarkdownLink.svelte"; +import { estimatedDayReading } from "$lib/Media/Manga/time"; import SettingHint from "$lib/Settings/SettingHint.svelte"; +import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte"; +import tooltip from "$lib/Tooltip/tooltip"; import proxy from "$lib/Utility/proxy"; -import { parseScheduleHtml } from "$lib/Data/hololive"; +import root from "$lib/Utility/root"; +import identity from "$stores/identity"; +import locale from "$stores/locale"; +import settings from "$stores/settings"; import type { Preferences } from "../../../graphql/$types"; -import SvelteMarkdown from "@humanspeak/svelte-markdown"; -import MarkdownLink from "$lib/MarkdownLink.svelte"; -import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte"; -import { graphql } from "$houdini"; +import ParallaxImage from "../../../lib/Image/ParallaxImage.svelte"; import type { PageData } from "./$types"; export let data: PageData; @@ -118,7 +118,7 @@ const setBadgeWallCSSQuery = graphql(` $: userData = data.userData; let error = false; -let schedule: ParseResult | undefined = undefined; +let schedule: ParseResult | undefined; let draggedCategory: string | null = null; let draggedOverCategory: string | null = null; diff --git a/src/routes/user/[user]/+page.ts b/src/routes/user/[user]/+page.ts index 6ec3c845..2af22d1d 100644 --- a/src/routes/user/[user]/+page.ts +++ b/src/routes/user/[user]/+page.ts @@ -1,6 +1,6 @@ +import type { LoadEvent } from "@sveltejs/kit"; import { load_Profile } from "$houdini"; import { user } from "$lib/Data/AniList/user"; -import type { LoadEvent } from "@sveltejs/kit"; export const load = async (event: LoadEvent) => { const username = event.params.user as string; diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte index 77770498..dc43fc08 100644 --- a/src/routes/user/[user]/badges/+page.svelte +++ b/src/routes/user/[user]/badges/+page.svelte @@ -1,35 +1,35 @@ <script lang="ts"> -import Spacer from "$lib/Layout/Spacer.svelte"; -import AWC from "./../../../../lib/User/BadgeWall/AWC.svelte"; -import { user, type User } from "$lib/Data/AniList/user"; -import type { Badge } from "../../../../graphql/$types"; import { onDestroy, onMount } from "svelte"; +import { get } from "svelte/store"; +import { browser } from "$app/environment"; +import { page } from "$app/stores"; +import { activityText } from "$lib/Data/AniList/activity"; +import { type User, user } from "$lib/Data/AniList/user"; +import authorisedJson from "$lib/Data/Static/authorised.json"; import HeadTitle from "$lib/Home/HeadTitle.svelte"; +import Dropdown from "$lib/Layout/Dropdown.svelte"; +import Popup from "$lib/Layout/Popup.svelte"; +import Spacer from "$lib/Layout/Spacer.svelte"; +import Message from "$lib/Loading/Message.svelte"; +import Skeleton from "$lib/Loading/Skeleton.svelte"; +import SettingHint from "$lib/Settings/SettingHint.svelte"; +import BadgePreview from "$lib/User/BadgeWall/BadgePreview.svelte"; +import proxy from "$lib/Utility/proxy"; import { databaseTimeToDate, dateToInputTime, inputTimeToDatabaseTime, } from "$lib/Utility/time"; -import proxy from "$lib/Utility/proxy"; -import locale from "$stores/locale"; -import { get } from "svelte/store"; -import Skeleton from "$lib/Loading/Skeleton.svelte"; -import Message from "$lib/Loading/Message.svelte"; -import Dropdown from "$lib/Layout/Dropdown.svelte"; -import { activityText } from "$lib/Data/AniList/activity"; -import SettingHint from "$lib/Settings/SettingHint.svelte"; -import Popup from "$lib/Layout/Popup.svelte"; -import { page } from "$app/stores"; -import { browser } from "$app/environment"; -import BadgePreview from "$lib/User/BadgeWall/BadgePreview.svelte"; -import authorisedJson from "$lib/Data/Static/authorised.json"; import identity from "$stores/identity"; +import locale from "$stores/locale"; +import type { Badge } from "../../../../graphql/$types"; +import AWC from "./../../../../lib/User/BadgeWall/AWC.svelte"; import "$lib/User/BadgeWall/badges.css"; +import localforage from "localforage"; +import { graphql } from "$houdini"; import Badges from "$lib/User/BadgeWall/Badges.svelte"; import type { IndexedBadge } from "$lib/User/BadgeWall/badge"; -import { graphql } from "$houdini"; import type { Preferences } from "../../../../graphql/$types"; -import localforage from "localforage"; import type { PageData } from "./$types"; export let data: PageData; @@ -190,10 +190,10 @@ let error: null | string; let awcPromise: Promise<Response>; let confirmDelete = 0; let confirmPrune = 0; -let selectedBadge: IndexedBadge | undefined = undefined; +let selectedBadge: IndexedBadge | undefined; let loadError: string | null = null; const isId = /^\d+$/.test(data.username); -let importImages: ImportImage[] | undefined = undefined; +let importImages: ImportImage[] | undefined; let importLinks = false; let importCategory = ""; let importReplies = false; @@ -228,7 +228,7 @@ onMount(async () => { badger = isId ? { - id: parseInt(data.username), + id: parseInt(data.username, 10), name: "User", } : await user(data.username); @@ -379,10 +379,9 @@ const groupBadges = (badges: IndexedBadge[]) => { return Object.entries(groupedBadges) .sort((a, b) => a[1].length - b[1].length) .sort((a, b) => { - const pinnedCategories = - preferences && preferences.pinned_badge_wall_categories - ? preferences.pinned_badge_wall_categories - : ([] as string[]); + const pinnedCategories = preferences?.pinned_badge_wall_categories + ? preferences.pinned_badge_wall_categories + : ([] as string[]); const aIndex = pinnedCategories.indexOf(a[0]); const bIndex = pinnedCategories.indexOf(b[0]); @@ -410,7 +409,7 @@ const parsePost = async () => { if (type !== "activity") return null; - let text = await activityText(parseInt(id), importReplies); + let text = await activityText(parseInt(id, 10), importReplies); const images: ImportImage[] = []; diff --git a/src/routes/user/[user]/badges/+page.ts b/src/routes/user/[user]/badges/+page.ts index a14c0a6a..573b7d90 100644 --- a/src/routes/user/[user]/badges/+page.ts +++ b/src/routes/user/[user]/badges/+page.ts @@ -1,6 +1,6 @@ +import type { LoadEvent } from "@sveltejs/kit"; import { load_BadgeWallUser } from "$houdini"; import { user } from "$lib/Data/AniList/user"; -import type { LoadEvent } from "@sveltejs/kit"; export const load = async (event: LoadEvent) => { const username = event.params.user as string; diff --git a/src/service-worker.ts b/src/service-worker.ts index 777b1bab..3c06e5bb 100644 --- a/src/service-worker.ts +++ b/src/service-worker.ts @@ -4,12 +4,12 @@ /// <reference lib="webworker" /> import { build, files, version } from "$service-worker"; -import { database } from "./lib/Database/IDB/user"; import { isNotificationQueued, notifications, updateLastNotificationID, } from "./lib/Data/AniList/notifications"; +import { database } from "./lib/Database/IDB/user"; const sw = self as unknown as ServiceWorkerGlobalScope; const CACHE = `cache-${version}`; diff --git a/src/stores/airingNow.ts b/src/stores/airingNow.ts index b885b7a7..52b7bbb2 100644 --- a/src/stores/airingNow.ts +++ b/src/stores/airingNow.ts @@ -1,5 +1,5 @@ -import { browser } from "$app/environment"; import { readable } from "svelte/store"; +import { browser } from "$app/environment"; const TICK_INTERVAL_MS = 30 * 1000; diff --git a/src/stores/announcementHash.ts b/src/stores/announcementHash.ts index 0a41002f..4497036c 100644 --- a/src/stores/announcementHash.ts +++ b/src/stores/announcementHash.ts @@ -1,8 +1,8 @@ -import { browser } from "$app/environment"; import { writable } from "svelte/store"; +import { browser } from "$app/environment"; const announcementHash = writable<number>( - browser ? parseInt(localStorage.getItem("announcementHash") || "1") : 1, + browser ? parseInt(localStorage.getItem("announcementHash") || "1", 10) : 1, ); announcementHash.subscribe((value) => { diff --git a/src/stores/identity.ts b/src/stores/identity.ts index abe0b40d..230da218 100644 --- a/src/stores/identity.ts +++ b/src/stores/identity.ts @@ -1,7 +1,7 @@ +import localforage from "localforage"; +import { writable } from "svelte/store"; import { browser } from "$app/environment"; import type { UserIdentity } from "$lib/Data/AniList/identity"; -import { writable } from "svelte/store"; -import localforage from "localforage"; export const defaultIdentity: UserIdentity = { name: "", diff --git a/src/stores/lastPruneTimes.ts b/src/stores/lastPruneTimes.ts index 2a770538..9935a2b7 100644 --- a/src/stores/lastPruneTimes.ts +++ b/src/stores/lastPruneTimes.ts @@ -1,6 +1,6 @@ -import { browser } from "$app/environment"; -import { writable } from "svelte/store"; import localforage from "localforage"; +import { writable } from "svelte/store"; +import { browser } from "$app/environment"; interface LastPruneTimes { anime: number; diff --git a/src/stores/locale.ts b/src/stores/locale.ts index 1b94ea96..fc879b46 100644 --- a/src/stores/locale.ts +++ b/src/stores/locale.ts @@ -58,8 +58,7 @@ const createLocale = () => { resolved = current; } else { const fallback = $json(keyStr, FALLBACK_LOCALE); - const fallbackMissing = - fallback === keyStr || fallback == null; + const fallbackMissing = fallback === keyStr || fallback == null; if (currentMissing && fallbackMissing) return undefined; if (currentMissing) resolved = fallback; diff --git a/src/stores/settings.ts b/src/stores/settings.ts index 50dd4013..1edab858 100644 --- a/src/stores/settings.ts +++ b/src/stores/settings.ts @@ -1,10 +1,10 @@ +import { get, writable } from "svelte/store"; import { browser } from "$app/environment"; import { parseJsonStringOrDefault } from "$lib/Effect/json"; import root from "$lib/Utility/root"; -import { get, writable } from "svelte/store"; +import identity from "./identity"; import settingsSyncPulled from "./settingsSyncPulled"; import settingsSyncTimes from "./settingsSyncTimes"; -import identity from "./identity"; const VERSION = "1.0.1"; diff --git a/src/stores/stateBin.ts b/src/stores/stateBin.ts index 3fd38a99..9f5cf5fe 100644 --- a/src/stores/stateBin.ts +++ b/src/stores/stateBin.ts @@ -1,6 +1,6 @@ -import { browser } from "$app/environment"; -import { writable, get, type Writable } from "svelte/store"; import localforage from "localforage"; +import { get, type Writable, writable } from "svelte/store"; +import { browser } from "$app/environment"; interface StateBin { dueAnimeListOpen?: boolean; diff --git a/src/stores/subsPlease.ts b/src/stores/subsPlease.ts index df36ff68..a1276a1c 100644 --- a/src/stores/subsPlease.ts +++ b/src/stores/subsPlease.ts @@ -1,5 +1,5 @@ -import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; import { writable } from "svelte/store"; +import type { SubsPlease } from "$lib/Media/Anime/Airing/Subtitled/subsPlease"; const subsPlease = writable<SubsPlease>(undefined); |