From afea13e68183cd159a253e8026d8a10169a9688e Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Fri, 24 Jul 2026 16:28:17 -0400 Subject: [PATCH] convert barrel client and source configs --- .../infrastructure/config/client/clients.ts | 104 +++-- .../infrastructure/config/source/azuracast.ts | 22 +- .../infrastructure/config/source/sources.ts | 358 +++++++++++------- 3 files changed, 306 insertions(+), 178 deletions(-) diff --git a/src/backend/common/infrastructure/config/client/clients.ts b/src/backend/common/infrastructure/config/client/clients.ts index 7adb0b9d..f6b43606 100644 --- a/src/backend/common/infrastructure/config/client/clients.ts +++ b/src/backend/common/infrastructure/config/client/clients.ts @@ -1,45 +1,76 @@ -import type {KoitoClientAIOConfig, KoitoClientConfig} from "./koito.ts"; -import type {LastfmClientAIOConfig, LastfmClientConfig} from "./lastfm.ts"; -import type {ListenBrainzClientAIOConfig, ListenBrainzClientConfig} from "./listenbrainz.ts"; -import type {MalojaClientAIOConfig, MalojaClientConfig} from "./maloja.ts"; -import type {TealClientAIOConfig, TealClientConfig} from "./tealfm.ts"; -import type {RockSkyClientAIOConfig, RockSkyClientConfig} from "./rocksky.ts"; -import type {LibrefmClientConfig, LibrefmClientAIOConfig} from "./librefm.ts"; -import type {DiscordClientAIOConfig, DiscordClientConfig} from "./discord.ts"; - -export type ClientConfig = -MalojaClientConfig -| LastfmClientConfig -| LibrefmClientConfig -| ListenBrainzClientConfig -| KoitoClientConfig -| TealClientConfig -| RockSkyClientConfig -| DiscordClientConfig; - -export type ClientAIOConfig = MalojaClientAIOConfig -| LastfmClientAIOConfig -| LibrefmClientAIOConfig -| ListenBrainzClientAIOConfig -| KoitoClientAIOConfig -| TealClientAIOConfig -| RockSkyClientAIOConfig -| DiscordClientAIOConfig; +import * as z from "zod"; +import {koitoClientAIOConfigSchema, koitoClientConfigSchema} from "./koito.ts"; +import {lastfmClientAIOConfigSchema, lastfmClientConfigSchema} from "./lastfm.ts"; +import {listenBrainzClientAIOConfigSchema, listenBrainzClientConfigSchema} from "./listenbrainz.ts"; +import {malojaClientAIOConfigSchema, malojaClientConfigSchema} from "./maloja.ts"; +import {tealClientAIOConfigSchema, tealClientConfigSchema} from "./tealfm.ts"; +import {rockSkyClientAIOConfigSchema, rockSkyClientConfigSchema} from "./rocksky.ts"; +import {librefmClientAIOConfigSchema, librefmClientConfigSchema} from "./librefm.ts"; +import {discordClientAIOConfigSchema, discordClientConfigSchema} from "./discord.ts"; + +export const clientConfigSchema = z.union([ + malojaClientConfigSchema, + lastfmClientConfigSchema, + librefmClientConfigSchema, + listenBrainzClientConfigSchema, + koitoClientConfigSchema, + tealClientConfigSchema, + rockSkyClientConfigSchema, + discordClientConfigSchema, +]); + +export type ClientConfig = z.infer; + +export const clientAIOConfigSchema = z.union([ + malojaClientAIOConfigSchema, + lastfmClientAIOConfigSchema, + librefmClientAIOConfigSchema, + listenBrainzClientAIOConfigSchema, + koitoClientAIOConfigSchema, + tealClientAIOConfigSchema, + rockSkyClientAIOConfigSchema, + discordClientAIOConfigSchema, +]); + +export type ClientAIOConfig = z.infer; /** Used for docusaurus schemas * We need to show "array of" for each type of config when looking at File Config - * + * * This is defined in the AIO config and we *assume* arrays in individual files when parsing in builders * But we don't have any actual definitions for this that we can pull for generating individual schema files */ -export type MalojaClientConfigs = MalojaClientConfig[]; -export type LastfmClientConfigs = LastfmClientConfig[]; -export type LibrefmClientConfigs = LibrefmClientConfig[]; -export type ListenBrainzClientConfigs = ListenBrainzClientConfig[]; -export type KoitoClientConfigs = KoitoClientConfig[]; -export type TealClientConfigs = TealClientConfig[]; -export type RockSkyClientConfigs = RockSkyClientConfig[]; -export type DiscordClientConfigs = DiscordClientConfig[]; +export const malojaClientConfigsSchema = z.array(malojaClientConfigSchema); + +export type MalojaClientConfigs = z.infer; + +export const lastfmClientConfigsSchema = z.array(lastfmClientConfigSchema); + +export type LastfmClientConfigs = z.infer; + +export const librefmClientConfigsSchema = z.array(librefmClientConfigSchema); + +export type LibrefmClientConfigs = z.infer; + +export const listenBrainzClientConfigsSchema = z.array(listenBrainzClientConfigSchema); + +export type ListenBrainzClientConfigs = z.infer; + +export const koitoClientConfigsSchema = z.array(koitoClientConfigSchema); + +export type KoitoClientConfigs = z.infer; + +export const tealClientConfigsSchema = z.array(tealClientConfigSchema); + +export type TealClientConfigs = z.infer; + +export const rockSkyClientConfigsSchema = z.array(rockSkyClientConfigSchema); + +export type RockSkyClientConfigs = z.infer; + +export const discordClientConfigsSchema = z.array(discordClientConfigSchema); + +export type DiscordClientConfigs = z.infer; export const atomicClientInterfaces = [ 'MalojaClientConfig', @@ -56,4 +87,3 @@ export const clientInterfaces = [ 'AIOClientRelaxedConfig', ...atomicClientInterfaces ]; - diff --git a/src/backend/common/infrastructure/config/source/azuracast.ts b/src/backend/common/infrastructure/config/source/azuracast.ts index 299270fd..3b1a6965 100644 --- a/src/backend/common/infrastructure/config/source/azuracast.ts +++ b/src/backend/common/infrastructure/config/source/azuracast.ts @@ -1,5 +1,5 @@ import * as z from "zod"; -import type {CommonSourceConfig, CommonSourceData, CommonSourceOptions} from "./index.ts"; +import {commonSourceConfigSchema, commonSourceDataSchema, commonSourceOptionsSchema, manualListeningOptionsSchema} from "./index.ts"; export const azuraStationInfoResponseSchema = z.object({ id: z.string(), @@ -61,6 +61,7 @@ export type AzuraStationResponse = z.infer; export const azuracastDataSchema = z.object({ + ...commonSourceDataSchema.shape, /** * Base URL of the Azuracast instance * @@ -119,26 +120,25 @@ export const azuracastDataSchema = z.object({ }) }); -export type AzuracastData = z.infer & CommonSourceData; +export type AzuracastData = z.infer; -// `AzuracastSourceoptions` has no properties of its own - it is purely a merge of `CommonSourceOptions` and -// `ManualListeningOptions`, neither of which has a zod schema yet (they live in ./index.ts and haven't been -// converted). There is nothing to validate here beyond those parent shapes, so this is a plain intersection type. -export const azuracastSourceoptionsSchema = z.object({}); +export const azuracastSourceoptionsSchema = z.object({ + ...commonSourceOptionsSchema.shape, + ...manualListeningOptionsSchema.shape, +}); -export type AzuracastSourceoptions = z.infer & CommonSourceOptions & ManualListeningOptions; +export type AzuracastSourceoptions = z.infer; -// `CommonSourceConfig` (./index.ts) doesn't have a zod schema yet, so only this interface's own `data` field -// is represented here; the parent's fields are restored via intersection on the exported type. export const azuracastSourceConfigSchema = z.object({ + ...commonSourceConfigSchema.shape, data: azuracastDataSchema }); -export type AzuracastSourceConfig = z.infer & CommonSourceConfig; +export type AzuracastSourceConfig = z.infer; export const azuracastSourceAIOConfigSchema = z.object({ ...azuracastSourceConfigSchema.shape, type: z.literal('azuracast') }); -export type AzuracastSourceAIOConfig = z.infer & CommonSourceConfig; +export type AzuracastSourceAIOConfig = z.infer; diff --git a/src/backend/common/infrastructure/config/source/sources.ts b/src/backend/common/infrastructure/config/source/sources.ts index 7957f4fd..ebc98a93 100644 --- a/src/backend/common/infrastructure/config/source/sources.ts +++ b/src/backend/common/infrastructure/config/source/sources.ts @@ -1,138 +1,238 @@ -import type {AzuracastSourceAIOConfig, AzuracastSourceConfig} from "./azuracast.ts"; -import type {ChromecastSourceAIOConfig, ChromecastSourceConfig} from "./chromecast.ts"; -import type {ListenbrainzEndpointSourceAIOConfig, ListenbrainzEndpointSourceConfig} from "./endpointlz.ts"; -import type {LastFMEndpointSourceAIOConfig, LastFMEndpointSourceConfig} from "./endpointlfm.ts"; -import type {DeezerInternalSourceConfig, DeezerSourceConfig, DeezerCompatConfig, DeezerAIOCompatConfig} from "./deezer.ts"; -import type {JellyApiSourceAIOConfig, JellyApiSourceConfig} from "./jellyfin.ts"; -import type {JRiverSourceAIOConfig, JRiverSourceConfig} from "./jriver.ts"; -import type {KodiSourceAIOConfig, KodiSourceConfig} from "./kodi.ts"; -import type {LastFmSouceAIOConfig, LastfmSourceConfig} from "./lastfm.ts"; -import type {ListenBrainzSourceAIOConfig, ListenBrainzSourceConfig} from "./listenbrainz.ts"; -import type {MopidySourceAIOConfig, MopidySourceConfig} from "./mopidy.ts"; -import type {MPDSourceAIOConfig, MPDSourceConfig} from "./mpd.ts"; -import type {MPRISSourceAIOConfig, MPRISSourceConfig} from "./mpris.ts"; -import type {MusikcubeSourceAIOConfig, MusikcubeSourceConfig} from "./musikcube.ts"; -import type {MusicCastSourceConfig, MusicCastSourceAIOConfig} from "./musiccast.ts"; -import type {PlexApiSourceConfig, PlexApiSourceAIOConfig} from "./plex.ts"; -import type {SpotifySourceAIOConfig, SpotifySourceConfig} from "./spotify.ts"; -import type {SubsonicSourceAIOConfig, SubSonicSourceConfig} from "./subsonic.ts"; -import type {VLCSourceAIOConfig, VLCSourceConfig} from "./vlc.ts"; -import type {WebScrobblerSourceAIOConfig, WebScrobblerSourceConfig} from "./webscrobbler.ts"; -import type {YTMusicSourceAIOConfig, YTMusicSourceConfig} from "./ytmusic.ts"; -import type {YandexMusicBridgeSourceAIOConfig, YandexMusicBridgeSourceConfig} from "./ymbridge.ts"; -import type {IcecastSourceAIOConfig, IcecastSourceConfig} from "./icecast.ts"; -import type {KoitoSourceAIOConfig, KoitoSourceConfig} from "./koito.ts"; -import type {MalojaSourceAIOConfig, MalojaSourceConfig} from "./maloja.ts"; -import type {TealSourceAIOConfig, TealSourceConfig} from "./tealfm.ts"; -import type {RockskySourceAIOConfig, RockskySourceConfig} from "./rocksky.ts"; -import type {LibrefmSouceAIOConfig, LibrefmSourceConfig} from "./librefm.ts"; -import type {SonosSourceAIOConfig, SonosSourceConfig} from "./sonos.ts"; -import type {AppleMusicSourceAIOConfig, AppleMusicSourceConfig} from "./applemusic.ts"; - - -export type SourceConfig = - SpotifySourceConfig - | PlexApiSourceConfig - | DeezerCompatConfig - | ListenbrainzEndpointSourceConfig - | LastFMEndpointSourceConfig - | SubSonicSourceConfig - | JellyApiSourceConfig - | LastfmSourceConfig - | LibrefmSourceConfig - | YTMusicSourceConfig - | YandexMusicBridgeSourceConfig - | MPRISSourceConfig - | MopidySourceConfig - | ListenBrainzSourceConfig - | JRiverSourceConfig - | KodiSourceConfig - | WebScrobblerSourceConfig - | ChromecastSourceConfig - | MalojaSourceConfig - | MusikcubeSourceConfig - | MusicCastSourceConfig - | MPDSourceConfig - | VLCSourceConfig - | IcecastSourceConfig - | AzuracastSourceConfig - | KoitoSourceConfig - | TealSourceConfig - | RockskySourceConfig - | SonosSourceConfig - | AppleMusicSourceConfig; - -export type SourceAIOConfig = - SpotifySourceAIOConfig - | PlexApiSourceAIOConfig - | DeezerAIOCompatConfig - | ListenbrainzEndpointSourceAIOConfig - | LastFMEndpointSourceAIOConfig - | SubsonicSourceAIOConfig - | JellyApiSourceAIOConfig - | LastFmSouceAIOConfig - | LibrefmSouceAIOConfig - | YTMusicSourceAIOConfig - | YandexMusicBridgeSourceAIOConfig - | MPRISSourceAIOConfig - | MopidySourceAIOConfig - | ListenBrainzSourceAIOConfig - | JRiverSourceAIOConfig - | KodiSourceAIOConfig - | WebScrobblerSourceAIOConfig - | ChromecastSourceAIOConfig - | MalojaSourceAIOConfig - | MusikcubeSourceAIOConfig - | MusicCastSourceAIOConfig - | MPDSourceAIOConfig - | VLCSourceAIOConfig - | IcecastSourceAIOConfig - | AzuracastSourceAIOConfig - | KoitoSourceAIOConfig - | TealSourceAIOConfig - | RockskySourceAIOConfig - | SonosSourceAIOConfig - | AppleMusicSourceAIOConfig; +import * as z from "zod"; +import {azuracastSourceAIOConfigSchema, azuracastSourceConfigSchema} from "./azuracast.ts"; +import {chromecastSourceAIOConfigSchema, chromecastSourceConfigSchema} from "./chromecast.ts"; +import {listenbrainzEndpointSourceAIOConfigSchema, listenbrainzEndpointSourceConfigSchema} from "./endpointlz.ts"; +import {lastFmEndpointSourceAIOConfigSchema, lastFmEndpointSourceConfigSchema} from "./endpointlfm.ts"; +import {deezerInternalSourceConfigSchema, deezerSourceConfigSchema, deezerCompatConfigSchema, deezerAIOCompatConfigSchema} from "./deezer.ts"; +import {jellyApiSourceAIOConfigSchema, jellyApiSourceConfigSchema} from "./jellyfin.ts"; +import {jRiverSourceAIOConfigSchema, jRiverSourceConfigSchema} from "./jriver.ts"; +import {kodiSourceAIOConfigSchema, kodiSourceConfigSchema} from "./kodi.ts"; +import {lastFmSouceAIOConfigSchema, lastfmSourceConfigSchema} from "./lastfm.ts"; +import {listenBrainzSourceAIOConfigSchema, listenBrainzSourceConfigSchema} from "./listenbrainz.ts"; +import {mopidySourceAIOConfigSchema, mopidySourceConfigSchema} from "./mopidy.ts"; +import {mpdSourceAIOConfigSchema, mpdSourceConfigSchema} from "./mpd.ts"; +import {mprisSourceAIOConfigSchema, mprisSourceConfigSchema} from "./mpris.ts"; +import {musikcubeSourceAIOConfigSchema, musikcubeSourceConfigSchema} from "./musikcube.ts"; +import {musicCastSourceConfigSchema, musicCastSourceAIOConfigSchema} from "./musiccast.ts"; +import {plexApiSourceConfigSchema, plexApiSourceAIOConfigSchema} from "./plex.ts"; +import {spotifySourceAIOConfigSchema, spotifySourceConfigSchema} from "./spotify.ts"; +import {subsonicSourceAIOConfigSchema, subSonicSourceConfigSchema} from "./subsonic.ts"; +import {vlcSourceAIOConfigSchema, vlcSourceConfigSchema} from "./vlc.ts"; +import {webScrobblerSourceAIOConfigSchema, webScrobblerSourceConfigSchema} from "./webscrobbler.ts"; +import {ytMusicSourceAIOConfigSchema, ytMusicSourceConfigSchema} from "./ytmusic.ts"; +import {yandexMusicBridgeSourceAIOConfigSchema, yandexMusicBridgeSourceConfigSchema} from "./ymbridge.ts"; +import {icecastSourceAIOConfigSchema, icecastSourceConfigSchema} from "./icecast.ts"; +import {koitoSourceAIOConfigSchema, koitoSourceConfigSchema} from "./koito.ts"; +import {malojaSourceAIOConfigSchema, malojaSourceConfigSchema} from "./maloja.ts"; +import {tealSourceAIOConfigSchema, tealSourceConfigSchema} from "./tealfm.ts"; +import {rockskySourceAIOConfigSchema, rockskySourceConfigSchema} from "./rocksky.ts"; +import {librefmSouceAIOConfigSchema, librefmSourceConfigSchema} from "./librefm.ts"; +import {sonosSourceAIOConfigSchema, sonosSourceConfigSchema} from "./sonos.ts"; +import {appleMusicSourceAIOConfigSchema, appleMusicSourceConfigSchema} from "./applemusic.ts"; + +export const sourceConfigSchema = z.union([ + spotifySourceConfigSchema, + plexApiSourceConfigSchema, + deezerCompatConfigSchema, + listenbrainzEndpointSourceConfigSchema, + lastFmEndpointSourceConfigSchema, + subSonicSourceConfigSchema, + jellyApiSourceConfigSchema, + lastfmSourceConfigSchema, + librefmSourceConfigSchema, + ytMusicSourceConfigSchema, + yandexMusicBridgeSourceConfigSchema, + mprisSourceConfigSchema, + mopidySourceConfigSchema, + listenBrainzSourceConfigSchema, + jRiverSourceConfigSchema, + kodiSourceConfigSchema, + webScrobblerSourceConfigSchema, + chromecastSourceConfigSchema, + malojaSourceConfigSchema, + musikcubeSourceConfigSchema, + musicCastSourceConfigSchema, + mpdSourceConfigSchema, + vlcSourceConfigSchema, + icecastSourceConfigSchema, + azuracastSourceConfigSchema, + koitoSourceConfigSchema, + tealSourceConfigSchema, + rockskySourceConfigSchema, + sonosSourceConfigSchema, + appleMusicSourceConfigSchema, +]); + +export type SourceConfig = z.infer; + +export const sourceAIOConfigSchema = z.union([ + spotifySourceAIOConfigSchema, + plexApiSourceAIOConfigSchema, + deezerAIOCompatConfigSchema, + listenbrainzEndpointSourceAIOConfigSchema, + lastFmEndpointSourceAIOConfigSchema, + subsonicSourceAIOConfigSchema, + jellyApiSourceAIOConfigSchema, + lastFmSouceAIOConfigSchema, + librefmSouceAIOConfigSchema, + ytMusicSourceAIOConfigSchema, + yandexMusicBridgeSourceAIOConfigSchema, + mprisSourceAIOConfigSchema, + mopidySourceAIOConfigSchema, + listenBrainzSourceAIOConfigSchema, + jRiverSourceAIOConfigSchema, + kodiSourceAIOConfigSchema, + webScrobblerSourceAIOConfigSchema, + chromecastSourceAIOConfigSchema, + malojaSourceAIOConfigSchema, + musikcubeSourceAIOConfigSchema, + musicCastSourceAIOConfigSchema, + mpdSourceAIOConfigSchema, + vlcSourceAIOConfigSchema, + icecastSourceAIOConfigSchema, + azuracastSourceAIOConfigSchema, + koitoSourceAIOConfigSchema, + tealSourceAIOConfigSchema, + rockskySourceAIOConfigSchema, + sonosSourceAIOConfigSchema, + appleMusicSourceAIOConfigSchema, +]); + +export type SourceAIOConfig = z.infer; /** Used for docusaurus schemas * We need to show "array of" for each type of config when looking at File Config - * + * * This is defined in the AIO config and we *assume* arrays in individual files when parsing in builders * But we don't have any actual definitions for this that we can pull for generating individual schema files */ -export type SpotifySourceConfigs = SpotifySourceConfig[]; -export type PlexApiSourceConfigs = PlexApiSourceConfig[]; -export type DeezerSourceConfigs = DeezerSourceConfig[]; -export type DeezerInternalSourceConfigs = DeezerInternalSourceConfig[]; -export type DeezerCompatConfigs = DeezerCompatConfig[]; -export type ListenbrainzEndpointSourceConfigs = ListenbrainzEndpointSourceConfig[]; -export type LastFMEndpointSourceConfigs = LastFMEndpointSourceConfig[]; -export type SubSonicSourceConfigs = SubSonicSourceConfig[]; -export type JellyApiSourceConfigs = JellyApiSourceConfig[]; -export type LastfmSourceConfigs = LastfmSourceConfig[]; -export type LibrefmSourceConfigs = LibrefmSourceConfig[]; -export type YTMusicSourceConfigs = YTMusicSourceConfig[]; -export type YandexMusicBridgeSourceConfigs = YandexMusicBridgeSourceConfig[]; -export type MPRISSourceConfigs = MPRISSourceConfig[]; -export type MopidySourceConfigs = MopidySourceConfig[]; -export type ListenBrainzSourceConfigs = ListenBrainzSourceConfig[]; -export type JRiverSourceConfigs = JRiverSourceConfig[]; -export type KodiSourceConfigs = KodiSourceConfig[]; -export type WebScrobblerSourceConfigs = WebScrobblerSourceConfig[]; -export type ChromecastSourceConfigs = ChromecastSourceConfig[]; -export type MalojaSourceConfigs = MalojaSourceConfig[]; -export type MusikcubeSourceConfigs = MusikcubeSourceConfig[]; -export type MusicCastSourceConfigs = MusicCastSourceConfig[]; -export type MPDSourceConfigs = MPDSourceConfig[]; -export type VLCSourceConfigs = VLCSourceConfig[]; -export type IcecastSourceConfigs = IcecastSourceConfig[]; -export type AzuracastSourceConfigs = AzuracastSourceConfig[]; -export type KoitoSourceConfigs = KoitoSourceConfig[]; -export type TealSourceConfigs = TealSourceConfig[]; -export type RockskySourceConfigs = RockskySourceConfig[]; -export type SonosSourceConfigs = SonosSourceConfig[]; -export type AppleMusicSourceConfigs = AppleMusicSourceConfig[]; +export const spotifySourceConfigsSchema = z.array(spotifySourceConfigSchema); + +export type SpotifySourceConfigs = z.infer; + +export const plexApiSourceConfigsSchema = z.array(plexApiSourceConfigSchema); + +export type PlexApiSourceConfigs = z.infer; + +export const deezerSourceConfigsSchema = z.array(deezerSourceConfigSchema); + +export type DeezerSourceConfigs = z.infer; + +export const deezerInternalSourceConfigsSchema = z.array(deezerInternalSourceConfigSchema); + +export type DeezerInternalSourceConfigs = z.infer; + +export const deezerCompatConfigsSchema = z.array(deezerCompatConfigSchema); + +export type DeezerCompatConfigs = z.infer; + +export const listenbrainzEndpointSourceConfigsSchema = z.array(listenbrainzEndpointSourceConfigSchema); + +export type ListenbrainzEndpointSourceConfigs = z.infer; + +export const lastFmEndpointSourceConfigsSchema = z.array(lastFmEndpointSourceConfigSchema); + +export type LastFMEndpointSourceConfigs = z.infer; + +export const subSonicSourceConfigsSchema = z.array(subSonicSourceConfigSchema); + +export type SubSonicSourceConfigs = z.infer; + +export const jellyApiSourceConfigsSchema = z.array(jellyApiSourceConfigSchema); + +export type JellyApiSourceConfigs = z.infer; + +export const lastfmSourceConfigsSchema = z.array(lastfmSourceConfigSchema); + +export type LastfmSourceConfigs = z.infer; + +export const librefmSourceConfigsSchema = z.array(librefmSourceConfigSchema); + +export type LibrefmSourceConfigs = z.infer; + +export const ytMusicSourceConfigsSchema = z.array(ytMusicSourceConfigSchema); + +export type YTMusicSourceConfigs = z.infer; + +export const yandexMusicBridgeSourceConfigsSchema = z.array(yandexMusicBridgeSourceConfigSchema); + +export type YandexMusicBridgeSourceConfigs = z.infer; + +export const mprisSourceConfigsSchema = z.array(mprisSourceConfigSchema); + +export type MPRISSourceConfigs = z.infer; + +export const mopidySourceConfigsSchema = z.array(mopidySourceConfigSchema); + +export type MopidySourceConfigs = z.infer; + +export const listenBrainzSourceConfigsSchema = z.array(listenBrainzSourceConfigSchema); +export type ListenBrainzSourceConfigs = z.infer; + +export const jRiverSourceConfigsSchema = z.array(jRiverSourceConfigSchema); + +export type JRiverSourceConfigs = z.infer; + +export const kodiSourceConfigsSchema = z.array(kodiSourceConfigSchema); + +export type KodiSourceConfigs = z.infer; + +export const webScrobblerSourceConfigsSchema = z.array(webScrobblerSourceConfigSchema); + +export type WebScrobblerSourceConfigs = z.infer; + +export const chromecastSourceConfigsSchema = z.array(chromecastSourceConfigSchema); + +export type ChromecastSourceConfigs = z.infer; + +export const malojaSourceConfigsSchema = z.array(malojaSourceConfigSchema); + +export type MalojaSourceConfigs = z.infer; + +export const musikcubeSourceConfigsSchema = z.array(musikcubeSourceConfigSchema); + +export type MusikcubeSourceConfigs = z.infer; + +export const musicCastSourceConfigsSchema = z.array(musicCastSourceConfigSchema); + +export type MusicCastSourceConfigs = z.infer; + +export const mpdSourceConfigsSchema = z.array(mpdSourceConfigSchema); + +export type MPDSourceConfigs = z.infer; + +export const vlcSourceConfigsSchema = z.array(vlcSourceConfigSchema); + +export type VLCSourceConfigs = z.infer; + +export const icecastSourceConfigsSchema = z.array(icecastSourceConfigSchema); + +export type IcecastSourceConfigs = z.infer; + +export const azuracastSourceConfigsSchema = z.array(azuracastSourceConfigSchema); + +export type AzuracastSourceConfigs = z.infer; + +export const koitoSourceConfigsSchema = z.array(koitoSourceConfigSchema); + +export type KoitoSourceConfigs = z.infer; + +export const tealSourceConfigsSchema = z.array(tealSourceConfigSchema); + +export type TealSourceConfigs = z.infer; + +export const rockskySourceConfigsSchema = z.array(rockskySourceConfigSchema); + +export type RockskySourceConfigs = z.infer; + +export const sonosSourceConfigsSchema = z.array(sonosSourceConfigSchema); + +export type SonosSourceConfigs = z.infer; + +export const appleMusicSourceConfigsSchema = z.array(appleMusicSourceConfigSchema); + +export type AppleMusicSourceConfigs = z.infer; export const atomicSourceInterfaces = [ 'SpotifySourceConfig', @@ -171,5 +271,3 @@ export const sourceInterfaces = [ 'AIOSourceRelaxedConfig', ...atomicSourceInterfaces ]; - - -- 2.51.2