@dodona/papyros
Version:
Scratchpad for multiple programming languages in the browser.
37 lines • 1.81 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
/**
* Default service worker to process user input using HTTP requests
*/
// Import service worker provided by the Papyros-package
import { InputWorker } from "./InputWorker";
// Strip away the filename of the script to obtain the scope
// let domain = location.href;
// domain = domain.slice(0, domain.lastIndexOf("/") + 1);
const domain = ""; // Disable SharedArrayBuffers to use same environment as Dodona
const inputHandler = new InputWorker(domain);
addEventListener("fetch", function (event) {
return __awaiter(this, void 0, void 0, function* () {
if (!(yield inputHandler.handleInputRequest(event))) {
// Not a Papyros-specific request
// Fetch as we would handle a normal request
// Default action is to let browser handle it by not responding here
return;
}
});
});
// Prevent needing to reload page to have working input
addEventListener("install", function (event) {
event.waitUntil(skipWaiting());
});
addEventListener("activate", function (event) {
event.waitUntil(clients.claim());
});
//# sourceMappingURL=InputServiceWorker.js.map