« get me outta code hell

Merge branch 'preview' of github.com:hsmusic/hsmusic-wiki into preview - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/things/validators.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2023-01-15 22:06:41 -0400
committer(quasar) nebula <qznebula@protonmail.com>2023-01-15 22:06:41 -0400
commitf8a38da3d747a15bd25e2759b819c1b83aaf0ba1 (patch)
treefc1b24bb02a6eabd610a022ae7cd6b72f5d1ad84 /src/data/things/validators.js
parent8494805e994dd165cc8426723e799f06c8cbefcf (diff)
parent62dbb79342927cb1fe19651e33fcc27bc2804f6e (diff)
Merge branch 'preview' of github.com:hsmusic/hsmusic-wiki into preview
Diffstat (limited to 'src/data/things/validators.js')
-rw-r--r--src/data/things/validators.js14
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);