From 92d82211fdf3d653b1a5a4d2cfdad5c684e2367d Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 1 May 2026 08:06:52 -0300 Subject: content, data, validators: stub url entries --- src/data/things/MusicVideo.js | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'src/data/things/MusicVideo.js') diff --git a/src/data/things/MusicVideo.js b/src/data/things/MusicVideo.js index 77c8c619..dbb99a7f 100644 --- a/src/data/things/MusicVideo.js +++ b/src/data/things/MusicVideo.js @@ -4,9 +4,16 @@ import {colors} from '#cli'; import {input, V} from '#composite'; import {empty} from '#sugar'; import Thing from '#thing'; -import {is, isCuratedURL, isDate, isStringNonEmpty, validateArrayItems} - from '#validators'; -import {parseContributors, parseDate} from '#yaml'; +import {parseContributors, parseDate, parseURLs} from '#yaml'; + +import { + is, + isCuratedURL, + isCuratedURLEntry, + isDate, + isStringNonEmpty, + validateArrayItems, +} from '#validators'; import {constituteFrom} from '#composite/wiki-data'; @@ -66,6 +73,7 @@ export class MusicVideo extends Thing { constituteFrom('thing', V('date')), ], + // This is a string, not a {url, annotation} entry. url: { flags: {update: true, expose: true}, @@ -77,7 +85,7 @@ export class MusicVideo extends Thing { dependencies: ['_urls'], transform: (url, {'_urls': urls}) => (url ? url - : !empty(urls) ? urls[0] + : !empty(urls) ? urls[0].url : null), }, }, @@ -86,14 +94,14 @@ export class MusicVideo extends Thing { flags: {update: true, expose: true}, update: { - validate: validateArrayItems(isCuratedURL), + validate: validateArrayItems(isCuratedURLEntry), }, expose: { dependencies: ['_url'], transform: (urls, {'_url': url}) => - (url && urls ? [url, ...urls] - : url ? [url] + (url && urls ? [{url}, ...urls] + : url ? [{url}] : urls ? urls : []), }, @@ -142,8 +150,9 @@ export class MusicVideo extends Thing { 'Label': {property: 'label'}, 'Directory': {property: 'unqualifiedDirectory'}, 'Date': {property: 'date', transform: parseDate}, - 'URL': {property: 'url'}, - 'URLs': {property: 'urls'}, + + 'URL': {property: 'url'}, // Just a string, not an object + 'URLs': {property: 'urls', transform: parseURLs}, 'Cover Art File Extension': {property: 'coverArtFileExtension'}, 'Cover Art Dimensions': {property: 'coverArtDimensions'}, -- cgit 1.3.0-6-gf8a5