@justanarthur/payload-www 0.3.3 → 0.3.5
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/blocks.js +6 -2
- package/dist/collections.js +47 -15
- package/dist/components.js +1 -0
- package/dist/config.js +79 -21
- package/dist/core-blocks.js +6 -2
- package/dist/core-utils.js +5 -1
- package/dist/data-collections.js +47 -15
- package/dist/data-test.js +79 -21
- package/dist/globals.js +10 -1
- package/dist/hooks.js +47 -15
- package/dist/index.js +1 -0
- package/dist/metadata.js +64 -21
- package/dist/pages.js +118 -36
- package/dist/render-components.js +13 -3
- package/dist/render-metadata.js +64 -21
- package/dist/render-pages.js +178 -53
- package/dist/render-utils.js +58 -15
- package/dist/server.js +179 -56
- package/dist/test.js +79 -21
- package/dist/utils.js +5 -1
- package/dist/with-www-config.js +79 -21
- package/package.json +1 -1
package/dist/metadata.js
CHANGED
|
@@ -26,6 +26,11 @@ function getImageUrl(doc, siteUrl) {
|
|
|
26
26
|
return img.url.startsWith("http") ? img.url : `${siteUrl}${img.url}`;
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
29
|
+
function getImageUrlWithLog(doc, siteUrl) {
|
|
30
|
+
const result = getImageUrl(doc, siteUrl);
|
|
31
|
+
console.log("[WWW] render/metadata:jsonld:getImageUrl ->", result);
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
29
34
|
function resolveLocalizedField(value, locale) {
|
|
30
35
|
if (value == null)
|
|
31
36
|
return "";
|
|
@@ -47,6 +52,13 @@ function resolveLocalizedField(value, locale) {
|
|
|
47
52
|
}
|
|
48
53
|
return Object.values(obj).filter((v) => typeof v === "string" && v.length > 0).join(" / ");
|
|
49
54
|
}
|
|
55
|
+
function resolveLocalizedFieldWithLog(value, locale) {
|
|
56
|
+
const result = resolveLocalizedField(value, locale);
|
|
57
|
+
if (value && typeof value === "object") {
|
|
58
|
+
console.log("[WWW] render/metadata:jsonld:resolveLocalizedField locale=", locale, "->", JSON.stringify(result));
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
50
62
|
function buildArticleLd({
|
|
51
63
|
doc,
|
|
52
64
|
url,
|
|
@@ -57,12 +69,13 @@ function buildArticleLd({
|
|
|
57
69
|
publisherLogo
|
|
58
70
|
}) {
|
|
59
71
|
const name = publisherName ?? new URL(siteUrl).hostname;
|
|
72
|
+
console.log("[WWW] render/metadata:buildArticleLd url=", url, "locale=", locale, "type=", type, "publisherName=", name);
|
|
60
73
|
const ld = {
|
|
61
74
|
"@context": "https://schema.org",
|
|
62
75
|
"@type": type,
|
|
63
76
|
"@id": `${url}#article`,
|
|
64
|
-
headline:
|
|
65
|
-
description:
|
|
77
|
+
headline: resolveLocalizedFieldWithLog(doc.title, locale),
|
|
78
|
+
description: resolveLocalizedFieldWithLog(doc.meta?.description ?? doc.description ?? doc.excerpt, locale),
|
|
66
79
|
inLanguage: locale,
|
|
67
80
|
url,
|
|
68
81
|
dateModified: doc.updatedAt ? new Date(doc.updatedAt).toISOString() : undefined
|
|
@@ -70,7 +83,7 @@ function buildArticleLd({
|
|
|
70
83
|
const datePublished = doc.publishedAt ?? doc.createdAt;
|
|
71
84
|
if (datePublished)
|
|
72
85
|
ld.datePublished = new Date(datePublished).toISOString();
|
|
73
|
-
const imgUrl =
|
|
86
|
+
const imgUrl = getImageUrlWithLog(doc, siteUrl);
|
|
74
87
|
if (imgUrl)
|
|
75
88
|
ld.image = imgUrl;
|
|
76
89
|
ld.author = { "@type": "Organization", name, url: siteUrl };
|
|
@@ -86,6 +99,7 @@ function buildBreadcrumbsLd({
|
|
|
86
99
|
items,
|
|
87
100
|
currentUrl
|
|
88
101
|
}) {
|
|
102
|
+
console.log("[WWW] render/metadata:buildBreadcrumbsLd items=", items.length, "currentUrl=", currentUrl);
|
|
89
103
|
return {
|
|
90
104
|
"@context": "https://schema.org",
|
|
91
105
|
"@type": "BreadcrumbList",
|
|
@@ -103,6 +117,7 @@ function buildOrganizationLd({
|
|
|
103
117
|
logo,
|
|
104
118
|
sameAs
|
|
105
119
|
}) {
|
|
120
|
+
console.log("[WWW] render/metadata:buildOrganizationLd siteUrl=", siteUrl, "name=", name, "logo?", Boolean(logo), "sameAs?", Boolean(sameAs));
|
|
106
121
|
const org = {
|
|
107
122
|
"@context": "https://schema.org",
|
|
108
123
|
"@type": "Organization",
|
|
@@ -129,6 +144,7 @@ async function buildHreflangAlternates({
|
|
|
129
144
|
localePrefix = "always"
|
|
130
145
|
}) {
|
|
131
146
|
const allLocaleSlugs = await queryAllLocaleSlugs(storedSlug, locale);
|
|
147
|
+
console.log("[WWW] render/metadata:buildHreflangAlternates storedSlug=", storedSlug, "locale=", locale, "allLocaleSlugs=", JSON.stringify(allLocaleSlugs));
|
|
132
148
|
const languages = {};
|
|
133
149
|
const urlFor = (l, slug) => {
|
|
134
150
|
const trimmedPrefix = urlPrefix.replace(/^\/|\/$/g, "");
|
|
@@ -146,29 +162,36 @@ async function buildHreflangAlternates({
|
|
|
146
162
|
if (allLocaleSlugs?.[defaultLocale]) {
|
|
147
163
|
languages["x-default"] = urlFor(defaultLocale, allLocaleSlugs[defaultLocale]);
|
|
148
164
|
}
|
|
165
|
+
console.log("[WWW] render/metadata:buildHreflangAlternates ->", JSON.stringify(languages));
|
|
149
166
|
return languages;
|
|
150
167
|
}
|
|
151
168
|
|
|
152
169
|
// src/render/metadata/slug.ts
|
|
153
170
|
var SLUG_NESTED_DIVIDER = "_";
|
|
154
171
|
function segmentsToStoredSlug(segments, nested) {
|
|
155
|
-
if (!Array.isArray(segments))
|
|
172
|
+
if (!Array.isArray(segments)) {
|
|
173
|
+
console.log("[WWW] render/metadata:segmentsToStoredSlug string passthrough:", JSON.stringify(segments));
|
|
156
174
|
return segments;
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
175
|
+
}
|
|
176
|
+
const result = nested ? segments.join(SLUG_NESTED_DIVIDER) : segments[0] ?? "";
|
|
177
|
+
console.log("[WWW] render/metadata:segmentsToStoredSlug nested=", nested, "segments=", JSON.stringify(segments), "->", result);
|
|
178
|
+
return result;
|
|
160
179
|
}
|
|
161
180
|
function segmentsToUrlPath(segments, nested) {
|
|
181
|
+
let result;
|
|
162
182
|
if (!Array.isArray(segments))
|
|
163
|
-
|
|
164
|
-
if (nested)
|
|
165
|
-
|
|
166
|
-
|
|
183
|
+
result = "/" + segments;
|
|
184
|
+
else if (nested)
|
|
185
|
+
result = "/" + segments.join("/");
|
|
186
|
+
else
|
|
187
|
+
result = "/" + (segments[0] ?? "");
|
|
188
|
+
console.log("[WWW] render/metadata:segmentsToUrlPath nested=", nested, "segments=", JSON.stringify(segments), "->", result);
|
|
189
|
+
return result;
|
|
167
190
|
}
|
|
168
191
|
function storedSlugToSegments(storedSlug, nested) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
return
|
|
192
|
+
const result = nested ? storedSlug.split(SLUG_NESTED_DIVIDER) : storedSlug;
|
|
193
|
+
console.log("[WWW] render/metadata:storedSlugToSegments nested=", nested, "storedSlug=", storedSlug, "->", JSON.stringify(result));
|
|
194
|
+
return result;
|
|
172
195
|
}
|
|
173
196
|
function buildCanonicalUrl({
|
|
174
197
|
siteUrl,
|
|
@@ -178,7 +201,9 @@ function buildCanonicalUrl({
|
|
|
178
201
|
}) {
|
|
179
202
|
const trimmedPrefix = urlPrefix.replace(/^\/|\/$/g, "");
|
|
180
203
|
const prefixSegment = trimmedPrefix ? `/${trimmedPrefix}` : "";
|
|
181
|
-
|
|
204
|
+
const result = `${siteUrl}/${locale}${prefixSegment}${urlPath}`;
|
|
205
|
+
console.log("[WWW] render/metadata:buildCanonicalUrl siteUrl=", siteUrl, "locale=", locale, "urlPrefix=", urlPrefix, "urlPath=", urlPath, "->", result);
|
|
206
|
+
return result;
|
|
182
207
|
}
|
|
183
208
|
function getUrlPath(segments, nested, homeSlug) {
|
|
184
209
|
const urlPath = segmentsToUrlPath(segments, nested);
|
|
@@ -211,6 +236,7 @@ var queryDocBySlug = cache(async function queryDocBySlug2({
|
|
|
211
236
|
draft = false,
|
|
212
237
|
config
|
|
213
238
|
}) {
|
|
239
|
+
console.log("[WWW] render/metadata:queryDocBySlug collection=", collectionSlug, "slug=", slug, "slugField=", slugField, "locale=", locale, "draft=", draft);
|
|
214
240
|
const payload = await getPayload({ config });
|
|
215
241
|
const result = await payload.find({
|
|
216
242
|
collection: collectionSlug,
|
|
@@ -221,7 +247,9 @@ var queryDocBySlug = cache(async function queryDocBySlug2({
|
|
|
221
247
|
where: { [slugField]: { equals: slug } },
|
|
222
248
|
locale
|
|
223
249
|
});
|
|
224
|
-
|
|
250
|
+
const doc = result.docs?.[0] ?? null;
|
|
251
|
+
console.log("[WWW] render/metadata:queryDocBySlug ->", doc ? "hit" : "miss");
|
|
252
|
+
return doc;
|
|
225
253
|
});
|
|
226
254
|
var queryAllDocs = cache(async function queryAllDocs2({
|
|
227
255
|
collectionSlug,
|
|
@@ -229,6 +257,7 @@ var queryAllDocs = cache(async function queryAllDocs2({
|
|
|
229
257
|
locale,
|
|
230
258
|
config
|
|
231
259
|
}) {
|
|
260
|
+
console.log("[WWW] render/metadata:queryAllDocs collection=", collectionSlug, "locale=", locale);
|
|
232
261
|
const payload = await getPayload({ config });
|
|
233
262
|
const result = await payload.find({
|
|
234
263
|
collection: collectionSlug,
|
|
@@ -239,7 +268,9 @@ var queryAllDocs = cache(async function queryAllDocs2({
|
|
|
239
268
|
select: { [slugField]: true },
|
|
240
269
|
locale
|
|
241
270
|
});
|
|
242
|
-
|
|
271
|
+
const docs = result.docs ?? [];
|
|
272
|
+
console.log("[WWW] render/metadata:queryAllDocs -> count=", docs.length);
|
|
273
|
+
return docs;
|
|
243
274
|
});
|
|
244
275
|
var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
|
|
245
276
|
collectionSlug,
|
|
@@ -248,6 +279,7 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
|
|
|
248
279
|
locale,
|
|
249
280
|
config
|
|
250
281
|
}) {
|
|
282
|
+
console.log("[WWW] render/metadata:queryAllLocaleSlugs collection=", collectionSlug, "slug=", slug, "locale=", locale);
|
|
251
283
|
const payload = await getPayload({ config });
|
|
252
284
|
const result = await payload.find({
|
|
253
285
|
collection: collectionSlug,
|
|
@@ -260,8 +292,10 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
|
|
|
260
292
|
select: { [slugField]: true }
|
|
261
293
|
});
|
|
262
294
|
const doc = result.docs?.[0];
|
|
263
|
-
if (!doc)
|
|
295
|
+
if (!doc) {
|
|
296
|
+
console.log("[WWW] render/metadata:queryAllLocaleSlugs -> undefined (no doc)");
|
|
264
297
|
return;
|
|
298
|
+
}
|
|
265
299
|
let fieldValue = doc[slugField];
|
|
266
300
|
if (doc.id != null) {
|
|
267
301
|
const allLocales = await payload.findByID({
|
|
@@ -276,6 +310,7 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
|
|
|
276
310
|
fieldValue = allLocales[slugField];
|
|
277
311
|
}
|
|
278
312
|
if (fieldValue && typeof fieldValue === "object") {
|
|
313
|
+
console.log("[WWW] render/metadata:queryAllLocaleSlugs -> localized map=", JSON.stringify(fieldValue));
|
|
279
314
|
return fieldValue;
|
|
280
315
|
}
|
|
281
316
|
const resolved = await config;
|
|
@@ -283,6 +318,7 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
|
|
|
283
318
|
const out = {};
|
|
284
319
|
for (const l of rawLocales)
|
|
285
320
|
out[l] = String(fieldValue ?? slug);
|
|
321
|
+
console.log("[WWW] render/metadata:queryAllLocaleSlugs -> flat-fanout locales=", rawLocales.length, "slug=", JSON.stringify(fieldValue ?? slug));
|
|
286
322
|
return out;
|
|
287
323
|
});
|
|
288
324
|
var queryGlobal = cache(async function queryGlobal2({
|
|
@@ -292,6 +328,7 @@ var queryGlobal = cache(async function queryGlobal2({
|
|
|
292
328
|
draft = false,
|
|
293
329
|
config
|
|
294
330
|
}) {
|
|
331
|
+
console.log("[WWW] render/metadata:queryGlobal global=", globalSlug, "locale=", locale, "depth=", depth, "draft=", draft);
|
|
295
332
|
const payload = await getPayload({ config });
|
|
296
333
|
try {
|
|
297
334
|
const global = await payload.findGlobal({
|
|
@@ -300,17 +337,23 @@ var queryGlobal = cache(async function queryGlobal2({
|
|
|
300
337
|
draft,
|
|
301
338
|
locale
|
|
302
339
|
});
|
|
340
|
+
console.log("[WWW] render/metadata:queryGlobal -> hit");
|
|
303
341
|
return global;
|
|
304
|
-
} catch {
|
|
342
|
+
} catch (error) {
|
|
343
|
+
console.warn("[WWW] render/metadata:queryGlobal failed for slug=", globalSlug, "err=", String(error));
|
|
305
344
|
return null;
|
|
306
345
|
}
|
|
307
346
|
});
|
|
308
347
|
function getRenderModuleExports(exportName, collection, importMap) {
|
|
309
348
|
const path = collection?.custom?.path;
|
|
310
|
-
if (!path)
|
|
349
|
+
if (!path) {
|
|
350
|
+
console.log("[WWW] render/metadata:getRenderModuleExports no custom.path exportName=", exportName);
|
|
311
351
|
return;
|
|
352
|
+
}
|
|
312
353
|
const mod = getFromImportMap(path, importMap);
|
|
313
|
-
|
|
354
|
+
const value = mod?.[exportName];
|
|
355
|
+
console.log("[WWW] render/metadata:getRenderModuleExports exportName=", exportName, "path=", path, "hit=", Boolean(value));
|
|
356
|
+
return value;
|
|
314
357
|
}
|
|
315
358
|
|
|
316
359
|
// src/exports/metadata.ts
|