UNPKG

feedsmith

Version:

Robust and fast parser and generator for RSS, Atom, JSON Feed, and RDF feeds, with support for Podcast, iTunes, Dublin Core, and OPML files.

77 lines 2.74 kB
import { isObject, parseArrayOf, parseBoolean, parseNumber, parseString, trimObject, } from '../../common/utils.js'; export const generateRfc822Date = (value) => { if (typeof value === 'string') { // biome-ignore lint/style/noParameterAssign: No explanation. value = new Date(value); } if (value instanceof Date && !Number.isNaN(value.getTime())) { return value.toUTCString(); } }; // biome-ignore lint/suspicious/noExplicitAny: No explanation. export const generateOutline = (value) => { if (!isObject(value)) { return; } const outline = { '@text': parseString(value.text), '@type': parseString(value.type), '@isComment': parseBoolean(value.isComment), '@isBreakpoint': parseBoolean(value.isBreakpoint), '@created': parseString(value.created), '@category': parseString(value.category), '@description': parseString(value.description), '@xmlUrl': parseString(value.xmlUrl), '@htmlUrl': parseString(value.htmlUrl), '@language': parseString(value.language), '@title': parseString(value.title), '@version': parseString(value.version), '@url': parseString(value.url), outline: parseArrayOf(value.outlines, generateOutline), }; if (outline['@text'] !== undefined) { return trimObject(outline); } }; export const generateHead = (value) => { if (!isObject(value)) { return; } return trimObject({ title: parseString(value.title), dateCreated: generateRfc822Date(value.dateCreated), dateModified: generateRfc822Date(value.dateModified), ownerName: parseString(value.ownerName), ownerEmail: parseString(value.ownerEmail), ownerId: parseString(value.ownerId), docs: parseString(value.docs), expansionState: parseArrayOf(value.expansionState, parseNumber)?.join(), vertScrollState: parseNumber(value.vertScrollState), windowTop: parseNumber(value.windowTop), windowLeft: parseNumber(value.windowLeft), windowBottom: parseNumber(value.windowBottom), windowRight: parseNumber(value.windowRight), }); }; export const generateBody = (value) => { if (!isObject(value)) { return; } return trimObject({ outline: parseArrayOf(value.outlines, generateOutline), }); }; export const generateOpml = (value) => { if (!isObject(value)) { return; } const opml = trimObject({ '@version': '2.0', head: generateHead(value.head), body: generateBody(value.body), }); if (opml?.body !== undefined) { return { opml }; } }; //# sourceMappingURL=utils.js.map