@justanarthur/payload-www 0.3.2 → 0.3.4
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/access.js +13 -3
- package/dist/blocks.js +21 -7
- package/dist/collections.js +72 -19
- package/dist/components.js +1 -0
- package/dist/config.js +108 -26
- package/dist/core-access.js +13 -3
- package/dist/core-blocks.js +21 -7
- package/dist/core-fields.js +21 -7
- package/dist/core-utils.js +20 -6
- package/dist/data-collections.js +72 -19
- package/dist/data-test.js +108 -26
- package/dist/fields.js +21 -7
- package/dist/globals.js +18 -1
- package/dist/hooks.js +47 -15
- package/dist/index.js +1 -0
- package/dist/metadata.js +68 -22
- package/dist/pages.js +133 -39
- package/dist/render-components.js +13 -3
- package/dist/render-metadata.js +68 -22
- package/dist/render-pages.js +223 -59
- package/dist/render-utils.js +62 -16
- package/dist/server.js +245 -69
- package/dist/test.js +108 -26
- package/dist/utils.js +20 -6
- package/dist/with-www-config.js +108 -26
- package/package.json +1 -1
package/dist/render-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);
|
|
@@ -199,7 +224,10 @@ import { cache } from "react";
|
|
|
199
224
|
|
|
200
225
|
// src/core/utils/getFromImportMap.ts
|
|
201
226
|
function getFromImportMap(key, importMap) {
|
|
202
|
-
|
|
227
|
+
const resolvedKey = key.includes("#") ? key : key + "#default";
|
|
228
|
+
const value = importMap[resolvedKey];
|
|
229
|
+
console.log("[WWW] core/utils:getFromImportMap key=", key, "resolved=", resolvedKey, "hit=", Boolean(value));
|
|
230
|
+
return value;
|
|
203
231
|
}
|
|
204
232
|
|
|
205
233
|
// src/render/metadata/query.ts
|
|
@@ -211,6 +239,7 @@ var queryDocBySlug = cache(async function queryDocBySlug2({
|
|
|
211
239
|
draft = false,
|
|
212
240
|
config
|
|
213
241
|
}) {
|
|
242
|
+
console.log("[WWW] render/metadata:queryDocBySlug collection=", collectionSlug, "slug=", slug, "slugField=", slugField, "locale=", locale, "draft=", draft);
|
|
214
243
|
const payload = await getPayload({ config });
|
|
215
244
|
const result = await payload.find({
|
|
216
245
|
collection: collectionSlug,
|
|
@@ -221,7 +250,9 @@ var queryDocBySlug = cache(async function queryDocBySlug2({
|
|
|
221
250
|
where: { [slugField]: { equals: slug } },
|
|
222
251
|
locale
|
|
223
252
|
});
|
|
224
|
-
|
|
253
|
+
const doc = result.docs?.[0] ?? null;
|
|
254
|
+
console.log("[WWW] render/metadata:queryDocBySlug ->", doc ? "hit" : "miss");
|
|
255
|
+
return doc;
|
|
225
256
|
});
|
|
226
257
|
var queryAllDocs = cache(async function queryAllDocs2({
|
|
227
258
|
collectionSlug,
|
|
@@ -229,6 +260,7 @@ var queryAllDocs = cache(async function queryAllDocs2({
|
|
|
229
260
|
locale,
|
|
230
261
|
config
|
|
231
262
|
}) {
|
|
263
|
+
console.log("[WWW] render/metadata:queryAllDocs collection=", collectionSlug, "locale=", locale);
|
|
232
264
|
const payload = await getPayload({ config });
|
|
233
265
|
const result = await payload.find({
|
|
234
266
|
collection: collectionSlug,
|
|
@@ -239,7 +271,9 @@ var queryAllDocs = cache(async function queryAllDocs2({
|
|
|
239
271
|
select: { [slugField]: true },
|
|
240
272
|
locale
|
|
241
273
|
});
|
|
242
|
-
|
|
274
|
+
const docs = result.docs ?? [];
|
|
275
|
+
console.log("[WWW] render/metadata:queryAllDocs -> count=", docs.length);
|
|
276
|
+
return docs;
|
|
243
277
|
});
|
|
244
278
|
var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
|
|
245
279
|
collectionSlug,
|
|
@@ -248,6 +282,7 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
|
|
|
248
282
|
locale,
|
|
249
283
|
config
|
|
250
284
|
}) {
|
|
285
|
+
console.log("[WWW] render/metadata:queryAllLocaleSlugs collection=", collectionSlug, "slug=", slug, "locale=", locale);
|
|
251
286
|
const payload = await getPayload({ config });
|
|
252
287
|
const result = await payload.find({
|
|
253
288
|
collection: collectionSlug,
|
|
@@ -260,8 +295,10 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
|
|
|
260
295
|
select: { [slugField]: true }
|
|
261
296
|
});
|
|
262
297
|
const doc = result.docs?.[0];
|
|
263
|
-
if (!doc)
|
|
298
|
+
if (!doc) {
|
|
299
|
+
console.log("[WWW] render/metadata:queryAllLocaleSlugs -> undefined (no doc)");
|
|
264
300
|
return;
|
|
301
|
+
}
|
|
265
302
|
let fieldValue = doc[slugField];
|
|
266
303
|
if (doc.id != null) {
|
|
267
304
|
const allLocales = await payload.findByID({
|
|
@@ -276,6 +313,7 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
|
|
|
276
313
|
fieldValue = allLocales[slugField];
|
|
277
314
|
}
|
|
278
315
|
if (fieldValue && typeof fieldValue === "object") {
|
|
316
|
+
console.log("[WWW] render/metadata:queryAllLocaleSlugs -> localized map=", JSON.stringify(fieldValue));
|
|
279
317
|
return fieldValue;
|
|
280
318
|
}
|
|
281
319
|
const resolved = await config;
|
|
@@ -283,6 +321,7 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
|
|
|
283
321
|
const out = {};
|
|
284
322
|
for (const l of rawLocales)
|
|
285
323
|
out[l] = String(fieldValue ?? slug);
|
|
324
|
+
console.log("[WWW] render/metadata:queryAllLocaleSlugs -> flat-fanout locales=", rawLocales.length, "slug=", JSON.stringify(fieldValue ?? slug));
|
|
286
325
|
return out;
|
|
287
326
|
});
|
|
288
327
|
var queryGlobal = cache(async function queryGlobal2({
|
|
@@ -292,6 +331,7 @@ var queryGlobal = cache(async function queryGlobal2({
|
|
|
292
331
|
draft = false,
|
|
293
332
|
config
|
|
294
333
|
}) {
|
|
334
|
+
console.log("[WWW] render/metadata:queryGlobal global=", globalSlug, "locale=", locale, "depth=", depth, "draft=", draft);
|
|
295
335
|
const payload = await getPayload({ config });
|
|
296
336
|
try {
|
|
297
337
|
const global = await payload.findGlobal({
|
|
@@ -300,17 +340,23 @@ var queryGlobal = cache(async function queryGlobal2({
|
|
|
300
340
|
draft,
|
|
301
341
|
locale
|
|
302
342
|
});
|
|
343
|
+
console.log("[WWW] render/metadata:queryGlobal -> hit");
|
|
303
344
|
return global;
|
|
304
|
-
} catch {
|
|
345
|
+
} catch (error) {
|
|
346
|
+
console.warn("[WWW] render/metadata:queryGlobal failed for slug=", globalSlug, "err=", String(error));
|
|
305
347
|
return null;
|
|
306
348
|
}
|
|
307
349
|
});
|
|
308
350
|
function getRenderModuleExports(exportName, collection, importMap) {
|
|
309
351
|
const path = collection?.custom?.path;
|
|
310
|
-
if (!path)
|
|
352
|
+
if (!path) {
|
|
353
|
+
console.log("[WWW] render/metadata:getRenderModuleExports no custom.path exportName=", exportName);
|
|
311
354
|
return;
|
|
355
|
+
}
|
|
312
356
|
const mod = getFromImportMap(path, importMap);
|
|
313
|
-
|
|
357
|
+
const value = mod?.[exportName];
|
|
358
|
+
console.log("[WWW] render/metadata:getRenderModuleExports exportName=", exportName, "path=", path, "hit=", Boolean(value));
|
|
359
|
+
return value;
|
|
314
360
|
}
|
|
315
361
|
|
|
316
362
|
// src/exports/render-metadata.ts
|