mirror of
https://github.com/FoxxMD/multi-scrobbler.git
synced 2026-09-03 05:10:00 +03:00
Merge pull request #479 from FoxxMD/userTransformDefaults
fix(transform): Fix missing defaults assignment for stage config parsing
This commit is contained in:
@@ -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 });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user