« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/data/composite/things/track/index.js1
-rw-r--r--src/data/composite/things/track/inheritContributionListFromMainRelease.js5
-rw-r--r--src/data/composite/things/track/withDate.js42
-rw-r--r--src/data/composite/things/track/withTrackArtDate.js9
-rw-r--r--src/data/things/track.js32
5 files changed, 28 insertions, 61 deletions
diff --git a/src/data/composite/things/track/index.js b/src/data/composite/things/track/index.js
index c7c43f4c..35deb93f 100644
--- a/src/data/composite/things/track/index.js
+++ b/src/data/composite/things/track/index.js
@@ -4,7 +4,6 @@ export {default as inheritContributionListFromMainRelease} from './inheritContri
 export {default as inheritFromMainRelease} from './inheritFromMainRelease.js';
 export {default as withAllReleases} from './withAllReleases.js';
 export {default as withCoverArtistContribs} from './withCoverArtistContribs.js';
-export {default as withDate} from './withDate.js';
 export {default as withDirectorySuffix} from './withDirectorySuffix.js';
 export {default as withMainRelease} from './withMainRelease.js';
 export {default as withMainReleaseTrack} from './withMainReleaseTrack.js';
diff --git a/src/data/composite/things/track/inheritContributionListFromMainRelease.js b/src/data/composite/things/track/inheritContributionListFromMainRelease.js
index 89252feb..d3d0a442 100644
--- a/src/data/composite/things/track/inheritContributionListFromMainRelease.js
+++ b/src/data/composite/things/track/inheritContributionListFromMainRelease.js
@@ -8,7 +8,6 @@ import {exposeDependency, raiseOutputWithoutDependency}
 import {withRecontextualizedContributionList, withRedatedContributionList}
   from '#composite/wiki-data';
 
-import withDate from './withDate.js';
 import withPropertyFromMainRelease
   from './withPropertyFromMainRelease.js';
 
@@ -30,11 +29,9 @@ export default templateCompositeFrom({
       list: '#mainReleaseValue',
     }),
 
-    withDate(),
-
     withRedatedContributionList({
       list: '#mainReleaseValue',
-      date: '#date',
+      date: 'date',
     }),
 
     exposeDependency({
diff --git a/src/data/composite/things/track/withDate.js b/src/data/composite/things/track/withDate.js
deleted file mode 100644
index 1851c0d2..00000000
--- a/src/data/composite/things/track/withDate.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// Gets the track's own date. This is either its dateFirstReleased property
-// or, if unset, the album's date.
-
-import {input, templateCompositeFrom} from '#composite';
-
-import withPropertyFromAlbum from './withPropertyFromAlbum.js';
-
-export default templateCompositeFrom({
-  annotation: `withDate`,
-
-  outputs: ['#date'],
-
-  steps: () => [
-    {
-      dependencies: ['disableDate'],
-      compute: (continuation, {disableDate}) =>
-        (disableDate
-          ? continuation.raiseOutput({'#date': null})
-          : continuation()),
-    },
-
-    {
-      dependencies: ['dateFirstReleased'],
-      compute: (continuation, {dateFirstReleased}) =>
-        (dateFirstReleased
-          ? continuation.raiseOutput({'#date': dateFirstReleased})
-          : continuation()),
-    },
-
-    withPropertyFromAlbum({
-      property: input.value('date'),
-    }),
-
-    {
-      dependencies: ['#album.date'],
-      compute: (continuation, {['#album.date']: albumDate}) =>
-        (albumDate
-          ? continuation.raiseOutput({'#date': albumDate})
-          : continuation.raiseOutput({'#date': null})),
-    },
-  ],
-})
diff --git a/src/data/composite/things/track/withTrackArtDate.js b/src/data/composite/things/track/withTrackArtDate.js
index b7eff5ad..d7d043d6 100644
--- a/src/data/composite/things/track/withTrackArtDate.js
+++ b/src/data/composite/things/track/withTrackArtDate.js
@@ -3,7 +3,6 @@ import {isDate} from '#validators';
 
 import {raiseOutputWithoutDependency} from '#composite/control-flow';
 
-import withDate from './withDate.js';
 import withPropertyFromAlbum from './withPropertyFromAlbum.js';
 
 export default templateCompositeFrom({
@@ -50,8 +49,10 @@ export default templateCompositeFrom({
           : continuation()),
     },
 
-    withDate().outputs({
-      '#date': '#trackArtDate',
-    }),
+    {
+      dependencies: ['date'],
+      compute: (continuation, {date}) =>
+        continuation({'#trackArtDate': date}),
+    },
   ],
 });
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 3c72468a..62333136 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -83,7 +83,6 @@ import {
   inheritFromMainRelease,
   withAllReleases,
   withCoverArtistContribs,
-  withDate,
   withDirectorySuffix,
   withMainRelease,
   withMainReleaseTrack,
@@ -227,13 +226,11 @@ export class Track extends Thing {
     ],
 
     artistContribs: [
-      withDate(),
-
       withResolvedContribs({
         from: input.updateValue({validate: isContributionList}),
         thingProperty: input.thisProperty(),
         artistProperty: input.value('trackArtistContributions'),
-        date: '#date',
+        date: 'date',
       }).outputs({
         '#resolvedContribs': '#artistContribs',
       }),
@@ -258,7 +255,7 @@ export class Track extends Thing {
 
       withRedatedContributionList({
         list: '#album.trackArtistContribs',
-        date: '#date',
+        date: 'date',
       }),
 
       exposeDependency({dependency: '#album.trackArtistContribs'}),
@@ -267,10 +264,8 @@ export class Track extends Thing {
     contributorContribs: [
       inheritContributionListFromMainRelease(),
 
-      withDate(),
-
       contributionList({
-        date: '#date',
+        date: 'date',
         artistProperty: input.value('trackContributorContributions'),
       }),
     ],
@@ -531,8 +526,25 @@ export class Track extends Thing {
     ],
 
     date: [
-      withDate(),
-      exposeDependency({dependency: '#date'}),
+      {
+        dependencies: ['disableDate'],
+        compute: (continuation, {disableDate}) =>
+          (disableDate
+            ? null
+            : continuation()),
+      },
+
+      exposeDependencyOrContinue({
+        dependency: 'dateFirstReleased',
+      }),
+
+      withPropertyFromAlbum({
+        property: input.value('date'),
+      }),
+
+      exposeDependency({
+        dependency: '#album.date',
+      }),
     ],
 
     trackNumber: [