@justanarthur/payload-www 2.2.7 → 2.2.8

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.
@@ -86,6 +86,32 @@ import { createCacheHelpers } from "@pro-laico/payload-revalidate/cache";
86
86
  import { tagsFor } from "@pro-laico/payload-revalidate";
87
87
  import { cacheLife } from "next/cache";
88
88
  import { getPayload } from "payload";
89
+
90
+ // src/render/metadata/slug.ts
91
+ var SLUG_NESTED_DIVIDER = "_";
92
+ function paramsSlugToSlug(slug, _shape) {
93
+ if (!slug)
94
+ return "";
95
+ return (Array.isArray(slug) ? slug : [slug]).join(SLUG_NESTED_DIVIDER);
96
+ }
97
+ function slugToParamsSlug(slug, shape) {
98
+ if (!slug)
99
+ return shape === "catch-all" ? [] : "";
100
+ return shape === "catch-all" ? slug.split(SLUG_NESTED_DIVIDER) : slug;
101
+ }
102
+ function isIndexSlug(slug) {
103
+ return !slug;
104
+ }
105
+ function shapeHasIndexPath(shape) {
106
+ return shape === "catch-all";
107
+ }
108
+ function slugToPath(slug) {
109
+ if (!slug)
110
+ return "";
111
+ return slug.split(SLUG_NESTED_DIVIDER).join("/");
112
+ }
113
+
114
+ // src/render/metadata/query.ts
89
115
  var _helpers = null;
90
116
  var _seedPromise = null;
91
117
  function seedPayloadCache({ config }) {
@@ -111,14 +137,16 @@ async function queryDocBySlug(args) {
111
137
  cacheLife("weeks");
112
138
  const { findDoc } = await requireCacheHelpers();
113
139
  const slugField = args.slugField ?? "slug";
114
- const result = await findDoc(args.collectionSlug, {
115
- where: { [slugField]: { equals: args.slug } },
140
+ const find = (slug) => findDoc(args.collectionSlug, {
141
+ where: { [slugField]: { equals: slug } },
116
142
  locale: args.locale,
117
143
  draft: args.draft ?? false,
118
144
  overrideAccess: args.draft ?? false,
119
145
  depth: args.depth
120
146
  });
121
- return result ?? null;
147
+ const result = await find(args.slug);
148
+ const doc = result ?? (isIndexSlug(args.slug) ? await find(null) : null);
149
+ return doc ?? null;
122
150
  }
123
151
  async function queryGlobal(args) {
124
152
  "use cache";
@@ -20,6 +20,8 @@ import { BuildOrganizationLdOptions, BuildProductLdOptions, BuildRootJsonLdOptio
20
20
  type SlugShape = "single" | "catch-all";
21
21
  declare function paramsSlugToSlug(slug: string | string[] | undefined, _shape: SlugShape): string;
22
22
  declare function slugToParamsSlug(slug: string, shape: SlugShape): string | string[];
23
+ declare function isIndexSlug(slug: string | null | undefined): boolean;
24
+ declare function shapeHasIndexPath(shape: SlugShape): boolean;
23
25
  import { DataFromCollectionSlug, DataFromGlobalSlug, SanitizedConfig } from "payload";
24
26
  import { tagsFor } from "@pro-laico/payload-revalidate";
25
27
  type SeedPayloadCacheArgs = {
@@ -76,7 +78,9 @@ declare const metadata: {
76
78
  queryAllLocaleSlugs: typeof queryAllLocaleSlugs;
77
79
  paramsSlugToSlug: typeof paramsSlugToSlug;
78
80
  slugToParamsSlug: typeof slugToParamsSlug;
81
+ isIndexSlug: typeof isIndexSlug;
82
+ shapeHasIndexPath: typeof shapeHasIndexPath;
79
83
  seedPayloadCache: typeof seedPayloadCache;
80
84
  tagsFor: (payload: Payload_eipjla) => Tags_1jpdl;
81
85
  };
82
- export { ArticleLdOptions, BreadcrumbItem, BuildOrganizationLdOptions, BuildProductLdOptions, BuildRootJsonLdOptions, BuildWebSiteLdOptions, SeedPayloadCacheArgs, SlugShape, buildArticleLd, buildBreadcrumbsLd, buildOrganizationLd, buildProductLd, buildRootJsonLd, buildWebSiteLd, metadata as default, paramsSlugToSlug, queryAllDocs, queryAllLocaleSlugs, queryDocByID, queryDocBySlug, queryGlobal, seedPayloadCache, slugToParamsSlug, tagsFor };
86
+ export { ArticleLdOptions, BreadcrumbItem, BuildOrganizationLdOptions, BuildProductLdOptions, BuildRootJsonLdOptions, BuildWebSiteLdOptions, SeedPayloadCacheArgs, SlugShape, buildArticleLd, buildBreadcrumbsLd, buildOrganizationLd, buildProductLd, buildRootJsonLd, buildWebSiteLd, metadata as default, isIndexSlug, paramsSlugToSlug, queryAllDocs, queryAllLocaleSlugs, queryDocByID, queryDocBySlug, queryGlobal, seedPayloadCache, shapeHasIndexPath, slugToParamsSlug, tagsFor };
package/dist/metadata.js CHANGED
@@ -103,6 +103,12 @@ function slugToParamsSlug(slug, shape) {
103
103
  return shape === "catch-all" ? [] : "";
104
104
  return shape === "catch-all" ? slug.split(SLUG_NESTED_DIVIDER) : slug;
105
105
  }
106
+ function isIndexSlug(slug) {
107
+ return !slug;
108
+ }
109
+ function shapeHasIndexPath(shape) {
110
+ return shape === "catch-all";
111
+ }
106
112
  function slugToPath(slug) {
107
113
  if (!slug)
108
114
  return "";
@@ -139,14 +145,16 @@ async function queryDocBySlug(args) {
139
145
  cacheLife("weeks");
140
146
  const { findDoc } = await requireCacheHelpers();
141
147
  const slugField = args.slugField ?? "slug";
142
- const result = await findDoc(args.collectionSlug, {
143
- where: { [slugField]: { equals: args.slug } },
148
+ const find = (slug) => findDoc(args.collectionSlug, {
149
+ where: { [slugField]: { equals: slug } },
144
150
  locale: args.locale,
145
151
  draft: args.draft ?? false,
146
152
  overrideAccess: args.draft ?? false,
147
153
  depth: args.depth
148
154
  });
149
- return result ?? null;
155
+ const result = await find(args.slug);
156
+ const doc = result ?? (isIndexSlug(args.slug) ? await find(null) : null);
157
+ return doc ?? null;
150
158
  }
151
159
  async function queryGlobal(args) {
152
160
  "use cache";
@@ -218,6 +226,8 @@ var metadata = {
218
226
  queryAllLocaleSlugs,
219
227
  paramsSlugToSlug,
220
228
  slugToParamsSlug,
229
+ isIndexSlug,
230
+ shapeHasIndexPath,
221
231
  seedPayloadCache,
222
232
  tagsFor
223
233
  };
@@ -230,6 +240,7 @@ export {
230
240
  buildRootJsonLd,
231
241
  buildWebSiteLd,
232
242
  metadata_default as default,
243
+ isIndexSlug,
233
244
  paramsSlugToSlug,
234
245
  queryAllDocs,
235
246
  queryAllLocaleSlugs,
@@ -237,6 +248,7 @@ export {
237
248
  queryDocBySlug,
238
249
  queryGlobal,
239
250
  seedPayloadCache,
251
+ shapeHasIndexPath,
240
252
  slugToParamsSlug,
241
253
  tagsFor
242
254
  };
package/dist/pages.js CHANGED
@@ -188,6 +188,12 @@ function slugToParamsSlug(slug, shape) {
188
188
  return shape === "catch-all" ? [] : "";
189
189
  return shape === "catch-all" ? slug.split(SLUG_NESTED_DIVIDER) : slug;
190
190
  }
191
+ function isIndexSlug(slug) {
192
+ return !slug;
193
+ }
194
+ function shapeHasIndexPath(shape) {
195
+ return shape === "catch-all";
196
+ }
191
197
  function slugToPath(slug) {
192
198
  if (!slug)
193
199
  return "";
@@ -224,14 +230,16 @@ async function queryDocBySlug(args) {
224
230
  cacheLife("weeks");
225
231
  const { findDoc } = await requireCacheHelpers();
226
232
  const slugField = args.slugField ?? "slug";
227
- const result = await findDoc(args.collectionSlug, {
228
- where: { [slugField]: { equals: args.slug } },
233
+ const find = (slug) => findDoc(args.collectionSlug, {
234
+ where: { [slugField]: { equals: slug } },
229
235
  locale: args.locale,
230
236
  draft: args.draft ?? false,
231
237
  overrideAccess: args.draft ?? false,
232
238
  depth: args.depth
233
239
  });
234
- return result ?? null;
240
+ const result = await find(args.slug);
241
+ const doc = result ?? (isIndexSlug(args.slug) ? await find(null) : null);
242
+ return doc ?? null;
235
243
  }
236
244
  async function queryGlobal(args) {
237
245
  "use cache";
@@ -428,7 +436,10 @@ function createCollectionPageExports({
428
436
  await props.params;
429
437
  const perLocaleEntries = await Promise.all(routing.locales.map(async (locale) => {
430
438
  const docs = await queryAllDocs({ locale, collectionSlug });
431
- return docs.filter((doc) => typeof doc.slug === "string" && doc.slug.length > 0).map((doc) => ({ locale, slug: slugToParamsSlug(doc.slug, slugShape) }));
439
+ const entries = docs.filter((doc) => !isIndexSlug(doc.slug)).map((doc) => ({ locale, slug: slugToParamsSlug(doc.slug, slugShape) }));
440
+ if (shapeHasIndexPath(slugShape) && await fetchDoc(locale, ""))
441
+ entries.push({ locale, slug: slugToParamsSlug("", slugShape) });
442
+ return entries;
432
443
  }));
433
444
  return perLocaleEntries.flat();
434
445
  }
@@ -218,6 +218,12 @@ function slugToParamsSlug(slug, shape) {
218
218
  return shape === "catch-all" ? [] : "";
219
219
  return shape === "catch-all" ? slug.split(SLUG_NESTED_DIVIDER) : slug;
220
220
  }
221
+ function isIndexSlug(slug) {
222
+ return !slug;
223
+ }
224
+ function shapeHasIndexPath(shape) {
225
+ return shape === "catch-all";
226
+ }
221
227
  function slugToPath(slug) {
222
228
  if (!slug)
223
229
  return "";
@@ -254,14 +260,16 @@ async function queryDocBySlug(args) {
254
260
  cacheLife("weeks");
255
261
  const { findDoc } = await requireCacheHelpers();
256
262
  const slugField = args.slugField ?? "slug";
257
- const result = await findDoc(args.collectionSlug, {
258
- where: { [slugField]: { equals: args.slug } },
263
+ const find = (slug) => findDoc(args.collectionSlug, {
264
+ where: { [slugField]: { equals: slug } },
259
265
  locale: args.locale,
260
266
  draft: args.draft ?? false,
261
267
  overrideAccess: args.draft ?? false,
262
268
  depth: args.depth
263
269
  });
264
- return result ?? null;
270
+ const result = await find(args.slug);
271
+ const doc = result ?? (isIndexSlug(args.slug) ? await find(null) : null);
272
+ return doc ?? null;
265
273
  }
266
274
  async function queryGlobal(args) {
267
275
  "use cache";
@@ -458,7 +466,10 @@ function createCollectionPageExports({
458
466
  await props.params;
459
467
  const perLocaleEntries = await Promise.all(routing.locales.map(async (locale) => {
460
468
  const docs = await queryAllDocs({ locale, collectionSlug });
461
- return docs.filter((doc) => typeof doc.slug === "string" && doc.slug.length > 0).map((doc) => ({ locale, slug: slugToParamsSlug(doc.slug, slugShape) }));
469
+ const entries = docs.filter((doc) => !isIndexSlug(doc.slug)).map((doc) => ({ locale, slug: slugToParamsSlug(doc.slug, slugShape) }));
470
+ if (shapeHasIndexPath(slugShape) && await fetchDoc(locale, ""))
471
+ entries.push({ locale, slug: slugToParamsSlug("", slugShape) });
472
+ return entries;
462
473
  }));
463
474
  return perLocaleEntries.flat();
464
475
  }
package/dist/sitemap.js CHANGED
@@ -13,6 +13,12 @@ function slugToParamsSlug(slug, shape) {
13
13
  return shape === "catch-all" ? [] : "";
14
14
  return shape === "catch-all" ? slug.split(SLUG_NESTED_DIVIDER) : slug;
15
15
  }
16
+ function isIndexSlug(slug) {
17
+ return !slug;
18
+ }
19
+ function shapeHasIndexPath(shape) {
20
+ return shape === "catch-all";
21
+ }
16
22
  function slugToPath(slug) {
17
23
  if (!slug)
18
24
  return "";
@@ -49,14 +55,16 @@ async function queryDocBySlug(args) {
49
55
  cacheLife("weeks");
50
56
  const { findDoc } = await requireCacheHelpers();
51
57
  const slugField = args.slugField ?? "slug";
52
- const result = await findDoc(args.collectionSlug, {
53
- where: { [slugField]: { equals: args.slug } },
58
+ const find = (slug) => findDoc(args.collectionSlug, {
59
+ where: { [slugField]: { equals: slug } },
54
60
  locale: args.locale,
55
61
  draft: args.draft ?? false,
56
62
  overrideAccess: args.draft ?? false,
57
63
  depth: args.depth
58
64
  });
59
- return result ?? null;
65
+ const result = await find(args.slug);
66
+ const doc = result ?? (isIndexSlug(args.slug) ? await find(null) : null);
67
+ return doc ?? null;
60
68
  }
61
69
  async function queryGlobal(args) {
62
70
  "use cache";
@@ -274,7 +282,10 @@ function createCollectionPageExports({
274
282
  await props.params;
275
283
  const perLocaleEntries = await Promise.all(routing.locales.map(async (locale) => {
276
284
  const docs = await queryAllDocs({ locale, collectionSlug });
277
- return docs.filter((doc) => typeof doc.slug === "string" && doc.slug.length > 0).map((doc) => ({ locale, slug: slugToParamsSlug(doc.slug, slugShape) }));
285
+ const entries = docs.filter((doc) => !isIndexSlug(doc.slug)).map((doc) => ({ locale, slug: slugToParamsSlug(doc.slug, slugShape) }));
286
+ if (shapeHasIndexPath(slugShape) && await fetchDoc(locale, ""))
287
+ entries.push({ locale, slug: slugToParamsSlug("", slugShape) });
288
+ return entries;
278
289
  }));
279
290
  return perLocaleEntries.flat();
280
291
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@justanarthur/payload-www",
3
3
  "description": "Reusable Payload CMS website template — config builder, collections, globals, blocks, fields, access, hooks, metadata (JSON-LD, hreflang), page renderers, and test helpers.",
4
- "version": "2.2.7",
4
+ "version": "2.2.8",
5
5
  "type": "module",
6
6
  "private": false,
7
7
  "files": [