@olmocms/front 0.1.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.
Files changed (47) hide show
  1. package/README.md +277 -0
  2. package/dist/chunk-3DP2A2OG.js +52 -0
  3. package/dist/chunk-3DP2A2OG.js.map +1 -0
  4. package/dist/chunk-GQITFXCV.js +66 -0
  5. package/dist/chunk-GQITFXCV.js.map +1 -0
  6. package/dist/chunk-JISDMUJ3.js +79 -0
  7. package/dist/chunk-JISDMUJ3.js.map +1 -0
  8. package/dist/chunk-RG54JLA2.js +61 -0
  9. package/dist/chunk-RG54JLA2.js.map +1 -0
  10. package/dist/cli/index.js +344 -0
  11. package/dist/client/index.cjs +105 -0
  12. package/dist/client/index.cjs.map +1 -0
  13. package/dist/client/index.d.cts +5 -0
  14. package/dist/client/index.d.ts +5 -0
  15. package/dist/client/index.js +11 -0
  16. package/dist/client/index.js.map +1 -0
  17. package/dist/components/index.cjs +113 -0
  18. package/dist/components/index.cjs.map +1 -0
  19. package/dist/components/index.d.cts +46 -0
  20. package/dist/components/index.d.ts +46 -0
  21. package/dist/components/index.js +79 -0
  22. package/dist/components/index.js.map +1 -0
  23. package/dist/index.cjs +370 -0
  24. package/dist/index.cjs.map +1 -0
  25. package/dist/index.d.cts +51 -0
  26. package/dist/index.d.ts +51 -0
  27. package/dist/index.js +110 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/jsonld/index.cjs +88 -0
  30. package/dist/jsonld/index.cjs.map +1 -0
  31. package/dist/jsonld/index.d.cts +33 -0
  32. package/dist/jsonld/index.d.ts +33 -0
  33. package/dist/jsonld/index.js +13 -0
  34. package/dist/jsonld/index.js.map +1 -0
  35. package/dist/middleware/index.cjs +94 -0
  36. package/dist/middleware/index.cjs.map +1 -0
  37. package/dist/middleware/index.d.cts +10 -0
  38. package/dist/middleware/index.d.ts +10 -0
  39. package/dist/middleware/index.js +11 -0
  40. package/dist/middleware/index.js.map +1 -0
  41. package/dist/seo/index.cjs +76 -0
  42. package/dist/seo/index.cjs.map +1 -0
  43. package/dist/seo/index.d.cts +45 -0
  44. package/dist/seo/index.d.ts +45 -0
  45. package/dist/seo/index.js +7 -0
  46. package/dist/seo/index.js.map +1 -0
  47. package/package.json +73 -0
package/dist/index.js ADDED
@@ -0,0 +1,110 @@
1
+ import {
2
+ filter,
3
+ getting,
4
+ posting
5
+ } from "./chunk-JISDMUJ3.js";
6
+ import {
7
+ setSeoData
8
+ } from "./chunk-3DP2A2OG.js";
9
+ import {
10
+ buildArticle,
11
+ buildBreadcrumb,
12
+ buildItemList,
13
+ buildWebSite
14
+ } from "./chunk-RG54JLA2.js";
15
+ import {
16
+ chain,
17
+ headermiddleware,
18
+ redirectmiddleware
19
+ } from "./chunk-GQITFXCV.js";
20
+
21
+ // src/components/RouteContext.tsx
22
+ import { createContext, useContext, useState } from "react";
23
+ import { jsx } from "react/jsx-runtime";
24
+ var RouteContext = createContext({ slugs: {}, setSlugs: () => {
25
+ } });
26
+ function RouteProvider({ children }) {
27
+ const [slugs, setSlugs] = useState({});
28
+ return /* @__PURE__ */ jsx(RouteContext.Provider, { value: { slugs, setSlugs }, children });
29
+ }
30
+ var useRoute = () => useContext(RouteContext);
31
+
32
+ // src/components/RouteSetter.tsx
33
+ import { useEffect } from "react";
34
+ function RouteSetter({ slugs }) {
35
+ const { setSlugs } = useRoute();
36
+ useEffect(() => {
37
+ const leafSlugs = Object.fromEntries(
38
+ Object.entries(slugs).map(([locale, slug]) => [locale, slug.split("/").pop() ?? slug])
39
+ );
40
+ setSlugs(leafSlugs);
41
+ return () => setSlugs({});
42
+ }, [JSON.stringify(slugs)]);
43
+ return null;
44
+ }
45
+
46
+ // src/components/JsonLd.tsx
47
+ import { jsx as jsx2 } from "react/jsx-runtime";
48
+ function JsonLd({ schema }) {
49
+ return /* @__PURE__ */ jsx2(
50
+ "script",
51
+ {
52
+ type: "application/ld+json",
53
+ dangerouslySetInnerHTML: { __html: JSON.stringify(schema) }
54
+ }
55
+ );
56
+ }
57
+
58
+ // src/components/GtmPage.tsx
59
+ import { useEffect as useEffect2 } from "react";
60
+ import { Fragment, jsx as jsx3 } from "react/jsx-runtime";
61
+ function GtmPage({ slug, lang, name, template }) {
62
+ useEffect2(() => {
63
+ if (slug) {
64
+ gtmPageView({
65
+ page_name: name,
66
+ page_category: template?.name,
67
+ page_language: lang,
68
+ path_clean: slug
69
+ });
70
+ }
71
+ }, [slug]);
72
+ return /* @__PURE__ */ jsx3(Fragment, {});
73
+ }
74
+ function gtmPageView(props) {
75
+ return window.dataLayer?.push({ event: "page_view", url: window.location.href, ...props });
76
+ }
77
+ function gtmFormSent({ data, name }) {
78
+ return window.dataLayer?.push({ ...data, event: "form_sent", form: name });
79
+ }
80
+ function gtmClick({ category, action, label }) {
81
+ const cleanLabel = label?.split("/") ?? [];
82
+ return window.dataLayer?.push({
83
+ event: "click",
84
+ category,
85
+ action,
86
+ label: cleanLabel[cleanLabel.length - 1]
87
+ });
88
+ }
89
+ export {
90
+ GtmPage,
91
+ JsonLd,
92
+ RouteProvider,
93
+ RouteSetter,
94
+ buildArticle,
95
+ buildBreadcrumb,
96
+ buildItemList,
97
+ buildWebSite,
98
+ chain,
99
+ filter,
100
+ getting,
101
+ gtmClick,
102
+ gtmFormSent,
103
+ gtmPageView,
104
+ headermiddleware,
105
+ posting,
106
+ redirectmiddleware,
107
+ setSeoData,
108
+ useRoute
109
+ };
110
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/RouteContext.tsx","../src/components/RouteSetter.tsx","../src/components/JsonLd.tsx","../src/components/GtmPage.tsx"],"sourcesContent":["'use client';\n\nimport { createContext, useContext, useState } from 'react';\nimport type { ReactNode } from 'react';\n\ntype LocaleSlugs = Record<string, string>;\n\nconst RouteContext = createContext<{\n slugs: LocaleSlugs;\n setSlugs: (slugs: LocaleSlugs) => void;\n}>({ slugs: {}, setSlugs: () => {} });\n\nexport function RouteProvider({ children }: { children: ReactNode }) {\n const [slugs, setSlugs] = useState<LocaleSlugs>({});\n return (\n <RouteContext.Provider value={{ slugs, setSlugs }}>\n {children}\n </RouteContext.Provider>\n );\n}\n\nexport const useRoute = () => useContext(RouteContext);\n","'use client';\n\nimport { useEffect } from 'react';\nimport { useRoute } from './RouteContext.js';\n\nexport function RouteSetter({ slugs }: { slugs: Record<string, string> }) {\n const { setSlugs } = useRoute();\n\n useEffect(() => {\n const leafSlugs = Object.fromEntries(\n Object.entries(slugs).map(([locale, slug]) => [locale, slug.split('/').pop() ?? slug]),\n );\n setSlugs(leafSlugs);\n return () => setSlugs({});\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(slugs)]);\n\n return null;\n}\n","export function JsonLd({ schema }: { schema: object }) {\n return (\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}\n />\n );\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\ninterface GtmPageProps {\n slug: string | null;\n lang: string | null;\n name: string | null;\n template: string | null;\n}\n\ninterface GtmFormProps {\n data: object | null;\n name: string | null;\n}\n\ninterface GtmClickProps {\n category: string | null;\n action: string | null;\n label: string | null;\n}\n\ndeclare global {\n interface Window {\n dataLayer: any[];\n }\n}\n\nexport function GtmPage({ slug, lang, name, template }: GtmPageProps) {\n useEffect(() => {\n if (slug) {\n gtmPageView({\n page_name: name,\n page_category: (template as any)?.name,\n page_language: lang,\n path_clean: slug,\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [slug]);\n\n return <></>;\n}\n\nexport function gtmPageView(props: Record<string, any>) {\n return window.dataLayer?.push({ event: 'page_view', url: window.location.href, ...props });\n}\n\nexport function gtmFormSent({ data, name }: GtmFormProps) {\n return window.dataLayer?.push({ ...data, event: 'form_sent', form: name });\n}\n\nexport function gtmClick({ category, action, label }: GtmClickProps) {\n const cleanLabel = label?.split('/') ?? [];\n return window.dataLayer?.push({\n event: 'click',\n category,\n action,\n label: cleanLabel[cleanLabel.length - 1],\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,eAAe,YAAY,gBAAgB;AAahD;AARJ,IAAM,eAAe,cAGlB,EAAE,OAAO,CAAC,GAAG,UAAU,MAAM;AAAC,EAAE,CAAC;AAE7B,SAAS,cAAc,EAAE,SAAS,GAA4B;AACnE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAsB,CAAC,CAAC;AAClD,SACE,oBAAC,aAAa,UAAb,EAAsB,OAAO,EAAE,OAAO,SAAS,GAC7C,UACH;AAEJ;AAEO,IAAM,WAAW,MAAM,WAAW,YAAY;;;ACnBrD,SAAS,iBAAiB;AAGnB,SAAS,YAAY,EAAE,MAAM,GAAsC;AACxE,QAAM,EAAE,SAAS,IAAI,SAAS;AAE9B,YAAU,MAAM;AACd,UAAM,YAAY,OAAO;AAAA,MACvB,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;AAAA,IACvF;AACA,aAAS,SAAS;AAClB,WAAO,MAAM,SAAS,CAAC,CAAC;AAAA,EAE1B,GAAG,CAAC,KAAK,UAAU,KAAK,CAAC,CAAC;AAE1B,SAAO;AACT;;;AChBI,gBAAAA,YAAA;AAFG,SAAS,OAAO,EAAE,OAAO,GAAuB;AACrD,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,yBAAyB,EAAE,QAAQ,KAAK,UAAU,MAAM,EAAE;AAAA;AAAA,EAC5D;AAEJ;;;ACLA,SAAS,aAAAC,kBAAiB;AAuCjB,0BAAAC,YAAA;AAbF,SAAS,QAAQ,EAAE,MAAM,MAAM,MAAM,SAAS,GAAiB;AACpE,EAAAD,WAAU,MAAM;AACd,QAAI,MAAM;AACR,kBAAY;AAAA,QACV,WAAW;AAAA,QACX,eAAgB,UAAkB;AAAA,QAClC,eAAe;AAAA,QACf,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EAEF,GAAG,CAAC,IAAI,CAAC;AAET,SAAO,gBAAAC,KAAA,YAAE;AACX;AAEO,SAAS,YAAY,OAA4B;AACtD,SAAO,OAAO,WAAW,KAAK,EAAE,OAAO,aAAa,KAAK,OAAO,SAAS,MAAM,GAAG,MAAM,CAAC;AAC3F;AAEO,SAAS,YAAY,EAAE,MAAM,KAAK,GAAiB;AACxD,SAAO,OAAO,WAAW,KAAK,EAAE,GAAG,MAAM,OAAO,aAAa,MAAM,KAAK,CAAC;AAC3E;AAEO,SAAS,SAAS,EAAE,UAAU,QAAQ,MAAM,GAAkB;AACnE,QAAM,aAAa,OAAO,MAAM,GAAG,KAAK,CAAC;AACzC,SAAO,OAAO,WAAW,KAAK;AAAA,IAC5B,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,OAAO,WAAW,WAAW,SAAS,CAAC;AAAA,EACzC,CAAC;AACH;","names":["jsx","useEffect","jsx"]}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/jsonld/index.ts
21
+ var jsonld_exports = {};
22
+ __export(jsonld_exports, {
23
+ buildArticle: () => buildArticle,
24
+ buildBreadcrumb: () => buildBreadcrumb,
25
+ buildItemList: () => buildItemList,
26
+ buildWebSite: () => buildWebSite
27
+ });
28
+ module.exports = __toCommonJS(jsonld_exports);
29
+ var BASE_URL = process.env.NEXT_PUBLIC_BASE_URL;
30
+ var STORAGE_URL = process.env.NEXT_PUBLIC_API_STORAGE_URL;
31
+ var SITE_NAME = process.env.NEXT_PUBLIC_SITE_NAME ?? "Website";
32
+ var buildBreadcrumb = (items) => ({
33
+ "@context": "https://schema.org",
34
+ "@type": "BreadcrumbList",
35
+ itemListElement: items.map((item, index) => ({
36
+ "@type": "ListItem",
37
+ position: index + 1,
38
+ name: item.name,
39
+ item: item.url
40
+ }))
41
+ });
42
+ var buildItemList = (items, sectionUrl) => ({
43
+ "@context": "https://schema.org",
44
+ "@type": "ItemList",
45
+ itemListElement: items.map((item, index) => ({
46
+ "@type": "ListItem",
47
+ position: index + 1,
48
+ name: item.title_txt_content || item.name_txt_general,
49
+ url: `${sectionUrl}${item.slug_txt_general}/`
50
+ }))
51
+ });
52
+ var buildArticle = (page, pathname, articleType = "Article", publisherName) => {
53
+ const name = publisherName ?? SITE_NAME;
54
+ const pageUrl = `${BASE_URL}${pathname.endsWith("/") ? pathname : pathname + "/"}`;
55
+ const imageUrl = (page.primary ?? page.cover)?.original?.compressed ? `${STORAGE_URL}${(page.primary ?? page.cover).original.compressed}` : void 0;
56
+ const description = page.subtitle ? page.subtitle.replace(/<[^>]*>/g, "").trim() : void 0;
57
+ const publisher = {
58
+ "@type": "Organization",
59
+ name,
60
+ url: BASE_URL,
61
+ logo: { "@type": "ImageObject", url: `${BASE_URL}/images/logo/logo.png` }
62
+ };
63
+ return {
64
+ "@context": "https://schema.org",
65
+ "@type": articleType,
66
+ headline: page.title,
67
+ ...description && { description },
68
+ ...imageUrl && { image: imageUrl },
69
+ url: pageUrl,
70
+ author: publisher,
71
+ publisher,
72
+ ...page.lastmod && { datePublished: page.lastmod, dateModified: page.lastmod }
73
+ };
74
+ };
75
+ var buildWebSite = (locale, siteName) => ({
76
+ "@context": "https://schema.org",
77
+ "@type": "WebSite",
78
+ name: siteName ?? SITE_NAME,
79
+ url: `${BASE_URL}/${locale}/`
80
+ });
81
+ // Annotate the CommonJS export names for ESM import in node:
82
+ 0 && (module.exports = {
83
+ buildArticle,
84
+ buildBreadcrumb,
85
+ buildItemList,
86
+ buildWebSite
87
+ });
88
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/jsonld/index.ts"],"sourcesContent":["const BASE_URL = process.env.NEXT_PUBLIC_BASE_URL!;\nconst STORAGE_URL = process.env.NEXT_PUBLIC_API_STORAGE_URL!;\nconst SITE_NAME = process.env.NEXT_PUBLIC_SITE_NAME ?? 'Website';\n\ntype BreadcrumbItem = { name: string; url: string };\n\nexport const buildBreadcrumb = (items: BreadcrumbItem[]) => ({\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: items.map((item, index) => ({\n '@type': 'ListItem',\n position: index + 1,\n name: item.name,\n item: item.url,\n })),\n});\n\nexport const buildItemList = (items: any[], sectionUrl: string) => ({\n '@context': 'https://schema.org',\n '@type': 'ItemList',\n itemListElement: items.map((item, index) => ({\n '@type': 'ListItem',\n position: index + 1,\n name: item.title_txt_content || item.name_txt_general,\n url: `${sectionUrl}${item.slug_txt_general}/`,\n })),\n});\n\nexport const buildArticle = (\n page: any,\n pathname: string,\n articleType: 'Article' | 'NewsArticle' = 'Article',\n publisherName?: string,\n) => {\n const name = publisherName ?? SITE_NAME;\n const pageUrl = `${BASE_URL}${pathname.endsWith('/') ? pathname : pathname + '/'}`;\n const imageUrl = (page.primary ?? page.cover)?.original?.compressed\n ? `${STORAGE_URL}${(page.primary ?? page.cover).original.compressed}`\n : undefined;\n const description = page.subtitle\n ? page.subtitle.replace(/<[^>]*>/g, '').trim()\n : undefined;\n\n const publisher = {\n '@type': 'Organization',\n name,\n url: BASE_URL,\n logo: { '@type': 'ImageObject', url: `${BASE_URL}/images/logo/logo.png` },\n };\n\n return {\n '@context': 'https://schema.org',\n '@type': articleType,\n headline: page.title,\n ...(description && { description }),\n ...(imageUrl && { image: imageUrl }),\n url: pageUrl,\n author: publisher,\n publisher,\n ...(page.lastmod && { datePublished: page.lastmod, dateModified: page.lastmod }),\n };\n};\n\nexport const buildWebSite = (locale: string, siteName?: string) => ({\n '@context': 'https://schema.org',\n '@type': 'WebSite',\n name: siteName ?? SITE_NAME,\n url: `${BASE_URL}/${locale}/`,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAM,WAAW,QAAQ,IAAI;AAC7B,IAAM,cAAc,QAAQ,IAAI;AAChC,IAAM,YAAY,QAAQ,IAAI,yBAAyB;AAIhD,IAAM,kBAAkB,CAAC,WAA6B;AAAA,EAC3D,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,iBAAiB,MAAM,IAAI,CAAC,MAAM,WAAW;AAAA,IAC3C,SAAS;AAAA,IACT,UAAU,QAAQ;AAAA,IAClB,MAAM,KAAK;AAAA,IACX,MAAM,KAAK;AAAA,EACb,EAAE;AACJ;AAEO,IAAM,gBAAgB,CAAC,OAAc,gBAAwB;AAAA,EAClE,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,iBAAiB,MAAM,IAAI,CAAC,MAAM,WAAW;AAAA,IAC3C,SAAS;AAAA,IACT,UAAU,QAAQ;AAAA,IAClB,MAAM,KAAK,qBAAqB,KAAK;AAAA,IACrC,KAAK,GAAG,UAAU,GAAG,KAAK,gBAAgB;AAAA,EAC5C,EAAE;AACJ;AAEO,IAAM,eAAe,CAC1B,MACA,UACA,cAAyC,WACzC,kBACG;AACH,QAAM,OAAO,iBAAiB;AAC9B,QAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,SAAS,GAAG,IAAI,WAAW,WAAW,GAAG;AAChF,QAAM,YAAY,KAAK,WAAW,KAAK,QAAQ,UAAU,aACrD,GAAG,WAAW,IAAI,KAAK,WAAW,KAAK,OAAO,SAAS,UAAU,KACjE;AACJ,QAAM,cAAc,KAAK,WACrB,KAAK,SAAS,QAAQ,YAAY,EAAE,EAAE,KAAK,IAC3C;AAEJ,QAAM,YAAY;AAAA,IAChB,SAAS;AAAA,IACT;AAAA,IACA,KAAK;AAAA,IACL,MAAM,EAAE,SAAS,eAAe,KAAK,GAAG,QAAQ,wBAAwB;AAAA,EAC1E;AAEA,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,UAAU,KAAK;AAAA,IACf,GAAI,eAAe,EAAE,YAAY;AAAA,IACjC,GAAI,YAAY,EAAE,OAAO,SAAS;AAAA,IAClC,KAAK;AAAA,IACL,QAAQ;AAAA,IACR;AAAA,IACA,GAAI,KAAK,WAAW,EAAE,eAAe,KAAK,SAAS,cAAc,KAAK,QAAQ;AAAA,EAChF;AACF;AAEO,IAAM,eAAe,CAAC,QAAgB,cAAuB;AAAA,EAClE,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,MAAM,YAAY;AAAA,EAClB,KAAK,GAAG,QAAQ,IAAI,MAAM;AAC5B;","names":[]}
@@ -0,0 +1,33 @@
1
+ type BreadcrumbItem = {
2
+ name: string;
3
+ url: string;
4
+ };
5
+ declare const buildBreadcrumb: (items: BreadcrumbItem[]) => {
6
+ '@context': string;
7
+ '@type': string;
8
+ itemListElement: {
9
+ '@type': string;
10
+ position: number;
11
+ name: string;
12
+ item: string;
13
+ }[];
14
+ };
15
+ declare const buildItemList: (items: any[], sectionUrl: string) => {
16
+ '@context': string;
17
+ '@type': string;
18
+ itemListElement: {
19
+ '@type': string;
20
+ position: number;
21
+ name: any;
22
+ url: string;
23
+ }[];
24
+ };
25
+ declare const buildArticle: (page: any, pathname: string, articleType?: "Article" | "NewsArticle", publisherName?: string) => any;
26
+ declare const buildWebSite: (locale: string, siteName?: string) => {
27
+ '@context': string;
28
+ '@type': string;
29
+ name: string;
30
+ url: string;
31
+ };
32
+
33
+ export { buildArticle, buildBreadcrumb, buildItemList, buildWebSite };
@@ -0,0 +1,33 @@
1
+ type BreadcrumbItem = {
2
+ name: string;
3
+ url: string;
4
+ };
5
+ declare const buildBreadcrumb: (items: BreadcrumbItem[]) => {
6
+ '@context': string;
7
+ '@type': string;
8
+ itemListElement: {
9
+ '@type': string;
10
+ position: number;
11
+ name: string;
12
+ item: string;
13
+ }[];
14
+ };
15
+ declare const buildItemList: (items: any[], sectionUrl: string) => {
16
+ '@context': string;
17
+ '@type': string;
18
+ itemListElement: {
19
+ '@type': string;
20
+ position: number;
21
+ name: any;
22
+ url: string;
23
+ }[];
24
+ };
25
+ declare const buildArticle: (page: any, pathname: string, articleType?: "Article" | "NewsArticle", publisherName?: string) => any;
26
+ declare const buildWebSite: (locale: string, siteName?: string) => {
27
+ '@context': string;
28
+ '@type': string;
29
+ name: string;
30
+ url: string;
31
+ };
32
+
33
+ export { buildArticle, buildBreadcrumb, buildItemList, buildWebSite };
@@ -0,0 +1,13 @@
1
+ import {
2
+ buildArticle,
3
+ buildBreadcrumb,
4
+ buildItemList,
5
+ buildWebSite
6
+ } from "../chunk-RG54JLA2.js";
7
+ export {
8
+ buildArticle,
9
+ buildBreadcrumb,
10
+ buildItemList,
11
+ buildWebSite
12
+ };
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/middleware/index.ts
21
+ var middleware_exports = {};
22
+ __export(middleware_exports, {
23
+ chain: () => chain,
24
+ headermiddleware: () => headermiddleware,
25
+ redirectmiddleware: () => redirectmiddleware
26
+ });
27
+ module.exports = __toCommonJS(middleware_exports);
28
+
29
+ // src/middleware/chain.ts
30
+ var import_server = require("next/server");
31
+ function chain(functions = [], index = 0) {
32
+ const current = functions[index];
33
+ if (current) {
34
+ const next = chain(functions, index + 1);
35
+ return current(next);
36
+ }
37
+ return () => import_server.NextResponse.next();
38
+ }
39
+
40
+ // src/middleware/headermiddleware.ts
41
+ var import_server2 = require("next/server");
42
+ var headermiddleware = (next) => {
43
+ return async (request, _next) => {
44
+ const url = new URL(request.url);
45
+ const params = new URLSearchParams(url.search);
46
+ const headers = new Headers(request.headers);
47
+ headers.set("x-current-path", request.nextUrl.pathname);
48
+ headers.set("x-server", "true");
49
+ headers.set("olmo-preview", params.has("olmopreview").toString());
50
+ return next(new import_server2.NextRequest(request.url, { headers }), _next);
51
+ };
52
+ };
53
+
54
+ // src/middleware/redirectmiddleware.ts
55
+ var import_server3 = require("next/server");
56
+ var redirectmiddleware = (next) => {
57
+ return async (request, _next) => {
58
+ if (request.headers.has("rsc")) {
59
+ return next(request, _next);
60
+ }
61
+ if (!process.env.NEXT_PUBLIC_OLMO_TOKEN || !process.env.NEXT_PUBLIC_API_URL || !process.env.NEXT_PUBLIC_BASE_URL) {
62
+ return next(request, _next);
63
+ }
64
+ const pathNameWithTrailingSlash = request.nextUrl.pathname;
65
+ const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/all/redirect`, {
66
+ method: "GET",
67
+ cache: "force-cache",
68
+ next: { tags: ["olmo", "redirect"] },
69
+ headers: { "front-token": process.env.NEXT_PUBLIC_OLMO_TOKEN }
70
+ });
71
+ const data = await response.json();
72
+ const redirects = data.map((e) => ({
73
+ source: e.source,
74
+ destination: e.destination,
75
+ permanent: e.permanent === "true"
76
+ }));
77
+ if (redirects.length > 0) {
78
+ const redirect = redirects.find((item) => item.source === pathNameWithTrailingSlash);
79
+ if (!redirect) {
80
+ return next(request, _next);
81
+ }
82
+ const newUrl = new URL(redirect.destination, process.env.NEXT_PUBLIC_BASE_URL).toString();
83
+ return import_server3.NextResponse.redirect(newUrl, { status: redirect.permanent ? 308 : 307 });
84
+ }
85
+ return next(request, _next);
86
+ };
87
+ };
88
+ // Annotate the CommonJS export names for ESM import in node:
89
+ 0 && (module.exports = {
90
+ chain,
91
+ headermiddleware,
92
+ redirectmiddleware
93
+ });
94
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/middleware/index.ts","../../src/middleware/chain.ts","../../src/middleware/headermiddleware.ts","../../src/middleware/redirectmiddleware.ts"],"sourcesContent":["export { chain } from './chain.js';\nexport type { MiddlewareFactory } from './chain.js';\nexport { headermiddleware } from './headermiddleware.js';\nexport { redirectmiddleware } from './redirectmiddleware.js';\n","import { NextResponse } from 'next/server';\nimport type { NextMiddleware } from 'next/server';\n\nexport type MiddlewareFactory = (middleware: NextMiddleware) => NextMiddleware;\n\nexport function chain(functions: MiddlewareFactory[] = [], index = 0): NextMiddleware {\n const current = functions[index];\n if (current) {\n const next = chain(functions, index + 1);\n return current(next);\n }\n return () => NextResponse.next();\n}\n","import { NextRequest } from 'next/server';\nimport type { NextFetchEvent } from 'next/server';\nimport type { MiddlewareFactory } from './chain.js';\n\nexport const headermiddleware: MiddlewareFactory = (next) => {\n return async (request: NextRequest, _next: NextFetchEvent) => {\n const url = new URL(request.url);\n const params = new URLSearchParams(url.search);\n\n const headers = new Headers(request.headers);\n headers.set('x-current-path', request.nextUrl.pathname);\n headers.set('x-server', 'true');\n headers.set('olmo-preview', params.has('olmopreview').toString());\n\n return next(new NextRequest(request.url, { headers }), _next);\n };\n};\n","import { NextResponse } from 'next/server';\nimport type { NextFetchEvent, NextRequest } from 'next/server';\nimport type { MiddlewareFactory } from './chain.js';\n\ntype NextFetchRequestInit = RequestInit & { next?: { tags?: string[]; revalidate?: number | false } };\n\nexport const redirectmiddleware: MiddlewareFactory = (next) => {\n return async (request: NextRequest, _next: NextFetchEvent) => {\n if (request.headers.has('rsc')) {\n return next(request, _next);\n }\n\n if (!process.env.NEXT_PUBLIC_OLMO_TOKEN || !process.env.NEXT_PUBLIC_API_URL || !process.env.NEXT_PUBLIC_BASE_URL) {\n return next(request, _next);\n }\n\n const pathNameWithTrailingSlash = request.nextUrl.pathname;\n\n const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/all/redirect`, {\n method: 'GET',\n cache: 'force-cache',\n next: { tags: ['olmo', 'redirect'] },\n headers: { 'front-token': process.env.NEXT_PUBLIC_OLMO_TOKEN },\n } as NextFetchRequestInit);\n\n const data = await response.json();\n\n const redirects = data.map((e: any) => ({\n source: e.source,\n destination: e.destination,\n permanent: e.permanent === 'true',\n }));\n\n if (redirects.length > 0) {\n const redirect = redirects.find((item: any) => item.source === pathNameWithTrailingSlash);\n\n if (!redirect) {\n return next(request, _next);\n }\n\n const newUrl = new URL(redirect.destination, process.env.NEXT_PUBLIC_BASE_URL).toString();\n return NextResponse.redirect(newUrl, { status: redirect.permanent ? 308 : 307 });\n }\n\n return next(request, _next);\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAA6B;AAKtB,SAAS,MAAM,YAAiC,CAAC,GAAG,QAAQ,GAAmB;AACpF,QAAM,UAAU,UAAU,KAAK;AAC/B,MAAI,SAAS;AACX,UAAM,OAAO,MAAM,WAAW,QAAQ,CAAC;AACvC,WAAO,QAAQ,IAAI;AAAA,EACrB;AACA,SAAO,MAAM,2BAAa,KAAK;AACjC;;;ACZA,IAAAA,iBAA4B;AAIrB,IAAM,mBAAsC,CAAC,SAAS;AAC3D,SAAO,OAAO,SAAsB,UAA0B;AAC5D,UAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,UAAM,SAAS,IAAI,gBAAgB,IAAI,MAAM;AAE7C,UAAM,UAAU,IAAI,QAAQ,QAAQ,OAAO;AAC3C,YAAQ,IAAI,kBAAkB,QAAQ,QAAQ,QAAQ;AACtD,YAAQ,IAAI,YAAY,MAAM;AAC9B,YAAQ,IAAI,gBAAgB,OAAO,IAAI,aAAa,EAAE,SAAS,CAAC;AAEhE,WAAO,KAAK,IAAI,2BAAY,QAAQ,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK;AAAA,EAC9D;AACF;;;AChBA,IAAAC,iBAA6B;AAMtB,IAAM,qBAAwC,CAAC,SAAS;AAC7D,SAAO,OAAO,SAAsB,UAA0B;AAC5D,QAAI,QAAQ,QAAQ,IAAI,KAAK,GAAG;AAC9B,aAAO,KAAK,SAAS,KAAK;AAAA,IAC5B;AAEA,QAAI,CAAC,QAAQ,IAAI,0BAA0B,CAAC,QAAQ,IAAI,uBAAuB,CAAC,QAAQ,IAAI,sBAAsB;AAChH,aAAO,KAAK,SAAS,KAAK;AAAA,IAC5B;AAEA,UAAM,4BAA4B,QAAQ,QAAQ;AAElD,UAAM,WAAW,MAAM,MAAM,GAAG,QAAQ,IAAI,mBAAmB,iBAAiB;AAAA,MAC9E,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM,EAAE,MAAM,CAAC,QAAQ,UAAU,EAAE;AAAA,MACnC,SAAS,EAAE,eAAe,QAAQ,IAAI,uBAAuB;AAAA,IAC/D,CAAyB;AAEzB,UAAM,OAAO,MAAM,SAAS,KAAK;AAEjC,UAAM,YAAY,KAAK,IAAI,CAAC,OAAY;AAAA,MACtC,QAAQ,EAAE;AAAA,MACV,aAAa,EAAE;AAAA,MACf,WAAW,EAAE,cAAc;AAAA,IAC7B,EAAE;AAEF,QAAI,UAAU,SAAS,GAAG;AACxB,YAAM,WAAW,UAAU,KAAK,CAAC,SAAc,KAAK,WAAW,yBAAyB;AAExF,UAAI,CAAC,UAAU;AACb,eAAO,KAAK,SAAS,KAAK;AAAA,MAC5B;AAEA,YAAM,SAAS,IAAI,IAAI,SAAS,aAAa,QAAQ,IAAI,oBAAoB,EAAE,SAAS;AACxF,aAAO,4BAAa,SAAS,QAAQ,EAAE,QAAQ,SAAS,YAAY,MAAM,IAAI,CAAC;AAAA,IACjF;AAEA,WAAO,KAAK,SAAS,KAAK;AAAA,EAC5B;AACF;","names":["import_server","import_server"]}
@@ -0,0 +1,10 @@
1
+ import { NextMiddleware } from 'next/server';
2
+
3
+ type MiddlewareFactory = (middleware: NextMiddleware) => NextMiddleware;
4
+ declare function chain(functions?: MiddlewareFactory[], index?: number): NextMiddleware;
5
+
6
+ declare const headermiddleware: MiddlewareFactory;
7
+
8
+ declare const redirectmiddleware: MiddlewareFactory;
9
+
10
+ export { type MiddlewareFactory, chain, headermiddleware, redirectmiddleware };
@@ -0,0 +1,10 @@
1
+ import { NextMiddleware } from 'next/server';
2
+
3
+ type MiddlewareFactory = (middleware: NextMiddleware) => NextMiddleware;
4
+ declare function chain(functions?: MiddlewareFactory[], index?: number): NextMiddleware;
5
+
6
+ declare const headermiddleware: MiddlewareFactory;
7
+
8
+ declare const redirectmiddleware: MiddlewareFactory;
9
+
10
+ export { type MiddlewareFactory, chain, headermiddleware, redirectmiddleware };
@@ -0,0 +1,11 @@
1
+ import {
2
+ chain,
3
+ headermiddleware,
4
+ redirectmiddleware
5
+ } from "../chunk-GQITFXCV.js";
6
+ export {
7
+ chain,
8
+ headermiddleware,
9
+ redirectmiddleware
10
+ };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/seo/index.ts
21
+ var seo_exports = {};
22
+ __export(seo_exports, {
23
+ setSeoData: () => setSeoData
24
+ });
25
+ module.exports = __toCommonJS(seo_exports);
26
+ var setSeoData = ({ seo, route, locales = ["it", "en"] }) => {
27
+ if (!seo) return {};
28
+ const baseUrl = process.env.NEXT_PUBLIC_API_STORAGE_URL;
29
+ const frontUrl = process.env.NEXT_PUBLIC_BASE_URL;
30
+ const ogImg = seo.og_img?.original;
31
+ const ogUrl = ogImg?.compressed ? baseUrl + ogImg.compressed : frontUrl + "/images/og-image.jpg";
32
+ const languagesMap = {};
33
+ for (const loc of locales) {
34
+ if (route.slug?.[loc] !== void 0) {
35
+ languagesMap[loc] = `/${loc}/${route.slug[loc]}`;
36
+ }
37
+ }
38
+ const defaultLocale = locales[locales.length - 1];
39
+ if (route.slug?.[defaultLocale] !== void 0) {
40
+ languagesMap["x-default"] = `/${defaultLocale}/${route.slug[defaultLocale]}`;
41
+ }
42
+ return {
43
+ metadataBase: new URL(`${process.env.NEXT_PUBLIC_BASE_URL}`),
44
+ title: seo.meta_title || "",
45
+ description: seo.meta_description || "",
46
+ robots: {
47
+ index: seo.index === "index",
48
+ follow: seo.follow === "follow"
49
+ },
50
+ openGraph: {
51
+ title: seo.og_title || "",
52
+ description: seo.og_description || "",
53
+ url: seo.opengraphUrl || "",
54
+ siteName: seo.opengraphSiteName || "",
55
+ images: [
56
+ {
57
+ url: ogUrl,
58
+ width: ogImg?.width || 1200,
59
+ height: ogImg?.height || 630,
60
+ alt: ogImg?.alt || ""
61
+ }
62
+ ],
63
+ locale: route.locale,
64
+ type: seo.opengraphType || "website"
65
+ },
66
+ alternates: {
67
+ canonical: `${process.env.NEXT_PUBLIC_BASE_URL}/${route.locale}/${route.slug[route.locale]}`,
68
+ languages: languagesMap
69
+ }
70
+ };
71
+ };
72
+ // Annotate the CommonJS export names for ESM import in node:
73
+ 0 && (module.exports = {
74
+ setSeoData
75
+ });
76
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/seo/index.ts"],"sourcesContent":["export interface SeoDataOptions {\n seo: any;\n route: any;\n /**\n * Locale codes for hreflang alternates. Last entry becomes x-default.\n * Defaults to ['it', 'en'] when omitted.\n */\n locales?: string[];\n}\n\nexport const setSeoData = ({ seo, route, locales = ['it', 'en'] }: SeoDataOptions) => {\n if (!seo) return {};\n\n const baseUrl = process.env.NEXT_PUBLIC_API_STORAGE_URL;\n const frontUrl = process.env.NEXT_PUBLIC_BASE_URL;\n const ogImg = seo.og_img?.original;\n const ogUrl = ogImg?.compressed\n ? baseUrl + ogImg.compressed\n : frontUrl + '/images/og-image.jpg';\n\n const languagesMap: Record<string, string> = {};\n for (const loc of locales) {\n if (route.slug?.[loc] !== undefined) {\n languagesMap[loc] = `/${loc}/${route.slug[loc]}`;\n }\n }\n const defaultLocale = locales[locales.length - 1];\n if (route.slug?.[defaultLocale] !== undefined) {\n languagesMap['x-default'] = `/${defaultLocale}/${route.slug[defaultLocale]}`;\n }\n\n return {\n metadataBase: new URL(`${process.env.NEXT_PUBLIC_BASE_URL}`),\n title: seo.meta_title || '',\n description: seo.meta_description || '',\n robots: {\n index: seo.index === 'index',\n follow: seo.follow === 'follow',\n },\n openGraph: {\n title: seo.og_title || '',\n description: seo.og_description || '',\n url: seo.opengraphUrl || '',\n siteName: seo.opengraphSiteName || '',\n images: [\n {\n url: ogUrl,\n width: ogImg?.width || 1200,\n height: ogImg?.height || 630,\n alt: ogImg?.alt || '',\n },\n ],\n locale: route.locale,\n type: seo.opengraphType || 'website',\n },\n alternates: {\n canonical: `${process.env.NEXT_PUBLIC_BASE_URL}/${route.locale}/${route.slug[route.locale]}`,\n languages: languagesMap,\n },\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAUO,IAAM,aAAa,CAAC,EAAE,KAAK,OAAO,UAAU,CAAC,MAAM,IAAI,EAAE,MAAsB;AACpF,MAAI,CAAC,IAAK,QAAO,CAAC;AAElB,QAAM,UAAU,QAAQ,IAAI;AAC5B,QAAM,WAAW,QAAQ,IAAI;AAC7B,QAAM,QAAQ,IAAI,QAAQ;AAC1B,QAAM,QAAQ,OAAO,aACjB,UAAU,MAAM,aAChB,WAAW;AAEf,QAAM,eAAuC,CAAC;AAC9C,aAAW,OAAO,SAAS;AACzB,QAAI,MAAM,OAAO,GAAG,MAAM,QAAW;AACnC,mBAAa,GAAG,IAAI,IAAI,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC;AAAA,IAChD;AAAA,EACF;AACA,QAAM,gBAAgB,QAAQ,QAAQ,SAAS,CAAC;AAChD,MAAI,MAAM,OAAO,aAAa,MAAM,QAAW;AAC7C,iBAAa,WAAW,IAAI,IAAI,aAAa,IAAI,MAAM,KAAK,aAAa,CAAC;AAAA,EAC5E;AAEA,SAAO;AAAA,IACL,cAAc,IAAI,IAAI,GAAG,QAAQ,IAAI,oBAAoB,EAAE;AAAA,IAC3D,OAAO,IAAI,cAAc;AAAA,IACzB,aAAa,IAAI,oBAAoB;AAAA,IACrC,QAAQ;AAAA,MACN,OAAO,IAAI,UAAU;AAAA,MACrB,QAAQ,IAAI,WAAW;AAAA,IACzB;AAAA,IACA,WAAW;AAAA,MACT,OAAO,IAAI,YAAY;AAAA,MACvB,aAAa,IAAI,kBAAkB;AAAA,MACnC,KAAK,IAAI,gBAAgB;AAAA,MACzB,UAAU,IAAI,qBAAqB;AAAA,MACnC,QAAQ;AAAA,QACN;AAAA,UACE,KAAK;AAAA,UACL,OAAO,OAAO,SAAS;AAAA,UACvB,QAAQ,OAAO,UAAU;AAAA,UACzB,KAAK,OAAO,OAAO;AAAA,QACrB;AAAA,MACF;AAAA,MACA,QAAQ,MAAM;AAAA,MACd,MAAM,IAAI,iBAAiB;AAAA,IAC7B;AAAA,IACA,YAAY;AAAA,MACV,WAAW,GAAG,QAAQ,IAAI,oBAAoB,IAAI,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,CAAC;AAAA,MAC1F,WAAW;AAAA,IACb;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,45 @@
1
+ interface SeoDataOptions {
2
+ seo: any;
3
+ route: any;
4
+ /**
5
+ * Locale codes for hreflang alternates. Last entry becomes x-default.
6
+ * Defaults to ['it', 'en'] when omitted.
7
+ */
8
+ locales?: string[];
9
+ }
10
+ declare const setSeoData: ({ seo, route, locales }: SeoDataOptions) => {
11
+ metadataBase?: undefined;
12
+ title?: undefined;
13
+ description?: undefined;
14
+ robots?: undefined;
15
+ openGraph?: undefined;
16
+ alternates?: undefined;
17
+ } | {
18
+ metadataBase: URL;
19
+ title: any;
20
+ description: any;
21
+ robots: {
22
+ index: boolean;
23
+ follow: boolean;
24
+ };
25
+ openGraph: {
26
+ title: any;
27
+ description: any;
28
+ url: any;
29
+ siteName: any;
30
+ images: {
31
+ url: any;
32
+ width: any;
33
+ height: any;
34
+ alt: any;
35
+ }[];
36
+ locale: any;
37
+ type: any;
38
+ };
39
+ alternates: {
40
+ canonical: string;
41
+ languages: Record<string, string>;
42
+ };
43
+ };
44
+
45
+ export { type SeoDataOptions, setSeoData };
@@ -0,0 +1,45 @@
1
+ interface SeoDataOptions {
2
+ seo: any;
3
+ route: any;
4
+ /**
5
+ * Locale codes for hreflang alternates. Last entry becomes x-default.
6
+ * Defaults to ['it', 'en'] when omitted.
7
+ */
8
+ locales?: string[];
9
+ }
10
+ declare const setSeoData: ({ seo, route, locales }: SeoDataOptions) => {
11
+ metadataBase?: undefined;
12
+ title?: undefined;
13
+ description?: undefined;
14
+ robots?: undefined;
15
+ openGraph?: undefined;
16
+ alternates?: undefined;
17
+ } | {
18
+ metadataBase: URL;
19
+ title: any;
20
+ description: any;
21
+ robots: {
22
+ index: boolean;
23
+ follow: boolean;
24
+ };
25
+ openGraph: {
26
+ title: any;
27
+ description: any;
28
+ url: any;
29
+ siteName: any;
30
+ images: {
31
+ url: any;
32
+ width: any;
33
+ height: any;
34
+ alt: any;
35
+ }[];
36
+ locale: any;
37
+ type: any;
38
+ };
39
+ alternates: {
40
+ canonical: string;
41
+ languages: Record<string, string>;
42
+ };
43
+ };
44
+
45
+ export { type SeoDataOptions, setSeoData };
@@ -0,0 +1,7 @@
1
+ import {
2
+ setSeoData
3
+ } from "../chunk-3DP2A2OG.js";
4
+ export {
5
+ setSeoData
6
+ };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}