@se-studio/contentful-rest-api 1.0.152 → 1.0.154
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 +16 -0
- package/dist/api/context.d.ts.map +1 -1
- package/dist/api/context.js +2 -0
- package/dist/api/context.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/tag-type.d.ts +32 -0
- package/dist/api/tag-type.d.ts.map +1 -0
- package/dist/api/tag-type.js +123 -0
- package/dist/api/tag-type.js.map +1 -0
- package/dist/baseTypes/baseTagType.d.ts +45 -0
- package/dist/baseTypes/baseTagType.d.ts.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -6
- package/dist/client.js.map +1 -1
- package/dist/converters/article.d.ts.map +1 -1
- package/dist/converters/article.js +15 -3
- package/dist/converters/article.js.map +1 -1
- package/dist/converters/helpers.d.ts +2 -0
- package/dist/converters/helpers.d.ts.map +1 -1
- package/dist/converters/helpers.js.map +1 -1
- package/dist/converters/iconCollector.js +3 -3
- package/dist/converters/iconCollector.js.map +1 -1
- package/dist/converters/index.d.ts +1 -0
- package/dist/converters/index.d.ts.map +1 -1
- package/dist/converters/index.js +1 -0
- package/dist/converters/index.js.map +1 -1
- package/dist/converters/person.d.ts.map +1 -1
- package/dist/converters/person.js +10 -2
- package/dist/converters/person.js.map +1 -1
- package/dist/converters/resolver.d.ts.map +1 -1
- package/dist/converters/resolver.js +6 -5
- package/dist/converters/resolver.js.map +1 -1
- package/dist/converters/svgProcessor.js +2 -2
- package/dist/converters/svgProcessor.js.map +1 -1
- package/dist/converters/tag.d.ts.map +1 -1
- package/dist/converters/tag.js +40 -16
- package/dist/converters/tag.js.map +1 -1
- package/dist/converters/tagType.d.ts +8 -0
- package/dist/converters/tagType.d.ts.map +1 -0
- package/dist/converters/tagType.js +26 -0
- package/dist/converters/tagType.js.map +1 -0
- package/dist/converters/videoEnricher.d.ts.map +1 -1
- package/dist/converters/videoEnricher.js +6 -3
- package/dist/converters/videoEnricher.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/revalidation/route.js +8 -4
- package/dist/revalidation/route.js.map +1 -1
- package/dist/revalidation/server-utils.js +4 -2
- package/dist/revalidation/server-utils.js.map +1 -1
- package/docs/llms.md +185 -0
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/revalidation/route.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAGL,mBAAmB,EACnB,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE5C,0BAA0B;AAC1B,KAAK,UAAU,YAAY,CAAC,OAAkB,EAAE,OAAgB;IAC9D,OAAO,MAAM,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AAClE,CAAC;AAED,wBAAwB;AACxB,KAAK,UAAU,WAAW,CAAC,OAAiB,EAAE,OAAgB;IAC5D,OAAO,MAAM,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,0BAA0B;AAC1B,KAAK,UAAU,YAAY,CAAC,OAAiB,EAAE,OAAgB;IAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../src/revalidation/route.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,8 @@ export async function revalidateTags(tags, reason) {
|
|
|
13
13
|
// Add a delay to prevent overwhelming the cache system
|
|
14
14
|
await delay(500);
|
|
15
15
|
for (const tag of tags) {
|
|
16
|
-
|
|
16
|
+
if (process.env.LOG_CMS)
|
|
17
|
+
console.log(`Revalidating tag: ${tag} - ${reason}`);
|
|
17
18
|
revalidateTag(tag);
|
|
18
19
|
}
|
|
19
20
|
}
|
|
@@ -28,7 +29,8 @@ export async function revalidateTags(tags, reason) {
|
|
|
28
29
|
*/
|
|
29
30
|
export async function revalidateSingleTag(tag, reason) {
|
|
30
31
|
await delay(500);
|
|
31
|
-
|
|
32
|
+
if (process.env.LOG_CMS)
|
|
33
|
+
console.log(`Revalidating single tag: ${tag} - ${reason}`);
|
|
32
34
|
revalidateTag(tag);
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-utils.js","sourceRoot":"","sources":["../../src/revalidation/server-utils.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,MAAc;IACjE,uDAAuD;IACvD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"server-utils.js","sourceRoot":"","sources":["../../src/revalidation/server-utils.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,MAAc;IACjE,uDAAuD;IACvD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;QAC7E,aAAa,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,MAAc;IACnE,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,MAAM,MAAM,EAAE,CAAC,CAAC;IACpF,aAAa,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;;;GAGG;AACH,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/docs/llms.md
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# @se-studio/contentful-rest-api — LLM Reference
|
|
2
|
+
|
|
3
|
+
Type-safe Contentful REST API client for Next.js App Router applications. Handles fetching, caching, rate limiting, and content conversion.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
import { coreGetContentfulConfig } from '@se-studio/contentful-rest-api';
|
|
9
|
+
|
|
10
|
+
// Reads CONTENTFUL_SPACE_ID, CONTENTFUL_ACCESS_TOKEN, CONTENTFUL_ENVIRONMENT from env
|
|
11
|
+
const config = coreGetContentfulConfig();
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Or build manually:
|
|
15
|
+
```ts
|
|
16
|
+
import type { ContentfulConfig } from '@se-studio/contentful-rest-api';
|
|
17
|
+
|
|
18
|
+
const config: ContentfulConfig = {
|
|
19
|
+
spaceId: process.env.CONTENTFUL_SPACE_ID!,
|
|
20
|
+
accessToken: process.env.CONTENTFUL_ACCESS_TOKEN!, // delivery token
|
|
21
|
+
previewAccessToken: process.env.CONTENTFUL_PREVIEW_ACCESS_TOKEN, // optional
|
|
22
|
+
environment: process.env.CONTENTFUL_ENVIRONMENT ?? 'master',
|
|
23
|
+
};
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Primary Fetch Functions
|
|
27
|
+
|
|
28
|
+
All functions share the signature `fn(config, identifier, options?)`.
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import {
|
|
32
|
+
contentfulPageRest,
|
|
33
|
+
contentfulArticleRest,
|
|
34
|
+
contentfulArticleTypeRest,
|
|
35
|
+
contentfulNavigationRest, // via contentfulAnyEntryRest
|
|
36
|
+
contentfulTagRest,
|
|
37
|
+
contentfulTagTypeRest,
|
|
38
|
+
contentfulPersonRest,
|
|
39
|
+
contentfulBannerRest,
|
|
40
|
+
contentfulTemplateRest,
|
|
41
|
+
contentfulComponentRest,
|
|
42
|
+
contentfulCustomTypeRest,
|
|
43
|
+
contentfulAssetRest,
|
|
44
|
+
contentfulAnyEntryRest, // generic fallback by entry ID
|
|
45
|
+
} from '@se-studio/contentful-rest-api';
|
|
46
|
+
|
|
47
|
+
// Fetch a page by slug
|
|
48
|
+
const page = await contentfulPageRest(config, 'home', {
|
|
49
|
+
preview: false,
|
|
50
|
+
cache: { tags: ['page#home'], revalidate: 3600 },
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Fetch an article by slug
|
|
54
|
+
const article = await contentfulArticleRest(config, 'my-article-slug', {
|
|
55
|
+
cache: { tags: ['article#my-article-slug'], revalidate: 3600 },
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// Fetch all links (for sitemaps / related content)
|
|
59
|
+
const allPageLinks = await contentfulAllPageLinks(config);
|
|
60
|
+
const allArticleLinks = await contentfulAllArticleLinks(config);
|
|
61
|
+
const allTagLinks = await contentfulAllTagLinks(config);
|
|
62
|
+
const allPersonLinks = await contentfulAllPersonLinks(config);
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Sitemap Helpers
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
import {
|
|
69
|
+
contentfulPageSitemapEntries,
|
|
70
|
+
contentfulArticleSitemapEntries,
|
|
71
|
+
contentfulArticleTypeSitemapEntries,
|
|
72
|
+
contentfulTagSitemapEntries,
|
|
73
|
+
contentfulPersonSitemapEntries,
|
|
74
|
+
getAllSitemapEntries,
|
|
75
|
+
createSitemapProvider,
|
|
76
|
+
} from '@se-studio/contentful-rest-api';
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## FetchOptions
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
interface FetchOptions {
|
|
83
|
+
preview?: boolean; // use preview API (default: false)
|
|
84
|
+
locale?: string; // Contentful locale (default: 'en-US')
|
|
85
|
+
cache?: {
|
|
86
|
+
tags?: string[]; // Next.js cache tags for revalidation
|
|
87
|
+
revalidate?: number; // seconds; 0 = no cache
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Cache Tags (for revalidation)
|
|
93
|
+
|
|
94
|
+
Use these tag helpers to generate consistent cache tag strings:
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
import {
|
|
98
|
+
pageTag, // pageTag('home') → 'page#home'
|
|
99
|
+
articleTag, // articleTag('slug') → 'article#slug'
|
|
100
|
+
articleTypeTag, // articleTypeTag('news') → 'article-type#news'
|
|
101
|
+
tagTag, // tagTag('slug') → 'tag#slug'
|
|
102
|
+
personTag,
|
|
103
|
+
pageVariantTag,
|
|
104
|
+
locationTag,
|
|
105
|
+
templateTag,
|
|
106
|
+
customTypeTag,
|
|
107
|
+
assetTag,
|
|
108
|
+
// Constants
|
|
109
|
+
PageTag, ArticleTag, NavigationTag, BannerTag, GlobalTag, AllTags,
|
|
110
|
+
} from '@se-studio/contentful-rest-api';
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Converter Pattern
|
|
114
|
+
|
|
115
|
+
Used to extend how Contentful entries are transformed into typed models. You typically call `createBaseConverterContext()` and pass it via `buildFetchOptions`.
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
import {
|
|
119
|
+
createBaseConverterContext,
|
|
120
|
+
buildFetchOptions,
|
|
121
|
+
basePageConverter,
|
|
122
|
+
baseComponentConverter,
|
|
123
|
+
baseCollectionConverter,
|
|
124
|
+
} from '@se-studio/contentful-rest-api';
|
|
125
|
+
|
|
126
|
+
const context = createBaseConverterContext();
|
|
127
|
+
// extend context.resolvers if you need custom content types
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Base converters available:
|
|
131
|
+
- `basePageConverter` — converts page entries
|
|
132
|
+
- `baseComponentConverter` — converts component entries
|
|
133
|
+
- `baseCollectionConverter` — converts collection entries
|
|
134
|
+
- `baseExternalComponentConverter`
|
|
135
|
+
- `baseArticleConverter`, `baseArticleTypeConverter`
|
|
136
|
+
- `basePersonConverter`
|
|
137
|
+
- `baseTagConverter`, `baseTagTypeConverter`
|
|
138
|
+
- `baseBannerConverter`
|
|
139
|
+
|
|
140
|
+
## Preview
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
import { getPreviewEntryInfo } from '@se-studio/contentful-rest-api';
|
|
144
|
+
|
|
145
|
+
// Returns entry ID, content type, and field info for Contentful live preview
|
|
146
|
+
const info = await getPreviewEntryInfo(config, entryId);
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Error Handling
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
import {
|
|
153
|
+
isContentfulError,
|
|
154
|
+
isRateLimitError,
|
|
155
|
+
EntryNotFoundError,
|
|
156
|
+
AuthenticationError,
|
|
157
|
+
RateLimitError,
|
|
158
|
+
withRetry,
|
|
159
|
+
} from '@se-studio/contentful-rest-api';
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Rich Text
|
|
163
|
+
|
|
164
|
+
```ts
|
|
165
|
+
import type { IContentfulRichText } from '@se-studio/contentful-rest-api';
|
|
166
|
+
// Use with core-ui's RTF component
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Utility Functions
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
import {
|
|
173
|
+
notEmpty, // array filter: arr.filter(notEmpty)
|
|
174
|
+
arrayOrUndefined, // returns array or undefined if empty
|
|
175
|
+
safeDate, // parse date string safely
|
|
176
|
+
isValidDate,
|
|
177
|
+
} from '@se-studio/contentful-rest-api';
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Important Constraints
|
|
181
|
+
|
|
182
|
+
- Always supply `spaceId`, `accessToken`, and `environment`.
|
|
183
|
+
- For Next.js: pass `cache.tags` and `cache.revalidate` so pages can be revalidated via Contentful webhooks.
|
|
184
|
+
- For preview mode, also supply `previewAccessToken` and pass `{ preview: true }` in options.
|
|
185
|
+
- `contentfulNavigationRest` is not a direct export — navigation is fetched via `contentfulAnyEntryRest` or via the app's `cms-server`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@se-studio/contentful-rest-api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.154",
|
|
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",
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
25
25
|
"dist",
|
|
26
|
-
"*.md"
|
|
26
|
+
"*.md",
|
|
27
|
+
"docs"
|
|
27
28
|
],
|
|
28
29
|
"keywords": [
|
|
29
30
|
"contentful",
|
|
@@ -50,7 +51,7 @@
|
|
|
50
51
|
"@contentful/rich-text-types": "^17.2.7",
|
|
51
52
|
"contentful": "^11.12.2",
|
|
52
53
|
"server-only": "0.0.1",
|
|
53
|
-
"@se-studio/core-data-types": "1.0.
|
|
54
|
+
"@se-studio/core-data-types": "1.0.147"
|
|
54
55
|
},
|
|
55
56
|
"peerDependencies": {
|
|
56
57
|
"next": ">=15.5.0"
|