@se-studio/contentful-rest-api 1.4.0 → 1.5.1

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 CHANGED
@@ -1,5 +1,37 @@
1
1
  # @se-studio/contentful-rest-api
2
2
 
3
+ ## 1.5.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Bulk version bump: patch for all packages
8
+ - Updated dependencies
9
+ - @se-studio/core-data-types@1.4.1
10
+
11
+ ## 1.5.0
12
+
13
+ ### Minor Changes
14
+
15
+ - Exclude redirect sources from sitemaps + robust protection against self and circular redirects.
16
+
17
+ - `buildRedirectMap` now normalizes internal paths (leading + trailing `/` to match urlCalculators + sitemap conventions) and reliably drops self-redirects (A → A). It also detects longer redirect cycles (A → B → A, etc.), drops the participating `from` rules from the baked map, and emits a `console.warn` during construction (visible in build/generate scripts).
18
+ - New exported utility: `filterSitemapEntriesExcludingRedirects(entries, redirectMap)`. Works on any `{ url: string }[]` (SitemapEntry, ISitemapEntry, etc.).
19
+ - The standard marketing site sitemap helper now accepts an optional `redirectMap` in `getSitemapEntries({ includeUnindexed, redirectMap })`. When provided, any URL that is the source of an active redirect is excluded from the generated sitemap entries. This is the recommended way to keep sitemaps clean when using editor-managed redirects.
20
+ - Widened the public `getSitemapEntries` option type in app helpers (additive; existing callers unaffected).
21
+ - Updated example app sitemaps (main + unindexed) to demonstrate fetching the map and passing it.
22
+ - Skill docs (`se-marketing-sites-redirects`) now include a "Redirects and sitemaps" section with usage patterns + notes on the improved cycle/self protection. Also updated routing docs.
23
+ - `buildRedirectMap` / `RedirectMap` / `getRedirectMap` behaviour for the middleware baked map is now safer (no self-loops or cycles will be baked).
24
+
25
+ Consumers using the `marketingSiteSitemap` helper + `getRedirectMap` at build time can now easily exclude redirect sources from both their static redirect map (for middleware) and their sitemaps in one consistent way.
26
+
27
+ See the redirect skill for the full recommended build-time pattern and the new filter helper.
28
+
29
+ ## 1.4.1
30
+
31
+ ### Patch Changes
32
+
33
+ - Improve redirect map builder (normalization for trailing slashes per project convention, self-redirect and cycle detection with warnings) and export `filterSitemapEntriesExcludingRedirects`. Wire sitemap helpers to accept optional `redirectMap` and exclude matching entries from generated sitemaps (main, unindexed, and additional). Update related tests, re-exports, example sitemap routes, docs/routing.md, and the redirects skill. (Supports cleaner sitemaps by omitting URLs that will 301.)
34
+
3
35
  ## 1.4.0
4
36
 
5
37
  ### Minor Changes
@@ -4,7 +4,7 @@
4
4
  * Provides type-safe functions for fetching content from Contentful
5
5
  * with support for caching, retry logic, and error handling.
6
6
  */
7
- export { buildRedirectMap, type RedirectMap, type RedirectMapEntry } from '../utils/redirectMap';
7
+ export { buildRedirectMap, filterSitemapEntriesExcludingRedirects, type RedirectMap, type RedirectMapEntry, } from '../utils/redirectMap';
8
8
  export { contentfulArticleRest } from './article';
9
9
  export { type ArticleTypeFetchOptions, contentfulArticleTypeRest } from './article-type';
10
10
  export { contentfulAssetRest, isBrowserViewable, } from './asset';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAEjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,KAAK,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,+BAA+B,EAC/B,mCAAmC,EACnC,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG3E,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,gBAAgB,EAChB,sCAAsC,EACtC,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,KAAK,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,+BAA+B,EAC/B,mCAAmC,EACnC,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG3E,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,SAAS,CAAC"}
package/dist/api/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * Provides type-safe functions for fetching content from Contentful
5
5
  * with support for caching, retry logic, and error handling.
6
6
  */
7
- export { buildRedirectMap } from '../utils/redirectMap';
7
+ export { buildRedirectMap, filterSitemapEntriesExcludingRedirects, } from '../utils/redirectMap';
8
8
  // Single entity fetchers
9
9
  export { contentfulArticleRest } from './article';
10
10
  export { contentfulArticleTypeRest } from './article-type';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAA2C,MAAM,sBAAsB,CAAC;AACjG,yBAAyB;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAgC,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAGL,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,UAAU;AACV,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,wDAAwD;AACxD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,qBAAqB;AACrB,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAA2B,MAAM,UAAU,CAAC;AACzE,UAAU;AACV,OAAO,EAAE,mBAAmB,EAAkD,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,mBAAmB;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,UAAU;AACV,OAAO,EACL,+BAA+B,EAC/B,mCAAmC,EACnC,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAwB,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAA4B,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAyB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,gBAAgB,EAChB,sCAAsC,GAGvC,MAAM,sBAAsB,CAAC;AAC9B,yBAAyB;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAgC,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAGL,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC;AAC5B,UAAU;AACV,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,wDAAwD;AACxD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,qBAAqB;AACrB,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAA2B,MAAM,UAAU,CAAC;AACzE,UAAU;AACV,OAAO,EAAE,mBAAmB,EAAkD,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,mBAAmB;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,UAAU;AACV,OAAO,EACL,+BAA+B,EAC/B,mCAAmC,EACnC,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAwB,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAA4B,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAyB,MAAM,YAAY,CAAC"}
package/dist/index.d.ts CHANGED
@@ -25,5 +25,5 @@ export { type BaseConverterContext, baseCollectionConverter, baseComponentConver
25
25
  export { AllTags, ArticleTag, ArticleTypeTag, AssetTag, articleTag, articleTypeIndexTag, articleTypeTag, assetTag, BannerTag, CustomTypeTag, customTypeTag, GlobalTag, getCacheTags, getCacheTagsForPreview, getCacheTagsForProduction, LocationTag, locationTag, NavigationTag, PageTag, PageVariantTag, PersonTag, pageTag, pageVariantTag, personTag, TagTag, TemplateTag, tagTag, templateTag, } from './revalidation';
26
26
  export type { CmsError, CmsResponse, ContentfulConfig, FetchOptions, RetryConfig, } from './types';
27
27
  export { type ArticleForTagSelection, AuthenticationError, arrayOrUndefined, ContentfulError, calculateBackoffDelay, EntryNotFoundError, filterVisibleTags, getPrimaryTag, getRetryAfter, isContentfulError, isRateLimitError, isRetryableError, isTagShowEnabled, isTagVisible, isValidDate, notEmpty, type PrimaryTagSelector, RateLimitError, RateLimiter, safeDate, type TagVisibilityFields, ValidationError, withRetry, } from './utils';
28
- export { buildRedirectMap, type RedirectMap, type RedirectMapEntry } from './utils/redirectMap';
28
+ export { buildRedirectMap, filterSitemapEntriesExcludingRedirects, type RedirectMap, type RedirectMapEntry, } from './utils/redirectMap';
29
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,mCAAmC,EAEnC,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,uBAAuB,EACvB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EAEnB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAErB,KAAK,aAAa,EAClB,iBAAiB,EACjB,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,OAAO,CAAC;AAEf,YAAY,EAAE,qBAAqB,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1E,OAAO,EACL,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EACL,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,WAAW,EACX,gCAAgC,EAChC,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,OAAO,EACP,UAAU,EACV,cAAc,EACd,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,SAAS,EACT,YAAY,EAEZ,sBAAsB,EACtB,yBAAyB,EACzB,WAAW,EACX,WAAW,EACX,aAAa,EAEb,OAAO,EACP,cAAc,EACd,SAAS,EACT,OAAO,EACP,cAAc,EACd,SAAS,EACT,MAAM,EACN,WAAW,EACX,MAAM,EACN,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,sBAAsB,EAC3B,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,KAAK,kBAAkB,EACvB,cAAc,EACd,WAAW,EACX,QAAQ,EACR,KAAK,mBAAmB,EACxB,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,mCAAmC,EAEnC,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,uBAAuB,EACvB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EAEnB,mBAAmB,EACnB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAErB,KAAK,aAAa,EAClB,iBAAiB,EACjB,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,OAAO,CAAC;AAEf,YAAY,EAAE,qBAAqB,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1E,OAAO,EACL,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EACL,KAAK,oBAAoB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,2BAA2B,EAC3B,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,WAAW,EACX,gCAAgC,EAChC,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,OAAO,EACP,UAAU,EACV,cAAc,EACd,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,SAAS,EACT,YAAY,EAEZ,sBAAsB,EACtB,yBAAyB,EACzB,WAAW,EACX,WAAW,EACX,aAAa,EAEb,OAAO,EACP,cAAc,EACd,SAAS,EACT,OAAO,EACP,cAAc,EACd,SAAS,EACT,MAAM,EACN,WAAW,EACX,MAAM,EACN,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,sBAAsB,EAC3B,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,KAAK,kBAAkB,EACvB,cAAc,EACd,WAAW,EACX,QAAQ,EACR,KAAK,mBAAmB,EACxB,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,gBAAgB,EAChB,sCAAsC,EACtC,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -35,5 +35,5 @@ getCacheTagsForPreview, getCacheTagsForProduction, LocationTag, locationTag, Nav
35
35
  PageTag, PageVariantTag, PersonTag, pageTag, pageVariantTag, personTag, TagTag, TemplateTag, tagTag, templateTag, } from './revalidation';
36
36
  // Error handling and retry utilities
37
37
  export { AuthenticationError, arrayOrUndefined, ContentfulError, calculateBackoffDelay, EntryNotFoundError, filterVisibleTags, getPrimaryTag, getRetryAfter, isContentfulError, isRateLimitError, isRetryableError, isTagShowEnabled, isTagVisible, isValidDate, notEmpty, RateLimitError, RateLimiter, safeDate, ValidationError, withRetry, } from './utils';
38
- export { buildRedirectMap } from './utils/redirectMap';
38
+ export { buildRedirectMap, filterSitemapEntriesExcludingRedirects, } from './utils/redirectMap';
39
39
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,gBAAgB;AAChB,OAAO,EAKL,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,mCAAmC;AACnC,2BAA2B;AAC3B,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,uBAAuB,EACvB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EAErB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB;AACnB,UAAU;AACV,mBAAmB,EAKnB,iBAAiB,GAYlB,MAAM,OAAO,CAAC;AAGf,iBAAiB;AACjB,OAAO,EAEL,sBAAsB,EACtB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,oBAAoB;AACpB,OAAO,EAEL,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,2BAA2B,EAC3B,iBAAiB,EAEjB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EAOtB,WAAW,EACX,gCAAgC,EAChC,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,GAExB,MAAM,cAAc,CAAC;AACtB,yBAAyB;AACzB,OAAO,EACL,OAAO,EACP,UAAU,EACV,cAAc,EACd,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,SAAS,EACT,YAAY;AACZ,oBAAoB;AACpB,sBAAsB,EACtB,yBAAyB,EACzB,WAAW,EACX,WAAW,EACX,aAAa;AACb,8BAA8B;AAC9B,OAAO,EACP,cAAc,EACd,SAAS,EACT,OAAO,EACP,cAAc,EACd,SAAS,EACT,MAAM,EACN,WAAW,EACX,MAAM,EACN,WAAW,GACZ,MAAM,gBAAgB,CAAC;AASxB,qCAAqC;AACrC,OAAO,EAEL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,QAAQ,EAER,cAAc,EACd,WAAW,EACX,QAAQ,EAER,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAA2C,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,gBAAgB;AAChB,OAAO,EAKL,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,mCAAmC;AACnC,2BAA2B;AAC3B,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,uBAAuB,EACvB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EAErB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB;AACnB,UAAU;AACV,mBAAmB,EAKnB,iBAAiB,GAYlB,MAAM,OAAO,CAAC;AAGf,iBAAiB;AACjB,OAAO,EAEL,sBAAsB,EACtB,6BAA6B,EAC7B,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAElB,oBAAoB;AACpB,OAAO,EAEL,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,2BAA2B,EAC3B,iBAAiB,EAEjB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EAOtB,WAAW,EACX,gCAAgC,EAChC,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,uBAAuB,GAExB,MAAM,cAAc,CAAC;AACtB,yBAAyB;AACzB,OAAO,EACL,OAAO,EACP,UAAU,EACV,cAAc,EACd,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,aAAa,EACb,aAAa,EACb,SAAS,EACT,YAAY;AACZ,oBAAoB;AACpB,sBAAsB,EACtB,yBAAyB,EACzB,WAAW,EACX,WAAW,EACX,aAAa;AACb,8BAA8B;AAC9B,OAAO,EACP,cAAc,EACd,SAAS,EACT,OAAO,EACP,cAAc,EACd,SAAS,EACT,MAAM,EACN,WAAW,EACX,MAAM,EACN,WAAW,GACZ,MAAM,gBAAgB,CAAC;AASxB,qCAAqC;AACrC,OAAO,EAEL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,QAAQ,EAER,cAAc,EACd,WAAW,EACX,QAAQ,EAER,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,gBAAgB,EAChB,sCAAsC,GAGvC,MAAM,qBAAqB,CAAC"}
@@ -14,12 +14,27 @@ export type RedirectMap = Record<string, RedirectMapEntry>;
14
14
  *
15
15
  * - Filters out inactive redirects.
16
16
  * - Prefers explicit statusCode; defaults to 301.
17
- * - Does light normalization (ensures leading /; the app's trailingSlash: true
18
- * convention means callers should store rules with trailing slashes for
19
- * internal paths).
17
+ * - Normalizes paths: ensures leading `/` (unless external) and trailing `/`
18
+ * for internal paths (aligns with the project's trailingSlash: true convention
19
+ * used by UrlCalculators and sitemap hrefs).
20
+ * - Drops self-redirects (A → A) after normalization.
21
+ * - Detects and drops rules that participate in redirect cycles (A → B → A, etc.).
22
+ * A console warning is emitted for cycles (visible during build/generate scripts).
20
23
  *
21
- * This is intentionally side-effect free and safe to run in a Next.js build
22
- * script or edge middleware context.
24
+ * This is intentionally side-effect free (except build-visible warnings) and safe
25
+ * to run in a Next.js build script or edge middleware context.
23
26
  */
24
27
  export declare function buildRedirectMap(redirects: IRedirect[] | null | undefined): RedirectMap;
28
+ /**
29
+ * Filter a list of sitemap-like entries, removing any whose `url` (after light
30
+ * normalization for trailing slash) is the source ("from") of an active redirect.
31
+ *
32
+ * Use this (or pass `redirectMap` to `getSitemapEntries`) so that URLs which
33
+ * redirect away do not appear in your sitemap.
34
+ *
35
+ * Works for any `{ url: string }` shape (SitemapEntry, ISitemapEntry, etc.).
36
+ */
37
+ export declare function filterSitemapEntriesExcludingRedirects<T extends {
38
+ url: string;
39
+ }>(entries: T[], redirectMap: RedirectMap): T[];
25
40
  //# sourceMappingURL=redirectMap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redirectMap.d.ts","sourceRoot":"","sources":["../../src/utils/redirectMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAC/B;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CA0BvF"}
1
+ {"version":3,"file":"redirectMap.d.ts","sourceRoot":"","sources":["../../src/utils/redirectMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAC/B;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAW3D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CA8EvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,sCAAsC,CAAC,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAC9E,OAAO,EAAE,CAAC,EAAE,EACZ,WAAW,EAAE,WAAW,GACvB,CAAC,EAAE,CAoBL"}
@@ -1,15 +1,29 @@
1
+ function normalizeRedirectPath(p) {
2
+ if (!p)
3
+ return '';
4
+ let s = p.trim();
5
+ const isExternal = /^https?:\/\//i.test(s);
6
+ if (!isExternal && !s.startsWith('/'))
7
+ s = `/${s}`;
8
+ if (!isExternal && !s.endsWith('/'))
9
+ s = `${s}/`;
10
+ return s;
11
+ }
1
12
  /**
2
13
  * Pure helper that turns a list of IRedirect (from Contentful) into the simple
3
14
  * map used by middleware at runtime or baked into a static module at build.
4
15
  *
5
16
  * - Filters out inactive redirects.
6
17
  * - Prefers explicit statusCode; defaults to 301.
7
- * - Does light normalization (ensures leading /; the app's trailingSlash: true
8
- * convention means callers should store rules with trailing slashes for
9
- * internal paths).
18
+ * - Normalizes paths: ensures leading `/` (unless external) and trailing `/`
19
+ * for internal paths (aligns with the project's trailingSlash: true convention
20
+ * used by UrlCalculators and sitemap hrefs).
21
+ * - Drops self-redirects (A → A) after normalization.
22
+ * - Detects and drops rules that participate in redirect cycles (A → B → A, etc.).
23
+ * A console warning is emitted for cycles (visible during build/generate scripts).
10
24
  *
11
- * This is intentionally side-effect free and safe to run in a Next.js build
12
- * script or edge middleware context.
25
+ * This is intentionally side-effect free (except build-visible warnings) and safe
26
+ * to run in a Next.js build script or edge middleware context.
13
27
  */
14
28
  export function buildRedirectMap(redirects) {
15
29
  const map = {};
@@ -19,21 +33,97 @@ export function buildRedirectMap(redirects) {
19
33
  for (const r of redirects) {
20
34
  if (r.active === false)
21
35
  continue;
22
- let from = r.fromPath || '';
36
+ const from = normalizeRedirectPath(r.fromPath || '');
23
37
  if (!from)
24
38
  continue;
25
- if (!from.startsWith('/'))
26
- from = `/${from}`;
27
- // Basic self-loop guard (don't bake a rule that points to itself)
28
- const to = r.to || '';
39
+ const to = normalizeRedirectPath(r.to || '');
29
40
  if (!to)
30
41
  continue;
31
- if (to === from)
42
+ // Self-loop guard (after normalization)
43
+ if (from === to)
32
44
  continue;
33
45
  const status = (r.statusCode ?? 301);
34
46
  // Last one wins if duplicates (editors should avoid); keeps it simple.
35
47
  map[from] = { to, status };
36
48
  }
49
+ // Cycle detection: walk the graph of internal redirects and drop any 'from' that
50
+ // participates in a cycle. We do this after the initial map so we have a clean
51
+ // from->to graph of only the candidates.
52
+ const fromTo = {};
53
+ for (const [f, e] of Object.entries(map)) {
54
+ // Only follow if the target is itself a redirect source (internal hop)
55
+ if (map[e.to]) {
56
+ fromTo[f] = e.to;
57
+ }
58
+ }
59
+ function findCycle(start) {
60
+ const path = [];
61
+ const seen = new Set();
62
+ let cur = start;
63
+ while (cur) {
64
+ if (seen.has(cur)) {
65
+ // cycle detected; return the cycle portion
66
+ const idx = path.indexOf(cur);
67
+ return idx >= 0 ? path.slice(idx).concat(cur) : path.concat(cur);
68
+ }
69
+ seen.add(cur);
70
+ path.push(cur);
71
+ cur = fromTo[cur];
72
+ }
73
+ return null;
74
+ }
75
+ const cyclicFroms = new Set();
76
+ for (const f of Object.keys(fromTo)) {
77
+ if (!cyclicFroms.has(f)) {
78
+ const cycle = findCycle(f);
79
+ if (cycle) {
80
+ for (const node of cycle) {
81
+ if (fromTo[node] !== undefined)
82
+ cyclicFroms.add(node);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ if (cyclicFroms.size > 0) {
88
+ if (typeof console !== 'undefined' && console.warn) {
89
+ console.warn(`[redirects] Dropping ${cyclicFroms.size} redirect rule(s) that participate in cycle(s):`, Array.from(cyclicFroms));
90
+ }
91
+ for (const bad of cyclicFroms) {
92
+ delete map[bad];
93
+ }
94
+ }
37
95
  return map;
38
96
  }
97
+ /**
98
+ * Filter a list of sitemap-like entries, removing any whose `url` (after light
99
+ * normalization for trailing slash) is the source ("from") of an active redirect.
100
+ *
101
+ * Use this (or pass `redirectMap` to `getSitemapEntries`) so that URLs which
102
+ * redirect away do not appear in your sitemap.
103
+ *
104
+ * Works for any `{ url: string }` shape (SitemapEntry, ISitemapEntry, etc.).
105
+ */
106
+ export function filterSitemapEntriesExcludingRedirects(entries, redirectMap) {
107
+ if (!redirectMap || Object.keys(redirectMap).length === 0) {
108
+ return entries;
109
+ }
110
+ const froms = new Set(Object.keys(redirectMap));
111
+ return entries.filter((entry) => {
112
+ const u = entry.url || '';
113
+ if (!u)
114
+ return true;
115
+ if (froms.has(u))
116
+ return false;
117
+ // Robustness for trailing slash differences (map keys are normalized with trailing / for internals)
118
+ if (u.endsWith('/')) {
119
+ if (froms.has(u.slice(0, -1)))
120
+ return false;
121
+ }
122
+ else {
123
+ if (froms.has(`${u}/`))
124
+ return false;
125
+ }
126
+ return true;
127
+ });
128
+ }
39
129
  //# sourceMappingURL=redirectMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redirectMap.js","sourceRoot":"","sources":["../../src/utils/redirectMap.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAyC;IACxE,MAAM,GAAG,GAAgB,EAAE,CAAC;IAE5B,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK;YAAE,SAAS;QAEjC,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAE7C,kEAAkE;QAClE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,IAAI,EAAE,KAAK,IAAI;YAAE,SAAS;QAE1B,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAA+B,CAAC;QAEnE,uEAAuE;QACvE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"redirectMap.js","sourceRoot":"","sources":["../../src/utils/redirectMap.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/contentful-rest-api",
3
- "version": "1.4.0",
3
+ "version": "1.5.1",
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",
@@ -51,7 +51,7 @@
51
51
  "@contentful/rich-text-types": "^17.2.7",
52
52
  "contentful": "^11.12.3",
53
53
  "server-only": "0.0.1",
54
- "@se-studio/core-data-types": "1.4.0"
54
+ "@se-studio/core-data-types": "1.4.1"
55
55
  },
56
56
  "peerDependencies": {
57
57
  "next": ">=15.5.0"