fix: somewhat fix sw emu

This commit is contained in:
Percs 2024-10-13 13:19:49 -05:00
parent 0906dd78a9
commit 06c5144d3b
2 changed files with 12 additions and 8 deletions

View file

@ -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,

View file

@ -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");