From b086c45c34a1dfc0467a13a7e32af356118d1cf2 Mon Sep 17 00:00:00 2001 From: Kevin J Hoerr Date: Fri, 18 Nov 2022 19:51:48 -0500 Subject: Commit public dir for use with static site builders --- public/~partytown/debug/partytown-sw.js | 59 +++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 public/~partytown/debug/partytown-sw.js (limited to 'public/~partytown/debug/partytown-sw.js') diff --git a/public/~partytown/debug/partytown-sw.js b/public/~partytown/debug/partytown-sw.js new file mode 100644 index 0000000..14b09e1 --- /dev/null +++ b/public/~partytown/debug/partytown-sw.js @@ -0,0 +1,59 @@ +/* Partytown 0.5.4 - MIT builder.io */ +const resolves = new Map; + +const swMessageError = (accessReq, $error$) => ({ + $msgId$: accessReq.$msgId$, + $error$: $error$ +}); + +const httpRequestFromWebWorker = req => new Promise((async resolve => { + const accessReq = await req.clone().json(); + const responseData = await (accessReq => new Promise((async resolve => { + const clients = await self.clients.matchAll(); + const client = [ ...clients ].sort(((a, b) => a.url > b.url ? -1 : a.url < b.url ? 1 : 0))[0]; + if (client) { + const timeout = 12e4; + const msgResolve = [ resolve, setTimeout((() => { + resolves.delete(accessReq.$msgId$); + resolve(swMessageError(accessReq, "Timeout")); + }), timeout) ]; + resolves.set(accessReq.$msgId$, msgResolve); + client.postMessage(accessReq); + } else { + resolve(swMessageError(accessReq, "NoParty")); + } + })))(accessReq); + resolve(response(JSON.stringify(responseData), "application/json")); +})); + +const response = (body, contentType) => new Response(body, { + headers: { + "content-type": contentType || "text/html", + "Cache-Control": "no-store" + } +}); + +self.oninstall = () => self.skipWaiting(); + +self.onactivate = () => self.clients.claim(); + +self.onmessage = ev => { + const accessRsp = ev.data; + const r = resolves.get(accessRsp.$msgId$); + if (r) { + resolves.delete(accessRsp.$msgId$); + clearTimeout(r[1]); + r[0](accessRsp); + } +}; + +self.onfetch = ev => { + const req = ev.request; + const url = new URL(req.url); + const pathname = url.pathname; + if (pathname.endsWith("sw.html")) { + ev.respondWith(response('