@se-studio/contentful-rest-api 1.10.0 → 1.12.0

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 (109) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +41 -1
  3. package/dist/api/article-type.d.ts.map +1 -1
  4. package/dist/api/article-type.js +4 -6
  5. package/dist/api/article-type.js.map +1 -1
  6. package/dist/api/helpers.d.ts +2 -0
  7. package/dist/api/helpers.d.ts.map +1 -1
  8. package/dist/api/helpers.js +16 -13
  9. package/dist/api/helpers.js.map +1 -1
  10. package/dist/api/index.d.ts +2 -1
  11. package/dist/api/index.d.ts.map +1 -1
  12. package/dist/api/index.js +2 -1
  13. package/dist/api/index.js.map +1 -1
  14. package/dist/api/links.d.ts.map +1 -1
  15. package/dist/api/links.js +30 -31
  16. package/dist/api/links.js.map +1 -1
  17. package/dist/api/listing-fetch-params.d.ts +30 -4
  18. package/dist/api/listing-fetch-params.d.ts.map +1 -1
  19. package/dist/api/listing-fetch-params.js +21 -4
  20. package/dist/api/listing-fetch-params.js.map +1 -1
  21. package/dist/api/navigation.d.ts +9 -0
  22. package/dist/api/navigation.d.ts.map +1 -0
  23. package/dist/api/navigation.js +17 -0
  24. package/dist/api/navigation.js.map +1 -0
  25. package/dist/api/person.d.ts.map +1 -1
  26. package/dist/api/person.js +4 -6
  27. package/dist/api/person.js.map +1 -1
  28. package/dist/api/tag.d.ts.map +1 -1
  29. package/dist/api/tag.js +4 -6
  30. package/dist/api/tag.js.map +1 -1
  31. package/dist/api/template.d.ts.map +1 -1
  32. package/dist/api/template.js +3 -4
  33. package/dist/api/template.js.map +1 -1
  34. package/dist/converters/article.d.ts.map +1 -1
  35. package/dist/converters/article.js +11 -15
  36. package/dist/converters/article.js.map +1 -1
  37. package/dist/converters/customType.d.ts.map +1 -1
  38. package/dist/converters/customType.js +3 -11
  39. package/dist/converters/customType.js.map +1 -1
  40. package/dist/converters/index.d.ts +1 -1
  41. package/dist/converters/index.d.ts.map +1 -1
  42. package/dist/converters/index.js +1 -1
  43. package/dist/converters/index.js.map +1 -1
  44. package/dist/converters/navigationItem.d.ts +6 -0
  45. package/dist/converters/navigationItem.d.ts.map +1 -1
  46. package/dist/converters/navigationItem.js +24 -1
  47. package/dist/converters/navigationItem.js.map +1 -1
  48. package/dist/converters/page.js +3 -3
  49. package/dist/converters/page.js.map +1 -1
  50. package/dist/converters/pageVariantMerge.js +3 -3
  51. package/dist/converters/pageVariantMerge.js.map +1 -1
  52. package/dist/converters/person.js +3 -3
  53. package/dist/converters/person.js.map +1 -1
  54. package/dist/converters/tag.d.ts.map +1 -1
  55. package/dist/converters/tag.js +15 -19
  56. package/dist/converters/tag.js.map +1 -1
  57. package/dist/converters/template.d.ts.map +1 -1
  58. package/dist/converters/template.js +3 -4
  59. package/dist/converters/template.js.map +1 -1
  60. package/dist/index.d.ts +4 -4
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +6 -6
  63. package/dist/index.js.map +1 -1
  64. package/dist/navigation/assembly.d.ts +8 -0
  65. package/dist/navigation/assembly.d.ts.map +1 -0
  66. package/dist/navigation/assembly.js +115 -0
  67. package/dist/navigation/assembly.js.map +1 -0
  68. package/dist/navigation/cacheOptions.d.ts +15 -0
  69. package/dist/navigation/cacheOptions.d.ts.map +1 -0
  70. package/dist/navigation/cacheOptions.js +38 -0
  71. package/dist/navigation/cacheOptions.js.map +1 -0
  72. package/dist/navigation/enrichModelNavigation.d.ts +17 -0
  73. package/dist/navigation/enrichModelNavigation.d.ts.map +1 -0
  74. package/dist/navigation/enrichModelNavigation.js +47 -0
  75. package/dist/navigation/enrichModelNavigation.js.map +1 -0
  76. package/dist/navigation/linkIndex.d.ts +9 -0
  77. package/dist/navigation/linkIndex.d.ts.map +1 -0
  78. package/dist/navigation/linkIndex.js +90 -0
  79. package/dist/navigation/linkIndex.js.map +1 -0
  80. package/dist/navigation/registry.d.ts +14 -0
  81. package/dist/navigation/registry.d.ts.map +1 -0
  82. package/dist/navigation/registry.js +113 -0
  83. package/dist/navigation/registry.js.map +1 -0
  84. package/dist/navigation/types.d.ts +45 -0
  85. package/dist/navigation/types.d.ts.map +1 -0
  86. package/dist/navigation/types.js +2 -0
  87. package/dist/navigation/types.js.map +1 -0
  88. package/dist/revalidation/handlers.d.ts.map +1 -1
  89. package/dist/revalidation/handlers.js +16 -1
  90. package/dist/revalidation/handlers.js.map +1 -1
  91. package/dist/revalidation/index.d.ts +1 -0
  92. package/dist/revalidation/index.d.ts.map +1 -1
  93. package/dist/revalidation/index.js +1 -0
  94. package/dist/revalidation/index.js.map +1 -1
  95. package/dist/revalidation/tags.d.ts +9 -0
  96. package/dist/revalidation/tags.d.ts.map +1 -1
  97. package/dist/revalidation/tags.js +15 -1
  98. package/dist/revalidation/tags.js.map +1 -1
  99. package/dist/revalidation/utils.d.ts.map +1 -1
  100. package/dist/revalidation/utils.js +5 -1
  101. package/dist/revalidation/utils.js.map +1 -1
  102. package/dist/revalidation/webhook-content-types.d.ts +12 -0
  103. package/dist/revalidation/webhook-content-types.d.ts.map +1 -0
  104. package/dist/revalidation/webhook-content-types.js +27 -0
  105. package/dist/revalidation/webhook-content-types.js.map +1 -0
  106. package/dist/types.d.ts +7 -0
  107. package/dist/types.d.ts.map +1 -1
  108. package/docs/llms.md +35 -1
  109. package/package.json +1 -1
package/docs/llms.md CHANGED
@@ -63,6 +63,36 @@ const allPersonLinks = await contentfulAllPersonLinks(config);
63
63
  // CmsResponse<IPersonLink[]> — each link includes resolved bio (IResolvedRichText) when set in CMS
64
64
  ```
65
65
 
66
+ ## Flat navigation
67
+
68
+ Assemble menus without Contentful include depth.
69
+
70
+ **Page renders (preferred):** `navigationResolution: 'flat'` on `FetchOptions` — converters stub nav root ids; post-convert step calls registry + link index and rebuilds `model.menu` / `model.footer` / `model.icons`. Set in app `buildOptions`. Default is `'bundled'`.
71
+
72
+ ```ts
73
+ buildFetchOptions({ navigationResolution: 'flat', ...options }, preview);
74
+ ```
75
+
76
+ **Ad hoc:** `getNavigation` from `createAppHelpers` only — registry/link-index fetchers are not exported.
77
+
78
+ ```ts
79
+ const { getNavigation } = createAppHelpers({ /* ... */ });
80
+ const menu = await getNavigation(mainNavEntryId);
81
+ ```
82
+
83
+ Caching (applied inside `getNavigation` via `buildFlatNavigationCacheOptions`):
84
+
85
+ - **Tags (primary):** `FLAT_NAV_CACHE_TAGS` — collection tags for navigation, navigationItem, page, article, tag, **tagType**, **link**, person, etc.
86
+ - **Revalidate (fallback):** `FLAT_NAV_TIME_REVALIDATE_SECONDS` (3600) when webhooks miss; override with `options.next.revalidate`.
87
+
88
+ Unresolved internal targets → blank link; set `LOG_CMS=1` to warn.
89
+
90
+ ### Golden listing fields
91
+
92
+ Defined in `listing-fetch-params.ts` (table in file header). Bulk link/index fetches use these `select` lists. Flat-nav **registry** fetches omit `select` (schema-tolerant per space).
93
+
94
+ `tagType` links: `TAG_TYPE_LINK_FIELDS` includes `fields.slug`; spaces without slug fall back to `TAG_TYPE_MINIMAL_FIELDS` on 422.
95
+
66
96
  ## Related Articles Filtering
67
97
 
68
98
  ```ts
@@ -130,10 +160,14 @@ import {
130
160
  customTypeTag,
131
161
  assetTag,
132
162
  // Constants
133
- PageTag, ArticleTag, NavigationTag, BannerTag, GlobalTag, AllTags,
163
+ PageTag, ArticleTag, TagTypeTag, LinkTag, NavigationTag, BannerTag, GlobalTag, AllTags,
164
+ FLAT_NAV_CACHE_TAGS, FLAT_NAV_TIME_REVALIDATE_SECONDS, buildFlatNavigationCacheOptions,
165
+ REVALIDATION_WEBHOOK_ENTRY_CONTENT_TYPES, REVALIDATION_WEBHOOK_ENTRY_CONTENT_TYPES_CSV,
134
166
  } from '@se-studio/contentful-rest-api';
135
167
  ```
136
168
 
169
+ Production published-entry webhook filter: `REVALIDATION_WEBHOOK_ENTRY_CONTENT_TYPES_CSV` (includes `navigation`, `navigationItem`, `tagType`, `link` for flat nav). See `docs/CONTENTFUL_WEBHOOK_REVALIDATION.md`.
170
+
137
171
  ## Converter Pattern
138
172
 
139
173
  Used to extend how Contentful entries are transformed into typed models. You typically call `createBaseConverterContext()` and pass it via `buildFetchOptions`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/contentful-rest-api",
3
- "version": "1.10.0",
3
+ "version": "1.12.0",
4
4
  "description": "Type-safe Contentful REST API client with caching and rate limiting for Next.js applications",
5
5
  "repository": {
6
6
  "type": "git",