@se-studio/core-ui 1.11.8 → 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.
- package/CHANGELOG.md +6 -0
- package/CMS_INFRASTRUCTURE.md +3 -2
- package/README.md +4 -3
- package/dist/CmsRendererConfig.d.ts +2 -1
- package/dist/CmsRendererConfig.d.ts.map +1 -1
- package/dist/app-helpers.d.ts +2 -1
- package/dist/app-helpers.d.ts.map +1 -1
- package/dist/app-helpers.js +17 -2
- package/dist/app-helpers.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/utils/componentUtils.d.ts +17 -30
- package/dist/utils/componentUtils.d.ts.map +1 -1
- package/dist/utils/componentUtils.js +114 -79
- package/dist/utils/componentUtils.js.map +1 -1
- package/dist/utils/linkResolution.d.ts +15 -0
- package/dist/utils/linkResolution.d.ts.map +1 -0
- package/dist/utils/linkResolution.js +19 -0
- package/dist/utils/linkResolution.js.map +1 -0
- package/docs/llms.md +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @se-studio/core-ui
|
|
2
2
|
|
|
3
|
+
## 1.12.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Fix `getRelatedArticles` and `getRelatedPeople` to always resolve curated `contents` link refs from `getAll*Links` listing fetches so person/article publish revalidates link-shaped UI. Add `getRelatedTags` with the same pattern (`tag` cache tag). Wire `getRelatedTags` through `createAppHelpers` and `@se-studio/core-ui/server`.
|
|
8
|
+
|
|
3
9
|
## 1.11.8
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/CMS_INFRASTRUCTURE.md
CHANGED
|
@@ -281,7 +281,8 @@ Error panels (unknown types, render errors) are shown when `!buildInformation.is
|
|
|
281
281
|
**Visibility enforcement:** `createAppHelpers` enforces two visibility rules via `buildInformation`:
|
|
282
282
|
|
|
283
283
|
- **`hidden` entities:** Entity fetchers (`getPageWithErrors`, `getArticleWithErrors`, etc.) return `null` data when the entity has `hidden === true` in production. Callers treat `null` as `notFound()`. In non-production environments, hidden entities are returned normally so content authors can preview them.
|
|
284
|
-
- **`indexed` filtering:** Link fetchers (`getAllPageLinks`, `getAllArticleLinks`, etc.) exclude entries with `indexed === false` by default. Pass `{ allowUnindexed: true }` (via `LinkFetchOptions`) to include them. This applies in all environments. `filterRelatedArticles` and `
|
|
284
|
+
- **`indexed` filtering:** Link fetchers (`getAllPageLinks`, `getAllArticleLinks`, etc.) exclude entries with `indexed === false` by default. Pass `{ allowUnindexed: true }` (via `LinkFetchOptions`) to include them. This applies in all environments. `filterRelatedArticles`, `getRelatedPeople`, and `getRelatedTags` apply the same rule on auto-filled slots.
|
|
285
|
+
- **Link-shaped UI and revalidation:** Collection `contents` link refs (person, article, tag) provide **selection and order only**. `getRelatedArticles`, `getRelatedPeople`, and `getRelatedTags` always resolve display fields from `getAll*Links` listing fetches (`article`, `person`, `tag` cache tags). Entity detail routes use entity fetches (`article#slug`, etc.). Do not render portraits, titles, or hrefs from embedded page-include link objects in collection renderers.
|
|
285
286
|
- **Full-list article filtering (`getAllArticleLinks`):** Pass article filter criteria directly: `articleTypeSlugs`/`articleTypeIds`, `tagSlugs`/`tagIds`, `tagType*`, `authorSlugs`/`authorIds` + `strictAuthorMatch: true` (hard filter for person pages), `before`/`after`, `excludeArticleIds`, `count`. The wrapper in `createAppHelpers` runs the base list through `filterRelatedArticles` (after indexed filtering). Use for News Grids / Publications Lists / ArticleFilter collections that need the *complete* matching set (client-side search UI, "latest N" on indexes, person-scoped lists). See also `getRelatedArticles` for limited related sets driven by collection `links`.
|
|
286
287
|
- **Related Articles tag criteria (`getRelatedArticles`):** Tag filters are taken from tag links in the collection `links` or `contents`. When none are set, `applyFallbackCriteria` uses `pageContext.tag.id` (tag index pages), then `pageContext.article.tags` (article detail pages). Explicit CMS tag links always win. When `tagIds` reach `filterRelatedArticles`, articles must match at least one tag (OR semantics).
|
|
287
288
|
- **`buildPageMetadata`** calls `notFound()` when `model.hidden === true` in production, providing a second safety net at the metadata layer.
|
|
@@ -353,7 +354,7 @@ See the example apps in this monorepo for complete working implementations:
|
|
|
353
354
|
- `externalComponentMap`, `embeddedExternalComponentMap` – External/embed maps (optional).
|
|
354
355
|
- `visualComponentRenderer`, `internalLinkRenderer` – Renderers for Visual and Internal Link types.
|
|
355
356
|
- `previewHelpers` – **Required.** Preview helpers for Contentful live preview (pass from app cms-server).
|
|
356
|
-
- `fetchHelpers` – Helpers for data fetching in collections (`getRelatedArticles`, `getRelatedPeople`, `getAllArticleLinks`, `getAllTagLinks`, `getAllPersonLinks`, etc.). Link fetchers accept optional `LinkFetchOptions` (pass `{ allowUnindexed: true }` to include unindexed entries; pass articleType*/tag*/author* criteria for pre-filtered full lists via `getAllArticleLinks`). Import advanced filter symbols from `@se-studio/core-ui/server` when needed in server collections.
|
|
357
|
+
- `fetchHelpers` – Helpers for data fetching in collections (`getRelatedArticles`, `getRelatedPeople`, `getRelatedTags`, `getAllArticleLinks`, `getAllTagLinks`, `getAllPersonLinks`, etc.). Link fetchers accept optional `LinkFetchOptions` (pass `{ allowUnindexed: true }` to include unindexed entries; pass articleType*/tag*/author* criteria for pre-filtered full lists via `getAllArticleLinks`). Import advanced filter symbols from `@se-studio/core-ui/server` when needed in server collections.
|
|
357
358
|
- `defaultComponentRenderer`, `defaultCollectionRenderer` – Fallback renderers for unmapped types.
|
|
358
359
|
|
|
359
360
|
## Future Enhancements
|
package/README.md
CHANGED
|
@@ -411,14 +411,15 @@ const previewConfig = mergeCmsRendererConfig(
|
|
|
411
411
|
#### Utilities
|
|
412
412
|
- **`buildPageMetadata`** - Generates Next.js metadata object from CMS page model
|
|
413
413
|
- **`handleCmsError`** - Error handling utility for CMS operations
|
|
414
|
-
- **`getRelatedArticles`** - Fetches related articles for collections (limited sets):
|
|
415
|
-
- **`getRelatedPeople`** -
|
|
414
|
+
- **`getRelatedArticles`** - Fetches related articles for collections (limited sets): `contents` article refs provide IDs/order only; display data is always resolved from `contentfulAllArticleLinks` (or `getAllArticleLinks` via `createAppHelpers`) so the `article` cache tag revalidates on publish. Auto-fill uses `filterRelatedArticles`. Tag criteria come from collection tag links, or fall back to `pageContext.tag`, then the current article's tags on article detail pages. See also full-list filtering via `getAllArticleLinks` (below).
|
|
415
|
+
- **`getRelatedPeople`** - Related people for collections: `contents` person refs are IDs/order only; always resolved from `contentfulAllPersonLinks` / `getAllPersonLinks` (`person` cache tag).
|
|
416
|
+
- **`getRelatedTags`** - Related tags for collections: `contents` tag refs are IDs/order only; always resolved from `contentfulAllTagLinks` / `getAllTagLinks` (`tag` cache tag). Falls back to `pageContext.tag` or the current article's tags when `contents` is empty.
|
|
416
417
|
- **`cn`** - Utility function for merging Tailwind CSS classes
|
|
417
418
|
|
|
418
419
|
#### Server-only exports (import from `@se-studio/core-ui/server`)
|
|
419
420
|
- **`createAppHelpers`** — Factory for `getAll*Links`, `getPageWithErrors`, `getRelatedArticles`, `getSitemapEntries` (when configured), etc. Wire with your converterContext + buildOptions.
|
|
420
421
|
- **`filterRelatedArticles`** + **`RelatedArticlesOptions`** — Re-export of the pure article list filter/ranker (articleType/tag/author/tagType slugs+ids, strict author mode, scoring, dates, etc.). Use in collection renderers or custom full-list logic (e.g. News Grids, person-scoped Publications lists). `getAllArticleLinks(options)` on the helpers already applies these filters when you pass `articleTypeSlugs`, `strictAuthorMatch`, etc.
|
|
421
|
-
- **`getRelatedArticles`** / **`getRelatedPeople`** (also re-exported here for server collections)
|
|
422
|
+
- **`getRelatedArticles`** / **`getRelatedPeople`** / **`getRelatedTags`** (also re-exported here for server collections)
|
|
422
423
|
|
|
423
424
|
#### Sitemap Utilities
|
|
424
425
|
- **`buildSitemap`** - Builds a Next.js sitemap from multiple async sources; calls each source in parallel, deduplicates by URL, and converts to `MetadataRoute.Sitemap`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** biome-ignore-all lint/suspicious/noExplicitAny: Any is allowed */
|
|
2
2
|
import type { CmsResponse, FetchOptions } from '@se-studio/contentful-rest-api';
|
|
3
|
-
import type { IArticleLink, IContentContext, IInternalLink, IPersonLink } from '@se-studio/core-data-types';
|
|
3
|
+
import type { IArticleLink, IContentContext, IInternalLink, IPersonLink, ITagLink } from '@se-studio/core-data-types';
|
|
4
4
|
import type * as React from 'react';
|
|
5
5
|
import type { CollectionMap, CollectionRenderer, EmbeddedCollectionMap } from './components/CmsCollection';
|
|
6
6
|
import type { ComponentMap, ComponentRenderer, EmbeddedComponentMap } from './components/CmsComponent';
|
|
@@ -78,6 +78,7 @@ export type FetchHelpers = {
|
|
|
78
78
|
/** Uses `any` for information to accept project-specific collection types */
|
|
79
79
|
getRelatedArticles?: (information: any, contentContext: IContentContext, count?: number) => Promise<CmsResponse<IArticleLink[]>>;
|
|
80
80
|
getRelatedPeople?: (information: any, contentContext: IContentContext, count: number) => Promise<CmsResponse<IPersonLink[]>>;
|
|
81
|
+
getRelatedTags?: (information: any, contentContext: IContentContext, count: number) => Promise<CmsResponse<ITagLink[]>>;
|
|
81
82
|
};
|
|
82
83
|
export type CmsRendererTypes = {
|
|
83
84
|
componentNameType: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CmsRendererConfig.d.ts","sourceRoot":"","sources":["../src/CmsRendererConfig.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,WAAW,
|
|
1
|
+
{"version":3,"file":"CmsRendererConfig.d.ts","sourceRoot":"","sources":["../src/CmsRendererConfig.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,iCAAiC,EACjC,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,4BAA4B,EAC5B,oBAAoB,EACrB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAExE,+DAA+D;AAC/D,MAAM,MAAM,qBAAqB,GAC7B;IACE,0BAA0B,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,0BAA0B,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,0BAA0B,EAAE,MAAM,GAAG,SAAS,CAAC;CAChD,GACD,SAAS,CAAC;AAEd,2FAA2F;AAC3F,MAAM,MAAM,cAAc,GAAG;IAC3B,sBAAsB,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,qBAAqB,CAAC;IACjF,sBAAsB,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,qBAAqB,CAAC;IACpE,qBAAqB,EAAE,CAAC,WAAW,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,KAAK,qBAAqB,CAAC;IAClG,sCAAsC,EAAE,CACtC,EAAE,CAAC,EAAE,MAAM,EACX,aAAa,CAAC,EAAE,MAAM,EACtB,mBAAmB,CAAC,EAAE,MAAM,KACzB;QACH,kBAAkB,EAAE,qBAAqB,CAAC;QAC1C,wBAAwB,EAAE,qBAAqB,CAAC;KACjD,CAAC;CACH,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG;IACrD,yFAAyF;IACzF,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uGAAuG;IACvG,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,yGAAyG;IACzG,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,sIAAsI;IACtI,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,wIAAwI;IACxI,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,6HAA6H;IAC7H,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,+HAA+H;IAC/H,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,qHAAqH;IACrH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,uHAAuH;IACvH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,sJAAsJ;IACtJ,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,yFAAyF;IACzF,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,wFAAwF;IACxF,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,uHAAuH;IACvH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,+FAA+F;AAC/F,MAAM,MAAM,YAAY,GAAG;IACzB,kBAAkB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC1F,cAAc,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACvF,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxF,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,CACnB,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,eAAe,EAC/B,KAAK,CAAC,EAAE,MAAM,KACX,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC1C,gBAAgB,CAAC,EAAE,CACjB,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,eAAe,EAC/B,KAAK,EAAE,MAAM,KACV,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,CACf,WAAW,EAAE,GAAG,EAChB,cAAc,EAAE,eAAe,EAC/B,KAAK,EAAE,MAAM,KACV,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,GAAG,CAAC;IACpB,yBAAyB,EAAE,MAAM,CAAC;IAClC,qBAAqB,EAAE,GAAG,CAAC;CAC5B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB;IACpF;;;;;;;;;;;OAWG;IACH,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAEnF,oBAAoB,EAAE,oBAAoB,CACxC,OAAO,CAAC,mBAAmB,CAAC,EAC5B,OAAO,CAAC,eAAe,CAAC,CACzB,CAAC;IAEF;;;;;;;;;;;OAWG;IACH,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvF,qBAAqB,EAAE,qBAAqB,CAC1C,OAAO,CAAC,oBAAoB,CAAC,EAC7B,OAAO,CAAC,gBAAgB,CAAC,CAC1B,CAAC;IAEF;;;;;;;;;;;OAWG;IACH,oBAAoB,EAAE,oBAAoB,CACxC,OAAO,CAAC,2BAA2B,CAAC,EACpC,OAAO,CAAC,uBAAuB,CAAC,CACjC,CAAC;IACF,4BAA4B,EAAE,4BAA4B,CACxD,OAAO,CAAC,2BAA2B,CAAC,EACpC,OAAO,CAAC,uBAAuB,CAAC,CACjC,CAAC;IAEF;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,wFAAwF;IACxF,yBAAyB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAExC;;;;;;;;;;;;;;;;OAgBG;IACH,uBAAuB,EAAE,uBAAuB,CAAC;IAEjD;;;;;;;;;;OAUG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;IAE3C;;;;;;OAMG;IACH,iCAAiC,CAAC,EAAE,iCAAiC,CAAC;IAEtE;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,EAAE,OAAO,CACxB,MAAM,CACJ,MAAM,EACN,KAAK,CAAC,EAAE,CAAC;QACP,WAAW,EAAE,GAAG,CAAC;QACjB,cAAc,EAAE,eAAe,CAAC;KACjC,CAAC,CACH,CACF,CAAC;IAEF;;;OAGG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;IAEzC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAEvC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,eAAe,KAAK,KAAK,CAAC,SAAS,CAAC;IAElF;;;;OAIG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B;;;OAGG;IACH,YAAY,EAAE,YAAY,CAAC;IAE3B;;;OAGG;IACH,gBAAgB,EAAE,iBAAiB,CAAC;IAEpC,wBAAwB,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACjD,yBAAyB,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;CACpD"}
|
package/dist/app-helpers.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ import 'server-only';
|
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
27
|
import type { ArticleTypeFetchOptions, BaseConverterContext, CmsResponse, ContentfulConfig, FetchOptions, IContentfulCollection, IContentfulPerson, IFetchedTemplate, RedirectMap, TagFetchOptions, TagTypeFetchOptions } from '@se-studio/contentful-rest-api';
|
|
28
|
-
import type { BaseCollectionContent, IArticleLink, IArticleTypeLink, IBanner, IBaseArticle, IBaseArticleType, IBaseCustomType, IBasePage, IBaseTag, IBaseTagType, IContentContext, IInternalLink, INavigation, IPersonLink, IRedirect } from '@se-studio/core-data-types';
|
|
28
|
+
import type { BaseCollectionContent, IArticleLink, IArticleTypeLink, IBanner, IBaseArticle, IBaseArticleType, IBaseCustomType, IBasePage, IBaseTag, IBaseTagType, IContentContext, IInternalLink, INavigation, IPersonLink, IRedirect, ITagLink } from '@se-studio/core-data-types';
|
|
29
29
|
import type { LinkFetchOptions } from './CmsRendererConfig';
|
|
30
30
|
import type { BreadcrumbLookup } from './utils/breadcrumbUtils';
|
|
31
31
|
import type { IBuildInformation } from './utils/buildPageMetadata';
|
|
@@ -91,6 +91,7 @@ export interface AppHelpers<TPage, TArticle, TArticleType, TTag, TPerson, TCusto
|
|
|
91
91
|
getNavigation: (navigationId: string, options?: FetchOptions) => Promise<INavigation | undefined>;
|
|
92
92
|
getRelatedArticles: (information: TCollection, contentContext: IContentContext, count: number | undefined, options?: FetchOptions) => Promise<CmsResponse<IArticleLink[]>>;
|
|
93
93
|
getRelatedPeople: (information: TCollection, contentContext: IContentContext, count: number, options?: FetchOptions) => Promise<CmsResponse<IPersonLink[]>>;
|
|
94
|
+
getRelatedTags: (information: TCollection, contentContext: IContentContext, count: number, options?: FetchOptions) => Promise<CmsResponse<ITagLink[]>>;
|
|
94
95
|
getBannersWithErrors: (options?: FetchOptions) => Promise<CmsResponse<IBanner[] | null>>;
|
|
95
96
|
getRedirectsWithErrors: (options?: FetchOptions) => Promise<CmsResponse<IRedirect[] | null>>;
|
|
96
97
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-helpers.d.ts","sourceRoot":"","sources":["../src/app-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,mBAAmB,EACpB,MAAM,gCAAgC,CAAC;AAwBxC,OAAO,KAAK,EACV,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,
|
|
1
|
+
{"version":3,"file":"app-helpers.d.ts","sourceRoot":"","sources":["../src/app-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/app-helpers.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
2
|
import { buildRedirectMap, contentfulAllArticleLinks, contentfulAllArticleTypeLinks, contentfulAllCustomTypeLinks, contentfulAllPageLinks, contentfulAllPersonLinks, contentfulAllTagLinks, contentfulAllTagTypeLinks, contentfulArticleRest, contentfulArticleTypeRest, contentfulBannerRest, contentfulCustomTypeRest, getBreadcrumbLookup as contentfulGetBreadcrumbLookup, getNavigation as contentfulGetNavigation, contentfulPageRest, contentfulPersonRest, contentfulRedirectsRest, contentfulTagRest, contentfulTagTypeRest, contentfulTemplateRest, filterRelatedArticles, } from '@se-studio/contentful-rest-api';
|
|
3
|
-
import {
|
|
3
|
+
import { isTagLink } from '@se-studio/core-data-types';
|
|
4
|
+
import { getRelatedArticles as coreGetRelatedArticles, getRelatedPeople as coreGetRelatedPeople, getRelatedTags as coreGetRelatedTags, } from './utils/componentUtils';
|
|
4
5
|
import { createMarketingSiteSitemapEntries, } from './utils/marketingSiteSitemap';
|
|
5
6
|
import { coreGetPreviewAssetIdProps, coreGetPreviewFieldIdProps, coreGetPreviewParentProps, } from './utils/previewUtils';
|
|
6
7
|
export function createAppHelpers(config) {
|
|
@@ -144,7 +145,21 @@ export function createAppHelpers(config) {
|
|
|
144
145
|
*/
|
|
145
146
|
getRelatedPeople(information, contentContext, count, options) {
|
|
146
147
|
const fullOptions = buildOptions(options);
|
|
147
|
-
return coreGetRelatedPeople(information, contentContext, converterContext, getConfig(fullOptions.preview), count, fullOptions);
|
|
148
|
+
return coreGetRelatedPeople(information, contentContext, converterContext, getConfig(fullOptions.preview), count, fullOptions, (linkOptions) => getAllPersonLinks(linkOptions));
|
|
149
|
+
},
|
|
150
|
+
/**
|
|
151
|
+
* Get related tags for a collection.
|
|
152
|
+
* Uses the generic core helper with project-specific config.
|
|
153
|
+
*/
|
|
154
|
+
getRelatedTags(information, contentContext, count, options) {
|
|
155
|
+
const fullOptions = buildOptions(options);
|
|
156
|
+
return coreGetRelatedTags(information, contentContext, converterContext, getConfig(fullOptions.preview), count, fullOptions, async (linkOptions) => {
|
|
157
|
+
const res = await getAllTagLinks(linkOptions);
|
|
158
|
+
return {
|
|
159
|
+
data: res.data.filter(isTagLink),
|
|
160
|
+
errors: res.errors,
|
|
161
|
+
};
|
|
162
|
+
});
|
|
148
163
|
},
|
|
149
164
|
// ============================================================================
|
|
150
165
|
// Content Fetch Functions (with error responses)
|
package/dist/app-helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-helpers.js","sourceRoot":"","sources":["../src/app-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAyCrB,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,6BAA6B,EAC7B,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,IAAI,6BAA6B,EACpD,aAAa,IAAI,uBAAuB,EACxC,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"app-helpers.js","sourceRoot":"","sources":["../src/app-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export type { RelatedArticlesOptions } from '@se-studio/contentful-rest-api';
|
|
|
3
3
|
export { filterRelatedArticles } from '@se-studio/contentful-rest-api';
|
|
4
4
|
export type { AppHelpers, AppHelpersConfig, AppHelpersWithSitemap, } from '../app-helpers';
|
|
5
5
|
export { createAppHelpers } from '../app-helpers';
|
|
6
|
-
export { getRelatedArticles, getRelatedPeople } from '../utils/componentUtils';
|
|
6
|
+
export { getRelatedArticles, getRelatedPeople, getRelatedTags, } from '../utils/componentUtils';
|
|
7
7
|
export type { RouteHandlersConfig } from './route-handlers';
|
|
8
8
|
export { createRouteHandlers } from './route-handlers';
|
|
9
9
|
export type { CmsPagePreparationResult, PrepareArticlePageInput, PrepareArticleTypePageInput, PrepareArticleTypesIndexPageInput, PrepareArticleTypeTagPageInput, PrepareCustomTypePageInput, PreparePageInput, PreparePersonPageInput, PrepareTagPageInput, PrepareTagsIndexPageInput, PrepareTeamIndexPageInput, RouteHandlersPrepareHooks, } from './route-handlers-types';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,iCAAiC,EACjC,8BAA8B,EAC9B,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/server/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
2
|
export { filterRelatedArticles } from '@se-studio/contentful-rest-api';
|
|
3
3
|
export { createAppHelpers } from '../app-helpers';
|
|
4
|
-
export { getRelatedArticles, getRelatedPeople } from '../utils/componentUtils';
|
|
4
|
+
export { getRelatedArticles, getRelatedPeople, getRelatedTags, } from '../utils/componentUtils';
|
|
5
5
|
export { createRouteHandlers } from './route-handlers';
|
|
6
6
|
export { toBreadcrumbOptions } from './route-types';
|
|
7
7
|
export { canRenderArticleTypeTagRoute, canRenderTagIndex } from './tag-index-guards';
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAMvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAGrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAMvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACf,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAuBvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,45 +1,32 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
2
|
import { type BaseConverterContext, type CmsResponse, type ContentfulConfig, type FetchOptions, type IContentfulCollection } from '@se-studio/contentful-rest-api';
|
|
3
|
-
import { type BaseCollectionContent, type IArticleLink, type IContentContext, type IPersonLink } from '@se-studio/core-data-types';
|
|
3
|
+
import { type BaseCollectionContent, type IArticleLink, type IContentContext, type IPersonLink, type ITagLink } from '@se-studio/core-data-types';
|
|
4
4
|
type FetchArticleLinksFn = (options: FetchOptions) => Promise<CmsResponse<IArticleLink[]>>;
|
|
5
|
+
type FetchTagLinksFn = (options: FetchOptions) => Promise<CmsResponse<ITagLink[]>>;
|
|
5
6
|
/**
|
|
6
7
|
* Generic helper to get related articles for a collection.
|
|
7
8
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* 3. Applying fallback criteria from page context when links omit filters (article type from
|
|
12
|
-
* context or current article, current person, tag index `pageContext.tag`, or current
|
|
13
|
-
* article tags on article detail pages)
|
|
14
|
-
* 4. Fetching additional articles if needed to reach the requested count
|
|
15
|
-
* 5. Returning manual articles followed by fetched articles
|
|
16
|
-
*
|
|
17
|
-
* @param information - The collection information containing contents and links
|
|
18
|
-
* @param contentContext - The content context containing page context
|
|
19
|
-
* @param converterContext - The project-specific converter context (contains URL rules)
|
|
20
|
-
* @param config - Contentful configuration
|
|
21
|
-
* @param count - Maximum number of articles to return (optional)
|
|
22
|
-
* @param options - Optional fetch options for preview mode and caching
|
|
23
|
-
* @returns CmsResponse with article links (manual first, then fetched) and any errors
|
|
9
|
+
* Curated article refs in `contents` provide IDs and order only; display data is always
|
|
10
|
+
* resolved from `contentfulAllArticleLinks` (or injected `fetchArticleLinks`) so the
|
|
11
|
+
* `article` cache tag revalidates when entries are published.
|
|
24
12
|
*/
|
|
25
13
|
export declare function getRelatedArticles<T extends BaseCollectionContent>(information: IContentfulCollection<T>, contentContext: IContentContext, converterContext: BaseConverterContext, config: ContentfulConfig, count: number | undefined, options: FetchOptions, fetchArticleLinks?: FetchArticleLinksFn): Promise<CmsResponse<IArticleLink[]>>;
|
|
26
14
|
/**
|
|
27
15
|
* Generic helper to get related people for a collection.
|
|
28
16
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
17
|
+
* Curated person refs in `contents` provide IDs and order only; display data is always
|
|
18
|
+
* resolved from `contentfulAllPersonLinks` so the `person` cache tag revalidates on publish.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getRelatedPeople<T extends BaseCollectionContent>(information: IContentfulCollection<T>, contentContext: IContentContext, converterContext: BaseConverterContext, config: ContentfulConfig, count: number, options: FetchOptions, fetchPersonLinks?: (options: FetchOptions) => Promise<CmsResponse<IPersonLink[]>>): Promise<CmsResponse<IPersonLink[]>>;
|
|
21
|
+
/**
|
|
22
|
+
* Generic helper to get related tags for a collection.
|
|
23
|
+
*
|
|
24
|
+
* Curated tag refs in `contents` provide IDs and order only; display data is always
|
|
25
|
+
* resolved from `contentfulAllTagLinks` so the `tag` cache tag revalidates on publish.
|
|
34
26
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* @param converterContext - The project-specific converter context
|
|
38
|
-
* @param config - Contentful configuration
|
|
39
|
-
* @param count - Maximum number of people to return (default: 4)
|
|
40
|
-
* @param options - Optional fetch options for preview mode and caching
|
|
41
|
-
* @returns CmsResponse with person links (manual first, then fetched) and any errors
|
|
27
|
+
* When `contents` has no tag picks, falls back to `pageContext.tag` then the current
|
|
28
|
+
* article's tags (article detail pages). When neither is set, auto-fills from the tag listing.
|
|
42
29
|
*/
|
|
43
|
-
export declare function
|
|
30
|
+
export declare function getRelatedTags<T extends BaseCollectionContent>(information: IContentfulCollection<T>, contentContext: IContentContext, converterContext: BaseConverterContext, config: ContentfulConfig, count: number, options: FetchOptions, fetchTagLinks?: FetchTagLinksFn): Promise<CmsResponse<ITagLink[]>>;
|
|
44
31
|
export {};
|
|
45
32
|
//# sourceMappingURL=componentUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentUtils.d.ts","sourceRoot":"","sources":["../../src/utils/componentUtils.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,WAAW,EAChB,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"componentUtils.d.ts","sourceRoot":"","sources":["../../src/utils/componentUtils.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAC;AAErB,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAIrB,KAAK,YAAY,EAEjB,KAAK,qBAAqB,EAE3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,KAAK,qBAAqB,EAE1B,KAAK,YAAY,EAEjB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,QAAQ,EAKd,MAAM,4BAA4B,CAAC;AA8HpC,KAAK,mBAAmB,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AAC3F,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAEnF;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,qBAAqB,EACtE,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,EACrC,cAAc,EAAE,eAAe,EAC/B,gBAAgB,EAAE,oBAAoB,EACtC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,OAAO,EAAE,YAAY,EACrB,iBAAiB,CAAC,EAAE,mBAAmB,GACtC,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAwFtC;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,SAAS,qBAAqB,EACpE,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,EACrC,cAAc,EAAE,eAAe,EAC/B,gBAAgB,EAAE,oBAAoB,EACtC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,EACrB,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,GAChF,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAuCrC;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,qBAAqB,EAClE,WAAW,EAAE,qBAAqB,CAAC,CAAC,CAAC,EACrC,cAAc,EAAE,eAAe,EAC/B,gBAAgB,EAAE,oBAAoB,EACtC,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,EACrB,aAAa,CAAC,EAAE,eAAe,GAC9B,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAsDlC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
|
-
import { contentfulAllArticleLinks, contentfulAllPersonLinks, filterRelatedArticles, } from '@se-studio/contentful-rest-api';
|
|
2
|
+
import { contentfulAllArticleLinks, contentfulAllPersonLinks, contentfulAllTagLinks, filterRelatedArticles, } from '@se-studio/contentful-rest-api';
|
|
3
3
|
import { getArticleAuthors, isArticleLink, isArticleTypeLink, isPersonLink, isTagLink, } from '@se-studio/core-data-types';
|
|
4
|
+
import { extractCuratedLinkIds, resolveCuratedLinksFromListing } from './linkResolution';
|
|
4
5
|
/**
|
|
5
6
|
* Extract filter criteria (article types, tags, authors) from collection links and contents.
|
|
6
7
|
* Internal helper for getRelatedArticles.
|
|
@@ -70,6 +71,18 @@ function applyFallbackCriteria(criteria, contentContext) {
|
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Tag IDs to resolve when collection contents omit manual tag picks.
|
|
76
|
+
* Internal helper for getRelatedTags.
|
|
77
|
+
*/
|
|
78
|
+
function getRelatedTagsFallbackIds(contentContext) {
|
|
79
|
+
const pageTag = contentContext.pageContext?.tag;
|
|
80
|
+
if (pageTag?.id) {
|
|
81
|
+
return [pageTag.id];
|
|
82
|
+
}
|
|
83
|
+
const article = contentContext.pageContext?.article;
|
|
84
|
+
return article?.tags?.map((t) => t.id).filter((id) => Boolean(id)) ?? [];
|
|
85
|
+
}
|
|
73
86
|
/**
|
|
74
87
|
* Normalize a caught error to CmsError for inclusion in CmsResponse.
|
|
75
88
|
*/
|
|
@@ -97,38 +110,19 @@ function shouldFetchArticles(isAll, remainingSlots, criteria) {
|
|
|
97
110
|
/**
|
|
98
111
|
* Generic helper to get related articles for a collection.
|
|
99
112
|
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
* 3. Applying fallback criteria from page context when links omit filters (article type from
|
|
104
|
-
* context or current article, current person, tag index `pageContext.tag`, or current
|
|
105
|
-
* article tags on article detail pages)
|
|
106
|
-
* 4. Fetching additional articles if needed to reach the requested count
|
|
107
|
-
* 5. Returning manual articles followed by fetched articles
|
|
108
|
-
*
|
|
109
|
-
* @param information - The collection information containing contents and links
|
|
110
|
-
* @param contentContext - The content context containing page context
|
|
111
|
-
* @param converterContext - The project-specific converter context (contains URL rules)
|
|
112
|
-
* @param config - Contentful configuration
|
|
113
|
-
* @param count - Maximum number of articles to return (optional)
|
|
114
|
-
* @param options - Optional fetch options for preview mode and caching
|
|
115
|
-
* @returns CmsResponse with article links (manual first, then fetched) and any errors
|
|
113
|
+
* Curated article refs in `contents` provide IDs and order only; display data is always
|
|
114
|
+
* resolved from `contentfulAllArticleLinks` (or injected `fetchArticleLinks`) so the
|
|
115
|
+
* `article` cache tag revalidates when entries are published.
|
|
116
116
|
*/
|
|
117
117
|
export async function getRelatedArticles(information, contentContext, converterContext, config, count, options, fetchArticleLinks) {
|
|
118
118
|
const isAll = typeof count === 'undefined';
|
|
119
|
-
|
|
120
|
-
const manualArticles = information.contents?.filter((item) => isArticleLink(item)) ?? [];
|
|
119
|
+
const manualArticleIds = extractCuratedLinkIds(information.contents, isArticleLink);
|
|
121
120
|
if (process.env.LOG_RELATED_ARTICLES) {
|
|
122
|
-
console.log(`[RelatedArticles] manual
|
|
123
|
-
}
|
|
124
|
-
// Early return if we have enough manual articles
|
|
125
|
-
if (!isAll && count !== undefined && manualArticles.length >= count) {
|
|
126
|
-
return { data: manualArticles.slice(0, count), errors: [] };
|
|
121
|
+
console.log(`[RelatedArticles] manual article ids: ${manualArticleIds.length} (ids: ${manualArticleIds.join(', ') || 'none'})`);
|
|
127
122
|
}
|
|
128
123
|
if (process.env.LOG_RELATED_ARTICLES) {
|
|
129
124
|
console.log('[RelatedArticles] contents', information.contents);
|
|
130
125
|
}
|
|
131
|
-
// Step 2: Extract and apply filter criteria from links and contents (tags, article types, authors)
|
|
132
126
|
const criteria = extractFilterCriteria(information.links, information.contents);
|
|
133
127
|
if (process.env.LOG_RELATED_ARTICLES) {
|
|
134
128
|
console.log(`[RelatedArticles] criteria (raw): articleTypes=${criteria.articleTypeIds.join(',') || 'none'} tags=${criteria.tagIds.join(',') || 'none'} authors=${criteria.authorIds.join(',') || 'none'}`);
|
|
@@ -137,17 +131,14 @@ export async function getRelatedArticles(information, contentContext, converterC
|
|
|
137
131
|
if (process.env.LOG_RELATED_ARTICLES) {
|
|
138
132
|
console.log(`[RelatedArticles] criteria (after fallback): articleTypes=${criteria.articleTypeIds.join(',') || 'none'} tags=${criteria.tagIds.join(',') || 'none'} authors=${criteria.authorIds.join(',') || 'none'}`);
|
|
139
133
|
}
|
|
140
|
-
// Step 3: Build exclusion list
|
|
141
134
|
const currentArticle = contentContext.pageContext?.article;
|
|
142
|
-
const excludeArticleIds = [
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
];
|
|
146
|
-
// Step 4: Fetch additional articles if needed
|
|
147
|
-
const remainingSlots = isAll || count === undefined ? undefined : count - manualArticles.length;
|
|
135
|
+
const excludeArticleIds = [...manualArticleIds, ...(currentArticle ? [currentArticle.id] : [])];
|
|
136
|
+
const remainingSlots = isAll || count === undefined ? undefined : count - manualArticleIds.length;
|
|
137
|
+
const needsListingFetch = manualArticleIds.length > 0 || shouldFetchArticles(isAll, remainingSlots, criteria);
|
|
138
|
+
let allArticleLinks = [];
|
|
148
139
|
let fetchedArticles = [];
|
|
149
140
|
let errors = [];
|
|
150
|
-
if (
|
|
141
|
+
if (needsListingFetch) {
|
|
151
142
|
if (process.env.LOG_RELATED_ARTICLES) {
|
|
152
143
|
console.log(`[RelatedArticles] fetching all article links (remainingSlots=${remainingSlots ?? 'all'}, excludeIds=${excludeArticleIds.join(',') || 'none'})`);
|
|
153
144
|
}
|
|
@@ -158,76 +149,120 @@ export async function getRelatedArticles(information, contentContext, converterC
|
|
|
158
149
|
fetchProfile: opts.fetchProfile ?? 'listing',
|
|
159
150
|
})))(options);
|
|
160
151
|
errors = response.errors;
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
152
|
+
allArticleLinks = response.data;
|
|
153
|
+
if (shouldFetchArticles(isAll, remainingSlots, criteria)) {
|
|
154
|
+
const filterOptions = {
|
|
155
|
+
excludeArticleIds,
|
|
156
|
+
tagIds: criteria.tagIds,
|
|
157
|
+
articleTypeIds: criteria.articleTypeIds,
|
|
158
|
+
authorIds: criteria.authorIds,
|
|
159
|
+
count: remainingSlots,
|
|
160
|
+
};
|
|
161
|
+
fetchedArticles = filterRelatedArticles(allArticleLinks, filterOptions);
|
|
162
|
+
if (process.env.LOG_RELATED_ARTICLES) {
|
|
163
|
+
console.log(`[RelatedArticles] after filter: ${fetchedArticles.length} articles`);
|
|
164
|
+
}
|
|
171
165
|
}
|
|
172
166
|
}
|
|
173
167
|
catch (error) {
|
|
174
168
|
errors = [toCmsError(error)];
|
|
175
169
|
}
|
|
176
170
|
}
|
|
177
|
-
|
|
178
|
-
const data = [...
|
|
171
|
+
const resolvedManual = resolveCuratedLinksFromListing(manualArticleIds, allArticleLinks);
|
|
172
|
+
const data = [...resolvedManual, ...fetchedArticles].slice(0, count);
|
|
179
173
|
if (process.env.LOG_RELATED_ARTICLES) {
|
|
180
|
-
console.log(`[RelatedArticles] returning ${data.length} articles (${
|
|
174
|
+
console.log(`[RelatedArticles] returning ${data.length} articles (${resolvedManual.length} manual + ${fetchedArticles.length} fetched)`);
|
|
181
175
|
}
|
|
182
176
|
return { data, errors };
|
|
183
177
|
}
|
|
184
178
|
/**
|
|
185
179
|
* Generic helper to get related people for a collection.
|
|
186
180
|
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
* 2. Fetching additional people if needed to reach the requested count
|
|
190
|
-
* 3. Excluding the current person (if on a person page) and manually added people
|
|
191
|
-
* 4. Returning manual people followed by fetched people
|
|
192
|
-
*
|
|
193
|
-
* @param information - The collection information containing contents
|
|
194
|
-
* @param contentContext - The content context containing page context
|
|
195
|
-
* @param converterContext - The project-specific converter context
|
|
196
|
-
* @param config - Contentful configuration
|
|
197
|
-
* @param count - Maximum number of people to return (default: 4)
|
|
198
|
-
* @param options - Optional fetch options for preview mode and caching
|
|
199
|
-
* @returns CmsResponse with person links (manual first, then fetched) and any errors
|
|
181
|
+
* Curated person refs in `contents` provide IDs and order only; display data is always
|
|
182
|
+
* resolved from `contentfulAllPersonLinks` so the `person` cache tag revalidates on publish.
|
|
200
183
|
*/
|
|
201
|
-
export async function getRelatedPeople(information, contentContext, converterContext, config, count, options) {
|
|
202
|
-
|
|
203
|
-
const manualPeople = information.contents?.filter((item) => isPersonLink(item)) ?? [];
|
|
204
|
-
// Early return if we have enough manual people
|
|
205
|
-
if (manualPeople.length >= count) {
|
|
206
|
-
return { data: manualPeople.slice(0, count), errors: [] };
|
|
207
|
-
}
|
|
208
|
-
// Step 2: Build exclusion list
|
|
184
|
+
export async function getRelatedPeople(information, contentContext, converterContext, config, count, options, fetchPersonLinks) {
|
|
185
|
+
const manualPeopleIds = extractCuratedLinkIds(information.contents, isPersonLink);
|
|
209
186
|
const currentPerson = contentContext.pageContext?.person;
|
|
210
187
|
const excludePersonIds = new Set([
|
|
211
|
-
...
|
|
188
|
+
...manualPeopleIds,
|
|
212
189
|
...(currentPerson ? [currentPerson.id] : []),
|
|
213
190
|
]);
|
|
214
|
-
|
|
215
|
-
const
|
|
216
|
-
|
|
191
|
+
const remainingSlots = count - manualPeopleIds.length;
|
|
192
|
+
const needsListingFetch = manualPeopleIds.length > 0 || remainingSlots > 0;
|
|
193
|
+
if (!needsListingFetch) {
|
|
194
|
+
return { data: [], errors: [] };
|
|
195
|
+
}
|
|
196
|
+
let errors = [];
|
|
197
|
+
let allPeople = [];
|
|
198
|
+
try {
|
|
199
|
+
const response = await (fetchPersonLinks ?? ((opts) => contentfulAllPersonLinks(converterContext, config, opts)))(options);
|
|
200
|
+
errors = response.errors;
|
|
201
|
+
allPeople = response.data;
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
return { data: [], errors: [toCmsError(error)] };
|
|
205
|
+
}
|
|
206
|
+
const resolvedManual = resolveCuratedLinksFromListing(manualPeopleIds, allPeople);
|
|
207
|
+
const fetchedPeople = allPeople
|
|
208
|
+
.filter((person) => isPersonLink(person) && !excludePersonIds.has(person.id) && person.indexed !== false)
|
|
209
|
+
.slice(0, Math.max(0, remainingSlots));
|
|
210
|
+
const data = [...resolvedManual, ...fetchedPeople].slice(0, count);
|
|
211
|
+
return { data, errors };
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Generic helper to get related tags for a collection.
|
|
215
|
+
*
|
|
216
|
+
* Curated tag refs in `contents` provide IDs and order only; display data is always
|
|
217
|
+
* resolved from `contentfulAllTagLinks` so the `tag` cache tag revalidates on publish.
|
|
218
|
+
*
|
|
219
|
+
* When `contents` has no tag picks, falls back to `pageContext.tag` then the current
|
|
220
|
+
* article's tags (article detail pages). When neither is set, auto-fills from the tag listing.
|
|
221
|
+
*/
|
|
222
|
+
export async function getRelatedTags(information, contentContext, converterContext, config, count, options, fetchTagLinks) {
|
|
223
|
+
const manualTagIds = extractCuratedLinkIds(information.contents, isTagLink);
|
|
224
|
+
const fallbackCuratedIds = manualTagIds.length > 0 ? [] : getRelatedTagsFallbackIds(contentContext);
|
|
225
|
+
const curatedIds = manualTagIds.length > 0 ? manualTagIds : fallbackCuratedIds;
|
|
226
|
+
const useListingAutofill = manualTagIds.length === 0 && fallbackCuratedIds.length === 0;
|
|
227
|
+
const currentTag = contentContext.pageContext?.tag;
|
|
228
|
+
const excludeTagIds = new Set([...curatedIds, ...(currentTag ? [currentTag.id] : [])]);
|
|
229
|
+
const remainingSlots = count - curatedIds.length;
|
|
230
|
+
const needsListingFetch = curatedIds.length > 0 || remainingSlots > 0 || useListingAutofill;
|
|
231
|
+
if (!needsListingFetch) {
|
|
232
|
+
return { data: [], errors: [] };
|
|
233
|
+
}
|
|
217
234
|
let errors = [];
|
|
235
|
+
let allTags = [];
|
|
218
236
|
try {
|
|
219
|
-
const response = await
|
|
237
|
+
const response = await (fetchTagLinks ??
|
|
238
|
+
(async (opts) => {
|
|
239
|
+
const res = await contentfulAllTagLinks(converterContext, config, opts);
|
|
240
|
+
return {
|
|
241
|
+
data: res.data.filter(isTagLink),
|
|
242
|
+
errors: res.errors,
|
|
243
|
+
};
|
|
244
|
+
}))(options);
|
|
220
245
|
errors = response.errors;
|
|
221
|
-
|
|
222
|
-
fetchedPeople = response.data
|
|
223
|
-
.filter((person) => isPersonLink(person) && !excludePersonIds.has(person.id) && person.indexed !== false)
|
|
224
|
-
.slice(0, remainingSlots);
|
|
246
|
+
allTags = response.data;
|
|
225
247
|
}
|
|
226
248
|
catch (error) {
|
|
227
|
-
|
|
249
|
+
return { data: [], errors: [toCmsError(error)] };
|
|
250
|
+
}
|
|
251
|
+
const resolvedCurated = resolveCuratedLinksFromListing(curatedIds, allTags);
|
|
252
|
+
let fetchedTags = [];
|
|
253
|
+
if (useListingAutofill && resolvedCurated.length < count) {
|
|
254
|
+
const slots = count - resolvedCurated.length;
|
|
255
|
+
fetchedTags = allTags
|
|
256
|
+
.filter((tag) => !excludeTagIds.has(tag.id) && tag.indexed !== false)
|
|
257
|
+
.slice(0, slots);
|
|
258
|
+
}
|
|
259
|
+
else if (!useListingAutofill && manualTagIds.length > 0 && resolvedCurated.length < count) {
|
|
260
|
+
const slots = count - resolvedCurated.length;
|
|
261
|
+
fetchedTags = allTags
|
|
262
|
+
.filter((tag) => !excludeTagIds.has(tag.id) && tag.indexed !== false)
|
|
263
|
+
.slice(0, slots);
|
|
228
264
|
}
|
|
229
|
-
|
|
230
|
-
const data = [...manualPeople, ...fetchedPeople].slice(0, count);
|
|
265
|
+
const data = [...resolvedCurated, ...fetchedTags].slice(0, count);
|
|
231
266
|
return { data, errors };
|
|
232
267
|
}
|
|
233
268
|
//# sourceMappingURL=componentUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentUtils.js","sourceRoot":"","sources":["../../src/utils/componentUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"componentUtils.js","sourceRoot":"","sources":["../../src/utils/componentUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract curated entry IDs from collection contents (order preserved).
|
|
3
|
+
* Used by getRelated* helpers — contents provide selection/order only, not display data.
|
|
4
|
+
*/
|
|
5
|
+
export declare function extractCuratedLinkIds<T extends {
|
|
6
|
+
id: string;
|
|
7
|
+
}>(contents: readonly unknown[] | undefined, isLink: (item: unknown) => item is T): string[];
|
|
8
|
+
/**
|
|
9
|
+
* Resolve curated IDs to fresh link objects from a listing fetch (getAll*Links).
|
|
10
|
+
* Omits IDs not found in the listing (unpublished, unindexed, or conversion errors).
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveCuratedLinksFromListing<T extends {
|
|
13
|
+
id: string;
|
|
14
|
+
}>(curatedIds: readonly string[], allLinks: readonly T[]): T[];
|
|
15
|
+
//# sourceMappingURL=linkResolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkResolution.d.ts","sourceRoot":"","sources":["../../src/utils/linkResolution.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC5D,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,EACxC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,GACnC,MAAM,EAAE,CAEV;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACrE,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,QAAQ,EAAE,SAAS,CAAC,EAAE,GACrB,CAAC,EAAE,CAML"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract curated entry IDs from collection contents (order preserved).
|
|
3
|
+
* Used by getRelated* helpers — contents provide selection/order only, not display data.
|
|
4
|
+
*/
|
|
5
|
+
export function extractCuratedLinkIds(contents, isLink) {
|
|
6
|
+
return (contents ?? []).filter(isLink).map((item) => item.id);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Resolve curated IDs to fresh link objects from a listing fetch (getAll*Links).
|
|
10
|
+
* Omits IDs not found in the listing (unpublished, unindexed, or conversion errors).
|
|
11
|
+
*/
|
|
12
|
+
export function resolveCuratedLinksFromListing(curatedIds, allLinks) {
|
|
13
|
+
if (curatedIds.length === 0) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
const byId = new Map(allLinks.map((link) => [link.id, link]));
|
|
17
|
+
return curatedIds.map((id) => byId.get(id)).filter((link) => link !== undefined);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=linkResolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkResolution.js","sourceRoot":"","sources":["../../src/utils/linkResolution.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAwC,EACxC,MAAoC;IAEpC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAC5C,UAA6B,EAC7B,QAAsB;IAEtB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAa,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC9F,CAAC"}
|
package/docs/llms.md
CHANGED
|
@@ -207,7 +207,7 @@ These are server-only — do NOT import in `'use client'` files or component reg
|
|
|
207
207
|
|
|
208
208
|
```ts
|
|
209
209
|
import { createRouteHandlers } from '@se-studio/core-ui/server';
|
|
210
|
-
import { getRelatedArticles, getRelatedPeople } from '@se-studio/core-ui/server';
|
|
210
|
+
import { getRelatedArticles, getRelatedPeople, getRelatedTags } from '@se-studio/core-ui/server';
|
|
211
211
|
import { filterRelatedArticles, type RelatedArticlesOptions } from '@se-studio/core-ui/server';
|
|
212
212
|
import { getSizingInformation } from '@se-studio/core-ui/server';
|
|
213
213
|
import type { CmsRouteConfig } from '@se-studio/core-ui/server';
|
|
@@ -222,7 +222,7 @@ import type { CmsRouteConfig } from '@se-studio/core-ui/server';
|
|
|
222
222
|
|
|
223
223
|
Resolve canonical path with `findCanonicalPath(testsByPath, variantSlug)` from `@se-studio/ab-testing`.
|
|
224
224
|
|
|
225
|
-
`getRelatedArticles` tag criteria: explicit tag links in the collection → `pageContext.tag` → `pageContext.article.tags`. Pass via `rendererConfig.fetchHelpers.getRelatedArticles` in collections (do not import `cms-server` in registrations). For full-list cases (News Grids, Publications Lists, person-scoped or tag-filtered indexes) use `rendererConfig.fetchHelpers.getAllArticleLinks?.({ articleTypeSlugs: [...], tagSlugs: [...], authorIds: [...], strictAuthorMatch: true, ... })` — the wrapper applies `filterRelatedArticles` (OR semantics, scoring, indexed rules). Import `filterRelatedArticles` / `RelatedArticlesOptions` (and the richer `LinkFetchOptions`) from `@se-studio/core-ui/server`. For all people (e.g. team index collections), use `rendererConfig.fetchHelpers.getAllPersonLinks?.()` — returns `CmsResponse<IPersonLink[]>` including resolved `bio` when set.
|
|
225
|
+
`getRelatedArticles` tag criteria: explicit tag links in the collection → `pageContext.tag` → `pageContext.article.tags`. Pass via `rendererConfig.fetchHelpers.getRelatedArticles` in collections (do not import `cms-server` in registrations). Curated article/person/tag refs in `contents` are **selection and order only** — `getRelated*` helpers always hydrate from `getAll*Links` so publish webhooks revalidate link-shaped UI. For full-list cases (News Grids, Publications Lists, person-scoped or tag-filtered indexes) use `rendererConfig.fetchHelpers.getAllArticleLinks?.({ articleTypeSlugs: [...], tagSlugs: [...], authorIds: [...], strictAuthorMatch: true, ... })` — the wrapper applies `filterRelatedArticles` (OR semantics, scoring, indexed rules). Import `filterRelatedArticles` / `RelatedArticlesOptions` (and the richer `LinkFetchOptions`) from `@se-studio/core-ui/server`. For all people (e.g. team index collections), use `rendererConfig.fetchHelpers.getAllPersonLinks?.()` — returns `CmsResponse<IPersonLink[]>` including resolved `bio` when set. For related tag chips/lists, use `rendererConfig.fetchHelpers.getRelatedTags?.(information, contentContext, count)`.
|
|
226
226
|
|
|
227
227
|
## Server/Client Rules
|
|
228
228
|
|