UNPKG

feedsmith

Version:

Fast, all‑in‑one feed parser and generator for RSS, Atom, RDF, and JSON Feed, with support for Podcast, iTunes, Dublin Core, and OPML files.

211 lines (210 loc) 10.5 kB
const require_config = require("../../../common/config.cjs"); const require_utils = require("../../../common/utils.cjs"); const require_utils$1 = require("../../../namespaces/admin/generate/utils.cjs"); const require_utils$2 = require("../../../namespaces/cc/generate/utils.cjs"); const require_utils$3 = require("../../../namespaces/creativecommons/generate/utils.cjs"); const require_utils$4 = require("../../../namespaces/dc/generate/utils.cjs"); const require_utils$5 = require("../../../namespaces/dcterms/generate/utils.cjs"); const require_utils$6 = require("../../../namespaces/geo/generate/utils.cjs"); const require_utils$7 = require("../../../namespaces/georss/generate/utils.cjs"); const require_utils$8 = require("../../../namespaces/googleplay/generate/utils.cjs"); const require_utils$9 = require("../../../namespaces/itunes/generate/utils.cjs"); const require_utils$10 = require("../../../namespaces/media/generate/utils.cjs"); const require_utils$11 = require("../../../namespaces/opensearch/generate/utils.cjs"); const require_utils$12 = require("../../../namespaces/pingback/generate/utils.cjs"); const require_utils$13 = require("../../../namespaces/psc/generate/utils.cjs"); const require_utils$14 = require("../../../namespaces/slash/generate/utils.cjs"); const require_utils$15 = require("../../../namespaces/sy/generate/utils.cjs"); const require_utils$16 = require("../../../namespaces/thr/generate/utils.cjs"); const require_utils$17 = require("../../../namespaces/trackback/generate/utils.cjs"); const require_utils$18 = require("../../../namespaces/wfw/generate/utils.cjs"); const require_utils$19 = require("../../../namespaces/acast/generate/utils.cjs"); const require_utils$20 = require("../../../namespaces/atom/generate/utils.cjs"); const require_utils$21 = require("../../../namespaces/blogchannel/generate/utils.cjs"); const require_utils$22 = require("../../../namespaces/content/generate/utils.cjs"); const require_utils$23 = require("../../../namespaces/feedpress/generate/utils.cjs"); const require_utils$24 = require("../../../namespaces/podcast/generate/utils.cjs"); const require_utils$25 = require("../../../namespaces/prism/generate/utils.cjs"); const require_utils$26 = require("../../../namespaces/rawvoice/generate/utils.cjs"); const require_utils$27 = require("../../../namespaces/source/generate/utils.cjs"); const require_utils$28 = require("../../../namespaces/spotify/generate/utils.cjs"); //#region src/feeds/rss/generate/utils.ts const generatePerson = (person) => { if (require_utils.isObject(person)) { const name = require_utils.generatePlainString(person.name); const email = require_utils.generatePlainString(person.email); if (email && name) return require_utils.generateCdataString(`${email} (${name})`); if (name) return require_utils.generateCdataString(name); if (email) return require_utils.generateCdataString(email); return; } return require_utils.generateCdataString(person); }; const generateCategory = (category) => { if (!require_utils.isObject(category)) return; return require_utils.trimObject({ "@domain": require_utils.generatePlainString(category.domain), ...require_utils.generateTextOrCdataString(category.name) }); }; const generateCloud = (cloud) => { if (!require_utils.isObject(cloud)) return; return require_utils.trimObject({ "@domain": require_utils.generatePlainString(cloud.domain), "@port": require_utils.generateNumber(cloud.port), "@path": require_utils.generatePlainString(cloud.path), "@registerProcedure": require_utils.generatePlainString(cloud.registerProcedure), "@protocol": require_utils.generatePlainString(cloud.protocol) }); }; const generateImage = (image) => { if (!require_utils.isObject(image)) return; return require_utils.trimObject({ url: require_utils.generateCdataString(image.url), title: require_utils.generateCdataString(image.title), link: require_utils.generateCdataString(image.link), description: require_utils.generateCdataString(image.description), height: require_utils.generateNumber(image.height), width: require_utils.generateNumber(image.width) }); }; const generateTextInput = (textInput) => { if (!require_utils.isObject(textInput)) return; return require_utils.trimObject({ title: require_utils.generateCdataString(textInput.title), description: require_utils.generateCdataString(textInput.description), name: require_utils.generateCdataString(textInput.name), link: require_utils.generateCdataString(textInput.link) }); }; const generateEnclosure = (enclosure) => { if (!require_utils.isObject(enclosure)) return; return require_utils.trimObject({ "@url": require_utils.generatePlainString(enclosure.url), "@length": require_utils.generateNumber(enclosure.length), "@type": require_utils.generatePlainString(enclosure.type) }); }; const generateSkipHours = (skipHours) => { return require_utils.trimObject({ hour: require_utils.trimArray(skipHours, require_utils.generateNumber) }); }; const generateSkipDays = (skipDays) => { return require_utils.trimObject({ day: require_utils.trimArray(skipDays, require_utils.generateCdataString) }); }; const generateGuid = (guid) => { return require_utils.trimObject({ ...require_utils.generateTextOrCdataString(guid?.value), "@isPermaLink": require_utils.generateBoolean(guid?.isPermaLink) }); }; const generateSource = (source) => { if (!require_utils.isObject(source)) return; return require_utils.trimObject({ ...require_utils.generateTextOrCdataString(source.title), "@url": require_utils.generatePlainString(source.url) }); }; const generateItem = (item) => { if (!require_utils.isObject(item)) return; return require_utils.trimObject({ title: require_utils.generateCdataString(item.title), link: require_utils.generateCdataString(item.link), description: require_utils.generateCdataString(item.description), author: require_utils.trimArray(item.authors, generatePerson), category: require_utils.trimArray(item.categories, generateCategory), comments: require_utils.generateCdataString(item.comments), enclosure: require_utils.trimArray(item.enclosures, generateEnclosure), guid: generateGuid(item.guid), pubDate: require_utils.generateRfc822Date(item.pubDate), source: generateSource(item.source), ...require_utils$20.generateEntry(item.atom), ...require_utils$2.generateItemOrFeed(item.cc), ...require_utils$4.generateItemOrFeed(item.dc), ...require_utils$22.generateItem(item.content), ...require_utils$3.generateItemOrFeed(item.creativeCommons), ...require_utils$14.generateItem(item.slash), ...require_utils$9.generateItem(item.itunes), ...require_utils$24.generateItem(item.podcast), ...require_utils$13.generateItem(item.psc), ...require_utils$8.generateItem(item.googleplay), ...require_utils$10.generateItemOrFeed(item.media), ...require_utils$7.generateItemOrFeed(item.georss), ...require_utils$6.generateItemOrFeed(item.geo), ...require_utils$16.generateItem(item.thr), ...require_utils$5.generateItemOrFeed(item.dcterms), ...require_utils$25.generateItem(item.prism), ...require_utils$18.generateItem(item.wfw), ...require_utils$27.generateItem(item.sourceNs), ...require_utils$26.generateItem(item.rawvoice), ...require_utils$28.generateItem(item.spotify), ...require_utils$12.generateItem(item.pingback), ...require_utils$17.generateItem(item.trackback), ...require_utils$19.generateItem(item.acast) }); }; const generateFeed = (feed) => { if (!require_utils.isObject(feed)) return; const trimmedValue = require_utils.trimObject({ title: require_utils.generateCdataString(feed.title), link: require_utils.generateCdataString(feed.link), description: require_utils.generateCdataString(feed.description), language: require_utils.generateCdataString(feed.language), copyright: require_utils.generateCdataString(feed.copyright), managingEditor: generatePerson(feed.managingEditor), webMaster: generatePerson(feed.webMaster), pubDate: require_utils.generateRfc822Date(feed.pubDate), lastBuildDate: require_utils.generateRfc822Date(feed.lastBuildDate), category: require_utils.trimArray(feed.categories, generateCategory), generator: require_utils.generateCdataString(feed.generator), docs: require_utils.generateCdataString(feed.docs), cloud: generateCloud(feed.cloud), ttl: require_utils.generateNumber(feed.ttl), image: generateImage(feed.image), rating: require_utils.generateCdataString(feed.rating), textInput: generateTextInput(feed.textInput), skipHours: generateSkipHours(feed.skipHours), skipDays: generateSkipDays(feed.skipDays), ...require_utils$20.generateFeed(feed.atom), ...require_utils$2.generateItemOrFeed(feed.cc), ...require_utils$4.generateItemOrFeed(feed.dc), ...require_utils$15.generateFeed(feed.sy), ...require_utils$9.generateFeed(feed.itunes), ...require_utils$24.generateFeed(feed.podcast), ...require_utils$8.generateFeed(feed.googleplay), ...require_utils$10.generateItemOrFeed(feed.media), ...require_utils$7.generateItemOrFeed(feed.georss), ...require_utils$6.generateItemOrFeed(feed.geo), ...require_utils$5.generateItemOrFeed(feed.dcterms), ...require_utils$25.generateFeed(feed.prism), ...require_utils$3.generateItemOrFeed(feed.creativeCommons), ...require_utils$23.generateFeed(feed.feedpress), ...require_utils$11.generateFeed(feed.opensearch), ...require_utils$1.generateFeed(feed.admin), ...require_utils$27.generateFeed(feed.sourceNs), ...require_utils$21.generateFeed(feed.blogChannel), ...require_utils$26.generateFeed(feed.rawvoice), ...require_utils$28.generateFeed(feed.spotify), ...require_utils$12.generateFeed(feed.pingback), ...require_utils$19.generateFeed(feed.acast), item: require_utils.trimArray(feed.items, generateItem) }); if (!trimmedValue) return; return { rss: { "@version": "2.0", ...require_utils.generateNamespaceAttrs(trimmedValue, require_config.namespaceUris), channel: trimmedValue } }; }; //#endregion exports.generateCategory = generateCategory; exports.generateCloud = generateCloud; exports.generateEnclosure = generateEnclosure; exports.generateFeed = generateFeed; exports.generateGuid = generateGuid; exports.generateImage = generateImage; exports.generateItem = generateItem; exports.generatePerson = generatePerson; exports.generateSkipDays = generateSkipDays; exports.generateSkipHours = generateSkipHours; exports.generateSource = generateSource; exports.generateTextInput = generateTextInput;