-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathworker.js
More file actions
32 lines (32 loc) · 754 Bytes
/
worker.js
File metadata and controls
32 lines (32 loc) · 754 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// DedicatedWorkerGlobalScope
let port;
onmessage = async (e) => {
"use strict";
if (!port) {
[port] = e.ports;
port.onmessage = (event) => postMessage(event.data);
}
const { urls } = e.data;
// https://github.com/whatwg/streams/blob/master/transferable-streams-explainer.md
const { readable, writable } = new TransformStream();
(async (_) => {
for await (
const _ of (async function* stream() {
while (urls.length) {
yield (await fetch(urls.shift(), { cache: "no-store" })).body.pipeTo(
writable,
{
preventClose: !!urls.length,
},
);
}
})()
);
})();
port.postMessage(
{
readable,
},
[readable],
);
};