aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Announcement.svelte8
-rw-r--r--src/lib/CommandPalette/CommandPalette.svelte6
-rw-r--r--src/lib/CommandPalette/actions.ts5
-rw-r--r--src/lib/CommandPalette/authActions.ts7
-rw-r--r--src/lib/CommandPalette/syncActions.ts6
-rw-r--r--src/lib/CommandPalette/toggleActions.ts4
-rw-r--r--src/lib/Data/AniList/activity.ts12
-rw-r--r--src/lib/Data/AniList/cacheHydration.ts2
-rw-r--r--src/lib/Data/AniList/character.ts32
-rw-r--r--src/lib/Data/AniList/follow.ts2
-rw-r--r--src/lib/Data/AniList/following.ts4
-rw-r--r--src/lib/Data/AniList/forum.ts2
-rw-r--r--src/lib/Data/AniList/identity.ts6
-rw-r--r--src/lib/Data/AniList/media.ts51
-rw-r--r--src/lib/Data/AniList/notifications.ts6
-rw-r--r--src/lib/Data/AniList/prequels.ts2
-rw-r--r--src/lib/Data/AniList/user.ts4
-rw-r--r--src/lib/Data/AniList/wrapped.ts15
-rw-r--r--src/lib/Data/hololive.ts5
-rw-r--r--src/lib/Data/senpy.ts16
-rw-r--r--src/lib/Database/IDB/activities.ts2
-rw-r--r--src/lib/Database/IDB/user.ts2
-rw-r--r--src/lib/Effect/authCookie.test.ts2
-rw-r--r--src/lib/Effect/authCookie.ts2
-rw-r--r--src/lib/Effect/json.test.ts2
-rw-r--r--src/lib/Effect/requestBody.test.ts2
-rw-r--r--src/lib/Error/AnimeRateLimited.svelte2
-rw-r--r--src/lib/Error/LogInRestricted.svelte4
-rw-r--r--src/lib/Events/AniListBadges/EasterEvent2025/EasterEgg.svelte4
-rw-r--r--src/lib/Hololive/Lives.svelte2
-rw-r--r--src/lib/Hololive/Stream.svelte4
-rw-r--r--src/lib/Home/HeadTitle.svelte4
-rw-r--r--src/lib/Home/LastActivity.svelte8
-rw-r--r--src/lib/Home/Root.svelte2
-rw-r--r--src/lib/Landing.svelte4
-rw-r--r--src/lib/LandingHero.svelte4
-rw-r--r--src/lib/Layout/NumberTicker.svelte2
-rw-r--r--src/lib/Layout/Popup.svelte2
-rw-r--r--src/lib/Layout/TextTransition.svelte2
-rw-r--r--src/lib/Lazy.svelte2
-rw-r--r--src/lib/List/Anime/AnimeListTemplate.svelte18
-rw-r--r--src/lib/List/Anime/CleanAnimeList.svelte27
-rw-r--r--src/lib/List/Anime/CompletedAnimeList.svelte10
-rw-r--r--src/lib/List/Anime/DueAnimeList.svelte18
-rw-r--r--src/lib/List/Anime/DueIndexColumn.svelte6
-rw-r--r--src/lib/List/Anime/UpcomingAnimeList.svelte24
-rw-r--r--src/lib/List/CleanGrid.svelte2
-rw-r--r--src/lib/List/CleanList.svelte2
-rw-r--r--src/lib/List/ListTitle.svelte2
-rw-r--r--src/lib/List/Manga/MangaListTemplate.svelte4
-rw-r--r--src/lib/List/MediaRoulette.svelte4
-rw-r--r--src/lib/List/MediaTitleDisplay.svelte4
-rw-r--r--src/lib/List/mediaTitle.ts2
-rw-r--r--src/lib/Loading/Message.svelte6
-rw-r--r--src/lib/Locale/english.ts2
-rw-r--r--src/lib/Locale/japanese.ts2
-rw-r--r--src/lib/Locale/layout.ts4
-rw-r--r--src/lib/Media/Anime/Airing/AiringTime.svelte4
-rw-r--r--src/lib/Media/Anime/Airing/Subtitled/match.ts8
-rw-r--r--src/lib/Media/Anime/Airing/classify.test.ts6
-rw-r--r--src/lib/Media/Anime/Airing/format.ts2
-rw-r--r--src/lib/Media/Anime/Airing/time.ts4
-rw-r--r--src/lib/Media/Anime/cache.ts2
-rw-r--r--src/lib/Media/Cover/hoverCover.ts4
-rw-r--r--src/lib/Media/Manga/cache.ts2
-rw-r--r--src/lib/Media/invalidate.ts6
-rw-r--r--src/lib/Notification/Notification.svelte2
-rw-r--r--src/lib/Notification/NotificationsProvider.svelte2
-rw-r--r--src/lib/Reader/Chapters/Rawkuma.svelte2
-rw-r--r--src/lib/Schedule/Crunchyroll.svelte10
-rw-r--r--src/lib/Schedule/Days.svelte17
-rw-r--r--src/lib/Settings/Categories/Cache.svelte2
-rw-r--r--src/lib/Settings/Categories/Debug.svelte12
-rw-r--r--src/lib/Settings/Categories/Display.svelte14
-rw-r--r--src/lib/Settings/Categories/RSSFeeds.svelte4
-rw-r--r--src/lib/Settings/Categories/SettingSync.svelte8
-rw-r--r--src/lib/Settings/SettingCheckboxToggle.svelte2
-rw-r--r--src/lib/Settings/SettingToggle.svelte2
-rw-r--r--src/lib/Tools/ActivityHistory/Grid.svelte10
-rw-r--r--src/lib/Tools/ActivityHistory/Tool.svelte23
-rw-r--r--src/lib/Tools/Birthdays.svelte10
-rw-r--r--src/lib/Tools/BirthdaysTemplate.svelte8
-rw-r--r--src/lib/Tools/DumpProfile.svelte6
-rw-r--r--src/lib/Tools/EpisodeDiscussionCollector.svelte8
-rw-r--r--src/lib/Tools/Hayai.svelte4
-rw-r--r--src/lib/Tools/InputTemplate.svelte4
-rw-r--r--src/lib/Tools/Likes.svelte2
-rw-r--r--src/lib/Tools/RandomFollower.svelte4
-rw-r--r--src/lib/Tools/SequelCatcher/List.svelte7
-rw-r--r--src/lib/Tools/SequelCatcher/Tool.svelte14
-rw-r--r--src/lib/Tools/SequelSpy/Prequels.svelte2
-rw-r--r--src/lib/Tools/SequelSpy/Tool.svelte14
-rw-r--r--src/lib/Tools/Tracker/Tool.svelte9
-rw-r--r--src/lib/Tools/UmaMusumeBirthdays.svelte8
-rw-r--r--src/lib/Tools/Wrapped/Tool.svelte75
-rw-r--r--src/lib/Tools/Wrapped/Top/Activity.svelte2
-rw-r--r--src/lib/Tools/tools.ts2
-rw-r--r--src/lib/Tooltip/LinkedTooltip.svelte4
-rw-r--r--src/lib/User/BadgeWall/AWC.svelte4
-rw-r--r--src/lib/User/BadgeWall/BadgePreview.svelte13
-rw-r--r--src/lib/User/BadgeWall/Badges.svelte8
-rw-r--r--src/lib/User/BadgeWall/FallbackBadge.svelte12
-rw-r--r--src/lib/Utility/html.ts2
-rw-r--r--src/lib/Utility/image.ts6
-rw-r--r--src/lib/Utility/oauth.ts2
-rw-r--r--src/lib/Utility/parameters.ts2
-rw-r--r--src/lib/Utility/persistentStore.ts2
-rw-r--r--src/lib/Utility/time.ts2
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, "&nbsp;");
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(/\..+/, "");