Skip to content

Commit d690572

Browse files
committed
[scramjet/core] remove allowedwebsocketurls from config, add shouldPassthroughWebsocket and shouldBlockMessage functions to init
1 parent 4f64571 commit d690572

File tree

7 files changed

+7
-14
lines changed

7 files changed

+7
-14
lines changed

packages/scramjet/packages/core/src/client/client.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,6 @@ export class ScramjetClient {
123123

124124
context: ScramjetContext;
125125

126-
sendSetCookie: (url: URL, cookie: string) => Promise<void>;
127-
128126
constructor(
129127
public global: typeof globalThis,
130128
public init: ScramjetClientInit
@@ -151,7 +149,6 @@ export class ScramjetClient {
151149

152150
this.context = init.context;
153151
this.bare = new BareClient(init.transport);
154-
this.sendSetCookie = init.sendSetCookie;
155152

156153
this.serviceWorker = this.global.navigator.serviceWorker;
157154

packages/scramjet/packages/core/src/client/dom/cookie.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export default function (client: ScramjetClient, self: typeof window) {
77
},
88
set(ctx, value: string) {
99
client.context.cookieJar.setCookies([value], client.url);
10-
client.sendSetCookie(client.url, value);
10+
client.init.sendSetCookie(client.url, value);
1111
},
1212
});
1313

packages/scramjet/packages/core/src/client/entry.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// entrypoint for scramjet.client.js
22

3-
import { ScramjetContext, ScramjetInterface, setConfig } from "@/shared/index";
3+
import { ScramjetContext, ScramjetInterface } from "@/shared/index";
44
import { SCRAMJETCLIENT } from "@/symbols";
55
import { ScramjetClient } from "@client/index";
66
import { ScramjetContextEvent, UrlChangeEvent } from "@client/events";
@@ -24,11 +24,11 @@ export type ScramjetClientInit = {
2424
context: ScramjetContext;
2525
transport: BareTransport;
2626
sendSetCookie: (url: URL, cookie: string) => Promise<void>;
27+
shouldPassthroughWebsocket?: (url: string | URL) => boolean;
28+
shouldBlockMessageEvent?: (ev: MessageEvent) => boolean;
2729
};
2830

2931
export function loadAndHook(init: ScramjetClientInit) {
30-
setConfig(init.context.config);
31-
3232
dbg.log("initializing scramjet client");
3333
// if it already exists, that means the handlers have probably already been setup by the parent document
3434
if (!(SCRAMJETCLIENT in <Partial<typeof self>>globalThis)) {

packages/scramjet/packages/core/src/client/shared/event.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ export default function (client: ScramjetClient, self: Self) {
1010
const handlers = {
1111
message: {
1212
_init() {
13-
if (typeof this.data === "object" && "$scramjet$type" in this.data) {
14-
// this is a ctl message
13+
if (client.init.shouldBlockMessageEvent(this)) {
1514
return false;
1615
}
1716

@@ -77,6 +76,7 @@ export default function (client: ScramjetClient, self: Self) {
7776
const handler = handlers[type];
7877

7978
if (handler._init) {
79+
// if _init returns false, we skip the event, and it never dispatches to listeners
8080
if (handler._init.call(realEvent) === false) return;
8181
}
8282

packages/scramjet/packages/core/src/client/shared/requests/websocket.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ export default function (client: ScramjetClient, self: typeof globalThis) {
3030
new WeakMap();
3131
client.Proxy("WebSocket", {
3232
construct(ctx) {
33-
if (
34-
client.config.allowedwebsockets.some((w) => ctx.args[0].startsWith(w))
35-
) {
33+
if (client.init.shouldPassthroughWebsocket(ctx.args[0])) {
3634
return ctx.return(client.natives.construct("WebSocket", ...ctx.args));
3735
}
3836
const fakeWebSocket = new EventTarget() as WebSocket;

packages/scramjet/packages/core/src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ export const defaultConfig: ScramjetConfig = {
4242
},
4343
siteFlags: {},
4444
maskedfiles: [],
45-
allowedwebsockets: [],
4645
};
4746

4847
// bundled build will have the wasm binary inlined as a base64 string

packages/scramjet/packages/core/src/types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ export interface ScramjetConfig {
4848
tempunusedid: string;
4949
};
5050
maskedfiles: string[];
51-
allowedwebsockets: string[];
5251
flags: ScramjetFlags;
5352
siteFlags: Record<string, Partial<ScramjetFlags>>;
5453
}

0 commit comments

Comments
 (0)