@brandlab-digital/site-next 3.3.3 → 3.4.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/dist/sitemaps.d.ts.map +1 -1
- package/dist/sitemaps.js +2 -8
- package/dist/sitemaps.js.map +1 -1
- package/package.json +2 -2
package/dist/sitemaps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemaps.d.ts","sourceRoot":"","sources":["../src/sitemaps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAqB,MAAM,oCAAoC,CAAA;AACjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"sitemaps.d.ts","sourceRoot":"","sources":["../src/sitemaps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAqB,MAAM,oCAAoC,CAAA;AACjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAQL,KAAK,YAAY,EAClB,MAAM,sCAAsC,CAAA;AAE7C,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,QAAQ,CAI7E;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,EAAE;IAAE,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,GACjD,QAAQ,CAIV;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEpD,MAAM,WAAW,2BAA2B;IAC1C,0EAA0E;IAC1E,IAAI,EAAE,mBAAmB,CAAA;IACzB,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,uFAAuF;IACvF,GAAG,IAAI,QAAQ,CAAA;IACf,qEAAqE;IACrE,UAAU,IAAI,MAAM,EAAE,CAAA;IACtB,sFAAsF;IACtF,KAAK,EAAE;QACL,oBAAoB,IAAI;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;QAC3C,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,gCAAgC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;KACpF,CAAA;CACF;AA2BD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,2BAAgD,GACxD,oBAAoB,CAsCtB"}
|
package/dist/sitemaps.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getAbsoluteUrl } from '@brandlab-digital/site-core/metadata';
|
|
2
|
-
import { buildSitemapEntries, createSitemapChunks, getSitemapXmlHeaders, serializeSitemap, serializeSitemapIndex, } from '@brandlab-digital/site-core/sitemaps';
|
|
2
|
+
import { BRANDLAB_SITEMAP_FAMILIES, buildSitemapEntries, createSitemapChunks, getSitemapXmlHeaders, serializeSitemap, serializeSitemapIndex, } from '@brandlab-digital/site-core/sitemaps';
|
|
3
3
|
export function sitemapXmlResponse(entries) {
|
|
4
4
|
return new Response(serializeSitemap(entries), {
|
|
5
5
|
headers: getSitemapXmlHeaders(),
|
|
@@ -10,13 +10,7 @@ export function sitemapIndexXmlResponse(paths, options) {
|
|
|
10
10
|
headers: getSitemapXmlHeaders(),
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
|
-
const SPLIT_SITEMAP_FAMILIES =
|
|
14
|
-
{ name: 'services', kinds: ['service'] },
|
|
15
|
-
{ name: 'locations', kinds: ['location'] },
|
|
16
|
-
{ name: 'service-locations', kinds: ['service-location'] },
|
|
17
|
-
{ name: 'blog', kinds: ['blog-post'] },
|
|
18
|
-
{ name: 'projects', kinds: ['project'] },
|
|
19
|
-
];
|
|
13
|
+
const SPLIT_SITEMAP_FAMILIES = BRANDLAB_SITEMAP_FAMILIES;
|
|
20
14
|
const SPLIT_SITEMAP_PREFIX = '/sitemaps';
|
|
21
15
|
const DEFAULT_SPLIT_MAX_URLS = 1_000;
|
|
22
16
|
function splitSitemapChunks(routes, siteUrl, maxUrlsPerSitemap) {
|
package/dist/sitemaps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sitemaps.js","sourceRoot":"","sources":["../src/sitemaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AAGrE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,GAGtB,MAAM,sCAAsC,CAAA;AAE7C,MAAM,UAAU,kBAAkB,CAAC,OAAgC;IACjE,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;QAC7C,OAAO,EAAE,oBAAoB,EAAE;KAChC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAwB,EACxB,OAAkD;IAElD,OAAO,IAAI,QAAQ,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;QACzD,OAAO,EAAE,oBAAoB,EAAE;KAChC,CAAC,CAAA;AACJ,CAAC;AA4BD,MAAM,sBAAsB,GAAqE
|
|
1
|
+
{"version":3,"file":"sitemaps.js","sourceRoot":"","sources":["../src/sitemaps.ts"],"names":[],"mappings":"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","sourcesContent":["import { getAbsoluteUrl } from '@brandlab-digital/site-core/metadata'\nimport type { BrandlabRouteCatalog, BrandlabRouteKind } from '@brandlab-digital/site-core/routes'\nimport type { BrandlabSite } from '@brandlab-digital/site-core/site'\nimport {\n BRANDLAB_SITEMAP_FAMILIES,\n buildSitemapEntries,\n createSitemapChunks,\n getSitemapXmlHeaders,\n serializeSitemap,\n serializeSitemapIndex,\n type SitemapChunk,\n type SitemapEntry,\n} from '@brandlab-digital/site-core/sitemaps'\n\nexport function sitemapXmlResponse(entries: readonly SitemapEntry[]): Response {\n return new Response(serializeSitemap(entries), {\n headers: getSitemapXmlHeaders(),\n })\n}\n\nexport function sitemapIndexXmlResponse(\n paths: readonly string[],\n options: { absoluteUrl: (path: string) => string },\n): Response {\n return new Response(serializeSitemapIndex(paths, options), {\n headers: getSitemapXmlHeaders(),\n })\n}\n\nexport type BrandlabSitemapMode = 'single' | 'split'\n\nexport interface BrandlabSitemapRouteOptions {\n /** `split` only when brandlab.config declares `sitemap.mode: 'split'`. */\n mode: BrandlabSitemapMode\n /** Split mode: URLs per child sitemap (default 1000). */\n maxUrlsPerSitemap?: number\n}\n\nexport interface BrandlabSitemapChunkRouteContext {\n params: Promise<{ chunk: string }>\n}\n\nexport interface BrandlabSitemapRoute {\n readonly mode: BrandlabSitemapMode\n /** `src/app/sitemap.xml/route.ts`: the URL set, or the sitemap index in split mode. */\n GET(): Response\n /** Child sitemap paths listed by the index; empty in single mode. */\n chunkPaths(): string[]\n /** `src/app/sitemaps/[chunk]/route.ts` (split mode, with `dynamicParams = false`). */\n chunk: {\n generateStaticParams(): { chunk: string }[]\n GET(request: Request, context: BrandlabSitemapChunkRouteContext): Promise<Response>\n }\n}\n\nconst SPLIT_SITEMAP_FAMILIES: readonly { name: string; kinds: readonly BrandlabRouteKind[] }[] = BRANDLAB_SITEMAP_FAMILIES\nconst SPLIT_SITEMAP_PREFIX = '/sitemaps'\nconst DEFAULT_SPLIT_MAX_URLS = 1_000\n\nfunction splitSitemapChunks(\n routes: BrandlabRouteCatalog,\n siteUrl: string,\n maxUrlsPerSitemap: number,\n): SitemapChunk[] {\n const familyKinds = new Set(SPLIT_SITEMAP_FAMILIES.flatMap((family) => family.kinds))\n const families = [\n { name: 'core', routes: routes.filter((route) => !familyKinds.has(route.kind)) },\n ...SPLIT_SITEMAP_FAMILIES.map((family) => ({\n name: family.name,\n routes: routes.filter((route) => family.kinds.includes(route.kind)),\n })),\n ]\n return families.flatMap((family) =>\n createSitemapChunks(buildSitemapEntries(family.routes, { siteUrl }), {\n pathPrefix: `${SPLIT_SITEMAP_PREFIX}/${family.name}`,\n maxUrlsPerSitemap,\n }),\n )\n}\n\n/**\n * The route-catalogue sitemap. `lastmod` comes only from each route's\n * `lastSignificantChange`, never from build time. Entries are resolved once,\n * so an invalid catalogue fails the build.\n */\nexport function createBrandlabSitemapRoute(\n routes: BrandlabRouteCatalog,\n site: BrandlabSite,\n options: BrandlabSitemapRouteOptions = { mode: 'single' },\n): BrandlabSitemapRoute {\n if (options.mode !== 'single' && options.mode !== 'split') {\n throw new Error('Sitemap mode must be \"single\" or \"split\".')\n }\n if (options.mode === 'single' && options.maxUrlsPerSitemap !== undefined) {\n throw new Error('maxUrlsPerSitemap applies only to split sitemaps.')\n }\n const entries = buildSitemapEntries(routes, { siteUrl: site.canonicalUrl })\n const chunks = options.mode === 'split'\n ? splitSitemapChunks(routes, site.canonicalUrl, options.maxUrlsPerSitemap ?? DEFAULT_SPLIT_MAX_URLS)\n : []\n const chunkByFileName = new Map(\n chunks.map((chunk) => [chunk.path.slice(SPLIT_SITEMAP_PREFIX.length + 1), chunk]),\n )\n const absoluteUrl = (path: string) => getAbsoluteUrl(site.canonicalUrl, path)\n\n return Object.freeze({\n mode: options.mode,\n GET() {\n return options.mode === 'split'\n ? sitemapIndexXmlResponse(chunks.map((chunk) => chunk.path), { absoluteUrl })\n : sitemapXmlResponse(entries)\n },\n chunkPaths() {\n return chunks.map((chunk) => chunk.path)\n },\n chunk: Object.freeze({\n generateStaticParams() {\n return [...chunkByFileName.keys()].map((chunk) => ({ chunk }))\n },\n async GET(_request: Request, context: BrandlabSitemapChunkRouteContext) {\n const found = chunkByFileName.get((await context.params).chunk)\n return found\n ? sitemapXmlResponse(found.entries)\n : new Response('Not found', { status: 404 })\n },\n }),\n })\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brandlab-digital/site-next",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@brandlab-digital/site-core": "3.
|
|
27
|
+
"@brandlab-digital/site-core": "3.4.0",
|
|
28
28
|
"browser-image-compression": "2.0.2",
|
|
29
29
|
"pdf-lib": "1.17.1",
|
|
30
30
|
"server-only": "0.0.1",
|