Skip to content

Commit 8b7016a

Browse files
claude: consume body immediately
1 parent 62d2d35 commit 8b7016a

2 files changed

Lines changed: 23 additions & 17 deletions

File tree

src/routes/einzelverssynopse/[thirties=thirties]/[verse]/+page.server.js

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ export async function load({ fetch, params }) {
9292

9393
const nextVerse = index < filteredVerses.length - 1 ? filteredVerses[index + 1] : null;
9494

95+
/** Helper: fetch and consume the body immediately so no Response body is left unread */
96+
const fetchJson = (/** @type {string} */ url) => fetch(url).then((r) => (r.ok ? r.json() : null));
97+
9598
// Fetch the textzeugen
9699
const hasSuffix = verseparts[1]; // check if there is a suffix in the URL
97100
await Promise.all(
@@ -107,7 +110,9 @@ export async function load({ fetch, params }) {
107110
);
108111

109112
publisherData[element.handle] = versesToFetch.map((verseObject) => {
110-
return fetch(`/einzelverssynopse/data/${handlePath}/${thirties}/${verseObject.verse}`);
113+
return fetchJson(
114+
`/einzelverssynopse/data/${handlePath}/${thirties}/${verseObject.verse}`
115+
);
111116
});
112117
hasAdditions = true;
113118
} else {
@@ -125,7 +130,9 @@ export async function load({ fetch, params }) {
125130
}
126131

127132
publisherData[element.handle] = versesToFetch.map((verseObject) => {
128-
return fetch(`/einzelverssynopse/data/${handlePath}/${thirties}/${verseObject.verse}`);
133+
return fetchJson(
134+
`/einzelverssynopse/data/${handlePath}/${thirties}/${verseObject.verse}`
135+
);
129136
});
130137
}
131138
}
@@ -138,30 +145,25 @@ export async function load({ fetch, params }) {
138145
(/** @type {{ handle: string | number; }} */ element) => {
139146
const handlePath = encodeURIComponent(String(element.handle));
140147
publisherData[element.handle] = [
141-
fetch(`/einzelverssynopse/data/fassungen/${handlePath}/${thirties}/${verse ?? '01'}`)
148+
fetchJson(`/einzelverssynopse/data/fassungen/${handlePath}/${thirties}/${verse ?? '01'}`)
142149
];
143150
}
144151
);
145152
}
146153

147154
/** @type {string[]} */
148155
let loss = [];
149-
// Wait for all promises to resolve and filter those with status 200
156+
// Wait for all promises to resolve and filter those with no data
150157
await metadata;
151158
const resolvedPublisherData = await Promise.all(
152159
Object.entries(publisherData).map(async ([key, promiseArray]) => {
153-
let responses = await Promise.all(promiseArray);
154-
let data = null;
155-
if (responses.some((res) => res.status === 200)) {
156-
data = await Promise.all(
157-
responses.filter((res) => res.status === 200).map(async (res) => await res.clone().json())
158-
);
159-
}
160-
if (data === null && !key.includes('fr')) {
160+
const results = await Promise.all(promiseArray);
161+
const data = results.filter((r) => r !== null);
162+
if (data.length === 0 && !key.includes('fr')) {
161163
loss.push(key);
162164
return null;
163165
}
164-
return [key, data];
166+
return [key, data.length > 0 ? data : null];
165167
})
166168
).then((results) => results.filter((result) => result !== null));
167169

src/routes/textzeugen/data/[witnes]/[page]/+server.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,19 @@ export async function GET({ params, fetch }) {
2020
export async function entries() {
2121
const { codices, fragments } = await metadata;
2222
const handles = [...codices, ...fragments].map((c) => c.handle);
23-
const metadataPage = handles.map((h) =>
24-
fetch(`${URL_STATIC_API}/json/metadata-ms-page/${h}.json`).then((r) => {
23+
const metadataPage = handles.map(async (h) => {
24+
try {
25+
const r = await fetch(`${URL_STATIC_API}/json/metadata-ms-page/${h}.json`);
2526
if (!r.ok) {
2627
console.error(`Failed to fetch metadata-ms-page for ${h}: ${r.status}`);
2728
return null;
2829
}
2930
return r.json();
30-
})
31-
);
31+
} catch (e) {
32+
console.error(`Error fetching metadata-ms-page for ${h}:`, e);
33+
return null;
34+
}
35+
});
3236

3337
/**
3438
* @type {PromiseLike<import("./$types").RouteParams[]> | { witnes: string; page: any; }[]}

0 commit comments

Comments
 (0)