@se-studio/contentful-rest-api 1.0.46 → 1.0.48

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 (298) hide show
  1. package/CHANGELOG.md +424 -0
  2. package/dist/api/article-type.d.ts +37 -0
  3. package/dist/api/article-type.d.ts.map +1 -0
  4. package/dist/api/article-type.js +134 -0
  5. package/dist/api/article-type.js.map +1 -0
  6. package/dist/api/article.d.ts +32 -0
  7. package/dist/api/article.d.ts.map +1 -0
  8. package/dist/api/article.js +43 -0
  9. package/dist/api/article.js.map +1 -0
  10. package/dist/api/asset.d.ts +28 -0
  11. package/dist/api/asset.d.ts.map +1 -0
  12. package/dist/api/asset.js +55 -0
  13. package/dist/api/asset.js.map +1 -0
  14. package/dist/api/context.d.ts +24 -0
  15. package/dist/api/context.d.ts.map +1 -0
  16. package/dist/api/context.js +62 -0
  17. package/dist/api/context.js.map +1 -0
  18. package/dist/api/custom-type.d.ts +37 -0
  19. package/dist/api/custom-type.d.ts.map +1 -0
  20. package/dist/api/custom-type.js +44 -0
  21. package/dist/api/custom-type.js.map +1 -0
  22. package/dist/api/helpers.d.ts +73 -0
  23. package/dist/api/helpers.d.ts.map +1 -0
  24. package/dist/api/helpers.js +296 -0
  25. package/dist/api/helpers.js.map +1 -0
  26. package/dist/api/index.d.ts +22 -0
  27. package/dist/api/index.d.ts.map +1 -0
  28. package/dist/api/index.js +28 -0
  29. package/dist/api/index.js.map +1 -0
  30. package/dist/api/links.d.ts +109 -0
  31. package/dist/api/links.d.ts.map +1 -0
  32. package/dist/api/links.js +199 -0
  33. package/dist/api/links.js.map +1 -0
  34. package/dist/api/page.d.ts +33 -0
  35. package/dist/api/page.d.ts.map +1 -0
  36. package/dist/api/page.js +40 -0
  37. package/dist/api/page.js.map +1 -0
  38. package/dist/api/person.d.ts +37 -0
  39. package/dist/api/person.d.ts.map +1 -0
  40. package/dist/api/person.js +134 -0
  41. package/dist/api/person.js.map +1 -0
  42. package/dist/api/preview.d.ts +55 -0
  43. package/dist/api/preview.d.ts.map +1 -0
  44. package/dist/api/preview.js +160 -0
  45. package/dist/api/preview.js.map +1 -0
  46. package/dist/api/related-articles.d.ts +22 -0
  47. package/dist/api/related-articles.d.ts.map +1 -0
  48. package/dist/api/related-articles.js +82 -0
  49. package/dist/api/related-articles.js.map +1 -0
  50. package/dist/api/server-asset.d.ts +40 -0
  51. package/dist/api/server-asset.d.ts.map +1 -0
  52. package/dist/api/server-asset.js +65 -0
  53. package/dist/api/server-asset.js.map +1 -0
  54. package/dist/api/sitemap.d.ts +131 -0
  55. package/dist/api/sitemap.d.ts.map +1 -0
  56. package/dist/api/sitemap.js +199 -0
  57. package/dist/api/sitemap.js.map +1 -0
  58. package/dist/api/tag.d.ts +37 -0
  59. package/dist/api/tag.d.ts.map +1 -0
  60. package/dist/api/tag.js +131 -0
  61. package/dist/api/tag.js.map +1 -0
  62. package/dist/api/template.d.ts +49 -0
  63. package/dist/api/template.d.ts.map +1 -0
  64. package/dist/api/template.js +88 -0
  65. package/dist/api/template.js.map +1 -0
  66. package/dist/api/types.d.ts +98 -0
  67. package/dist/api/types.d.ts.map +1 -0
  68. package/dist/api/types.js +2 -0
  69. package/dist/api/types.js.map +1 -0
  70. package/dist/baseTypes/baseAlternatePageContent.d.ts +24 -0
  71. package/dist/baseTypes/baseAlternatePageContent.d.ts.map +1 -0
  72. package/dist/baseTypes/baseAlternatePageContent.js +2 -0
  73. package/dist/baseTypes/baseAlternatePageContent.js.map +1 -0
  74. package/dist/baseTypes/baseArticle.d.ts +179 -0
  75. package/dist/baseTypes/baseArticle.d.ts.map +1 -0
  76. package/dist/baseTypes/baseArticle.js +2 -0
  77. package/dist/baseTypes/baseArticle.js.map +1 -0
  78. package/dist/baseTypes/baseArticleType.d.ts +156 -0
  79. package/dist/baseTypes/baseArticleType.d.ts.map +1 -0
  80. package/dist/baseTypes/baseArticleType.js +2 -0
  81. package/dist/baseTypes/baseArticleType.js.map +1 -0
  82. package/dist/baseTypes/baseBanner.d.ts +76 -0
  83. package/dist/baseTypes/baseBanner.d.ts.map +1 -0
  84. package/dist/baseTypes/baseBanner.js +2 -0
  85. package/dist/baseTypes/baseBanner.js.map +1 -0
  86. package/dist/baseTypes/baseCollection.d.ts +132 -0
  87. package/dist/baseTypes/baseCollection.d.ts.map +1 -0
  88. package/dist/baseTypes/baseCollection.js +2 -0
  89. package/dist/baseTypes/baseCollection.js.map +1 -0
  90. package/dist/baseTypes/baseComponent.d.ts +130 -0
  91. package/dist/baseTypes/baseComponent.d.ts.map +1 -0
  92. package/dist/baseTypes/baseComponent.js +2 -0
  93. package/dist/baseTypes/baseComponent.js.map +1 -0
  94. package/dist/baseTypes/baseCustomType.d.ts +126 -0
  95. package/dist/baseTypes/baseCustomType.d.ts.map +1 -0
  96. package/dist/baseTypes/baseCustomType.js +2 -0
  97. package/dist/baseTypes/baseCustomType.js.map +1 -0
  98. package/dist/baseTypes/baseExternalComponent.d.ts +66 -0
  99. package/dist/baseTypes/baseExternalComponent.d.ts.map +1 -0
  100. package/dist/baseTypes/baseExternalComponent.js +2 -0
  101. package/dist/baseTypes/baseExternalComponent.js.map +1 -0
  102. package/dist/baseTypes/baseExternalVideo.d.ts +85 -0
  103. package/dist/baseTypes/baseExternalVideo.d.ts.map +1 -0
  104. package/dist/baseTypes/baseExternalVideo.js +2 -0
  105. package/dist/baseTypes/baseExternalVideo.js.map +1 -0
  106. package/dist/baseTypes/baseLink.d.ts +90 -0
  107. package/dist/baseTypes/baseLink.d.ts.map +1 -0
  108. package/dist/baseTypes/baseLink.js +2 -0
  109. package/dist/baseTypes/baseLink.js.map +1 -0
  110. package/dist/baseTypes/baseMedia.d.ts +92 -0
  111. package/dist/baseTypes/baseMedia.d.ts.map +1 -0
  112. package/dist/baseTypes/baseMedia.js +2 -0
  113. package/dist/baseTypes/baseMedia.js.map +1 -0
  114. package/dist/baseTypes/baseNavigation.d.ts +36 -0
  115. package/dist/baseTypes/baseNavigation.d.ts.map +1 -0
  116. package/dist/baseTypes/baseNavigation.js +2 -0
  117. package/dist/baseTypes/baseNavigation.js.map +1 -0
  118. package/dist/baseTypes/baseNavigationItem.d.ts +96 -0
  119. package/dist/baseTypes/baseNavigationItem.d.ts.map +1 -0
  120. package/dist/baseTypes/baseNavigationItem.js +2 -0
  121. package/dist/baseTypes/baseNavigationItem.js.map +1 -0
  122. package/dist/baseTypes/basePage.d.ts +120 -0
  123. package/dist/baseTypes/basePage.d.ts.map +1 -0
  124. package/dist/baseTypes/basePage.js +2 -0
  125. package/dist/baseTypes/basePage.js.map +1 -0
  126. package/dist/baseTypes/basePageTest.d.ts +66 -0
  127. package/dist/baseTypes/basePageTest.d.ts.map +1 -0
  128. package/dist/baseTypes/basePageTest.js +2 -0
  129. package/dist/baseTypes/basePageTest.js.map +1 -0
  130. package/dist/baseTypes/basePageVariant.d.ts +123 -0
  131. package/dist/baseTypes/basePageVariant.d.ts.map +1 -0
  132. package/dist/baseTypes/basePageVariant.js +2 -0
  133. package/dist/baseTypes/basePageVariant.js.map +1 -0
  134. package/dist/baseTypes/basePerson.d.ts +111 -0
  135. package/dist/baseTypes/basePerson.d.ts.map +1 -0
  136. package/dist/baseTypes/basePerson.js +2 -0
  137. package/dist/baseTypes/basePerson.js.map +1 -0
  138. package/dist/baseTypes/baseSchema.d.ts +18 -0
  139. package/dist/baseTypes/baseSchema.d.ts.map +1 -0
  140. package/dist/baseTypes/baseSchema.js +2 -0
  141. package/dist/baseTypes/baseSchema.js.map +1 -0
  142. package/dist/baseTypes/baseShared.d.ts +30 -0
  143. package/dist/baseTypes/baseShared.d.ts.map +1 -0
  144. package/dist/baseTypes/baseShared.js +2 -0
  145. package/dist/baseTypes/baseShared.js.map +1 -0
  146. package/dist/baseTypes/baseTag.d.ts +108 -0
  147. package/dist/baseTypes/baseTag.d.ts.map +1 -0
  148. package/dist/baseTypes/baseTag.js +2 -0
  149. package/dist/baseTypes/baseTag.js.map +1 -0
  150. package/dist/baseTypes/baseTagType.d.ts +11 -0
  151. package/dist/baseTypes/baseTagType.d.ts.map +1 -0
  152. package/dist/baseTypes/baseTagType.js +2 -0
  153. package/dist/baseTypes/baseTagType.js.map +1 -0
  154. package/dist/baseTypes/baseTemplate.d.ts +55 -0
  155. package/dist/baseTypes/baseTemplate.d.ts.map +1 -0
  156. package/dist/baseTypes/baseTemplate.js +2 -0
  157. package/dist/baseTypes/baseTemplate.js.map +1 -0
  158. package/dist/client.d.ts +143 -0
  159. package/dist/client.d.ts.map +1 -0
  160. package/dist/client.js +268 -0
  161. package/dist/client.js.map +1 -0
  162. package/dist/converters/article.d.ts +42 -0
  163. package/dist/converters/article.d.ts.map +1 -0
  164. package/dist/converters/article.js +220 -0
  165. package/dist/converters/article.js.map +1 -0
  166. package/dist/converters/asset.d.ts +22 -0
  167. package/dist/converters/asset.d.ts.map +1 -0
  168. package/dist/converters/asset.js +282 -0
  169. package/dist/converters/asset.js.map +1 -0
  170. package/dist/converters/collection.d.ts +26 -0
  171. package/dist/converters/collection.d.ts.map +1 -0
  172. package/dist/converters/collection.js +50 -0
  173. package/dist/converters/collection.js.map +1 -0
  174. package/dist/converters/component.d.ts +26 -0
  175. package/dist/converters/component.d.ts.map +1 -0
  176. package/dist/converters/component.js +54 -0
  177. package/dist/converters/component.js.map +1 -0
  178. package/dist/converters/customType.d.ts +24 -0
  179. package/dist/converters/customType.d.ts.map +1 -0
  180. package/dist/converters/customType.js +71 -0
  181. package/dist/converters/customType.js.map +1 -0
  182. package/dist/converters/externalComponent.d.ts +22 -0
  183. package/dist/converters/externalComponent.d.ts.map +1 -0
  184. package/dist/converters/externalComponent.js +34 -0
  185. package/dist/converters/externalComponent.js.map +1 -0
  186. package/dist/converters/helpers.d.ts +116 -0
  187. package/dist/converters/helpers.d.ts.map +1 -0
  188. package/dist/converters/helpers.js +128 -0
  189. package/dist/converters/helpers.js.map +1 -0
  190. package/dist/converters/iconCollector.d.ts +65 -0
  191. package/dist/converters/iconCollector.d.ts.map +1 -0
  192. package/dist/converters/iconCollector.js +282 -0
  193. package/dist/converters/iconCollector.js.map +1 -0
  194. package/dist/converters/index.d.ts +18 -0
  195. package/dist/converters/index.d.ts.map +1 -0
  196. package/dist/converters/index.js +18 -0
  197. package/dist/converters/index.js.map +1 -0
  198. package/dist/converters/link.d.ts +11 -0
  199. package/dist/converters/link.d.ts.map +1 -0
  200. package/dist/converters/link.js +96 -0
  201. package/dist/converters/link.js.map +1 -0
  202. package/dist/converters/navigationItem.d.ts +11 -0
  203. package/dist/converters/navigationItem.d.ts.map +1 -0
  204. package/dist/converters/navigationItem.js +73 -0
  205. package/dist/converters/navigationItem.js.map +1 -0
  206. package/dist/converters/page.d.ts +44 -0
  207. package/dist/converters/page.d.ts.map +1 -0
  208. package/dist/converters/page.js +121 -0
  209. package/dist/converters/page.js.map +1 -0
  210. package/dist/converters/person.d.ts +40 -0
  211. package/dist/converters/person.d.ts.map +1 -0
  212. package/dist/converters/person.js +109 -0
  213. package/dist/converters/person.js.map +1 -0
  214. package/dist/converters/resolver.d.ts +29 -0
  215. package/dist/converters/resolver.d.ts.map +1 -0
  216. package/dist/converters/resolver.js +317 -0
  217. package/dist/converters/resolver.js.map +1 -0
  218. package/dist/converters/schema.d.ts +14 -0
  219. package/dist/converters/schema.d.ts.map +1 -0
  220. package/dist/converters/schema.js +18 -0
  221. package/dist/converters/schema.js.map +1 -0
  222. package/dist/converters/svgProcessor.d.ts +23 -0
  223. package/dist/converters/svgProcessor.d.ts.map +1 -0
  224. package/dist/converters/svgProcessor.js +47 -0
  225. package/dist/converters/svgProcessor.js.map +1 -0
  226. package/dist/converters/tag.d.ts +25 -0
  227. package/dist/converters/tag.d.ts.map +1 -0
  228. package/dist/converters/tag.js +98 -0
  229. package/dist/converters/tag.js.map +1 -0
  230. package/dist/converters/template.d.ts +26 -0
  231. package/dist/converters/template.d.ts.map +1 -0
  232. package/dist/converters/template.js +44 -0
  233. package/dist/converters/template.js.map +1 -0
  234. package/dist/index.d.ts +28 -721
  235. package/dist/index.d.ts.map +1 -0
  236. package/dist/index.js +37 -3634
  237. package/dist/index.js.map +1 -1
  238. package/dist/revalidation/handlers.d.ts +52 -0
  239. package/dist/revalidation/handlers.d.ts.map +1 -0
  240. package/dist/revalidation/handlers.js +130 -0
  241. package/dist/revalidation/handlers.js.map +1 -0
  242. package/dist/revalidation/index.d.ts +3 -0
  243. package/dist/revalidation/index.d.ts.map +1 -0
  244. package/dist/revalidation/index.js +4 -0
  245. package/dist/revalidation/index.js.map +1 -0
  246. package/dist/revalidation/nextjs-route.d.ts +31 -0
  247. package/dist/revalidation/nextjs-route.d.ts.map +1 -0
  248. package/dist/revalidation/nextjs-route.js +34 -0
  249. package/dist/revalidation/nextjs-route.js.map +1 -0
  250. package/dist/revalidation/route.d.ts +3 -0
  251. package/dist/revalidation/route.d.ts.map +1 -0
  252. package/dist/revalidation/route.js +97 -0
  253. package/dist/revalidation/route.js.map +1 -0
  254. package/dist/revalidation/server-utils.d.ts +22 -0
  255. package/dist/revalidation/server-utils.d.ts.map +1 -0
  256. package/dist/revalidation/server-utils.js +41 -0
  257. package/dist/revalidation/server-utils.js.map +1 -0
  258. package/dist/revalidation/tags.d.ts +81 -0
  259. package/dist/revalidation/tags.d.ts.map +1 -0
  260. package/dist/revalidation/tags.js +117 -0
  261. package/dist/revalidation/tags.js.map +1 -0
  262. package/dist/revalidation/utils.d.ts +21 -0
  263. package/dist/revalidation/utils.d.ts.map +1 -0
  264. package/dist/revalidation/utils.js +51 -0
  265. package/dist/revalidation/utils.js.map +1 -0
  266. package/dist/server.d.ts +7 -0
  267. package/dist/server.d.ts.map +1 -0
  268. package/dist/server.js +10 -0
  269. package/dist/server.js.map +1 -0
  270. package/dist/types.d.ts +67 -0
  271. package/dist/types.d.ts.map +1 -0
  272. package/dist/types.js +2 -0
  273. package/dist/types.js.map +1 -0
  274. package/dist/utils/arrayUtils.d.ts +3 -0
  275. package/dist/utils/arrayUtils.d.ts.map +1 -0
  276. package/dist/utils/arrayUtils.js +12 -0
  277. package/dist/utils/arrayUtils.js.map +1 -0
  278. package/dist/utils/dateUtils.d.ts +9 -0
  279. package/dist/utils/dateUtils.d.ts.map +1 -0
  280. package/dist/utils/dateUtils.js +26 -0
  281. package/dist/utils/dateUtils.js.map +1 -0
  282. package/dist/utils/errors.d.ts +56 -0
  283. package/dist/utils/errors.d.ts.map +1 -0
  284. package/dist/utils/errors.js +100 -0
  285. package/dist/utils/errors.js.map +1 -0
  286. package/dist/utils/index.d.ts +8 -0
  287. package/dist/utils/index.d.ts.map +1 -0
  288. package/dist/utils/index.js +8 -0
  289. package/dist/utils/index.js.map +1 -0
  290. package/dist/utils/json-utils.d.ts +17 -0
  291. package/dist/utils/json-utils.d.ts.map +1 -0
  292. package/dist/utils/json-utils.js +43 -0
  293. package/dist/utils/json-utils.js.map +1 -0
  294. package/dist/utils/retry.d.ts +112 -0
  295. package/dist/utils/retry.d.ts.map +1 -0
  296. package/dist/utils/retry.js +221 -0
  297. package/dist/utils/retry.js.map +1 -0
  298. package/package.json +12 -6
@@ -0,0 +1,30 @@
1
+ export type { BaseArticleSkeleton } from './baseArticle';
2
+ export type { BaseArticleTypeSkeleton } from './baseArticleType';
3
+ export type { BaseCollectionSkeleton } from './baseCollection';
4
+ export type { BaseComponentSkeleton } from './baseComponent';
5
+ export type { BaseExternalComponentSkeleton } from './baseExternalComponent';
6
+ export type { BaseExternalVideoSkeleton } from './baseExternalVideo';
7
+ export type { BaseLinkSkeleton } from './baseLink';
8
+ export type { BaseMediaSkeleton } from './baseMedia';
9
+ export type { BasePageSkeleton } from './basePage';
10
+ export type { BasePageVariantSkeleton } from './basePageVariant';
11
+ export type { BasePersonSkeleton } from './basePerson';
12
+ export type { BaseTagSkeleton } from './baseTag';
13
+ import type { BaseArticleSkeleton } from './baseArticle';
14
+ import type { BaseArticleTypeSkeleton } from './baseArticleType';
15
+ import type { BaseCollectionSkeleton } from './baseCollection';
16
+ import type { BaseComponentSkeleton } from './baseComponent';
17
+ import type { BaseCustomTypeSkeleton } from './baseCustomType';
18
+ import type { BaseExternalComponentSkeleton } from './baseExternalComponent';
19
+ import type { BaseExternalVideoSkeleton } from './baseExternalVideo';
20
+ import type { BaseLinkSkeleton } from './baseLink';
21
+ import type { BaseMediaSkeleton } from './baseMedia';
22
+ import type { BasePageSkeleton } from './basePage';
23
+ import type { BasePageVariantSkeleton } from './basePageVariant';
24
+ import type { BasePersonSkeleton } from './basePerson';
25
+ import type { BaseTagSkeleton } from './baseTag';
26
+ export type BaseContent = BaseCollectionSkeleton | BaseComponentSkeleton | BaseExternalComponentSkeleton | BaseExternalVideoSkeleton | BaseMediaSkeleton | BasePersonSkeleton;
27
+ export type BaseLink = BaseArticleSkeleton | BaseArticleTypeSkeleton | BaseLinkSkeleton | BasePageSkeleton | BasePageVariantSkeleton | BasePersonSkeleton | BaseTagSkeleton | BaseCustomTypeSkeleton;
28
+ export type BaseContentTypes = BaseContent['contentTypeId'];
29
+ export type BaseLinkTypes = BaseLink['contentTypeId'];
30
+ //# sourceMappingURL=baseShared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseShared.d.ts","sourceRoot":"","sources":["../../src/baseTypes/baseShared.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,YAAY,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,YAAY,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,YAAY,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,MAAM,WAAW,GACnB,sBAAsB,GACtB,qBAAqB,GACrB,6BAA6B,GAC7B,yBAAyB,GACzB,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,QAAQ,GAChB,mBAAmB,GACnB,uBAAuB,GACvB,gBAAgB,GAChB,gBAAgB,GAChB,uBAAuB,GACvB,kBAAkB,GAClB,eAAe,GACf,sBAAsB,CAAC;AAE3B,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=baseShared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseShared.js","sourceRoot":"","sources":["../../src/baseTypes/baseShared.ts"],"names":[],"mappings":""}
@@ -0,0 +1,108 @@
1
+ import type { EntryFieldTypes, EntrySkeletonType } from 'contentful';
2
+ import type { BaseExternalVideoSkeleton } from './baseExternalVideo';
3
+ import type { BaseMediaSkeleton } from './baseMedia';
4
+ import type { BaseNavigationSkeleton } from './baseNavigation';
5
+ import type { BaseSchemaSkeleton } from './baseSchema';
6
+ import type { BaseContent } from './baseShared';
7
+ import type { BaseTagTypeSkeleton } from './baseTagType';
8
+ import type { BaseTemplateSkeleton } from './baseTemplate';
9
+ export interface BaseTagFields {
10
+ /**
11
+ * Field type definition for field 'cmsLabel' (Cms label)
12
+ * @name Cms label
13
+ * @localized false
14
+ */
15
+ cmsLabel: EntryFieldTypes.Symbol;
16
+ /**
17
+ * Field type definition for field 'name' (Name)
18
+ * @name Name
19
+ * @localized false
20
+ */
21
+ name: EntryFieldTypes.Symbol;
22
+ /**
23
+ * Field type definition for field 'tagType' (Tag type)
24
+ * @name Tag type
25
+ * @localized false
26
+ */
27
+ tagType: EntryFieldTypes.EntryLink<BaseTagTypeSkeleton>;
28
+ /**
29
+ * Field type definition for field 'slug' (Slug)
30
+ * @name Slug
31
+ * @localized false
32
+ */
33
+ slug: EntryFieldTypes.Symbol;
34
+ /**
35
+ * Field type definition for field 'description' (Description)
36
+ * @name Description
37
+ * @localized false
38
+ */
39
+ description: EntryFieldTypes.Symbol;
40
+ /**
41
+ * Field type definition for field 'featuredImage' (Featured Image)
42
+ * @name Featured Image
43
+ * @localized false
44
+ */
45
+ featuredImage: EntryFieldTypes.AssetLink;
46
+ /**
47
+ * Field type definition for field 'visuals' (Visuals)
48
+ * @name Visuals
49
+ * @localized false
50
+ */
51
+ visuals?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<BaseExternalVideoSkeleton | BaseMediaSkeleton>>;
52
+ /**
53
+ * Field type definition for field 'menu' (Menu)
54
+ * @name Menu
55
+ * @localized false
56
+ */
57
+ menu?: EntryFieldTypes.EntryLink<BaseNavigationSkeleton>;
58
+ /**
59
+ * Field type definition for field 'footer' (Footer)
60
+ * @name Footer
61
+ * @localized false
62
+ */
63
+ footer?: EntryFieldTypes.EntryLink<BaseNavigationSkeleton>;
64
+ /**
65
+ * Field type definition for field 'template' (Template)
66
+ * @name Template
67
+ * @localized false
68
+ */
69
+ template?: EntryFieldTypes.EntryLink<BaseTemplateSkeleton>;
70
+ /**
71
+ * Field type definition for field 'topContent' (Top content)
72
+ * @name Top content
73
+ * @localized false
74
+ */
75
+ topContent?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<BaseContent>>;
76
+ /**
77
+ * Field type definition for field 'structuredData' (Structured data)
78
+ * @name Structured data
79
+ * @localized false
80
+ */
81
+ structuredData?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<BaseSchemaSkeleton>>;
82
+ /**
83
+ * Field type definition for field 'backgroundColour' (Background colour)
84
+ * @name Background colour
85
+ * @localized false
86
+ */
87
+ backgroundColour?: EntryFieldTypes.Symbol<string>;
88
+ /**
89
+ * Field type definition for field 'textColour' (Text colour)
90
+ * @name Text colour
91
+ * @localized false
92
+ */
93
+ textColour?: EntryFieldTypes.Symbol<string>;
94
+ /**
95
+ * Field type definition for field 'indexed' (Indexed)
96
+ * @name Indexed
97
+ * @localized false
98
+ */
99
+ indexed: EntryFieldTypes.Boolean;
100
+ /**
101
+ * Field type definition for field 'hidden' (Hidden)
102
+ * @name Hidden
103
+ * @localized false
104
+ */
105
+ hidden: EntryFieldTypes.Boolean;
106
+ }
107
+ export type BaseTagSkeleton = EntrySkeletonType<BaseTagFields, 'tag'>;
108
+ //# sourceMappingURL=baseTag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseTag.d.ts","sourceRoot":"","sources":["../../src/baseTypes/baseTag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC;IACjC;;;;OAIG;IACH,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;IAC7B;;;;OAIG;IACH,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IACxD;;;;OAIG;IACH,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;IAC7B;;;;OAIG;IACH,WAAW,EAAE,eAAe,CAAC,MAAM,CAAC;IACpC;;;;OAIG;IACH,aAAa,EAAE,eAAe,CAAC,SAAS,CAAC;IACzC;;;;OAIG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC,KAAK,CAC7B,eAAe,CAAC,SAAS,CAAC,yBAAyB,GAAG,iBAAiB,CAAC,CACzE,CAAC;IACF;;;;OAIG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACzD;;;;OAIG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAC3D;;;;OAIG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3E;;;;OAIG;IACH,cAAc,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACtF;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD;;;;OAIG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C;;;;OAIG;IACH,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC;IACjC;;;;OAIG;IACH,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=baseTag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseTag.js","sourceRoot":"","sources":["../../src/baseTypes/baseTag.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { EntryFieldTypes, EntrySkeletonType } from 'contentful';
2
+ export interface BaseTagTypeFields {
3
+ /**
4
+ * Field type definition for field 'name' (Name)
5
+ * @name Name
6
+ * @localized false
7
+ */
8
+ name: EntryFieldTypes.Symbol;
9
+ }
10
+ export type BaseTagTypeSkeleton = EntrySkeletonType<BaseTagTypeFields, 'tagType'>;
11
+ //# sourceMappingURL=baseTagType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseTagType.d.ts","sourceRoot":"","sources":["../../src/baseTypes/baseTagType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=baseTagType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseTagType.js","sourceRoot":"","sources":["../../src/baseTypes/baseTagType.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ import type { EntryFieldTypes, EntrySkeletonType } from 'contentful';
2
+ import type { BaseNavigationSkeleton } from './baseNavigation';
3
+ import type { BaseContent } from './baseShared';
4
+ export interface BaseTemplateFields {
5
+ /**
6
+ * Field type definition for field 'cmsLabel' (CMS Label)
7
+ * @name CMS Label
8
+ * @localized false
9
+ */
10
+ cmsLabel: EntryFieldTypes.Symbol;
11
+ /**
12
+ * Field type definition for field 'preContent' (Pre content)
13
+ * @name Pre content
14
+ * @localized false
15
+ */
16
+ preContent?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<BaseContent>>;
17
+ /**
18
+ * Field type definition for field 'postContent' (Post content)
19
+ * @name Post content
20
+ * @localized false
21
+ */
22
+ postContent?: EntryFieldTypes.Array<EntryFieldTypes.EntryLink<BaseContent>>;
23
+ /**
24
+ * Field type definition for field 'menu' (Menu)
25
+ * @name Menu
26
+ * @localized false
27
+ */
28
+ menu?: EntryFieldTypes.EntryLink<BaseNavigationSkeleton>;
29
+ /**
30
+ * Field type definition for field 'footer' (Footer)
31
+ * @name Footer
32
+ * @localized false
33
+ */
34
+ footer?: EntryFieldTypes.EntryLink<BaseNavigationSkeleton>;
35
+ /**
36
+ * Field type definition for field 'backgroundColour' (Background colour)
37
+ * @name Background colour
38
+ * @localized false
39
+ */
40
+ backgroundColour?: EntryFieldTypes.Symbol<string>;
41
+ /**
42
+ * Field type definition for field 'textColour' (Text colour)
43
+ * @name Text colour
44
+ * @localized false
45
+ */
46
+ textColour?: EntryFieldTypes.Symbol<string>;
47
+ /**
48
+ * Field type definition for field 'flags' (Flags)
49
+ * @name Flags
50
+ * @localized false
51
+ */
52
+ flags?: EntryFieldTypes.Array<EntryFieldTypes.Symbol<'Sticky nav'>>;
53
+ }
54
+ export type BaseTemplateSkeleton = EntrySkeletonType<BaseTemplateFields, 'template'>;
55
+ //# sourceMappingURL=baseTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseTemplate.d.ts","sourceRoot":"","sources":["../../src/baseTypes/baseTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3E;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5E;;;;OAIG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACzD;;;;OAIG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC3D;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD;;;;OAIG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C;;;;OAIG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;CACrE;AAED,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=baseTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseTemplate.js","sourceRoot":"","sources":["../../src/baseTypes/baseTemplate.ts"],"names":[],"mappings":""}
@@ -0,0 +1,143 @@
1
+ /** biome-ignore-all lint/suspicious/noExplicitAny: Any ok for now! */
2
+ import type { ContentfulConfig, FetchOptions } from './types';
3
+ /**
4
+ * Contentful REST API response structure
5
+ * The items array contains Entry objects when T is an EntrySkeletonType
6
+ */
7
+ export interface ContentfulResponse<T = any> {
8
+ sys: {
9
+ type: 'Array';
10
+ };
11
+ total: number;
12
+ skip: number;
13
+ limit: number;
14
+ items: T extends import('contentful').EntrySkeletonType ? Array<import('contentful').Entry<T, 'WITHOUT_LINK_RESOLUTION', string>> : T[];
15
+ includes?: {
16
+ Entry?: any[];
17
+ Asset?: any[];
18
+ };
19
+ }
20
+ /**
21
+ * Contentful Asset fields structure
22
+ */
23
+ export interface ContentfulAssetFields {
24
+ title?: string;
25
+ description?: string;
26
+ file?: {
27
+ url: string;
28
+ fileName: string;
29
+ contentType: string;
30
+ details?: {
31
+ size?: number;
32
+ image?: {
33
+ width: number;
34
+ height: number;
35
+ };
36
+ };
37
+ };
38
+ }
39
+ /**
40
+ * Contentful Asset API response structure
41
+ */
42
+ export interface ContentfulAssetResponse {
43
+ sys: {
44
+ id: string;
45
+ type: 'Asset';
46
+ createdAt: string;
47
+ updatedAt: string;
48
+ };
49
+ fields: ContentfulAssetFields;
50
+ }
51
+ /**
52
+ * Query parameters for Contentful API
53
+ */
54
+ export interface ContentfulQuery {
55
+ content_type?: string;
56
+ locale?: string;
57
+ include?: number;
58
+ limit?: number;
59
+ skip?: number;
60
+ [key: string]: any;
61
+ }
62
+ /**
63
+ * Fetch-based Contentful client that participates in Next.js caching.
64
+ * Includes proactive rate limiting and automatic retry on 429 errors.
65
+ */
66
+ export declare class ContentfulFetchClient {
67
+ private readonly baseUrl;
68
+ private readonly accessToken;
69
+ private readonly rateLimiter;
70
+ private readonly isPreview;
71
+ constructor(config: ContentfulConfig, preview?: boolean);
72
+ /**
73
+ * Fetches entries from Contentful with proactive rate limiting
74
+ * and automatic retry on rate limit errors.
75
+ *
76
+ * Rate limits are applied proactively:
77
+ * - Preview API: 14 requests/second
78
+ * - Delivery API: 55 requests/second
79
+ *
80
+ * If a 429 is still received (e.g., due to other processes), retries with backoff.
81
+ */
82
+ getEntries<T = any>(query: ContentfulQuery, options?: FetchOptions): Promise<ContentfulResponse<T>>;
83
+ /**
84
+ * Fetches a single asset from Contentful by ID with proactive rate limiting
85
+ * and automatic retry on rate limit errors.
86
+ *
87
+ * @param assetId - The Contentful asset ID
88
+ * @param options - Optional fetch options (locale, preview, caching, retry)
89
+ * @returns The asset response or null if not found
90
+ */
91
+ getAsset(assetId: string, options?: FetchOptions): Promise<ContentfulAssetResponse | null>;
92
+ }
93
+ /**
94
+ * Creates a Contentful Content Delivery API (CDA) client
95
+ *
96
+ * @param config - Configuration object for the Contentful client
97
+ * @returns Contentful CDA client instance
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * const client = createContentfulClient({
102
+ * spaceId: process.env.CONTENTFUL_SPACE_ID!,
103
+ * accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!,
104
+ * environment: 'master'
105
+ * });
106
+ * ```
107
+ */
108
+ export declare function createContentfulClient(config: ContentfulConfig): ContentfulFetchClient;
109
+ /**
110
+ * Creates a Contentful Content Preview API (CPA) client
111
+ *
112
+ * @param config - Configuration object for the Contentful preview client
113
+ * @returns Contentful CPA client instance
114
+ *
115
+ * @example
116
+ * ```ts
117
+ * const previewClient = createContentfulPreviewClient({
118
+ * spaceId: process.env.CONTENTFUL_SPACE_ID!,
119
+ * accessToken: process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN!,
120
+ * environment: 'master'
121
+ * });
122
+ * ```
123
+ */
124
+ export declare function createContentfulPreviewClient(config: ContentfulConfig): ContentfulFetchClient;
125
+ /**
126
+ * Gets the appropriate Contentful client based on preview mode
127
+ *
128
+ * @param config - Configuration for the Contentful client
129
+ * @param preview - Whether to use the preview API
130
+ * @returns Contentful client instance (CDA or CPA)
131
+ *
132
+ * @example
133
+ * ```ts
134
+ * const client = getContentfulClient({
135
+ * spaceId: process.env.CONTENTFUL_SPACE_ID!,
136
+ * accessToken: preview
137
+ * ? process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN!
138
+ * : process.env.CONTENTFUL_ACCESS_TOKEN!,
139
+ * }, preview);
140
+ * ```
141
+ */
142
+ export declare function getContentfulClient(config: ContentfulConfig, preview: boolean): ContentfulFetchClient;
143
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,268 @@
1
+ import { AuthenticationError, ContentfulError, EntryNotFoundError, RateLimitError, ValidationError, } from './utils/errors';
2
+ import { calculateBackoffDelay, getRateLimiter } from './utils/retry';
3
+ /**
4
+ * Builds query string from query parameters
5
+ */
6
+ function buildQueryString(query) {
7
+ const params = new URLSearchParams();
8
+ Object.entries(query).forEach(([key, value]) => {
9
+ if (value !== undefined && value !== null) {
10
+ params.append(key, String(value));
11
+ }
12
+ });
13
+ return params.toString();
14
+ }
15
+ /**
16
+ * Sleep utility for async delays
17
+ */
18
+ function sleep(ms) {
19
+ return new Promise((resolve) => setTimeout(resolve, ms));
20
+ }
21
+ /**
22
+ * Retry configuration for 429 error handling in getEntries
23
+ */
24
+ const RETRY_CONFIG = {
25
+ maxRetries: 10,
26
+ initialDelay: 1000,
27
+ maxDelay: 15000,
28
+ backoffMultiplier: 2,
29
+ };
30
+ /**
31
+ * Parses retry-after header from response
32
+ *
33
+ * @param response - Fetch response object
34
+ * @returns Retry-after value in seconds, or undefined if not present
35
+ */
36
+ function parseRetryAfter(response) {
37
+ const retryAfterHeader = response.headers.get('X-Contentful-RateLimit-Reset') || response.headers.get('Retry-After');
38
+ if (retryAfterHeader) {
39
+ const parsed = Number.parseInt(retryAfterHeader, 10);
40
+ return Number.isNaN(parsed) ? undefined : parsed;
41
+ }
42
+ return undefined;
43
+ }
44
+ /**
45
+ * Parses error response from Contentful API
46
+ */
47
+ async function parseErrorResponse(response) {
48
+ const statusCode = response.status;
49
+ let errorData;
50
+ try {
51
+ errorData = await response.json();
52
+ }
53
+ catch {
54
+ errorData = { message: response.statusText };
55
+ }
56
+ const message = errorData?.message || `Contentful API error: ${statusCode}`;
57
+ switch (statusCode) {
58
+ case 401:
59
+ return new AuthenticationError(message);
60
+ case 404:
61
+ return new EntryNotFoundError(errorData?.sys?.id || 'unknown', errorData?.sys?.contentType?.sys?.id);
62
+ case 429: {
63
+ // Parse retry-after header (in seconds)
64
+ const retryAfterHeader = response.headers.get('X-Contentful-RateLimit-Reset') || response.headers.get('Retry-After');
65
+ const retryAfter = retryAfterHeader ? Number.parseInt(retryAfterHeader, 10) : undefined;
66
+ return new RateLimitError(message, retryAfter, errorData);
67
+ }
68
+ case 400:
69
+ return new ValidationError(message, errorData);
70
+ default:
71
+ return new ContentfulError(message, statusCode, errorData);
72
+ }
73
+ }
74
+ /**
75
+ * Fetch-based Contentful client that participates in Next.js caching.
76
+ * Includes proactive rate limiting and automatic retry on 429 errors.
77
+ */
78
+ export class ContentfulFetchClient {
79
+ baseUrl;
80
+ accessToken;
81
+ rateLimiter;
82
+ isPreview;
83
+ constructor(config, preview = false) {
84
+ const host = config.host || (preview ? 'preview.contentful.com' : 'cdn.contentful.com');
85
+ const environment = config.environment || 'master';
86
+ this.baseUrl = `https://${host}/spaces/${config.spaceId}/environments/${environment}`;
87
+ this.accessToken = config.accessToken;
88
+ this.isPreview = preview;
89
+ this.rateLimiter = getRateLimiter(preview);
90
+ }
91
+ /**
92
+ * Fetches entries from Contentful with proactive rate limiting
93
+ * and automatic retry on rate limit errors.
94
+ *
95
+ * Rate limits are applied proactively:
96
+ * - Preview API: 14 requests/second
97
+ * - Delivery API: 55 requests/second
98
+ *
99
+ * If a 429 is still received (e.g., due to other processes), retries with backoff.
100
+ */
101
+ async getEntries(query, options) {
102
+ const queryString = buildQueryString(query);
103
+ const url = `${this.baseUrl}/entries?${queryString}`;
104
+ const fetchOptions = {
105
+ headers: {
106
+ Authorization: `Bearer ${this.accessToken}`,
107
+ 'Content-Type': 'application/json',
108
+ },
109
+ };
110
+ // Add Next.js cache configuration if provided
111
+ if (options?.next) {
112
+ fetchOptions.next = options.next;
113
+ }
114
+ for (let attempt = 0; attempt <= RETRY_CONFIG.maxRetries; attempt++) {
115
+ try {
116
+ // Wait for rate limiter before making request
117
+ await this.rateLimiter.acquire();
118
+ const response = await fetch(url, fetchOptions);
119
+ if (response.ok) {
120
+ return response.json();
121
+ }
122
+ // Handle rate limiting (429) with automatic retry
123
+ if (response.status === 429 && attempt < RETRY_CONFIG.maxRetries) {
124
+ const retryAfter = parseRetryAfter(response);
125
+ const delay = calculateBackoffDelay(attempt, RETRY_CONFIG, retryAfter);
126
+ console.warn(`[Contentful] Rate limited (429), retrying in ${delay}ms (attempt ${attempt + 1}/${RETRY_CONFIG.maxRetries}). ` +
127
+ `Queue: ${this.rateLimiter.getQueueLength()} waiting. ` +
128
+ `API: ${this.isPreview ? 'preview' : 'delivery'}`);
129
+ // Pause the rate limiter - this affects all queued requests
130
+ // Use the longer of retryAfter or 2 seconds as minimum pause
131
+ const pauseSeconds = Math.max(retryAfter ?? 2, 2);
132
+ this.rateLimiter.pause(pauseSeconds);
133
+ // Wait before retrying this request
134
+ await sleep(delay);
135
+ continue;
136
+ }
137
+ // For non-429 errors or final retry attempt, throw the error
138
+ throw await parseErrorResponse(response);
139
+ }
140
+ catch (error) {
141
+ if (error instanceof ContentfulError) {
142
+ throw error;
143
+ }
144
+ console.error('[Contentful] Unexpected error in request', error);
145
+ throw new ContentfulError('Unexpected error in request', 500);
146
+ }
147
+ }
148
+ // This should never be reached due to the throw in the loop,
149
+ // but TypeScript needs it for type safety
150
+ throw new ContentfulError('Max retries exceeded', 500);
151
+ }
152
+ /**
153
+ * Fetches a single asset from Contentful by ID with proactive rate limiting
154
+ * and automatic retry on rate limit errors.
155
+ *
156
+ * @param assetId - The Contentful asset ID
157
+ * @param options - Optional fetch options (locale, preview, caching, retry)
158
+ * @returns The asset response or null if not found
159
+ */
160
+ async getAsset(assetId, options) {
161
+ const url = `${this.baseUrl}/assets/${assetId}`;
162
+ const fetchOptions = {
163
+ headers: {
164
+ Authorization: `Bearer ${this.accessToken}`,
165
+ 'Content-Type': 'application/json',
166
+ },
167
+ };
168
+ // Add Next.js cache configuration if provided
169
+ if (options?.next) {
170
+ fetchOptions.next = options.next;
171
+ }
172
+ for (let attempt = 0; attempt <= RETRY_CONFIG.maxRetries; attempt++) {
173
+ try {
174
+ // Wait for rate limiter before making request
175
+ await this.rateLimiter.acquire();
176
+ const response = await fetch(url, fetchOptions);
177
+ if (response.ok) {
178
+ return response.json();
179
+ }
180
+ // Return null for 404 (asset not found)
181
+ if (response.status === 404) {
182
+ return null;
183
+ }
184
+ // Handle rate limiting (429) with automatic retry
185
+ if (response.status === 429 && attempt < RETRY_CONFIG.maxRetries) {
186
+ const retryAfter = parseRetryAfter(response);
187
+ const delay = calculateBackoffDelay(attempt, RETRY_CONFIG, retryAfter);
188
+ console.warn(`[Contentful] Rate limited (429), retrying in ${delay}ms (attempt ${attempt + 1}/${RETRY_CONFIG.maxRetries}). ` +
189
+ `Queue: ${this.rateLimiter.getQueueLength()} waiting. ` +
190
+ `API: ${this.isPreview ? 'preview' : 'delivery'}`);
191
+ // Pause the rate limiter - this affects all queued requests
192
+ const pauseSeconds = Math.max(retryAfter ?? 2, 2);
193
+ this.rateLimiter.pause(pauseSeconds);
194
+ // Wait before retrying this request
195
+ await sleep(delay);
196
+ continue;
197
+ }
198
+ // For non-429 errors or final retry attempt, throw the error
199
+ throw await parseErrorResponse(response);
200
+ }
201
+ catch (error) {
202
+ if (error instanceof ContentfulError) {
203
+ throw error;
204
+ }
205
+ console.error('[Contentful] Unexpected error in asset request', error);
206
+ throw new ContentfulError('Unexpected error in asset request', 500);
207
+ }
208
+ }
209
+ throw new ContentfulError('Max retries exceeded', 500);
210
+ }
211
+ }
212
+ /**
213
+ * Creates a Contentful Content Delivery API (CDA) client
214
+ *
215
+ * @param config - Configuration object for the Contentful client
216
+ * @returns Contentful CDA client instance
217
+ *
218
+ * @example
219
+ * ```ts
220
+ * const client = createContentfulClient({
221
+ * spaceId: process.env.CONTENTFUL_SPACE_ID!,
222
+ * accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!,
223
+ * environment: 'master'
224
+ * });
225
+ * ```
226
+ */
227
+ export function createContentfulClient(config) {
228
+ return new ContentfulFetchClient(config, false);
229
+ }
230
+ /**
231
+ * Creates a Contentful Content Preview API (CPA) client
232
+ *
233
+ * @param config - Configuration object for the Contentful preview client
234
+ * @returns Contentful CPA client instance
235
+ *
236
+ * @example
237
+ * ```ts
238
+ * const previewClient = createContentfulPreviewClient({
239
+ * spaceId: process.env.CONTENTFUL_SPACE_ID!,
240
+ * accessToken: process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN!,
241
+ * environment: 'master'
242
+ * });
243
+ * ```
244
+ */
245
+ export function createContentfulPreviewClient(config) {
246
+ return new ContentfulFetchClient(config, true);
247
+ }
248
+ /**
249
+ * Gets the appropriate Contentful client based on preview mode
250
+ *
251
+ * @param config - Configuration for the Contentful client
252
+ * @param preview - Whether to use the preview API
253
+ * @returns Contentful client instance (CDA or CPA)
254
+ *
255
+ * @example
256
+ * ```ts
257
+ * const client = getContentfulClient({
258
+ * spaceId: process.env.CONTENTFUL_SPACE_ID!,
259
+ * accessToken: preview
260
+ * ? process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN!
261
+ * : process.env.CONTENTFUL_ACCESS_TOKEN!,
262
+ * }, preview);
263
+ * ```
264
+ */
265
+ export function getContentfulClient(config, preview) {
266
+ return preview ? createContentfulPreviewClient(config) : createContentfulClient(config);
267
+ }
268
+ //# sourceMappingURL=client.js.map