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.

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