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.

60 lines (59 loc) 2.67 kB
import { isObject, parseArrayOf, parseBoolean, parseSingularOf, parseString, retrieveText, trimObject } from "../../../common/utils.js"; //#region src/namespaces/source/parse/utils.ts const parseAccount = (value) => { if (!isObject(value)) return; return trimObject({ service: parseString(value["@service"]), value: parseString(retrieveText(value)) }); }; const parseLikes = (value) => { if (!isObject(value)) return; return trimObject({ server: parseString(value["@server"]) }); }; const parseArchive = (value) => { if (!isObject(value)) return; return trimObject({ url: parseSingularOf(value["source:url"], (value) => parseString(retrieveText(value))), startDay: parseSingularOf(value["source:startday"], (value) => parseString(retrieveText(value))), endDay: parseSingularOf(value["source:endday"], (value) => parseString(retrieveText(value))), filename: parseSingularOf(value["source:filename"], (value) => parseString(retrieveText(value))) }); }; const parseSubscriptionList = (value) => { if (!isObject(value)) return; return trimObject({ url: parseString(value["@url"]), value: parseString(retrieveText(value)) }); }; const parseInReplyTo = (value) => { return trimObject({ value: parseString(retrieveText(value)), isPermaLink: parseBoolean(value?.["@ispermalink"]) }); }; const retrieveFeed = (value) => { if (!isObject(value)) return; return trimObject({ accounts: parseArrayOf(value["source:account"], parseAccount), likes: parseSingularOf(value["source:likes"], parseLikes), archive: parseSingularOf(value["source:archive"], parseArchive), subscriptionLists: parseArrayOf(value["source:subscriptionlist"], parseSubscriptionList), cloud: parseSingularOf(value["source:cloud"], (value) => parseString(retrieveText(value))), blogroll: parseSingularOf(value["source:blogroll"], (value) => parseString(retrieveText(value))), self: parseSingularOf(value["source:self"], (value) => parseString(retrieveText(value))), localTime: parseSingularOf(value["source:localtime"], (value) => parseString(retrieveText(value))) }); }; const retrieveItem = (value) => { if (!isObject(value)) return; return trimObject({ markdown: parseSingularOf(value["source:markdown"], (value) => parseString(retrieveText(value))), outlines: parseArrayOf(value["source:outline"], (value) => parseString(retrieveText(value))), linkFull: parseSingularOf(value["source:linkfull"], (value) => parseString(retrieveText(value))), inReplyTo: parseSingularOf(value["source:inreplyto"], parseInReplyTo) }); }; //#endregion export { parseAccount, parseArchive, parseInReplyTo, parseLikes, parseSubscriptionList, retrieveFeed, retrieveItem };