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.

67 lines (66 loc) 3.03 kB
const require_utils = require("../../../common/utils.cjs"); //#region src/namespaces/source/generate/utils.ts const generateAccount = (account) => { if (!require_utils.isObject(account) || !require_utils.isNonEmptyString(account.service)) return; return require_utils.trimObject({ "@service": account.service, ...require_utils.generateTextOrCdataString(account.value) }); }; const generateLikes = (likes) => { if (!require_utils.isObject(likes) || !require_utils.isNonEmptyString(likes.server)) return; return { "@server": likes.server }; }; const generateArchive = (archive) => { if (!require_utils.isObject(archive) || !require_utils.isNonEmptyString(archive.url) || !require_utils.isNonEmptyString(archive.startDay)) return; return require_utils.trimObject({ "source:url": archive.url, "source:startDay": archive.startDay, "source:endDay": require_utils.generateCdataString(archive.endDay), "source:filename": require_utils.generateCdataString(archive.filename) }); }; const generateSubscriptionList = (subscriptionList) => { if (!require_utils.isObject(subscriptionList) || !require_utils.isNonEmptyString(subscriptionList.url)) return; return require_utils.trimObject({ "@url": subscriptionList.url, ...require_utils.generateTextOrCdataString(subscriptionList.value) }); }; const generateInReplyTo = (inReplyTo) => { if (!require_utils.isObject(inReplyTo) || !require_utils.isNonEmptyString(inReplyTo.value)) return; return require_utils.trimObject({ ...require_utils.generateTextOrCdataString(inReplyTo.value), "@isPermaLink": require_utils.generateBoolean(inReplyTo.isPermaLink) }); }; const generateFeed = (feed) => { if (!require_utils.isObject(feed)) return; return require_utils.trimObject({ "source:account": require_utils.trimArray(feed.accounts, generateAccount), "source:likes": generateLikes(feed.likes), "source:archive": generateArchive(feed.archive), "source:subscriptionList": require_utils.trimArray(feed.subscriptionLists, generateSubscriptionList), "source:cloud": require_utils.generateCdataString(feed.cloud), "source:blogroll": require_utils.generateCdataString(feed.blogroll), "source:self": require_utils.generateCdataString(feed.self), "source:localTime": require_utils.generateCdataString(feed.localTime) }); }; const generateItem = (item) => { if (!require_utils.isObject(item)) return; return require_utils.trimObject({ "source:markdown": require_utils.generateCdataString(item.markdown), "source:outline": require_utils.trimArray(item.outlines, require_utils.generateCdataString), "source:linkFull": require_utils.generateCdataString(item.linkFull), "source:inReplyTo": generateInReplyTo(item.inReplyTo) }); }; //#endregion exports.generateAccount = generateAccount; exports.generateArchive = generateArchive; exports.generateFeed = generateFeed; exports.generateInReplyTo = generateInReplyTo; exports.generateItem = generateItem; exports.generateLikes = generateLikes; exports.generateSubscriptionList = generateSubscriptionList;