@se-studio/contentful-rest-api 0.0.0-next16-20260822103555

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 (472) hide show
  1. package/CHANGELOG.md +2036 -0
  2. package/README.md +764 -0
  3. package/dist/api/article-type.d.ts +37 -0
  4. package/dist/api/article-type.d.ts.map +1 -0
  5. package/dist/api/article-type.js +140 -0
  6. package/dist/api/article-type.js.map +1 -0
  7. package/dist/api/article.d.ts +32 -0
  8. package/dist/api/article.d.ts.map +1 -0
  9. package/dist/api/article.js +43 -0
  10. package/dist/api/article.js.map +1 -0
  11. package/dist/api/asset.d.ts +28 -0
  12. package/dist/api/asset.d.ts.map +1 -0
  13. package/dist/api/asset.js +56 -0
  14. package/dist/api/asset.js.map +1 -0
  15. package/dist/api/banner.d.ts +8 -0
  16. package/dist/api/banner.d.ts.map +1 -0
  17. package/dist/api/banner.js +96 -0
  18. package/dist/api/banner.js.map +1 -0
  19. package/dist/api/breadcrumb.d.ts +40 -0
  20. package/dist/api/breadcrumb.d.ts.map +1 -0
  21. package/dist/api/breadcrumb.js +60 -0
  22. package/dist/api/breadcrumb.js.map +1 -0
  23. package/dist/api/componentPreview.d.ts +59 -0
  24. package/dist/api/componentPreview.d.ts.map +1 -0
  25. package/dist/api/componentPreview.js +88 -0
  26. package/dist/api/componentPreview.js.map +1 -0
  27. package/dist/api/context.d.ts +24 -0
  28. package/dist/api/context.d.ts.map +1 -0
  29. package/dist/api/context.js +73 -0
  30. package/dist/api/context.js.map +1 -0
  31. package/dist/api/custom-type.d.ts +37 -0
  32. package/dist/api/custom-type.d.ts.map +1 -0
  33. package/dist/api/custom-type.js +44 -0
  34. package/dist/api/custom-type.js.map +1 -0
  35. package/dist/api/document.d.ts +8 -0
  36. package/dist/api/document.d.ts.map +1 -0
  37. package/dist/api/document.js +84 -0
  38. package/dist/api/document.js.map +1 -0
  39. package/dist/api/helpers.d.ts +59 -0
  40. package/dist/api/helpers.d.ts.map +1 -0
  41. package/dist/api/helpers.js +313 -0
  42. package/dist/api/helpers.js.map +1 -0
  43. package/dist/api/index.d.ts +33 -0
  44. package/dist/api/index.d.ts.map +1 -0
  45. package/dist/api/index.js +37 -0
  46. package/dist/api/index.js.map +1 -0
  47. package/dist/api/links.d.ts +124 -0
  48. package/dist/api/links.d.ts.map +1 -0
  49. package/dist/api/links.js +307 -0
  50. package/dist/api/links.js.map +1 -0
  51. package/dist/api/listing-fetch-params.d.ts +70 -0
  52. package/dist/api/listing-fetch-params.d.ts.map +1 -0
  53. package/dist/api/listing-fetch-params.js +124 -0
  54. package/dist/api/listing-fetch-params.js.map +1 -0
  55. package/dist/api/media-library.d.ts +59 -0
  56. package/dist/api/media-library.d.ts.map +1 -0
  57. package/dist/api/media-library.js +315 -0
  58. package/dist/api/media-library.js.map +1 -0
  59. package/dist/api/navigation.d.ts +10 -0
  60. package/dist/api/navigation.d.ts.map +1 -0
  61. package/dist/api/navigation.js +18 -0
  62. package/dist/api/navigation.js.map +1 -0
  63. package/dist/api/page.d.ts +15 -0
  64. package/dist/api/page.d.ts.map +1 -0
  65. package/dist/api/page.js +39 -0
  66. package/dist/api/page.js.map +1 -0
  67. package/dist/api/person.d.ts +37 -0
  68. package/dist/api/person.d.ts.map +1 -0
  69. package/dist/api/person.js +135 -0
  70. package/dist/api/person.js.map +1 -0
  71. package/dist/api/preview-types.d.ts +65 -0
  72. package/dist/api/preview-types.d.ts.map +1 -0
  73. package/dist/api/preview-types.js +7 -0
  74. package/dist/api/preview-types.js.map +1 -0
  75. package/dist/api/preview.d.ts +49 -0
  76. package/dist/api/preview.d.ts.map +1 -0
  77. package/dist/api/preview.js +261 -0
  78. package/dist/api/preview.js.map +1 -0
  79. package/dist/api/redirects.d.ts +16 -0
  80. package/dist/api/redirects.d.ts.map +1 -0
  81. package/dist/api/redirects.js +110 -0
  82. package/dist/api/redirects.js.map +1 -0
  83. package/dist/api/related-articles.d.ts +28 -0
  84. package/dist/api/related-articles.d.ts.map +1 -0
  85. package/dist/api/related-articles.js +147 -0
  86. package/dist/api/related-articles.js.map +1 -0
  87. package/dist/api/server-asset.d.ts +67 -0
  88. package/dist/api/server-asset.d.ts.map +1 -0
  89. package/dist/api/server-asset.js +106 -0
  90. package/dist/api/server-asset.js.map +1 -0
  91. package/dist/api/sitemap.d.ts +131 -0
  92. package/dist/api/sitemap.d.ts.map +1 -0
  93. package/dist/api/sitemap.js +201 -0
  94. package/dist/api/sitemap.js.map +1 -0
  95. package/dist/api/tag-type.d.ts +32 -0
  96. package/dist/api/tag-type.d.ts.map +1 -0
  97. package/dist/api/tag-type.js +123 -0
  98. package/dist/api/tag-type.js.map +1 -0
  99. package/dist/api/tag.d.ts +37 -0
  100. package/dist/api/tag.d.ts.map +1 -0
  101. package/dist/api/tag.js +132 -0
  102. package/dist/api/tag.js.map +1 -0
  103. package/dist/api/template.d.ts +61 -0
  104. package/dist/api/template.d.ts.map +1 -0
  105. package/dist/api/template.js +94 -0
  106. package/dist/api/template.js.map +1 -0
  107. package/dist/api/types.d.ts +113 -0
  108. package/dist/api/types.d.ts.map +1 -0
  109. package/dist/api/types.js +2 -0
  110. package/dist/api/types.js.map +1 -0
  111. package/dist/baseTypes/baseAlternatePageContent.d.ts +32 -0
  112. package/dist/baseTypes/baseAlternatePageContent.d.ts.map +1 -0
  113. package/dist/baseTypes/baseAlternatePageContent.js +2 -0
  114. package/dist/baseTypes/baseAlternatePageContent.js.map +1 -0
  115. package/dist/baseTypes/baseArticle.d.ts +206 -0
  116. package/dist/baseTypes/baseArticle.d.ts.map +1 -0
  117. package/dist/baseTypes/baseArticle.js +2 -0
  118. package/dist/baseTypes/baseArticle.js.map +1 -0
  119. package/dist/baseTypes/baseArticleType.d.ts +177 -0
  120. package/dist/baseTypes/baseArticleType.d.ts.map +1 -0
  121. package/dist/baseTypes/baseArticleType.js +2 -0
  122. package/dist/baseTypes/baseArticleType.js.map +1 -0
  123. package/dist/baseTypes/baseBanner.d.ts +113 -0
  124. package/dist/baseTypes/baseBanner.d.ts.map +1 -0
  125. package/dist/baseTypes/baseBanner.js +2 -0
  126. package/dist/baseTypes/baseBanner.js.map +1 -0
  127. package/dist/baseTypes/baseCollection.d.ts +132 -0
  128. package/dist/baseTypes/baseCollection.d.ts.map +1 -0
  129. package/dist/baseTypes/baseCollection.js +2 -0
  130. package/dist/baseTypes/baseCollection.js.map +1 -0
  131. package/dist/baseTypes/baseComponent.d.ts +130 -0
  132. package/dist/baseTypes/baseComponent.d.ts.map +1 -0
  133. package/dist/baseTypes/baseComponent.js +2 -0
  134. package/dist/baseTypes/baseComponent.js.map +1 -0
  135. package/dist/baseTypes/baseCustomType.d.ts +147 -0
  136. package/dist/baseTypes/baseCustomType.d.ts.map +1 -0
  137. package/dist/baseTypes/baseCustomType.js +2 -0
  138. package/dist/baseTypes/baseCustomType.js.map +1 -0
  139. package/dist/baseTypes/baseDocument.d.ts +70 -0
  140. package/dist/baseTypes/baseDocument.d.ts.map +1 -0
  141. package/dist/baseTypes/baseDocument.js +2 -0
  142. package/dist/baseTypes/baseDocument.js.map +1 -0
  143. package/dist/baseTypes/baseExternalComponent.d.ts +138 -0
  144. package/dist/baseTypes/baseExternalComponent.d.ts.map +1 -0
  145. package/dist/baseTypes/baseExternalComponent.js +2 -0
  146. package/dist/baseTypes/baseExternalComponent.js.map +1 -0
  147. package/dist/baseTypes/baseExternalVideo.d.ts +86 -0
  148. package/dist/baseTypes/baseExternalVideo.d.ts.map +1 -0
  149. package/dist/baseTypes/baseExternalVideo.js +2 -0
  150. package/dist/baseTypes/baseExternalVideo.js.map +1 -0
  151. package/dist/baseTypes/baseHtmlComponent.d.ts +72 -0
  152. package/dist/baseTypes/baseHtmlComponent.d.ts.map +1 -0
  153. package/dist/baseTypes/baseHtmlComponent.js +2 -0
  154. package/dist/baseTypes/baseHtmlComponent.js.map +1 -0
  155. package/dist/baseTypes/baseLink.d.ts +115 -0
  156. package/dist/baseTypes/baseLink.d.ts.map +1 -0
  157. package/dist/baseTypes/baseLink.js +2 -0
  158. package/dist/baseTypes/baseLink.js.map +1 -0
  159. package/dist/baseTypes/baseMedia.d.ts +100 -0
  160. package/dist/baseTypes/baseMedia.d.ts.map +1 -0
  161. package/dist/baseTypes/baseMedia.js +2 -0
  162. package/dist/baseTypes/baseMedia.js.map +1 -0
  163. package/dist/baseTypes/baseNavigation.d.ts +37 -0
  164. package/dist/baseTypes/baseNavigation.d.ts.map +1 -0
  165. package/dist/baseTypes/baseNavigation.js +2 -0
  166. package/dist/baseTypes/baseNavigation.js.map +1 -0
  167. package/dist/baseTypes/baseNavigationItem.d.ts +109 -0
  168. package/dist/baseTypes/baseNavigationItem.d.ts.map +1 -0
  169. package/dist/baseTypes/baseNavigationItem.js +2 -0
  170. package/dist/baseTypes/baseNavigationItem.js.map +1 -0
  171. package/dist/baseTypes/basePage.d.ts +142 -0
  172. package/dist/baseTypes/basePage.d.ts.map +1 -0
  173. package/dist/baseTypes/basePage.js +2 -0
  174. package/dist/baseTypes/basePage.js.map +1 -0
  175. package/dist/baseTypes/basePageVariant.d.ts +145 -0
  176. package/dist/baseTypes/basePageVariant.d.ts.map +1 -0
  177. package/dist/baseTypes/basePageVariant.js +2 -0
  178. package/dist/baseTypes/basePageVariant.js.map +1 -0
  179. package/dist/baseTypes/basePerson.d.ts +160 -0
  180. package/dist/baseTypes/basePerson.d.ts.map +1 -0
  181. package/dist/baseTypes/basePerson.js +2 -0
  182. package/dist/baseTypes/basePerson.js.map +1 -0
  183. package/dist/baseTypes/baseRedirect.d.ts +69 -0
  184. package/dist/baseTypes/baseRedirect.d.ts.map +1 -0
  185. package/dist/baseTypes/baseRedirect.js +2 -0
  186. package/dist/baseTypes/baseRedirect.js.map +1 -0
  187. package/dist/baseTypes/baseSchema.d.ts +19 -0
  188. package/dist/baseTypes/baseSchema.d.ts.map +1 -0
  189. package/dist/baseTypes/baseSchema.js +2 -0
  190. package/dist/baseTypes/baseSchema.js.map +1 -0
  191. package/dist/baseTypes/baseShared.d.ts +25 -0
  192. package/dist/baseTypes/baseShared.d.ts.map +1 -0
  193. package/dist/baseTypes/baseShared.js +2 -0
  194. package/dist/baseTypes/baseShared.js.map +1 -0
  195. package/dist/baseTypes/baseTag.d.ts +129 -0
  196. package/dist/baseTypes/baseTag.d.ts.map +1 -0
  197. package/dist/baseTypes/baseTag.js +2 -0
  198. package/dist/baseTypes/baseTag.js.map +1 -0
  199. package/dist/baseTypes/baseTagType.d.ts +70 -0
  200. package/dist/baseTypes/baseTagType.d.ts.map +1 -0
  201. package/dist/baseTypes/baseTagType.js +2 -0
  202. package/dist/baseTypes/baseTagType.js.map +1 -0
  203. package/dist/baseTypes/baseTemplate.d.ts +77 -0
  204. package/dist/baseTypes/baseTemplate.d.ts.map +1 -0
  205. package/dist/baseTypes/baseTemplate.js +2 -0
  206. package/dist/baseTypes/baseTemplate.js.map +1 -0
  207. package/dist/client.d.ts +145 -0
  208. package/dist/client.d.ts.map +1 -0
  209. package/dist/client.js +322 -0
  210. package/dist/client.js.map +1 -0
  211. package/dist/cms-integrity.d.ts +10 -0
  212. package/dist/cms-integrity.d.ts.map +1 -0
  213. package/dist/cms-integrity.js +7 -0
  214. package/dist/cms-integrity.js.map +1 -0
  215. package/dist/converters/animationEnricher.d.ts +17 -0
  216. package/dist/converters/animationEnricher.d.ts.map +1 -0
  217. package/dist/converters/animationEnricher.js +177 -0
  218. package/dist/converters/animationEnricher.js.map +1 -0
  219. package/dist/converters/article.d.ts +48 -0
  220. package/dist/converters/article.d.ts.map +1 -0
  221. package/dist/converters/article.js +364 -0
  222. package/dist/converters/article.js.map +1 -0
  223. package/dist/converters/asset.d.ts +33 -0
  224. package/dist/converters/asset.d.ts.map +1 -0
  225. package/dist/converters/asset.js +340 -0
  226. package/dist/converters/asset.js.map +1 -0
  227. package/dist/converters/banner.d.ts +10 -0
  228. package/dist/converters/banner.d.ts.map +1 -0
  229. package/dist/converters/banner.js +63 -0
  230. package/dist/converters/banner.js.map +1 -0
  231. package/dist/converters/collection.d.ts +26 -0
  232. package/dist/converters/collection.d.ts.map +1 -0
  233. package/dist/converters/collection.js +52 -0
  234. package/dist/converters/collection.js.map +1 -0
  235. package/dist/converters/component.d.ts +26 -0
  236. package/dist/converters/component.d.ts.map +1 -0
  237. package/dist/converters/component.js +54 -0
  238. package/dist/converters/component.js.map +1 -0
  239. package/dist/converters/customType.d.ts +24 -0
  240. package/dist/converters/customType.d.ts.map +1 -0
  241. package/dist/converters/customType.js +93 -0
  242. package/dist/converters/customType.js.map +1 -0
  243. package/dist/converters/document.d.ts +14 -0
  244. package/dist/converters/document.d.ts.map +1 -0
  245. package/dist/converters/document.js +51 -0
  246. package/dist/converters/document.js.map +1 -0
  247. package/dist/converters/enrichAssets.d.ts +19 -0
  248. package/dist/converters/enrichAssets.d.ts.map +1 -0
  249. package/dist/converters/enrichAssets.js +36 -0
  250. package/dist/converters/enrichAssets.js.map +1 -0
  251. package/dist/converters/externalComponent.d.ts +27 -0
  252. package/dist/converters/externalComponent.d.ts.map +1 -0
  253. package/dist/converters/externalComponent.js +46 -0
  254. package/dist/converters/externalComponent.js.map +1 -0
  255. package/dist/converters/externalVideoEnricher.d.ts +12 -0
  256. package/dist/converters/externalVideoEnricher.d.ts.map +1 -0
  257. package/dist/converters/externalVideoEnricher.js +70 -0
  258. package/dist/converters/externalVideoEnricher.js.map +1 -0
  259. package/dist/converters/helpers.d.ts +173 -0
  260. package/dist/converters/helpers.d.ts.map +1 -0
  261. package/dist/converters/helpers.js +167 -0
  262. package/dist/converters/helpers.js.map +1 -0
  263. package/dist/converters/heroVideoEnricher.d.ts +9 -0
  264. package/dist/converters/heroVideoEnricher.d.ts.map +1 -0
  265. package/dist/converters/heroVideoEnricher.js +108 -0
  266. package/dist/converters/heroVideoEnricher.js.map +1 -0
  267. package/dist/converters/heroVideoEnv.d.ts +14 -0
  268. package/dist/converters/heroVideoEnv.d.ts.map +1 -0
  269. package/dist/converters/heroVideoEnv.js +28 -0
  270. package/dist/converters/heroVideoEnv.js.map +1 -0
  271. package/dist/converters/htmlComponent.d.ts +17 -0
  272. package/dist/converters/htmlComponent.d.ts.map +1 -0
  273. package/dist/converters/htmlComponent.js +33 -0
  274. package/dist/converters/htmlComponent.js.map +1 -0
  275. package/dist/converters/iconCollector.d.ts +36 -0
  276. package/dist/converters/iconCollector.d.ts.map +1 -0
  277. package/dist/converters/iconCollector.js +309 -0
  278. package/dist/converters/iconCollector.js.map +1 -0
  279. package/dist/converters/index.d.ts +26 -0
  280. package/dist/converters/index.d.ts.map +1 -0
  281. package/dist/converters/index.js +21 -0
  282. package/dist/converters/index.js.map +1 -0
  283. package/dist/converters/link.d.ts +11 -0
  284. package/dist/converters/link.d.ts.map +1 -0
  285. package/dist/converters/link.js +109 -0
  286. package/dist/converters/link.js.map +1 -0
  287. package/dist/converters/navigationItem.d.ts +17 -0
  288. package/dist/converters/navigationItem.d.ts.map +1 -0
  289. package/dist/converters/navigationItem.js +126 -0
  290. package/dist/converters/navigationItem.js.map +1 -0
  291. package/dist/converters/page.d.ts +44 -0
  292. package/dist/converters/page.d.ts.map +1 -0
  293. package/dist/converters/page.js +160 -0
  294. package/dist/converters/page.js.map +1 -0
  295. package/dist/converters/pageVariantMerge.d.ts +24 -0
  296. package/dist/converters/pageVariantMerge.d.ts.map +1 -0
  297. package/dist/converters/pageVariantMerge.js +151 -0
  298. package/dist/converters/pageVariantMerge.js.map +1 -0
  299. package/dist/converters/person.d.ts +40 -0
  300. package/dist/converters/person.d.ts.map +1 -0
  301. package/dist/converters/person.js +152 -0
  302. package/dist/converters/person.js.map +1 -0
  303. package/dist/converters/pictureBlurEnricher.d.ts +9 -0
  304. package/dist/converters/pictureBlurEnricher.d.ts.map +1 -0
  305. package/dist/converters/pictureBlurEnricher.js +79 -0
  306. package/dist/converters/pictureBlurEnricher.js.map +1 -0
  307. package/dist/converters/redirect.d.ts +20 -0
  308. package/dist/converters/redirect.d.ts.map +1 -0
  309. package/dist/converters/redirect.js +50 -0
  310. package/dist/converters/redirect.js.map +1 -0
  311. package/dist/converters/resolver.d.ts +26 -0
  312. package/dist/converters/resolver.d.ts.map +1 -0
  313. package/dist/converters/resolver.js +383 -0
  314. package/dist/converters/resolver.js.map +1 -0
  315. package/dist/converters/schema.d.ts +14 -0
  316. package/dist/converters/schema.d.ts.map +1 -0
  317. package/dist/converters/schema.js +25 -0
  318. package/dist/converters/schema.js.map +1 -0
  319. package/dist/converters/svgProcessor.d.ts +58 -0
  320. package/dist/converters/svgProcessor.d.ts.map +1 -0
  321. package/dist/converters/svgProcessor.js +225 -0
  322. package/dist/converters/svgProcessor.js.map +1 -0
  323. package/dist/converters/tag.d.ts +25 -0
  324. package/dist/converters/tag.d.ts.map +1 -0
  325. package/dist/converters/tag.js +170 -0
  326. package/dist/converters/tag.js.map +1 -0
  327. package/dist/converters/tagType.d.ts +15 -0
  328. package/dist/converters/tagType.d.ts.map +1 -0
  329. package/dist/converters/tagType.js +56 -0
  330. package/dist/converters/tagType.js.map +1 -0
  331. package/dist/converters/template.d.ts +31 -0
  332. package/dist/converters/template.d.ts.map +1 -0
  333. package/dist/converters/template.js +53 -0
  334. package/dist/converters/template.js.map +1 -0
  335. package/dist/converters/videoEnricher.d.ts +14 -0
  336. package/dist/converters/videoEnricher.d.ts.map +1 -0
  337. package/dist/converters/videoEnricher.js +85 -0
  338. package/dist/converters/videoEnricher.js.map +1 -0
  339. package/dist/icons/rebuildIconSprite.d.ts +8 -0
  340. package/dist/icons/rebuildIconSprite.d.ts.map +1 -0
  341. package/dist/icons/rebuildIconSprite.js +15 -0
  342. package/dist/icons/rebuildIconSprite.js.map +1 -0
  343. package/dist/index.d.ts +33 -0
  344. package/dist/index.d.ts.map +1 -0
  345. package/dist/index.js +42 -0
  346. package/dist/index.js.map +1 -0
  347. package/dist/navigation/assembly.d.ts +8 -0
  348. package/dist/navigation/assembly.d.ts.map +1 -0
  349. package/dist/navigation/assembly.js +115 -0
  350. package/dist/navigation/assembly.js.map +1 -0
  351. package/dist/navigation/cacheOptions.d.ts +17 -0
  352. package/dist/navigation/cacheOptions.d.ts.map +1 -0
  353. package/dist/navigation/cacheOptions.js +45 -0
  354. package/dist/navigation/cacheOptions.js.map +1 -0
  355. package/dist/navigation/enrichModelNavigation.d.ts +17 -0
  356. package/dist/navigation/enrichModelNavigation.d.ts.map +1 -0
  357. package/dist/navigation/enrichModelNavigation.js +46 -0
  358. package/dist/navigation/enrichModelNavigation.js.map +1 -0
  359. package/dist/navigation/linkIndex.d.ts +10 -0
  360. package/dist/navigation/linkIndex.d.ts.map +1 -0
  361. package/dist/navigation/linkIndex.js +34 -0
  362. package/dist/navigation/linkIndex.js.map +1 -0
  363. package/dist/navigation/listingLinkBundle.d.ts +22 -0
  364. package/dist/navigation/listingLinkBundle.d.ts.map +1 -0
  365. package/dist/navigation/listingLinkBundle.js +88 -0
  366. package/dist/navigation/listingLinkBundle.js.map +1 -0
  367. package/dist/navigation/registry.d.ts +15 -0
  368. package/dist/navigation/registry.d.ts.map +1 -0
  369. package/dist/navigation/registry.js +130 -0
  370. package/dist/navigation/registry.js.map +1 -0
  371. package/dist/navigation/requestCache.d.ts +18 -0
  372. package/dist/navigation/requestCache.d.ts.map +1 -0
  373. package/dist/navigation/requestCache.js +66 -0
  374. package/dist/navigation/requestCache.js.map +1 -0
  375. package/dist/navigation/types.d.ts +45 -0
  376. package/dist/navigation/types.d.ts.map +1 -0
  377. package/dist/navigation/types.js +2 -0
  378. package/dist/navigation/types.js.map +1 -0
  379. package/dist/revalidation/entry-handlers.d.ts +40 -0
  380. package/dist/revalidation/entry-handlers.d.ts.map +1 -0
  381. package/dist/revalidation/entry-handlers.js +144 -0
  382. package/dist/revalidation/entry-handlers.js.map +1 -0
  383. package/dist/revalidation/handlers.d.ts +19 -0
  384. package/dist/revalidation/handlers.d.ts.map +1 -0
  385. package/dist/revalidation/handlers.js +50 -0
  386. package/dist/revalidation/handlers.js.map +1 -0
  387. package/dist/revalidation/index.d.ts +4 -0
  388. package/dist/revalidation/index.d.ts.map +1 -0
  389. package/dist/revalidation/index.js +5 -0
  390. package/dist/revalidation/index.js.map +1 -0
  391. package/dist/revalidation/nextjs-route.d.ts +38 -0
  392. package/dist/revalidation/nextjs-route.d.ts.map +1 -0
  393. package/dist/revalidation/nextjs-route.js +36 -0
  394. package/dist/revalidation/nextjs-route.js.map +1 -0
  395. package/dist/revalidation/route.d.ts +3 -0
  396. package/dist/revalidation/route.d.ts.map +1 -0
  397. package/dist/revalidation/route.js +99 -0
  398. package/dist/revalidation/route.js.map +1 -0
  399. package/dist/revalidation/server-utils.d.ts +31 -0
  400. package/dist/revalidation/server-utils.d.ts.map +1 -0
  401. package/dist/revalidation/server-utils.js +54 -0
  402. package/dist/revalidation/server-utils.js.map +1 -0
  403. package/dist/revalidation/tags.d.ts +110 -0
  404. package/dist/revalidation/tags.d.ts.map +1 -0
  405. package/dist/revalidation/tags.js +160 -0
  406. package/dist/revalidation/tags.js.map +1 -0
  407. package/dist/revalidation/utils.d.ts +21 -0
  408. package/dist/revalidation/utils.d.ts.map +1 -0
  409. package/dist/revalidation/utils.js +61 -0
  410. package/dist/revalidation/utils.js.map +1 -0
  411. package/dist/revalidation/webhook-content-types.d.ts +12 -0
  412. package/dist/revalidation/webhook-content-types.d.ts.map +1 -0
  413. package/dist/revalidation/webhook-content-types.js +28 -0
  414. package/dist/revalidation/webhook-content-types.js.map +1 -0
  415. package/dist/routing/index.d.ts +2 -0
  416. package/dist/routing/index.d.ts.map +1 -0
  417. package/dist/routing/index.js +2 -0
  418. package/dist/routing/index.js.map +1 -0
  419. package/dist/routing/marketing-site-url-calculators.d.ts +21 -0
  420. package/dist/routing/marketing-site-url-calculators.d.ts.map +1 -0
  421. package/dist/routing/marketing-site-url-calculators.js +43 -0
  422. package/dist/routing/marketing-site-url-calculators.js.map +1 -0
  423. package/dist/server.d.ts +7 -0
  424. package/dist/server.d.ts.map +1 -0
  425. package/dist/server.js +10 -0
  426. package/dist/server.js.map +1 -0
  427. package/dist/telemetry/deriveOperation.d.ts +8 -0
  428. package/dist/telemetry/deriveOperation.d.ts.map +1 -0
  429. package/dist/telemetry/deriveOperation.js +59 -0
  430. package/dist/telemetry/deriveOperation.js.map +1 -0
  431. package/dist/telemetry/queryContext.d.ts +7 -0
  432. package/dist/telemetry/queryContext.d.ts.map +1 -0
  433. package/dist/telemetry/queryContext.js +9 -0
  434. package/dist/telemetry/queryContext.js.map +1 -0
  435. package/dist/telemetry/queryLog.d.ts +17 -0
  436. package/dist/telemetry/queryLog.d.ts.map +1 -0
  437. package/dist/telemetry/queryLog.js +54 -0
  438. package/dist/telemetry/queryLog.js.map +1 -0
  439. package/dist/types.d.ts +93 -0
  440. package/dist/types.d.ts.map +1 -0
  441. package/dist/types.js +2 -0
  442. package/dist/types.js.map +1 -0
  443. package/dist/utils/arrayUtils.d.ts +3 -0
  444. package/dist/utils/arrayUtils.d.ts.map +1 -0
  445. package/dist/utils/arrayUtils.js +12 -0
  446. package/dist/utils/arrayUtils.js.map +1 -0
  447. package/dist/utils/dateUtils.d.ts +9 -0
  448. package/dist/utils/dateUtils.d.ts.map +1 -0
  449. package/dist/utils/dateUtils.js +26 -0
  450. package/dist/utils/dateUtils.js.map +1 -0
  451. package/dist/utils/errors.d.ts +56 -0
  452. package/dist/utils/errors.d.ts.map +1 -0
  453. package/dist/utils/errors.js +100 -0
  454. package/dist/utils/errors.js.map +1 -0
  455. package/dist/utils/index.d.ts +9 -0
  456. package/dist/utils/index.d.ts.map +1 -0
  457. package/dist/utils/index.js +9 -0
  458. package/dist/utils/index.js.map +1 -0
  459. package/dist/utils/redirectMap.d.ts +40 -0
  460. package/dist/utils/redirectMap.d.ts.map +1 -0
  461. package/dist/utils/redirectMap.js +129 -0
  462. package/dist/utils/redirectMap.js.map +1 -0
  463. package/dist/utils/retry.d.ts +103 -0
  464. package/dist/utils/retry.d.ts.map +1 -0
  465. package/dist/utils/retry.js +248 -0
  466. package/dist/utils/retry.js.map +1 -0
  467. package/dist/utils/tags.d.ts +35 -0
  468. package/dist/utils/tags.d.ts.map +1 -0
  469. package/dist/utils/tags.js +37 -0
  470. package/dist/utils/tags.js.map +1 -0
  471. package/docs/llms.md +430 -0
  472. package/package.json +86 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigationItem.js","sourceRoot":"","sources":["../../src/converters/navigationItem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { IBasePage, IInternalLink } from '@se-studio/core-data-types';
2
+ import type { Entry } from 'contentful';
3
+ import type { DefaultChainModifier } from '../api';
4
+ import type { BasePageSkeleton } from '../baseTypes/basePage';
5
+ import type { BasePageVariantSkeleton } from '../baseTypes/basePageVariant';
6
+ import { type ConverterContext } from './helpers';
7
+ /**
8
+ * Base converter for Contentful Page entries to IPage type
9
+ *
10
+ * This is a minimal implementation that can be extended using
11
+ * the functional composition pattern.
12
+ *
13
+ * @param entry - Contentful entry to convert
14
+ * @returns IPage object
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const page = basePageConverter(contentfulEntry);
19
+ * ```
20
+ */
21
+ export declare function basePageConverter(context: ConverterContext, entry: Entry<BasePageSkeleton, DefaultChainModifier, string>): IBasePage;
22
+ export declare function calculatePageHref(slug: string): string;
23
+ export declare function basePageLinkConverter(context: ConverterContext, entry: Entry<BasePageSkeleton, DefaultChainModifier, string>): IInternalLink;
24
+ /**
25
+ * Calculates the href for a page variant page
26
+ * @param slug - Page variant slug
27
+ * @returns Page variant href path with trailing slash
28
+ */
29
+ export declare function calculatePageVariantHref(slug: string): string;
30
+ /**
31
+ * Base converter for PageVariant entries to IInternalLink type
32
+ * Used when a page variant is referenced as a link in content
33
+ *
34
+ * @param context - Converter context containing assets, includes, and resolvers
35
+ * @param entry - Contentful page variant entry to convert
36
+ * @returns IInternalLink object representing the page variant link
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const pageVariantLink = basePageVariantLinkConverter(context, pageVariantEntry);
41
+ * ```
42
+ */
43
+ export declare function basePageVariantLinkConverter(context: ConverterContext, entry: Entry<BasePageVariantSkeleton, DefaultChainModifier, string>): IInternalLink;
44
+ //# sourceMappingURL=page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/converters/page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAmB,MAAM,4BAA4B,CAAC;AAE5F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAE5E,OAAO,EAEL,KAAK,gBAAgB,EAQtB,MAAM,WAAW,CAAC;AAUnB;;;;;;;;;;;;;GAaG;AAEH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAC3D,SAAS,CAgIX;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,UAK7C;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAC3D,aAAa,CAsBf;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,UAEpD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,KAAK,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAClE,aAAa,CAoBf"}
@@ -0,0 +1,160 @@
1
+ import { isCollection, resolvedMeta } from '@se-studio/core-data-types';
2
+ import { lookupMediaEntry } from './asset.js';
3
+ import { addPositionMetadata, calculateContentCount, createInternalLink, lookupAsset, makeContentfulDescription, makeContentfulTitle, shouldResolveContents, shouldResolveNavigation, } from './helpers.js';
4
+ import { collectIconsFromContent, collectIconsFromNavigation, deduplicateIcons, } from './iconCollector.js';
5
+ import { resolveNavigationOrStub } from './navigationItem.js';
6
+ import { resolveLink, resolvePageContent, resolveSchema } from './resolver.js';
7
+ import { resolveTemplate } from './template.js';
8
+ /**
9
+ * Base converter for Contentful Page entries to IPage type
10
+ *
11
+ * This is a minimal implementation that can be extended using
12
+ * the functional composition pattern.
13
+ *
14
+ * @param entry - Contentful entry to convert
15
+ * @returns IPage object
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * const page = basePageConverter(contentfulEntry);
20
+ * ```
21
+ */
22
+ export function basePageConverter(context, entry) {
23
+ const { sys: { id }, fields, } = entry;
24
+ const { slug, title, description, featuredImage, tags, content, menu: pageMenu, footer: pageFooter, template: templateLink, topContent: topContentLinks, bottomContent: bottomContentLinks, structuredData, meta: pageMeta, backgroundColour: pageBackgroundColour, textColour: pageTextColour, visuals: visualsField, ...simpleFields } = fields;
25
+ if (!shouldResolveNavigation(context) && !shouldResolveContents(context)) {
26
+ return {
27
+ type: 'Page',
28
+ id,
29
+ isHomePage: slug === 'index',
30
+ slug,
31
+ name: title,
32
+ title: makeContentfulTitle(title, id),
33
+ description: makeContentfulDescription(description, id),
34
+ featuredImage: lookupAsset(context, featuredImage),
35
+ href: context.urlCalculators.page(slug),
36
+ contentCount: 0,
37
+ tags: tags
38
+ ?.map((t) => resolveLink(context, id, t))
39
+ .filter((t) => t != null),
40
+ ...simpleFields,
41
+ backgroundColour: pageBackgroundColour,
42
+ textColour: pageTextColour,
43
+ meta: resolvedMeta(pageMeta),
44
+ };
45
+ }
46
+ const pageMenuNav = resolveNavigationOrStub(context, pageMenu);
47
+ const pageFooterNav = resolveNavigationOrStub(context, pageFooter);
48
+ const template = templateLink ? resolveTemplate(context, templateLink) : null;
49
+ // Resolve all content sections
50
+ const topContent = topContentLinks
51
+ ?.map((c) => resolvePageContent(context, id, c))
52
+ .filter((item) => item !== null) ?? [];
53
+ const pageContent = content
54
+ ?.map((c) => resolvePageContent(context, id, c))
55
+ .filter((item) => item !== null) ?? [];
56
+ const bottomContent = bottomContentLinks
57
+ ?.map((c) => resolvePageContent(context, id, c))
58
+ .filter((item) => item !== null) ?? [];
59
+ const preContent = template?.preContent ?? [];
60
+ const postContent = template?.postContent ?? [];
61
+ const contentContainer = template?.contentContainer;
62
+ // Merge in correct order: with contentContainer (must be a collection), inject pageContent into the container
63
+ const mergedContents = contentContainer && isCollection(contentContainer)
64
+ ? [
65
+ ...topContent,
66
+ ...preContent,
67
+ {
68
+ ...contentContainer,
69
+ contents: addPositionMetadata([...(contentContainer.contents ?? []), ...pageContent]),
70
+ },
71
+ ...postContent,
72
+ ...bottomContent,
73
+ ]
74
+ : [...topContent, ...preContent, ...pageContent, ...postContent, ...bottomContent];
75
+ const contents = addPositionMetadata(mergedContents);
76
+ // Determine final menu and footer (page-level overrides template)
77
+ const finalMenu = pageMenuNav ?? template?.menu;
78
+ const finalFooter = pageFooterNav ?? template?.footer;
79
+ // Collect and deduplicate all SVG icons from page content and navigation
80
+ const icons = deduplicateIcons(collectIconsFromContent(contents), collectIconsFromNavigation(finalMenu), collectIconsFromNavigation(finalFooter));
81
+ const visuals = visualsField
82
+ ?.map((link) => lookupMediaEntry(context, link))
83
+ .filter((v) => v != null);
84
+ const page = {
85
+ type: 'Page',
86
+ id,
87
+ isHomePage: slug === 'index',
88
+ slug,
89
+ name: title,
90
+ title: makeContentfulTitle(title, id),
91
+ description: makeContentfulDescription(description, id),
92
+ featuredImage: lookupAsset(context, featuredImage),
93
+ visuals: visuals?.length ? visuals : undefined,
94
+ tags: tags?.map((tag) => resolveLink(context, id, tag)).filter((t) => t != null),
95
+ href: context.urlCalculators.page(slug),
96
+ contentCount: calculateContentCount(topContent, pageContent, bottomContent),
97
+ contents,
98
+ icons,
99
+ structuredData: [
100
+ ...(structuredData?.map((link) => resolveSchema(context, id, link)) ?? []),
101
+ ...(template?.structuredData ?? []),
102
+ ].filter((item) => item !== null),
103
+ meta: resolvedMeta(template?.meta, pageMeta),
104
+ ...simpleFields,
105
+ backgroundColour: pageBackgroundColour ?? template?.backgroundColour,
106
+ textColour: pageTextColour ?? template?.textColour,
107
+ menu: finalMenu,
108
+ footer: finalFooter,
109
+ };
110
+ return page;
111
+ }
112
+ export function calculatePageHref(slug) {
113
+ if (slug === 'index') {
114
+ return '/';
115
+ }
116
+ return `/${slug}/`;
117
+ }
118
+ export function basePageLinkConverter(context, entry) {
119
+ const { sys: { id, contentType }, fields, } = entry;
120
+ if (contentType.sys.id !== 'page') {
121
+ throw new Error(`Invalid content type: expected "page", got "${contentType.sys.id}"`);
122
+ }
123
+ const href = context.urlCalculators.page(fields.slug);
124
+ return createInternalLink(id, {
125
+ ...fields,
126
+ name: fields.cmsLabel,
127
+ }, context, href, 'Page', { tags: fields.tags?.map((tag) => resolveLink(context, id, tag)) });
128
+ }
129
+ /**
130
+ * Calculates the href for a page variant page
131
+ * @param slug - Page variant slug
132
+ * @returns Page variant href path with trailing slash
133
+ */
134
+ export function calculatePageVariantHref(slug) {
135
+ return `/${slug}/`;
136
+ }
137
+ /**
138
+ * Base converter for PageVariant entries to IInternalLink type
139
+ * Used when a page variant is referenced as a link in content
140
+ *
141
+ * @param context - Converter context containing assets, includes, and resolvers
142
+ * @param entry - Contentful page variant entry to convert
143
+ * @returns IInternalLink object representing the page variant link
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * const pageVariantLink = basePageVariantLinkConverter(context, pageVariantEntry);
148
+ * ```
149
+ */
150
+ export function basePageVariantLinkConverter(context, entry) {
151
+ const { sys: { id, contentType }, fields, } = entry;
152
+ if (contentType.sys.id !== 'pageVariant') {
153
+ throw new Error(`Invalid content type: expected "pageVariant", got "${contentType.sys.id}"`);
154
+ }
155
+ return createInternalLink(id, {
156
+ ...fields,
157
+ name: fields.cmsLabel,
158
+ }, context, context.urlCalculators.pageVariant(fields.slug), 'Page', { tags: fields.tags?.map((tag) => resolveLink(context, id, tag)) });
159
+ }
160
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/converters/page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { IBasePage, ITyped } from '@se-studio/core-data-types';
2
+ import type { Entry } from 'contentful';
3
+ import type { DefaultChainModifier } from '../api';
4
+ import type { BaseAlternatePageContentSkeleton } from '../baseTypes/baseAlternatePageContent';
5
+ import type { BasePageVariantSkeleton } from '../baseTypes/basePageVariant';
6
+ import { type ConverterContext } from './helpers';
7
+ /**
8
+ * Replace or remove one content block (by source entry id) in a page content tree.
9
+ * Walks top-level items and nested collection {@link IBaseCollection.contents}.
10
+ * When `replacements` is non-empty, inserts all items at the source position (1→N swap).
11
+ */
12
+ export declare function mergeAlternatePageContentsInTree(items: ReadonlyArray<ITyped>, sourceContentId: string, replacements: ITyped[] | null): ITyped[];
13
+ /**
14
+ * Resolves replacement blocks for an alternate-page-content entry.
15
+ * Prefers `replacementContents` (plural); falls back to singular `replacementContent`.
16
+ * Returns `null` when both are empty (remove source).
17
+ */
18
+ export declare function resolveAlternateReplacements(context: ConverterContext, variantId: string, altEntry: Entry<BaseAlternatePageContentSkeleton, DefaultChainModifier, string>): ITyped[] | null;
19
+ /**
20
+ * Build an {@link IBasePage} from a **pageVariant** entry and its includes:
21
+ * converts {@link originalPage}, applies {@link alternativeContents}, overlays variant fields.
22
+ */
23
+ export declare function buildMergedPageFromVariantEntry(context: ConverterContext, variantEntry: Entry<BasePageVariantSkeleton, DefaultChainModifier, string>): IBasePage;
24
+ //# sourceMappingURL=pageVariantMerge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageVariantMerge.d.ts","sourceRoot":"","sources":["../../src/converters/pageVariantMerge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,SAAS,EAAW,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAE9F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAE9F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAG5E,OAAO,EAEL,KAAK,gBAAgB,EAItB,MAAM,WAAW,CAAC;AAUnB;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,EAC5B,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,GAC5B,MAAM,EAAE,CAuBV;AAYD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,KAAK,CAAC,gCAAgC,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAC9E,MAAM,EAAE,GAAG,IAAI,CAgBjB;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,KAAK,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GACzE,SAAS,CAwCX"}
@@ -0,0 +1,151 @@
1
+ import { isCollection, resolvedMeta } from '@se-studio/core-data-types';
2
+ import { lookupMediaEntry } from './asset.js';
3
+ import { addPositionMetadata, lookupAsset, makeContentfulDescription, makeContentfulTitle, } from './helpers.js';
4
+ import { collectIconsFromContent, collectIconsFromNavigation, deduplicateIcons, } from './iconCollector.js';
5
+ import { resolveNavigationOrStub } from './navigationItem.js';
6
+ import { basePageConverter } from './page.js';
7
+ import { resolveLink, resolvePageContent, resolveSchema } from './resolver.js';
8
+ /**
9
+ * Replace or remove one content block (by source entry id) in a page content tree.
10
+ * Walks top-level items and nested collection {@link IBaseCollection.contents}.
11
+ * When `replacements` is non-empty, inserts all items at the source position (1→N swap).
12
+ */
13
+ export function mergeAlternatePageContentsInTree(items, sourceContentId, replacements) {
14
+ const out = [];
15
+ for (const item of items) {
16
+ if (item.id === sourceContentId) {
17
+ if (replacements && replacements.length > 0) {
18
+ out.push(...replacements);
19
+ }
20
+ continue;
21
+ }
22
+ if (isCollection(item)) {
23
+ const col = item;
24
+ const nextContents = col.contents
25
+ ? mergeAlternatePageContentsInTree(col.contents, sourceContentId, replacements)
26
+ : undefined;
27
+ out.push({
28
+ ...col,
29
+ contents: nextContents,
30
+ });
31
+ }
32
+ else {
33
+ out.push(item);
34
+ }
35
+ }
36
+ return out;
37
+ }
38
+ function pushAlternateResolutionError(context, message) {
39
+ const cmsError = {
40
+ entryId: '',
41
+ entryType: 'alternatePageContent',
42
+ message,
43
+ error: new Error(message),
44
+ };
45
+ context.errors.push(cmsError);
46
+ }
47
+ /**
48
+ * Resolves replacement blocks for an alternate-page-content entry.
49
+ * Prefers `replacementContents` (plural); falls back to singular `replacementContent`.
50
+ * Returns `null` when both are empty (remove source).
51
+ */
52
+ export function resolveAlternateReplacements(context, variantId, altEntry) {
53
+ const pluralLinks = altEntry.fields.replacementContents;
54
+ if (pluralLinks?.length) {
55
+ const resolved = pluralLinks
56
+ .map((link) => resolvePageContent(context, variantId, link))
57
+ .filter((item) => item !== null);
58
+ return resolved.length > 0 ? resolved : null;
59
+ }
60
+ const singularLink = altEntry.fields.replacementContent;
61
+ if (singularLink) {
62
+ const resolved = resolvePageContent(context, variantId, singularLink);
63
+ return resolved ? [resolved] : null;
64
+ }
65
+ return null;
66
+ }
67
+ /**
68
+ * Build an {@link IBasePage} from a **pageVariant** entry and its includes:
69
+ * converts {@link originalPage}, applies {@link alternativeContents}, overlays variant fields.
70
+ */
71
+ export function buildMergedPageFromVariantEntry(context, variantEntry) {
72
+ const variantId = variantEntry.sys.id;
73
+ const originalLink = variantEntry.fields.originalPage;
74
+ const originalId = originalLink.sys.id;
75
+ const included = context.includes.get(originalId);
76
+ if (included?.type !== 'page') {
77
+ throw new Error(`Page variant ${variantId}: original page ${originalId} missing from includes (type=${included?.type})`);
78
+ }
79
+ const basePage = basePageConverter(context, included.entry);
80
+ let contents = basePage.contents ? [...basePage.contents] : [];
81
+ const altLinks = variantEntry.fields.alternativeContents;
82
+ if (altLinks?.length) {
83
+ for (const link of altLinks) {
84
+ const altWrap = context.includes.get(link.sys.id);
85
+ if (altWrap?.type !== 'alternatePageContent') {
86
+ pushAlternateResolutionError(context, `Page variant ${variantId}: alternatePageContent ${link.sys.id} not in includes`);
87
+ continue;
88
+ }
89
+ const altEntry = altWrap.entry;
90
+ const sourceId = altEntry.fields.sourceContent.sys.id;
91
+ const replacements = resolveAlternateReplacements(context, variantId, altEntry);
92
+ contents = mergeAlternatePageContentsInTree(contents, sourceId, replacements);
93
+ }
94
+ }
95
+ return overlayPageVariantOntoMergedBase(context, variantEntry, basePage, contents);
96
+ }
97
+ function overlayPageVariantOntoMergedBase(context, variantEntry, basePage, mergedContents) {
98
+ const { sys, fields: vf } = variantEntry;
99
+ const variantId = sys.id;
100
+ const variantSlug = vf.slug;
101
+ const menu = vf.menu ? resolveNavigationOrStub(context, vf.menu) : basePage.menu;
102
+ const footer = vf.footer ? resolveNavigationOrStub(context, vf.footer) : basePage.footer;
103
+ const positionedContents = addPositionMetadata(mergedContents);
104
+ const icons = deduplicateIcons(collectIconsFromContent(positionedContents), collectIconsFromNavigation(menu), collectIconsFromNavigation(footer));
105
+ const description = vf.description !== undefined && vf.description !== null
106
+ ? makeContentfulDescription(vf.description, variantId)
107
+ : basePage.description;
108
+ const structuredData = vf.structuredData !== undefined
109
+ ? vf.structuredData
110
+ .map((l) => resolveSchema(context, variantId, l))
111
+ .filter((item) => item !== null)
112
+ : basePage.structuredData;
113
+ return {
114
+ ...basePage,
115
+ id: variantId,
116
+ slug: variantSlug,
117
+ isHomePage: variantSlug === 'index',
118
+ name: vf.title !== undefined ? vf.title : basePage.name,
119
+ title: vf.title !== undefined ? makeContentfulTitle(vf.title, variantId) : basePage.title,
120
+ description,
121
+ href: context.urlCalculators.pageVariant(variantSlug),
122
+ featuredImage: vf.featuredImage !== undefined
123
+ ? lookupAsset(context, vf.featuredImage)
124
+ : basePage.featuredImage,
125
+ tags: vf.tags
126
+ ? vf.tags.map((t) => resolveLink(context, variantId, t)).filter((t) => t != null)
127
+ : basePage.tags,
128
+ structuredData,
129
+ meta: resolvedMeta(basePage.meta, vf.meta),
130
+ menu,
131
+ footer,
132
+ backgroundColour: vf.backgroundColour ?? basePage.backgroundColour,
133
+ textColour: vf.textColour ?? basePage.textColour,
134
+ breadcrumbTitle: vf.breadcrumbTitle ?? basePage.breadcrumbTitle,
135
+ indexed: vf.indexed,
136
+ hidden: vf.hidden,
137
+ contentCount: mergedContents.length,
138
+ contents: positionedContents,
139
+ icons,
140
+ ...(vf.phoneNumber !== undefined ? { phoneNumber: vf.phoneNumber } : {}),
141
+ ...(vf.redirectTo !== undefined ? { redirectTo: vf.redirectTo } : {}),
142
+ ...(vf.visuals !== undefined
143
+ ? {
144
+ visuals: vf.visuals
145
+ .map((link) => lookupMediaEntry(context, link))
146
+ .filter((v) => v != null),
147
+ }
148
+ : {}),
149
+ };
150
+ }
151
+ //# sourceMappingURL=pageVariantMerge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pageVariantMerge.js","sourceRoot":"","sources":["../../src/converters/pageVariantMerge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { IBasePerson, IPersonLink } from '@se-studio/core-data-types';
2
+ import type { Entry } from 'contentful';
3
+ import type { DefaultChainModifier, IContentfulRichText } from '../api';
4
+ import type { BaseCustomTypeSkeleton } from '../baseTypes/baseCustomType';
5
+ import type { BasePersonSkeleton } from '../baseTypes/basePerson';
6
+ import { type ConverterContext } from './helpers';
7
+ export type IContentfulPerson = IBasePerson & {
8
+ bio?: IContentfulRichText | null;
9
+ publishedIn?: IContentfulRichText | null;
10
+ };
11
+ /**
12
+ * Base converter for Person entries to IPersonLink type
13
+ * Used when a person is referenced as a link in content
14
+ *
15
+ * @param context - Converter context containing assets, includes, and resolvers
16
+ * @param entry - Contentful person entry to convert
17
+ * @returns IPersonLink object representing the person link
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * const personLink = basePersonLinkConverter(context, personEntry);
22
+ * ```
23
+ */
24
+ export declare function basePersonLinkConverter(context: ConverterContext, entry: Entry<BasePersonSkeleton, DefaultChainModifier, string>): IPersonLink;
25
+ /**
26
+ * Base converter for Person entries to IPerson type
27
+ * Used when a complete person object with bio and content is needed
28
+ *
29
+ * @param context - Converter context containing assets, includes, and resolvers
30
+ * @param entry - Contentful person entry to convert
31
+ * @param customTypeEntry - Optional custom type entry that defines templates and navigation
32
+ * @returns IPerson object representing the complete person
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const person = basePersonConverter(context, personEntry, customTypeEntry);
37
+ * ```
38
+ */
39
+ export declare function basePersonConverter(context: ConverterContext, entry: Entry<BasePersonSkeleton, DefaultChainModifier, string>, customTypeEntry?: Entry<BaseCustomTypeSkeleton, DefaultChainModifier, string>): IContentfulPerson;
40
+ //# sourceMappingURL=person.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"person.d.ts","sourceRoot":"","sources":["../../src/converters/person.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAIZ,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAEL,KAAK,gBAAgB,EAOtB,MAAM,WAAW,CAAC;AAenB,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAC5C,GAAG,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAC7D,WAAW,CAkDb;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,CAAC,EAC9D,eAAe,CAAC,EAAE,KAAK,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,CAAC,GAC5E,iBAAiB,CA8HnB"}
@@ -0,0 +1,152 @@
1
+ import { resolvedMeta } from '@se-studio/core-data-types';
2
+ import { addPositionMetadata, calculateContentCount, createInternalLink, lookupAsset, makeContentfulTitle, shouldResolveContents, shouldResolveNavigation, } from './helpers.js';
3
+ import { collectIconsFromContent, collectIconsFromNavigation, deduplicateIcons, } from './iconCollector.js';
4
+ import { resolveNavigationOrStub } from './navigationItem.js';
5
+ import { resolveLinks, resolvePageContent, resolveRichTextDocument, resolveSchema, } from './resolver.js';
6
+ import { resolveTemplate } from './template.js';
7
+ /**
8
+ * Base converter for Person entries to IPersonLink type
9
+ * Used when a person is referenced as a link in content
10
+ *
11
+ * @param context - Converter context containing assets, includes, and resolvers
12
+ * @param entry - Contentful person entry to convert
13
+ * @returns IPersonLink object representing the person link
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * const personLink = basePersonLinkConverter(context, personEntry);
18
+ * ```
19
+ */
20
+ export function basePersonLinkConverter(context, entry) {
21
+ const { sys, fields } = entry;
22
+ const { name, bio: fieldsBio, jobTitle, description, phoneNumber, emailAddress, linkedIn, twitter, website, quote, alumniOf, location, media, ...simpleFields } = fields;
23
+ if (sys.contentType.sys.id !== 'person') {
24
+ throw new Error(`Invalid content type: expected "person", got "${sys.contentType.sys.id}"`);
25
+ }
26
+ const title = makeContentfulTitle(name, sys.id);
27
+ return createInternalLink(sys.id, {
28
+ ...simpleFields,
29
+ description: description ?? jobTitle,
30
+ name,
31
+ title,
32
+ featuredImage: media,
33
+ cmsLabel: title,
34
+ }, context, context.urlCalculators.person(fields.slug), 'Person', {
35
+ bio: resolveRichTextDocument(context, sys.id, fieldsBio),
36
+ jobTitle,
37
+ phoneNumber,
38
+ emailAddress,
39
+ linkedIn,
40
+ twitter,
41
+ website,
42
+ quote,
43
+ alumniOf,
44
+ location,
45
+ });
46
+ }
47
+ /**
48
+ * Base converter for Person entries to IPerson type
49
+ * Used when a complete person object with bio and content is needed
50
+ *
51
+ * @param context - Converter context containing assets, includes, and resolvers
52
+ * @param entry - Contentful person entry to convert
53
+ * @param customTypeEntry - Optional custom type entry that defines templates and navigation
54
+ * @returns IPerson object representing the complete person
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * const person = basePersonConverter(context, personEntry, customTypeEntry);
59
+ * ```
60
+ */
61
+ export function basePersonConverter(context, entry, customTypeEntry) {
62
+ const { sys: { id, contentType }, fields, } = entry;
63
+ if (contentType.sys.id !== 'person') {
64
+ throw new Error(`Invalid content type: expected "person", got "${contentType.sys.id}"`);
65
+ }
66
+ const { slug, name, description, jobTitle, media, bio: bioField, quote, website, expertise: expertiseLinks, publishedIn: publishedInField, content: contentLinks, structuredData, meta: personMeta, backgroundColour: personBackgroundColour, textColour: personTextColour, ...rest } = fields;
67
+ if (!shouldResolveNavigation(context) && !shouldResolveContents(context)) {
68
+ return {
69
+ type: 'Person',
70
+ id,
71
+ slug,
72
+ name,
73
+ title: makeContentfulTitle(name, id),
74
+ description: description ?? jobTitle ?? `Description for ${id}`,
75
+ jobTitle,
76
+ quote,
77
+ website,
78
+ featuredImage: lookupAsset(context, media),
79
+ href: context.urlCalculators.person(slug),
80
+ contentCount: 0,
81
+ ...rest,
82
+ backgroundColour: personBackgroundColour,
83
+ textColour: personTextColour,
84
+ meta: resolvedMeta(personMeta),
85
+ };
86
+ }
87
+ const customType = customTypeEntry
88
+ ? context.customTypeResolver(context, customTypeEntry)
89
+ : undefined;
90
+ // Resolve template from custom type (if provided)
91
+ const template = customTypeEntry?.fields.template
92
+ ? resolveTemplate(context, customTypeEntry.fields.template)
93
+ : null;
94
+ // Resolve content sections
95
+ const customTypeTopContent = customTypeEntry?.fields.topContent
96
+ ?.map((c) => resolvePageContent(context, id, c))
97
+ .filter((item) => item !== null) ?? [];
98
+ const personContent = contentLinks
99
+ ?.map((c) => resolvePageContent(context, id, c))
100
+ .filter((item) => item !== null) ?? [];
101
+ const preContent = template?.preContent ?? [];
102
+ const postContent = template?.postContent ?? [];
103
+ // Merge in correct order: customType-level top content first, then template pre/post wrapping person content
104
+ const contents = addPositionMetadata([
105
+ ...customTypeTopContent,
106
+ ...preContent,
107
+ ...personContent,
108
+ ...postContent,
109
+ ]);
110
+ // Resolve navigation (template level or from custom type)
111
+ // Note: Person doesn't have direct menu/footer overrides, so we rely on the custom type/template
112
+ const menu = customTypeEntry?.fields.menu
113
+ ? resolveNavigationOrStub(context, customTypeEntry.fields.menu)
114
+ : template?.menu;
115
+ const footer = customTypeEntry?.fields.footer
116
+ ? resolveNavigationOrStub(context, customTypeEntry.fields.footer)
117
+ : template?.footer;
118
+ // Collect and deduplicate all SVG icons
119
+ const icons = deduplicateIcons(collectIconsFromContent(contents), collectIconsFromNavigation(menu), collectIconsFromNavigation(footer));
120
+ return {
121
+ type: 'Person',
122
+ id,
123
+ slug,
124
+ name,
125
+ title: makeContentfulTitle(name, id),
126
+ description: description ?? jobTitle ?? `Description for ${id}`,
127
+ jobTitle,
128
+ quote,
129
+ website,
130
+ featuredImage: lookupAsset(context, media), // Person uses 'media' not 'featuredImage'
131
+ href: context.urlCalculators.person(slug),
132
+ bio: resolveRichTextDocument(context, id, bioField) ?? null,
133
+ expertise: resolveLinks(context, id, expertiseLinks) ?? null,
134
+ publishedIn: resolveRichTextDocument(context, id, publishedInField) ?? null,
135
+ contentCount: calculateContentCount(personContent),
136
+ contents,
137
+ menu,
138
+ footer,
139
+ backgroundColour: personBackgroundColour ?? template?.backgroundColour,
140
+ textColour: personTextColour ?? template?.textColour,
141
+ icons,
142
+ customType,
143
+ structuredData: [
144
+ ...(structuredData?.map((link) => resolveSchema(context, id, link)) ?? []),
145
+ ...(customTypeEntry?.fields?.structuredData?.map((link) => resolveSchema(context, id, link)) ?? []),
146
+ ...(template?.structuredData ?? []),
147
+ ].filter((item) => item !== null),
148
+ meta: resolvedMeta(template?.meta, customTypeEntry?.fields?.meta, personMeta),
149
+ ...rest,
150
+ };
151
+ }
152
+ //# sourceMappingURL=person.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"person.js","sourceRoot":"","sources":["../../src/converters/person.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { IVisual } from '@se-studio/core-data-types';
2
+ /**
3
+ * Enriches raster pictures in the assets map with `blurDataURL` by fetching a tiny CDN variant.
4
+ * Mutates each `IPicture` in place. Skips non-Contentful hosts, SVG, existing `blurDataURL`, and failures.
5
+ *
6
+ * @param assets - Map from asset id to visual (from `convertAllAssets`)
7
+ */
8
+ export declare function enrichPictureBlurPlaceholders(assets: Map<string, IVisual>): Promise<void>;
9
+ //# sourceMappingURL=pictureBlurEnricher.d.ts.map