@@ -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
0 commit comments