« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/checks.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/checks.js')
-rw-r--r--src/data/checks.js35
1 files changed, 33 insertions, 2 deletions
diff --git a/src/data/checks.js b/src/data/checks.js
index 79a8d4c..fe4528e 100644
--- a/src/data/checks.js
+++ b/src/data/checks.js
@@ -37,7 +37,9 @@ export function reportDuplicateDirectories(wikiData, {
 
     const directoryPlaces = Object.create(null);
     const duplicateDirectories = new Set();
+
     const thingData = wikiData[findSpec.bindTo];
+    if (!thingData) continue;
 
     for (const thing of thingData) {
       if (findSpec.include && !findSpec.include(thing)) {
@@ -166,6 +168,10 @@ export function filterReferenceErrors(wikiData, {
       commentary: '_commentary',
     }],
 
+    ['flashData', {
+      commentary: '_commentary',
+    }],
+
     ['groupCategoryData', {
       groups: 'group',
     }],
@@ -257,7 +263,7 @@ export function filterReferenceErrors(wikiData, {
                 break;
 
               case '_contrib':
-                findFn = contribRef => findArtistOrAlias(contribRef.who);
+                findFn = contribRef => findArtistOrAlias(contribRef.artist);
                 break;
 
               case '_homepageSourceGroup':
@@ -469,6 +475,10 @@ export class ContentNodeError extends Error {
 export function reportContentTextErrors(wikiData, {
   bindFind,
 }) {
+  const additionalFileShape = {
+    description: 'description',
+  };
+
   const commentaryShape = {
     body: 'commentary body',
     artistDisplayText: 'commentary artist display text',
@@ -477,6 +487,7 @@ export function reportContentTextErrors(wikiData, {
 
   const contentTextSpec = [
     ['albumData', {
+      additionalFiles: additionalFileShape,
       commentary: commentaryShape,
     }],
 
@@ -484,8 +495,15 @@ export function reportContentTextErrors(wikiData, {
       contextNotes: '_content',
     }],
 
+    ['flashData', {
+      commentary: commentaryShape,
+    }],
+
     ['flashActData', {
-      jump: '_content',
+      listTerminology: '_content',
+    }],
+
+    ['flashSideData', {
       listTerminology: '_content',
     }],
 
@@ -506,8 +524,11 @@ export function reportContentTextErrors(wikiData, {
     }],
 
     ['trackData', {
+      additionalFiles: additionalFileShape,
       commentary: commentaryShape,
       lyrics: '_content',
+      midiProjectFiles: additionalFileShape,
+      sheetMusicFiles: additionalFileShape,
     }],
 
     ['wikiInfo', {
@@ -574,6 +595,16 @@ export function reportContentTextErrors(wikiData, {
             continue;
           }
         }
+      } else if (node.type === 'external-link') {
+        try {
+          new URL(node.data.href);
+        } catch (error) {
+          yield {
+            index, length,
+            message:
+              `Invalid URL ${colors.red(`"${node.data.href}"`)}`,
+          };
+        }
       }
     }
   }