blob: 9a15dfae7983c23aecbc8300b2db78f9b9c79056 [file] [log] [blame]
var status = "no status";
function stringToBuffer(value) {
var result = new ArrayBuffer(value.length*2);
var view = new Uint16Array(result);
for (var i = 0; i < value.length; ++i)
view[i] = value.charCodeAt(i);
return result;
}
self.addEventListener("fetch", (event) => {
if (event.request.url.indexOf("status") !== -1) {
event.respondWith(new Response(null, {status: 200, statusText: status}));
return;
}
if (event.request.url.endsWith(".fromserviceworker")) {
status = event.request.url.substring(0, event.request.url.length - 18) + " through " + "fetch";
event.respondWith(fetch(event.request.url.substring(0, event.request.url.length - 18)));
}
if (event.request.url.endsWith(".bodyasanemptystream")) {
var stream = new ReadableStream({ start : controller => {
controller.close();
}});
event.respondWith(new Response(stream, {status : 200, statusText : "Empty stream"}));
return;
}
if (event.request.url.endsWith(".bodyasstream")) {
var stream = new ReadableStream({ start : async controller => {
await controller.enqueue(stringToBuffer("This "));
await controller.enqueue(stringToBuffer("test "));
await controller.enqueue(stringToBuffer("passes "));
await controller.enqueue(stringToBuffer("if "));
await controller.enqueue(stringToBuffer("the sentence "));
await controller.enqueue(stringToBuffer("is "));
await controller.enqueue(stringToBuffer("complete "));
await controller.enqueue(stringToBuffer("with "));
await controller.enqueue(stringToBuffer("PASS."));
controller.close();
}});
event.respondWith(new Response(stream, {status : 200, statusText : "Empty stream"}));
return;
}
state = "unknown url";
event.respondWith(new Response(null, {status: 404, statusText: "Not Found"}));
return;
});