« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/validators.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/validators.js')
-rw-r--r--src/validators.js33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/validators.js b/src/validators.js
index 28f3cef7..8f32e669 100644
--- a/src/validators.js
+++ b/src/validators.js
@@ -839,10 +839,39 @@ export const validateURLEntry = (isURL) =>
   });
 
 export const isURLEntry =
-  validateURLEntry(isURL);
+  validateProperties({
+    url: isURL,
+    annotation: optional(isStringNonEmpty),
+  });
 
 export const isCuratedURLEntry =
-  validateURLEntry(isCuratedURL);
+  (() => {
+    const commonProperties = {
+      annotation: optional(isStringNonEmpty),
+    };
+
+    const pickyValidator =
+      validateProperties({
+        url: isCuratedURL,
+        ...commonProperties,
+        bypassValidation: optional(is(false)),
+      });
+
+    const niceysValidator =
+      validateProperties({
+        url: isURL,
+        ...commonProperties,
+        bypassValidation: is(true),
+      });
+
+    return value => {
+      if (typeof value === 'object' && value.bypassValidation) {
+        return niceysValidator(value);
+      } else {
+        return pickyValidator(value);
+      }
+    };
+  })();
 
 export const isURLList =
   validateArrayItems(isURLEntry);