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