@webqit/webflo 0.20.60 → 0.20.61
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/package.json
CHANGED
|
@@ -273,15 +273,22 @@ export class AppRuntime {
|
|
|
273
273
|
createStreamingResponse(httpEvent, readStream, stats) {
|
|
274
274
|
let response;
|
|
275
275
|
const requestRange = httpEvent.request.headers.get('Range', true); // Parses the Range header
|
|
276
|
+
|
|
276
277
|
if (requestRange.length) {
|
|
277
278
|
const streams = requestRange.reduce((streams, range) => {
|
|
278
279
|
if (!streams) return;
|
|
279
|
-
const [start, end] = range.resolveAgainst(stats.size); // Resolve offsets
|
|
280
|
-
console.log('_______', range, stats.size, [start, end]);
|
|
281
280
|
const currentStart = (streams[streams.length - 1]?.end || -1) + 1;
|
|
281
|
+
|
|
282
282
|
if (!range.canResolveAgainst(currentStart, stats.size)) return; // Only after rendering()
|
|
283
|
-
|
|
283
|
+
const [start, end] = range.resolveAgainst(stats.size); // Resolve offsets
|
|
284
|
+
|
|
285
|
+
try {
|
|
286
|
+
return streams.concat({ start, end, stream: readStream({ start, end }) });
|
|
287
|
+
} catch(e) {
|
|
288
|
+
console.log('_______', httpEvent.request.headers.get('Range'), requestRange, stats.size, [start, end]);
|
|
289
|
+
}
|
|
284
290
|
}, []);
|
|
291
|
+
|
|
285
292
|
if (!streams) {
|
|
286
293
|
return new Response(null, {
|
|
287
294
|
status: 416, statusText: 'Requested Range Not Satisfiable', headers: {
|
|
@@ -289,6 +296,7 @@ export class AppRuntime {
|
|
|
289
296
|
}
|
|
290
297
|
});
|
|
291
298
|
}
|
|
299
|
+
|
|
292
300
|
const streamJoin = this.streamJoin(streams, stats.mime, stats.size);
|
|
293
301
|
response = new Response(streamJoin.stream, { status: 206, statusText: 'Partial Content' });
|
|
294
302
|
if (streamJoin.boundary) {
|
|
@@ -303,6 +311,7 @@ export class AppRuntime {
|
|
|
303
311
|
response.headers.set('Content-Type', stats.mime);
|
|
304
312
|
response.headers.set('Content-Length', stats.size);
|
|
305
313
|
}
|
|
314
|
+
|
|
306
315
|
return response;
|
|
307
316
|
}
|
|
308
317
|
}
|