@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/server.js CHANGED
@@ -30,6 +30,7 @@ function PageShowcase({
30
30
  metadataHeading = "Page metadata",
31
31
  jsonLdHeading = "JSON-LD"
32
32
  }) {
33
+ console.log("[WWW] render/components:PageShowcase jsonLdEntries=", jsonLd.length, "hasOg=", Boolean(metadata.openGraph), "hasTwitter=", Boolean(metadata.twitter), "canonical=", metadata.alternates?.canonical);
33
34
  const og = metadata.openGraph;
34
35
  const twitter = metadata.twitter;
35
36
  const rows = [
@@ -147,6 +148,7 @@ function LocaleSwitcher({
147
148
  labels
148
149
  }) {
149
150
  const locales = Object.keys(hreflangAlternates).filter((k) => k !== "x-default");
151
+ console.log("[WWW] render/components:LocaleSwitcher currentLocale=", currentLocale, "locales=", JSON.stringify(locales), "hasXDefault=", Boolean(hreflangAlternates["x-default"]));
150
152
  return /* @__PURE__ */ jsx6("nav", {
151
153
  "aria-label": "Language",
152
154
  className: "locale-switcher",
@@ -223,30 +225,45 @@ var slugField = (options = {}) => {
223
225
 
224
226
  // src/render/_locale.ts
225
227
  function prefixFor(locale, defaultLocale, mode) {
228
+ let result;
226
229
  if (mode === "never")
227
- return "";
228
- if (mode === "as-needed" && locale === defaultLocale)
229
- return "";
230
- return `/${locale}`;
230
+ result = "";
231
+ else if (mode === "as-needed" && locale === defaultLocale)
232
+ result = "";
233
+ else
234
+ result = `/${locale}`;
235
+ console.log("[WWW] render/_locale:prefixFor locale=", locale, "default=", defaultLocale, "mode=", mode, "->", JSON.stringify(result));
236
+ return result;
231
237
  }
232
238
  function resolveLocale(req) {
233
- if (!req || typeof req !== "object")
239
+ if (!req || typeof req !== "object") {
240
+ console.log('[WWW] render/_locale:resolveLocale -> "" (no req)');
234
241
  return "";
242
+ }
235
243
  const r = req;
236
- if (typeof r.locale === "string" && r.locale.length > 0)
244
+ if (typeof r.locale === "string" && r.locale.length > 0) {
245
+ console.log("[WWW] render/_locale:resolveLocale ->", r.locale, "(from req.locale)");
237
246
  return r.locale;
247
+ }
238
248
  const fallback = r.payload?.config?.localization?.defaultLocale;
239
- if (typeof fallback === "string" && fallback.length > 0)
249
+ if (typeof fallback === "string" && fallback.length > 0) {
250
+ console.log("[WWW] render/_locale:resolveLocale ->", fallback, "(from config.localization.defaultLocale)");
240
251
  return fallback;
252
+ }
253
+ console.log('[WWW] render/_locale:resolveLocale -> "" (no locale anywhere)');
241
254
  return "";
242
255
  }
243
256
  function allLocales(req) {
244
- if (!req || typeof req !== "object")
257
+ if (!req || typeof req !== "object") {
258
+ console.log("[WWW] render/_locale:allLocales -> [] (no req)");
245
259
  return [];
260
+ }
246
261
  const r = req;
247
262
  const list = r.payload?.config?.localization?.locales;
248
- if (!Array.isArray(list) || list.length === 0)
263
+ if (!Array.isArray(list) || list.length === 0) {
264
+ console.log("[WWW] render/_locale:allLocales -> [] (no locales declared)");
249
265
  return [];
266
+ }
250
267
  const out = [];
251
268
  for (const entry of list) {
252
269
  if (typeof entry === "string" && entry.length > 0) {
@@ -257,6 +274,7 @@ function allLocales(req) {
257
274
  out.push(code);
258
275
  }
259
276
  }
277
+ console.log("[WWW] render/_locale:allLocales ->", JSON.stringify(out));
260
278
  return out;
261
279
  }
262
280
 
@@ -266,21 +284,28 @@ function nextCacheImport() {
266
284
  return cachePromise ??= import("next/cache");
267
285
  }
268
286
  function shouldSkipRevalidate(context) {
269
- return Boolean(context?.disableRevalidate);
287
+ const skip = Boolean(context?.disableRevalidate);
288
+ if (skip)
289
+ console.log("[WWW] render/hooks:_shared:shouldSkipRevalidate -> skip");
290
+ return skip;
270
291
  }
271
292
  async function safeRevalidatePath(payload, path) {
293
+ console.log("[WWW] render/hooks:_shared:safeRevalidatePath path=", path);
272
294
  try {
273
295
  const { revalidatePath } = await nextCacheImport();
274
296
  revalidatePath(path);
275
297
  } catch (error) {
298
+ console.error("[WWW] render/hooks:_shared:safeRevalidatePath failed path=", path, "err=", String(error));
276
299
  payload.logger.error(`revalidatePath("${path}") failed: ${String(error)}`);
277
300
  }
278
301
  }
279
302
  async function safeRevalidateTag(payload, tag, profile = "max") {
303
+ console.log("[WWW] render/hooks:_shared:safeRevalidateTag tag=", tag, "profile=", profile);
280
304
  try {
281
305
  const { revalidateTag } = await nextCacheImport();
282
306
  revalidateTag(tag, profile);
283
307
  } catch (error) {
308
+ console.error("[WWW] render/hooks:_shared:safeRevalidateTag failed tag=", tag, "err=", String(error));
284
309
  payload.logger.error(`revalidateTag("${tag}") failed: ${String(error)}`);
285
310
  }
286
311
  }
@@ -296,6 +321,7 @@ function createRevalidateCollectionHook(options) {
296
321
  pathMode = "url"
297
322
  } = options;
298
323
  const resolvedSitemapTag = sitemapTag === false ? false : sitemapTag ?? `${collectionSlug}-sitemap`;
324
+ console.log("[WWW] render/hooks:createRevalidateCollectionHook collectionSlug=", collectionSlug, "urlPathPrefix=", urlPathPrefix, "sitemapTag=", resolvedSitemapTag, "pathMode=", pathMode);
299
325
  const resolveDefaults = (req) => {
300
326
  const mode = modeOption ?? "always";
301
327
  const defaultLocale = defaultLocaleOption ?? req?.payload?.config?.localization?.defaultLocale ?? "";
@@ -324,6 +350,7 @@ function createRevalidateCollectionHook(options) {
324
350
  }
325
351
  };
326
352
  const fireCollectionTags = async (payload, docId, req) => {
353
+ console.log("[WWW] render/hooks:fireCollectionTags collectionSlug=", collectionSlug, "docId=", docId);
327
354
  if (typeof docId === "string" || typeof docId === "number") {
328
355
  await safeRevalidateTag(payload, `collection_${collectionSlug}_${docId}`);
329
356
  }
@@ -337,6 +364,7 @@ function createRevalidateCollectionHook(options) {
337
364
  const { payload } = req;
338
365
  const typed = doc;
339
366
  const prev = previousDoc;
367
+ console.log("[WWW] render/hooks:afterChange collectionSlug=", collectionSlug, "id=", typed.id, "slug=", typed.slug, "prevSlug=", prev?.slug);
340
368
  const isPublished = typed._status === "published";
341
369
  const wasPublished = prev?._status === "published";
342
370
  const prevSlugIsString = typeof prev?.slug === "string";
@@ -360,6 +388,7 @@ function createRevalidateCollectionHook(options) {
360
388
  return doc ?? null;
361
389
  const { payload } = req;
362
390
  const typed = doc;
391
+ console.log("[WWW] render/hooks:afterDelete collectionSlug=", collectionSlug, "id=", typed?.id, "slug=", typed?.slug);
363
392
  if (pathMode !== "tag-only") {
364
393
  await fanOutPaths(payload, req, typed?.slug, `Revalidating deleted ${collectionSlug} at path:`);
365
394
  }
@@ -368,11 +397,14 @@ function createRevalidateCollectionHook(options) {
368
397
  };
369
398
  return { afterChange, afterDelete };
370
399
  }
371
- var createRevalidatePageHooks = (opts = {}) => createRevalidateCollectionHook({
372
- collectionSlug: "pages",
373
- urlPathPrefix: "",
374
- ...opts
375
- });
400
+ var createRevalidatePageHooks = (opts = {}) => {
401
+ console.log("[WWW] render/hooks:createRevalidatePageHooks (deprecated alias) opts=", JSON.stringify(opts));
402
+ return createRevalidateCollectionHook({
403
+ collectionSlug: "pages",
404
+ urlPathPrefix: "",
405
+ ...opts
406
+ });
407
+ };
376
408
 
377
409
  // src/config/constants.ts
378
410
  var PAGES_RENDER_PATH = "@justanarthur/payload-www/render-pages#PagesPage";
@@ -680,10 +712,12 @@ var link = (options = {}) => {
680
712
 
681
713
  // src/render/hooks/revalidateGlobal.ts
682
714
  function createRevalidateGlobalHook(slug) {
715
+ console.log("[WWW] render/hooks:createRevalidateGlobalHook slug=", slug);
683
716
  return async ({ doc, req: { payload, context, locale } }) => {
684
717
  if (shouldSkipRevalidate(context))
685
718
  return doc;
686
719
  const tags = [`global_${slug}`, `global_${slug}_${locale}`];
720
+ console.log("[WWW] render/hooks:revalidateGlobal slug=", slug, "locale=", locale, "tags=", JSON.stringify(tags));
687
721
  payload.logger.info?.(`Revalidating global: ${tags.join(", ")}`);
688
722
  for (const tag of tags) {
689
723
  await safeRevalidateTag(payload, tag);
@@ -778,11 +812,14 @@ function createPreviewHandler(options) {
778
812
  const url = new URL(req.url);
779
813
  const path = url.searchParams.get("path") ?? "/";
780
814
  const previewSecret = url.searchParams.get("previewSecret");
815
+ console.log("[WWW] render/preview:createPreviewHandler:GET path=", path, "hasSecret=", Boolean(previewSecret), "enableDraftMode=", enableDraftMode);
781
816
  if (!previewSecret || previewSecret !== secret) {
817
+ console.warn("[WWW] render/preview:createPreviewHandler:GET invalid preview secret (401)");
782
818
  return new Response("Invalid preview secret", { status: 401 });
783
819
  }
784
820
  if (enableDraftMode) {
785
821
  (await draftMode()).enable();
822
+ console.log("[WWW] render/preview:createPreviewHandler:GET draftMode enabled");
786
823
  }
787
824
  redirect(path);
788
825
  return new Response(null, { status: 204 });
@@ -802,6 +839,7 @@ async function buildHreflangAlternates({
802
839
  localePrefix = "always"
803
840
  }) {
804
841
  const allLocaleSlugs = await queryAllLocaleSlugs(storedSlug, locale);
842
+ console.log("[WWW] render/metadata:buildHreflangAlternates storedSlug=", storedSlug, "locale=", locale, "allLocaleSlugs=", JSON.stringify(allLocaleSlugs));
805
843
  const languages = {};
806
844
  const urlFor = (l, slug) => {
807
845
  const trimmedPrefix = urlPrefix.replace(/^\/|\/$/g, "");
@@ -819,6 +857,7 @@ async function buildHreflangAlternates({
819
857
  if (allLocaleSlugs?.[defaultLocale]) {
820
858
  languages["x-default"] = urlFor(defaultLocale, allLocaleSlugs[defaultLocale]);
821
859
  }
860
+ console.log("[WWW] render/metadata:buildHreflangAlternates ->", JSON.stringify(languages));
822
861
  return languages;
823
862
  }
824
863
 
@@ -840,6 +879,7 @@ var queryDocBySlug = cache(async function queryDocBySlug2({
840
879
  draft = false,
841
880
  config
842
881
  }) {
882
+ console.log("[WWW] render/metadata:queryDocBySlug collection=", collectionSlug, "slug=", slug, "slugField=", slugField2, "locale=", locale, "draft=", draft);
843
883
  const payload = await getPayload({ config });
844
884
  const result = await payload.find({
845
885
  collection: collectionSlug,
@@ -850,7 +890,9 @@ var queryDocBySlug = cache(async function queryDocBySlug2({
850
890
  where: { [slugField2]: { equals: slug } },
851
891
  locale
852
892
  });
853
- return result.docs?.[0] ?? null;
893
+ const doc = result.docs?.[0] ?? null;
894
+ console.log("[WWW] render/metadata:queryDocBySlug ->", doc ? "hit" : "miss");
895
+ return doc;
854
896
  });
855
897
  var queryAllDocs = cache(async function queryAllDocs2({
856
898
  collectionSlug,
@@ -858,6 +900,7 @@ var queryAllDocs = cache(async function queryAllDocs2({
858
900
  locale,
859
901
  config
860
902
  }) {
903
+ console.log("[WWW] render/metadata:queryAllDocs collection=", collectionSlug, "locale=", locale);
861
904
  const payload = await getPayload({ config });
862
905
  const result = await payload.find({
863
906
  collection: collectionSlug,
@@ -868,7 +911,9 @@ var queryAllDocs = cache(async function queryAllDocs2({
868
911
  select: { [slugField2]: true },
869
912
  locale
870
913
  });
871
- return result.docs ?? [];
914
+ const docs = result.docs ?? [];
915
+ console.log("[WWW] render/metadata:queryAllDocs -> count=", docs.length);
916
+ return docs;
872
917
  });
873
918
  var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
874
919
  collectionSlug,
@@ -877,6 +922,7 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
877
922
  locale,
878
923
  config
879
924
  }) {
925
+ console.log("[WWW] render/metadata:queryAllLocaleSlugs collection=", collectionSlug, "slug=", slug, "locale=", locale);
880
926
  const payload = await getPayload({ config });
881
927
  const result = await payload.find({
882
928
  collection: collectionSlug,
@@ -889,8 +935,10 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
889
935
  select: { [slugField2]: true }
890
936
  });
891
937
  const doc = result.docs?.[0];
892
- if (!doc)
938
+ if (!doc) {
939
+ console.log("[WWW] render/metadata:queryAllLocaleSlugs -> undefined (no doc)");
893
940
  return;
941
+ }
894
942
  let fieldValue = doc[slugField2];
895
943
  if (doc.id != null) {
896
944
  const allLocales2 = await payload.findByID({
@@ -905,6 +953,7 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
905
953
  fieldValue = allLocales2[slugField2];
906
954
  }
907
955
  if (fieldValue && typeof fieldValue === "object") {
956
+ console.log("[WWW] render/metadata:queryAllLocaleSlugs -> localized map=", JSON.stringify(fieldValue));
908
957
  return fieldValue;
909
958
  }
910
959
  const resolved = await config;
@@ -912,6 +961,7 @@ var queryAllLocaleSlugs = cache(async function queryAllLocaleSlugs2({
912
961
  const out = {};
913
962
  for (const l of rawLocales)
914
963
  out[l] = String(fieldValue ?? slug);
964
+ console.log("[WWW] render/metadata:queryAllLocaleSlugs -> flat-fanout locales=", rawLocales.length, "slug=", JSON.stringify(fieldValue ?? slug));
915
965
  return out;
916
966
  });
917
967
  var queryGlobal = cache(async function queryGlobal2({
@@ -921,6 +971,7 @@ var queryGlobal = cache(async function queryGlobal2({
921
971
  draft = false,
922
972
  config
923
973
  }) {
974
+ console.log("[WWW] render/metadata:queryGlobal global=", globalSlug, "locale=", locale, "depth=", depth, "draft=", draft);
924
975
  const payload = await getPayload({ config });
925
976
  try {
926
977
  const global = await payload.findGlobal({
@@ -929,27 +980,35 @@ var queryGlobal = cache(async function queryGlobal2({
929
980
  draft,
930
981
  locale
931
982
  });
983
+ console.log("[WWW] render/metadata:queryGlobal -> hit");
932
984
  return global;
933
- } catch {
985
+ } catch (error) {
986
+ console.warn("[WWW] render/metadata:queryGlobal failed for slug=", globalSlug, "err=", String(error));
934
987
  return null;
935
988
  }
936
989
  });
937
990
  function getRenderModuleExports(exportName, collection, importMap) {
938
991
  const path = collection?.custom?.path;
939
- if (!path)
992
+ if (!path) {
993
+ console.log("[WWW] render/metadata:getRenderModuleExports no custom.path exportName=", exportName);
940
994
  return;
995
+ }
941
996
  const mod = getFromImportMap(path, importMap);
942
- return mod?.[exportName];
997
+ const value = mod?.[exportName];
998
+ console.log("[WWW] render/metadata:getRenderModuleExports exportName=", exportName, "path=", path, "hit=", Boolean(value));
999
+ return value;
943
1000
  }
944
1001
 
945
1002
  // src/render/sitemap/createSitemapFile.ts
946
1003
  function createSitemapFile(options) {
947
1004
  const { collections } = options;
948
1005
  return async function sitemap() {
1006
+ console.log("[WWW] render/sitemap:createSitemapFile:sitemap collections=", JSON.stringify(options.collections), "localePrefix=", options.localePrefix ?? "always");
949
1007
  const cfg = await options.config;
950
1008
  const allLocales2 = Array.isArray(cfg.localization?.locales) ? cfg.localization.locales.map((l) => typeof l === "string" ? l : l.code) : [cfg.localization?.defaultLocale ?? "en"];
951
1009
  const defaultLocale = cfg.localization?.defaultLocale ?? allLocales2[0];
952
1010
  const activeLocales = Array.isArray(options.locales) && options.locales.length > 0 ? options.locales.filter((l) => allLocales2.includes(l)) : allLocales2;
1011
+ console.log("[WWW] render/sitemap:createSitemapFile:sitemap allLocales=", JSON.stringify(allLocales2), "default=", defaultLocale, "active=", JSON.stringify(activeLocales));
953
1012
  const entries = [];
954
1013
  const seen = new Set;
955
1014
  for (const collectionSlug of collections) {
@@ -1005,6 +1064,7 @@ function createSitemapFile(options) {
1005
1064
  }
1006
1065
  }
1007
1066
  }
1067
+ console.log("[WWW] render/sitemap:createSitemapFile:sitemap -> entries=", entries.length);
1008
1068
  return entries;
1009
1069
  };
1010
1070
  }
@@ -1133,13 +1193,17 @@ function generateImportName(type, slug) {
1133
1193
  import { jsx } from "react/jsx-runtime";
1134
1194
  function renderCollectionModule(collection = [], slug, importMap, props) {
1135
1195
  const renderPath = collection?.find((c) => c.slug === slug)?.custom?.path;
1136
- if (!renderPath)
1196
+ if (!renderPath) {
1197
+ console.log("[WWW] render/utils:renderCollectionModule no custom.path slug=", slug);
1137
1198
  return null;
1199
+ }
1138
1200
  const CollectionRenderModule = getFromImportMap(renderPath, importMap);
1139
1201
  if (!CollectionRenderModule) {
1202
+ console.error("[WWW] render/utils:renderCollectionModule not found slug=", slug, "path=", renderPath);
1140
1203
  if (false) {}
1141
1204
  return null;
1142
1205
  }
1206
+ console.log("[WWW] render/utils:renderCollectionModule rendering slug=", slug, "path=", renderPath);
1143
1207
  return /* @__PURE__ */ jsx(CollectionRenderModule, {
1144
1208
  importMap,
1145
1209
  ...props
@@ -1150,13 +1214,17 @@ function renderCollectionModule(collection = [], slug, importMap, props) {
1150
1214
  import { jsx as jsx2 } from "react/jsx-runtime";
1151
1215
  function renderGlobalModule(globals = [], slug, importMap, props) {
1152
1216
  const renderPath = globals?.find((g) => g.slug === slug)?.custom?.path;
1153
- if (!renderPath)
1217
+ if (!renderPath) {
1218
+ console.log("[WWW] render/utils:renderGlobalModule no custom.path slug=", slug);
1154
1219
  return null;
1220
+ }
1155
1221
  const GlobalRenderModule = getFromImportMap(renderPath, importMap);
1156
1222
  if (!GlobalRenderModule) {
1223
+ console.error("[WWW] render/utils:renderGlobalModule not found slug=", slug, "path=", renderPath);
1157
1224
  if (false) {}
1158
1225
  return null;
1159
1226
  }
1227
+ console.log("[WWW] render/utils:renderGlobalModule rendering slug=", slug, "path=", renderPath);
1160
1228
  return /* @__PURE__ */ jsx2(GlobalRenderModule, {
1161
1229
  importMap,
1162
1230
  ...props
@@ -1165,12 +1233,15 @@ function renderGlobalModule(globals = [], slug, importMap, props) {
1165
1233
 
1166
1234
  // src/render/utils/getCachedGlobal.ts
1167
1235
  import { unstable_cache } from "next/cache";
1168
- var getCachedGlobal = (config, slug, depth = 0) => unstable_cache(async () => queryGlobal({
1169
- globalSlug: slug,
1170
- locale: "__ALL__",
1171
- depth,
1172
- config
1173
- }), [slug], { tags: [`global_${slug}`] });
1236
+ var getCachedGlobal = (config, slug, depth = 0) => {
1237
+ console.log("[WWW] render/utils:getCachedGlobal slug=", slug, "depth=", depth);
1238
+ return unstable_cache(async () => queryGlobal({
1239
+ globalSlug: slug,
1240
+ locale: "__ALL__",
1241
+ depth,
1242
+ config
1243
+ }), [slug], { tags: [`global_${slug}`] });
1244
+ };
1174
1245
 
1175
1246
  // src/render/metadata/jsonld.ts
1176
1247
  function getImageUrl(doc, siteUrl) {
@@ -1183,6 +1254,11 @@ function getImageUrl(doc, siteUrl) {
1183
1254
  return img.url.startsWith("http") ? img.url : `${siteUrl}${img.url}`;
1184
1255
  return null;
1185
1256
  }
1257
+ function getImageUrlWithLog(doc, siteUrl) {
1258
+ const result = getImageUrl(doc, siteUrl);
1259
+ console.log("[WWW] render/metadata:jsonld:getImageUrl ->", result);
1260
+ return result;
1261
+ }
1186
1262
  function resolveLocalizedField(value, locale) {
1187
1263
  if (value == null)
1188
1264
  return "";
@@ -1204,6 +1280,13 @@ function resolveLocalizedField(value, locale) {
1204
1280
  }
1205
1281
  return Object.values(obj).filter((v) => typeof v === "string" && v.length > 0).join(" / ");
1206
1282
  }
1283
+ function resolveLocalizedFieldWithLog(value, locale) {
1284
+ const result = resolveLocalizedField(value, locale);
1285
+ if (value && typeof value === "object") {
1286
+ console.log("[WWW] render/metadata:jsonld:resolveLocalizedField locale=", locale, "->", JSON.stringify(result));
1287
+ }
1288
+ return result;
1289
+ }
1207
1290
  function buildArticleLd({
1208
1291
  doc,
1209
1292
  url,
@@ -1214,12 +1297,13 @@ function buildArticleLd({
1214
1297
  publisherLogo
1215
1298
  }) {
1216
1299
  const name = publisherName ?? new URL(siteUrl).hostname;
1300
+ console.log("[WWW] render/metadata:buildArticleLd url=", url, "locale=", locale, "type=", type, "publisherName=", name);
1217
1301
  const ld = {
1218
1302
  "@context": "https://schema.org",
1219
1303
  "@type": type,
1220
1304
  "@id": `${url}#article`,
1221
- headline: resolveLocalizedField(doc.title, locale),
1222
- description: resolveLocalizedField(doc.meta?.description ?? doc.description ?? doc.excerpt, locale),
1305
+ headline: resolveLocalizedFieldWithLog(doc.title, locale),
1306
+ description: resolveLocalizedFieldWithLog(doc.meta?.description ?? doc.description ?? doc.excerpt, locale),
1223
1307
  inLanguage: locale,
1224
1308
  url,
1225
1309
  dateModified: doc.updatedAt ? new Date(doc.updatedAt).toISOString() : undefined
@@ -1227,7 +1311,7 @@ function buildArticleLd({
1227
1311
  const datePublished = doc.publishedAt ?? doc.createdAt;
1228
1312
  if (datePublished)
1229
1313
  ld.datePublished = new Date(datePublished).toISOString();
1230
- const imgUrl = getImageUrl(doc, siteUrl);
1314
+ const imgUrl = getImageUrlWithLog(doc, siteUrl);
1231
1315
  if (imgUrl)
1232
1316
  ld.image = imgUrl;
1233
1317
  ld.author = { "@type": "Organization", name, url: siteUrl };
@@ -1243,6 +1327,7 @@ function buildBreadcrumbsLd({
1243
1327
  items,
1244
1328
  currentUrl
1245
1329
  }) {
1330
+ console.log("[WWW] render/metadata:buildBreadcrumbsLd items=", items.length, "currentUrl=", currentUrl);
1246
1331
  return {
1247
1332
  "@context": "https://schema.org",
1248
1333
  "@type": "BreadcrumbList",
@@ -1260,6 +1345,7 @@ function buildOrganizationLd({
1260
1345
  logo,
1261
1346
  sameAs
1262
1347
  }) {
1348
+ console.log("[WWW] render/metadata:buildOrganizationLd siteUrl=", siteUrl, "name=", name, "logo?", Boolean(logo), "sameAs?", Boolean(sameAs));
1263
1349
  const org = {
1264
1350
  "@context": "https://schema.org",
1265
1351
  "@type": "Organization",
@@ -1275,23 +1361,29 @@ function buildOrganizationLd({
1275
1361
  // src/render/metadata/slug.ts
1276
1362
  var SLUG_NESTED_DIVIDER = "_";
1277
1363
  function segmentsToStoredSlug(segments, nested) {
1278
- if (!Array.isArray(segments))
1364
+ if (!Array.isArray(segments)) {
1365
+ console.log("[WWW] render/metadata:segmentsToStoredSlug string passthrough:", JSON.stringify(segments));
1279
1366
  return segments;
1280
- if (nested)
1281
- return segments.join(SLUG_NESTED_DIVIDER);
1282
- return segments[0] ?? "";
1367
+ }
1368
+ const result = nested ? segments.join(SLUG_NESTED_DIVIDER) : segments[0] ?? "";
1369
+ console.log("[WWW] render/metadata:segmentsToStoredSlug nested=", nested, "segments=", JSON.stringify(segments), "->", result);
1370
+ return result;
1283
1371
  }
1284
1372
  function segmentsToUrlPath(segments, nested) {
1373
+ let result;
1285
1374
  if (!Array.isArray(segments))
1286
- return "/" + segments;
1287
- if (nested)
1288
- return "/" + segments.join("/");
1289
- return "/" + (segments[0] ?? "");
1375
+ result = "/" + segments;
1376
+ else if (nested)
1377
+ result = "/" + segments.join("/");
1378
+ else
1379
+ result = "/" + (segments[0] ?? "");
1380
+ console.log("[WWW] render/metadata:segmentsToUrlPath nested=", nested, "segments=", JSON.stringify(segments), "->", result);
1381
+ return result;
1290
1382
  }
1291
1383
  function storedSlugToSegments(storedSlug, nested) {
1292
- if (nested)
1293
- return storedSlug.split(SLUG_NESTED_DIVIDER);
1294
- return storedSlug;
1384
+ const result = nested ? storedSlug.split(SLUG_NESTED_DIVIDER) : storedSlug;
1385
+ console.log("[WWW] render/metadata:storedSlugToSegments nested=", nested, "storedSlug=", storedSlug, "->", JSON.stringify(result));
1386
+ return result;
1295
1387
  }
1296
1388
  function buildCanonicalUrl({
1297
1389
  siteUrl,
@@ -1301,7 +1393,9 @@ function buildCanonicalUrl({
1301
1393
  }) {
1302
1394
  const trimmedPrefix = urlPrefix.replace(/^\/|\/$/g, "");
1303
1395
  const prefixSegment = trimmedPrefix ? `/${trimmedPrefix}` : "";
1304
- return `${siteUrl}/${locale}${prefixSegment}${urlPath}`;
1396
+ const result = `${siteUrl}/${locale}${prefixSegment}${urlPath}`;
1397
+ console.log("[WWW] render/metadata:buildCanonicalUrl siteUrl=", siteUrl, "locale=", locale, "urlPrefix=", urlPrefix, "urlPath=", urlPath, "->", result);
1398
+ return result;
1305
1399
  }
1306
1400
  function getUrlPath(segments, nested, homeSlug) {
1307
1401
  const urlPath = segmentsToUrlPath(segments, nested);
@@ -1326,8 +1420,11 @@ var RenderBlocks = ({
1326
1420
  locale,
1327
1421
  searchParams
1328
1422
  }) => {
1329
- if (!blocks || !Array.isArray(blocks) || blocks.length === 0)
1423
+ if (!blocks || !Array.isArray(blocks) || blocks.length === 0) {
1424
+ console.log("[WWW] render/blocks:RenderBlocks no blocks (locale=", locale, ")");
1330
1425
  return null;
1426
+ }
1427
+ console.log("[WWW] render/blocks:RenderBlocks rendering count=", blocks.length, "locale=", locale);
1331
1428
  const rendered = [];
1332
1429
  for (let i = 0;i < blocks.length; i++) {
1333
1430
  const block = blocks[i];
@@ -1335,9 +1432,10 @@ var RenderBlocks = ({
1335
1432
  const importMapPath = config.admin?.dependencies?.[blockType]?.path ?? generateImportName("block", blockType);
1336
1433
  const Block = getFromImportMap(importMapPath, importMap);
1337
1434
  if (!Block) {
1338
- console.warn(`No block found for type: ${blockType}, config.admin?.dependencies?.[blockType]: ${config.admin?.dependencies?.[blockType]}`);
1435
+ console.warn(`[WWW] render/blocks:RenderBlocks no block for type=${blockType} importMapPath=${importMapPath} (locale=${locale})`);
1339
1436
  continue;
1340
1437
  }
1438
+ console.log("[WWW] render/blocks:RenderBlocks [", i, "] blockType=", blockType, "importMapPath=", importMapPath);
1341
1439
  rendered.push(/* @__PURE__ */ jsx3(Block, {
1342
1440
  index: i,
1343
1441
  ...blockProps,
@@ -1650,9 +1748,12 @@ import { RichText } from "@payloadcms/richtext-lexical/react";
1650
1748
  // src/render/pages/PagesPage.tsx
1651
1749
  import { jsx as jsx4, Fragment as Fragment2 } from "react/jsx-runtime";
1652
1750
  async function PagesPage({ doc, ...props }) {
1653
- if (!doc)
1751
+ if (!doc) {
1752
+ console.log("[WWW] render/pages:PagesPage no doc");
1654
1753
  return /* @__PURE__ */ jsx4(Fragment2, {});
1754
+ }
1655
1755
  const blocks = doc.blocks ?? [];
1756
+ console.log("[WWW] render/pages:PagesPage blocks=", blocks.length, "locale=", props.locale);
1656
1757
  return /* @__PURE__ */ jsx4(Fragment2, {
1657
1758
  children: /* @__PURE__ */ jsx4(RenderBlocks, {
1658
1759
  blocks,
@@ -1690,11 +1791,15 @@ function createCollectionPageExports({
1690
1791
  const localePrefixMode = typeof routing.localePrefix === "string" ? routing.localePrefix : routing.localePrefix?.mode ?? "always";
1691
1792
  const buildLocalePath = (locale, storedSlug) => {
1692
1793
  const urlPath = getUrlPath(storedSlugToSegments(storedSlug, nested), nested, HOME_SLUG);
1794
+ let result;
1693
1795
  if (localePrefixMode === "never")
1694
- return urlPath;
1695
- if (localePrefixMode === "as-needed" && locale === defaultLocale)
1696
- return urlPath;
1697
- return `/${locale}${urlPath}`;
1796
+ result = urlPath;
1797
+ else if (localePrefixMode === "as-needed" && locale === defaultLocale)
1798
+ result = urlPath;
1799
+ else
1800
+ result = `/${locale}${urlPath}`;
1801
+ console.log("[WWW] render/pages:createCollectionPageExports:buildLocalePath locale=", locale, "storedSlug=", storedSlug, "->", result);
1802
+ return result;
1698
1803
  };
1699
1804
  async function fetchDoc(locale, storedSlug, draft = false) {
1700
1805
  return queryDocBySlug({
@@ -1725,14 +1830,16 @@ function createCollectionPageExports({
1725
1830
  for (const [key, url] of Object.entries(languages)) {
1726
1831
  alternates[key] = url;
1727
1832
  }
1833
+ console.log("[WWW] render/pages:createCollectionPageExports:resolveHreflangAlternates canonical=", canonical, "alts=", JSON.stringify(alternates));
1728
1834
  return { alternates, canonical };
1729
1835
  }
1730
1836
  const default_ = async (props) => {
1731
1837
  const { slug: rawSlugSegments, locale: incomingLocale } = await props.params ?? {};
1732
1838
  const slugSegments = Array.isArray(rawSlugSegments) ? rawSlugSegments : [];
1733
1839
  const locale = typeof incomingLocale === "string" ? incomingLocale : defaultLocale;
1840
+ console.log("[WWW] render/pages:createCollectionPageExports:default_ collectionSlug=", slug, "locale=", locale, "segments=", JSON.stringify(slugSegments), "showcase=", showcaseEnabled);
1734
1841
  if (!locales.includes(locale)) {
1735
- console.error(`[WWW-DBG ${slug} notFound: invalid-locale] locale=${locale} segments=${JSON.stringify(slugSegments)}`);
1842
+ console.error(`[WWW] render/pages:createCollectionPageExports:default_ notFound invalid-locale collection=${slug} locale=${locale} segments=${JSON.stringify(slugSegments)}`);
1736
1843
  const { notFound } = await import("next/navigation");
1737
1844
  notFound();
1738
1845
  }
@@ -1740,16 +1847,18 @@ function createCollectionPageExports({
1740
1847
  setRequestLocale(locale);
1741
1848
  const { draftMode } = await import("next/headers");
1742
1849
  const { isEnabled: draft } = await draftMode();
1850
+ console.log("[WWW] render/pages:createCollectionPageExports:default_ draftMode=", draft);
1743
1851
  const storedSlug = segmentsToStoredSlug(slugSegments, nested);
1744
1852
  const doc = await fetchDoc(locale, storedSlug, draft);
1745
1853
  if (!doc) {
1746
- console.error(`[WWW-DBG ${slug} notFound: no-doc] locale=${locale} storedSlug="${storedSlug}" segments=${JSON.stringify(slugSegments)} draft=${draft}`);
1854
+ console.error(`[WWW] render/pages:createCollectionPageExports:default_ notFound no-doc collection=${slug} locale=${locale} storedSlug="${storedSlug}" segments=${JSON.stringify(slugSegments)} draft=${draft}`);
1747
1855
  const { notFound } = await import("next/navigation");
1748
1856
  notFound();
1749
1857
  }
1750
1858
  const cfg = await configPromise;
1751
1859
  const collectionCustomPath = cfg.collections.find((c) => c.slug === slug)?.custom?.path;
1752
1860
  const effectivePath = renderPath ?? collectionCustomPath ?? defaultRenderPath;
1861
+ console.log("[WWW] render/pages:createCollectionPageExports:default_ effectivePath=", effectivePath);
1753
1862
  const render = effectivePath === PAGES_RENDER_PATH ? /* @__PURE__ */ jsx7(PagesPage, {
1754
1863
  doc,
1755
1864
  importMap,
@@ -1811,15 +1920,22 @@ function createCollectionPageExports({
1811
1920
  const { slug: rawSlugSegments, locale: incomingLocale } = await props.params ?? {};
1812
1921
  const slugSegments = Array.isArray(rawSlugSegments) ? rawSlugSegments : [];
1813
1922
  const locale = typeof incomingLocale === "string" ? incomingLocale : defaultLocale;
1814
- if (!locales.includes(locale))
1923
+ console.log("[WWW] render/pages:createCollectionPageExports:generateMetadata collectionSlug=", slug, "locale=", locale, "segments=", JSON.stringify(slugSegments));
1924
+ if (!locales.includes(locale)) {
1925
+ console.log("[WWW] render/pages:createCollectionPageExports:generateMetadata invalid locale -> not found meta");
1815
1926
  return { title: "Not found", robots: { index: false, follow: false } };
1927
+ }
1816
1928
  const storedSlug = segmentsToStoredSlug(slugSegments, nested);
1817
1929
  const doc = await fetchDoc(locale, storedSlug);
1818
- if (!doc)
1930
+ if (!doc) {
1931
+ console.log("[WWW] render/pages:createCollectionPageExports:generateMetadata no doc -> not found meta");
1819
1932
  return { title: "Not found", robots: { index: false, follow: false } };
1933
+ }
1820
1934
  const collection = cfg.collections.find((c) => c.slug === slug);
1821
- if (!collection)
1935
+ if (!collection) {
1936
+ console.warn("[WWW] render/pages:createCollectionPageExports:generateMetadata collection not in config slug=", slug);
1822
1937
  return {};
1938
+ }
1823
1939
  const { canonical, alternates } = await resolveHreflangAlternates(locale, storedSlug);
1824
1940
  const meta = await generateMeta({
1825
1941
  doc,
@@ -1841,6 +1957,7 @@ function createCollectionPageExports({
1841
1957
  const urlPath = buildLocalePath(locale, storedSlug);
1842
1958
  const canonical = `${siteUrl}${urlPath}`;
1843
1959
  const entries = Array.isArray(jsonLdOption) ? jsonLdOption : metadataType === "article" ? [{ type: "article" }] : [{ type: "website" }];
1960
+ console.log("[WWW] render/pages:createCollectionPageExports:generateJsonLd collection=", slug, "locale=", locale, "entries=", entries.map((e) => e.type).join(","));
1844
1961
  const outputs = [];
1845
1962
  for (const entry of entries) {
1846
1963
  const id = entry.id ?? `jsonld-${entry.type}-${outputs.length}`;
@@ -1901,6 +2018,7 @@ function createCollectionPageExports({
1901
2018
  return outputs;
1902
2019
  }
1903
2020
  async function generateStaticParams() {
2021
+ console.log("[WWW] render/pages:createCollectionPageExports:generateStaticParams collection=", slug, "locales=", JSON.stringify(locales));
1904
2022
  const params = [];
1905
2023
  for (const locale of locales) {
1906
2024
  const docs = await queryAllDocs({ collectionSlug: slug, slugField: "slug", locale, config: configPromise });
@@ -1912,9 +2030,11 @@ function createCollectionPageExports({
1912
2030
  params.push({ slug: Array.isArray(segments) ? segments : [segments], locale });
1913
2031
  }
1914
2032
  }
2033
+ console.log("[WWW] render/pages:createCollectionPageExports:generateStaticParams -> count=", params.length);
1915
2034
  return params;
1916
2035
  }
1917
2036
  async function generateSitemap() {
2037
+ console.log("[WWW] render/pages:createCollectionPageExports:generateSitemap collection=", slug, "locales=", JSON.stringify(locales));
1918
2038
  const docs = await queryAllDocs({
1919
2039
  collectionSlug: slug,
1920
2040
  slugField: "slug",
@@ -1934,6 +2054,7 @@ function createCollectionPageExports({
1934
2054
  urls.push({ url: `${siteUrl}${urlPath}`, lastModified: lastmod, changeFrequency: changefreq, priority });
1935
2055
  }
1936
2056
  }
2057
+ console.log("[WWW] render/pages:createCollectionPageExports:generateSitemap -> urls=", urls.length);
1937
2058
  return urls;
1938
2059
  }
1939
2060
  return {
@@ -1995,6 +2116,7 @@ function createStaticPageExports({
1995
2116
  const default_ = async () => {
1996
2117
  const { getLocale } = await import("next-intl/server");
1997
2118
  const locale = await getLocale();
2119
+ console.log("[WWW] render/pages:createStaticPageExports:default_ kind=", kind, "locale=", locale);
1998
2120
  dbgRenderCount++;
1999
2121
  {
2000
2122
  let reqUrl = "?";
@@ -2027,6 +2149,7 @@ function createStaticPageExports({
2027
2149
  });
2028
2150
  }
2029
2151
  const cfg = await configPromise;
2152
+ console.log("[WWW] render/pages:createStaticPageExports:default_ -> rendering via PagesPage kind=", kind, "locale=", locale);
2030
2153
  return /* @__PURE__ */ jsx8(PagesPage, {
2031
2154
  doc,
2032
2155
  locale,