diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-03-07 10:54:24 -0400 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-06-18 22:56:02 -0300 |
commit | ab0983e3c0aeddb78b0f6d7fa24e33ceaf034e90 (patch) | |
tree | ca4f4c8af7c3b175077c3f9a27ae9b25a61e0c0a /src/data/composite/things/track/withDate.js | |
parent | ab98a1f8ea4c5d14e76d88e8ac2992b062e7e154 (diff) |
data: track: withDate
Diffstat (limited to 'src/data/composite/things/track/withDate.js')
-rw-r--r-- | src/data/composite/things/track/withDate.js | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/data/composite/things/track/withDate.js b/src/data/composite/things/track/withDate.js new file mode 100644 index 00000000..b5a770e9 --- /dev/null +++ b/src/data/composite/things/track/withDate.js @@ -0,0 +1,34 @@ +// 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: ['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})), + }, + ], +}) |