diff options
Diffstat (limited to 'src/lib')
108 files changed, 380 insertions, 394 deletions
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(/\..+/, ""); |