chore: import sort

This commit is contained in:
ThaUnknown 2025-04-26 04:31:03 +02:00
parent 0f0cf183f9
commit 433b474ead
No known key found for this signature in database
70 changed files with 200 additions and 199 deletions

View file

@ -21,7 +21,8 @@ export default tseslint.config(
'no-undef-init': 'off',
'import/order': ['error', {
'newlines-between': 'always',
groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type']
groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'],
alphabetize: { order: 'asc' }
}],
'@typescript-eslint/no-unnecessary-condition': 'warn'
// '@typescript-eslint/no-unused-vars': 'off'

View file

@ -1,8 +1,8 @@
// @ts-expect-error no types for this, that's fine
import { writeFileSync } from 'node:fs'
import { getIntrospectionQuery, type IntrospectionQuery } from 'graphql'
import { getIntrospectedSchema, minifyIntrospectionQuery } from '@urql/introspection'
import { getIntrospectionQuery, type IntrospectionQuery } from 'graphql'
const res = await fetch('https://graphql.anilist.co', {
method: 'POST',

View file

@ -1,13 +1,13 @@
<script lang='ts'>
import { PencilLine } from 'lucide-svelte'
import * as Dialog from '$lib/components/ui/dialog'
import * as Select from '$lib/components/ui/select'
import { Button } from '$lib/components/ui/button'
import * as Dialog from '$lib/components/ui/dialog'
import { Input } from '$lib/components/ui/input'
import { dragScroll } from '$lib/modules/navigate'
import * as Select from '$lib/components/ui/select'
import { cover, title, type Media } from '$lib/modules/anilist'
import { list, progress as _progress, score as _score, repeat as _repeat, authAggregator, lists } from '$lib/modules/auth'
import { dragScroll } from '$lib/modules/navigate'
export let media: Media

View file

@ -10,18 +10,18 @@
import { ChevronLeft, Play, ChevronRight } from 'lucide-svelte'
import Pagination from './Pagination.svelte'
import { Button } from './ui/button'
import { searchStore } from './SearchModal.svelte'
import { Button } from './ui/button'
import { Load } from './ui/img'
import type { EpisodesResponse } from '$lib/modules/anizip/types'
import * as Avatar from '$lib/components/ui/avatar'
import * as Tooltip from '$lib/components/ui/tooltip'
import { episodes as _episodes, dedupeAiring, episodeByAirDate, notes, type Media } from '$lib/modules/anilist'
import { cn, isMobile, since } from '$lib/utils'
import { authAggregator, list, progress } from '$lib/modules/auth'
import { click, dragScroll } from '$lib/modules/navigate'
import * as Tooltip from '$lib/components/ui/tooltip'
import * as Avatar from '$lib/components/ui/avatar'
import { cn, isMobile, since } from '$lib/utils'
export let eps: EpisodesResponse | null
export let media: Media

View file

@ -1,19 +1,19 @@
<script lang='ts' context='module'>
import { BadgeCheck, Database } from 'lucide-svelte'
import { writable } from 'simple-store-svelte'
import { MagnifyingGlass } from 'svelte-radix'
import { BadgeCheck, Database } from 'lucide-svelte'
import { Input } from './ui/input'
import { SingleCombo } from './ui/combobox'
import { Input } from './ui/input'
import type { AnitomyResult } from 'anitomyscript'
import type { TorrentResult } from 'hayase-extensions'
import { extensions } from '$lib/modules/extensions/extensions'
import * as Dialog from '$lib/components/ui/dialog'
import { settings, videoResolutions } from '$lib/modules/settings'
import { title, type Media } from '$lib/modules/anilist'
import { extensions } from '$lib/modules/extensions/extensions'
import { click, dragScroll } from '$lib/modules/navigate'
import { settings, videoResolutions } from '$lib/modules/settings'
import { fastPrettyBytes, since } from '$lib/utils'
const termMapping: Record<string, {text: string, color: string}> = {}
@ -66,9 +66,9 @@
import ProgressButton from './ui/button/progress-button.svelte'
import { Banner } from './ui/img'
import { goto } from '$app/navigation'
import { saved } from '$lib/modules/extensions'
import { server } from '$lib/modules/torrent'
import { goto } from '$app/navigation'
$: open = !!$searchStore.media

View file

@ -4,8 +4,8 @@
import { Button } from './ui/button'
import { cn } from '$lib/utils.js'
import { page } from '$app/stores'
import { cn } from '$lib/utils.js'
let className: string | undefined | null = ''
export let items: Array<{ href: string, title: string }>

View file

@ -1,6 +1,6 @@
import Root from './avatar.svelte'
import Image from './avatar-image.svelte'
import Fallback from './avatar-fallback.svelte'
import Image from './avatar-image.svelte'
import Root from './avatar.svelte'
export {
Root,

View file

@ -5,9 +5,9 @@
import { bannerSrc } from './banner-image.svelte'
import { click } from '$lib/modules/navigate'
import { desc, duration, format, season, title, type Media } from '$lib/modules/anilist'
import { of } from '$lib/modules/auth'
import { click } from '$lib/modules/navigate'
export let mediaList: Array<Media | null>
function shuffle <T extends unknown[]> (array: T): T {

View file

@ -1,9 +1,9 @@
import { type VariantProps, tv } from 'tailwind-variants'
import Root from './button.svelte'
import Play from './play.svelte'
import Favorite from './favorite.svelte'
import Bookmark from './bookmark.svelte'
import Root from './button.svelte'
import Favorite from './favorite.svelte'
import Play from './play.svelte'
import type { Button as ButtonPrimitive } from 'bits-ui'

View file

@ -3,11 +3,11 @@
import type { Media } from '$lib/modules/anilist'
import { searchStore } from '$lib/components/SearchModal.svelte'
import { Button, iconSizes, type Props } from '$lib/components/ui/button'
import { cn } from '$lib/utils'
import { list, progress } from '$lib/modules/auth'
import { clickwrap, keywrap } from '$lib/modules/navigate'
import { searchStore } from '$lib/components/SearchModal.svelte'
import { cn } from '$lib/utils'
type $$Props = Props & { media: Media }

View file

@ -5,8 +5,8 @@
import YoutubeIframe from './YoutubeIframe.svelte'
import { desc, duration, format, season, title, type Media } from '$lib/modules/anilist'
import { cn } from '$lib/utils'
import { of } from '$lib/modules/auth'
import { cn } from '$lib/utils'
export let media: Media

View file

@ -8,9 +8,9 @@
import type { Media } from '$lib/modules/anilist/types'
import { goto } from '$app/navigation'
import { coverMedium, format, title } from '$lib/modules/anilist/util'
import { hover } from '$lib/modules/navigate'
import { goto } from '$app/navigation'
export let media: Media

View file

@ -5,8 +5,8 @@
import type { Writable } from 'svelte/store'
import { click } from '$lib/modules/navigate'
import native from '$lib/modules/native'
import { click } from '$lib/modules/navigate'
export let users: Writable<Record<string, ChatUser>>

View file

@ -8,15 +8,15 @@
</script>
<script lang='ts'>
import { CaretSort, Check } from 'svelte-radix'
import { tick } from 'svelte'
import { X } from 'lucide-svelte'
import { tick } from 'svelte'
import { CaretSort, Check } from 'svelte-radix'
import { Button } from '$lib/components/ui/button'
import * as Command from '$lib/components/ui/command'
import * as Popover from '$lib/components/ui/popover'
import { Button } from '$lib/components/ui/button'
import { cn } from '$lib/utils.js'
import { intputType } from '$lib/modules/navigate'
import { cn } from '$lib/utils.js'
interface value {
value: string

View file

@ -1,14 +1,14 @@
import { Command as CommandPrimitive } from 'cmdk-sv'
import Root from './command.svelte'
import Dialog from './command-dialog.svelte'
import Empty from './command-empty.svelte'
import Group from './command-group.svelte'
import Item from './command-item.svelte'
import Input from './command-input.svelte'
import Item from './command-item.svelte'
import List from './command-list.svelte'
import Separator from './command-separator.svelte'
import Shortcut from './command-shortcut.svelte'
import Root from './command.svelte'
const Loading = CommandPrimitive.Loading

View file

@ -1,15 +1,15 @@
import { ContextMenu as ContextMenuPrimitive } from 'bits-ui'
import CheckboxItem from './context-menu-checkbox-item.svelte'
import Content from './context-menu-content.svelte'
import Item from './context-menu-item.svelte'
import Label from './context-menu-label.svelte'
import Content from './context-menu-content.svelte'
import Shortcut from './context-menu-shortcut.svelte'
import RadioGroup from './context-menu-radio-group.svelte'
import RadioItem from './context-menu-radio-item.svelte'
import Separator from './context-menu-separator.svelte'
import RadioGroup from './context-menu-radio-group.svelte'
import Shortcut from './context-menu-shortcut.svelte'
import SubContent from './context-menu-sub-content.svelte'
import SubTrigger from './context-menu-sub-trigger.svelte'
import CheckboxItem from './context-menu-checkbox-item.svelte'
const Sub = ContextMenuPrimitive.Sub
const Root = ContextMenuPrimitive.Root

View file

@ -1,12 +1,12 @@
import { Dialog as DialogPrimitive } from 'bits-ui'
import Title from './dialog-title.svelte'
import Portal from './dialog-portal.svelte'
import Content from './dialog-content.svelte'
import Description from './dialog-description.svelte'
import Footer from './dialog-footer.svelte'
import Header from './dialog-header.svelte'
import Overlay from './dialog-overlay.svelte'
import Content from './dialog-content.svelte'
import Description from './dialog-description.svelte'
import Portal from './dialog-portal.svelte'
import Title from './dialog-title.svelte'
const Root = DialogPrimitive.Root
const Trigger = DialogPrimitive.Trigger

View file

@ -1,13 +1,13 @@
import { Drawer as DrawerPrimitive } from 'vaul-svelte'
import Root from './drawer.svelte'
import Content from './drawer-content.svelte'
import Description from './drawer-description.svelte'
import Overlay from './drawer-overlay.svelte'
import Footer from './drawer-footer.svelte'
import Header from './drawer-header.svelte'
import Title from './drawer-title.svelte'
import NestedRoot from './drawer-nested.svelte'
import Overlay from './drawer-overlay.svelte'
import Title from './drawer-title.svelte'
import Root from './drawer.svelte'
const Trigger = DrawerPrimitive.Trigger
const Portal = DrawerPrimitive.Portal

View file

@ -5,10 +5,10 @@
import { Button } from '$lib/components/ui/button'
import * as Dialog from '$lib/components/ui/dialog'
import { storage, options as exopts } from '$lib/modules/extensions'
import { Input } from '$lib/components/ui/input'
import { Label } from '$lib/components/ui/label'
import { Switch } from '$lib/components/ui/switch'
import { storage, options as exopts } from '$lib/modules/extensions'
export let config: ExtensionConfig

View file

@ -7,10 +7,10 @@
import ExtensionSettings from './ExtensionSettings.svelte'
import * as Tabs from '$lib/components/ui/tabs'
import { Input } from '$lib/components/ui/input'
import { saved, storage } from '$lib/modules/extensions'
import * as Tabs from '$lib/components/ui/tabs'
import * as Tooltip from '$lib/components/ui/tooltip'
import { saved, storage } from '$lib/modules/extensions'
import { codeToEmoji } from '$lib/utils'
const typeMap = {

View file

@ -6,12 +6,12 @@
import { Write } from '.'
import type { ResultOf } from 'gql.tada'
import type { CommentFrag } from '$lib/modules/anilist/queries'
import type { ResultOf } from 'gql.tada'
import * as Avatar from '$lib/components/ui/avatar'
import { since } from '$lib/utils'
import { client } from '$lib/modules/anilist'
import { since } from '$lib/utils'
export let comment: ResultOf<typeof CommentFrag>
export let depth = 0

View file

@ -4,10 +4,10 @@
import Pagination from '../../Pagination.svelte'
import { Button } from '../button'
import * as Avatar from '$lib/components/ui/avatar'
import * as Tooltip from '$lib/components/ui/tooltip'
import { client, type Media } from '$lib/modules/anilist'
import { isMobile, since } from '$lib/utils'
import * as Tooltip from '$lib/components/ui/tooltip'
import * as Avatar from '$lib/components/ui/avatar'
export let media: Media

View file

@ -2,8 +2,8 @@
import { Button } from '../button'
import { Textarea } from '../textarea'
import { client } from '$lib/modules/anilist'
import * as Drawer from '$lib/components/ui/drawer'
import { client } from '$lib/modules/anilist'
export let isLocked = false

View file

@ -1,6 +1,6 @@
<script lang='ts'>
import type { HTMLInputAttributes } from 'svelte/elements'
import type { InputEvents } from './index.js'
import type { HTMLInputAttributes } from 'svelte/elements'
import { cn } from '$lib/utils.js'

View file

@ -1,12 +1,12 @@
<script lang='ts' context='module'>
import { writable, type Writable } from 'simple-store-svelte'
import { SendHorizontal } from 'lucide-svelte'
import { writable, type Writable } from 'simple-store-svelte'
import { Messages, UserList } from '../chat'
import MessageClient from '$lib/modules/irc'
import { client } from '$lib/modules/anilist'
import { Textarea } from '$lib/components/ui/textarea'
import { client } from '$lib/modules/anilist'
import MessageClient from '$lib/modules/irc'
const irc: Writable<Promise<MessageClient> | null> = writable(null)
</script>

View file

@ -1,24 +1,24 @@
<script lang='ts'>
import { writable } from 'svelte/store'
import { SkipBack, SkipForward } from 'lucide-svelte'
import { writable } from 'svelte/store'
import * as Sheet from '../sheet'
import { Button } from '../button'
import * as Sheet from '../sheet'
import type { TorrentFile } from '../../../../app'
import type { ResolvedFile } from './resolver'
import type { MediaInfo } from './util'
import type { TorrentFile } from '../../../../app'
import { goto } from '$app/navigation'
import { page } from '$app/stores'
import { click } from '$lib/modules/navigate'
import { episodes } from '$lib/modules/anizip'
import EpisodesList from '$lib/components/EpisodesList.svelte'
import native from '$lib/modules/native'
import { toTS } from '$lib/utils'
import * as Dialog from '$lib/components/ui/dialog'
import { episodes } from '$lib/modules/anizip'
import { authAggregator } from '$lib/modules/auth'
import native from '$lib/modules/native'
import { click } from '$lib/modules/navigate'
import { settings } from '$lib/modules/settings'
import { toTS } from '$lib/utils'
export let mediaInfo: MediaInfo
export let otherFiles: TorrentFile[]

View file

@ -1,7 +1,7 @@
<script context='module' lang='ts'>
import { persisted } from 'svelte-persisted-store'
import { writable } from 'simple-store-svelte'
import { get } from 'svelte/store'
import { persisted } from 'svelte-persisted-store'
import { keys, layout, type KeyCode } from './maps.ts'

View file

@ -1,14 +1,14 @@
<script lang='ts'>
import Player from './player.svelte'
import Externalplayer from './externalplayer.svelte'
import Player from './player.svelte'
import type { resolveFilesPoorly, ResolvedFile } from './resolver'
import type { MediaInfo } from '$lib/components/ui/player/util'
import type { resolveFilesPoorly, ResolvedFile } from './resolver'
import { cover, episodes, title } from '$lib/modules/anilist'
import { searchStore } from '$lib/components/SearchModal.svelte'
import { settings } from '$lib/modules/settings'
import { fillerEpisodes } from '$lib/components/EpisodesList.svelte'
import { searchStore } from '$lib/components/SearchModal.svelte'
import { cover, episodes, title } from '$lib/modules/anilist'
import { settings } from '$lib/modules/settings'
export let mediaInfo: NonNullable<Awaited<ReturnType<typeof resolveFilesPoorly>>>

View file

@ -5,17 +5,17 @@
import Keybinds from './keybinds.svelte'
import { normalizeSubs, normalizeTracks, type Chapter } from './util'
import type { ResolvedFile } from './resolver'
import type Subtitles from './subtitles'
import type { Writable } from 'simple-store-svelte'
import type { HTMLAttributes } from 'svelte/elements'
import type Subtitles from './subtitles'
import type { ResolvedFile } from './resolver'
import { Button } from '$lib/components/ui/button'
import * as Dialog from '$lib/components/ui/dialog'
import * as Tree from '$lib/components/ui/tree'
import { Button } from '$lib/components/ui/button'
import { cn, toTS } from '$lib/utils'
import { dragScroll } from '$lib/modules/navigate'
import { settings } from '$lib/modules/settings'
import { cn, toTS } from '$lib/utils'
export let wrapper: HTMLDivElement

View file

@ -1,11 +1,11 @@
<script lang='ts'>
import { resolveFilesPoorly } from './resolver'
import Mediahandler from './mediahandler.svelte'
import { resolveFilesPoorly } from './resolver'
import { server } from '$lib/modules/torrent'
import { page } from '$app/stores'
import { goto } from '$app/navigation'
import { page } from '$app/stores'
import { server } from '$lib/modules/torrent'
const act = server.active

View file

@ -1,40 +1,40 @@
<script lang='ts'>
import { Cast, FastForward, Maximize, Minimize, Pause, Rewind, SkipBack, SkipForward, Captions, Contrast, List, PictureInPicture2, Proportions, RefreshCcw, RotateCcw, RotateCw, ScreenShare, Volume1, Volume2, VolumeX, ChevronDown, ChevronUp, Users } from 'lucide-svelte'
import { onMount } from 'svelte'
import { fade } from 'svelte/transition'
import { persisted } from 'svelte-persisted-store'
import { toast } from 'svelte-sonner'
import { fade } from 'svelte/transition'
import { onMount } from 'svelte'
import VideoDeband from 'video-deband'
import { condition, loadWithDefaults } from './keybinds.svelte'
import Seekbar from './seekbar.svelte'
import { autoPiP, burnIn, getChaptersAniSkip, getChapterTitle, sanitizeChapters, type Chapter, type MediaInfo } from './util'
import Thumbnailer from './thumbnailer'
import Options from './options.svelte'
import Volume from './volume.svelte'
import Seekbar from './seekbar.svelte'
import Subs from './subtitles'
import Thumbnailer from './thumbnailer'
import { autoPiP, burnIn, getChaptersAniSkip, getChapterTitle, sanitizeChapters, type Chapter, type MediaInfo } from './util'
import Volume from './volume.svelte'
import type { SvelteMediaTimeRange } from 'svelte/elements'
import type { TorrentFile } from '../../../../app'
import type { ResolvedFile } from './resolver'
import type { TorrentFile } from '../../../../app'
import type { SvelteMediaTimeRange } from 'svelte/elements'
import { server } from '$lib/modules/torrent'
import PictureInPictureExit from '$lib/components/icons/PictureInPictureExit.svelte'
import * as Sheet from '$lib/components/ui/sheet'
import { goto } from '$app/navigation'
import { page } from '$app/stores'
import EpisodesList from '$lib/components/EpisodesList.svelte'
import PictureInPicture from '$lib/components/icons/PictureInPicture.svelte'
import Subtitles from '$lib/components/icons/Subtitles.svelte'
import PictureInPictureExit from '$lib/components/icons/PictureInPictureExit.svelte'
import Play from '$lib/components/icons/Play.svelte'
import Subtitles from '$lib/components/icons/Subtitles.svelte'
import { Button } from '$lib/components/ui/button'
import { settings } from '$lib/modules/settings'
import { toTS, fastPrettyBits } from '$lib/utils'
import * as Sheet from '$lib/components/ui/sheet'
import { episodes } from '$lib/modules/anizip'
import { authAggregator } from '$lib/modules/auth'
import { isPlaying } from '$lib/modules/idle'
import native from '$lib/modules/native'
import { click } from '$lib/modules/navigate'
import { goto } from '$app/navigation'
import EpisodesList from '$lib/components/EpisodesList.svelte'
import { episodes } from '$lib/modules/anizip'
import { page } from '$app/stores'
import { isPlaying } from '$lib/modules/idle'
import { authAggregator } from '$lib/modules/auth'
import { settings } from '$lib/modules/settings'
import { server } from '$lib/modules/torrent'
import { toTS, fastPrettyBits } from '$lib/utils'
export let mediaInfo: MediaInfo
export let otherFiles: TorrentFile[]

View file

@ -1,9 +1,9 @@
import anitomyscript from 'anitomyscript'
import type { AnitomyResult } from 'anitomyscript'
import type { ResultOf } from 'gql.tada'
import type { MediaEdgeFrag } from '$lib/modules/anilist/queries'
import type { TorrentFile } from '../../../../app'
import type { AnitomyResult } from 'anitomyscript'
import type { ResultOf } from 'gql.tada'
import { client, episodes, type Media } from '$lib/modules/anilist'

View file

@ -1,15 +1,15 @@
import JASSUB, { type ASS_Event as ASSEvent } from 'jassub'
import { get } from 'svelte/store'
import { writable } from 'simple-store-svelte'
import { get } from 'svelte/store'
import { fontRx, type ResolvedFile } from './resolver'
import type { TorrentFile } from '../../../../app'
import { HashMap } from '$lib/utils'
import { settings, SUPPORTS } from '$lib/modules/settings'
// import { toTS } from '$lib/utils'
import native from '$lib/modules/native'
import { settings, SUPPORTS } from '$lib/modules/settings'
import { HashMap } from '$lib/utils'
// import { toTS } from '$lib/utils'
const defaultHeader = `[Script Info]
Title: English (US)

View file

@ -1,9 +1,9 @@
import { get } from 'svelte/store'
import type { Media } from '$lib/modules/anilist'
import type { Track } from '../../../../app'
import type Subtitles from './subtitles'
import type { ResolvedFile } from './resolver'
import type Subtitles from './subtitles'
import type { Track } from '../../../../app'
import type VideoDeband from 'video-deband'
import { settings } from '$lib/modules/settings'

View file

@ -1,10 +1,10 @@
import { Select as SelectPrimitive } from 'bits-ui'
import Label from './select-label.svelte'
import Item from './select-item.svelte'
import Content from './select-content.svelte'
import Trigger from './select-trigger.svelte'
import Item from './select-item.svelte'
import Label from './select-label.svelte'
import Separator from './select-separator.svelte'
import Trigger from './select-trigger.svelte'
const Root = SelectPrimitive.Root
const Group = SelectPrimitive.Group

View file

@ -1,13 +1,13 @@
import { Dialog as SheetPrimitive } from 'bits-ui'
import { type VariantProps, tv } from 'tailwind-variants'
import Portal from './sheet-portal.svelte'
import Overlay from './sheet-overlay.svelte'
import Content from './sheet-content.svelte'
import Header from './sheet-header.svelte'
import Footer from './sheet-footer.svelte'
import Title from './sheet-title.svelte'
import Description from './sheet-description.svelte'
import Footer from './sheet-footer.svelte'
import Header from './sheet-header.svelte'
import Overlay from './sheet-overlay.svelte'
import Portal from './sheet-portal.svelte'
import Title from './sheet-title.svelte'
const Root = SheetPrimitive.Root
const Close = SheetPrimitive.Close

View file

@ -1,7 +1,7 @@
<script lang='ts'>
import { Dialog as SheetPrimitive } from 'bits-ui'
import Cross2 from 'svelte-radix/Cross2.svelte'
import { fly } from 'svelte/transition'
import Cross2 from 'svelte-radix/Cross2.svelte'
import {
SheetOverlay,

View file

@ -7,12 +7,12 @@
import SidebarButton from './SidebarButton.svelte'
import native from '$lib/modules/native'
import client from '$lib/modules/auth/client'
import * as Avatar from '$lib/components/ui/avatar'
import { lockedState, idleState, activityState } from '$lib/modules/idle'
import { page } from '$app/stores'
import Logo from '$lib/components/icons/Logo.svelte'
import * as Avatar from '$lib/components/ui/avatar'
import client from '$lib/modules/auth/client'
import { lockedState, idleState, activityState } from '$lib/modules/idle'
import native from '$lib/modules/native'
const auth = client.hasAuth

View file

@ -1,4 +1,3 @@
import Root from './table.svelte'
import Body from './table-body.svelte'
import Caption from './table-caption.svelte'
import Cell from './table-cell.svelte'
@ -6,6 +5,7 @@ import Footer from './table-footer.svelte'
import Head from './table-head.svelte'
import Header from './table-header.svelte'
import Row from './table-row.svelte'
import Root from './table.svelte'
export {
Root,

View file

@ -1,6 +1,6 @@
<script lang='ts'>
import type { HTMLTextareaAttributes } from 'svelte/elements'
import type { TextareaEvents } from './index.js'
import type { HTMLTextareaAttributes } from 'svelte/elements'
import { cn } from '$lib/utils.js'

View file

@ -1,25 +1,25 @@
import { Client, fetchExchange, queryStore, type OperationResultState, gql as _gql } from '@urql/svelte'
import { authExchange } from '@urql/exchange-auth'
import { offlineExchange } from '@urql/exchange-graphcache'
import { makeDefaultStorage } from '@urql/exchange-graphcache/default-storage'
import { authExchange } from '@urql/exchange-auth'
import { refocusExchange } from '@urql/exchange-refocus'
import { Client, fetchExchange, queryStore, type OperationResultState, gql as _gql } from '@urql/svelte'
import Bottleneck from 'bottleneck'
import lavenshtein from 'js-levenshtein'
import { readable, writable, type Writable } from 'simple-store-svelte'
import { derived } from 'svelte/store'
import lavenshtein from 'js-levenshtein'
import schema from './schema.json' with { type: 'json' }
import { CommentFrag, Comments, CustomLists, DeleteEntry, DeleteThreadComment, Entry, Following, FullMedia, FullMediaList, IDMedia, SaveThreadComment, Schedule, Search, ThreadFrag, Threads, ToggleFavourite, ToggleLike, UserLists, Viewer } from './queries'
import { currentSeason, currentYear, lastSeason, lastYear, nextSeason, nextYear } from './util'
import gql from './gql'
import { CommentFrag, Comments, CustomLists, DeleteEntry, DeleteThreadComment, Entry, Following, FullMedia, FullMediaList, IDMedia, SaveThreadComment, Schedule, Search, ThreadFrag, Threads, ToggleFavourite, ToggleLike, UserLists, Viewer } from './queries'
import schema from './schema.json' with { type: 'json' }
import { currentSeason, currentYear, lastSeason, lastYear, nextSeason, nextYear } from './util'
import type { Media } from './types'
import type { ResultOf, VariablesOf } from 'gql.tada'
import type { AnyVariables, OperationContext, RequestPolicy, TypedDocumentNode } from 'urql'
import type { Media } from './types'
import { safeLocalStorage, sleep } from '$lib/utils'
import native from '$lib/modules/native'
import { dev } from '$app/environment'
import native from '$lib/modules/native'
import { safeLocalStorage, sleep } from '$lib/utils'
function arrayEqual <T> (a: T[], b: T[]) {
return a.length === b.length && a.every((v, i) => v === b[i])

View file

@ -1,5 +1,5 @@
import type { ResultOf } from 'gql.tada'
import type { FullMedia, MediaEdgeFrag } from './queries'
import type { ResultOf } from 'gql.tada'
export type Media = ResultOf<typeof FullMedia>

View file

@ -1,7 +1,7 @@
import type { ResultOf } from 'gql.tada'
import type { Episode, Episodes } from '../anizip/types'
import type { Media } from './types'
import type { ScheduleMedia } from './queries'
import type { Media } from './types'
import type { Episode, Episodes } from '../anizip/types'
import type { ResultOf } from 'gql.tada'
export function banner (media: Pick<Media, 'trailer' | 'bannerImage' | 'coverImage'>): string | undefined {
if (media.bannerImage) return media.bannerImage

View file

@ -1,13 +1,13 @@
import { readable } from 'simple-store-svelte'
import { persisted } from 'svelte-persisted-store'
import { get } from 'svelte/store'
import { persisted } from 'svelte-persisted-store'
import { client, episodes, type Media } from '../anilist'
import local from './local'
import type { VariablesOf } from 'gql.tada'
import type { Entry } from '../anilist/queries'
import type { VariablesOf } from 'gql.tada'
export default new class AuthAggregator {
hasAuth = readable(this.checkAuth(), set => {

View file

@ -1,15 +1,15 @@
import { get } from 'svelte/store'
import anitomyscript, { type AnitomyResult } from 'anitomyscript'
import { get } from 'svelte/store'
import { dedupeAiring, episodeByAirDate, episodes, isMovie, type Media, type MediaEdge } from '../anilist'
import { settings, type videoResolutions } from '../settings'
import native from '../native'
import { episodes as _episodes } from '../anizip'
import native from '../native'
import { settings, type videoResolutions } from '../settings'
import { storage } from './storage'
import type { TorrentResult } from 'hayase-extensions'
import type { EpisodesResponse } from '../anizip/types'
import type { TorrentResult } from 'hayase-extensions'
import { options as extensionOptions, saved } from '$lib/modules/extensions'

View file

@ -1,8 +1,8 @@
import { set, getMany, delMany, del } from 'idb-keyval'
import { releaseProxy, type Remote } from 'abslink'
import { persisted } from 'svelte-persisted-store'
import { wrap } from 'abslink/w3c'
import { set, getMany, delMany, del } from 'idb-keyval'
import { get } from 'svelte/store'
import { persisted } from 'svelte-persisted-store'
import { toast } from 'svelte-sonner'
import Worker from './worker?worker'

View file

@ -1,5 +1,5 @@
import { readable } from 'svelte/store'
import { writable } from 'simple-store-svelte'
import { readable } from 'svelte/store'
export const activityState = readable<'active' | 'inactive'>(document.hasFocus() ? 'active' : 'inactive', set => {
set(document.hasFocus() ? 'active' : 'inactive')

View file

@ -5,8 +5,8 @@ import { writable } from 'simple-store-svelte'
import { decryptMessage, encryptMessage } from './crypt'
import type IrcChannel from '@thaunknown/web-irc/channel'
import type { ChatMessage, ChatUser } from '$lib/components/ui/chat'
import type IrcChannel from '@thaunknown/web-irc/channel'
export interface IRCUser { nick: string, ident: string, hostname: string, modes: string[], tags: object }
export interface PrivMessage {

View file

@ -1,11 +1,11 @@
import { readable, writable } from 'simple-store-svelte'
import { persisted } from 'svelte-persisted-store'
import { get } from 'svelte/store'
import { persisted } from 'svelte-persisted-store'
import native from '../native'
import type { Media } from '../anilist'
import type { TorrentFile, TorrentInfo } from '../../../app'
import type { Media } from '../anilist'
export const server = new class ServerClient {
last = persisted<{media: Media, id: string, episode: number} | null>('last-torrent', null)

View file

@ -1,8 +1,8 @@
import { EventEmitter } from 'events'
import Debug from 'debug'
import P2PT, { type Peer } from 'p2pt'
import { writable } from 'simple-store-svelte'
import Debug from 'debug'
import client from '../anilist/client.js'

View file

@ -1,7 +1,7 @@
import { type ClassValue, clsx } from 'clsx'
import { twMerge } from 'tailwind-merge'
import { cubicOut } from 'svelte/easing'
import { readable } from 'simple-store-svelte'
import { cubicOut } from 'svelte/easing'
import { twMerge } from 'tailwind-merge'
import type { TransitionConfig } from 'svelte/transition'

View file

@ -5,9 +5,9 @@
import { ProgressBar } from '@prgm/sveltekit-progress-bar'
import Backplate from '$lib/components/Backplate.svelte'
import Online from '$lib/components/Online.svelte'
import { Menubar } from '$lib/components/ui/menubar'
import { Toaster } from '$lib/components/ui/sonner'
import Online from '$lib/components/Online.svelte'
import native from '$lib/modules/native'
let root: HTMLDivElement

View file

@ -1,7 +1,7 @@
import { redirect } from '@sveltejs/kit'
import { outdatedComponent } from '$lib/modules/update'
import { SETUP_VERSION } from '$lib'
import { outdatedComponent } from '$lib/modules/update'
export async function load () {
if (await outdatedComponent) return redirect(307, '/update/')

View file

@ -1,9 +1,9 @@
<script lang='ts'>
import { BannerImage } from '$lib/components/ui/banner'
import { Sidebar } from '$lib/components/ui/sidebar'
import SearchModal from '$lib/components/SearchModal.svelte'
import Sidebarlist from '$lib/components/ui/sidebar/sidebarlist.svelte'
import { BannerImage } from '$lib/components/ui/banner'
import { Player } from '$lib/components/ui/player'
import { Sidebar } from '$lib/components/ui/sidebar'
import Sidebarlist from '$lib/components/ui/sidebar/sidebarlist.svelte'
</script>
<BannerImage class='absolute top-0 left-0' />

View file

@ -1,9 +1,9 @@
import { error, redirect } from '@sveltejs/kit'
import { dev } from '$app/environment'
import { SETUP_VERSION } from '$lib'
import native from '$lib/modules/native'
import { outdatedComponent } from '$lib/modules/update'
import { SETUP_VERSION } from '$lib'
export async function load () {
if (!dev && !native.isApp) return error(401, 'How did you get here?')

View file

@ -6,18 +6,18 @@
import type { LayoutData } from './$types'
import * as Dialog from '$lib/components/ui/dialog'
import * as Tooltip from '$lib/components/ui/tooltip'
import Anilist from '$lib/components/icons/Anilist.svelte'
import MyAnimeList from '$lib/components/icons/MyAnimeList.svelte'
import * as Avatar from '$lib/components/ui/avatar'
import { bannerSrc, hideBanner } from '$lib/components/ui/banner'
import { PlayButton, Button, BookmarkButton, FavoriteButton } from '$lib/components/ui/button'
import { dragScroll } from '$lib/modules/navigate'
import * as Dialog from '$lib/components/ui/dialog'
import { Load } from '$lib/components/ui/img'
import * as Tooltip from '$lib/components/ui/tooltip'
import { cover, desc, duration, format, season, status, title } from '$lib/modules/anilist'
import { authAggregator, of } from '$lib/modules/auth'
import native from '$lib/modules/native'
import MyAnimeList from '$lib/components/icons/MyAnimeList.svelte'
import Anilist from '$lib/components/icons/Anilist.svelte'
import { Load } from '$lib/components/ui/img'
import { dragScroll } from '$lib/modules/navigate'
export let data: LayoutData

View file

@ -1,13 +1,13 @@
<script lang='ts'>
import type { PageData } from './$types'
import EpisodesList from '$lib/components/EpisodesList.svelte'
import { Button } from '$lib/components/ui/button'
import { dragScroll } from '$lib/modules/navigate'
import { Threads } from '$lib/components/ui/forums'
import { Load } from '$lib/components/ui/img'
import { format, relation } from '$lib/modules/anilist'
import { authAggregator } from '$lib/modules/auth'
import EpisodesList from '$lib/components/EpisodesList.svelte'
import { Load } from '$lib/components/ui/img'
import { Threads } from '$lib/components/ui/forums'
import { dragScroll } from '$lib/modules/navigate'
export let data: PageData

View file

@ -3,12 +3,12 @@
import type { PageData } from './$types'
import Shadow from '$lib/components/Shadow.svelte'
import * as Avatar from '$lib/components/ui/avatar'
import { since } from '$lib/utils'
import { Button, iconSizes } from '$lib/components/ui/button'
import { Comments, Write } from '$lib/components/ui/forums'
import { client } from '$lib/modules/anilist'
import Shadow from '$lib/components/Shadow.svelte'
import { since } from '$lib/utils'
export let data: PageData

View file

@ -1,12 +1,12 @@
<script lang='ts' context='module'>
import { derived } from 'svelte/store'
import type { Readable } from 'simple-store-svelte'
import type { VariablesOf } from 'gql.tada'
import type { Search } from '$lib/modules/anilist/queries'
import type { VariablesOf } from 'gql.tada'
import type { Readable } from 'simple-store-svelte'
import { authAggregator } from '$lib/modules/auth'
import { client, currentSeason, currentYear } from '$lib/modules/anilist'
import { authAggregator } from '$lib/modules/auth'
interface Section {
title: string
@ -60,10 +60,10 @@
</script>
<script lang='ts'>
import { click, dragScroll } from '$lib/modules/navigate'
import { Banner, hideBanner } from '$lib/components/ui/banner'
import { goto } from '$app/navigation'
import { Banner, hideBanner } from '$lib/components/ui/banner'
import { QueryCard } from '$lib/components/ui/cards'
import { click, dragScroll } from '$lib/modules/navigate'
function handleScroll (e: Event) {
const target = e.target as HTMLDivElement

View file

@ -1,20 +1,20 @@
<script lang='ts'>
import { addMonths, endOfMonth, endOfWeek, format, isSameMonth, isToday, startOfMonth, startOfWeek, subMonths } from 'date-fns'
import { Button as ButtonPrimitive } from 'bits-ui'
import { Cross2 } from 'svelte-radix'
import { addMonths, endOfMonth, endOfWeek, format, isSameMonth, isToday, startOfMonth, startOfWeek, subMonths } from 'date-fns'
import { ChevronLeftIcon, ChevronRightIcon } from 'lucide-svelte'
import { Cross2 } from 'svelte-radix'
import type { ResultOf } from 'gql.tada'
import type { Schedule, ScheduleMedia } from '$lib/modules/anilist/queries'
import type { ResultOf } from 'gql.tada'
import { cn, isMobile } from '$lib/utils'
import * as Tooltip from '$lib/components/ui/tooltip'
import StatusDot from '$lib/components/StatusDot.svelte'
import * as Drawer from '$lib/components/ui/drawer'
import { Button } from '$lib/components/ui/button'
import { dragScroll } from '$lib/modules/navigate'
import { authAggregator } from '$lib/modules/auth'
import * as Drawer from '$lib/components/ui/drawer'
import * as Tooltip from '$lib/components/ui/tooltip'
import { dedupeAiring } from '$lib/modules/anilist'
import { authAggregator } from '$lib/modules/auth'
import { dragScroll } from '$lib/modules/navigate'
import { cn, isMobile } from '$lib/utils'
const query = authAggregator.schedule()

View file

@ -1,22 +1,22 @@
<script lang='ts'>
import { MagnifyingGlass } from 'svelte-radix'
import { FileImage, Trash, X } from 'lucide-svelte'
import { MagnifyingGlass } from 'svelte-radix'
import { toast } from 'svelte-sonner'
import { genres, years, seasons, formats, status, sort } from './values'
import type { VariablesOf } from 'gql.tada'
import type { Search } from '$lib/modules/anilist/queries'
import type { VariablesOf } from 'gql.tada'
import { page } from '$app/stores'
import { badgeVariants } from '$lib/components/ui/badge'
import { Button } from '$lib/components/ui/button'
import { QueryCard } from '$lib/components/ui/cards'
import { ComboBox } from '$lib/components/ui/combobox'
import { Input, type FormInputEvent } from '$lib/components/ui/input'
import { Button } from '$lib/components/ui/button'
import { cn, debounce, traceAnime } from '$lib/utils'
import { badgeVariants } from '$lib/components/ui/badge'
import { click, dragScroll } from '$lib/modules/navigate'
import { client } from '$lib/modules/anilist'
import { QueryCard } from '$lib/components/ui/cards'
import { page } from '$app/stores'
import { click, dragScroll } from '$lib/modules/navigate'
import { cn, debounce, traceAnime } from '$lib/utils'
// util

View file

@ -1,7 +1,7 @@
<script lang='ts'>
import { Extensions } from '$lib/components/ui/extensions'
import { SingleCombo } from '$lib/components/ui/combobox'
import SettingCard from '$lib/components/SettingCard.svelte'
import { SingleCombo } from '$lib/components/ui/combobox'
import { Extensions } from '$lib/components/ui/extensions'
import { Switch } from '$lib/components/ui/switch'
import { lookupPreferences, settings, videoResolutions } from '$lib/modules/settings'
</script>

View file

@ -18,9 +18,9 @@
import SettingCard from '$lib/components/SettingCard.svelte'
import { SingleCombo } from '$lib/components/ui/combobox'
import { Switch } from '$lib/components/ui/switch'
import { Textarea } from '$lib/components/ui/textarea'
import native from '$lib/modules/native'
import { settings, SUPPORTS } from '$lib/modules/settings'
import { Textarea } from '$lib/components/ui/textarea'
const angle = {
default: 'Default',

View file

@ -1,11 +1,11 @@
<script lang='ts'>
import { WEB_URL } from '$lib'
import Logo from '$lib/components/icons/Logo.svelte'
import { Button } from '$lib/components/ui/button'
import { Checkbox } from '$lib/components/ui/checkbox'
import { Label } from '$lib/components/ui/label'
import { click } from '$lib/modules/navigate'
import native from '$lib/modules/native'
import Logo from '$lib/components/icons/Logo.svelte'
import { click } from '$lib/modules/navigate'
let checked = false
</script>

View file

@ -12,10 +12,10 @@
<script lang='ts'>
import { Check, X } from 'lucide-svelte'
import { goto } from '$app/navigation'
import { Badge } from '$lib/components/ui/badge'
import { Button } from '$lib/components/ui/button'
import * as Tooltip from '$lib/components/ui/tooltip'
import { goto } from '$app/navigation'
export let step = 0
export let checks: Checks[] = []

View file

@ -6,12 +6,12 @@
import type { ExtensionConfig } from 'hayase-extensions'
import { Extensions } from '$lib/components/ui/extensions'
import { saved, options, storage } from '$lib/modules/extensions'
import { DEFAULT_EXTENSIONS } from '$lib'
import SettingCard from '$lib/components/SettingCard.svelte'
import { SingleCombo } from '$lib/components/ui/combobox'
import { Extensions } from '$lib/components/ui/extensions'
import { saved, options, storage } from '$lib/modules/extensions'
import { lookupPreferences, settings, SUPPORTS } from '$lib/modules/settings'
import { DEFAULT_EXTENSIONS } from '$lib'
function checkExtensions (svd: Record<string, ExtensionConfig>, opts: Record<string, {
options: Record<string, string | number | boolean | undefined>

View file

@ -35,9 +35,9 @@
import SettingCard from '$lib/components/SettingCard.svelte'
import { Input } from '$lib/components/ui/input'
import { Switch } from '$lib/components/ui/switch'
import { settings } from '$lib/modules/settings'
import native from '$lib/modules/native'
import { dragScroll } from '$lib/modules/navigate'
import { settings } from '$lib/modules/settings'
if (!speedTest.isRunning) speedTest.play()

View file

@ -6,10 +6,10 @@
import { Button } from '$lib/components/ui/button'
import { Input } from '$lib/components/ui/input'
import { Switch } from '$lib/components/ui/switch'
import { SUPPORTS, settings } from '$lib/modules/settings'
import native from '$lib/modules/native'
import { fastPrettyBytes } from '$lib/utils'
import { dragScroll } from '$lib/modules/navigate'
import { SUPPORTS, settings } from '$lib/modules/settings'
import { fastPrettyBytes } from '$lib/utils'
async function selectDownloadFolder () {
$settings.torrentPath = await native.selectDownload()

View file

@ -1,7 +1,7 @@
<script lang='ts'>
import { Button } from '$lib/components/ui/button'
import { Menubar } from '$lib/components/ui/menubar'
import { Separator } from '$lib/components/ui/separator'
import { Button } from '$lib/components/ui/button'
import native from '$lib/modules/native'
import { outdatedComponent } from '$lib/modules/update'
</script>

View file

@ -1,5 +1,5 @@
import { cleanupOutdatedCaches, precacheAndRoute } from 'workbox-precaching'
import { clientsClaim, skipWaiting } from 'workbox-core'
import { cleanupOutdatedCaches, precacheAndRoute } from 'workbox-precaching'
import { build, files, prerendered, version } from '$service-worker'