Skip to content

Commit 6a6e090

Browse files
committed
get basic all bundle to build
1 parent 9c08818 commit 6a6e090

File tree

13 files changed

+88
-145
lines changed

13 files changed

+88
-145
lines changed

INTERCEPTION_PROXY_BIBLE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# The Interception Proxy Bible

eslint.config.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export default [
5353
"@typescript-eslint/no-explicit-any": "off",
5454
"@typescript-eslint/ban-ts-comment": "off",
5555
"@typescript-eslint/ban-types": "off",
56-
56+
"@typescript-eslint/no-require-imports": "off",
5757
"@typescript-eslint/no-unused-vars": [
5858
"warn",
5959
{

frontend/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
77
<title>Vite + TS</title>
88

9-
<script src="/scram/scramjet.controller.js"></script>
9+
<script src="/scram/scramjet.all.js"></script>
1010
</head>
1111

1212
<body>

rspack.config.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ export default defineConfig({
1414
mode: "development",
1515
devtool: "source-map",
1616
entry: {
17-
shared: join(__dirname, "src/shared/index.ts"),
18-
worker: join(__dirname, "src/worker/index.ts"),
19-
client: join(__dirname, "src/client/index.ts"),
20-
controller: join(__dirname, "src/controller/index.ts"),
17+
all: join(__dirname, "src/entry.ts"),
18+
// shared: join(__dirname, "src/shared/index.ts"),
19+
// worker: join(__dirname, "src/worker/index.ts"),
20+
// client: join(__dirname, "src/client/index.ts"),
21+
// controller: join(__dirname, "src/controller/index.ts"),
2122
sync: join(__dirname, "src/sync.ts"),
2223
},
2324
resolve: {

src/client/client.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -365,15 +365,14 @@ export class ScramjetClient {
365365
}
366366

367367
hook() {
368-
// @ts-ignore
369368
const context = import.meta.webpackContext(".", {
370369
recursive: true,
371370
});
372371

373372
const modules: ScramjetModule[] = [];
374373

375374
for (const key of context.keys()) {
376-
const module: ScramjetModule = context(key);
375+
const module = context(key) as ScramjetModule;
377376
if (!key.endsWith(".ts")) continue;
378377
if (
379378
(key.startsWith("./dom/") && "window" in this.global) ||

src/client/index.ts

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,35 +21,34 @@ function createFrameId() {
2121
.join("")}`;
2222
}
2323

24-
dbg.log("initializing scramjet client");
25-
// if it already exists, that means the handlers have probably already been setup by the parent document
26-
if (!(SCRAMJETCLIENT in <Partial<typeof self>>self)) {
27-
loadCodecs();
28-
29-
const client = new ScramjetClient(self);
30-
const frame: HTMLIFrameElement = self.frameElement as HTMLIFrameElement;
31-
if (frame && !frame.name) {
32-
// all frames need to be named for our logic to work
33-
frame.name = createFrameId();
24+
export function clientInitHook() {
25+
dbg.log("initializing scramjet client");
26+
// if it already exists, that means the handlers have probably already been setup by the parent document
27+
if (!(SCRAMJETCLIENT in <Partial<typeof self>>self)) {
28+
loadCodecs();
29+
30+
const client = new ScramjetClient(self);
31+
const frame: HTMLIFrameElement = self.frameElement as HTMLIFrameElement;
32+
if (frame && !frame.name) {
33+
// all frames need to be named for our logic to work
34+
frame.name = createFrameId();
35+
}
36+
37+
if (self.COOKIE) client.loadcookies(self.COOKIE);
38+
39+
client.hook();
40+
41+
if (isemulatedsw) {
42+
const runtime = new ScramjetServiceWorkerRuntime(client);
43+
runtime.hook();
44+
}
45+
46+
const contextev = new ScramjetContextEvent(client.global.window, client);
47+
client.frame?.dispatchEvent(contextev);
48+
const urlchangeev = new UrlChangeEvent(client.url.href);
49+
if (!client.isSubframe) client.frame?.dispatchEvent(urlchangeev);
3450
}
3551

36-
if (self.COOKIE) client.loadcookies(self.COOKIE);
37-
38-
client.hook();
39-
40-
if (isemulatedsw) {
41-
const runtime = new ScramjetServiceWorkerRuntime(client);
42-
runtime.hook();
43-
}
44-
45-
const contextev = new ScramjetContextEvent(client.global.window, client);
46-
client.frame?.dispatchEvent(contextev);
47-
const urlchangeev = new UrlChangeEvent(client.url.href);
48-
if (!client.isSubframe) client.frame?.dispatchEvent(urlchangeev);
49-
}
50-
51-
Reflect.deleteProperty(self, "WASM");
52-
Reflect.deleteProperty(self, "COOKIE");
53-
if ("document" in self && document?.currentScript) {
54-
document.currentScript.remove();
52+
Reflect.deleteProperty(self, "WASM");
53+
Reflect.deleteProperty(self, "COOKIE");
5554
}

src/entry.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/// <reference types="@rspack/core/module" />
2+
3+
export function $scramjetLoadController() {
4+
return require("./controller/index");
5+
}
6+
7+
export function $scramjetLoadClient() {
8+
const client = require("./client/index");
9+
client.clientInitHook();
10+
11+
return client;
12+
}
13+
14+
export function $scramjetLoadWorker() {
15+
return require("./worker/index");
16+
}
17+
18+
export const $scramjet = {
19+
version: {
20+
build: COMMITHASH,
21+
version: VERSION,
22+
},
23+
};
24+
25+
if ("document" in self && document?.currentScript) {
26+
document.currentScript.remove();
27+
}

src/global.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/// <reference types="@rspack/core/module" />
2+
13
declare const dbg: {
24
log: (message: string, ...args: any[]) => void;
35
warn: (message: string, ...args: any[]) => void;

src/scramjet.ts

Lines changed: 0 additions & 37 deletions
This file was deleted.

src/shared/index.ts

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,36 +14,26 @@ import { parseDomain } from "parse-domain";
1414
import { ScramjetHeaders } from "./headers";
1515
import { CookieStore } from "./cookie";
1616
import { htmlRules, unrewriteHtml } from "./rewriters/html";
17-
import { $scramjet } from "../scramjet";
17+
import { config } from "../shared";
18+
import { ScramjetFlags } from "../types";
1819

19-
$scramjet.shared = {
20-
util: {
21-
parseDomain,
22-
BareClient,
23-
BareMuxConnection,
24-
ScramjetHeaders,
25-
},
26-
url: {
27-
rewriteUrl,
28-
unrewriteUrl,
29-
rewriteBlob,
30-
unrewriteBlob,
31-
},
32-
rewrite: {
33-
rewriteUrl,
34-
rewriteCss,
35-
unrewriteCss,
36-
rewriteHtml,
37-
unrewriteHtml,
38-
rewriteSrcset,
39-
rewriteJs,
40-
rewriteHeaders,
41-
rewriteWorkers,
42-
htmlRules,
43-
},
44-
CookieStore,
45-
};
20+
export let codecEncode: (input: string) => string;
21+
export let codecDecode: (input: string) => string;
4622

47-
if ("document" in self && document?.currentScript) {
48-
document.currentScript.remove();
23+
const nativeFunction = Function;
24+
export function loadCodecs() {
25+
codecEncode = nativeFunction(`return ${config.codec.encode}`)() as any;
26+
codecDecode = nativeFunction(`return ${config.codec.decode}`)() as any;
27+
}
28+
29+
export function flagEnabled(flag: keyof ScramjetFlags, url: URL): boolean {
30+
const value = config.flags[flag];
31+
for (const regex in config.siteFlags) {
32+
const partialflags = config.siteFlags[regex];
33+
if (new RegExp(regex).test(url.href) && flag in partialflags) {
34+
return partialflags[flag];
35+
}
36+
}
37+
38+
return value;
4939
}

0 commit comments

Comments
 (0)