diff --git a/src/app.d.ts b/src/app.d.ts index f59b884..465f22f 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -1,5 +1,12 @@ // See https://kit.svelte.dev/docs/types#app // for information about these interfaces + +declare module './lib/types' { + interface EpisodeDetails { + title: string; + } +} + declare global { namespace App { // interface Error {} diff --git a/src/lib/audio/episode-data.ts b/src/lib/audio/episode-data.ts index 12ac468..99c50fd 100644 --- a/src/lib/audio/episode-data.ts +++ b/src/lib/audio/episode-data.ts @@ -1,23 +1,12 @@ import { audio_element, type AudioElementStore } from '$lib/audio/audio-element'; -import { - episode_details, - type EpisodeDetails, - type EpisodeDetailsStore, -} from '$lib/audio/episode-details'; +import { episode_details, type EpisodeDetailsStore } from '$lib/audio/episode-details'; import { podcast_preferences } from '$lib/preferences'; import { podcast_progress } from '$lib/progress'; +import type { EpisodeAttributes, EpisodeDetails } from '$lib/types'; import { warn } from '$lib/utility/package/log'; import clamp from 'just-clamp'; import { derived, get } from 'svelte/store'; -type EpisodeAttributes = { - will_autoplay: boolean; - is_muted: boolean; - duration: number; - src: string; - start_at: number; - details: EpisodeDetails; -}; const default_episode_attributes = { will_autoplay: false, is_muted: false, diff --git a/src/lib/audio/episode-details.ts b/src/lib/audio/episode-details.ts index 39951fe..551be6f 100644 --- a/src/lib/audio/episode-details.ts +++ b/src/lib/audio/episode-details.ts @@ -1,5 +1,5 @@ +import type { EpisodeDetails } from '$lib/types'; import { writable } from 'svelte/store'; -export type EpisodeDetails = Record | null; -export const episode_details = writable(null); +export const episode_details = writable(null); export type EpisodeDetailsStore = typeof episode_details; diff --git a/src/lib/audio/episode-progress.ts b/src/lib/audio/episode-progress.ts index 9f97377..d279206 100644 --- a/src/lib/audio/episode-progress.ts +++ b/src/lib/audio/episode-progress.ts @@ -1,9 +1,8 @@ import { audio_element, type AudioElementStore } from '$lib/audio/audio-element'; +import type { EpisodeProgress } from '$lib/types'; import { secondsToTimestamp } from '$lib/utility'; import { derived } from 'svelte/store'; -type EpisodeProgress = { current_time: number; timestamp: string; has_ended: boolean }; - const default_episode_progress = { current_time: 0, timestamp: '00:00', diff --git a/src/lib/types.ts b/src/lib/types.ts index 6cf569b..be88021 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -1,18 +1,22 @@ -export type AudioPlayerElement = HTMLAudioElement | undefined; - -export interface AudioMetadata { - title?: string; - artwork?: string; +export interface EpisodeDetails { + [key: string]: string | number | boolean; } -export interface AudioLoadData extends AudioMetadata { +export type EpisodeProgress = { current_time: number; timestamp: string; has_ended: boolean }; + +export type EpisodeAttributes = { + will_autoplay: boolean; + is_muted: boolean; + duration: number; src: string; -} + start_at: number; + details: EpisodeDetails | null; +}; -export interface AudioLoadOptions { +export type AudioLoadOptions = { autoplay: boolean; start_at?: number; -} +}; export interface UserPreferences { playback_rate: number;