From 06c5144d3b74f19a8f9eb1842c238115d2dba245 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sun, 13 Oct 2024 13:19:49 -0500 Subject: [PATCH 1/2] fix: somewhat fix sw emu --- src/client/dom/serviceworker.ts | 17 +++++++++-------- static/ui.js | 3 +++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/client/dom/serviceworker.ts b/src/client/dom/serviceworker.ts index 841a600..d3031ce 100644 --- a/src/client/dom/serviceworker.ts +++ b/src/client/dom/serviceworker.ts @@ -7,9 +7,14 @@ import { getOwnPropertyDescriptorHandler } from "../helpers"; export const order = 2; export const enabled = () => config.flags.serviceworkers; + export function disabled(_client: ScramjetClient, _self: Self) { Reflect.deleteProperty(Navigator.prototype, "serviceWorker"); } +let realPostMessage; +if (self.ServiceWorker) { + realPostMessage = ServiceWorker.prototype.postMessage; +} export default function (client: ScramjetClient, _self: Self) { let registration; @@ -52,12 +57,6 @@ export default function (client: ScramjetClient, _self: Self) { }, }); - client.Trap("navigator.serviceWorker.controller", { - get(_ctx) { - return registration?.active; - }, - }); - client.Proxy("navigator.serviceWorker.register", { apply(ctx) { if (ctx.args[0] instanceof URL) ctx.args[0] = ctx.args[0].href; @@ -66,11 +65,13 @@ export default function (client: ScramjetClient, _self: Self) { url += "&type=module"; } - const worker = new SharedWorker(url); + const nativeSharedWorker = client.natives["SharedWorker"]; + const worker = new nativeSharedWorker(url); const handle = worker.port; - client.serviceWorker.controller.postMessage( + realPostMessage.call( + client.serviceWorker.controller, { scramjet$type: "registerServiceWorker", port: handle, diff --git a/static/ui.js b/static/ui.js index dd784f5..d1ca443 100644 --- a/static/ui.js +++ b/static/ui.js @@ -6,6 +6,9 @@ const scramjet = new ScramjetController({ shared: "/scram/scramjet.shared.js", sync: "/scram/scramjet.sync.js", }, + flags: { + serviceworkers: true, + }, }); scramjet.init("./sw.js"); From 0e034f57a3366b7d842754f5bd6e10cfbc004c89 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sun, 13 Oct 2024 13:28:08 -0500 Subject: [PATCH 2/2] fix: disable sw emu by default --- static/ui.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/static/ui.js b/static/ui.js index d1ca443..dd784f5 100644 --- a/static/ui.js +++ b/static/ui.js @@ -6,9 +6,6 @@ const scramjet = new ScramjetController({ shared: "/scram/scramjet.shared.js", sync: "/scram/scramjet.sync.js", }, - flags: { - serviceworkers: true, - }, }); scramjet.init("./sw.js");