« get me outta code hell

data: Album.trackArtistText, Track.artistText - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-09-08 18:06:40 -0300
committer(quasar) nebula <qznebula@protonmail.com>2025-09-08 18:06:40 -0300
commit400cde0523f621b7160a3b6b374361c8df687ba5 (patch)
treeeff9eaf4384daa7c74aed540369b78cd7143c8fd /src
parent00a4803b033cd2b9b03138d874bfe28897f8bd7a (diff)
data: Album.trackArtistText, Track.artistText
Diffstat (limited to 'src')
-rw-r--r--src/data/things/album.js6
-rw-r--r--src/data/things/track.js29
2 files changed, 33 insertions, 2 deletions
diff --git a/src/data/things/album.js b/src/data/things/album.js
index 427c5d7f..46dc84c6 100644
--- a/src/data/things/album.js
+++ b/src/data/things/album.js
@@ -144,6 +144,8 @@ export class Album extends Thing {
       artistProperty: input.value('albumArtistContributions'),
     }),
 
+    trackArtistText: contentString(),
+
     trackArtistContribs: [
       withResolvedContribs({
         from: input.updateValue({validate: isContributionList}),
@@ -638,6 +640,10 @@ export class Album extends Thing {
         transform: parseContributors,
       },
 
+      'Track Artist Text': {
+        property: 'trackArtistText',
+      },
+
       'Track Artists': {
         property: 'trackArtistContribs',
         transform: parseContributors,
diff --git a/src/data/things/track.js b/src/data/things/track.js
index da6b3227..b2336a44 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -4,8 +4,15 @@ import CacheableObject from '#cacheable-object';
 import {colors} from '#cli';
 import {input} from '#composite';
 import Thing from '#thing';
-import {isBoolean, isColor, isContributionList, isDate, isFileExtension}
-  from '#validators';
+
+import {
+  isBoolean,
+  isColor,
+  isContentString,
+  isContributionList,
+  isDate,
+  isFileExtension,
+} from '#validators';
 
 import {
   parseAdditionalFiles,
@@ -157,6 +164,20 @@ export class Track extends Thing {
 
     // > Update & expose - Credits and contributors
 
+    artistText: [
+      exposeUpdateValueOrContinue({
+        validate: input.value(isContentString),
+      }),
+
+      withPropertyFromAlbum({
+        property: input.value('trackArtistText'),
+      }),
+
+      exposeDependency({
+        dependency: '#album.trackArtistText',
+      }),
+    ],
+
     artistContribs: [
       inheritContributionListFromMainRelease(),
 
@@ -569,6 +590,10 @@ export class Track extends Thing {
 
       // Credits and contributors
 
+      'Artist Text': {
+        property: 'artistText',
+      },
+
       'Artists': {
         property: 'artistContribs',
         transform: parseContributors,