1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
// Gets all releases of the current track. All items of the outputs are
// distinct Track objects; one track is the main release; all else are
// secondary releases of that main release; and one item, which may be
// the main release or one of the secondary releases, is the current
// track. The results are sorted by date, and it is possible that the
// main release is not actually the earliest/first.
import {input, templateCompositeFrom} from '#composite';
import {sortByDate} from '#sort';
import {withPropertyFromObject} from '#composite/data';
export default templateCompositeFrom({
annotation: `withAllReleases`,
outputs: ['#allReleases'],
steps: () => [
{
dependencies: [
'mainReleaseTrack',
'secondaryReleases',
input.myself(),
],
compute: (continuation, {
mainReleaseTrack,
secondaryReleases,
[input.myself()]: thisTrack,
}) =>
(mainReleaseTrack
? continuation({
['#mainReleaseTrack']: mainReleaseTrack,
['#secondaryReleaseTracks']: mainReleaseTrack.secondaryReleases,
})
: continuation({
['#mainReleaseTrack']: thisTrack,
['#secondaryReleaseTracks']: secondaryReleases,
})),
},
{
dependencies: [
'#mainReleaseTrack',
'#secondaryReleaseTracks',
],
compute: (continuation, {
['#mainReleaseTrack']: mainReleaseTrack,
['#secondaryReleaseTracks']: secondaryReleaseTracks,
}) => continuation({
['#allReleases']:
sortByDate([mainReleaseTrack, ...secondaryReleaseTracks]),
}),
},
],
});
|