diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-01-15 20:37:34 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-15 20:37:34 -0400 |
commit | 62dbb79342927cb1fe19651e33fcc27bc2804f6e (patch) | |
tree | 313c34f694337cae483047d9e06f0a410e44d155 /src/data/things/validators.js | |
parent | 088a0d4ef42c90d6e81586601ee6cb37340b5bf4 (diff) | |
parent | 8093844a5460683b48219dba238b0e6e864dacd8 (diff) |
Merge pull request #117 from hsmusic/track-sections
Change trackGroups to trackSections, avoid usage of a dedicated "domain-specific" Thing subclass
Diffstat (limited to 'src/data/things/validators.js')
-rw-r--r-- | src/data/things/validators.js | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/data/things/validators.js b/src/data/things/validators.js index a0d473ba..24db3c79 100644 --- a/src/data/things/validators.js +++ b/src/data/things/validators.js @@ -96,6 +96,10 @@ export function isStringNonEmpty(value) { return true; } +export function optional(validator) { + return value => value === null || value === undefined || validator(value); +} + // Complex types (non-primitives) export function isInstance(value, constructor) { @@ -252,6 +256,16 @@ export const isAdditionalFile = validateProperties({ export const isAdditionalFileList = validateArrayItems(isAdditionalFile); +export const isTrackSection = validateProperties({ + name: optional(isString), + color: optional(isColor), + dateOriginallyReleased: optional(isDate), + isDefaultTrackSection: optional(isBoolean), + tracksByRef: optional(validateReferenceList('track')), +}); + +export const isTrackSectionList = validateArrayItems(isTrackSection); + export function isDimensions(dimensions) { isArray(dimensions); |