« 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.js175
-rw-r--r--src/data/things/track.js357
2 files changed, 156 insertions, 376 deletions
diff --git a/src/data/things/album.js b/src/data/things/album.js
index e660a2b1..5f5492ce 100644
--- a/src/data/things/album.js
+++ b/src/data/things/album.js
@@ -4,7 +4,7 @@ import * as path from 'node:path';
 import {inspect} from 'node:util';
 
 import {colors} from '#cli';
-import {input} from '#composite';
+import {input, V} from '#composite';
 import {traverse} from '#node-utils';
 import {sortAlbumsTracksChronologically, sortChronologically} from '#sort';
 import {empty} from '#sugar';
@@ -33,6 +33,8 @@ import {
   parseWallpaperParts,
 } from '#yaml';
 
+import {withResolvedContribs} from '#composite/wiki-data';
+
 import {
   exitWithoutDependency,
   exposeConstant,
@@ -50,24 +52,17 @@ import {
 } from '#composite/data';
 
 import {
-  exitWithoutArtwork,
-  withDirectory,
-  withHasArtwork,
-  withResolvedContribs,
-} from '#composite/wiki-data';
-
-import {
   color,
   commentatorArtists,
   constitutibleArtwork,
   constitutibleArtworkList,
   contentString,
-  contribsPresent,
   contributionList,
   dimensions,
   directory,
   fileExtension,
   flag,
+  hasArtwork,
   name,
   referencedArtworkList,
   referenceList,
@@ -119,11 +114,7 @@ export class Album extends Thing {
         validate: input.value(isDirectory),
       }),
 
-      withDirectory(),
-
-      exposeDependency({
-        dependency: '#directory',
-      }),
+      exposeDependency('directory'),
     ],
 
     alwaysReferenceByDirectory: flag(false),
@@ -138,9 +129,7 @@ export class Album extends Thing {
         ])),
       }),
 
-      exposeConstant({
-        value: input.value('album'),
-      }),
+      exposeConstant(V('album')),
     ],
 
     bandcampAlbumIdentifier: simpleString(),
@@ -172,10 +161,7 @@ export class Album extends Thing {
         '#resolvedContribs': '#trackArtistContribs',
       }),
 
-      exposeDependencyOrContinue({
-        dependency: '#trackArtistContribs',
-        mode: input.value('empty'),
-      }),
+      exposeDependencyOrContinue('#trackArtistContribs', V('empty')),
 
       withResolvedContribs({
         from: '_artistContribs',
@@ -186,7 +172,7 @@ export class Album extends Thing {
         '#resolvedContribs': '#trackArtistContribs',
       }),
 
-      exposeDependency({dependency: '#trackArtistContribs'}),
+      exposeDependency('#trackArtistContribs'),
     ],
 
     // > Update & expose - General configuration
@@ -210,10 +196,9 @@ export class Album extends Thing {
     // > Update & expose - Artworks
 
     coverArtworks: [
-      exitWithoutArtwork({
-        contribs: '_coverArtistContribs',
-        artworks: '_coverArtworks',
+      exitWithoutDependency('hasCoverArt', {
         value: input.value([]),
+        mode: input.value('falsy'),
       }),
 
       constitutibleArtworkList.fromYAMLFieldSpec
@@ -226,13 +211,8 @@ export class Album extends Thing {
     }),
 
     coverArtDate: [
-      withHasArtwork({
-        contribs: '_coverArtistContribs',
-        artworks: '_coverArtworks',
-      }),
-
-      exitWithoutDependency({
-        dependency: '#hasArtwork',
+      exitWithoutDependency('hasCoverArt', {
+        value: input.value(null),
         mode: input.value('falsy'),
       }),
 
@@ -240,34 +220,31 @@ export class Album extends Thing {
         validate: input.value(isDate),
       }),
 
-      exposeDependency({
-        dependency: 'date',
-      }),
+      exposeDependency('date'),
     ],
 
     coverArtFileExtension: [
-      exitWithoutArtwork({
-        contribs: '_coverArtistContribs',
-        artworks: '_coverArtworks',
+      exitWithoutDependency('hasCoverArt', {
+        value: input.value(null),
+        mode: input.value('falsy'),
       }),
 
       fileExtension('jpg'),
     ],
 
     coverArtDimensions: [
-      exitWithoutArtwork({
-        contribs: '_coverArtistContribs',
-        artworks: '_coverArtworks',
+      exitWithoutDependency('hasCoverArt', {
+        value: input.value(null),
+        mode: input.value('falsy'),
       }),
 
       dimensions(),
     ],
 
     artTags: [
-      exitWithoutArtwork({
-        contribs: '_coverArtistContribs',
-        artworks: '_coverArtworks',
+      exitWithoutDependency('hasCoverArt', {
         value: input.value([]),
+        mode: input.value('falsy'),
       }),
 
       referenceList({
@@ -277,10 +254,9 @@ export class Album extends Thing {
     ],
 
     referencedArtworks: [
-      exitWithoutArtwork({
-        contribs: '_coverArtistContribs',
-        artworks: '_coverArtworks',
+      exitWithoutDependency('hasCoverArt', {
         value: input.value([]),
+        mode: input.value('falsy'),
       }),
 
       referencedArtworkList(),
@@ -289,7 +265,7 @@ export class Album extends Thing {
     trackCoverArtistContribs: contributionList({
       // May be null, indicating cover art was added for tracks on the date
       // each track specifies, or else the track's own release date.
-      date: '_trackArtDate',
+      date: 'trackArtDate',
 
       // This is the "correct" value, but it gets overwritten - with the same
       // value - regardless.
@@ -303,10 +279,9 @@ export class Album extends Thing {
     trackDimensions: dimensions(),
 
     wallpaperArtwork: [
-      exitWithoutDependency({
-        dependency: '_wallpaperArtistContribs',
-        mode: input.value('empty'),
+      exitWithoutDependency('hasWallpaperArt', {
         value: input.value(null),
+        mode: input.value('falsy'),
       }),
 
       constitutibleArtwork.fromYAMLFieldSpec
@@ -319,39 +294,36 @@ export class Album extends Thing {
     }),
 
     wallpaperFileExtension: [
-      exitWithoutArtwork({
-        contribs: '_wallpaperArtistContribs',
-        artwork: '_wallpaperArtwork',
+      exitWithoutDependency('hasWallpaperArt', {
+        value: input.value(null),
+        mode: input.value('falsy'),
       }),
 
       fileExtension('jpg'),
     ],
 
     wallpaperStyle: [
-      exitWithoutArtwork({
-        contribs: '_wallpaperArtistContribs',
-        artwork: '_wallpaperArtwork',
+      exitWithoutDependency('hasWallpaperArt', {
+        value: input.value(null),
+        mode: input.value('falsy'),
       }),
 
       simpleString(),
     ],
 
     wallpaperParts: [
-      // kinda nonsensical or at least unlikely lol, but y'know
-      exitWithoutArtwork({
-        contribs: '_wallpaperArtistContribs',
-        artwork: '_wallpaperArtwork',
+      exitWithoutDependency('hasWallpaperArt', {
         value: input.value([]),
+        mode: input.value('falsy'),
       }),
 
       wallpaperParts(),
     ],
 
     bannerArtwork: [
-      exitWithoutDependency({
-        dependency: '_bannerArtistContribs',
-        mode: input.value('empty'),
+      exitWithoutDependency('hasBannerArt', {
         value: input.value(null),
+        mode: input.value('falsy'),
       }),
 
       constitutibleArtwork.fromYAMLFieldSpec
@@ -364,27 +336,27 @@ export class Album extends Thing {
     }),
 
     bannerFileExtension: [
-      exitWithoutArtwork({
-        contribs: '_bannerArtistContribs',
-        artwork: '_bannerArtwork',
+      exitWithoutDependency('hasBannerArt', {
+        value: input.value(null),
+        mode: input.value('falsy'),
       }),
 
       fileExtension('jpg'),
     ],
 
     bannerDimensions: [
-      exitWithoutArtwork({
-        contribs: '_bannerArtistContribs',
-        artwork: '_bannerArtwork',
+      exitWithoutDependency('hasBannerArt', {
+        value: input.value(null),
+        mode: input.value('falsy'),
       }),
 
       dimensions(),
     ],
 
     bannerStyle: [
-      exitWithoutArtwork({
-        contribs: '_bannerArtistContribs',
-        artwork: '_bannerArtwork',
+      exitWithoutDependency('hasBannerArt', {
+        value: input.value(null),
+        mode: input.value('falsy'),
       }),
 
       simpleString(),
@@ -430,44 +402,31 @@ export class Album extends Thing {
 
     // > Expose only
 
-    isAlbum: [
-      exposeConstant({
-        value: input.value(true),
-      }),
-    ],
+    isAlbum: exposeConstant(V(true)),
 
     commentatorArtists: commentatorArtists(),
 
-    hasCoverArt: [
-      withHasArtwork({
-        contribs: '_coverArtistContribs',
-        artworks: '_coverArtworks',
-      }),
+    hasCoverArt: hasArtwork({
+      contribs: '_coverArtistContribs',
+      artworks: '_coverArtworks',
+    }),
 
-      exposeDependency({dependency: '#hasArtwork'}),
-    ],
+    hasWallpaperArt: hasArtwork({
+      contribs: '_wallpaperArtistContribs',
+      artwork: '_wallpaperArtwork',
+    }),
 
-    hasWallpaperArt: contribsPresent({contribs: '_wallpaperArtistContribs'}),
-    hasBannerArt: contribsPresent({contribs: '_bannerArtistContribs'}),
+    hasBannerArt: hasArtwork({
+      contribs: '_bannerArtistContribs',
+      artwork: '_bannerArtwork',
+    }),
 
     tracks: [
-      exitWithoutDependency({
-        dependency: 'trackSections',
-        value: input.value([]),
-      }),
-
-      withPropertyFromList({
-        list: 'trackSections',
-        property: input.value('tracks'),
-      }),
+      exitWithoutDependency('trackSections', V([])),
 
-      withFlattenedList({
-        list: '#trackSections.tracks',
-      }),
-
-      exposeDependency({
-        dependency: '#flattenedList',
-      }),
+      withPropertyFromList('trackSections', V('tracks')),
+      withFlattenedList('#trackSections.tracks'),
+      exposeDependency('#flattenedList'),
     ],
   });
 
@@ -1126,17 +1085,11 @@ export class TrackSection extends Thing {
         property: input.value('directory'),
       }),
 
-      withDirectory({
-        directory: '_unqualifiedDirectory',
-      }).outputs({
-        '#directory': '#unqualifiedDirectory',
-      }),
-
       {
-        dependencies: ['#album.directory', '#unqualifiedDirectory'],
+        dependencies: ['#album.directory', 'unqualifiedDirectory'],
         compute: ({
           ['#album.directory']: albumDirectory,
-          ['#unqualifiedDirectory']: unqualifiedDirectory,
+          ['unqualifiedDirectory']: unqualifiedDirectory,
         }) =>
           albumDirectory + '/' + unqualifiedDirectory,
       },
diff --git a/src/data/things/track.js b/src/data/things/track.js
index 030778a3..08b0f94f 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -248,10 +248,7 @@ export class Track extends Thing {
             : null),
       },
 
-      withPropertyFromObject({
-        object: '#matchingAlbum',
-        property: input.value('tracks'),
-      }),
+      withPropertyFromObject( '#matchingAlbum', V('tracks')),
 
       {
         dependencies: [
@@ -285,14 +282,8 @@ export class Track extends Thing {
         validate: input.value(isContentString),
       }),
 
-      withPropertyFromObject({
-        object: 'album',
-        property: input.value('trackArtistText'),
-      }),
-
-      exposeDependency({
-        dependency: '#album.trackArtistText',
-      }),
+      withPropertyFromObject('album', V('trackArtistText')),
+      exposeDependency('#album.trackArtistText'),
     ],
 
     artistTextInLists: [
@@ -316,19 +307,13 @@ export class Track extends Thing {
         '#resolvedContribs': '#artistContribs',
       }),
 
-      exposeDependencyOrContinue({
-        dependency: '#artistContribs',
-        mode: input.value('empty'),
-      }),
+      exposeDependencyOrContinue('#artistContribs', V('empty')),
 
       // Specifically inherit artist contributions later than artist contribs.
       // Secondary releases' artists may differ from the main release.
       inheritContributionListFromMainRelease(),
 
-      withPropertyFromObject({
-        object: 'album',
-        property: input.value('trackArtistContribs'),
-      }),
+      withPropertyFromObject('album', V('trackArtistContribs')),
 
       withRecontextualizedContributionList({
         list: '#album.trackArtistContribs',
@@ -340,7 +325,7 @@ export class Track extends Thing {
         date: 'date',
       }),
 
-      exposeDependency({dependency: '#album.trackArtistContribs'}),
+      exposeDependency('#album.trackArtistContribs'),
     ],
 
     contributorContribs: [
@@ -359,12 +344,8 @@ export class Track extends Thing {
         validate: input.value(isBoolean),
       }),
 
-      withPropertyFromObject({
-        object: 'trackSection',
-        property: input.value('countTracksInArtistTotals'),
-      }),
-
-      exposeDependency({dependency: '#trackSection.countTracksInArtistTotals'}),
+      withPropertyFromObject('trackSection', V('countTracksInArtistTotals')),
+      exposeDependency('#trackSection.countTracksInArtistTotals'),
     ],
 
     disableUniqueCoverArt: flag(),
@@ -379,19 +360,11 @@ export class Track extends Thing {
         validate: input.value(isColor),
       }),
 
-      withPropertyFromObject({
-        object: 'trackSection',
-        property: input.value('color'),
-      }),
-
-      exposeDependencyOrContinue({dependency: '#trackSection.color'}),
-
-      withPropertyFromObject({
-        object: 'album',
-        property: input.value('color'),
-      }),
+      withPropertyFromObject('trackSection', V('color')),
+      exposeDependencyOrContinue('#trackSection.color'),
 
-      exposeDependency({dependency: '#album.color'}),
+      withPropertyFromObject('album', V('color')),
+      exposeDependency('#album.color'),
     ],
 
     needsLyrics: [
@@ -400,16 +373,12 @@ export class Track extends Thing {
         validate: input.value(isBoolean),
       }),
 
-      exitWithoutDependency({
-        dependency: '_lyrics',
-        mode: input.value('empty'),
+      exitWithoutDependency('_lyrics', {
         value: input.value(false),
+        mode: input.value('empty'),
       }),
 
-      withPropertyFromList({
-        list: '_lyrics',
-        property: input.value('helpNeeded'),
-      }),
+      withPropertyFromList('_lyrics', V('helpNeeded')),
 
       {
         dependencies: ['#lyrics.helpNeeded'],
@@ -425,10 +394,9 @@ export class Track extends Thing {
     // > Update & expose - Artworks
 
     trackArtworks: [
-      exitWithoutDependency({
-        dependency: 'hasUniqueCoverArt',
-        mode: input.value('falsy'),
+      exitWithoutDependency('hasUniqueCoverArt', {
         value: input.value([]),
+        mode: input.value('falsy'),
       }),
 
       constitutibleArtworkList.fromYAMLFieldSpec
@@ -436,10 +404,9 @@ export class Track extends Thing {
     ],
 
     coverArtistContribs: [
-      exitWithoutDependency({
-        dependency: 'hasUniqueCoverArt',
-        mode: input.value('falsy'),
+      exitWithoutDependency('hasUniqueCoverArt', {
         value: input.value([]),
+        mode: input.value('falsy'),
       }),
 
       withResolvedContribs({
@@ -449,15 +416,9 @@ export class Track extends Thing {
         date: 'coverArtDate',
       }),
 
-      exposeDependencyOrContinue({
-        dependency: '#resolvedContribs',
-        mode: input.value('empty'),
-      }),
+      exposeDependencyOrContinue('#resolvedContribs', V('empty')),
 
-      withPropertyFromObject({
-        object: 'album',
-        property: input.value('trackCoverArtistContribs'),
-      }),
+      withPropertyFromObject('album', V('trackCoverArtistContribs')),
 
       withRecontextualizedContributionList({
         list: '#album.trackCoverArtistContribs',
@@ -469,14 +430,12 @@ export class Track extends Thing {
         date: 'coverArtDate',
       }),
 
-      exposeDependency({
-        dependency: '#album.trackCoverArtistContribs',
-      }),
+      exposeDependency('#album.trackCoverArtistContribs'),
     ],
 
     coverArtDate: [
-      exitWithoutDependency({
-        dependency: 'hasUniqueCoverArt',
+      exitWithoutDependency('hasUniqueCoverArt', {
+        value: input.value(null),
         mode: input.value('falsy'),
       }),
 
@@ -484,23 +443,15 @@ export class Track extends Thing {
         validate: input.value(isDate),
       }),
 
-      withPropertyFromObject({
-        object: 'album',
-        property: input.value('trackArtDate'),
-      }),
-
-      exposeDependencyOrContinue({
-        dependency: '#album.trackArtDate',
-      }),
+      withPropertyFromObject('album', V('trackArtDate')),
+      exposeDependencyOrContinue('#album.trackArtDate'),
 
-      exposeDependency({
-        dependency: 'date',
-      }),
+      exposeDependency('date'),
     ],
 
     coverArtFileExtension: [
-      exitWithoutDependency({
-        dependency: 'hasUniqueCoverArt',
+      exitWithoutDependency('hasUniqueCoverArt', {
+        value: input.value(null),
         mode: input.value('falsy'),
       }),
 
@@ -508,41 +459,30 @@ export class Track extends Thing {
         validate: input.value(isFileExtension),
       }),
 
-      withPropertyFromObject({
-        object: 'album',
-        property: input.value('trackCoverArtFileExtension'),
-      }),
-
-      exposeDependencyOrContinue({dependency: '#album.trackCoverArtFileExtension'}),
+      withPropertyFromObject('album', V('trackCoverArtFileExtension')),
+      exposeDependencyOrContinue('#album.trackCoverArtFileExtension'),
 
-      exposeConstant({
-        value: input.value('jpg'),
-      }),
+      exposeConstant(V('jpg')),
     ],
 
     coverArtDimensions: [
-      exitWithoutDependency({
-        dependency: 'hasUniqueCoverArt',
+      exitWithoutDependency('hasUniqueCoverArt', {
+        value: input.value(null),
         mode: input.value('falsy'),
       }),
 
       exposeUpdateValueOrContinue(),
 
-      withPropertyFromObject({
-        object: 'album',
-        property: input.value('trackDimensions'),
-      }),
-
-      exposeDependencyOrContinue({dependency: '#album.trackDimensions'}),
+      withPropertyFromObject('album', V('trackDimensions')),
+      exposeDependencyOrContinue('#album.trackDimensions'),
 
       dimensions(),
     ],
 
     artTags: [
-      exitWithoutDependency({
-        dependency: 'hasUniqueCoverArt',
-        mode: input.value('falsy'),
+      exitWithoutDependency('hasUniqueCoverArt', {
         value: input.value([]),
+        mode: input.value('falsy'),
       }),
 
       referenceList({
@@ -552,10 +492,9 @@ export class Track extends Thing {
     ],
 
     referencedArtworks: [
-      exitWithoutDependency({
-        dependency: 'hasUniqueCoverArt',
-        mode: input.value('falsy'),
+      exitWithoutDependency('hasUniqueCoverArt', {
         value: input.value([]),
+        mode: input.value('falsy'),
       }),
 
       referencedArtworkList(),
@@ -646,28 +585,18 @@ export class Track extends Thing {
 
     // > Expose only
 
-    isTrack: [
-      exposeConstant({
-        value: input.value(true),
-      }),
-    ],
+    isTrack: exposeConstant(V(true)),
 
     commentatorArtists: commentatorArtists(),
 
     directorySuffix: [
-      exitWithoutDependency({
-        dependency: 'suffixDirectoryFromAlbum',
+      exitWithoutDependency('suffixDirectoryFromAlbum', {
+        value: input.value(null),
         mode: input.value('falsy'),
       }),
 
-      withPropertyFromObject({
-        object: 'trackSection',
-        property: input.value('directorySuffix'),
-      }),
-
-      exposeDependency({
-        dependency: '#trackSection.directorySuffix',
-      }),
+      withPropertyFromObject('trackSection', V('directorySuffix')),
+      exposeDependency('#trackSection.directorySuffix'),
     ],
 
     date: [
@@ -679,43 +608,21 @@ export class Track extends Thing {
             : continuation()),
       },
 
-      exposeDependencyOrContinue({
-        dependency: 'dateFirstReleased',
-      }),
-
-      withPropertyFromObject({
-        object: 'album',
-        property: input.value('date'),
-      }),
+      exposeDependencyOrContinue('dateFirstReleased'),
 
-      exposeDependency({
-        dependency: '#album.date',
-      }),
+      withPropertyFromObject('album', V('date')),
+      exposeDependency('#album.date'),
     ],
 
     trackNumber: [
       // Zero is the fallback, not one, but in most albums the first track
       // (and its intended output by this composition) will be one.
-      exitWithoutDependency({
-        dependency: 'trackSection',
-        value: input.value(0),
-      }),
 
-      withPropertiesFromObject({
-        object: 'trackSection',
-        properties: input.value(['tracks', 'startCountingFrom']),
-      }),
+      exitWithoutDependency('trackSection', V(0)),
+      withPropertiesFromObject('trackSection', V(['tracks', 'startCountingFrom'])),
 
-      withIndexInList({
-        list: '#trackSection.tracks',
-        item: input.myself(),
-      }),
-
-      exitWithoutDependency({
-        dependency: '#index',
-        value: input.value(0),
-        mode: input.value('index'),
-      }),
+      withIndexInList('#trackSection.tracks', input.myself()),
+      exitWithoutDependency('#index', V(0), V('index')),
 
       {
         dependencies: ['#trackSection.startCountingFrom', '#index'],
@@ -762,8 +669,7 @@ export class Track extends Thing {
             : continuation()),
       },
 
-      withPropertyFromObject({
-        object: 'album',
+      withPropertyFromObject('album', {
         property: input.value('trackCoverArtistContribs'),
         internal: input.value(true),
       }),
@@ -783,61 +689,43 @@ export class Track extends Thing {
             : continuation()),
       },
 
-      exitWithoutDependency({
-        dependency: '_trackArtworks',
-        mode: input.value('empty'),
+      exitWithoutDependency('_trackArtworks', {
         value: input.value(false),
+        mode: input.value('empty'),
       }),
 
-      withPropertyFromList({
-        list: '_trackArtworks',
+      withPropertyFromList('_trackArtworks', {
         property: input.value('artistContribs'),
         internal: input.value(true),
       }),
 
       // Since we're getting the update value for each artwork's artistContribs,
       // it may not be set at all, and in that case won't be exposing as [].
-      fillMissingListItems({
-        list: '#trackArtworks.artistContribs',
-        fill: input.value([]),
-      }),
+      fillMissingListItems('#trackArtworks.artistContribs', V([])),
 
-      withFlattenedList({
-        list: '#trackArtworks.artistContribs',
-      }),
+      withFlattenedList('#trackArtworks.artistContribs'),
 
-      withResultOfAvailabilityCheck({
-        from: '#flattenedList',
+      exposeWhetherDependencyAvailable({
+        dependency: '#flattenedList',
         mode: input.value('empty'),
       }),
-
-      exposeDependency({
-        dependency: '#availability',
-      }),
     ],
 
-    isMainRelease: [
+    isMainRelease:
       exposeWhetherDependencyAvailable({
         dependency: 'mainReleaseTrack',
         negate: input.value(true),
       }),
-    ],
 
-    isSecondaryRelease: [
+    isSecondaryRelease:
       exposeWhetherDependencyAvailable({
         dependency: 'mainReleaseTrack',
       }),
-    ],
 
     mainReleaseTrack: [
-      exitWithoutDependency({
-        dependency: 'mainRelease',
-      }),
+      exitWithoutDependency('mainRelease'),
 
-      withPropertyFromObject({
-        object: 'mainRelease',
-        property: input.value('isTrack'),
-      }),
+      withPropertyFromObject('mainRelease', V('isTrack')),
 
       {
         dependencies: ['mainRelease', '#mainRelease.isTrack'],
@@ -878,20 +766,14 @@ export class Track extends Thing {
         },
       },
 
-      withPropertyFromObject({
-        object: 'mainRelease',
-        property: input.value('tracks'),
-      }),
+      withPropertyFromObject('mainRelease', V('tracks')),
 
-      withPropertyFromList({
-        list: '#mainRelease.tracks',
+      withPropertyFromList('#mainRelease.tracks', {
         property: input.value('mainRelease'),
         internal: input.value(true),
       }),
 
-      withAvailabilityFilter({
-        from: '#mainRelease.tracks.mainRelease',
-      }),
+      withAvailabilityFilter({from: '#mainRelease.tracks.mainRelease'}),
 
       withMappedList({
         list: '#availabilityFilter',
@@ -900,79 +782,39 @@ export class Track extends Thing {
         '#mappedList': '#availabilityFilter',
       }),
 
-      withFilteredList({
-        list: '#mainRelease.tracks',
-        filter: '#availabilityFilter',
-      }).outputs({
-        '#filteredList': '#mainRelease.tracks',
-      }),
+      withFilteredList('#mainRelease.tracks', '#availabilityFilter')
+        .outputs({'#filteredList': '#mainRelease.tracks'}),
 
-      withPropertyFromList({
-        list: '#mainRelease.tracks',
-        property: input.value('name'),
-      }),
+      withPropertyFromList('#mainRelease.tracks', V('name')),
 
-      withPropertyFromList({
-        list: '#mainRelease.tracks',
+      withPropertyFromList('#mainRelease.tracks', {
         property: input.value('directory'),
         internal: input.value(true),
       }),
 
-      withMappedList({
-        list: '#mainRelease.tracks.name',
-        map: '#mapItsNameLikeName',
-      }).outputs({
-        '#mappedList': '#filterItsNameLikeName',
-      }),
+      withMappedList('#mainRelease.tracks.name', '#mapItsNameLikeName')
+        .outputs({'#mappedList': '#filterItsNameLikeName'}),
 
-      withMappedList({
-        list: '#mainRelease.tracks.directory',
-        map: '#mapItsDirectoryLikeDirectory',
-      }).outputs({
-        '#mappedList': '#filterItsDirectoryLikeDirectory',
-      }),
+      withMappedList('#mainRelease.tracks.directory', '#mapItsDirectoryLikeDirectory')
+        .outputs({'#mappedList': '#filterItsDirectoryLikeDirectory'}),
 
-      withMappedList({
-        list: '#mainRelease.tracks.name',
-        map: '#mapItsNameLikeDirectory',
-      }).outputs({
-        '#mappedList': '#filterItsNameLikeDirectory',
-      }),
+      withMappedList('#mainRelease.tracks.name', '#mapItsNameLikeDirectory')
+        .outputs({'#mappedList': '#filterItsNameLikeDirectory'}),
 
-      withMappedList({
-        list: '#mainRelease.tracks.directory',
-        map: '#mapItsDirectoryLikeName',
-      }).outputs({
-        '#mappedList': '#filterItsDirectoryLikeName',
-      }),
+      withMappedList('#mainRelease.tracks.directory', '#mapItsDirectoryLikeName')
+        .outputs({'#mappedList': '#filterItsDirectoryLikeName'}),
 
-      withFilteredList({
-        list: '#mainRelease.tracks',
-        filter: '#filterItsNameLikeName',
-      }).outputs({
-        '#filteredList': '#matchingItsNameLikeName',
-      }),
+      withFilteredList('#mainRelease.tracks', '#filterItsNameLikeName')
+        .outputs({'#filteredList': '#matchingItsNameLikeName'}),
 
-      withFilteredList({
-        list: '#mainRelease.tracks',
-        filter: '#filterItsDirectoryLikeDirectory',
-      }).outputs({
-        '#filteredList': '#matchingItsDirectoryLikeDirectory',
-      }),
+      withFilteredList('#mainRelease.tracks', '#filterItsDirectoryLikeDirectory')
+        .outputs({'#filteredList': '#matchingItsDirectoryLikeDirectory'}),
 
-      withFilteredList({
-        list: '#mainRelease.tracks',
-        filter: '#filterItsNameLikeDirectory',
-      }).outputs({
-        '#filteredList': '#matchingItsNameLikeDirectory',
-      }),
+      withFilteredList('#mainRelease.tracks', '#filterItsNameLikeDirectory')
+        .outputs({'#filteredList': '#matchingItsNameLikeDirectory'}),
 
-      withFilteredList({
-        list: '#mainRelease.tracks',
-        filter: '#filterItsDirectoryLikeName',
-      }).outputs({
-        '#filteredList': '#matchingItsDirectoryLikeName',
-      }),
+      withFilteredList('#mainRelease.tracks', '#filterItsDirectoryLikeName')
+        .outputs({'#filteredList': '#matchingItsDirectoryLikeName'}),
 
       {
         dependencies: [
@@ -1065,30 +907,15 @@ export class Track extends Thing {
     ],
 
     commentaryFromMainRelease: [
-      exitWithoutDependency({
-        dependency: 'mainReleaseTrack',
-        value: input.value([]),
-      }),
+      exitWithoutDependency('mainReleaseTrack', V([])),
 
-      withPropertyFromObject({
-        object: 'mainReleaseTrack',
-        property: input.value('commentary'),
-      }),
-
-      exposeDependency({
-        dependency: '#mainReleaseTrack.commentary',
-      }),
+      withPropertyFromObject('mainReleaseTrack', V('commentary')),
+      exposeDependency('#mainReleaseTrack.commentary'),
     ],
 
     groups: [
-      withPropertyFromObject({
-        object: 'album',
-        property: input.value('groups'),
-      }),
-
-      exposeDependency({
-        dependency: '#album.groups',
-      }),
+      withPropertyFromObject('album', V('groups')),
+      exposeDependency('#album.groups'),
     ],
 
     followingProductionTracks: reverseReferenceList({