@djangocfg/nextjs 2.1.550 → 2.1.555
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 +4 -3
- package/dist/index.mjs +19 -4
- package/dist/index.mjs.map +1 -1
- package/dist/og-image/index.d.mts +16 -7
- package/dist/og-image/index.mjs.map +1 -1
- package/dist/sitemap/index.mjs +19 -4
- package/dist/sitemap/index.mjs.map +1 -1
- package/package.json +9 -9
- package/src/og-image/README.md +19 -4
- package/src/og-image/metadata-factory.ts +4 -2
- package/src/og-image/metadata.ts +6 -3
- package/src/og-image/types.ts +6 -2
- package/src/sitemap/fetch.ts +41 -4
package/README.md
CHANGED
|
@@ -650,9 +650,10 @@ export const metadata = createMetadata({ title: p.name, og: { image: p.image } }
|
|
|
650
650
|
|
|
651
651
|
#### Per-page rendered cards
|
|
652
652
|
|
|
653
|
-
Use Next.js's `opengraph-image` file convention
|
|
654
|
-
|
|
655
|
-
|
|
653
|
+
Use Next.js's `opengraph-image` file convention — but note it applies only when
|
|
654
|
+
metadata leaves `openGraph.images` unset. `createMetadata` always sets it, so
|
|
655
|
+
the route is suppressed unless the page strips that key from the metadata the
|
|
656
|
+
factory returned. See [`src/og-image/README.md`](./src/og-image/README.md#per-page-cards).
|
|
656
657
|
|
|
657
658
|
#### Low-level (escape hatches)
|
|
658
659
|
|
package/dist/index.mjs
CHANGED
|
@@ -11,6 +11,19 @@ var DEFAULT_INDEX_REVALIDATE = 600;
|
|
|
11
11
|
var DEFAULT_FEED_REVALIDATE = 3600;
|
|
12
12
|
|
|
13
13
|
// src/sitemap/fetch.ts
|
|
14
|
+
var NEXT_DATA_CACHE_LIMIT = 2 * 1024 * 1024;
|
|
15
|
+
var oversizeWarned = /* @__PURE__ */ new Set();
|
|
16
|
+
async function parseAndCheckSize(r, url, label) {
|
|
17
|
+
const text = await r.text();
|
|
18
|
+
const bytes = new TextEncoder().encode(text).length;
|
|
19
|
+
if (bytes > NEXT_DATA_CACHE_LIMIT && !oversizeWarned.has(url)) {
|
|
20
|
+
oversizeWarned.add(url);
|
|
21
|
+
console.warn(
|
|
22
|
+
`[sitemap] ${label} is ${bytes} bytes, over Next.js's 2MB data-cache ceiling: revalidate is inert for this feed and every regeneration refetches it from Django. Lower the backend page_size if the extra load matters \u2014 note 50,000 URLs is the sitemap protocol's own maximum, so a large payload here is not itself a bug.`
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
return JSON.parse(text);
|
|
26
|
+
}
|
|
14
27
|
var EMPTY_INDEX = {
|
|
15
28
|
sources: [],
|
|
16
29
|
generated_at: (/* @__PURE__ */ new Date(0)).toISOString(),
|
|
@@ -25,15 +38,16 @@ var emptyFeed = (source, cursor) => ({
|
|
|
25
38
|
entries: []
|
|
26
39
|
});
|
|
27
40
|
async function fetchSitemapIndex(apiUrl, revalidate) {
|
|
41
|
+
const url = `${apiUrl}/cfg/sitemap/index/`;
|
|
28
42
|
try {
|
|
29
|
-
const r = await fetch(
|
|
43
|
+
const r = await fetch(url, {
|
|
30
44
|
next: { revalidate }
|
|
31
45
|
});
|
|
32
46
|
if (!r.ok) {
|
|
33
47
|
console.warn(`[sitemap] index fetch returned ${r.status}; falling back to empty`);
|
|
34
48
|
return EMPTY_INDEX;
|
|
35
49
|
}
|
|
36
|
-
return await r
|
|
50
|
+
return await parseAndCheckSize(r, url, "index");
|
|
37
51
|
} catch (err) {
|
|
38
52
|
console.warn("[sitemap] index fetch failed:", err);
|
|
39
53
|
return EMPTY_INDEX;
|
|
@@ -42,15 +56,16 @@ async function fetchSitemapIndex(apiUrl, revalidate) {
|
|
|
42
56
|
async function fetchSitemapFeed(apiUrl, source, cursor, revalidate) {
|
|
43
57
|
const params = new URLSearchParams({ source });
|
|
44
58
|
if (cursor) params.set("cursor", cursor);
|
|
59
|
+
const url = `${apiUrl}/cfg/sitemap/feed/?${params}`;
|
|
45
60
|
try {
|
|
46
|
-
const r = await fetch(
|
|
61
|
+
const r = await fetch(url, {
|
|
47
62
|
next: { revalidate }
|
|
48
63
|
});
|
|
49
64
|
if (!r.ok) {
|
|
50
65
|
console.warn(`[sitemap] feed ${source} returned ${r.status}; falling back to empty`);
|
|
51
66
|
return emptyFeed(source, cursor);
|
|
52
67
|
}
|
|
53
|
-
return await r
|
|
68
|
+
return await parseAndCheckSize(r, url, `feed ${source}`);
|
|
54
69
|
} catch (err) {
|
|
55
70
|
console.warn(`[sitemap] feed ${source} fetch failed:`, err);
|
|
56
71
|
return emptyFeed(source, cursor);
|