import dayjs from 'dayjs'; function curateActor(actor, release) { const curatedActor = { ...actor, origin: actor.originCountry && { country: actor.originCountry, }, }; if (actor.avatar) curatedActor.avatar = actor.avatar.media; if (release && release.date && curatedActor.birthdate) { curatedActor.ageThen = dayjs(release.date).diff(actor.birthdate, 'year'); } return curatedActor; } function curateRelease(release) { const curatedRelease = { ...release, actors: [], poster: release.poster && release.poster.media, tags: release.tags ? release.tags.map(({ tag }) => tag) : [], network: release.site.network, }; if (release.photos) curatedRelease.photos = release.photos.map(({ media }) => media); if (release.covers) curatedRelease.covers = release.covers.map(({ media }) => media); if (release.trailer) curatedRelease.trailer = release.trailer.media; if (release.teaser) curatedRelease.teaser = release.teaser.media; if (release.actors) curatedRelease.actors = release.actors.map(({ actor }) => curateActor(actor, curatedRelease)); return curatedRelease; } function curateSite(site, network) { const curatedSite = { id: site.id, name: site.name, slug: site.slug, url: site.url, independent: site.independent, }; if (site.releases) curatedSite.releases = site.releases.map(release => curateRelease(release)); if (site.network || network) curatedSite.network = site.network || network; if (site.tags) curatedSite.tags = site.tags.map(({ tag }) => tag); return curatedSite; } function curateNetwork(network, releases) { const curatedNetwork = { id: network.id, name: network.name, slug: network.slug, url: network.url, networks: [], }; if (network.parent) curatedNetwork.parent = curateNetwork(network.parent); if (network.sites) curatedNetwork.sites = network.sites.map(site => curateSite(site, curatedNetwork)); if (network.networks) curatedNetwork.networks = network.networks.map(subNetwork => curateNetwork(subNetwork)); if (network.studios) curatedNetwork.studios = network.studios; if (releases) curatedNetwork.releases = releases.map(release => curateRelease(release)); return curatedNetwork; } function curateTag(tag) { const curatedTag = { ...tag, }; if (tag.releases) curatedTag.releases = tag.releases.map(({ release }) => curateRelease(release)); if (tag.photos) curatedTag.photos = tag.photos.map(({ media }) => media); if (tag.poster) curatedTag.poster = tag.poster.media; return curatedTag; } export { curateActor, curateRelease, curateSite, curateNetwork, curateTag, };