@se-studio/contentful-rest-api 1.9.0 → 1.11.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.
- package/CHANGELOG.md +21 -0
- package/README.md +32 -1
- package/dist/api/article-type.js +7 -7
- package/dist/api/article.js +1 -1
- package/dist/api/asset.js +2 -2
- package/dist/api/banner.js +5 -5
- package/dist/api/breadcrumb.js +1 -1
- package/dist/api/componentPreview.js +7 -7
- package/dist/api/context.js +14 -14
- package/dist/api/custom-type.js +1 -1
- package/dist/api/helpers.d.ts +2 -0
- package/dist/api/helpers.d.ts.map +1 -1
- package/dist/api/helpers.js +25 -10
- package/dist/api/helpers.js.map +1 -1
- package/dist/api/index.d.ts +2 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +22 -21
- package/dist/api/index.js.map +1 -1
- package/dist/api/links.d.ts +6 -0
- package/dist/api/links.d.ts.map +1 -1
- package/dist/api/links.js +60 -40
- package/dist/api/links.js.map +1 -1
- package/dist/api/listing-fetch-params.d.ts +25 -2
- package/dist/api/listing-fetch-params.d.ts.map +1 -1
- package/dist/api/listing-fetch-params.js +5 -2
- package/dist/api/listing-fetch-params.js.map +1 -1
- package/dist/api/navigation.d.ts +9 -0
- package/dist/api/navigation.d.ts.map +1 -0
- package/dist/api/navigation.js +17 -0
- package/dist/api/navigation.js.map +1 -0
- package/dist/api/page.js +2 -2
- package/dist/api/person.js +7 -7
- package/dist/api/preview.js +1 -1
- package/dist/api/redirects.js +5 -5
- package/dist/api/server-asset.js +1 -1
- package/dist/api/sitemap.js +1 -1
- package/dist/api/tag-type.js +6 -6
- package/dist/api/tag.js +7 -7
- package/dist/api/template.js +4 -4
- package/dist/client.js +2 -2
- package/dist/cms-integrity.d.ts +10 -0
- package/dist/cms-integrity.d.ts.map +1 -0
- package/dist/cms-integrity.js +7 -0
- package/dist/cms-integrity.js.map +1 -0
- package/dist/converters/animationEnricher.js +1 -1
- package/dist/converters/article.js +7 -7
- package/dist/converters/asset.js +1 -1
- package/dist/converters/banner.js +2 -2
- package/dist/converters/collection.js +3 -3
- package/dist/converters/component.js +4 -4
- package/dist/converters/customType.js +5 -5
- package/dist/converters/enrichAssets.js +4 -4
- package/dist/converters/externalComponent.js +3 -3
- package/dist/converters/helpers.js +1 -1
- package/dist/converters/htmlComponent.js +1 -1
- package/dist/converters/iconCollector.js +1 -1
- package/dist/converters/index.js +12 -12
- package/dist/converters/link.js +3 -3
- package/dist/converters/navigationItem.js +3 -3
- package/dist/converters/page.js +6 -6
- package/dist/converters/pageVariantMerge.js +6 -6
- package/dist/converters/person.js +5 -5
- package/dist/converters/pictureBlurEnricher.js +1 -1
- package/dist/converters/redirect.js +1 -1
- package/dist/converters/resolver.js +4 -4
- package/dist/converters/tag.js +6 -6
- package/dist/converters/tagType.js +3 -3
- package/dist/converters/template.js +2 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/navigation/assembly.d.ts +8 -0
- package/dist/navigation/assembly.d.ts.map +1 -0
- package/dist/navigation/assembly.js +115 -0
- package/dist/navigation/assembly.js.map +1 -0
- package/dist/navigation/cacheOptions.d.ts +15 -0
- package/dist/navigation/cacheOptions.d.ts.map +1 -0
- package/dist/navigation/cacheOptions.js +38 -0
- package/dist/navigation/cacheOptions.js.map +1 -0
- package/dist/navigation/linkIndex.d.ts +9 -0
- package/dist/navigation/linkIndex.d.ts.map +1 -0
- package/dist/navigation/linkIndex.js +90 -0
- package/dist/navigation/linkIndex.js.map +1 -0
- package/dist/navigation/registry.d.ts +14 -0
- package/dist/navigation/registry.d.ts.map +1 -0
- package/dist/navigation/registry.js +113 -0
- package/dist/navigation/registry.js.map +1 -0
- package/dist/navigation/types.d.ts +45 -0
- package/dist/navigation/types.d.ts.map +1 -0
- package/dist/navigation/types.js +2 -0
- package/dist/navigation/types.js.map +1 -0
- package/dist/revalidation/handlers.d.ts.map +1 -1
- package/dist/revalidation/handlers.js +18 -3
- package/dist/revalidation/handlers.js.map +1 -1
- package/dist/revalidation/index.d.ts +1 -0
- package/dist/revalidation/index.d.ts.map +1 -1
- package/dist/revalidation/index.js +3 -2
- package/dist/revalidation/index.js.map +1 -1
- package/dist/revalidation/nextjs-route.js +1 -1
- package/dist/revalidation/route.js +3 -3
- package/dist/revalidation/tags.d.ts +9 -0
- package/dist/revalidation/tags.d.ts.map +1 -1
- package/dist/revalidation/tags.js +15 -1
- package/dist/revalidation/tags.js.map +1 -1
- package/dist/revalidation/utils.d.ts.map +1 -1
- package/dist/revalidation/utils.js +5 -1
- package/dist/revalidation/utils.js.map +1 -1
- package/dist/revalidation/webhook-content-types.d.ts +12 -0
- package/dist/revalidation/webhook-content-types.d.ts.map +1 -0
- package/dist/revalidation/webhook-content-types.js +27 -0
- package/dist/revalidation/webhook-content-types.js.map +1 -0
- package/dist/routing/index.d.ts +2 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +2 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/marketing-site-url-calculators.d.ts +21 -0
- package/dist/routing/marketing-site-url-calculators.d.ts.map +1 -0
- package/dist/routing/marketing-site-url-calculators.js +43 -0
- package/dist/routing/marketing-site-url-calculators.js.map +1 -0
- package/dist/server.js +5 -5
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/index.js +5 -5
- package/dist/utils/retry.js +1 -1
- package/docs/llms.md +29 -1
- package/package.json +15 -5
package/dist/server.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
2
|
// Download handler
|
|
3
|
-
export { createDownloadHandler, } from './api/server-asset';
|
|
4
|
-
export { contentTypeHandlers, revalidateAsset, revalidateDeletedAsset, revalidateDeletedEntry, revalidateEntry, } from './revalidation/handlers';
|
|
3
|
+
export { createDownloadHandler, } from './api/server-asset.js';
|
|
4
|
+
export { contentTypeHandlers, revalidateAsset, revalidateDeletedAsset, revalidateDeletedEntry, revalidateEntry, } from './revalidation/handlers.js';
|
|
5
5
|
// Revalidation handlers and routes
|
|
6
|
-
export { createRevalidationHandler, } from './revalidation/nextjs-route';
|
|
7
|
-
export { handleRevalidation } from './revalidation/route';
|
|
6
|
+
export { createRevalidationHandler, } from './revalidation/nextjs-route.js';
|
|
7
|
+
export { handleRevalidation } from './revalidation/route.js';
|
|
8
8
|
// Revalidation utilities
|
|
9
|
-
export { revalidateSingleTag, revalidateTags } from './revalidation/server-utils';
|
|
9
|
+
export { revalidateSingleTag, revalidateTags } from './revalidation/server-utils.js';
|
|
10
10
|
//# sourceMappingURL=server.js.map
|
package/dist/types.d.ts
CHANGED
|
@@ -54,6 +54,10 @@ export interface FetchOptions {
|
|
|
54
54
|
fetchProfile?: CmsFetchProfile;
|
|
55
55
|
/** Pagination page size for `contentfulAllArticleLinks`. Default 100. */
|
|
56
56
|
pageSize?: number;
|
|
57
|
+
/**
|
|
58
|
+
* When true, skip video/blur asset enrichment (for Node smoke integrity checks outside Next.js).
|
|
59
|
+
*/
|
|
60
|
+
skipAssetEnrichment?: boolean;
|
|
57
61
|
}
|
|
58
62
|
/** CMS fetch profile: full page render vs lightweight listing/metadata. */
|
|
59
63
|
export type CmsFetchProfile = 'page' | 'listing';
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC;IACnC,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,0BAA0B;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC;;;OAGG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,CAAC;IACnC,IAAI,CAAC,EAAE;QACL,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,0BAA0B;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC;;;OAGG;IACH,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,2EAA2E;AAC3E,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,0BAA0B;IAC1B,IAAI,EAAE,CAAC,CAAC;IACR,iDAAiD;IACjD,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Utility functions for error handling, retry logic, and rate limiting
|
|
3
3
|
*/
|
|
4
|
-
export { arrayOrUndefined, notEmpty } from './arrayUtils';
|
|
5
|
-
export { isValidDate, safeDate } from './dateUtils';
|
|
6
|
-
export { AuthenticationError, ContentfulError, EntryNotFoundError, getRetryAfter, isContentfulError, isRateLimitError, isRetryableError, RateLimitError, ValidationError, } from './errors';
|
|
7
|
-
export { calculateBackoffDelay, getRateLimiter, getRateLimitPauseSeconds, getRetryConfig, RateLimiter, withRetry, } from './retry';
|
|
8
|
-
export { filterVisibleTags, getPrimaryTag, isTagShowEnabled, isTagVisible, } from './tags';
|
|
4
|
+
export { arrayOrUndefined, notEmpty } from './arrayUtils.js';
|
|
5
|
+
export { isValidDate, safeDate } from './dateUtils.js';
|
|
6
|
+
export { AuthenticationError, ContentfulError, EntryNotFoundError, getRetryAfter, isContentfulError, isRateLimitError, isRetryableError, RateLimitError, ValidationError, } from './errors.js';
|
|
7
|
+
export { calculateBackoffDelay, getRateLimiter, getRateLimitPauseSeconds, getRetryConfig, RateLimiter, withRetry, } from './retry.js';
|
|
8
|
+
export { filterVisibleTags, getPrimaryTag, isTagShowEnabled, isTagVisible, } from './tags.js';
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/retry.js
CHANGED
package/docs/llms.md
CHANGED
|
@@ -63,6 +63,30 @@ 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. **Use `getNavigation` from `createAppHelpers` only** — registry/link-index fetchers are not exported.
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
import { createAppHelpers } from '@se-studio/core-ui';
|
|
72
|
+
|
|
73
|
+
const { getNavigation } = createAppHelpers({ /* converterContext, getConfig, buildOptions, buildInformation */ });
|
|
74
|
+
const menu = await getNavigation(mainNavEntryId);
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Caching (applied inside `getNavigation` via `buildFlatNavigationCacheOptions`):
|
|
78
|
+
|
|
79
|
+
- **Tags (primary):** `FLAT_NAV_CACHE_TAGS` — collection tags for navigation, navigationItem, page, article, tag, **tagType**, **link**, person, etc.
|
|
80
|
+
- **Revalidate (fallback):** `FLAT_NAV_TIME_REVALIDATE_SECONDS` (3600) when webhooks miss; override with `options.next.revalidate`.
|
|
81
|
+
|
|
82
|
+
Unresolved internal targets → blank link; set `LOG_CMS=1` to warn.
|
|
83
|
+
|
|
84
|
+
### Golden listing fields
|
|
85
|
+
|
|
86
|
+
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).
|
|
87
|
+
|
|
88
|
+
`tagType` links: `TAG_TYPE_LINK_FIELDS` includes `fields.slug`; spaces without slug fall back to `TAG_TYPE_MINIMAL_FIELDS` on 422.
|
|
89
|
+
|
|
66
90
|
## Related Articles Filtering
|
|
67
91
|
|
|
68
92
|
```ts
|
|
@@ -130,10 +154,14 @@ import {
|
|
|
130
154
|
customTypeTag,
|
|
131
155
|
assetTag,
|
|
132
156
|
// Constants
|
|
133
|
-
PageTag, ArticleTag, NavigationTag, BannerTag, GlobalTag, AllTags,
|
|
157
|
+
PageTag, ArticleTag, TagTypeTag, LinkTag, NavigationTag, BannerTag, GlobalTag, AllTags,
|
|
158
|
+
FLAT_NAV_CACHE_TAGS, FLAT_NAV_TIME_REVALIDATE_SECONDS, buildFlatNavigationCacheOptions,
|
|
159
|
+
REVALIDATION_WEBHOOK_ENTRY_CONTENT_TYPES, REVALIDATION_WEBHOOK_ENTRY_CONTENT_TYPES_CSV,
|
|
134
160
|
} from '@se-studio/contentful-rest-api';
|
|
135
161
|
```
|
|
136
162
|
|
|
163
|
+
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`.
|
|
164
|
+
|
|
137
165
|
## Converter Pattern
|
|
138
166
|
|
|
139
167
|
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.
|
|
3
|
+
"version": "1.11.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",
|
|
@@ -14,11 +14,21 @@
|
|
|
14
14
|
"exports": {
|
|
15
15
|
".": {
|
|
16
16
|
"types": "./dist/index.d.ts",
|
|
17
|
-
"import": "./dist/index.js"
|
|
17
|
+
"import": "./dist/index.js",
|
|
18
|
+
"require": "./dist/index.js",
|
|
19
|
+
"default": "./dist/index.js"
|
|
18
20
|
},
|
|
19
21
|
"./server": {
|
|
20
22
|
"types": "./dist/server.d.ts",
|
|
21
|
-
"import": "./dist/server.js"
|
|
23
|
+
"import": "./dist/server.js",
|
|
24
|
+
"require": "./dist/server.js",
|
|
25
|
+
"default": "./dist/server.js"
|
|
26
|
+
},
|
|
27
|
+
"./cms-integrity": {
|
|
28
|
+
"types": "./dist/cms-integrity.d.ts",
|
|
29
|
+
"import": "./dist/cms-integrity.js",
|
|
30
|
+
"require": "./dist/cms-integrity.js",
|
|
31
|
+
"default": "./dist/cms-integrity.js"
|
|
22
32
|
}
|
|
23
33
|
},
|
|
24
34
|
"files": [
|
|
@@ -51,7 +61,7 @@
|
|
|
51
61
|
"@contentful/rich-text-types": "^17.2.7",
|
|
52
62
|
"contentful": "^11.12.5",
|
|
53
63
|
"server-only": "0.0.1",
|
|
54
|
-
"@se-studio/core-data-types": "1.5.
|
|
64
|
+
"@se-studio/core-data-types": "1.5.1"
|
|
55
65
|
},
|
|
56
66
|
"peerDependencies": {
|
|
57
67
|
"next": ">=15.5.0 <16"
|
|
@@ -64,7 +74,7 @@
|
|
|
64
74
|
"vitest": "^4.1.9"
|
|
65
75
|
},
|
|
66
76
|
"scripts": {
|
|
67
|
-
"build": "tsc --project tsconfig.build.json",
|
|
77
|
+
"build": "tsc --project tsconfig.build.json && node scripts/fix-esm-imports.mjs",
|
|
68
78
|
"dev": "tsc --project tsconfig.build.json --watch",
|
|
69
79
|
"type-check": "tsc --noEmit",
|
|
70
80
|
"lint": "biome lint .",
|