From fd2a1788087bdf1d83c46232a5465b46c5aacbd9 Mon Sep 17 00:00:00 2001 From: FoxxMD Date: Fri, 31 Jul 2026 20:08:00 +0000 Subject: [PATCH] feat: Add env prefix to schema interface --- .../common/infrastructure/config/client/discord.ts | 1 + src/backend/common/infrastructure/config/client/index.ts | 3 ++- src/backend/common/infrastructure/config/client/koito.ts | 1 + src/backend/common/infrastructure/config/client/lastfm.ts | 1 + .../common/infrastructure/config/client/librefm.ts | 1 + .../common/infrastructure/config/client/listenbrainz.ts | 1 + src/backend/common/infrastructure/config/client/maloja.ts | 1 + .../common/infrastructure/config/client/rocksky.ts | 1 + src/backend/common/infrastructure/config/client/tealfm.ts | 1 + src/backend/common/infrastructure/config/common.ts | 4 ++-- .../common/infrastructure/config/source/applemusic.ts | 1 + .../common/infrastructure/config/source/azuracast.ts | 1 + .../common/infrastructure/config/source/chromecast.ts | 1 + src/backend/common/infrastructure/config/source/deezer.ts | 1 + .../common/infrastructure/config/source/endpointlfm.ts | 1 + .../common/infrastructure/config/source/endpointlz.ts | 1 + .../common/infrastructure/config/source/icecast.ts | 1 + src/backend/common/infrastructure/config/source/index.ts | 1 + .../common/infrastructure/config/source/jellyfin.ts | 1 + src/backend/common/infrastructure/config/source/jriver.ts | 1 + src/backend/common/infrastructure/config/source/kodi.ts | 1 + src/backend/common/infrastructure/config/source/koito.ts | 1 + src/backend/common/infrastructure/config/source/lastfm.ts | 1 + .../common/infrastructure/config/source/librefm.ts | 1 + .../common/infrastructure/config/source/listenbrainz.ts | 1 + src/backend/common/infrastructure/config/source/maloja.ts | 1 + src/backend/common/infrastructure/config/source/mopidy.ts | 1 + src/backend/common/infrastructure/config/source/mpd.ts | 1 + src/backend/common/infrastructure/config/source/mpris.ts | 1 + .../common/infrastructure/config/source/musiccast.ts | 1 + .../common/infrastructure/config/source/musikcube.ts | 1 + src/backend/common/infrastructure/config/source/plex.ts | 1 + .../common/infrastructure/config/source/rocksky.ts | 1 + src/backend/common/infrastructure/config/source/sonos.ts | 1 + .../common/infrastructure/config/source/spotify.ts | 1 + .../common/infrastructure/config/source/subsonic.ts | 1 + src/backend/common/infrastructure/config/source/tealfm.ts | 1 + src/backend/common/infrastructure/config/source/vlc.ts | 1 + .../common/infrastructure/config/source/webscrobbler.ts | 1 + .../common/infrastructure/config/source/ymbridge.ts | 1 + .../common/infrastructure/config/source/ytmusic.ts | 1 + src/backend/scrobblers/ScrobbleClients.ts | 8 ++++---- src/backend/sources/ScrobbleSources.ts | 8 ++++---- 43 files changed, 51 insertions(+), 11 deletions(-) diff --git a/src/backend/common/infrastructure/config/client/discord.ts b/src/backend/common/infrastructure/config/client/discord.ts index 4b3fc649..ed70f994 100644 --- a/src/backend/common/infrastructure/config/client/discord.ts +++ b/src/backend/common/infrastructure/config/client/discord.ts @@ -32,6 +32,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvClientSchema = { env: envDataSchema, + prefix: 'DISCORD', toConfig: (partial) => ({ data: { token: partial.DISCORD_TOKEN, diff --git a/src/backend/common/infrastructure/config/client/index.ts b/src/backend/common/infrastructure/config/client/index.ts index 74e3a9fb..9bb0d173 100644 --- a/src/backend/common/infrastructure/config/client/index.ts +++ b/src/backend/common/infrastructure/config/client/index.ts @@ -1,6 +1,6 @@ import * as z from "zod"; import {playTransformOptionsSchema} from "../../../../../core/Transform.ts"; -import {commonConfigSchema, requestRetryOptionsSchema, monitorOptionsSchema} from "../common.ts"; +import {commonConfigSchema, requestRetryOptionsSchema, monitorOptionsSchema, type CommonComponentEnvShape} from "../common.ts"; import {retentionConfigDurationValueSchema} from "../database.ts"; /** @@ -187,5 +187,6 @@ export type CommonClientConfig = Omit, export interface EnvClientSchema { env: Y + prefix: string toConfig: (parsed: z.output) => Partial> } \ No newline at end of file diff --git a/src/backend/common/infrastructure/config/client/koito.ts b/src/backend/common/infrastructure/config/client/koito.ts index 2132f391..b79a0c53 100644 --- a/src/backend/common/infrastructure/config/client/koito.ts +++ b/src/backend/common/infrastructure/config/client/koito.ts @@ -86,6 +86,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvClientSchema = { env: envDataSchema, + prefix: 'KOITO', toConfig: (partial) => ({ data: { url: partial.KOITO_URL, diff --git a/src/backend/common/infrastructure/config/client/lastfm.ts b/src/backend/common/infrastructure/config/client/lastfm.ts index 4f0ac6f3..9a9af602 100644 --- a/src/backend/common/infrastructure/config/client/lastfm.ts +++ b/src/backend/common/infrastructure/config/client/lastfm.ts @@ -53,6 +53,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvClientSchema = { env: envDataSchema, + prefix: 'LASTFM', toConfig: (partial) => ({ data: { apiKey: partial.LASTFM_API_KEY, diff --git a/src/backend/common/infrastructure/config/client/librefm.ts b/src/backend/common/infrastructure/config/client/librefm.ts index b795e642..5f7b9071 100644 --- a/src/backend/common/infrastructure/config/client/librefm.ts +++ b/src/backend/common/infrastructure/config/client/librefm.ts @@ -72,6 +72,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvClientSchema = { env: envDataSchema, + prefix: 'LIBREFM', toConfig: (partial) => ({ data: { apiKey: partial.LIBREFM_API_KEY, diff --git a/src/backend/common/infrastructure/config/client/listenbrainz.ts b/src/backend/common/infrastructure/config/client/listenbrainz.ts index d383219a..7145ed56 100644 --- a/src/backend/common/infrastructure/config/client/listenbrainz.ts +++ b/src/backend/common/infrastructure/config/client/listenbrainz.ts @@ -44,6 +44,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvClientSchema = { env: envDataSchema, + prefix: 'LZ', toConfig: (partial) => ({ data: { url: partial.LZ_URL, diff --git a/src/backend/common/infrastructure/config/client/maloja.ts b/src/backend/common/infrastructure/config/client/maloja.ts index 9bc1c2ba..f1f56147 100644 --- a/src/backend/common/infrastructure/config/client/maloja.ts +++ b/src/backend/common/infrastructure/config/client/maloja.ts @@ -38,6 +38,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvClientSchema = { env: envDataSchema, + prefix: 'MALOJA', toConfig: (partial) => ({ data: { url: partial.MALOJA_URL, diff --git a/src/backend/common/infrastructure/config/client/rocksky.ts b/src/backend/common/infrastructure/config/client/rocksky.ts index d91bb56d..7f46819c 100644 --- a/src/backend/common/infrastructure/config/client/rocksky.ts +++ b/src/backend/common/infrastructure/config/client/rocksky.ts @@ -48,6 +48,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvClientSchema = { env: envDataSchema, + prefix: 'ROCKSKY', toConfig: (partial) => ({ data: { key: partial.ROCKSKY_KEY, diff --git a/src/backend/common/infrastructure/config/client/tealfm.ts b/src/backend/common/infrastructure/config/client/tealfm.ts index 72ccce82..b9caef33 100644 --- a/src/backend/common/infrastructure/config/client/tealfm.ts +++ b/src/backend/common/infrastructure/config/client/tealfm.ts @@ -27,6 +27,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvClientSchema = { env: envDataSchema, + prefix: 'TEALFM', toConfig: (partial) => ({ data: { identifier: partial.TEALFM_IDENTIFIER, diff --git a/src/backend/common/infrastructure/config/common.ts b/src/backend/common/infrastructure/config/common.ts index 2a7ca19a..2365be15 100644 --- a/src/backend/common/infrastructure/config/common.ts +++ b/src/backend/common/infrastructure/config/common.ts @@ -174,7 +174,7 @@ export const transformPresetEnv = = { +export type CommonComponentEnvShape = { [K in `${T}_ID`]: z.ZodString } & { [K in `${T}_NAME`]: z.ZodOptional @@ -189,7 +189,7 @@ export const generateCommonComponentEnvConfigSchema = (prefix: [`${prefix}_ENABLE`]: z.stringbool().optional() } as CommonComponentEnvShape); -type CommonComponentEnvConfigParsed = { +export type CommonComponentEnvConfigParsed = { [K in `${T}_ID`]: string } & { [K in `${T}_NAME`]?: string diff --git a/src/backend/common/infrastructure/config/source/applemusic.ts b/src/backend/common/infrastructure/config/source/applemusic.ts index d79ce2fa..e50f7806 100644 --- a/src/backend/common/infrastructure/config/source/applemusic.ts +++ b/src/backend/common/infrastructure/config/source/applemusic.ts @@ -96,6 +96,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'APPLEMUSIC', toConfig: (partial) => { let appleMusicKey: AppleMusicKey | undefined; let token: string | undefined; diff --git a/src/backend/common/infrastructure/config/source/azuracast.ts b/src/backend/common/infrastructure/config/source/azuracast.ts index 02f85410..0bff578f 100644 --- a/src/backend/common/infrastructure/config/source/azuracast.ts +++ b/src/backend/common/infrastructure/config/source/azuracast.ts @@ -147,6 +147,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'AZURA', toConfig: (partial) => ({ data: { url: partial.AZURA_URL, diff --git a/src/backend/common/infrastructure/config/source/chromecast.ts b/src/backend/common/infrastructure/config/source/chromecast.ts index 2feaf711..dd70c271 100644 --- a/src/backend/common/infrastructure/config/source/chromecast.ts +++ b/src/backend/common/infrastructure/config/source/chromecast.ts @@ -142,6 +142,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'CC', toConfig: (partial) => ({ data: { blacklistDevices: partial.CC_BLACKLIST_DEVICES, diff --git a/src/backend/common/infrastructure/config/source/deezer.ts b/src/backend/common/infrastructure/config/source/deezer.ts index 37e5a86b..a8708389 100644 --- a/src/backend/common/infrastructure/config/source/deezer.ts +++ b/src/backend/common/infrastructure/config/source/deezer.ts @@ -113,6 +113,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'DEEZER', toConfig: (partial) => ({ data: { arl: partial.DEEZER_ARL, diff --git a/src/backend/common/infrastructure/config/source/endpointlfm.ts b/src/backend/common/infrastructure/config/source/endpointlfm.ts index f7cf2598..e4d60591 100644 --- a/src/backend/common/infrastructure/config/source/endpointlfm.ts +++ b/src/backend/common/infrastructure/config/source/endpointlfm.ts @@ -28,6 +28,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'LFM', toConfig: (partial) => ({ data: { slug: partial.LFM_SLUG diff --git a/src/backend/common/infrastructure/config/source/endpointlz.ts b/src/backend/common/infrastructure/config/source/endpointlz.ts index 0cacc7fb..58d1dfab 100644 --- a/src/backend/common/infrastructure/config/source/endpointlz.ts +++ b/src/backend/common/infrastructure/config/source/endpointlz.ts @@ -50,6 +50,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'LZE', toConfig: (partial) => ({ data: { slug: partial.LZE_SLUG, diff --git a/src/backend/common/infrastructure/config/source/icecast.ts b/src/backend/common/infrastructure/config/source/icecast.ts index 50ae8546..55431220 100644 --- a/src/backend/common/infrastructure/config/source/icecast.ts +++ b/src/backend/common/infrastructure/config/source/icecast.ts @@ -51,6 +51,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'ICECAST', toConfig: (partial) => ({ data: { url: partial.ICECAST_URL diff --git a/src/backend/common/infrastructure/config/source/index.ts b/src/backend/common/infrastructure/config/source/index.ts index 483721d5..7e6bd447 100644 --- a/src/backend/common/infrastructure/config/source/index.ts +++ b/src/backend/common/infrastructure/config/source/index.ts @@ -208,5 +208,6 @@ export type CommonSourceConfig = Omit, export interface EnvSourceSchema { env: Y + prefix: string, toConfig: (parsed: z.output) => Partial> } \ No newline at end of file diff --git a/src/backend/common/infrastructure/config/source/jellyfin.ts b/src/backend/common/infrastructure/config/source/jellyfin.ts index d465eb06..b006c135 100644 --- a/src/backend/common/infrastructure/config/source/jellyfin.ts +++ b/src/backend/common/infrastructure/config/source/jellyfin.ts @@ -138,6 +138,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'JELLYFIN', toConfig: (partial) => ({ data: { user: partial.JELLYFIN_USER, diff --git a/src/backend/common/infrastructure/config/source/jriver.ts b/src/backend/common/infrastructure/config/source/jriver.ts index f0e28e21..5c801ec3 100644 --- a/src/backend/common/infrastructure/config/source/jriver.ts +++ b/src/backend/common/infrastructure/config/source/jriver.ts @@ -55,6 +55,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'JRIVER', toConfig: (partial) => ({ data: { url: partial.JRIVER_URL, diff --git a/src/backend/common/infrastructure/config/source/kodi.ts b/src/backend/common/infrastructure/config/source/kodi.ts index 4b2b12c8..979a7f5f 100644 --- a/src/backend/common/infrastructure/config/source/kodi.ts +++ b/src/backend/common/infrastructure/config/source/kodi.ts @@ -54,6 +54,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'KODI', toConfig: (partial) => ({ data: { url: partial.KODI_URL, diff --git a/src/backend/common/infrastructure/config/source/koito.ts b/src/backend/common/infrastructure/config/source/koito.ts index b651a38c..67b29ceb 100644 --- a/src/backend/common/infrastructure/config/source/koito.ts +++ b/src/backend/common/infrastructure/config/source/koito.ts @@ -19,6 +19,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'SOURCE_KOITO', toConfig: (partial) => ({ data: { url: partial.SOURCE_KOITO_URL, diff --git a/src/backend/common/infrastructure/config/source/lastfm.ts b/src/backend/common/infrastructure/config/source/lastfm.ts index bfb23087..137b2015 100644 --- a/src/backend/common/infrastructure/config/source/lastfm.ts +++ b/src/backend/common/infrastructure/config/source/lastfm.ts @@ -20,6 +20,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'SOURCE_LASTFM', toConfig: (partial) => ({ data: { apiKey: partial.SOURCE_LASTFM_API_KEY, diff --git a/src/backend/common/infrastructure/config/source/librefm.ts b/src/backend/common/infrastructure/config/source/librefm.ts index e2ea0d4b..556bd80b 100644 --- a/src/backend/common/infrastructure/config/source/librefm.ts +++ b/src/backend/common/infrastructure/config/source/librefm.ts @@ -21,6 +21,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'SOURCE_LIBREFM', toConfig: (partial) => ({ data: { apiKey: partial.SOURCE_LIBREFM_API_KEY, diff --git a/src/backend/common/infrastructure/config/source/listenbrainz.ts b/src/backend/common/infrastructure/config/source/listenbrainz.ts index 3d373908..8bca4859 100644 --- a/src/backend/common/infrastructure/config/source/listenbrainz.ts +++ b/src/backend/common/infrastructure/config/source/listenbrainz.ts @@ -19,6 +19,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'SOURCE_LZ', toConfig: (partial) => ({ data: { url: partial.SOURCE_LZ_URL, diff --git a/src/backend/common/infrastructure/config/source/maloja.ts b/src/backend/common/infrastructure/config/source/maloja.ts index 89754720..abc62324 100644 --- a/src/backend/common/infrastructure/config/source/maloja.ts +++ b/src/backend/common/infrastructure/config/source/maloja.ts @@ -18,6 +18,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'SOURCE_MALOJA', toConfig: (partial) => ({ data: { url: partial.SOURCE_MALOJA_URL, diff --git a/src/backend/common/infrastructure/config/source/mopidy.ts b/src/backend/common/infrastructure/config/source/mopidy.ts index 9d76ae41..b06d0d1a 100644 --- a/src/backend/common/infrastructure/config/source/mopidy.ts +++ b/src/backend/common/infrastructure/config/source/mopidy.ts @@ -110,6 +110,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'MOPIDY', toConfig: (partial) => ({ data: { url: partial.MOPIDY_URL, diff --git a/src/backend/common/infrastructure/config/source/mpd.ts b/src/backend/common/infrastructure/config/source/mpd.ts index 9680e928..084191ce 100644 --- a/src/backend/common/infrastructure/config/source/mpd.ts +++ b/src/backend/common/infrastructure/config/source/mpd.ts @@ -46,6 +46,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'MPD', toConfig: (partial) => ({ data: { url: partial.MPD_URL, diff --git a/src/backend/common/infrastructure/config/source/mpris.ts b/src/backend/common/infrastructure/config/source/mpris.ts index dadf8b80..a3bfb83f 100644 --- a/src/backend/common/infrastructure/config/source/mpris.ts +++ b/src/backend/common/infrastructure/config/source/mpris.ts @@ -63,6 +63,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'MPRIS', toConfig: (partial) => ({ data: { blacklist: partial.MPRIS_BLACKLIST, diff --git a/src/backend/common/infrastructure/config/source/musiccast.ts b/src/backend/common/infrastructure/config/source/musiccast.ts index 94cb6782..37627e57 100644 --- a/src/backend/common/infrastructure/config/source/musiccast.ts +++ b/src/backend/common/infrastructure/config/source/musiccast.ts @@ -92,6 +92,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'MCAST', toConfig: (partial) => ({ data: { url: partial.MCAST_URL diff --git a/src/backend/common/infrastructure/config/source/musikcube.ts b/src/backend/common/infrastructure/config/source/musikcube.ts index afc00c4c..4de3a59a 100644 --- a/src/backend/common/infrastructure/config/source/musikcube.ts +++ b/src/backend/common/infrastructure/config/source/musikcube.ts @@ -124,6 +124,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'MC', toConfig: (partial) => ({ data: { url: partial.MC_URL, diff --git a/src/backend/common/infrastructure/config/source/plex.ts b/src/backend/common/infrastructure/config/source/plex.ts index 364eb572..3660fd4b 100644 --- a/src/backend/common/infrastructure/config/source/plex.ts +++ b/src/backend/common/infrastructure/config/source/plex.ts @@ -70,6 +70,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'PLEX', toConfig: (partial) => ({ data: { url: partial.PLEX_URL, diff --git a/src/backend/common/infrastructure/config/source/rocksky.ts b/src/backend/common/infrastructure/config/source/rocksky.ts index f05b2b2f..55220e26 100644 --- a/src/backend/common/infrastructure/config/source/rocksky.ts +++ b/src/backend/common/infrastructure/config/source/rocksky.ts @@ -18,6 +18,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'SOURCE_ROCKSKY', toConfig: (partial) => ({ data: { key: partial.SOURCE_ROCKSKY_KEY, diff --git a/src/backend/common/infrastructure/config/source/sonos.ts b/src/backend/common/infrastructure/config/source/sonos.ts index 817b9407..b2548b43 100644 --- a/src/backend/common/infrastructure/config/source/sonos.ts +++ b/src/backend/common/infrastructure/config/source/sonos.ts @@ -54,6 +54,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'SONOS', toConfig: (partial) => ({ data: { host: partial.SONOS_HOST, diff --git a/src/backend/common/infrastructure/config/source/spotify.ts b/src/backend/common/infrastructure/config/source/spotify.ts index 8a3431a5..a4302878 100644 --- a/src/backend/common/infrastructure/config/source/spotify.ts +++ b/src/backend/common/infrastructure/config/source/spotify.ts @@ -66,6 +66,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'SPOTIFY', toConfig: (partial) => ({ data: { clientId: partial.SPOTIFY_CLIENT_ID, diff --git a/src/backend/common/infrastructure/config/source/subsonic.ts b/src/backend/common/infrastructure/config/source/subsonic.ts index 55fd59f3..395cd950 100644 --- a/src/backend/common/infrastructure/config/source/subsonic.ts +++ b/src/backend/common/infrastructure/config/source/subsonic.ts @@ -110,6 +110,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'SUBSONIC', toConfig: (partial) => ({ data: { user: partial.SUBSONIC_USER, diff --git a/src/backend/common/infrastructure/config/source/tealfm.ts b/src/backend/common/infrastructure/config/source/tealfm.ts index 45bfc385..39adb78b 100644 --- a/src/backend/common/infrastructure/config/source/tealfm.ts +++ b/src/backend/common/infrastructure/config/source/tealfm.ts @@ -20,6 +20,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'SOURCE_TEALFM', toConfig: (partial) => ({ data: { identifier: partial.SOURCE_TEALFM_IDENTIFIER, diff --git a/src/backend/common/infrastructure/config/source/vlc.ts b/src/backend/common/infrastructure/config/source/vlc.ts index dc8aa3be..d960bcc0 100644 --- a/src/backend/common/infrastructure/config/source/vlc.ts +++ b/src/backend/common/infrastructure/config/source/vlc.ts @@ -38,6 +38,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'VLC', toConfig: (partial) => ({ data: { url: partial.VLC_URL, diff --git a/src/backend/common/infrastructure/config/source/webscrobbler.ts b/src/backend/common/infrastructure/config/source/webscrobbler.ts index 730fca71..910adea9 100644 --- a/src/backend/common/infrastructure/config/source/webscrobbler.ts +++ b/src/backend/common/infrastructure/config/source/webscrobbler.ts @@ -54,6 +54,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'WS', toConfig: (partial) => ({ data: { blacklist: partial.WS_BLACKLIST, diff --git a/src/backend/common/infrastructure/config/source/ymbridge.ts b/src/backend/common/infrastructure/config/source/ymbridge.ts index 23e5cf71..71821f19 100644 --- a/src/backend/common/infrastructure/config/source/ymbridge.ts +++ b/src/backend/common/infrastructure/config/source/ymbridge.ts @@ -24,6 +24,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'YMBRIDGE', toConfig: (partial) => ({ data: { url: partial.YMBRIDGE_URL, diff --git a/src/backend/common/infrastructure/config/source/ytmusic.ts b/src/backend/common/infrastructure/config/source/ytmusic.ts index 8bc7febd..bfd29ab8 100644 --- a/src/backend/common/infrastructure/config/source/ytmusic.ts +++ b/src/backend/common/infrastructure/config/source/ytmusic.ts @@ -107,6 +107,7 @@ const envDataSchema = z.object({ export const envSchemas: EnvSourceSchema = { env: envDataSchema, + prefix: 'YTM', toConfig: (partial) => ({ data: { redirectUri: partial.YTM_REDIRECT_URI, diff --git a/src/backend/scrobblers/ScrobbleClients.ts b/src/backend/scrobblers/ScrobbleClients.ts index 3c80a7fe..c4763cc6 100644 --- a/src/backend/scrobblers/ScrobbleClients.ts +++ b/src/backend/scrobblers/ScrobbleClients.ts @@ -198,13 +198,13 @@ export default class ScrobbleClients { const sourceStr = `${entry.source} ${entry.pos}`; switch (entry.source) { case 'env': { - const primitiveSchema = generateCommonComponentEnvConfigSchema(clientUpper); - const parsed = primitiveSchema.parse(entry.config); - const primitives: CommonConfigPrimitives = commonComponentEnvConfigToConfigPrimitives(clientUpper, parsed); const envSchema = clientConfigSchemaMap[clientType][2]; + const primitiveSchema = generateCommonComponentEnvConfigSchema(envSchema.prefix.toUpperCase()); + const parsed = primitiveSchema.parse(entry.config); + const primitives: CommonConfigPrimitives = commonComponentEnvConfigToConfigPrimitives(envSchema.prefix.toUpperCase(), parsed); const parsedEnvConfigValues = envSchema.env.parse(entry.config); const { data = {}, options = {} } = envSchema.toConfig(parsedEnvConfigValues); - const transformOptions = transformPresetEnv(clientUpper); + const transformOptions = transformPresetEnv(envSchema.prefix.toUpperCase()); parsedConfig = { name: `${clientType} - ${entry.source}${entry.pos !== '' ? ` - ${entry.pos}` : ''} `, ...primitives, diff --git a/src/backend/sources/ScrobbleSources.ts b/src/backend/sources/ScrobbleSources.ts index d0e4021e..a81d53cd 100644 --- a/src/backend/sources/ScrobbleSources.ts +++ b/src/backend/sources/ScrobbleSources.ts @@ -217,13 +217,13 @@ export default class ScrobbleSources { const sourceStr = `${entry.source} ${entry.pos}`; switch (entry.source) { case 'env': { - const primitiveSchema = generateCommonComponentEnvConfigSchema(configTypeUpper); - const parsed = primitiveSchema.parse(entry.config); - const primitives: CommonConfigPrimitives = commonComponentEnvConfigToConfigPrimitives(configTypeUpper, parsed); const envSchema = sourceConfigSchemaMap[configType][2]; + const primitiveSchema = generateCommonComponentEnvConfigSchema(envSchema.prefix.toUpperCase()); + const parsed = primitiveSchema.parse(entry.config); + const primitives: CommonConfigPrimitives = commonComponentEnvConfigToConfigPrimitives(envSchema.prefix.toUpperCase(), parsed); const parsedEnvConfigValues = envSchema.env.parse(entry.config); const { data = {}, options = {} } = envSchema.toConfig(parsedEnvConfigValues); - const transformOptions = transformPresetEnv(configTypeUpper); + const transformOptions = transformPresetEnv(envSchema.prefix.toUpperCase()); parsedConfig = { name: `${configType} - ${entry.source}${entry.pos !== '' ? ` - ${entry.pos}` : ''} `, ...primitives, -- 2.51.2