Skip to content

Commit 9a3d30b

Browse files
committed
[scramjet/controller] use skipwaiting in controller sw
1 parent 6e93b67 commit 9a3d30b

9 files changed

Lines changed: 52 additions & 15 deletions

File tree

packages/scramjet/packages/bootstrap/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"main": "./dist/bootstrap-server.js",
77
"types": "./dist/types/server.d.ts",
88
"dependencies": {
9-
"server": "link:@mercuryworkshop/wisp-js/server",
9+
"@mercuryworkshop/wisp-js": "catalog:",
1010
"tar": "^7.5.1"
1111
},
1212
"devDependencies": {

packages/scramjet/packages/controller/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"@mercuryworkshop/scramjet": "workspace:*"
1212
},
1313
"devDependencies": {
14+
"@types/serviceworker": "^0.0.197",
1415
"@mercuryworkshop/rpc": "workspace:*"
1516
}
1617
}

packages/scramjet/packages/controller/src/index.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,18 @@ export class Frame {
766766
element[CONTROLLERFRAME] = this;
767767
}
768768

769+
back() {
770+
this.element.contentWindow?.history.back();
771+
}
772+
773+
forward() {
774+
this.element.contentWindow?.history.forward();
775+
}
776+
777+
reload() {
778+
this.element.contentWindow?.location.reload();
779+
}
780+
769781
go(url: string) {
770782
const encoded = $scramjet.rewriteUrl(url, this.context, {
771783
//@ts-expect-error

packages/scramjet/packages/controller/src/sw.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
declare let clients: Clients;
1+
/// <reference lib="WebWorker" />
2+
/// <reference types="@types/serviceworker" />
23
import { RpcHelper } from "@mercuryworkshop/rpc";
34
import type { Controllerbound, SWbound } from "./types";
45
import type { RawHeaders } from "@mercuryworkshop/proxy-transports";
5-
import { ScramjetHeaders } from "@mercuryworkshop/scramjet";
66

77
function makeId(): string {
88
return Math.random().toString(36).substring(2, 10);
@@ -210,6 +210,14 @@ export async function route(event: FetchEvent): Promise<Response> {
210210
}
211211
}
212212

213+
addEventListener("install", () => {
214+
self.skipWaiting();
215+
});
216+
217+
addEventListener("activate", (event: ExtendableEvent) => {
218+
event.waitUntil(clients.claim());
219+
});
220+
213221
// the only way to know if a service worker has suddenly died is if this code runs again
214222
// notify all clients to send over their messageports again
215223
setTimeout(async () => {

packages/scramjet/packages/controller/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"target": "ES2022",
44
"useDefineForClassFields": true,
55
"module": "ESNext",
6-
"lib": ["ES2022", "webworker", "DOM", "DOM.Iterable"],
6+
"lib": ["ES2022", "WebWorker", "DOM", "DOM.Iterable"],
77
"types": [],
88
"skipLibCheck": true,
99
/* Bundler mode */

packages/scramjet/packages/demo/src/pages/BrowserView.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ export const Omnibox: Component = function (cx) {
3333
>
3434
<div class="browser-omnibox-shell">
3535
<div class="omnibox-nav" aria-hidden="true">
36-
<button type="button" class="nav-btn">
36+
<button type="button" class="nav-btn" on:click={() => browserState.frame?.back()}>
3737
<span class="material-symbols-outlined">arrow_back</span>
3838
</button>
39-
<button type="button" class="nav-btn">
39+
<button type="button" class="nav-btn" on:click={() => browserState.frame?.forward()}>
4040
<span class="material-symbols-outlined">arrow_forward</span>
4141
</button>
42-
<button type="button" class="nav-btn" on:click={navigate}>
42+
<button type="button" class="nav-btn" on:click={() => browserState.frame?.reload()}>
4343
<span class="material-symbols-outlined">refresh</span>
4444
</button>
4545
</div>

packages/scramjet/packages/demo/src/store.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ export const AVAILABLE_TRANSPORTS: ReadonlyArray<{
66
value: AvailableTransports;
77
label: string;
88
}> = [
9-
{ value: "libcurl", label: "libcurl" },
10-
{ value: "epoxy", label: "epoxy" },
9+
{ value: "libcurl", label: "Libcurl" },
10+
{ value: "epoxy", label: "Epoxy" },
1111
];
1212
const DEFAULT_WISP_URL = import.meta.env.VITE_WISP_URL;
1313
const DEFAULT_TRANSPORT: AvailableTransports = "libcurl";

packages/scramjet/pnpm-lock.yaml

Lines changed: 11 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-lock.yaml

Lines changed: 11 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)