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
JavaScript
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;