@se-studio/core-ui 1.14.8 → 1.15.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 +12 -0
- package/README.md +3 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/server/index.d.ts +3 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -1
- package/dist/server/index.js.map +1 -1
- package/dist/utils/agent-ready.d.ts +59 -0
- package/dist/utils/agent-ready.d.ts.map +1 -0
- package/dist/utils/agent-ready.js +172 -0
- package/dist/utils/agent-ready.js.map +1 -0
- package/dist/utils/robots.d.ts +54 -0
- package/dist/utils/robots.d.ts.map +1 -1
- package/dist/utils/robots.js +59 -0
- package/dist/utils/robots.js.map +1 -1
- package/docs/llms.md +66 -13
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @se-studio/core-ui
|
|
2
2
|
|
|
3
|
+
## 1.15.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Agent readiness (Band A): Content Signals via `formatRobotsTxt` / `createRobotsTxtResponse`, markdown Accept negotiation path helpers, and discovery Link header builders for marketing sites.
|
|
8
|
+
|
|
9
|
+
## 1.14.9
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 748ba92: Pin @radix-ui/react-slot to 1.3.0 (1.3.1 breaks Next RSC builds with createContext is not a function).
|
|
14
|
+
|
|
3
15
|
## 1.14.8
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -411,6 +411,9 @@ const previewConfig = mergeCmsRendererConfig(
|
|
|
411
411
|
#### Utilities
|
|
412
412
|
- **`createRobotsConfig`** - Builds `MetadataRoute.Robots` for `src/app/robots.ts` with shared production disallow defaults; configurable via `pathPrefix`, `apiPrefixes`, `disallowExtra`, `disallowOmit`, and `blockTrackingQueryParams`
|
|
413
413
|
- **`buildRobotsDisallow`** - Returns the production disallow path list (for plain-text robots route handlers)
|
|
414
|
+
- **`formatRobotsTxt` / `createRobotsTxtResponse`** - Plain-text robots.txt including optional Content Signals (`src/app/robots.txt/route.ts`)
|
|
415
|
+
- **`resolveMarkdownNegotiationPath` / `prefersMarkdownAccept` / `htmlPathToMarkdownPath`** - Middleware helpers for `Accept: text/markdown` → existing `/{path}.md` rewrites
|
|
416
|
+
- **`appendAgentDiscoveryLinkHeaders` / `buildAgentDiscoveryLinkValues`** - Homepage/document `Link` headers (`describedby` → `/llms.txt`, alternate markdown)
|
|
414
417
|
- **`buildPageMetadata`** - Generates Next.js metadata object from CMS page model
|
|
415
418
|
- **`handleCmsError`** - Error handling utility for CMS operations
|
|
416
419
|
- **`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).
|
package/dist/index.d.ts
CHANGED
|
@@ -88,6 +88,7 @@ export { RTF } from './rtf/rtf';
|
|
|
88
88
|
export type { BasicLayoutProps, BreadcrumbOptions, CmsRouteConfig } from './server/route-types';
|
|
89
89
|
export { toBreadcrumbOptions } from './server/route-types';
|
|
90
90
|
export * from './showcase';
|
|
91
|
+
export { appendAgentDiscoveryLinkHeaders, buildAgentDiscoveryLinkValues, htmlPathToMarkdownPath, prefersMarkdownAccept, resolveMarkdownNegotiationPath, } from './utils/agent-ready';
|
|
91
92
|
export { assertValidSiteBaseUrl } from './utils/assertValidSiteBaseUrl';
|
|
92
93
|
export type { BreadcrumbLookup, BreadcrumbLookupEntry, BreadcrumbSegment, ResolveBreadcrumbSegmentsOptions, } from './utils/breadcrumbUtils';
|
|
93
94
|
export { normalizeBreadcrumbPath, resolveBreadcrumbSegments, } from './utils/breadcrumbUtils';
|
|
@@ -108,8 +109,8 @@ export type { IContent } from './utils/previewUtils';
|
|
|
108
109
|
export { coreGetPreviewAssetIdProps, coreGetPreviewFieldIdProps, coreGetPreviewParentProps, coreGetPreviewProps, getPreviewFieldProps, getPreviewResponsiveVisualFieldProps, } from './utils/previewUtils';
|
|
109
110
|
export { processCollectionLinks } from './utils/processCollectionLinks';
|
|
110
111
|
export { processTextContent } from './utils/processTextContent';
|
|
111
|
-
export type { CreateRobotsConfigOptions } from './utils/robots';
|
|
112
|
-
export { buildRobotsDisallow, createRobotsConfig, DEFAULT_ROBOTS_DISALLOW, TRACKING_QUERY_ROBOTS_DISALLOW, } from './utils/robots';
|
|
112
|
+
export type { ContentSignalPreference, ContentSignals, CreateRobotsConfigOptions, FormatRobotsTxtOptions, } from './utils/robots';
|
|
113
|
+
export { buildRobotsDisallow, createRobotsConfig, createRobotsTxtResponse, DEFAULT_ROBOTS_DISALLOW, formatContentSignalLine, formatRobotsTxt, TRACKING_QUERY_ROBOTS_DISALLOW, } from './utils/robots';
|
|
113
114
|
export { scopeCss } from './utils/scopeCss';
|
|
114
115
|
export type { GenerateSitemapOptions, SitemapChangeFrequency, SitemapEntry, SitemapSource, } from './utils/sitemap';
|
|
115
116
|
export { buildSitemap, deduplicateSitemapEntries, generateNextSitemap, sitemapToXml, sortSitemapEntries, } from './utils/sitemap';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -83,6 +83,7 @@ export { RTF } from './rtf/rtf';
|
|
|
83
83
|
export { toBreadcrumbOptions } from './server/route-types';
|
|
84
84
|
// CMS Showcase
|
|
85
85
|
export * from './showcase';
|
|
86
|
+
export { appendAgentDiscoveryLinkHeaders, buildAgentDiscoveryLinkValues, htmlPathToMarkdownPath, prefersMarkdownAccept, resolveMarkdownNegotiationPath, } from './utils/agent-ready';
|
|
86
87
|
export { assertValidSiteBaseUrl } from './utils/assertValidSiteBaseUrl';
|
|
87
88
|
export { normalizeBreadcrumbPath, resolveBreadcrumbSegments, } from './utils/breadcrumbUtils';
|
|
88
89
|
export { buildPageMetadata, calculateTitleAndDescription, formatSiteGeneratorContent, getLocalizedPath, resolveMetadataAuthors, } from './utils/buildPageMetadata';
|
|
@@ -98,7 +99,7 @@ export { validatePreviewSecret } from './utils/previewPageUtils';
|
|
|
98
99
|
export { coreGetPreviewAssetIdProps, coreGetPreviewFieldIdProps, coreGetPreviewParentProps, coreGetPreviewProps, getPreviewFieldProps, getPreviewResponsiveVisualFieldProps, } from './utils/previewUtils';
|
|
99
100
|
export { processCollectionLinks } from './utils/processCollectionLinks';
|
|
100
101
|
export { processTextContent } from './utils/processTextContent';
|
|
101
|
-
export { buildRobotsDisallow, createRobotsConfig, DEFAULT_ROBOTS_DISALLOW, TRACKING_QUERY_ROBOTS_DISALLOW, } from './utils/robots';
|
|
102
|
+
export { buildRobotsDisallow, createRobotsConfig, createRobotsTxtResponse, DEFAULT_ROBOTS_DISALLOW, formatContentSignalLine, formatRobotsTxt, TRACKING_QUERY_ROBOTS_DISALLOW, } from './utils/robots';
|
|
102
103
|
export { scopeCss } from './utils/scopeCss';
|
|
103
104
|
export { buildSitemap, deduplicateSitemapEntries, generateNextSitemap, sitemapToXml, sortSitemapEntries, } from './utils/sitemap';
|
|
104
105
|
export { buildStructuredDataContext } from './utils/structuredDataUtils';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAMH,YAAY;AACZ,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACvF,qBAAqB;AACrB,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAwBxD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAS9D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAQ3D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMzD,OAAO,EAAE,UAAU,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAQrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,uBAAuB;AACvB,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,sCAAsC,EACtC,aAAa,GAEd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,oBAAoB;AACpB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,GAC3B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,eAAe;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAKhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,eAAe;AACf,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAOxE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,mBAAmB;AACnB,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAIzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,oCAAoC,GACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAMH,YAAY;AACZ,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACvF,qBAAqB;AACrB,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAwBxD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAS9D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAQ3D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMzD,OAAO,EAAE,UAAU,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAQrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,uBAAuB;AACvB,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EACL,sCAAsC,EACtC,aAAa,GAEd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,oBAAoB;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,oBAAoB;AACpB,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EACL,+BAA+B,EAC/B,0BAA0B,GAC3B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,WAAW;AACX,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3E,eAAe;AACf,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAKhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,eAAe;AACf,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,sBAAsB,EACtB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAOxE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EACL,iBAAiB,EACjB,4BAA4B,EAC5B,0BAA0B,EAC1B,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,mBAAmB;AACnB,OAAO,EAAE,EAAE,EAAE,MAAM,YAAY,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAIzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,oCAAoC,GACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAOhE,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,8BAA8B,GAC/B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAQ5C,OAAO,EACL,YAAY,EACZ,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,wBAAwB;AACxB,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,oCAAoC,EAAE,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -3,11 +3,12 @@ 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 { appendAgentDiscoveryLinkHeaders, buildAgentDiscoveryLinkValues, htmlPathToMarkdownPath, prefersMarkdownAccept, resolveMarkdownNegotiationPath, } from '../utils/agent-ready';
|
|
6
7
|
export { getRelatedArticles, getRelatedPeople, getRelatedTags, } from '../utils/componentUtils';
|
|
7
8
|
export type { BuildListingItemsOptions, ListingFetchHelpers, ListingStructuredDataItem, } from '../utils/listingStructuredData';
|
|
8
9
|
export { buildListingItems, buildListingStructuredDataContext, } from '../utils/listingStructuredData';
|
|
9
|
-
export type { CreateRobotsConfigOptions } from '../utils/robots';
|
|
10
|
-
export { buildRobotsDisallow, createRobotsConfig, DEFAULT_ROBOTS_DISALLOW, TRACKING_QUERY_ROBOTS_DISALLOW, } from '../utils/robots';
|
|
10
|
+
export type { ContentSignalPreference, ContentSignals, CreateRobotsConfigOptions, FormatRobotsTxtOptions, } from '../utils/robots';
|
|
11
|
+
export { buildRobotsDisallow, createRobotsConfig, createRobotsTxtResponse, DEFAULT_ROBOTS_DISALLOW, formatContentSignalLine, formatRobotsTxt, TRACKING_QUERY_ROBOTS_DISALLOW, } from '../utils/robots';
|
|
11
12
|
export type { RouteHandlersConfig } from './route-handlers';
|
|
12
13
|
export { createRouteHandlers } from './route-handlers';
|
|
13
14
|
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,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,iCAAiC,GAClC,MAAM,gCAAgC,CAAC;AACxC,YAAY,
|
|
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,+BAA+B,EAC/B,6BAA6B,EAC7B,sBAAsB,EACtB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,iCAAiC,GAClC,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,uBAAuB,EACvB,cAAc,EACd,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AACzB,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,9 +1,10 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
2
|
export { filterRelatedArticles } from '@se-studio/contentful-rest-api';
|
|
3
3
|
export { createAppHelpers } from '../app-helpers';
|
|
4
|
+
export { appendAgentDiscoveryLinkHeaders, buildAgentDiscoveryLinkValues, htmlPathToMarkdownPath, prefersMarkdownAccept, resolveMarkdownNegotiationPath, } from '../utils/agent-ready';
|
|
4
5
|
export { getRelatedArticles, getRelatedPeople, getRelatedTags, } from '../utils/componentUtils';
|
|
5
6
|
export { buildListingItems, buildListingStructuredDataContext, } from '../utils/listingStructuredData';
|
|
6
|
-
export { buildRobotsDisallow, createRobotsConfig, DEFAULT_ROBOTS_DISALLOW, TRACKING_QUERY_ROBOTS_DISALLOW, } from '../utils/robots';
|
|
7
|
+
export { buildRobotsDisallow, createRobotsConfig, createRobotsTxtResponse, DEFAULT_ROBOTS_DISALLOW, formatContentSignalLine, formatRobotsTxt, TRACKING_QUERY_ROBOTS_DISALLOW, } from '../utils/robots';
|
|
7
8
|
export { createRouteHandlers } from './route-handlers';
|
|
8
9
|
export { toBreadcrumbOptions } from './route-types';
|
|
9
10
|
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,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACf,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EACL,iBAAiB,EACjB,iCAAiC,GAClC,MAAM,gCAAgC,CAAC;
|
|
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,+BAA+B,EAC/B,6BAA6B,EAC7B,sBAAsB,EACtB,qBAAqB,EACrB,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,GACf,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EACL,iBAAiB,EACjB,iCAAiC,GAClC,MAAM,gCAAgC,CAAC;AAOxC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,eAAe,EACf,8BAA8B,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent-readiness helpers for marketing sites (Band A):
|
|
3
|
+
* - Markdown content negotiation path mapping (`Accept: text/markdown`)
|
|
4
|
+
* - Discovery Link header values (RFC 8288)
|
|
5
|
+
*
|
|
6
|
+
* Pure utilities — wire from Next.js middleware with `NextResponse.rewrite` /
|
|
7
|
+
* `headers.append`. Does not import `next/server` so the main barrel stays
|
|
8
|
+
* client-safe.
|
|
9
|
+
*
|
|
10
|
+
* @see https://isitagentready.com/
|
|
11
|
+
* @see https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Whether the client prefers `text/markdown` over `text/html`.
|
|
15
|
+
*
|
|
16
|
+
* Returns true when:
|
|
17
|
+
* - `text/markdown` is present and `text/html` is not, or
|
|
18
|
+
* - `text/markdown` has a strictly higher `q` than `text/html`.
|
|
19
|
+
*
|
|
20
|
+
* Returns false for empty Accept, HTML-only browser defaults, and equal-q
|
|
21
|
+
* markdown+html (prefer HTML to avoid surprising dual listings).
|
|
22
|
+
*/
|
|
23
|
+
export declare function prefersMarkdownAccept(acceptHeader: string | null | undefined): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Map a public HTML pathname to the site's markdown export path.
|
|
26
|
+
*
|
|
27
|
+
* Conventions match SE Studio rewrites:
|
|
28
|
+
* - `/` → `/index.md`
|
|
29
|
+
* - `/about/` → `/about.md`
|
|
30
|
+
* - `/blog/slug/` → `/blog/slug.md`
|
|
31
|
+
*
|
|
32
|
+
* Returns `null` when the path is already markdown, a static asset, or an
|
|
33
|
+
* infrastructure prefix that should not negotiate.
|
|
34
|
+
*/
|
|
35
|
+
export declare function htmlPathToMarkdownPath(pathname: string): string | null;
|
|
36
|
+
/**
|
|
37
|
+
* If Accept prefers markdown, return the rewrite pathname; otherwise `null`.
|
|
38
|
+
* Middleware should `NextResponse.rewrite` to this path and set `Vary: Accept`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveMarkdownNegotiationPath(pathname: string, acceptHeader: string | null | undefined): string | null;
|
|
41
|
+
/**
|
|
42
|
+
* Build Link header values for agent discovery on HTML document responses.
|
|
43
|
+
*
|
|
44
|
+
* Always includes `describedby` → `/llms.txt` (registered relation for
|
|
45
|
+
* isitagentready linkHeaders). Adds `alternate` markdown when mappable.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* for (const value of buildAgentDiscoveryLinkValues('/about/')) {
|
|
49
|
+
* response.headers.append('Link', value);
|
|
50
|
+
* }
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildAgentDiscoveryLinkValues(pathname: string): string[];
|
|
53
|
+
/**
|
|
54
|
+
* Append agent discovery Link headers onto a headers bag (e.g. NextResponse.headers).
|
|
55
|
+
*/
|
|
56
|
+
export declare function appendAgentDiscoveryLinkHeaders(headers: {
|
|
57
|
+
append: (name: string, value: string) => void;
|
|
58
|
+
}, pathname: string): void;
|
|
59
|
+
//# sourceMappingURL=agent-ready.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-ready.d.ts","sourceRoot":"","sources":["../../src/utils/agent-ready.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsEH;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAiBtF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqCtE;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACtC,MAAM,GAAG,IAAI,CAKf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CASxE;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE;IAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,EAC1D,QAAQ,EAAE,MAAM,GACf,IAAI,CAIN"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent-readiness helpers for marketing sites (Band A):
|
|
3
|
+
* - Markdown content negotiation path mapping (`Accept: text/markdown`)
|
|
4
|
+
* - Discovery Link header values (RFC 8288)
|
|
5
|
+
*
|
|
6
|
+
* Pure utilities — wire from Next.js middleware with `NextResponse.rewrite` /
|
|
7
|
+
* `headers.append`. Does not import `next/server` so the main barrel stays
|
|
8
|
+
* client-safe.
|
|
9
|
+
*
|
|
10
|
+
* @see https://isitagentready.com/
|
|
11
|
+
* @see https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/
|
|
12
|
+
*/
|
|
13
|
+
/** Path prefixes that should never negotiate to markdown. */
|
|
14
|
+
const MARKDOWN_NEGOTIATION_SKIP_PREFIXES = [
|
|
15
|
+
'/_next',
|
|
16
|
+
'/api/',
|
|
17
|
+
'/og/',
|
|
18
|
+
'/cms/',
|
|
19
|
+
'/preview/',
|
|
20
|
+
'/page-test/',
|
|
21
|
+
'/_video/',
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Parse an HTTP Accept header into media ranges with quality values.
|
|
25
|
+
* Invalid / missing q defaults to 1.
|
|
26
|
+
*/
|
|
27
|
+
function parseAcceptHeader(accept) {
|
|
28
|
+
const ranges = [];
|
|
29
|
+
for (const part of accept.split(',')) {
|
|
30
|
+
const trimmed = part.trim();
|
|
31
|
+
if (!trimmed) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const segments = trimmed.split(';');
|
|
35
|
+
const type = (segments[0] ?? '').trim().toLowerCase();
|
|
36
|
+
if (!type) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
let q = 1;
|
|
40
|
+
for (let i = 1; i < segments.length; i++) {
|
|
41
|
+
const param = (segments[i] ?? '').trim();
|
|
42
|
+
const eq = param.indexOf('=');
|
|
43
|
+
if (eq === -1) {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const key = param.slice(0, eq).trim().toLowerCase();
|
|
47
|
+
const value = param.slice(eq + 1).trim();
|
|
48
|
+
if (key === 'q') {
|
|
49
|
+
const parsed = Number.parseFloat(value);
|
|
50
|
+
if (!Number.isNaN(parsed)) {
|
|
51
|
+
q = parsed;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
ranges.push({ type, q });
|
|
56
|
+
}
|
|
57
|
+
return ranges;
|
|
58
|
+
}
|
|
59
|
+
function maxQ(ranges, mediaType) {
|
|
60
|
+
let max;
|
|
61
|
+
for (const range of ranges) {
|
|
62
|
+
if (range.type === mediaType) {
|
|
63
|
+
max = max === undefined ? range.q : Math.max(max, range.q);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return max;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Whether the client prefers `text/markdown` over `text/html`.
|
|
70
|
+
*
|
|
71
|
+
* Returns true when:
|
|
72
|
+
* - `text/markdown` is present and `text/html` is not, or
|
|
73
|
+
* - `text/markdown` has a strictly higher `q` than `text/html`.
|
|
74
|
+
*
|
|
75
|
+
* Returns false for empty Accept, HTML-only browser defaults, and equal-q
|
|
76
|
+
* markdown+html (prefer HTML to avoid surprising dual listings).
|
|
77
|
+
*/
|
|
78
|
+
export function prefersMarkdownAccept(acceptHeader) {
|
|
79
|
+
if (!acceptHeader?.trim()) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
const ranges = parseAcceptHeader(acceptHeader);
|
|
83
|
+
const markdownQ = maxQ(ranges, 'text/markdown');
|
|
84
|
+
if (markdownQ === undefined) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
const htmlQ = maxQ(ranges, 'text/html');
|
|
88
|
+
if (htmlQ === undefined) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return markdownQ > htmlQ;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Map a public HTML pathname to the site's markdown export path.
|
|
95
|
+
*
|
|
96
|
+
* Conventions match SE Studio rewrites:
|
|
97
|
+
* - `/` → `/index.md`
|
|
98
|
+
* - `/about/` → `/about.md`
|
|
99
|
+
* - `/blog/slug/` → `/blog/slug.md`
|
|
100
|
+
*
|
|
101
|
+
* Returns `null` when the path is already markdown, a static asset, or an
|
|
102
|
+
* infrastructure prefix that should not negotiate.
|
|
103
|
+
*/
|
|
104
|
+
export function htmlPathToMarkdownPath(pathname) {
|
|
105
|
+
if (!pathname || pathname.includes('..') || pathname.includes('\\')) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const pathOnly = pathname.split('?')[0]?.split('#')[0] ?? pathname;
|
|
109
|
+
for (const prefix of MARKDOWN_NEGOTIATION_SKIP_PREFIXES) {
|
|
110
|
+
if (pathOnly === prefix.replace(/\/$/, '') || pathOnly.startsWith(prefix)) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Root
|
|
115
|
+
if (pathOnly === '/' || pathOnly === '') {
|
|
116
|
+
return '/index.md';
|
|
117
|
+
}
|
|
118
|
+
const lastSegment = pathOnly.split('/').filter(Boolean).pop() ?? '';
|
|
119
|
+
// Already a file-like path with an extension
|
|
120
|
+
if (lastSegment.includes('.')) {
|
|
121
|
+
if (lastSegment.endsWith('.md')) {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
// Other static-like extensions
|
|
125
|
+
if (/\.[a-zA-Z0-9]{1,12}$/.test(lastSegment)) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const withoutTrailingSlash = pathOnly.endsWith('/') ? pathOnly.slice(0, -1) : pathOnly;
|
|
130
|
+
if (!withoutTrailingSlash || withoutTrailingSlash === '/') {
|
|
131
|
+
return '/index.md';
|
|
132
|
+
}
|
|
133
|
+
return `${withoutTrailingSlash}.md`;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* If Accept prefers markdown, return the rewrite pathname; otherwise `null`.
|
|
137
|
+
* Middleware should `NextResponse.rewrite` to this path and set `Vary: Accept`.
|
|
138
|
+
*/
|
|
139
|
+
export function resolveMarkdownNegotiationPath(pathname, acceptHeader) {
|
|
140
|
+
if (!prefersMarkdownAccept(acceptHeader)) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
return htmlPathToMarkdownPath(pathname);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Build Link header values for agent discovery on HTML document responses.
|
|
147
|
+
*
|
|
148
|
+
* Always includes `describedby` → `/llms.txt` (registered relation for
|
|
149
|
+
* isitagentready linkHeaders). Adds `alternate` markdown when mappable.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* for (const value of buildAgentDiscoveryLinkValues('/about/')) {
|
|
153
|
+
* response.headers.append('Link', value);
|
|
154
|
+
* }
|
|
155
|
+
*/
|
|
156
|
+
export function buildAgentDiscoveryLinkValues(pathname) {
|
|
157
|
+
const links = ['</llms.txt>; rel="describedby"'];
|
|
158
|
+
const markdownPath = htmlPathToMarkdownPath(pathname);
|
|
159
|
+
if (markdownPath) {
|
|
160
|
+
links.push(`<${markdownPath}>; rel="alternate"; type="text/markdown"`);
|
|
161
|
+
}
|
|
162
|
+
return links;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Append agent discovery Link headers onto a headers bag (e.g. NextResponse.headers).
|
|
166
|
+
*/
|
|
167
|
+
export function appendAgentDiscoveryLinkHeaders(headers, pathname) {
|
|
168
|
+
for (const value of buildAgentDiscoveryLinkValues(pathname)) {
|
|
169
|
+
headers.append('Link', value);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=agent-ready.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-ready.js","sourceRoot":"","sources":["../../src/utils/agent-ready.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/robots.d.ts
CHANGED
|
@@ -7,6 +7,20 @@ export declare const DEFAULT_ROBOTS_DISALLOW: readonly ["/*?_rsc=*", "/_next/dat
|
|
|
7
7
|
* help other crawlers and audit tooling but are not a complete Google fix.
|
|
8
8
|
*/
|
|
9
9
|
export declare const TRACKING_QUERY_ROBOTS_DISALLOW: readonly ["/*?_gl=*", "/*?nnerid=*", "/*?ref=*"];
|
|
10
|
+
/** Yes/no preference for Content Signals (contentsignals.org). */
|
|
11
|
+
export type ContentSignalPreference = 'yes' | 'no';
|
|
12
|
+
/**
|
|
13
|
+
* AI usage preferences for robots.txt Content-Signal directives.
|
|
14
|
+
* @see https://contentsignals.org/
|
|
15
|
+
*/
|
|
16
|
+
export interface ContentSignals {
|
|
17
|
+
/** Building a search index / classic search results. */
|
|
18
|
+
search: ContentSignalPreference;
|
|
19
|
+
/** Training or fine-tuning AI models. */
|
|
20
|
+
aiTrain: ContentSignalPreference;
|
|
21
|
+
/** Using content as AI input (RAG, grounding, inference). */
|
|
22
|
+
aiInput: ContentSignalPreference;
|
|
23
|
+
}
|
|
10
24
|
export interface CreateRobotsConfigOptions {
|
|
11
25
|
isProduction: boolean;
|
|
12
26
|
baseUrl: string;
|
|
@@ -39,6 +53,15 @@ export interface CreateRobotsConfigOptions {
|
|
|
39
53
|
allow: string;
|
|
40
54
|
}>;
|
|
41
55
|
}
|
|
56
|
+
/** Options for plain-text robots.txt (supports Content-Signal). */
|
|
57
|
+
export interface FormatRobotsTxtOptions extends CreateRobotsConfigOptions {
|
|
58
|
+
/**
|
|
59
|
+
* When set (production only), emit a Content-Signal line under `User-agent: *`.
|
|
60
|
+
* Next.js `MetadataRoute.Robots` cannot express this — use `formatRobotsTxt` /
|
|
61
|
+
* `createRobotsTxtResponse` in `src/app/robots.txt/route.ts` instead of `robots.ts`.
|
|
62
|
+
*/
|
|
63
|
+
contentSignals?: ContentSignals;
|
|
64
|
+
}
|
|
42
65
|
/**
|
|
43
66
|
* Builds the production disallow path list from options.
|
|
44
67
|
* Exported for tests and sites that render plain-text robots (e.g. Brightline Content-Signal).
|
|
@@ -49,6 +72,37 @@ export declare function buildRobotsDisallow(options: CreateRobotsConfigOptions):
|
|
|
49
72
|
*
|
|
50
73
|
* In production: allows `/` and disallows internal/infrastructure paths.
|
|
51
74
|
* In non-production: disallows all crawlers (with optional staging bot allowlist).
|
|
75
|
+
*
|
|
76
|
+
* **Content-Signal:** not supported here (Next metadata type). Use
|
|
77
|
+
* {@link formatRobotsTxt} / {@link createRobotsTxtResponse} in a route handler.
|
|
52
78
|
*/
|
|
53
79
|
export declare function createRobotsConfig(options: CreateRobotsConfigOptions): MetadataRoute.Robots;
|
|
80
|
+
/**
|
|
81
|
+
* Formats a single Content-Signal directive line (no trailing newline).
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* formatContentSignalLine({ search: 'yes', aiTrain: 'no', aiInput: 'yes' })
|
|
85
|
+
* // → 'Content-Signal: search=yes, ai-train=no, ai-input=yes'
|
|
86
|
+
*/
|
|
87
|
+
export declare function formatContentSignalLine(signals: ContentSignals): string;
|
|
88
|
+
/**
|
|
89
|
+
* Builds a full plain-text robots.txt body, including optional Content-Signal.
|
|
90
|
+
*
|
|
91
|
+
* Prefer this over `createRobotsConfig` when you need Content Signals or other
|
|
92
|
+
* non-standard directives. Serve from `src/app/robots.txt/route.ts`.
|
|
93
|
+
*/
|
|
94
|
+
export declare function formatRobotsTxt(options: FormatRobotsTxtOptions): string;
|
|
95
|
+
/**
|
|
96
|
+
* Returns a `text/plain` Response for `src/app/robots.txt/route.ts`.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* export function GET() {
|
|
100
|
+
* return createRobotsTxtResponse({
|
|
101
|
+
* isProduction,
|
|
102
|
+
* baseUrl,
|
|
103
|
+
* contentSignals: { search: 'yes', aiTrain: 'no', aiInput: 'yes' },
|
|
104
|
+
* });
|
|
105
|
+
* }
|
|
106
|
+
*/
|
|
107
|
+
export declare function createRobotsTxtResponse(options: FormatRobotsTxtOptions): Response;
|
|
54
108
|
//# sourceMappingURL=robots.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../../src/utils/robots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAE1C,uEAAuE;AACvE,eAAO,MAAM,uBAAuB,8FAQ1B,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,kDAAmD,CAAC;AAE/F,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,+CAA+C;IAC/C,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0FAA0F;IAC1F,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,4CAA4C;IAC5C,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE;AA2CD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,EAAE,CAwBhF;AAED
|
|
1
|
+
{"version":3,"file":"robots.d.ts","sourceRoot":"","sources":["../../src/utils/robots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAE1C,uEAAuE;AACvE,eAAO,MAAM,uBAAuB,8FAQ1B,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,kDAAmD,CAAC;AAE/F,kEAAkE;AAClE,MAAM,MAAM,uBAAuB,GAAG,KAAK,GAAG,IAAI,CAAC;AAEnD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,MAAM,EAAE,uBAAuB,CAAC;IAChC,yCAAyC;IACzC,OAAO,EAAE,uBAAuB,CAAC;IACjC,6DAA6D;IAC7D,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,+CAA+C;IAC/C,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0FAA0F;IAC1F,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,4CAA4C;IAC5C,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE;AAED,mEAAmE;AACnE,MAAM,WAAW,sBAAuB,SAAQ,yBAAyB;IACvE;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AA2CD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,EAAE,CAwBhF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,aAAa,CAAC,MAAM,CAiC3F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAEvE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CA8BvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,sBAAsB,GAAG,QAAQ,CAIjF"}
|
package/dist/utils/robots.js
CHANGED
|
@@ -75,6 +75,9 @@ export function buildRobotsDisallow(options) {
|
|
|
75
75
|
*
|
|
76
76
|
* In production: allows `/` and disallows internal/infrastructure paths.
|
|
77
77
|
* In non-production: disallows all crawlers (with optional staging bot allowlist).
|
|
78
|
+
*
|
|
79
|
+
* **Content-Signal:** not supported here (Next metadata type). Use
|
|
80
|
+
* {@link formatRobotsTxt} / {@link createRobotsTxtResponse} in a route handler.
|
|
78
81
|
*/
|
|
79
82
|
export function createRobotsConfig(options) {
|
|
80
83
|
const sitemap = options.sitemapUrl ?? `${options.baseUrl}/sitemap.xml`;
|
|
@@ -106,4 +109,60 @@ export function createRobotsConfig(options) {
|
|
|
106
109
|
sitemap,
|
|
107
110
|
};
|
|
108
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Formats a single Content-Signal directive line (no trailing newline).
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* formatContentSignalLine({ search: 'yes', aiTrain: 'no', aiInput: 'yes' })
|
|
117
|
+
* // → 'Content-Signal: search=yes, ai-train=no, ai-input=yes'
|
|
118
|
+
*/
|
|
119
|
+
export function formatContentSignalLine(signals) {
|
|
120
|
+
return `Content-Signal: search=${signals.search}, ai-train=${signals.aiTrain}, ai-input=${signals.aiInput}`;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Builds a full plain-text robots.txt body, including optional Content-Signal.
|
|
124
|
+
*
|
|
125
|
+
* Prefer this over `createRobotsConfig` when you need Content Signals or other
|
|
126
|
+
* non-standard directives. Serve from `src/app/robots.txt/route.ts`.
|
|
127
|
+
*/
|
|
128
|
+
export function formatRobotsTxt(options) {
|
|
129
|
+
const sitemap = options.sitemapUrl ?? `${options.baseUrl}/sitemap.xml`;
|
|
130
|
+
if (!options.isProduction) {
|
|
131
|
+
const lines = ['User-agent: *', 'Disallow: /'];
|
|
132
|
+
if (options.stagingAllowRules?.length) {
|
|
133
|
+
for (const rule of options.stagingAllowRules) {
|
|
134
|
+
lines.push('', `User-agent: ${rule.userAgent}`, `Allow: ${rule.allow}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
lines.push('', `Sitemap: ${sitemap}`, '');
|
|
138
|
+
return lines.join('\n');
|
|
139
|
+
}
|
|
140
|
+
const lines = ['User-agent: *'];
|
|
141
|
+
if (options.contentSignals) {
|
|
142
|
+
lines.push(formatContentSignalLine(options.contentSignals));
|
|
143
|
+
}
|
|
144
|
+
lines.push('Allow: /');
|
|
145
|
+
for (const path of buildRobotsDisallow(options)) {
|
|
146
|
+
lines.push(`Disallow: ${path}`);
|
|
147
|
+
}
|
|
148
|
+
lines.push('', `Sitemap: ${sitemap}`, '');
|
|
149
|
+
return lines.join('\n');
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Returns a `text/plain` Response for `src/app/robots.txt/route.ts`.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* export function GET() {
|
|
156
|
+
* return createRobotsTxtResponse({
|
|
157
|
+
* isProduction,
|
|
158
|
+
* baseUrl,
|
|
159
|
+
* contentSignals: { search: 'yes', aiTrain: 'no', aiInput: 'yes' },
|
|
160
|
+
* });
|
|
161
|
+
* }
|
|
162
|
+
*/
|
|
163
|
+
export function createRobotsTxtResponse(options) {
|
|
164
|
+
return new Response(formatRobotsTxt(options), {
|
|
165
|
+
headers: { 'Content-Type': 'text/plain; charset=utf-8' },
|
|
166
|
+
});
|
|
167
|
+
}
|
|
109
168
|
//# sourceMappingURL=robots.js.map
|
package/dist/utils/robots.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"robots.js","sourceRoot":"","sources":["../../src/utils/robots.ts"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW;IACX,cAAc;IACd,OAAO;IACP,WAAW;IACX,aAAa;IACb,OAAO;IACP,MAAM;CACE,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"robots.js","sourceRoot":"","sources":["../../src/utils/robots.ts"],"names":[],"mappings":"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"}
|
package/docs/llms.md
CHANGED
|
@@ -164,7 +164,9 @@ JSON-LD (`buildStructuredDataContext`) remains the primary signal for multi-auth
|
|
|
164
164
|
|
|
165
165
|
## robots.txt
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
### Metadata route (no Content-Signal)
|
|
168
|
+
|
|
169
|
+
Use `createRobotsConfig` in `src/app/robots.ts` when you do not need Content Signals:
|
|
168
170
|
|
|
169
171
|
```ts
|
|
170
172
|
import { createRobotsConfig } from '@se-studio/core-ui';
|
|
@@ -180,21 +182,72 @@ Default production disallows: `/*?_rsc=*`, `/_next/data/`, `/api/`, `/preview/`,
|
|
|
180
182
|
|
|
181
183
|
**Split-domain sites (Point Me):** pass `pathPrefix` (`SITE_PREFIX`), extra `apiPrefixes` (`/marketing-api/`), `disallowExtra`, `disallowOmit`, and `blockTrackingQueryParams` as needed. Query-string disallows help non-Google crawlers; Google matches path only — pair with strong canonicals.
|
|
182
184
|
|
|
185
|
+
### Content Signals (recommended for agent readiness)
|
|
186
|
+
|
|
187
|
+
Next.js `MetadataRoute.Robots` cannot emit `Content-Signal`. Use a route handler:
|
|
188
|
+
|
|
183
189
|
```ts
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
190
|
+
// src/app/robots.txt/route.ts
|
|
191
|
+
import { createRobotsTxtResponse } from '@se-studio/core-ui';
|
|
192
|
+
import { isProduction } from '@/lib/config';
|
|
193
|
+
import { baseUrl } from '@/lib/server-config';
|
|
194
|
+
|
|
195
|
+
export function GET() {
|
|
196
|
+
return createRobotsTxtResponse({
|
|
197
|
+
isProduction,
|
|
198
|
+
baseUrl,
|
|
199
|
+
contentSignals: { search: 'yes', aiTrain: 'no', aiInput: 'yes' },
|
|
200
|
+
// disallowExtra: ['/private/'],
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Also: `formatRobotsTxt`, `formatContentSignalLine`, `buildRobotsDisallow`.
|
|
206
|
+
|
|
207
|
+
## Agent readiness (Band A)
|
|
208
|
+
|
|
209
|
+
Helpers for marketing sites that already expose `/{path}.md` and `/llms.txt`:
|
|
210
|
+
|
|
211
|
+
```ts
|
|
212
|
+
// middleware.ts — before A/B rewrites
|
|
213
|
+
import {
|
|
214
|
+
appendAgentDiscoveryLinkHeaders,
|
|
215
|
+
resolveMarkdownNegotiationPath,
|
|
216
|
+
} from '@se-studio/core-ui';
|
|
217
|
+
import { type NextRequest, NextResponse } from 'next/server';
|
|
218
|
+
|
|
219
|
+
export function middleware(request: NextRequest) {
|
|
220
|
+
const { pathname } = request.nextUrl;
|
|
221
|
+
|
|
222
|
+
const markdownPath = resolveMarkdownNegotiationPath(
|
|
223
|
+
pathname,
|
|
224
|
+
request.headers.get('accept'),
|
|
225
|
+
);
|
|
226
|
+
if (markdownPath) {
|
|
227
|
+
const url = request.nextUrl.clone();
|
|
228
|
+
url.pathname = markdownPath;
|
|
229
|
+
const response = NextResponse.rewrite(url);
|
|
230
|
+
response.headers.set('Vary', 'Accept');
|
|
231
|
+
return response;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
const response = NextResponse.next();
|
|
235
|
+
appendAgentDiscoveryLinkHeaders(response.headers, pathname);
|
|
236
|
+
// Ensure caches vary on Accept if you also negotiate elsewhere
|
|
237
|
+
const vary = response.headers.get('Vary');
|
|
238
|
+
if (!vary?.toLowerCase().includes('accept')) {
|
|
239
|
+
response.headers.set('Vary', vary ? `${vary}, Accept` : 'Accept');
|
|
240
|
+
}
|
|
241
|
+
return response;
|
|
242
|
+
}
|
|
195
243
|
```
|
|
196
244
|
|
|
197
|
-
|
|
245
|
+
| Helper | Purpose |
|
|
246
|
+
|--------|---------|
|
|
247
|
+
| `prefersMarkdownAccept` | Parse Accept; true when markdown preferred over HTML |
|
|
248
|
+
| `htmlPathToMarkdownPath` | `/` → `/index.md`, `/about/` → `/about.md` |
|
|
249
|
+
| `resolveMarkdownNegotiationPath` | Combine both for middleware rewrite target |
|
|
250
|
+
| `buildAgentDiscoveryLinkValues` / `appendAgentDiscoveryLinkHeaders` | `Link: </llms.txt>; rel="describedby"` + alternate markdown |
|
|
198
251
|
|
|
199
252
|
### Person profile pages
|
|
200
253
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@se-studio/core-ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"description": "Shared React UI component library with Tailwind CSS v4 for SE Studio applications",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"@contentful/live-preview": "^4.10.12",
|
|
68
68
|
"@contentful/rich-text-react-renderer": "^16.2.1",
|
|
69
69
|
"@contentful/rich-text-types": "^17.2.7",
|
|
70
|
-
"@radix-ui/react-slot": "
|
|
70
|
+
"@radix-ui/react-slot": "1.3.0",
|
|
71
71
|
"@types/mustache": "4.2.6",
|
|
72
72
|
"clsx": "^2.1.1",
|
|
73
73
|
"hls.js": "^1.6.16",
|