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.
153 lines (152 loc) • 12.2 kB
JavaScript
const require_utils = require("../../../common/utils.cjs");
//#region src/namespaces/prism/generate/utils.ts
const generateFeed = (feed) => {
if (!require_utils.isObject(feed)) return;
return require_utils.trimObject({
"prism:publicationName": require_utils.generateCdataString(feed.publicationName),
"prism:issn": require_utils.generateCdataString(feed.issn),
"prism:eIssn": require_utils.generateCdataString(feed.eIssn),
"prism:isbn": require_utils.trimArray(feed.isbns, require_utils.generateCdataString),
"prism:issueIdentifier": require_utils.generateCdataString(feed.issueIdentifier),
"prism:issueName": require_utils.generateCdataString(feed.issueName),
"prism:issueTeaser": require_utils.generateCdataString(feed.issueTeaser),
"prism:issueType": require_utils.generateCdataString(feed.issueType),
"prism:volume": require_utils.generateCdataString(feed.volume),
"prism:number": require_utils.generateCdataString(feed.number),
"prism:edition": require_utils.generateCdataString(feed.edition),
"prism:aggregateIssueNumber": require_utils.generateNumber(feed.aggregateIssueNumber),
"prism:aggregationType": require_utils.generateCdataString(feed.aggregationType),
"prism:coverDate": require_utils.generateRfc3339Date(feed.coverDate),
"prism:coverDisplayDate": require_utils.generateCdataString(feed.coverDisplayDate),
"prism:publicationDate": require_utils.trimArray(feed.publicationDates, require_utils.generateRfc3339Date),
"prism:publicationDisplayDate": require_utils.trimArray(feed.publicationDisplayDates, require_utils.generateCdataString),
"prism:creationDate": require_utils.generateRfc3339Date(feed.creationDate),
"prism:modificationDate": require_utils.generateRfc3339Date(feed.modificationDate),
"prism:dateReceived": require_utils.generateRfc3339Date(feed.dateReceived),
"prism:onSaleDate": require_utils.trimArray(feed.onSaleDates, require_utils.generateRfc3339Date),
"prism:onSaleDay": require_utils.trimArray(feed.onSaleDays, require_utils.generateCdataString),
"prism:offSaleDate": require_utils.trimArray(feed.offSaleDates, require_utils.generateRfc3339Date),
"prism:killDate": require_utils.generateRfc3339Date(feed.killDate),
"prism:copyrightYear": require_utils.trimArray(feed.copyrightYears, require_utils.generateCdataString),
"prism:contentType": require_utils.generateCdataString(feed.contentType),
"prism:alternateTitle": require_utils.trimArray(feed.alternateTitles, require_utils.generateCdataString),
"prism:subtitle": require_utils.trimArray(feed.subtitles, require_utils.generateCdataString),
"prism:teaser": require_utils.trimArray(feed.teasers, require_utils.generateCdataString),
"prism:keyword": require_utils.trimArray(feed.keywords, require_utils.generateCdataString),
"prism:seriesTitle": require_utils.generateCdataString(feed.seriesTitle),
"prism:seriesNumber": require_utils.generateNumber(feed.seriesNumber),
"prism:bookEdition": require_utils.trimArray(feed.bookEditions, require_utils.generateCdataString),
"prism:nationalCatalogNumber": require_utils.generateCdataString(feed.nationalCatalogNumber),
"prism:productCode": require_utils.trimArray(feed.productCodes, require_utils.generateCdataString),
"prism:uspsNumber": require_utils.generateCdataString(feed.uspsNumber),
"prism:publishingFrequency": require_utils.generateCdataString(feed.publishingFrequency),
"prism:channel": require_utils.trimArray(feed.channels, require_utils.generateCdataString),
"prism:subchannel1": require_utils.generateCdataString(feed.subchannel1),
"prism:subchannel2": require_utils.generateCdataString(feed.subchannel2),
"prism:subchannel3": require_utils.generateCdataString(feed.subchannel3),
"prism:subchannel4": require_utils.generateCdataString(feed.subchannel4),
"prism:section": require_utils.generateCdataString(feed.section),
"prism:subsection1": require_utils.generateCdataString(feed.subsection1),
"prism:subsection2": require_utils.generateCdataString(feed.subsection2),
"prism:subsection3": require_utils.generateCdataString(feed.subsection3),
"prism:subsection4": require_utils.generateCdataString(feed.subsection4),
"prism:corporateEntity": require_utils.trimArray(feed.corporateEntities, require_utils.generateCdataString),
"prism:distributor": require_utils.generateCdataString(feed.distributor),
"prism:sellingAgency": require_utils.trimArray(feed.sellingAgencies, require_utils.generateCdataString),
"prism:organization": require_utils.trimArray(feed.organizations, require_utils.generateCdataString),
"prism:person": require_utils.trimArray(feed.persons, require_utils.generateCdataString),
"prism:platform": require_utils.trimArray(feed.platforms, require_utils.generateCdataString),
"prism:originPlatform": require_utils.trimArray(feed.originPlatforms, require_utils.generateCdataString),
"prism:device": require_utils.generateCdataString(feed.device),
"prism:complianceProfile": require_utils.generateCdataString(feed.complianceProfile),
"prism:blogTitle": require_utils.generateCdataString(feed.blogTitle),
"prism:blogURL": require_utils.generateCdataString(feed.blogURL),
"prism:link": require_utils.trimArray(feed.links, require_utils.generateCdataString),
"prism:url": require_utils.trimArray(feed.urls, require_utils.generateCdataString),
"prism:byteCount": require_utils.generateNumber(feed.byteCount),
"prism:rating": require_utils.trimArray(feed.ratings, require_utils.generateCdataString),
"prism:timePeriod": require_utils.generateCdataString(feed.timePeriod),
"prism:versionIdentifier": require_utils.generateCdataString(feed.versionIdentifier),
"prism:ticker": require_utils.trimArray(feed.tickers, require_utils.generateCdataString),
"prism:academicField": require_utils.trimArray(feed.academicFields, require_utils.generateCdataString),
"prism:event": require_utils.trimArray(feed.events, require_utils.generateCdataString),
"prism:genre": require_utils.trimArray(feed.genres, require_utils.generateCdataString),
"prism:industry": require_utils.trimArray(feed.industries, require_utils.generateCdataString),
"prism:location": require_utils.trimArray(feed.locations, require_utils.generateCdataString),
"prism:object": require_utils.trimArray(feed.objects, require_utils.generateCdataString),
"prism:profession": require_utils.generateCdataString(feed.profession),
"prism:sport": require_utils.generateCdataString(feed.sport),
"prism:embargoDate": require_utils.generateRfc3339Date(feed.embargoDate),
"prism:copyright": require_utils.generateCdataString(feed.copyright),
"prism:expirationDate": require_utils.generateRfc3339Date(feed.expirationDate),
"prism:rightsAgent": require_utils.generateCdataString(feed.rightsAgent)
});
};
const generateItem = (item) => {
if (!require_utils.isObject(item)) return;
return require_utils.trimObject({
"prism:publicationName": require_utils.generateCdataString(item.publicationName),
"prism:issn": require_utils.generateCdataString(item.issn),
"prism:eIssn": require_utils.generateCdataString(item.eIssn),
"prism:doi": require_utils.generateCdataString(item.doi),
"prism:url": require_utils.trimArray(item.urls, require_utils.generateCdataString),
"prism:volume": require_utils.generateCdataString(item.volume),
"prism:number": require_utils.generateCdataString(item.number),
"prism:edition": require_utils.generateCdataString(item.edition),
"prism:section": require_utils.generateCdataString(item.section),
"prism:startingPage": require_utils.generateCdataString(item.startingPage),
"prism:endingPage": require_utils.generateCdataString(item.endingPage),
"prism:pageRange": require_utils.generateCdataString(item.pageRange),
"prism:pageCount": require_utils.generateNumber(item.pageCount),
"prism:pageProgressionDirection": require_utils.generateCdataString(item.pageProgressionDirection),
"prism:samplePageRange": require_utils.generateCdataString(item.samplePageRange),
"prism:publicationDate": require_utils.trimArray(item.publicationDates, require_utils.generateRfc3339Date),
"prism:publicationDisplayDate": require_utils.trimArray(item.publicationDisplayDates, require_utils.generateCdataString),
"prism:creationDate": require_utils.generateRfc3339Date(item.creationDate),
"prism:modificationDate": require_utils.generateRfc3339Date(item.modificationDate),
"prism:dateReceived": require_utils.generateRfc3339Date(item.dateReceived),
"prism:killDate": require_utils.generateRfc3339Date(item.killDate),
"prism:copyrightYear": require_utils.trimArray(item.copyrightYears, require_utils.generateCdataString),
"prism:contentType": require_utils.generateCdataString(item.contentType),
"prism:genre": require_utils.trimArray(item.genres, require_utils.generateCdataString),
"prism:alternateTitle": require_utils.trimArray(item.alternateTitles, require_utils.generateCdataString),
"prism:subtitle": require_utils.trimArray(item.subtitles, require_utils.generateCdataString),
"prism:teaser": require_utils.trimArray(item.teasers, require_utils.generateCdataString),
"prism:keyword": require_utils.trimArray(item.keywords, require_utils.generateCdataString),
"prism:corporateEntity": require_utils.trimArray(item.corporateEntities, require_utils.generateCdataString),
"prism:organization": require_utils.trimArray(item.organizations, require_utils.generateCdataString),
"prism:person": require_utils.trimArray(item.persons, require_utils.generateCdataString),
"prism:platform": require_utils.trimArray(item.platforms, require_utils.generateCdataString),
"prism:device": require_utils.generateCdataString(item.device),
"prism:academicField": require_utils.trimArray(item.academicFields, require_utils.generateCdataString),
"prism:event": require_utils.trimArray(item.events, require_utils.generateCdataString),
"prism:industry": require_utils.trimArray(item.industries, require_utils.generateCdataString),
"prism:location": require_utils.trimArray(item.locations, require_utils.generateCdataString),
"prism:object": require_utils.trimArray(item.objects, require_utils.generateCdataString),
"prism:profession": require_utils.generateCdataString(item.profession),
"prism:sport": require_utils.generateCdataString(item.sport),
"prism:hasAlternative": require_utils.trimArray(item.hasAlternatives, require_utils.generateCdataString),
"prism:hasCorrection": require_utils.trimArray(item.hasCorrections, require_utils.generateCdataString),
"prism:hasTranslation": require_utils.trimArray(item.hasTranslations, require_utils.generateCdataString),
"prism:isAlternativeOf": require_utils.trimArray(item.isAlternativeOf, require_utils.generateCdataString),
"prism:isCorrectionOf": require_utils.trimArray(item.isCorrectionOf, require_utils.generateCdataString),
"prism:isTranslationOf": require_utils.generateCdataString(item.isTranslationOf),
"prism:supplementTitle": require_utils.trimArray(item.supplementTitles, require_utils.generateCdataString),
"prism:supplementDisplayID": require_utils.generateCdataString(item.supplementDisplayID),
"prism:supplementStartingPage": require_utils.generateCdataString(item.supplementStartingPage),
"prism:link": require_utils.trimArray(item.links, require_utils.generateCdataString),
"prism:wordCount": require_utils.generateNumber(item.wordCount),
"prism:byteCount": require_utils.generateNumber(item.byteCount),
"prism:rating": require_utils.trimArray(item.ratings, require_utils.generateCdataString),
"prism:timePeriod": require_utils.generateCdataString(item.timePeriod),
"prism:versionIdentifier": require_utils.generateCdataString(item.versionIdentifier),
"prism:ticker": require_utils.trimArray(item.tickers, require_utils.generateCdataString),
"prism:embargoDate": require_utils.generateRfc3339Date(item.embargoDate),
"prism:copyright": require_utils.generateCdataString(item.copyright),
"prism:expirationDate": require_utils.generateRfc3339Date(item.expirationDate),
"prism:rightsAgent": require_utils.generateCdataString(item.rightsAgent)
});
};
//#endregion
exports.generateFeed = generateFeed;
exports.generateItem = generateItem;