-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsw.js
More file actions
62 lines (53 loc) · 2.02 KB
/
sw.js
File metadata and controls
62 lines (53 loc) · 2.02 KB
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
importScripts("https://unpkg.com/comlink@4.4.2/dist/umd/comlink.js");
let token = undefined;
let sharedObject = {};
let readyPromise = new Promise(res => {
self.addEventListener('message', (event) => {
if (event.data instanceof MessagePort) {
sharedObject = Comlink.wrap(event.data);
event.data.start();
res();
}
});
})
let routes = {
GET: {
['/syscall/getFilePicker']: async function (response) {
await readyPromise;
},
['/syscall/getFolderPicker']: async function(response) {
await readyPromise;
console.log("MORTAL's requested folder path");
const thing = await sharedObject.getFolderPath();
console.log("MORTAL's folder path: ", thing);
return new Response(thing);
},
['/syscall/getUsername']: async function (response) {
await readyPromise;
return new Response(await sharedObject.getUsername());
},
['/syscall/getToken']: async function (response) {
await readyPromise;
const token = await sharedObject.puter.authToken;
if (!token) {
await sharedObject.ensureAuth();
}
return new Response(await sharedObject.puter.authToken);
},
['/syscall/getOpenedFile']: async function (response) {
await readyPromise;
return new Response((new URL(await sharedObject.href).searchParams.get("puter.item.path") ?? '').replace("~", "/" + await sharedObject.getUsername()));
}
}
}
async function router( {/** @type {Request} */ request} ) {
const pathname = new URL(request.url).pathname;
return routes[request.method][pathname](request);
}
self.addEventListener("fetch", ( /** @type {FetchEvent} */event) => {
if (new URL(event.request.url).pathname.startsWith("/syscall/"))
event.respondWith(router(event));
})
self.addEventListener("activate", (event) => {
event.waitUntil(clients.claim());
});