« get me outta code hell

data: Album: chop withTracks, withCoverArtDate - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-11-26 18:50:55 -0400
committer(quasar) nebula <qznebula@protonmail.com>2025-11-26 18:50:55 -0400
commit342c028a597aa42c5ddf0f47a4fd1b2111289dd7 (patch)
treef1b20dcd56fdd2e35b7e9fda7cf965a2dc71d235 /src/data
parent8f64d50645a6cabc16ba12d31e5872b693e860f6 (diff)
data: Album: chop withTracks, withCoverArtDate
Diffstat (limited to 'src/data')
-rw-r--r--src/data/composite/things/album/index.js2
-rw-r--r--src/data/composite/things/album/withCoverArtDate.js50
-rw-r--r--src/data/composite/things/album/withTracks.js29
-rw-r--r--src/data/things/album.js82
4 files changed, 49 insertions, 114 deletions
diff --git a/src/data/composite/things/album/index.js b/src/data/composite/things/album/index.js
deleted file mode 100644
index de1d37c3..00000000
--- a/src/data/composite/things/album/index.js
+++ /dev/null
@@ -1,2 +0,0 @@
-export {default as withCoverArtDate} from './withCoverArtDate.js';
-export {default as withTracks} from './withTracks.js';
diff --git a/src/data/composite/things/album/withCoverArtDate.js b/src/data/composite/things/album/withCoverArtDate.js
deleted file mode 100644
index c006fab9..00000000
--- a/src/data/composite/things/album/withCoverArtDate.js
+++ /dev/null
@@ -1,50 +0,0 @@
-import {input, templateCompositeFrom} from '#composite';
-import {isDate} from '#validators';
-
-import {raiseOutputWithoutDependency} from '#composite/control-flow';
-import {withHasArtwork} from '#composite/wiki-data';
-
-export default templateCompositeFrom({
-  annotation: `withCoverArtDate`,
-
-  inputs: {
-    from: input({
-      validate: isDate,
-      defaultDependency: '_coverArtDate',
-      acceptsNull: true,
-    }),
-  },
-
-  outputs: ['#coverArtDate'],
-
-  steps: () => [
-    withHasArtwork({
-      contribs: '_coverArtistContribs',
-      artworks: '_coverArtworks',
-    }),
-
-    raiseOutputWithoutDependency({
-      dependency: '#hasArtwork',
-      mode: input.value('falsy'),
-      output: input.value({'#coverArtDate': null}),
-    }),
-
-    {
-      dependencies: [input('from')],
-      compute: (continuation, {
-        [input('from')]: from,
-      }) =>
-        (from
-          ? continuation.raiseOutput({'#coverArtDate': from})
-          : continuation()),
-    },
-
-    {
-      dependencies: ['date'],
-      compute: (continuation, {date}) =>
-        (date
-          ? continuation({'#coverArtDate': date})
-          : continuation({'#coverArtDate': null})),
-    },
-  ],
-});
diff --git a/src/data/composite/things/album/withTracks.js b/src/data/composite/things/album/withTracks.js
deleted file mode 100644
index 835ee570..00000000
--- a/src/data/composite/things/album/withTracks.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import {input, templateCompositeFrom} from '#composite';
-
-import {withFlattenedList, withPropertyFromList} from '#composite/data';
-
-import {raiseOutputWithoutDependency} from '#composite/control-flow';
-
-export default templateCompositeFrom({
-  annotation: `withTracks`,
-
-  outputs: ['#tracks'],
-
-  steps: () => [
-    raiseOutputWithoutDependency({
-      dependency: 'trackSections',
-      output: input.value({'#tracks': []}),
-    }),
-
-    withPropertyFromList({
-      list: 'trackSections',
-      property: input.value('tracks'),
-    }),
-
-    withFlattenedList({
-      list: '#trackSections.tracks',
-    }).outputs({
-      ['#flattenedList']: '#tracks',
-    }),
-  ],
-});
diff --git a/src/data/things/album.js b/src/data/things/album.js
index 594046b9..42db1773 100644
--- a/src/data/things/album.js
+++ b/src/data/things/album.js
@@ -34,8 +34,6 @@ import {
   parseWallpaperParts,
 } from '#yaml';
 
-import {withPropertyFromObject} from '#composite/data';
-
 import {
   exitWithoutDependency,
   exposeConstant,
@@ -45,6 +43,12 @@ import {
 } from '#composite/control-flow';
 
 import {
+  withFlattenedList,
+  withPropertyFromList,
+  withPropertyFromObject,
+} from '#composite/data';
+
+import {
   exitWithoutArtwork,
   withDirectory,
   withHasArtwork,
@@ -77,7 +81,6 @@ import {
   wikiData,
 } from '#composite/wiki-properties';
 
-import {withCoverArtDate, withTracks} from '#composite/things/album';
 import {withContinueCountingFrom, withStartCountingFrom}
   from '#composite/things/track-section';
 
@@ -219,23 +222,29 @@ export class Album extends Thing {
         .call(this, 'Cover Artwork'),
     ],
 
-    coverArtistContribs: [
-      withCoverArtDate(),
+    coverArtistContribs: contributionList({
+      date: 'coverArtDate',
+      artistProperty: input.value('albumCoverArtistContributions'),
+    }),
 
-      contributionList({
-        date: '#coverArtDate',
-        artistProperty: input.value('albumCoverArtistContributions'),
+    coverArtDate: [
+      withHasArtwork({
+        contribs: '_coverArtistContribs',
+        artworks: '_coverArtworks',
       }),
-    ],
 
-    coverArtDate: [
-      withCoverArtDate({
-        from: input.updateValue({
-          validate: isDate,
-        }),
+      exitWithoutDependency({
+        dependency: '#hasArtwork',
+        mode: input.value('falsy'),
+      }),
+
+      exposeUpdateValueOrContinue({
+        validate: input.value(isDate),
       }),
 
-      exposeDependency({dependency: '#coverArtDate'}),
+      exposeDependency({
+        dependency: 'date',
+      }),
     ],
 
     coverArtFileExtension: [
@@ -306,14 +315,10 @@ export class Album extends Thing {
         .call(this, 'Wallpaper Artwork'),
     ],
 
-    wallpaperArtistContribs: [
-      withCoverArtDate(),
-
-      contributionList({
-        date: '#coverArtDate',
-        artistProperty: input.value('albumWallpaperArtistContributions'),
-      }),
-    ],
+    wallpaperArtistContribs: contributionList({
+      date: 'coverArtDate',
+      artistProperty: input.value('albumWallpaperArtistContributions'),
+    }),
 
     wallpaperFileExtension: [
       exitWithoutArtwork({
@@ -355,14 +360,10 @@ export class Album extends Thing {
         .call(this, 'Banner Artwork'),
     ],
 
-    bannerArtistContribs: [
-      withCoverArtDate(),
-
-      contributionList({
-        date: '#coverArtDate',
-        artistProperty: input.value('albumBannerArtistContributions'),
-      }),
-    ],
+    bannerArtistContribs: contributionList({
+      date: 'coverArtDate',
+      artistProperty: input.value('albumBannerArtistContributions'),
+    }),
 
     bannerFileExtension: [
       exitWithoutArtwork({
@@ -452,8 +453,23 @@ export class Album extends Thing {
     hasBannerArt: contribsPresent({contribs: '_bannerArtistContribs'}),
 
     tracks: [
-      withTracks(),
-      exposeDependency({dependency: '#tracks'}),
+      exitWithoutDependency({
+        dependency: 'trackSections',
+        value: input.value([]),
+      }),
+
+      withPropertyFromList({
+        list: 'trackSections',
+        property: input.value('tracks'),
+      }),
+
+      withFlattenedList({
+        list: '#trackSections.tracks',
+      }),
+
+      exposeDependency({
+        dependency: '#flattenedList',
+      }),
     ],
   });