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.

213 lines (212 loc) 14.4 kB
const require_utils = require("../../../common/utils.cjs"); const require_utils$1 = require("../../../namespaces/admin/parse/utils.cjs"); const require_utils$2 = require("../../../namespaces/cc/parse/utils.cjs"); const require_utils$3 = require("../../../namespaces/creativecommons/parse/utils.cjs"); const require_utils$4 = require("../../../namespaces/dc/parse/utils.cjs"); const require_utils$5 = require("../../../namespaces/dcterms/parse/utils.cjs"); const require_utils$6 = require("../../../namespaces/geo/parse/utils.cjs"); const require_utils$7 = require("../../../namespaces/georss/parse/utils.cjs"); const require_utils$8 = require("../../../namespaces/googleplay/parse/utils.cjs"); const require_utils$9 = require("../../../namespaces/itunes/parse/utils.cjs"); const require_utils$10 = require("../../../namespaces/media/parse/utils.cjs"); const require_utils$11 = require("../../../namespaces/opensearch/parse/utils.cjs"); const require_utils$12 = require("../../../namespaces/pingback/parse/utils.cjs"); const require_utils$13 = require("../../../namespaces/psc/parse/utils.cjs"); const require_utils$14 = require("../../../namespaces/slash/parse/utils.cjs"); const require_utils$15 = require("../../../namespaces/sy/parse/utils.cjs"); const require_utils$16 = require("../../../namespaces/thr/parse/utils.cjs"); const require_utils$17 = require("../../../namespaces/trackback/parse/utils.cjs"); const require_utils$18 = require("../../../namespaces/wfw/parse/utils.cjs"); const require_utils$19 = require("../../../namespaces/atom/parse/utils.cjs"); const require_utils$20 = require("../../../namespaces/content/parse/utils.cjs"); const require_utils$21 = require("../../../namespaces/acast/parse/utils.cjs"); const require_utils$22 = require("../../../namespaces/blogchannel/parse/utils.cjs"); const require_utils$23 = require("../../../namespaces/feedpress/parse/utils.cjs"); const require_utils$24 = require("../../../namespaces/podcast/parse/utils.cjs"); const require_utils$25 = require("../../../namespaces/prism/parse/utils.cjs"); const require_utils$26 = require("../../../namespaces/rawvoice/parse/utils.cjs"); const require_utils$27 = require("../../../namespaces/source/parse/utils.cjs"); const require_utils$28 = require("../../../namespaces/spotify/parse/utils.cjs"); //#region src/feeds/rss/parse/utils.ts const parsePerson = (value) => { return require_utils.parseSingularOf(value?.name ?? value, (value) => require_utils.parseString(require_utils.retrieveText(value))); }; const parseCategory = (value) => { return require_utils.trimObject({ name: require_utils.parseString(require_utils.retrieveText(value)), domain: require_utils.parseString(value?.["@domain"]) }); }; const parseCloud = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ domain: require_utils.parseString(value["@domain"]), port: require_utils.parseNumber(value["@port"]), path: require_utils.parseString(value["@path"]), registerProcedure: require_utils.parseString(value["@registerprocedure"]), protocol: require_utils.parseString(value["@protocol"]) }); }; const parseImage = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ url: require_utils.parseSingularOf(value.url, (value) => require_utils.parseString(require_utils.retrieveText(value))), title: require_utils.parseSingularOf(value.title, (value) => require_utils.parseString(require_utils.retrieveText(value))), link: require_utils.parseSingularOf(value.link, (value) => require_utils.parseString(require_utils.retrieveText(value))), description: require_utils.parseSingularOf(value.description, (value) => require_utils.parseString(require_utils.retrieveText(value))), height: require_utils.parseSingularOf(value.height, (value) => require_utils.parseNumber(require_utils.retrieveText(value))), width: require_utils.parseSingularOf(value.width, (value) => require_utils.parseNumber(require_utils.retrieveText(value))) }); }; const parseTextInput = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ title: require_utils.parseSingularOf(value.title, (value) => require_utils.parseString(require_utils.retrieveText(value))), description: require_utils.parseSingularOf(value.description, (value) => require_utils.parseString(require_utils.retrieveText(value))), name: require_utils.parseSingularOf(value.name, (value) => require_utils.parseString(require_utils.retrieveText(value))), link: require_utils.parseSingularOf(value.link, (value) => require_utils.parseString(require_utils.retrieveText(value))) }); }; const retrieveImage = (value) => { return require_utils.parseSingularOf(require_utils.parseSingular(value?.channel)?.image, parseImage) ?? require_utils.parseSingularOf(value?.image, parseImage); }; const retrieveTextInput = (value) => { return require_utils.parseSingularOf(require_utils.parseSingular(value?.channel)?.textinput, parseTextInput) ?? require_utils.parseSingularOf(value?.textinput, parseTextInput); }; const retrieveItems = (value, options) => { return require_utils.parseArrayOf(require_utils.parseSingular(value?.channel)?.item, parseItem, options?.maxItems) ?? require_utils.parseArrayOf(value?.item, parseItem, options?.maxItems); }; const parseSkipHours = (value) => { return require_utils.trimArray(value?.hour, (value) => require_utils.parseNumber(require_utils.retrieveText(value))); }; const parseSkipDays = (value) => { return require_utils.trimArray(value?.day, (value) => require_utils.parseString(require_utils.retrieveText(value))); }; const parseEnclosure = (value) => { if (!require_utils.isObject(value)) return; return require_utils.trimObject({ url: require_utils.parseString(value["@url"]), length: require_utils.parseNumber(value["@length"]), type: require_utils.parseString(value["@type"]) }); }; const parseGuid = (value) => { return require_utils.trimObject({ value: require_utils.parseString(require_utils.retrieveText(value)), isPermaLink: require_utils.parseBoolean(value?.["@ispermalink"]) }); }; const parseSource = (value) => { return require_utils.trimObject({ title: require_utils.parseString(require_utils.retrieveText(value)), url: require_utils.parseString(value?.["@url"]) }); }; const parseItem = (value) => { if (!require_utils.isObject(value)) return; const namespaces = require_utils.detectNamespaces(value); return require_utils.trimObject({ title: require_utils.parseSingularOf(value.title, (value) => require_utils.parseString(require_utils.retrieveText(value))), link: require_utils.parseSingularOf(value.link, (value) => require_utils.parseString(require_utils.retrieveText(value))), description: require_utils.parseSingularOf(value.description, (value) => require_utils.parseString(require_utils.retrieveText(value))), authors: require_utils.parseArrayOf(value.author, parsePerson), categories: require_utils.parseArrayOf(value.category, parseCategory), comments: require_utils.parseSingularOf(value.comments, (value) => require_utils.parseString(require_utils.retrieveText(value))), enclosures: require_utils.parseArrayOf(value.enclosure, parseEnclosure), guid: require_utils.parseSingularOf(value.guid, parseGuid), pubDate: require_utils.parseSingularOf(value.pubdate, (value) => require_utils.parseDate(require_utils.retrieveText(value))), source: require_utils.parseSingularOf(value.source, parseSource), atom: namespaces.has("atom") ? require_utils$19.retrieveEntry(value) : void 0, cc: namespaces.has("cc") ? require_utils$2.retrieveItemOrFeed(value) : void 0, dc: namespaces.has("dc") ? require_utils$4.retrieveItemOrFeed(value) : void 0, content: namespaces.has("content") ? require_utils$20.retrieveItem(value) : void 0, creativeCommons: namespaces.has("creativecommons") ? require_utils$3.retrieveItemOrFeed(value) : void 0, slash: namespaces.has("slash") ? require_utils$14.retrieveItem(value) : void 0, itunes: namespaces.has("itunes") ? require_utils$9.retrieveItem(value) : void 0, podcast: namespaces.has("podcast") ? require_utils$24.retrieveItem(value) : void 0, psc: namespaces.has("psc") ? require_utils$13.retrieveItem(value) : void 0, googleplay: namespaces.has("googleplay") ? require_utils$8.retrieveItem(value) : void 0, media: namespaces.has("media") ? require_utils$10.retrieveItemOrFeed(value) : void 0, georss: namespaces.has("georss") ? require_utils$7.retrieveItemOrFeed(value) : void 0, geo: namespaces.has("geo") ? require_utils$6.retrieveItemOrFeed(value) : void 0, thr: namespaces.has("thr") ? require_utils$16.retrieveItem(value) : void 0, dcterms: namespaces.has("dcterms") ? require_utils$5.retrieveItemOrFeed(value) : void 0, prism: namespaces.has("prism") ? require_utils$25.retrieveItem(value) : void 0, wfw: namespaces.has("wfw") ? require_utils$18.retrieveItem(value) : void 0, sourceNs: namespaces.has("source") ? require_utils$27.retrieveItem(value) : void 0, rawvoice: namespaces.has("rawvoice") ? require_utils$26.retrieveItem(value) : void 0, spotify: namespaces.has("spotify") ? require_utils$28.retrieveItem(value) : void 0, pingback: namespaces.has("pingback") ? require_utils$12.retrieveItem(value) : void 0, trackback: namespaces.has("trackback") ? require_utils$17.retrieveItem(value) : void 0, acast: namespaces.has("acast") ? require_utils$21.retrieveItem(value) : void 0 }); }; const parseFeed = (value, options) => { const channel = require_utils.parseSingular(value?.channel); if (!require_utils.isObject(channel)) return; const namespaces = require_utils.detectNamespaces(channel); return require_utils.trimObject({ title: require_utils.parseSingularOf(channel.title, (value) => require_utils.parseString(require_utils.retrieveText(value))), link: require_utils.parseSingularOf(channel.link, (value) => require_utils.parseString(require_utils.retrieveText(value))), description: require_utils.parseSingularOf(channel.description, (value) => require_utils.parseString(require_utils.retrieveText(value))), language: require_utils.parseSingularOf(channel.language, (value) => require_utils.parseString(require_utils.retrieveText(value))), copyright: require_utils.parseSingularOf(channel.copyright, (value) => require_utils.parseString(require_utils.retrieveText(value))), managingEditor: require_utils.parseSingularOf(channel.managingeditor, parsePerson), webMaster: require_utils.parseSingularOf(channel.webmaster, parsePerson), pubDate: require_utils.parseSingularOf(channel.pubdate, (value) => require_utils.parseDate(require_utils.retrieveText(value))), lastBuildDate: require_utils.parseSingularOf(channel.lastbuilddate, (value) => require_utils.parseDate(require_utils.retrieveText(value))), categories: require_utils.parseArrayOf(channel.category, parseCategory), generator: require_utils.parseSingularOf(channel.generator, (value) => require_utils.parseString(require_utils.retrieveText(value))), docs: require_utils.parseSingularOf(channel.docs, (value) => require_utils.parseString(require_utils.retrieveText(value))), cloud: require_utils.parseSingularOf(channel.cloud, parseCloud), ttl: require_utils.parseSingularOf(channel.ttl, (value) => require_utils.parseNumber(require_utils.retrieveText(value))), image: retrieveImage(value), rating: require_utils.parseSingularOf(channel.rating, (value) => require_utils.parseString(require_utils.retrieveText(value))), textInput: retrieveTextInput(value), skipHours: require_utils.parseSingularOf(channel.skiphours, parseSkipHours), skipDays: require_utils.parseSingularOf(channel.skipdays, parseSkipDays), items: retrieveItems(value, options), atom: namespaces.has("atom") ? require_utils$19.retrieveFeed(channel) : void 0, cc: namespaces.has("cc") ? require_utils$2.retrieveItemOrFeed(channel) : void 0, dc: namespaces.has("dc") ? require_utils$4.retrieveItemOrFeed(channel) : void 0, sy: namespaces.has("sy") ? require_utils$15.retrieveFeed(channel) : void 0, itunes: namespaces.has("itunes") ? require_utils$9.retrieveFeed(channel) : void 0, podcast: namespaces.has("podcast") ? require_utils$24.retrieveFeed(channel) : void 0, googleplay: namespaces.has("googleplay") ? require_utils$8.retrieveFeed(channel) : void 0, media: namespaces.has("media") ? require_utils$10.retrieveItemOrFeed(channel) : void 0, georss: namespaces.has("georss") ? require_utils$7.retrieveItemOrFeed(channel) : void 0, geo: namespaces.has("geo") ? require_utils$6.retrieveItemOrFeed(channel) : void 0, dcterms: namespaces.has("dcterms") ? require_utils$5.retrieveItemOrFeed(channel) : void 0, prism: namespaces.has("prism") ? require_utils$25.retrieveFeed(channel) : void 0, creativeCommons: namespaces.has("creativecommons") ? require_utils$3.retrieveItemOrFeed(channel) : void 0, feedpress: namespaces.has("feedpress") ? require_utils$23.retrieveFeed(channel) : void 0, opensearch: namespaces.has("opensearch") ? require_utils$11.retrieveFeed(channel) : void 0, admin: namespaces.has("admin") ? require_utils$1.retrieveFeed(channel) : void 0, sourceNs: namespaces.has("source") ? require_utils$27.retrieveFeed(channel) : void 0, blogChannel: namespaces.has("blogchannel") ? require_utils$22.retrieveFeed(channel) : void 0, rawvoice: namespaces.has("rawvoice") ? require_utils$26.retrieveFeed(channel) : void 0, spotify: namespaces.has("spotify") ? require_utils$28.retrieveFeed(channel) : void 0, pingback: namespaces.has("pingback") ? require_utils$12.retrieveFeed(channel) : void 0, acast: namespaces.has("acast") ? require_utils$21.retrieveFeed(channel) : void 0 }); }; const retrieveFeed = (value, options) => { return require_utils.parseSingularOf(value?.rss, (value) => parseFeed(value, options)); }; //#endregion exports.parseCategory = parseCategory; exports.parseCloud = parseCloud; exports.parseEnclosure = parseEnclosure; exports.parseFeed = parseFeed; exports.parseGuid = parseGuid; exports.parseImage = parseImage; exports.parseItem = parseItem; exports.parsePerson = parsePerson; exports.parseSkipDays = parseSkipDays; exports.parseSkipHours = parseSkipHours; exports.parseSource = parseSource; exports.parseTextInput = parseTextInput; exports.retrieveFeed = retrieveFeed; exports.retrieveImage = retrieveImage; exports.retrieveItems = retrieveItems; exports.retrieveTextInput = retrieveTextInput;