« 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/things
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/things')
-rw-r--r--src/data/things/album.js32
-rw-r--r--src/data/things/art-tag.js4
-rw-r--r--src/data/things/artist.js8
-rw-r--r--src/data/things/artwork.js2
-rw-r--r--src/data/things/flash.js8
-rw-r--r--src/data/things/group.js10
-rw-r--r--src/data/things/homepage-layout.js2
-rw-r--r--src/data/things/language.js4
-rw-r--r--src/data/things/news-entry.js2
-rw-r--r--src/data/things/sorting-rule.js2
-rw-r--r--src/data/things/static-page.js4
-rw-r--r--src/data/things/track.js6
-rw-r--r--src/data/things/wiki-info.js36
13 files changed, 54 insertions, 66 deletions
diff --git a/src/data/things/album.js b/src/data/things/album.js
index 5f5492ce..ee25e59e 100644
--- a/src/data/things/album.js
+++ b/src/data/things/album.js
@@ -106,7 +106,7 @@ export class Album extends Thing {
 
     // > Update & expose - Identifying metadata
 
-    name: name('Unnamed Album'),
+    name: name(V('Unnamed Album')),
     directory: directory(),
 
     directorySuffix: [
@@ -117,9 +117,9 @@ export class Album extends Thing {
       exposeDependency('directory'),
     ],
 
-    alwaysReferenceByDirectory: flag(false),
-    alwaysReferenceTracksByDirectory: flag(false),
-    suffixTrackDirectories: flag(false),
+    alwaysReferenceByDirectory: flag(V(false)),
+    alwaysReferenceTracksByDirectory: flag(V(false)),
+    suffixTrackDirectories: flag(V(false)),
 
     style: [
       exposeUpdateValueOrContinue({
@@ -177,15 +177,15 @@ export class Album extends Thing {
 
     // > Update & expose - General configuration
 
-    countTracksInArtistTotals: flag(true),
+    countTracksInArtistTotals: flag(V(true)),
 
-    showAlbumInTracksWithoutArtists: flag(false),
+    showAlbumInTracksWithoutArtists: flag(V(false)),
 
-    hasTrackNumbers: flag(true),
-    isListedOnHomepage: flag(true),
-    isListedInGalleries: flag(true),
+    hasTrackNumbers: flag(V(true)),
+    isListedOnHomepage: flag(V(true)),
+    isListedInGalleries: flag(V(true)),
 
-    hideDuration: flag(false),
+    hideDuration: flag(V(false)),
 
     // > Update & expose - General metadata
 
@@ -229,7 +229,7 @@ export class Album extends Thing {
         mode: input.value('falsy'),
       }),
 
-      fileExtension('jpg'),
+      fileExtension(V('jpg')),
     ],
 
     coverArtDimensions: [
@@ -274,7 +274,7 @@ export class Album extends Thing {
 
     trackArtDate: simpleDate(),
 
-    trackCoverArtFileExtension: fileExtension('jpg'),
+    trackCoverArtFileExtension: fileExtension(V('jpg')),
 
     trackDimensions: dimensions(),
 
@@ -299,7 +299,7 @@ export class Album extends Thing {
         mode: input.value('falsy'),
       }),
 
-      fileExtension('jpg'),
+      fileExtension(V('jpg')),
     ],
 
     wallpaperStyle: [
@@ -341,7 +341,7 @@ export class Album extends Thing {
         mode: input.value('falsy'),
       }),
 
-      fileExtension('jpg'),
+      fileExtension(V('jpg')),
     ],
 
     bannerDimensions: [
@@ -959,7 +959,7 @@ export class TrackSection extends Thing {
       class: input.value(Album),
     }),
 
-    name: name('Unnamed Track Section'),
+    name: name(V('Unnamed Track Section')),
 
     unqualifiedDirectory: directory(),
 
@@ -1055,7 +1055,7 @@ export class TrackSection extends Thing {
       exposeDependency({dependency: '#album.countTracksInArtistTotals'}),
     ],
 
-    isDefaultTrackSection: flag(false),
+    isDefaultTrackSection: flag(V(false)),
 
     description: contentString(),
 
diff --git a/src/data/things/art-tag.js b/src/data/things/art-tag.js
index 9c2740ed..998aa064 100644
--- a/src/data/things/art-tag.js
+++ b/src/data/things/art-tag.js
@@ -41,10 +41,10 @@ export class ArtTag extends Thing {
   static [Thing.getPropertyDescriptors] = ({AdditionalName}) => ({
     // Update & expose
 
-    name: name('Unnamed Art Tag'),
+    name: name(V('Unnamed Art Tag')),
     directory: directory(),
     color: color(),
-    isContentWarning: flag(false),
+    isContentWarning: flag(V(false)),
     extraReadingURLs: urls(),
 
     nameShort: [
diff --git a/src/data/things/artist.js b/src/data/things/artist.js
index ce68d42d..1e7ef0e5 100644
--- a/src/data/things/artist.js
+++ b/src/data/things/artist.js
@@ -46,14 +46,14 @@ export class Artist extends Thing {
   static [Thing.getPropertyDescriptors] = () => ({
     // Update & expose
 
-    name: name('Unnamed Artist'),
+    name: name(V('Unnamed Artist')),
     directory: directory(),
     urls: urls(),
 
     contextNotes: contentString(),
 
-    hasAvatar: flag(false),
-    avatarFileExtension: fileExtension('jpg'),
+    hasAvatar: flag(V(false)),
+    avatarFileExtension: fileExtension(V('jpg')),
 
     avatarArtwork: [
       exitWithoutDependency('hasAvatar', {
@@ -65,7 +65,7 @@ export class Artist extends Thing {
         .call(this, 'Avatar Artwork'),
     ],
 
-    isAlias: flag(),
+    isAlias: flag(V(false)),
 
     artistAliases: thingList({
       class: input.value(Artist),
diff --git a/src/data/things/artwork.js b/src/data/things/artwork.js
index 579d2299..7a6c3cfb 100644
--- a/src/data/things/artwork.js
+++ b/src/data/things/artwork.js
@@ -120,7 +120,7 @@ export class Artwork extends Thing {
       constituteFrom('thing', 'dimensionsFromThingProperty'),
     ],
 
-    attachAbove: flag(false),
+    attachAbove: flag(V(false)),
 
     artistContribsFromThingProperty: simpleString(),
     artistContribsArtistProperty: simpleString(),
diff --git a/src/data/things/flash.js b/src/data/things/flash.js
index 738df937..5610dadc 100644
--- a/src/data/things/flash.js
+++ b/src/data/things/flash.js
@@ -65,7 +65,7 @@ export class Flash extends Thing {
       class: input.value(FlashAct),
     }),
 
-    name: name('Unnamed Flash'),
+    name: name(V('Unnamed Flash')),
 
     directory: {
       flags: {update: true, expose: true},
@@ -104,7 +104,7 @@ export class Flash extends Thing {
 
     date: simpleDate(),
 
-    coverArtFileExtension: fileExtension('jpg'),
+    coverArtFileExtension: fileExtension(V('jpg')),
 
     coverArtDimensions: dimensions(),
 
@@ -275,7 +275,7 @@ export class FlashAct extends Thing {
       class: input.value(FlashSide),
     }),
 
-    name: name('Unnamed Flash Act'),
+    name: name(V('Unnamed Flash Act')),
     directory: directory(),
     color: color(),
 
@@ -339,7 +339,7 @@ export class FlashSide extends Thing {
   static [Thing.getPropertyDescriptors] = ({FlashAct}) => ({
     // Update & expose
 
-    name: name('Unnamed Flash Side'),
+    name: name(V('Unnamed Flash Side')),
     directory: directory(),
     color: color(),
     listTerminology: contentString(),
diff --git a/src/data/things/group.js b/src/data/things/group.js
index 20a74fa1..b7fe49e5 100644
--- a/src/data/things/group.js
+++ b/src/data/things/group.js
@@ -39,7 +39,7 @@ export class Group extends Thing {
   static [Thing.getPropertyDescriptors] = ({Album, Artist, Series}) => ({
     // Update & expose
 
-    name: name('Unnamed Group'),
+    name: name(V('Unnamed Group')),
     directory: directory(),
 
     excludeFromGalleryTabs: [
@@ -59,7 +59,7 @@ export class Group extends Thing {
       exposeConstant(V(false)),
     ],
 
-    divideAlbumsByStyle: flag(false),
+    divideAlbumsByStyle: flag(V(false)),
 
     description: contentString(),
 
@@ -246,10 +246,10 @@ export class GroupCategory extends Thing {
   static [Thing.getPropertyDescriptors] = ({Group}) => ({
     // Update & expose
 
-    name: name('Unnamed Group Category'),
+    name: name(V('Unnamed Group Category')),
     directory: directory(),
 
-    excludeGroupsFromGalleryTabs: flag(false),
+    excludeGroupsFromGalleryTabs: flag(V(false)),
 
     color: color(),
 
@@ -295,7 +295,7 @@ export class Series extends Thing {
   static [Thing.getPropertyDescriptors] = ({Album, Group}) => ({
     // Update & expose
 
-    name: name('Unnamed Series'),
+    name: name(V('Unnamed Series')),
 
     showAlbumArtists: {
       flags: {update: true, expose: true},
diff --git a/src/data/things/homepage-layout.js b/src/data/things/homepage-layout.js
index 70505af6..c0a2aea1 100644
--- a/src/data/things/homepage-layout.js
+++ b/src/data/things/homepage-layout.js
@@ -153,7 +153,7 @@ export class HomepageLayoutSection extends Thing {
   static [Thing.getPropertyDescriptors] = ({HomepageLayoutRow}) => ({
     // Update & expose
 
-    name: name(`Unnamed Homepage Section`),
+    name: name(V(`Unnamed Homepage Section`)),
 
     color: color(),
 
diff --git a/src/data/things/language.js b/src/data/things/language.js
index 1e22ead6..7f3f43de 100644
--- a/src/data/things/language.js
+++ b/src/data/things/language.js
@@ -35,7 +35,7 @@ export class Language extends Thing {
 
     // Human-readable name. This should be the language's own native name, not
     // localized to any other language.
-    name: name(`Unnamed Language`),
+    name: name(V(`Unnamed Language`)),
 
     // Language code specific to JavaScript's Internationalization (Intl) API.
     // Usually this will be the same as the language's general code, but it
@@ -57,7 +57,7 @@ export class Language extends Thing {
     // with languages that are currently in development and not ready for
     // formal release, or which are just kept hidden as "experimental zones"
     // for wiki development or content testing.
-    hidden: flag(false),
+    hidden: flag(V(false)),
 
     // Mapping of translation keys to values (strings). Generally, don't
     // access this object directly - use methods instead.
diff --git a/src/data/things/news-entry.js b/src/data/things/news-entry.js
index 54362d06..bb35d11b 100644
--- a/src/data/things/news-entry.js
+++ b/src/data/things/news-entry.js
@@ -17,7 +17,7 @@ export class NewsEntry extends Thing {
   static [Thing.getPropertyDescriptors] = () => ({
     // Update & expose
 
-    name: name('Unnamed News Entry'),
+    name: name(V('Unnamed News Entry')),
     directory: directory(),
     date: simpleDate(),
 
diff --git a/src/data/things/sorting-rule.js b/src/data/things/sorting-rule.js
index 71b90277..101a4966 100644
--- a/src/data/things/sorting-rule.js
+++ b/src/data/things/sorting-rule.js
@@ -43,7 +43,7 @@ export class SortingRule extends Thing {
   static [Thing.getPropertyDescriptors] = () => ({
     // Update & expose
 
-    active: flag(true),
+    active: flag(V(true)),
 
     message: {
       flags: {update: true, expose: true},
diff --git a/src/data/things/static-page.js b/src/data/things/static-page.js
index 6a8ea8af..999072d3 100644
--- a/src/data/things/static-page.js
+++ b/src/data/things/static-page.js
@@ -20,7 +20,7 @@ export class StaticPage extends Thing {
   static [Thing.getPropertyDescriptors] = () => ({
     // Update & expose
 
-    name: name('Unnamed Static Page'),
+    name: name(V('Unnamed Static Page')),
 
     nameShort: {
       flags: {update: true, expose: true},
@@ -38,7 +38,7 @@ export class StaticPage extends Thing {
     script: simpleString(),
     content: contentString(),
 
-    absoluteLinks: flag(),
+    absoluteLinks: flag(V(false)),
 
     // Expose only
 
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 08b0f94f..e65c5d13 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -129,7 +129,7 @@ export class Track extends Thing {
 
     // > Update & expose - Identifying metadata
 
-    name: name('Unnamed Track'),
+    name: name(V('Unnamed Track')),
     nameText: contentString(),
 
     directory: directory({
@@ -348,8 +348,8 @@ export class Track extends Thing {
       exposeDependency('#trackSection.countTracksInArtistTotals'),
     ],
 
-    disableUniqueCoverArt: flag(),
-    disableDate: flag(),
+    disableUniqueCoverArt: flag(V(false)),
+    disableDate: flag(V(false)),
 
     // > Update & expose - General metadata
 
diff --git a/src/data/things/wiki-info.js b/src/data/things/wiki-info.js
index 258b1af0..96ae95f0 100644
--- a/src/data/things/wiki-info.js
+++ b/src/data/things/wiki-info.js
@@ -2,20 +2,15 @@ export const WIKI_INFO_FILE = 'wiki-info.yaml';
 
 import {input, V} from '#composite';
 import Thing from '#thing';
+import {isBoolean, isContributionPresetList, isLanguageCode, isName}
+  from '#validators';
 import {parseContributionPresets, parseWallpaperParts} from '#yaml';
 
-import {
-  isBoolean,
-  isColor,
-  isContributionPresetList,
-  isLanguageCode,
-  isName,
-} from '#validators';
-
 import {exitWithoutDependency, exposeConstant} from '#composite/control-flow';
 
 import {
   canonicalBase,
+  color,
   contentString,
   fileExtension,
   flag,
@@ -34,7 +29,7 @@ export class WikiInfo extends Thing {
   static [Thing.getPropertyDescriptors] = ({Group}) => ({
     // Update & expose
 
-    name: name('Unnamed Wiki'),
+    name: name(V('Unnamed Wiki')),
 
     // Displayed in nav bar.
     nameShort: {
@@ -47,14 +42,7 @@ export class WikiInfo extends Thing {
       },
     },
 
-    color: {
-      flags: {update: true, expose: true},
-      update: {validate: isColor},
-
-      expose: {
-        transform: color => color ?? '#0088ff',
-      },
-    },
+    color: color(V('#0088ff')),
 
     // One-line description used for <meta rel="description"> tag.
     description: contentString(),
@@ -69,7 +57,7 @@ export class WikiInfo extends Thing {
     canonicalBase: canonicalBase(),
     canonicalMediaBase: canonicalBase(),
 
-    wikiWallpaperFileExtension: fileExtension('jpg'),
+    wikiWallpaperFileExtension: fileExtension(V('jpg')),
     wikiWallpaperStyle: simpleString(),
     wikiWallpaperParts: wallpaperParts(),
 
@@ -84,11 +72,11 @@ export class WikiInfo extends Thing {
     },
 
     // Feature toggles
-    enableFlashesAndGames: flag(false),
-    enableListings: flag(false),
-    enableNews: flag(false),
-    enableArtTagUI: flag(false),
-    enableGroupUI: flag(false),
+    enableFlashesAndGames: flag(V(false)),
+    enableListings: flag(V(false)),
+    enableNews: flag(V(false)),
+    enableArtTagUI: flag(V(false)),
+    enableGroupUI: flag(V(false)),
 
     enableSearch: [
       exitWithoutDependency({
@@ -97,7 +85,7 @@ export class WikiInfo extends Thing {
         value: input.value(false),
       }),
 
-      flag(true),
+      flag(V(true)),
     ],
 
     // Update only