Merge pull request #479 from FoxxMD/userTransformDefaults

fix(transform): Fix missing defaults assignment for stage config parsing
This commit is contained in:
Matt Foxx
2026-03-04 08:12:58 -05:00
committed by GitHub
@@ -11,26 +11,47 @@ export default class UserTransformer extends AtomicPartsTransformer<ConditionalS
// super(name, config);
// }
protected doParseConfig(data: StageConfig) {
protected doParseConfig(data: PlayTransformUserStage<ConditionalSearchAndReplaceRegExp[]>) {
if (!isUserStage(data)) {
throw new Error(`UserTransformer is only usable with 'user' type stages`);
}
const {
title = [],
artists = [],
album = [],
albumArtists = [],
...rest
} = data;
const {
defaults: {
title: defTitle = [],
artists: defArtist = [],
album: defAlbum = [],
albumArtists: defAA = [],
} = {},
} = this.config;
const stage: PlayTransformUserStage<ConditionalSearchAndReplaceRegExp[]> = {
...data,
...rest,
title: [...title, ...defTitle],
artists: [...artists, ...defArtist],
album: [...album, ...defAlbum],
albumArtists: [...albumArtists, ...defAA],
type: 'user'
}
for (const k of ['artists', 'title', 'album']) {
if (!(k in data)) {
for (const k of ['artists', 'title', 'album', 'albumArtists']) {
if (!(k in stage)) {
continue;
}
if (!Array.isArray(data[k])) {
if (!Array.isArray(stage[k])) {
throw new Error(`${k} must be an array`);
}
try {
isSearchAndReplaceTerm(data[k]);
stage[k] = data[k].map(configValToSearchReplace);
isSearchAndReplaceTerm(stage[k]);
stage[k] = stage[k].map(configValToSearchReplace);
} catch (e) {
throw new Error(`Property '${k}' was not a valid type`, { cause: e });
}