@newskit-render/feed 0.0.0-014af081

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/README.md +307 -0
  2. package/dist/cjs/config/index.d.ts +1 -0
  3. package/dist/cjs/config/index.js +9 -0
  4. package/dist/cjs/config/index.js.map +1 -0
  5. package/dist/cjs/helpers/client.d.ts +2 -0
  6. package/dist/cjs/helpers/client.js +35 -0
  7. package/dist/cjs/helpers/client.js.map +1 -0
  8. package/dist/cjs/helpers/createSitemap/buildSiteMapImages.d.ts +2 -0
  9. package/dist/cjs/helpers/createSitemap/buildSiteMapImages.js +18 -0
  10. package/dist/cjs/helpers/createSitemap/buildSiteMapImages.js.map +1 -0
  11. package/dist/cjs/helpers/createSitemap/buildSiteMapVideos.d.ts +2 -0
  12. package/dist/cjs/helpers/createSitemap/buildSiteMapVideos.js +23 -0
  13. package/dist/cjs/helpers/createSitemap/buildSiteMapVideos.js.map +1 -0
  14. package/dist/cjs/helpers/createSitemap/createArticleSitemap.d.ts +3 -0
  15. package/dist/cjs/helpers/createSitemap/createArticleSitemap.js +47 -0
  16. package/dist/cjs/helpers/createSitemap/createArticleSitemap.js.map +1 -0
  17. package/dist/cjs/helpers/createSitemap/createPagesSitemap.d.ts +2 -0
  18. package/dist/cjs/helpers/createSitemap/createPagesSitemap.js +43 -0
  19. package/dist/cjs/helpers/createSitemap/createPagesSitemap.js.map +1 -0
  20. package/dist/cjs/helpers/createSitemap/createSitemapIndex.d.ts +1 -0
  21. package/dist/cjs/helpers/createSitemap/createSitemapIndex.js +13 -0
  22. package/dist/cjs/helpers/createSitemap/createSitemapIndex.js.map +1 -0
  23. package/dist/cjs/helpers/createSitemap/generateArticleSlug.d.ts +1 -0
  24. package/dist/cjs/helpers/createSitemap/generateArticleSlug.js +13 -0
  25. package/dist/cjs/helpers/createSitemap/generateArticleSlug.js.map +1 -0
  26. package/dist/cjs/helpers/createSitemap/getCategorySlug.d.ts +2 -0
  27. package/dist/cjs/helpers/createSitemap/getCategorySlug.js +11 -0
  28. package/dist/cjs/helpers/createSitemap/getCategorySlug.js.map +1 -0
  29. package/dist/cjs/helpers/createSitemap/getSitemapHeaders.d.ts +1 -0
  30. package/dist/cjs/helpers/createSitemap/getSitemapHeaders.js +10 -0
  31. package/dist/cjs/helpers/createSitemap/getSitemapHeaders.js.map +1 -0
  32. package/dist/cjs/helpers/createSitemap/index.d.ts +7 -0
  33. package/dist/cjs/helpers/createSitemap/index.js +24 -0
  34. package/dist/cjs/helpers/createSitemap/index.js.map +1 -0
  35. package/dist/cjs/helpers/queryArticleList.d.ts +7 -0
  36. package/dist/cjs/helpers/queryArticleList.js +78 -0
  37. package/dist/cjs/helpers/queryArticleList.js.map +1 -0
  38. package/dist/cjs/helpers/queryPages.d.ts +3 -0
  39. package/dist/cjs/helpers/queryPages.js +78 -0
  40. package/dist/cjs/helpers/queryPages.js.map +1 -0
  41. package/dist/cjs/helpers/types.d.ts +55 -0
  42. package/dist/cjs/helpers/types.js +9 -0
  43. package/dist/cjs/helpers/types.js.map +1 -0
  44. package/dist/cjs/helpers/utils.d.ts +7 -0
  45. package/dist/cjs/helpers/utils.js +40 -0
  46. package/dist/cjs/helpers/utils.js.map +1 -0
  47. package/dist/cjs/index.d.ts +2 -0
  48. package/dist/cjs/index.js +19 -0
  49. package/dist/cjs/index.js.map +1 -0
  50. package/dist/cjs/rss/RSSFeedResolver.d.ts +2 -0
  51. package/dist/cjs/rss/RSSFeedResolver.js +66 -0
  52. package/dist/cjs/rss/RSSFeedResolver.js.map +1 -0
  53. package/dist/cjs/rss/__tests__/mocks.d.ts +163 -0
  54. package/dist/cjs/rss/__tests__/mocks.js +563 -0
  55. package/dist/cjs/rss/__tests__/mocks.js.map +1 -0
  56. package/dist/cjs/rss/contentEncodedUtils/createBlockElements.d.ts +10 -0
  57. package/dist/cjs/rss/contentEncodedUtils/createBlockElements.js +49 -0
  58. package/dist/cjs/rss/contentEncodedUtils/createBlockElements.js.map +1 -0
  59. package/dist/cjs/rss/contentEncodedUtils/createContentEncoded.d.ts +2 -0
  60. package/dist/cjs/rss/contentEncodedUtils/createContentEncoded.js +17 -0
  61. package/dist/cjs/rss/contentEncodedUtils/createContentEncoded.js.map +1 -0
  62. package/dist/cjs/rss/contentEncodedUtils/createImage.d.ts +2 -0
  63. package/dist/cjs/rss/contentEncodedUtils/createImage.js +23 -0
  64. package/dist/cjs/rss/contentEncodedUtils/createImage.js.map +1 -0
  65. package/dist/cjs/rss/contentEncodedUtils/createItems.d.ts +2 -0
  66. package/dist/cjs/rss/contentEncodedUtils/createItems.js +24 -0
  67. package/dist/cjs/rss/contentEncodedUtils/createItems.js.map +1 -0
  68. package/dist/cjs/rss/contentEncodedUtils/createParagraph.d.ts +2 -0
  69. package/dist/cjs/rss/contentEncodedUtils/createParagraph.js +23 -0
  70. package/dist/cjs/rss/contentEncodedUtils/createParagraph.js.map +1 -0
  71. package/dist/cjs/rss/contentEncodedUtils/createRSSFeed.d.ts +2 -0
  72. package/dist/cjs/rss/contentEncodedUtils/createRSSFeed.js +11 -0
  73. package/dist/cjs/rss/contentEncodedUtils/createRSSFeed.js.map +1 -0
  74. package/dist/cjs/rss/contentEncodedUtils/createSummary.d.ts +2 -0
  75. package/dist/cjs/rss/contentEncodedUtils/createSummary.js +15 -0
  76. package/dist/cjs/rss/contentEncodedUtils/createSummary.js.map +1 -0
  77. package/dist/cjs/rss/contentEncodedUtils/index.d.ts +4 -0
  78. package/dist/cjs/rss/contentEncodedUtils/index.js +21 -0
  79. package/dist/cjs/rss/contentEncodedUtils/index.js.map +1 -0
  80. package/dist/cjs/rss/helpers/articleHelper.d.ts +6 -0
  81. package/dist/cjs/rss/helpers/articleHelper.js +49 -0
  82. package/dist/cjs/rss/helpers/articleHelper.js.map +1 -0
  83. package/dist/cjs/rss/helpers/buildBodyDataTypesMap.d.ts +2 -0
  84. package/dist/cjs/rss/helpers/buildBodyDataTypesMap.js +39 -0
  85. package/dist/cjs/rss/helpers/buildBodyDataTypesMap.js.map +1 -0
  86. package/dist/cjs/rss/helpers/buildLists.d.ts +4 -0
  87. package/dist/cjs/rss/helpers/buildLists.js +35 -0
  88. package/dist/cjs/rss/helpers/buildLists.js.map +1 -0
  89. package/dist/cjs/rss/helpers/index.d.ts +3 -0
  90. package/dist/cjs/rss/helpers/index.js +20 -0
  91. package/dist/cjs/rss/helpers/index.js.map +1 -0
  92. package/dist/cjs/rss/index.d.ts +2 -0
  93. package/dist/cjs/rss/index.js +6 -0
  94. package/dist/cjs/rss/index.js.map +1 -0
  95. package/dist/cjs/rss/queries/getArticleList.d.ts +1 -0
  96. package/dist/cjs/rss/queries/getArticleList.js +11 -0
  97. package/dist/cjs/rss/queries/getArticleList.js.map +1 -0
  98. package/dist/cjs/rss/queries/index.d.ts +1 -0
  99. package/dist/cjs/rss/queries/index.js +18 -0
  100. package/dist/cjs/rss/queries/index.js.map +1 -0
  101. package/dist/cjs/rss/types.d.ts +198 -0
  102. package/dist/cjs/rss/types.js +30 -0
  103. package/dist/cjs/rss/types.js.map +1 -0
  104. package/dist/cjs/sitemap/__tests__/mocks.d.ts +13 -0
  105. package/dist/cjs/sitemap/__tests__/mocks.js +125 -0
  106. package/dist/cjs/sitemap/__tests__/mocks.js.map +1 -0
  107. package/dist/cjs/sitemap/index.d.ts +3 -0
  108. package/dist/cjs/sitemap/index.js +9 -0
  109. package/dist/cjs/sitemap/index.js.map +1 -0
  110. package/dist/cjs/sitemap/queries/getArticleList.d.ts +1 -0
  111. package/dist/cjs/sitemap/queries/getArticleList.js +11 -0
  112. package/dist/cjs/sitemap/queries/getArticleList.js.map +1 -0
  113. package/dist/cjs/sitemap/queries/getCompetitions.d.ts +1 -0
  114. package/dist/cjs/sitemap/queries/getCompetitions.js +11 -0
  115. package/dist/cjs/sitemap/queries/getCompetitions.js.map +1 -0
  116. package/dist/cjs/sitemap/queries/getPages.d.ts +1 -0
  117. package/dist/cjs/sitemap/queries/getPages.js +11 -0
  118. package/dist/cjs/sitemap/queries/getPages.js.map +1 -0
  119. package/dist/cjs/sitemap/queries/index.d.ts +3 -0
  120. package/dist/cjs/sitemap/queries/index.js +20 -0
  121. package/dist/cjs/sitemap/queries/index.js.map +1 -0
  122. package/dist/cjs/sitemap/resolvers/genericSitemapResolver.d.ts +2 -0
  123. package/dist/cjs/sitemap/resolvers/genericSitemapResolver.js +86 -0
  124. package/dist/cjs/sitemap/resolvers/genericSitemapResolver.js.map +1 -0
  125. package/dist/cjs/sitemap/resolvers/index.d.ts +2 -0
  126. package/dist/cjs/sitemap/resolvers/index.js +19 -0
  127. package/dist/cjs/sitemap/resolvers/index.js.map +1 -0
  128. package/dist/cjs/sitemap/resolvers/newsSitemapResolver.d.ts +2 -0
  129. package/dist/cjs/sitemap/resolvers/newsSitemapResolver.js +67 -0
  130. package/dist/cjs/sitemap/resolvers/newsSitemapResolver.js.map +1 -0
  131. package/dist/esm/config/index.d.ts +1 -0
  132. package/dist/esm/config/index.js +6 -0
  133. package/dist/esm/config/index.js.map +1 -0
  134. package/dist/esm/helpers/client.d.ts +2 -0
  135. package/dist/esm/helpers/client.js +32 -0
  136. package/dist/esm/helpers/client.js.map +1 -0
  137. package/dist/esm/helpers/createSitemap/buildSiteMapImages.d.ts +2 -0
  138. package/dist/esm/helpers/createSitemap/buildSiteMapImages.js +11 -0
  139. package/dist/esm/helpers/createSitemap/buildSiteMapImages.js.map +1 -0
  140. package/dist/esm/helpers/createSitemap/buildSiteMapVideos.d.ts +2 -0
  141. package/dist/esm/helpers/createSitemap/buildSiteMapVideos.js +16 -0
  142. package/dist/esm/helpers/createSitemap/buildSiteMapVideos.js.map +1 -0
  143. package/dist/esm/helpers/createSitemap/createArticleSitemap.d.ts +3 -0
  144. package/dist/esm/helpers/createSitemap/createArticleSitemap.js +40 -0
  145. package/dist/esm/helpers/createSitemap/createArticleSitemap.js.map +1 -0
  146. package/dist/esm/helpers/createSitemap/createPagesSitemap.d.ts +2 -0
  147. package/dist/esm/helpers/createSitemap/createPagesSitemap.js +36 -0
  148. package/dist/esm/helpers/createSitemap/createPagesSitemap.js.map +1 -0
  149. package/dist/esm/helpers/createSitemap/createSitemapIndex.d.ts +1 -0
  150. package/dist/esm/helpers/createSitemap/createSitemapIndex.js +9 -0
  151. package/dist/esm/helpers/createSitemap/createSitemapIndex.js.map +1 -0
  152. package/dist/esm/helpers/createSitemap/generateArticleSlug.d.ts +1 -0
  153. package/dist/esm/helpers/createSitemap/generateArticleSlug.js +9 -0
  154. package/dist/esm/helpers/createSitemap/generateArticleSlug.js.map +1 -0
  155. package/dist/esm/helpers/createSitemap/getCategorySlug.d.ts +2 -0
  156. package/dist/esm/helpers/createSitemap/getCategorySlug.js +7 -0
  157. package/dist/esm/helpers/createSitemap/getCategorySlug.js.map +1 -0
  158. package/dist/esm/helpers/createSitemap/getSitemapHeaders.d.ts +1 -0
  159. package/dist/esm/helpers/createSitemap/getSitemapHeaders.js +6 -0
  160. package/dist/esm/helpers/createSitemap/getSitemapHeaders.js.map +1 -0
  161. package/dist/esm/helpers/createSitemap/index.d.ts +7 -0
  162. package/dist/esm/helpers/createSitemap/index.js +8 -0
  163. package/dist/esm/helpers/createSitemap/index.js.map +1 -0
  164. package/dist/esm/helpers/queryArticleList.d.ts +7 -0
  165. package/dist/esm/helpers/queryArticleList.js +74 -0
  166. package/dist/esm/helpers/queryArticleList.js.map +1 -0
  167. package/dist/esm/helpers/queryPages.d.ts +3 -0
  168. package/dist/esm/helpers/queryPages.js +74 -0
  169. package/dist/esm/helpers/queryPages.js.map +1 -0
  170. package/dist/esm/helpers/types.d.ts +55 -0
  171. package/dist/esm/helpers/types.js +6 -0
  172. package/dist/esm/helpers/types.js.map +1 -0
  173. package/dist/esm/helpers/utils.d.ts +7 -0
  174. package/dist/esm/helpers/utils.js +31 -0
  175. package/dist/esm/helpers/utils.js.map +1 -0
  176. package/dist/esm/index.d.ts +2 -0
  177. package/dist/esm/index.js +3 -0
  178. package/dist/esm/index.js.map +1 -0
  179. package/dist/esm/rss/RSSFeedResolver.d.ts +2 -0
  180. package/dist/esm/rss/RSSFeedResolver.js +62 -0
  181. package/dist/esm/rss/RSSFeedResolver.js.map +1 -0
  182. package/dist/esm/rss/__tests__/mocks.d.ts +163 -0
  183. package/dist/esm/rss/__tests__/mocks.js +560 -0
  184. package/dist/esm/rss/__tests__/mocks.js.map +1 -0
  185. package/dist/esm/rss/contentEncodedUtils/createBlockElements.d.ts +10 -0
  186. package/dist/esm/rss/contentEncodedUtils/createBlockElements.js +37 -0
  187. package/dist/esm/rss/contentEncodedUtils/createBlockElements.js.map +1 -0
  188. package/dist/esm/rss/contentEncodedUtils/createContentEncoded.d.ts +2 -0
  189. package/dist/esm/rss/contentEncodedUtils/createContentEncoded.js +13 -0
  190. package/dist/esm/rss/contentEncodedUtils/createContentEncoded.js.map +1 -0
  191. package/dist/esm/rss/contentEncodedUtils/createImage.d.ts +2 -0
  192. package/dist/esm/rss/contentEncodedUtils/createImage.js +19 -0
  193. package/dist/esm/rss/contentEncodedUtils/createImage.js.map +1 -0
  194. package/dist/esm/rss/contentEncodedUtils/createItems.d.ts +2 -0
  195. package/dist/esm/rss/contentEncodedUtils/createItems.js +20 -0
  196. package/dist/esm/rss/contentEncodedUtils/createItems.js.map +1 -0
  197. package/dist/esm/rss/contentEncodedUtils/createParagraph.d.ts +2 -0
  198. package/dist/esm/rss/contentEncodedUtils/createParagraph.js +19 -0
  199. package/dist/esm/rss/contentEncodedUtils/createParagraph.js.map +1 -0
  200. package/dist/esm/rss/contentEncodedUtils/createRSSFeed.d.ts +2 -0
  201. package/dist/esm/rss/contentEncodedUtils/createRSSFeed.js +7 -0
  202. package/dist/esm/rss/contentEncodedUtils/createRSSFeed.js.map +1 -0
  203. package/dist/esm/rss/contentEncodedUtils/createSummary.d.ts +2 -0
  204. package/dist/esm/rss/contentEncodedUtils/createSummary.js +11 -0
  205. package/dist/esm/rss/contentEncodedUtils/createSummary.js.map +1 -0
  206. package/dist/esm/rss/contentEncodedUtils/index.d.ts +4 -0
  207. package/dist/esm/rss/contentEncodedUtils/index.js +5 -0
  208. package/dist/esm/rss/contentEncodedUtils/index.js.map +1 -0
  209. package/dist/esm/rss/helpers/articleHelper.d.ts +6 -0
  210. package/dist/esm/rss/helpers/articleHelper.js +41 -0
  211. package/dist/esm/rss/helpers/articleHelper.js.map +1 -0
  212. package/dist/esm/rss/helpers/buildBodyDataTypesMap.d.ts +2 -0
  213. package/dist/esm/rss/helpers/buildBodyDataTypesMap.js +36 -0
  214. package/dist/esm/rss/helpers/buildBodyDataTypesMap.js.map +1 -0
  215. package/dist/esm/rss/helpers/buildLists.d.ts +4 -0
  216. package/dist/esm/rss/helpers/buildLists.js +29 -0
  217. package/dist/esm/rss/helpers/buildLists.js.map +1 -0
  218. package/dist/esm/rss/helpers/index.d.ts +3 -0
  219. package/dist/esm/rss/helpers/index.js +4 -0
  220. package/dist/esm/rss/helpers/index.js.map +1 -0
  221. package/dist/esm/rss/index.d.ts +2 -0
  222. package/dist/esm/rss/index.js +2 -0
  223. package/dist/esm/rss/index.js.map +1 -0
  224. package/dist/esm/rss/queries/getArticleList.d.ts +1 -0
  225. package/dist/esm/rss/queries/getArticleList.js +8 -0
  226. package/dist/esm/rss/queries/getArticleList.js.map +1 -0
  227. package/dist/esm/rss/queries/index.d.ts +1 -0
  228. package/dist/esm/rss/queries/index.js +2 -0
  229. package/dist/esm/rss/queries/index.js.map +1 -0
  230. package/dist/esm/rss/types.d.ts +198 -0
  231. package/dist/esm/rss/types.js +27 -0
  232. package/dist/esm/rss/types.js.map +1 -0
  233. package/dist/esm/sitemap/__tests__/mocks.d.ts +13 -0
  234. package/dist/esm/sitemap/__tests__/mocks.js +122 -0
  235. package/dist/esm/sitemap/__tests__/mocks.js.map +1 -0
  236. package/dist/esm/sitemap/index.d.ts +3 -0
  237. package/dist/esm/sitemap/index.js +3 -0
  238. package/dist/esm/sitemap/index.js.map +1 -0
  239. package/dist/esm/sitemap/queries/getArticleList.d.ts +1 -0
  240. package/dist/esm/sitemap/queries/getArticleList.js +8 -0
  241. package/dist/esm/sitemap/queries/getArticleList.js.map +1 -0
  242. package/dist/esm/sitemap/queries/getCompetitions.d.ts +1 -0
  243. package/dist/esm/sitemap/queries/getCompetitions.js +8 -0
  244. package/dist/esm/sitemap/queries/getCompetitions.js.map +1 -0
  245. package/dist/esm/sitemap/queries/getPages.d.ts +1 -0
  246. package/dist/esm/sitemap/queries/getPages.js +8 -0
  247. package/dist/esm/sitemap/queries/getPages.js.map +1 -0
  248. package/dist/esm/sitemap/queries/index.d.ts +3 -0
  249. package/dist/esm/sitemap/queries/index.js +4 -0
  250. package/dist/esm/sitemap/queries/index.js.map +1 -0
  251. package/dist/esm/sitemap/resolvers/genericSitemapResolver.d.ts +2 -0
  252. package/dist/esm/sitemap/resolvers/genericSitemapResolver.js +82 -0
  253. package/dist/esm/sitemap/resolvers/genericSitemapResolver.js.map +1 -0
  254. package/dist/esm/sitemap/resolvers/index.d.ts +2 -0
  255. package/dist/esm/sitemap/resolvers/index.js +3 -0
  256. package/dist/esm/sitemap/resolvers/index.js.map +1 -0
  257. package/dist/esm/sitemap/resolvers/newsSitemapResolver.d.ts +2 -0
  258. package/dist/esm/sitemap/resolvers/newsSitemapResolver.js +63 -0
  259. package/dist/esm/sitemap/resolvers/newsSitemapResolver.js.map +1 -0
  260. package/package.json +63 -0
package/README.md ADDED
@@ -0,0 +1,307 @@
1
+ # @newskit-render/feed
2
+
3
+ A package used for the generation of different types of sitemaps or Rss feed. You can see an example here: [@newskit-render/core](https://www.npmjs.com/package/@newskit-render/core)
4
+
5
+ ## Getting started
6
+
7
+ ### Add it as a dependency:
8
+
9
+ ```
10
+ npm install @newskit-render/feed
11
+ ```
12
+
13
+ or
14
+
15
+ ```
16
+ yarn add @newskit-render/feed
17
+ ```
18
+
19
+ ### Create sitemap pages
20
+
21
+ Under your `/pages/api` folder create `sitemap.ts`, `pages-sitemap.ts`, `competitions-sitemap.ts` and `news-sitemap.ts` files.
22
+
23
+ update the `next.config.js` file to add rewrites:
24
+
25
+ ```
26
+ async rewrites() {
27
+ return [
28
+ {
29
+ source: '/sitemap.xml',
30
+ destination: '/api/sitemap',
31
+ },
32
+ {
33
+ source: '/pages-sitemap.xml',
34
+ destination: '/api/pages-sitemap',
35
+ },
36
+ {
37
+ source: '/competitions-sitemap.xml',
38
+ destination: '/api/competitions-sitemap',
39
+ },
40
+ {
41
+ source: '/news-sitemap.xml',
42
+ destination: '/api/news-sitemap',
43
+ },
44
+ ]
45
+ },
46
+ ```
47
+
48
+ ### Create Rss page
49
+
50
+ Under your `/pages/api` folder create `feed.ts` file
51
+
52
+ update the `next.config.js` file to add rewrites:
53
+
54
+ ```
55
+ async rewrites() {
56
+ return [
57
+ {
58
+ source: '/feed',
59
+ destination: '/api/feed',
60
+ },
61
+ ]
62
+ },
63
+ ```
64
+
65
+ see `rssFeed` funtion
66
+
67
+ ### Implementation
68
+
69
+ #### genericSitemap
70
+
71
+ `genericSitemap` - this function will handle the logic for 4 different views that correspond to the sitemap endpoints you should already have set up (see Create sitemap pages section).
72
+
73
+ - `sitemap.xml` will show a `sitemapindex` of sitemaps by date.
74
+ - `sitemap.xml?query=1` will show all articles created on that day, example `sitemap.xml?yyyy=2022&mm=10&dd=14`.
75
+ - `pages-sitemap.xml` will show all pages including homepage - custom pages not available in the api can be added.
76
+ - `competitions-sitemap.xml` will show all competitions.
77
+
78
+ `genericSitemap` is passes a `context` object, depending on the view, it will include the following parameters:
79
+
80
+ `dataType` can be `articles`, `pages` or `competitions`. Should be set to show `pages` or `competitions` view. Not setting this will result in default of `articles` used by `sitemap.xml` and `sitemap.xml?query=1`.
81
+
82
+ `res` (required) from the Next.js context object.
83
+
84
+ `query` from the Next.js context object - is required for `sitemap.xml?query=1` view.
85
+
86
+ `publisher` (required) is the name of the publisher in the NewsKit API, this string will be used for fetching the articles for the correct publication.
87
+
88
+ `publicationName` (required) is the name of the publication, used inside the sitemap `<news:name>${publicationName}</news:name>` tag.
89
+
90
+ `domain` (required) is the domain of your website.
91
+
92
+ `firstArticleDate` is the date of the first article you have published. This will determine from when the `sitemapindex` of sitemaps by date starts from. If not added you will get the last 30 days.
93
+
94
+ `CustomStaticPageCollection` provides the possibility to manually add a list of static pages, that do not exist in an API. This will work with pages and competitions, but it would be unlikely to be used with competitions. The format of the static page is in the example `pages-sitemap.xml` below, but has 2 properties. `slug` (required) and `url`
95
+
96
+ `changefreq` you can change the default changefreq for entries on the sitemap
97
+
98
+ `priority` you can change the default priority for entires on the sitemap
99
+
100
+ Example for `sitemap.xml` and `sitemap.xml?query=1`
101
+
102
+ ```
103
+ import { NextApiRequest, NextApiResponse } from 'next'
104
+ import { genericSitemap } from '@newskit-render/sitemap'
105
+ import { Publisher } from '@newskit-render/api'
106
+ import { getHost } from '@newskit-render/shared-components'
107
+
108
+ const handler = async (req: NextApiRequest, res: NextApiResponse) =>
109
+ genericSitemap({
110
+ res,
111
+ query: req.query,
112
+ publisher: process.env.PUBLISHER as Publisher,
113
+ domain: new URL(getHost(req)).host,
114
+ firstArticleDate: process.env.SITEMAP_FIRST_PUBLICATION_DATE,
115
+ publicationName: process.env.SITEMAP_PUBLICATION_NAME,
116
+ })
117
+
118
+ export default handler
119
+
120
+ ```
121
+
122
+ You will find the env vars in `/helm/value-{env}.yaml`
123
+
124
+ Example values are:
125
+
126
+ ```
127
+ publisher: 'VIRGIN',
128
+ domain: 'virginradio.co.uk',
129
+ firstArticleDate: '2016-3-1',
130
+ publicationName: 'Virgin Radio',
131
+ ```
132
+
133
+ Example for `pages-sitemap.xml`
134
+
135
+ ```
136
+ import { NextApiRequest, NextApiResponse } from 'next'
137
+ import { genericSitemap, CustomStaticPage } from '@newskit-render/feed'
138
+ import { Publisher } from '@newskit-render/api'
139
+ import { getHost } from '@newskit-render/shared-components'
140
+
141
+ const defaultCustomStaticPagesCollection: CustomStaticPage[] = [
142
+ {
143
+ slug: 'test-custom-page',
144
+ },
145
+ ]
146
+ const handler = async (req: NextApiRequest, res: NextApiResponse) =>
147
+ genericSitemap({
148
+ res,
149
+ dataType: 'pageList',
150
+ publisher: process.env.PUBLISHER as Publisher,
151
+ domain: new URL(getHost(req) as string).host,
152
+ publicationName: process.env.SITEMAP_PUBLICATION_NAME,
153
+ customStaticPageCollection: defaultCustomStaticPagesCollection,
154
+ changefreq: 'hourly',
155
+ priority: '0.8',
156
+ })
157
+
158
+ export default handler
159
+ ```
160
+
161
+ Example of `competitions-sitemap.xml`
162
+
163
+ ```
164
+ import { NextApiRequest, NextApiResponse } from 'next'
165
+ import { genericSitemap } from '@newskit-render/feed'
166
+ import { Publisher } from '@newskit-render/api'
167
+ import { getHost } from '@newskit-render/shared-components'
168
+
169
+ const handler = async (req: NextApiRequest, res: NextApiResponse) =>
170
+ genericSitemap({
171
+ res,
172
+ dataType: 'competitionList',
173
+ publisher: process.env.PUBLISHER as Publisher,
174
+ domain: new URL(getHost(req) as string).host,
175
+ publicationName: process.env.SITEMAP_PUBLICATION_NAME,
176
+ })
177
+
178
+ export default handler
179
+ ```
180
+
181
+ #### newsSitemap
182
+
183
+ This function will handle the logic for `news-sitemap.xml` and creates the sitemap required by Google News. You will need to register the sitemap with Google.
184
+
185
+ `newsSitemap` - will receive the following parameters:
186
+
187
+ `context` (required) - Next.js context object (only needs `res` from context but its easier to destructor as below)
188
+
189
+ `publisher, domain, publicationName` (required): Required properties for correctly building the sitemap.xml.
190
+ The _domain_ is the domain of your website. _publisher_ is the name of the publisher in the NewsKit API, this string will be used for fetching the articles for the correct publication. _publicationName_ is the name of the publication, used inside the sitemap `<news:name>${publicationName}</news:name>` tag.
191
+
192
+ `changefreq` you can change the default changefreq for entries on the sitemap
193
+
194
+ `priority` you can change the default priority for entires on the sitemap
195
+
196
+ Below an example.
197
+
198
+ ```
199
+ import { NextApiRequest, NextApiResponse } from 'next'
200
+ import { newsSitemap, PublisherGroup } from '@newskit-render/sitemap'
201
+
202
+ const handler = async (req: NextApiRequest, res: NextApiResponse) =>
203
+ newsSitemap({
204
+ res,
205
+ publisher: process.env.PUBLISHER as PublisherGroup,
206
+ domain: new URL(getHost(req)).host,
207
+ publicationName: process.env.SITEMAP_PUBLICATION_NAME,
208
+ })
209
+
210
+ export default handler
211
+
212
+ ```
213
+
214
+ ### robots.txt
215
+
216
+ Your sitemap files will need to be added to your robots.txt file something like:
217
+
218
+ ```
219
+ User-agent: *
220
+ Disallow: /search/
221
+ Disallow: /*?s=*
222
+ Disallow: *&s=*
223
+ Sitemap: https://example.co.uk/sitemap.xml
224
+ Sitemap: https://example.co.uk/news-sitemap.xml
225
+ Sitemap: https://example.co.uk/pages-sitemap.xml
226
+ Sitemap: https://example.co.uk/competitions-sitemap.xml
227
+ ```
228
+
229
+ This can be done by adding it into the next.js public folder or you can create something more dynamic to take into account all your environments:
230
+
231
+ Under your `/pages/api` folder create `robots.ts` file with content like:
232
+
233
+ ```
234
+ import { NextApiRequest, NextApiResponse } from 'next'
235
+ import { getHost } from '@newskit-render/shared-components'
236
+
237
+ export default function handler(req: NextApiRequest, res: NextApiResponse) {
238
+ const crawable =
239
+ process.env.NODE_ENV === 'production' ? 'Allow: /' : 'Disallow: /'
240
+ const robots = `User-agent: *
241
+ ${crawable}
242
+ Sitemap: ${new URL(getHost(req) as string)}sitemap.xml
243
+ Sitemap: ${new URL(getHost(req) as string)}news-sitemap.xml
244
+ Sitemap: ${new URL(getHost(req) as string)}pages-sitemap.xml
245
+ Sitemap: ${new URL(getHost(req) as string)}competitions-sitemap.xml`
246
+
247
+ res.statusCode = 200
248
+ res.setHeader('Content-Type', 'text/plain')
249
+ res.write(robots)
250
+ res.end()
251
+ }
252
+ ```
253
+
254
+ update the `next.config.js` file to add rewrites:
255
+
256
+ ```
257
+ async rewrites() {
258
+ return [
259
+ {
260
+ source: '/robots.txt',
261
+ destination: '/api/robots',
262
+ },
263
+ ]
264
+ },
265
+ ```
266
+
267
+ ### rssFeed
268
+
269
+ `rssFeed` - this funtion will handle the logic for `feed.ts` route. It will receive the following parameters:
270
+
271
+ `context` (required) - Next.js context object (only needs `res` from context but its easier to destructor as below)
272
+
273
+ `titeAttributes` object with the following attributes:
274
+
275
+ `title` - string - title of the rss feed
276
+ `link` - string - link of rss feed (example - https://talksport.com/feed/)
277
+ `description` - string - describe what the feed is for
278
+ `lastBuildDate` - string - date in RFC-822 date-time - denotes last time content of feed was updated
279
+ `language` - optional - string - language code of feed - default: `en-US`
280
+ `updatePeriod` - optional - string - indicates how often feed updates so feed users know how often they should pole it. Can be `'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'` - default: `hourly`
281
+ `updateFrequency` - optional - number - representing the number of times the feed should be refreshed during the updatePeriod - default: 1.
282
+ `logoUrl` - string - url to site icon
283
+ `imageSourceSizes` - array of string values - images in the `<content:endcoded>` sections use the `<picture>` tag with `<source>` tag. Default widths are provided for these but you can override them with an array ['100', '200', '300', '400', '500']. Only add 5 values to the array.
284
+
285
+ example
286
+
287
+ ```
288
+ import { NextApiRequest, NextApiResponse } from 'next'
289
+ import { rssFeed, UpdatePeriod } from '@newskit-render/feed'
290
+
291
+ const handler = async (req: NextApiRequest, res: NextApiResponse) =>
292
+ rssFeed({
293
+ res,
294
+ titeAttributes: {
295
+ title: 'Demo Site',
296
+ link: `/feed`,
297
+ description: 'Newskit Render Demo site',
298
+ lastBuildDate: new Date().toUTCString(),
299
+ language: 'en-US',
300
+ updatePeriod: 'hourly' as UpdatePeriod,
301
+ updateFrequency: 1,
302
+ logoUrl: `/favicon.ico`,
303
+ },
304
+ })
305
+
306
+ export default handler
307
+ ```
@@ -0,0 +1 @@
1
+ export declare const contentApiEnvUrl: string, contentApiXApiKey: string;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.contentApiXApiKey = exports.contentApiEnvUrl = void 0;
4
+ var config = {
5
+ contentApiEnvUrl: process.env.CONTENT_API_ENV_URL,
6
+ contentApiXApiKey: process.env.CONTENT_API_X_API_KEY,
7
+ };
8
+ exports.contentApiEnvUrl = config.contentApiEnvUrl, exports.contentApiXApiKey = config.contentApiXApiKey;
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":";;;AAAA,IAAM,MAAM,GAAG;IACb,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAA6B;IAC3D,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAA+B;CAC/D,CAAA;AAEc,QAAA,gBAAgB,GAAwB,MAAM,mBAA5B,QAAA,iBAAiB,GAAK,MAAM,mBAAA"}
@@ -0,0 +1,2 @@
1
+ declare const getApolloRestClient: any;
2
+ export { getApolloRestClient };
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getApolloRestClient = void 0;
5
+ var api_1 = require("@newskit-render/api");
6
+ var client_1 = require("@apollo/client");
7
+ var apollo_link_rest_1 = require("apollo-link-rest");
8
+ var apollo_cache_policies_1 = require("@nerdwallet/apollo-cache-policies");
9
+ var config_1 = require("../config");
10
+ var publisherSlugs = (_a = {},
11
+ _a[api_1.Publisher.VIRGIN] = 'virgin-radio',
12
+ _a[api_1.Publisher.TALK_TV] = 'talk-tv',
13
+ _a);
14
+ var getRestLink = function (publisher) {
15
+ return new apollo_link_rest_1.RestLink({
16
+ uri: "".concat(config_1.contentApiEnvUrl, "/api/v1/").concat(publisherSlugs[publisher], "/"),
17
+ headers: {
18
+ 'x-api-key': config_1.contentApiXApiKey,
19
+ 'Content-Type': 'application/vnd.api+json',
20
+ },
21
+ });
22
+ };
23
+ var fiveMinutes = 5 * 60 * 1000;
24
+ var getApolloRestClient = function (publisher) {
25
+ return new client_1.ApolloClient({
26
+ link: getRestLink(publisher),
27
+ cache: new apollo_cache_policies_1.InvalidationPolicyCache({
28
+ invalidationPolicies: {
29
+ timeToLive: fiveMinutes,
30
+ },
31
+ }),
32
+ });
33
+ };
34
+ exports.getApolloRestClient = getApolloRestClient;
35
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/helpers/client.ts"],"names":[],"mappings":";;;;AAAA,2CAA+C;AAC/C,yCAA6C;AAC7C,qDAA2C;AAC3C,2EAA2E;AAC3E,oCAA+D;AAE/D,IAAM,cAAc;IAClB,GAAC,eAAS,CAAC,MAAM,IAAG,cAAc;IAClC,GAAC,eAAS,CAAC,OAAO,IAAG,SAAS;OAC/B,CAAA;AAED,IAAM,WAAW,GAAG,UAAC,SAAoB;IACvC,OAAO,IAAI,2BAAQ,CAAC;QAClB,GAAG,EAAE,UAAG,yBAAgB,qBAAW,cAAc,CAAC,SAAS,CAAC,MAAG;QAC/D,OAAO,EAAE;YACP,WAAW,EAAE,0BAAiB;YAC9B,cAAc,EAAE,0BAA0B;SAC3C;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,IAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAEjC,IAAM,mBAAmB,GAAQ,UAAC,SAAoB;IACpD,OAAO,IAAI,qBAAY,CAAC;QACtB,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC;QAC5B,KAAK,EAAE,IAAI,+CAAuB,CAAC;YACjC,oBAAoB,EAAE;gBACpB,UAAU,EAAE,WAAW;aACxB;SACF,CAAC;KACH,CAAC,CAAA;AACJ,CAAC,CAAA;AAEQ,kDAAmB"}
@@ -0,0 +1,2 @@
1
+ import { Body } from '../../rss/types';
2
+ export declare const buildSiteMapImages: (body: Body[]) => string;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildSiteMapImages = void 0;
7
+ var lodash_escape_1 = __importDefault(require("lodash.escape"));
8
+ var buildSiteMapImages = function (body) {
9
+ var images = body.filter(function (block) { return block.attributes.url; });
10
+ return images
11
+ .map(function (_a) {
12
+ var _b = _a.attributes, url = _b.url, caption = _b.caption, credit = _b.credit;
13
+ return "\n<image:image>\n <image:loc>".concat((0, lodash_escape_1.default)(url), "</image:loc>\n ").concat(caption ? "<image:caption>".concat((0, lodash_escape_1.default)(caption), "</image:caption>") : "", "\n ").concat(credit ? "<image:credit>".concat((0, lodash_escape_1.default)(credit), "</image:credit>") : "", "\n</image:image>\n");
14
+ })
15
+ .join('');
16
+ };
17
+ exports.buildSiteMapImages = buildSiteMapImages;
18
+ //# sourceMappingURL=buildSiteMapImages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildSiteMapImages.js","sourceRoot":"","sources":["../../../../src/helpers/createSitemap/buildSiteMapImages.ts"],"names":[],"mappings":";;;;;;AACA,gEAAkC;AAE3B,IAAM,kBAAkB,GAAG,UAAC,IAAY;IAC7C,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CACxB,UAAC,KAAK,IAAK,OAAC,KAAoB,CAAC,UAAU,CAAC,GAAG,EAApC,CAAoC,CAChC,CAAA;IACjB,OAAO,MAAM;SACV,GAAG,CACF,UAAC,EAAoD;YAAlD,kBAAoC,EAAtB,GAAG,SAAA,EAAE,OAAO,aAAA,EAAE,MAAM,YAAA;QAAqB,OAAA,wCAEjD,IAAA,uBAAM,EAAC,GAAG,CAAC,6BACtB,OAAO,CAAC,CAAC,CAAC,yBAAkB,IAAA,uBAAM,EAAC,OAAO,CAAC,qBAAkB,CAAC,CAAC,CAAC,EAAE,iBAClE,MAAM,CAAC,CAAC,CAAC,wBAAiB,IAAA,uBAAM,EAAC,MAAM,CAAC,oBAAiB,CAAC,CAAC,CAAC,EAAE,uBAEjE;IAN+D,CAM/D,CACI;SACA,IAAI,CAAC,EAAE,CAAC,CAAA;AACb,CAAC,CAAA;AAfY,QAAA,kBAAkB,sBAe9B"}
@@ -0,0 +1,2 @@
1
+ import { Article } from '../../rss/types';
2
+ export declare const buildSiteMapVideos: (domain: any, publicationName: any, { id, attributes: { body, headline, datePublished }, relationships }: Article) => string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildSiteMapVideos = void 0;
7
+ var lodash_escape_1 = __importDefault(require("lodash.escape"));
8
+ var buildSiteMapVideos = function (domain, publicationName, _a) {
9
+ var id = _a.id, _b = _a.attributes, body = _b.body, headline = _b.headline, datePublished = _b.datePublished, relationships = _a.relationships;
10
+ var categories = (relationships === null || relationships === void 0 ? void 0 : relationships.categories.data) || [];
11
+ var videos = body.filter(function (block) { return block.attributes.playerId; });
12
+ var articleId = id;
13
+ return videos
14
+ .map(function (_a) {
15
+ var _b, _c, _d, _e;
16
+ var _f = _a.attributes, accountId = _f.accountId, id = _f.id, playerId = _f.playerId;
17
+ var playerLoc = "https://".concat(domain, "/player/brightcove/?video_id=").concat(id, "&account_id=").concat(accountId, "&player_id=").concat(playerId, "&post_id=").concat(articleId);
18
+ return "\n<video:video>\n <video:player_loc>".concat((0, lodash_escape_1.default)(playerLoc), "</video:player_loc>\n <video:thumbnail_loc>NA</video:thumbnail_loc>\n <video:title>").concat((0, lodash_escape_1.default)(headline), "</video:title>\n <video:description>NA</video:description>\n <video:publication_date>").concat((0, lodash_escape_1.default)(new Date(datePublished).toISOString()), "</video:publication_date>\n <video:uploader>").concat((0, lodash_escape_1.default)(publicationName), "</video:uploader>\n <video:requires_subscription>No</video:requires_subscription>\n <video:category>").concat((0, lodash_escape_1.default)(((_e = (_d = (_c = (_b = categories[0]) === null || _b === void 0 ? void 0 : _b.category) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.attributes) === null || _e === void 0 ? void 0 : _e.slug) || 'uncategorized'), "</video:category>\n <video:live>No</video:live>\n</video:video>\n");
19
+ })
20
+ .join('');
21
+ };
22
+ exports.buildSiteMapVideos = buildSiteMapVideos;
23
+ //# sourceMappingURL=buildSiteMapVideos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildSiteMapVideos.js","sourceRoot":"","sources":["../../../../src/helpers/createSitemap/buildSiteMapVideos.ts"],"names":[],"mappings":";;;;;;AACA,gEAAkC;AAE3B,IAAM,kBAAkB,GAAG,UAChC,MAAM,EACN,eAAe,EACf,EAA6E;QAA3E,EAAE,QAAA,EAAE,kBAA6C,EAA/B,IAAI,UAAA,EAAE,QAAQ,cAAA,EAAE,aAAa,mBAAA,EAAI,aAAa,mBAAA;IAElE,IAAM,UAAU,GAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,UAAU,CAAC,IAAI,KAAI,EAAE,CAAA;IACvD,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CACxB,UAAC,KAAK,IAAK,OAAC,KAA8B,CAAC,UAAU,CAAC,QAAQ,EAAnD,CAAmD,CACrC,CAAA;IAC3B,IAAM,SAAS,GAAG,EAAE,CAAA;IACpB,OAAO,MAAM;SACV,GAAG,CACF,UAAC,EAAiE;;YAA/D,kBAAuC,EAAzB,SAAS,eAAA,EAAE,EAAE,QAAA,EAAE,QAAQ,cAAA;QACtC,IAAM,SAAS,GAAG,kBAAW,MAAM,0CAAgC,EAAE,yBAAe,SAAS,wBAAc,QAAQ,sBAAY,SAAS,CAAE,CAAA;QAC1I,OAAO,+CAEO,IAAA,uBAAM,EAAC,SAAS,CAAC,kGAEtB,IAAA,uBAAM,EAAC,QAAQ,CAAC,oGAEL,IAAA,uBAAM,EAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CACtC,0DACiB,IAAA,uBAAM,EAAC,eAAe,CAAC,mHAEvB,IAAA,uBAAM,EACtB,CAAA,MAAA,MAAA,MAAA,MAAA,UAAU,CAAC,CAAC,CAAC,0CAAE,QAAQ,0CAAE,IAAI,0CAAE,UAAU,0CAAE,IAAI,KAAI,eAAe,CACnE,uEAGF,CAAA;IACK,CAAC,CACF;SACA,IAAI,CAAC,EAAE,CAAC,CAAA;AACb,CAAC,CAAA;AAlCY,QAAA,kBAAkB,sBAkC9B"}
@@ -0,0 +1,3 @@
1
+ import { ChangeFreq, Priority } from '../types';
2
+ import { ArticleList } from '../../rss/types';
3
+ export declare const createArticleSitemap: (articlesList: ArticleList, domain: string, publicationName: string, isNewsSitemap: boolean, changefreq: ChangeFreq, priority: Priority) => string;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createArticleSitemap = void 0;
7
+ var getSitemapHeaders_1 = require("./getSitemapHeaders");
8
+ var getCategorySlug_1 = require("./getCategorySlug");
9
+ var buildSiteMapImages_1 = require("./buildSiteMapImages");
10
+ var buildSiteMapVideos_1 = require("./buildSiteMapVideos");
11
+ var lodash_escape_1 = __importDefault(require("lodash.escape"));
12
+ var createArticleSitemap = function (articlesList, domain, publicationName, isNewsSitemap, changefreq, priority) {
13
+ var generateArticleSlug = function (headline) {
14
+ return headline
15
+ .replace(/[^a-zA-Z0-9 ]/g, '')
16
+ .replace(/\s\s+/g, ' ')
17
+ .toLowerCase()
18
+ .replace(/ /g, '-')
19
+ .trim();
20
+ };
21
+ var urlsetHeaders = (0, getSitemapHeaders_1.getSitemapHeaders)(isNewsSitemap);
22
+ return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <urlset \n ".concat(urlsetHeaders, " \n xmlns:image=\"http://www.google.com/schemas/sitemap-image/1.1\"\n xmlns:video=\"http://www.google.com/schemas/sitemap-video/1.1\"\n >\n ").concat(articlesList.data
23
+ .map(function (_a) {
24
+ var id = _a.id, _b = _a.attributes, body = _b.body, headline = _b.headline, slug = _b.slug, datePublished = _b.datePublished, dateUpdated = _b.dateUpdated, relationships = _a.relationships;
25
+ var categories = (relationships === null || relationships === void 0 ? void 0 : relationships.categories.data) || [];
26
+ var articleCategory = (0, getCategorySlug_1.getCategorySlug)(categories);
27
+ var imagesSitemap = (0, buildSiteMapImages_1.buildSiteMapImages)(body);
28
+ var videoSitemap = (0, buildSiteMapVideos_1.buildSiteMapVideos)(domain, publicationName, {
29
+ id: id,
30
+ attributes: {
31
+ body: body,
32
+ headline: headline,
33
+ slug: slug,
34
+ datePublished: datePublished,
35
+ dateUpdated: dateUpdated,
36
+ },
37
+ relationships: relationships,
38
+ });
39
+ var loc = "https://".concat(domain, "/").concat(articleCategory, "/").concat(id, "/").concat(slug || generateArticleSlug(headline));
40
+ return "\n <url>\n <loc>".concat((0, lodash_escape_1.default)(loc), "</loc> \n ").concat(isNewsSitemap
41
+ ? "<news:news>\n <news:publication>\n <news:name>".concat((0, lodash_escape_1.default)(publicationName), "</news:name>\n <news:language>en</news:language>\n </news:publication>\n <news:publication_date>").concat((0, lodash_escape_1.default)(new Date(datePublished).toISOString()), "</news:publication_date>\n <news:title>").concat((0, lodash_escape_1.default)(headline), "</news:title>\n </news:news>")
42
+ : '', " \n <changefreq>").concat((0, lodash_escape_1.default)(changefreq), "</changefreq>\n <priority>").concat((0, lodash_escape_1.default)(priority), "</priority>\n <lastmod>").concat((0, lodash_escape_1.default)(new Date(dateUpdated).toISOString()), "</lastmod>\n ").concat(imagesSitemap, "\n ").concat(videoSitemap, "\n </url>\n ");
43
+ })
44
+ .join(''), "\n </urlset>\n");
45
+ };
46
+ exports.createArticleSitemap = createArticleSitemap;
47
+ //# sourceMappingURL=createArticleSitemap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createArticleSitemap.js","sourceRoot":"","sources":["../../../../src/helpers/createSitemap/createArticleSitemap.ts"],"names":[],"mappings":";;;;;;AAAA,yDAAuD;AACvD,qDAAmD;AACnD,2DAAyD;AACzD,2DAAyD;AAGzD,gEAAkC;AAE3B,IAAM,oBAAoB,GAAG,UAClC,YAAyB,EACzB,MAAc,EACd,eAAuB,EACvB,aAAsB,EACtB,UAAsB,EACtB,QAAkB;IAElB,IAAM,mBAAmB,GAAG,UAAC,QAAgB;QAC3C,OAAA,QAAQ;aACL,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;aAC7B,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;aACtB,WAAW,EAAE;aACb,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;aAClB,IAAI,EAAE;IALT,CAKS,CAAA;IAEX,IAAM,aAAa,GAAG,IAAA,qCAAiB,EAAC,aAAa,CAAC,CAAA;IACtD,OAAO,sEAEH,aAAa,mKAIb,YAAY,CAAC,IAAI;SAChB,GAAG,CACF,UAAC,EAIS;YAHR,EAAE,QAAA,EACF,kBAAgE,EAAlD,IAAI,UAAA,EAAE,QAAQ,cAAA,EAAE,IAAI,UAAA,EAAE,aAAa,mBAAA,EAAE,WAAW,iBAAA,EAC9D,aAAa,mBAAA;QAEb,IAAM,UAAU,GAAG,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,UAAU,CAAC,IAAI,KAAI,EAAE,CAAA;QACvD,IAAM,eAAe,GAAG,IAAA,iCAAe,EAAC,UAAU,CAAC,CAAA;QACnD,IAAM,aAAa,GAAG,IAAA,uCAAkB,EAAC,IAAI,CAAC,CAAA;QAC9C,IAAM,YAAY,GAAG,IAAA,uCAAkB,EAAC,MAAM,EAAE,eAAe,EAAE;YAC/D,EAAE,IAAA;YACF,UAAU,EAAE;gBACV,IAAI,MAAA;gBACJ,QAAQ,UAAA;gBACR,IAAI,MAAA;gBACJ,aAAa,eAAA;gBACb,WAAW,aAAA;aACZ;YACD,aAAa,eAAA;SACH,CAAC,CAAA;QACb,IAAM,GAAG,GAAG,kBAAW,MAAM,cAAI,eAAe,cAAI,EAAE,cACpD,IAAI,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CACrC,CAAA;QACF,OAAO,8CAEE,IAAA,uBAAM,EAAC,GAAG,CAAC,iCAEjB,aAAa;YACX,CAAC,CAAC,gFAES,IAAA,uBAAM,EAAC,eAAe,CAAC,iJAGX,IAAA,uBAAM,EAC7B,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CACtC,gEACa,IAAA,uBAAM,EAAC,QAAQ,CAAC,2CACnB;YACT,CAAC,CAAC,EAAE,wCAEO,IAAA,uBAAM,EAAC,UAAU,CAAC,kDACpB,IAAA,uBAAM,EAAC,QAAQ,CAAC,+CACjB,IAAA,uBAAM,EAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,qCACpD,aAAa,2BACb,YAAY,iCAEjB,CAAA;IACD,CAAC,CACF;SACA,IAAI,CAAC,EAAE,CAAC,oBAEd,CAAA;AACD,CAAC,CAAA;AA5EY,QAAA,oBAAoB,wBA4EhC"}
@@ -0,0 +1,2 @@
1
+ import { CustomStaticPage, PageList, ChangeFreq, Priority, DataType } from '../types';
2
+ export declare const createPagesSitemap: (pages: PageList, domain: string, publicationName: string, changefreq: ChangeFreq, priority: Priority, dataType: DataType, customStaticPageCollection?: CustomStaticPage[]) => string;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createPagesSitemap = void 0;
7
+ var buildSiteMapImages_1 = require("./buildSiteMapImages");
8
+ var buildSiteMapVideos_1 = require("./buildSiteMapVideos");
9
+ var lodash_escape_1 = __importDefault(require("lodash.escape"));
10
+ var createPagesSitemap = function (pages, domain, publicationName, changefreq, priority, dataType, customStaticPageCollection) {
11
+ var vid = dataType === 'pageList'
12
+ ? 'xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"'
13
+ : '';
14
+ return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <urlset \n xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n xmlns:image=\"http://www.google.com/schemas/sitemap-image/1.1\"\n ".concat(vid, "\n >\n ").concat(dataType === 'pageList'
15
+ ? "\n <url>\n <loc>".concat((0, lodash_escape_1.default)("https://".concat(domain)), "</loc> \n <changefreq>").concat((0, lodash_escape_1.default)(changefreq), "</changefreq>\n <priority>").concat((0, lodash_escape_1.default)(priority), "</priority>\n <lastmod>").concat((0, lodash_escape_1.default)(new Date().toISOString()), "</lastmod>\n </url> \n ")
16
+ : '', "\n ").concat((customStaticPageCollection === null || customStaticPageCollection === void 0 ? void 0 : customStaticPageCollection.length)
17
+ ? customStaticPageCollection
18
+ .map(function (_a) {
19
+ var url = _a.url, slug = _a.slug;
20
+ return "\n <url>\n <loc>".concat((0, lodash_escape_1.default)("https://".concat(url || domain, "/").concat(slug)), "</loc>\n <changefreq>").concat((0, lodash_escape_1.default)(changefreq), "</changefreq>\n <priority>").concat((0, lodash_escape_1.default)(priority), "</priority>\n <lastmod>").concat((0, lodash_escape_1.default)(new Date().toISOString()), "</lastmod>\n </url>\n ");
21
+ })
22
+ .join('')
23
+ : '', "\n ").concat(pages.data
24
+ .map(function (_a) {
25
+ var id = _a.id, _b = _a.attributes, body = _b.body, headline = _b.headline, slug = _b.slug, dateUpdated = _b.dateUpdated;
26
+ var url = dataType === 'competitionList'
27
+ ? "https://".concat(domain, "/competitions/").concat(id, "/").concat(slug)
28
+ : "https://".concat(domain, "/").concat(slug);
29
+ var imagesSitemap = (0, buildSiteMapImages_1.buildSiteMapImages)(body);
30
+ var videoSitemap = (0, buildSiteMapVideos_1.buildSiteMapVideos)(domain, publicationName, {
31
+ id: id,
32
+ attributes: {
33
+ body: body,
34
+ headline: headline,
35
+ dateUpdated: dateUpdated,
36
+ },
37
+ });
38
+ return "\n <url>\n <loc>".concat((0, lodash_escape_1.default)(url), "</loc> \n <changefreq>").concat((0, lodash_escape_1.default)(changefreq), "</changefreq>\n <priority>").concat((0, lodash_escape_1.default)(priority), "</priority>\n <lastmod>").concat((0, lodash_escape_1.default)((0, lodash_escape_1.default)(new Date(dateUpdated).toISOString())), "</lastmod>\n ").concat(imagesSitemap, "\n ").concat(videoSitemap, "\n </url>\n ");
39
+ })
40
+ .join(''), "\n </urlset>\n ");
41
+ };
42
+ exports.createPagesSitemap = createPagesSitemap;
43
+ //# sourceMappingURL=createPagesSitemap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPagesSitemap.js","sourceRoot":"","sources":["../../../../src/helpers/createSitemap/createPagesSitemap.ts"],"names":[],"mappings":";;;;;;AASA,2DAAyD;AACzD,2DAAyD;AACzD,gEAAkC;AAE3B,IAAM,kBAAkB,GAAG,UAChC,KAAe,EACf,MAAc,EACd,eAAuB,EACvB,UAAsB,EACtB,QAAkB,EAClB,QAAkB,EAClB,0BAA+C;IAE/C,IAAM,GAAG,GACP,QAAQ,KAAK,UAAU;QACrB,CAAC,CAAC,+DAA+D;QACjE,CAAC,CAAC,EAAE,CAAA;IACR,OAAO,sMAIH,GAAG,sBAGL,QAAQ,KAAK,UAAU;QACrB,CAAC,CAAC,kCAEK,IAAA,uBAAM,EAAC,kBAAW,MAAM,CAAE,CAAC,wCACpB,IAAA,uBAAM,EAAC,UAAU,CAAC,4CACpB,IAAA,uBAAM,EAAC,QAAQ,CAAC,yCACjB,IAAA,uBAAM,EAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,iCAE9C;QACG,CAAC,CAAC,EAAE,iBAGN,CAAA,0BAA0B,aAA1B,0BAA0B,uBAA1B,0BAA0B,CAAE,MAAM;QAChC,CAAC,CAAC,0BAA0B;aACvB,GAAG,CAAC,UAAC,EAAa;gBAAX,GAAG,SAAA,EAAE,IAAI,UAAA;YACf,OAAO,kCAEN,IAAA,uBAAM,EAAC,kBAAW,GAAG,IAAI,MAAM,cAAI,IAAI,CAAE,CAAC,uCACnC,IAAA,uBAAM,EAAC,UAAU,CAAC,4CACpB,IAAA,uBAAM,EAAC,QAAQ,CAAC,yCACjB,IAAA,uBAAM,EAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,iCAE5C,CAAA;QACK,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC;QACb,CAAC,CAAC,EAAE,iBAEN,KAAK,CAAC,IAAI;SACT,GAAG,CAAC,UAAC,EAA+D;YAA7D,EAAE,QAAA,EAAE,kBAAiD,EAAnC,IAAI,UAAA,EAAE,QAAQ,cAAA,EAAE,IAAI,UAAA,EAAE,WAAW,iBAAA;QACzD,IAAM,GAAG,GACP,QAAQ,KAAK,iBAAiB;YAC5B,CAAC,CAAC,kBAAW,MAAM,2BAAiB,EAAE,cAAI,IAAI,CAAE;YAChD,CAAC,CAAC,kBAAW,MAAM,cAAI,IAAI,CAAE,CAAA;QACjC,IAAM,aAAa,GAAG,IAAA,uCAAkB,EAAC,IAAI,CAAC,CAAA;QAC9C,IAAM,YAAY,GAAG,IAAA,uCAAkB,EAAC,MAAM,EAAE,eAAe,EAAE;YAC/D,EAAE,IAAA;YACF,UAAU,EAAE;gBACV,IAAI,MAAA;gBACJ,QAAQ,UAAA;gBACR,WAAW,aAAA;aACZ;SACS,CAAC,CAAA;QACb,OAAO,sCAEE,IAAA,uBAAM,EAAC,GAAG,CAAC,0CACJ,IAAA,uBAAM,EAAC,UAAU,CAAC,8CACpB,IAAA,uBAAM,EAAC,QAAQ,CAAC,2CACjB,IAAA,uBAAM,EACf,IAAA,uBAAM,EAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAC5C,iCACC,aAAa,uBACb,YAAY,2BAEf,CAAA;IACH,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,sBAEV,CAAA;AACH,CAAC,CAAA;AA9EY,QAAA,kBAAkB,sBA8E9B"}
@@ -0,0 +1 @@
1
+ export declare const createSitemapIndex: (domain: string, dateCollection: Array<string>) => string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSitemapIndex = void 0;
4
+ var createSitemapIndex = function (domain, dateCollection) { return "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n <sitemapindex \n xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n >\n ".concat(dateCollection
5
+ .map(function (date) {
6
+ var year = date.split('-')[0];
7
+ var month = date.split('-')[1];
8
+ var day = date.split('-')[2];
9
+ return "\n <sitemap>\n <loc>https://".concat(domain, "/sitemap.xml?yyyy=").concat(year, "&amp;mm=").concat(month, "&amp;dd=").concat(day, "</loc>\n </sitemap>\n ");
10
+ })
11
+ .join(''), "\n </sitemapindex>\n"); };
12
+ exports.createSitemapIndex = createSitemapIndex;
13
+ //# sourceMappingURL=createSitemapIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSitemapIndex.js","sourceRoot":"","sources":["../../../../src/helpers/createSitemap/createSitemapIndex.ts"],"names":[],"mappings":";;;AAAO,IAAM,kBAAkB,GAAG,UAChC,MAAc,EACd,cAA6B,IAClB,OAAA,wIAIT,cAAc;KACb,GAAG,CAAC,UAAC,IAAI;IACR,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/B,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAChC,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,OAAO,kDAEU,MAAM,+BAAqB,IAAI,qBAAW,KAAK,qBAAW,GAAG,mCAE/E,CAAA;AACD,CAAC,CAAC;KACD,IAAI,CAAC,EAAE,CAAC,0BAEZ,EAjBY,CAiBZ,CAAA;AApBY,QAAA,kBAAkB,sBAoB9B"}
@@ -0,0 +1 @@
1
+ export declare const generateArticleSlug: (title: string) => string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateArticleSlug = void 0;
4
+ var generateArticleSlug = function (title) {
5
+ return title
6
+ .replace(/[^a-zA-Z0-9 ]/g, '')
7
+ .replace(/\s\s+/g, ' ')
8
+ .toLowerCase()
9
+ .replace(/ /g, '-')
10
+ .trim();
11
+ };
12
+ exports.generateArticleSlug = generateArticleSlug;
13
+ //# sourceMappingURL=generateArticleSlug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateArticleSlug.js","sourceRoot":"","sources":["../../../../src/helpers/createSitemap/generateArticleSlug.ts"],"names":[],"mappings":";;;AAAO,IAAM,mBAAmB,GAAG,UAAC,KAAa;IAC/C,OAAA,KAAK;SACF,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,IAAI,EAAE;AALT,CAKS,CAAA;AANE,QAAA,mBAAmB,uBAMrB"}
@@ -0,0 +1,2 @@
1
+ import { ArticleCategory } from '../../rss/types';
2
+ export declare const getCategorySlug: (categories: ArticleCategory[]) => string;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCategorySlug = void 0;
4
+ var getCategorySlug = function (categories) {
5
+ var _a, _b, _c, _d;
6
+ if (!Array.isArray(categories) || categories.length === 0)
7
+ return 'uncategorized';
8
+ return ((_d = (_c = (_b = (_a = categories[0]) === null || _a === void 0 ? void 0 : _a.category) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.attributes) === null || _d === void 0 ? void 0 : _d.slug) || 'uncategorized';
9
+ };
10
+ exports.getCategorySlug = getCategorySlug;
11
+ //# sourceMappingURL=getCategorySlug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCategorySlug.js","sourceRoot":"","sources":["../../../../src/helpers/createSitemap/getCategorySlug.ts"],"names":[],"mappings":";;;AAEO,IAAM,eAAe,GAAG,UAAC,UAA6B;;IAC3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QACvD,OAAO,eAAe,CAAA;IACxB,OAAO,CAAA,MAAA,MAAA,MAAA,MAAA,UAAU,CAAC,CAAC,CAAC,0CAAE,QAAQ,0CAAE,IAAI,0CAAE,UAAU,0CAAE,IAAI,KAAI,eAAe,CAAA;AAC3E,CAAC,CAAA;AAJY,QAAA,eAAe,mBAI3B"}
@@ -0,0 +1 @@
1
+ export declare const getSitemapHeaders: (isNewsSitemap: boolean) => string;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSitemapHeaders = void 0;
4
+ var getSitemapHeaders = function (isNewsSitemap) {
5
+ return isNewsSitemap
6
+ ? "xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" \n xmlns:news=\"http://www.google.com/schemas/sitemap-news/0.9\""
7
+ : "xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"";
8
+ };
9
+ exports.getSitemapHeaders = getSitemapHeaders;
10
+ //# sourceMappingURL=getSitemapHeaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSitemapHeaders.js","sourceRoot":"","sources":["../../../../src/helpers/createSitemap/getSitemapHeaders.ts"],"names":[],"mappings":";;;AAAO,IAAM,iBAAiB,GAAG,UAAC,aAAsB;IACtD,OAAA,aAAa;QACX,CAAC,CAAC,2HAC0D;QAC5D,CAAC,CAAC,uDAAqD;AAHzD,CAGyD,CAAA;AAJ9C,QAAA,iBAAiB,qBAI6B"}
@@ -0,0 +1,7 @@
1
+ export * from './createArticleSitemap';
2
+ export * from './createPagesSitemap';
3
+ export * from './createSitemapIndex';
4
+ export * from './getCategorySlug';
5
+ export * from './generateArticleSlug';
6
+ export * from './buildSiteMapImages';
7
+ export * from './buildSiteMapVideos';