diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-03-04 20:27:24 -0400 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-06-18 22:56:00 -0300 |
commit | 75505899c70594e250bdcb582fd2f5c40a971639 (patch) | |
tree | 98556b485e13d6090875d6e1cf1fcdc20ecbf571 /src/data/validators.js | |
parent | 7f3bd77e36839b8601b498b6d13c0a60406d9899 (diff) |
data: WikiInfo: contributionPresets
Diffstat (limited to 'src/data/validators.js')
-rw-r--r-- | src/data/validators.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/data/validators.js b/src/data/validators.js index 5d681311..0f1d2e62 100644 --- a/src/data/validators.js +++ b/src/data/validators.js @@ -640,6 +640,58 @@ export const isContribution = validateProperties({ export const isContributionList = validateArrayItems(isContribution); +export const contributionPresetPropertySpec = { + album: [ + 'artistContribs', + ], + + flash: [ + 'contributorContribs', + ], + + track: [ + 'artistContribs', + 'contributorContribs', + ], +}; + +// TODO: This validator basically constructs itself as it goes. +// This is definitely some shenanigans! +export function isContributionPresetContext(list) { + isArray(list); + + if (empty(list)) { + throw new TypeError(`Expected at least one item`); + } + + const isTarget = + is(...Object.keys(contributionPresetPropertySpec)); + + const [target, ...properties] = list; + + isTarget(target); + + const isProperty = + is(...contributionPresetPropertySpec[target]); + + const isPropertyList = + validateArrayItems(isProperty); + + isPropertyList(properties); + + return true; +} + +export const isContributionPreset = validateProperties({ + annotation: isStringNonEmpty, + context: isContributionPresetContext, + + countInDurationTotals: optional(isBoolean), + countInContributionTotals: optional(isBoolean), +}); + +export const isContributionPresetList = validateArrayItems(isContributionPreset); + export const isAdditionalFile = validateProperties({ title: isName, description: optional(isContentString), |