@paroicms/server 1.116.5 → 1.117.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/README.md +2 -6
- package/dist/connector/site-schema/derive-og-type.d.ts +1 -0
- package/dist/connector/site-schema/derive-og-type.js +9 -0
- package/dist/connector/site-schema/derive-og-type.js.map +1 -0
- package/dist/connector/site-schema/site-schema-factory.js +7 -2
- package/dist/connector/site-schema/site-schema-factory.js.map +1 -1
- package/dist/protected-site/protected-site.req-handler.js +1 -1
- package/dist/rendered-site/liquidjs-filters/head-tags-filter.js +12 -1
- package/dist/rendered-site/liquidjs-filters/head-tags-filter.js.map +1 -1
- package/dist/rendered-site/liquidjs-filters/info-filter.js +24 -1
- package/dist/rendered-site/liquidjs-filters/info-filter.js.map +1 -1
- package/dist/rendered-site/liquidjs-filters/json-ld-filter.d.ts +2 -0
- package/dist/rendered-site/liquidjs-filters/json-ld-filter.js +10 -0
- package/dist/rendered-site/liquidjs-filters/json-ld-filter.js.map +1 -0
- package/dist/rendered-site/page-route/raw-document-payload.js +1 -0
- package/dist/rendered-site/page-route/raw-document-payload.js.map +1 -1
- package/dist/rendering-payload/create-doc-drop.js +2 -0
- package/dist/rendering-payload/create-doc-drop.js.map +1 -1
- package/dist/rendering-payload/doc-values.queries.js +5 -1
- package/dist/rendering-payload/doc-values.queries.js.map +1 -1
- package/dist/rendering-payload/json-ld-payload.d.ts +6 -0
- package/dist/rendering-payload/json-ld-payload.js +146 -0
- package/dist/rendering-payload/json-ld-payload.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/site-schema-lib/authors-lib.site-schema.json +1 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { toAbsoluteUrl } from "@paroicms/internal-server-lib";
|
|
2
|
+
import { encodeLNodeId } from "@paroicms/public-anywhere-lib";
|
|
3
|
+
import { type } from "arktype";
|
|
4
|
+
import { getSiteFieldValue } from "../admin-backend/fields/load-fields.queries.js";
|
|
5
|
+
import { getHandleOfSiteField } from "../common/media-handles.helpers.js";
|
|
6
|
+
import { toMSourceMedia } from "../common/medias/to-media-values.js";
|
|
7
|
+
import { truncExcerptToWord } from "../helpers/excerpt.helpers.js";
|
|
8
|
+
import { loadOrFromRenderingCache } from "../liquidjs-tools/liquidjs-drop.js";
|
|
9
|
+
import { getFeaturedImageOf } from "../rendered-site/helpers/medias.helpers.js";
|
|
10
|
+
import { getUrlOfDocument } from "../rendered-site/page-route/make-url.js";
|
|
11
|
+
import { getPublicBreadcrumb } from "./breadcrumb.queries.js";
|
|
12
|
+
import { loadExcerpt } from "./excerpt.queries.js";
|
|
13
|
+
import { loadPublicFieldValues } from "./field-values.js";
|
|
14
|
+
import { makeImageAvailable, makeImageAvailableByHandle } from "./make-image-available.js";
|
|
15
|
+
const StringOrUndefinedAT = type("string|undefined");
|
|
16
|
+
const articleJsonLdTypes = new Set(["Article", "BlogPosting"]);
|
|
17
|
+
export async function makeJsonLdPayload(renderingContext, documentType, docValues, options) {
|
|
18
|
+
const { siteContext } = renderingContext;
|
|
19
|
+
const graph = [];
|
|
20
|
+
const siteUrl = toAbsoluteUrl(siteContext, "/");
|
|
21
|
+
const excerpt = await loadOrFromRenderingCache(renderingContext, `excerpt:${encodeLNodeId(docValues)}:full`, () => loadExcerpt(siteContext, renderingContext.tracker, {
|
|
22
|
+
lNodeId: docValues,
|
|
23
|
+
fieldTypes: documentType.fields ?? [],
|
|
24
|
+
}));
|
|
25
|
+
const url = options.url ??
|
|
26
|
+
(await loadOrFromRenderingCache(renderingContext, `url:${encodeLNodeId(docValues)}`, () => loadUrlOfDocument(renderingContext, docValues)));
|
|
27
|
+
const siteTitle = await loadOrFromRenderingCache(renderingContext, `siteFields:${docValues.language}:title`, async () => {
|
|
28
|
+
const title = await getSiteFieldValue(siteContext, {
|
|
29
|
+
fieldName: "title",
|
|
30
|
+
language: docValues.language,
|
|
31
|
+
publishedOnly: true,
|
|
32
|
+
});
|
|
33
|
+
return StringOrUndefinedAT.assert(title);
|
|
34
|
+
});
|
|
35
|
+
const absoluteUrl = toAbsoluteUrl(siteContext, url);
|
|
36
|
+
const isArticleType = articleJsonLdTypes.has(documentType.jsonLdType ?? "");
|
|
37
|
+
const description = excerpt
|
|
38
|
+
? truncExcerptToWord(excerpt, 160)
|
|
39
|
+
: docValues.metaDescription
|
|
40
|
+
? truncExcerptToWord(docValues.metaDescription, 160)
|
|
41
|
+
: undefined;
|
|
42
|
+
const pageEntity = {
|
|
43
|
+
"@type": documentType.jsonLdType ?? "WebPage",
|
|
44
|
+
"@id": `${absoluteUrl}/#webpage`,
|
|
45
|
+
url: absoluteUrl,
|
|
46
|
+
inLanguage: docValues.language,
|
|
47
|
+
isPartOf: { "@id": `${siteUrl}#website` },
|
|
48
|
+
};
|
|
49
|
+
if (isArticleType) {
|
|
50
|
+
pageEntity.headline = docValues.title;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
pageEntity.name = docValues.title;
|
|
54
|
+
}
|
|
55
|
+
if (description)
|
|
56
|
+
pageEntity.description = description;
|
|
57
|
+
if (docValues.publishDate)
|
|
58
|
+
pageEntity.datePublished = docValues.publishDate;
|
|
59
|
+
if (docValues.updatedAt)
|
|
60
|
+
pageEntity.dateModified = docValues.updatedAt;
|
|
61
|
+
if (isArticleType) {
|
|
62
|
+
const featuredImageId = await loadOrFromRenderingCache(renderingContext, `featuredImage:${encodeLNodeId(docValues)}`, async () => (await getFeaturedImageOf(renderingContext, {
|
|
63
|
+
nodeId: docValues.nodeId,
|
|
64
|
+
documentType,
|
|
65
|
+
}))?.id);
|
|
66
|
+
if (featuredImageId !== undefined) {
|
|
67
|
+
const ogMedia = await siteContext.mediaStorage.getMedia({ mediaId: featuredImageId });
|
|
68
|
+
if (ogMedia?.kind === "image") {
|
|
69
|
+
const imageVariant = await makeImageAvailable(renderingContext, toMSourceMedia(siteContext, ogMedia), { pixelRatio: 1, resizeRule: "1200x630" });
|
|
70
|
+
pageEntity.image = {
|
|
71
|
+
"@type": "ImageObject",
|
|
72
|
+
url: toAbsoluteUrl(siteContext, imageVariant.url),
|
|
73
|
+
width: imageVariant.rawWidth,
|
|
74
|
+
height: imageVariant.rawHeight,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const authorsField = documentType.fields?.find((f) => f.dataType === "labeling" && f.storedAs === "labeling" && f.taxonomy === "author");
|
|
79
|
+
if (authorsField) {
|
|
80
|
+
const fieldValues = await loadPublicFieldValues(renderingContext, {
|
|
81
|
+
typeName: docValues.type,
|
|
82
|
+
lNodeId: docValues,
|
|
83
|
+
fieldNames: [authorsField.name],
|
|
84
|
+
});
|
|
85
|
+
const authorTerms = fieldValues && typeof fieldValues === "object"
|
|
86
|
+
? fieldValues[authorsField.name]
|
|
87
|
+
: undefined;
|
|
88
|
+
if (authorTerms && Array.isArray(authorTerms) && authorTerms.length > 0) {
|
|
89
|
+
pageEntity.author = authorTerms.map((term) => {
|
|
90
|
+
const entry = { "@type": "Person", name: term.title };
|
|
91
|
+
if (term.url)
|
|
92
|
+
entry.url = toAbsoluteUrl(siteContext, term.url);
|
|
93
|
+
return entry;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const publisher = { "@type": "Organization", name: siteTitle };
|
|
98
|
+
const logoHandle = getHandleOfSiteField(siteContext, { fieldName: "logo" });
|
|
99
|
+
const logoImage = await makeImageAvailableByHandle(renderingContext, { handle: logoHandle }, { resizeRule: "x112x", pixelRatio: 1 });
|
|
100
|
+
if (logoImage) {
|
|
101
|
+
publisher.logo = {
|
|
102
|
+
"@type": "ImageObject",
|
|
103
|
+
url: toAbsoluteUrl(siteContext, logoImage.url),
|
|
104
|
+
width: logoImage.rawWidth,
|
|
105
|
+
height: logoImage.rawHeight,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
pageEntity.publisher = publisher;
|
|
109
|
+
}
|
|
110
|
+
graph.push(pageEntity);
|
|
111
|
+
const breadcrumbItems = await loadOrFromRenderingCache(renderingContext, `breadcrumb:${encodeLNodeId(docValues)}`, () => getPublicBreadcrumb(renderingContext, docValues));
|
|
112
|
+
const listItems = breadcrumbItems
|
|
113
|
+
.filter((item) => item.url)
|
|
114
|
+
.map((item, index) => ({
|
|
115
|
+
"@type": "ListItem",
|
|
116
|
+
position: index + 1,
|
|
117
|
+
name: item.title ?? "",
|
|
118
|
+
item: toAbsoluteUrl(siteContext, item.url),
|
|
119
|
+
}));
|
|
120
|
+
if (listItems.length > 0) {
|
|
121
|
+
graph.push({
|
|
122
|
+
"@type": "BreadcrumbList",
|
|
123
|
+
itemListElement: listItems,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
if (documentType.typeName === "home") {
|
|
127
|
+
graph.push({
|
|
128
|
+
"@type": "WebSite",
|
|
129
|
+
"@id": `${siteUrl}#website`,
|
|
130
|
+
name: siteTitle,
|
|
131
|
+
url: siteUrl,
|
|
132
|
+
inLanguage: docValues.language,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return graph;
|
|
136
|
+
}
|
|
137
|
+
async function loadUrlOfDocument(renderingContext, documentId) {
|
|
138
|
+
const { siteContext } = renderingContext;
|
|
139
|
+
const { url, dependencyKeys } = await getUrlOfDocument(siteContext, renderingContext.tracker, documentId, {
|
|
140
|
+
returnUrlDependencyKeys: true,
|
|
141
|
+
forPreview: renderingContext.isPreview,
|
|
142
|
+
});
|
|
143
|
+
renderingContext.addDependencyKey(...dependencyKeys);
|
|
144
|
+
return url;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=json-ld-payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-ld-payload.js","sourceRoot":"","sources":["../../src/rendering-payload/json-ld-payload.ts"],"names":[],"mappings":"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"}
|