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
|
// 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 {exitWithoutDependency} from '#composite/control-flow';
import {withPropertyFromObject} from '#composite/data';
import withMainRelease from './withMainRelease.js';
export default templateCompositeFrom({
annotation: `withAllReleases`,
outputs: ['#allReleases'],
steps: () => [
withMainRelease({
selfIfMain: input.value(true),
notFoundValue: input.value([]),
}),
// We don't talk about bruno no no
// Yes, this can perform a normal access equivalent to
// `this.secondaryReleases` from within a data composition.
// Oooooooooooooooooooooooooooooooooooooooooooooooo
withPropertyFromObject({
object: '#mainRelease',
property: input.value('secondaryReleases'),
}),
{
dependencies: ['#mainRelease', '#mainRelease.secondaryReleases'],
compute: (continuation, {
['#mainRelease']: mainRelease,
['#mainRelease.secondaryReleases']: secondaryReleases,
}) => continuation({
['#allReleases']:
sortByDate([mainRelease, ...secondaryReleases]),
}),
},
],
});
|