From 2331072a650ac8dae9eba6cd268d42a54b092f71 Mon Sep 17 00:00:00 2001
From: Zion A
Date: Sun, 5 Apr 2026 17:23:07 -0400
Subject: [PATCH 1/3] added scramjet and clean up a bit of bs
---
Scramjet | 1 +
index.js | 28 +-
package.json | 6 +-
pnpm-lock.yaml | 482 +++++++++++++++++++++++-
pnpm-workspace.yaml | 3 +
static/404.html | 1 +
static/apps.html | 1 +
static/assets/js/index-3.js | 35 +-
static/assets/js/m1.js | 5 -
static/assets/js/mg-pxy.js | 51 +++
static/assets/js/s1.js | 19 +-
static/assets/js/sj-tp.js | 70 ++++
static/assets/js/t3.js | 79 +++-
static/assets/languagearts/sj.all.js | 196 ++++++++++
static/assets/languagearts/sj.sync.js | 2 +
static/assets/languagearts/sj.wasm.wasm | Bin 0 -> 535994 bytes
static/games.html | 1 +
static/index.html | 3 +
static/settings.html | 17 +-
static/sw.js | 9 +
static/tabs.html | 3 +
21 files changed, 965 insertions(+), 47 deletions(-)
create mode 160000 Scramjet
create mode 100644 pnpm-workspace.yaml
create mode 100644 static/assets/js/mg-pxy.js
create mode 100644 static/assets/js/sj-tp.js
create mode 100644 static/assets/languagearts/sj.all.js
create mode 100644 static/assets/languagearts/sj.sync.js
create mode 100644 static/assets/languagearts/sj.wasm.wasm
diff --git a/Scramjet b/Scramjet
new file mode 160000
index 0000000000..6e85a22bd3
--- /dev/null
+++ b/Scramjet
@@ -0,0 +1 @@
+Subproject commit 6e85a22bd37445af17d56b84ab91687a27a5f3f9
diff --git a/index.js b/index.js
index 896be226fc..3382404d84 100644
--- a/index.js
+++ b/index.js
@@ -7,6 +7,8 @@ import cookieParser from "cookie-parser";
import cors from "cors";
import express from "express";
import basicAuth from "express-basic-auth";
+import bareMuxNode from "@mercuryworkshop/bare-mux/node";
+import { server as wisp } from "@mercuryworkshop/wisp-js/server";
import mime from "mime";
import fetch from "node-fetch";
// import { setupMasqr } from "./Masqr.js";
@@ -18,10 +20,21 @@ const __dirname = process.cwd();
const server = http.createServer();
const app = express();
const bareServer = createBareServer("/ca/");
+const { baremuxPath } = bareMuxNode;
+const epoxyDistPath = path.join(
+ __dirname,
+ "node_modules",
+ "@mercuryworkshop",
+ "epoxy-transport",
+ "dist",
+);
const PORT = process.env.PORT || 8080;
const cache = new Map();
const CACHE_TTL = 30 * 24 * 60 * 60 * 1000; // Cache for 30 Days
+wisp.options.allow_loopback_ips = true;
+wisp.options.allow_private_ips = true;
+
if (config.challenge !== false) {
console.log(chalk.green("🔒 Password protection is enabled! Listing logins below"));
// biome-ignore lint: idk
@@ -90,8 +103,21 @@ app.use(express.urlencoded({ extended: true }));
setupMasqr(app);
} */
+const transportStaticOptions = {
+ setHeaders: (res, filePath) => {
+ const ext = path.extname(filePath);
+ if (ext === ".mjs" || ext === ".js") {
+ res.type("text/javascript");
+ } else if (ext === ".wasm") {
+ res.type("application/wasm");
+ }
+ },
+};
+
app.use(express.static(path.join(__dirname, "static")));
app.use("/ca", cors({ origin: true }));
+app.use("/bm", express.static(baremuxPath, transportStaticOptions));
+app.use("/ep", express.static(epoxyDistPath, transportStaticOptions));
const routes = [
{ path: "/b", file: "apps.html" },
@@ -130,7 +156,7 @@ server.on("upgrade", (req, socket, head) => {
if (bareServer.shouldRoute(req)) {
bareServer.routeUpgrade(req, socket, head);
} else {
- socket.end();
+ wisp.routeRequest(req, socket, head);
}
});
diff --git a/package.json b/package.json
index 54bda41538..2e88201d72 100644
--- a/package.json
+++ b/package.json
@@ -15,6 +15,10 @@
"author": "InterstellarNetwork",
"license": "GPL-3.0-or-later",
"dependencies": {
+ "@mercuryworkshop/bare-mux": "^2.1.8",
+ "@mercuryworkshop/epoxy-transport": "2.1.28",
+ "@mercuryworkshop/scramjet": "^1.0.2",
+ "@mercuryworkshop/wisp-js": "^0.4.1",
"@nebula-services/bare-server-node": "^2.0.4",
"chalk": "^5.4.1",
"cookie-parser": "^1.4.7",
@@ -28,5 +32,5 @@
"devDependencies": {
"@biomejs/biome": "2.2.2"
},
- "packageManager": "pnpm@9.10.0"
+ "packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b6be0e3b8f..6c0028b958 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,9 +8,21 @@ importers:
.:
dependencies:
+ '@mercuryworkshop/bare-mux':
+ specifier: ^2.1.8
+ version: 2.1.8
+ '@mercuryworkshop/epoxy-transport':
+ specifier: 2.1.28
+ version: 2.1.28
+ '@mercuryworkshop/scramjet':
+ specifier: ^1.0.2
+ version: 1.0.2(esbuild@0.28.0)
+ '@mercuryworkshop/wisp-js':
+ specifier: ^0.4.1
+ version: 0.4.1
'@nebula-services/bare-server-node':
specifier: ^2.0.4
- version: 2.0.4
+ version: 2.0.4(bufferutil@4.1.0)
chalk:
specifier: ^5.4.1
version: 5.4.1
@@ -64,24 +76,28 @@ packages:
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@biomejs/cli-linux-arm64@2.2.2':
resolution: {integrity: sha512-JfrK3gdmWWTh2J5tq/rcWCOsImVyzUnOS2fkjhiYKCQ+v8PqM+du5cfB7G1kXas+7KQeKSWALv18iQqdtIMvzw==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@biomejs/cli-linux-x64-musl@2.2.2':
resolution: {integrity: sha512-ZCLXcZvjZKSiRY/cFANKg+z6Fhsf9MHOzj+NrDQcM+LbqYRT97LyCLWy2AS+W2vP+i89RyRM+kbGpUzbRTYWig==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@biomejs/cli-linux-x64@2.2.2':
resolution: {integrity: sha512-Ogb+77edO5LEP/xbNicACOWVLt8mgC+E1wmpUakr+O4nKwLt9vXe74YNuT3T1dUBxC/SnrVmlzZFC7kQJEfquQ==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@biomejs/cli-win32-arm64@2.2.2':
resolution: {integrity: sha512-wBe2wItayw1zvtXysmHJQoQqXlTzHSpQRyPpJKiNIR21HzH/CrZRDFic1C1jDdp+zAPtqhNExa0owKMbNwW9cQ==}
@@ -95,11 +111,192 @@ packages:
cpu: [x64]
os: [win32]
+ '@esbuild/aix-ppc64@0.28.0':
+ resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.28.0':
+ resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.28.0':
+ resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.28.0':
+ resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.28.0':
+ resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.28.0':
+ resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.28.0':
+ resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.28.0':
+ resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.28.0':
+ resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.28.0':
+ resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.28.0':
+ resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.28.0':
+ resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.28.0':
+ resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.28.0':
+ resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.28.0':
+ resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.28.0':
+ resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.28.0':
+ resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-arm64@0.28.0':
+ resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@esbuild/netbsd-x64@0.28.0':
+ resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-arm64@0.28.0':
+ resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@esbuild/openbsd-x64@0.28.0':
+ resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/openharmony-arm64@0.28.0':
+ resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@esbuild/sunos-x64@0.28.0':
+ resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.28.0':
+ resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.28.0':
+ resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.28.0':
+ resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
+ '@mercuryworkshop/bare-mux@1.1.4':
+ resolution: {integrity: sha512-mJPezqEpiKTCs+wu/3TowilnVXQgFs4SqoQnnbCbOc5cV6bDggaolKkyYjDnmOB9t/nptIIXDWDB31oS9vX9kA==}
+
+ '@mercuryworkshop/bare-mux@2.1.8':
+ resolution: {integrity: sha512-rI3S7Osyr2ZWmG6J6v3MLS1ZT269lx1DrAjM47q0aoBYnfgUZTRvZqY0Globb8ipTi02d5x6dTJBeUBt6dZsag==}
+
+ '@mercuryworkshop/epoxy-tls@2.1.18-1':
+ resolution: {integrity: sha512-2N1BYn/+FJxIbRw+sipbl3mQPinRflqQDB9HGAXJEVj4Ok4FIlTlS4fO2cpXKEq5yoD3oaKb8GyNaQfndNui9w==}
+
+ '@mercuryworkshop/epoxy-transport@2.1.28':
+ resolution: {integrity: sha512-lv/Kfdn37y8ZCXQaIT3Ebj4OSztBqeXdbR9rchbHQBKIw/fNSQJLGNBHV5ScXSzqt7NCwv8ZiZx7urRyk7Ua/Q==}
+
+ '@mercuryworkshop/scramjet@1.0.2':
+ resolution: {integrity: sha512-65k+TXYlMAnqTrcTyVlXyG+CVymOSHMW4a8ofJtX6yHDKmWGHL4LVzls+ukoTqth6JyqOk7OoT3iQdufZMoE7g==}
+
+ '@mercuryworkshop/wisp-js@0.4.1':
+ resolution: {integrity: sha512-104LwiXiuhti/e32gmv0Da0u0yuLFDHX8JawCzleTPWJ5t5qTX4EYi4E7/ucbjBPN9wwVPWHE5g5yGqzl/NzQA==}
+ hasBin: true
+
'@nebula-services/bare-server-node@2.0.4':
resolution: {integrity: sha512-Jcr+QtkLJVmppdbBarEbRp1TtCsL4pjFIcX6+KPURRqcsOP7hZfYclhjmCserwEC7jT+WBduXpFd3qwqeRBNew==}
engines: {node: '>=18.0.0'}
hasBin: true
+ '@types/uuid@9.0.8':
+ resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==}
+
+ '@webreflection/idb-map@0.1.3':
+ resolution: {integrity: sha512-7lTEpXDgpy9xueW4NSNkBHgqedz/dlGgtwTZa4fRMKWJKcnC9cORVlXwV7qNyYYKarT8gpB1+wv5UNBYhjgc8w==}
+
accepts@1.3.8:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
@@ -107,6 +304,13 @@ packages:
array-flatten@1.1.1:
resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+ astravel@0.6.1:
+ resolution: {integrity: sha512-ZIkgWFIV0Yo423Vqalz7VcF+BAiISvSgplnkV2abPGACPFKofsWTcvr9SFyYM/t/vMZWqmdP/Eze6ATX7r84Dg==}
+
+ astring@1.9.0:
+ resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==}
+ hasBin: true
+
async-exit-hook@2.0.1:
resolution: {integrity: sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==}
engines: {node: '>=0.12.0'}
@@ -122,6 +326,10 @@ packages:
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+ bufferutil@4.1.0:
+ resolution: {integrity: sha512-ZMANVnAixE6AWWnPzlW2KpUrxhm9woycYvPOo67jWHyFowASTEd9s+QN1EIMsSDtwhIxN4sWE1jotpuDUIgyIw==}
+ engines: {node: '>=6.14.2'}
+
bytes@3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'}
@@ -138,6 +346,10 @@ packages:
resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
engines: {node: '>=14'}
+ commander@14.0.3:
+ resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==}
+ engines: {node: '>=20'}
+
content-disposition@0.5.4:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
@@ -189,6 +401,19 @@ packages:
resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ dom-serializer@2.0.0:
+ resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
+
+ domelementtype@2.3.0:
+ resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
+
+ domhandler@5.0.3:
+ resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
+ engines: {node: '>= 4'}
+
+ domutils@3.2.2:
+ resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
+
dotenv@16.6.1:
resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==}
engines: {node: '>=12'}
@@ -208,6 +433,10 @@ packages:
resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
engines: {node: '>= 0.8'}
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
es-define-property@1.0.0:
resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==}
engines: {node: '>= 0.4'}
@@ -216,6 +445,17 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
+ esbuild-server@0.3.0:
+ resolution: {integrity: sha512-8RuzIdM13gs7MyYwxn/c88nDdx086aREBvzWDk4G3cC7nudF8480OTrvAvanVmFZ9anDv9U4cRX/OKbladaRVA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ esbuild: '>=0.17.0'
+
+ esbuild@0.28.0:
+ resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
escape-html@1.0.3:
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
@@ -275,6 +515,9 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
+ htmlparser2@9.1.0:
+ resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==}
+
http-errors@2.0.0:
resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
engines: {node: '>= 0.8'}
@@ -294,6 +537,10 @@ packages:
resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==}
engines: {node: '>= 10'}
+ ipaddr.js@2.3.0:
+ resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==}
+ engines: {node: '>= 10'}
+
media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
@@ -301,6 +548,10 @@ packages:
merge-descriptors@1.0.3:
resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+ meriyah@4.5.0:
+ resolution: {integrity: sha512-Rbiu0QPIxTXgOXwiIpRVJfZRQ2FWyfzYrOGBs9SN5RbaXg1CN5ELn/plodwWwluX93yzc4qO/bNIen1ThGFCxw==}
+ engines: {node: '>=10.4.0'}
+
methods@1.1.2:
resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
engines: {node: '>= 0.6'}
@@ -342,6 +593,10 @@ packages:
resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ node-gyp-build@4.8.4:
+ resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
+ hasBin: true
+
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -431,6 +686,10 @@ packages:
resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
engines: {node: '>= 0.4.0'}
+ uuid@9.0.1:
+ resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
+ hasBin: true
+
vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
@@ -451,6 +710,18 @@ packages:
utf-8-validate:
optional: true
+ ws@8.20.0:
+ resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+
snapshots:
'@biomejs/biome@2.2.2':
@@ -488,7 +759,122 @@ snapshots:
'@biomejs/cli-win32-x64@2.2.2':
optional: true
- '@nebula-services/bare-server-node@2.0.4':
+ '@esbuild/aix-ppc64@0.28.0':
+ optional: true
+
+ '@esbuild/android-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/android-arm@0.28.0':
+ optional: true
+
+ '@esbuild/android-x64@0.28.0':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/darwin-x64@0.28.0':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.28.0':
+ optional: true
+
+ '@esbuild/linux-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/linux-arm@0.28.0':
+ optional: true
+
+ '@esbuild/linux-ia32@0.28.0':
+ optional: true
+
+ '@esbuild/linux-loong64@0.28.0':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.28.0':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.28.0':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.28.0':
+ optional: true
+
+ '@esbuild/linux-s390x@0.28.0':
+ optional: true
+
+ '@esbuild/linux-x64@0.28.0':
+ optional: true
+
+ '@esbuild/netbsd-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.28.0':
+ optional: true
+
+ '@esbuild/openbsd-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.28.0':
+ optional: true
+
+ '@esbuild/openharmony-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/sunos-x64@0.28.0':
+ optional: true
+
+ '@esbuild/win32-arm64@0.28.0':
+ optional: true
+
+ '@esbuild/win32-ia32@0.28.0':
+ optional: true
+
+ '@esbuild/win32-x64@0.28.0':
+ optional: true
+
+ '@mercuryworkshop/bare-mux@1.1.4':
+ dependencies:
+ '@types/uuid': 9.0.8
+ uuid: 9.0.1
+
+ '@mercuryworkshop/bare-mux@2.1.8': {}
+
+ '@mercuryworkshop/epoxy-tls@2.1.18-1': {}
+
+ '@mercuryworkshop/epoxy-transport@2.1.28':
+ dependencies:
+ '@mercuryworkshop/epoxy-tls': 2.1.18-1
+
+ '@mercuryworkshop/scramjet@1.0.2(esbuild@0.28.0)':
+ dependencies:
+ '@mercuryworkshop/bare-mux': 1.1.4
+ '@webreflection/idb-map': 0.1.3
+ astravel: 0.6.1
+ astring: 1.9.0
+ dom-serializer: 2.0.0
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ esbuild-server: 0.3.0(esbuild@0.28.0)
+ htmlparser2: 9.1.0
+ meriyah: 4.5.0
+ transitivePeerDependencies:
+ - esbuild
+
+ '@mercuryworkshop/wisp-js@0.4.1':
+ dependencies:
+ bufferutil: 4.1.0
+ commander: 14.0.3
+ ipaddr.js: 2.3.0
+ ws: 8.20.0(bufferutil@4.1.0)
+ transitivePeerDependencies:
+ - utf-8-validate
+
+ '@nebula-services/bare-server-node@2.0.4(bufferutil@4.1.0)':
dependencies:
async-exit-hook: 2.0.1
commander: 10.0.1
@@ -496,11 +882,15 @@ snapshots:
http-errors: 2.0.0
ipaddr.js: 2.2.0
source-map-support: 0.5.21
- ws: 8.18.0
+ ws: 8.18.0(bufferutil@4.1.0)
transitivePeerDependencies:
- bufferutil
- utf-8-validate
+ '@types/uuid@9.0.8': {}
+
+ '@webreflection/idb-map@0.1.3': {}
+
accepts@1.3.8:
dependencies:
mime-types: 2.1.35
@@ -508,6 +898,10 @@ snapshots:
array-flatten@1.1.1: {}
+ astravel@0.6.1: {}
+
+ astring@1.9.0: {}
+
async-exit-hook@2.0.1: {}
basic-auth@2.0.1:
@@ -533,6 +927,10 @@ snapshots:
buffer-from@1.1.2: {}
+ bufferutil@4.1.0:
+ dependencies:
+ node-gyp-build: 4.8.4
+
bytes@3.1.2: {}
call-bind@1.0.7:
@@ -547,6 +945,8 @@ snapshots:
commander@10.0.1: {}
+ commander@14.0.3: {}
+
content-disposition@0.5.4:
dependencies:
safe-buffer: 5.2.1
@@ -585,6 +985,24 @@ snapshots:
destroy@1.2.0: {}
+ dom-serializer@2.0.0:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+ entities: 4.5.0
+
+ domelementtype@2.3.0: {}
+
+ domhandler@5.0.3:
+ dependencies:
+ domelementtype: 2.3.0
+
+ domutils@3.2.2:
+ dependencies:
+ dom-serializer: 2.0.0
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+
dotenv@16.6.1: {}
dotenv@17.2.0: {}
@@ -595,12 +1013,47 @@ snapshots:
encodeurl@2.0.0: {}
+ entities@4.5.0: {}
+
es-define-property@1.0.0:
dependencies:
get-intrinsic: 1.2.4
es-errors@1.3.0: {}
+ esbuild-server@0.3.0(esbuild@0.28.0):
+ dependencies:
+ esbuild: 0.28.0
+
+ esbuild@0.28.0:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.28.0
+ '@esbuild/android-arm': 0.28.0
+ '@esbuild/android-arm64': 0.28.0
+ '@esbuild/android-x64': 0.28.0
+ '@esbuild/darwin-arm64': 0.28.0
+ '@esbuild/darwin-x64': 0.28.0
+ '@esbuild/freebsd-arm64': 0.28.0
+ '@esbuild/freebsd-x64': 0.28.0
+ '@esbuild/linux-arm': 0.28.0
+ '@esbuild/linux-arm64': 0.28.0
+ '@esbuild/linux-ia32': 0.28.0
+ '@esbuild/linux-loong64': 0.28.0
+ '@esbuild/linux-mips64el': 0.28.0
+ '@esbuild/linux-ppc64': 0.28.0
+ '@esbuild/linux-riscv64': 0.28.0
+ '@esbuild/linux-s390x': 0.28.0
+ '@esbuild/linux-x64': 0.28.0
+ '@esbuild/netbsd-arm64': 0.28.0
+ '@esbuild/netbsd-x64': 0.28.0
+ '@esbuild/openbsd-arm64': 0.28.0
+ '@esbuild/openbsd-x64': 0.28.0
+ '@esbuild/openharmony-arm64': 0.28.0
+ '@esbuild/sunos-x64': 0.28.0
+ '@esbuild/win32-arm64': 0.28.0
+ '@esbuild/win32-ia32': 0.28.0
+ '@esbuild/win32-x64': 0.28.0
+
escape-html@1.0.3: {}
etag@1.8.1: {}
@@ -696,6 +1149,13 @@ snapshots:
dependencies:
function-bind: 1.1.2
+ htmlparser2@9.1.0:
+ dependencies:
+ domelementtype: 2.3.0
+ domhandler: 5.0.3
+ domutils: 3.2.2
+ entities: 4.5.0
+
http-errors@2.0.0:
dependencies:
depd: 2.0.0
@@ -714,10 +1174,14 @@ snapshots:
ipaddr.js@2.2.0: {}
+ ipaddr.js@2.3.0: {}
+
media-typer@0.3.0: {}
merge-descriptors@1.0.3: {}
+ meriyah@4.5.0: {}
+
methods@1.1.2: {}
mime-db@1.52.0: {}
@@ -744,6 +1208,8 @@ snapshots:
fetch-blob: 3.2.0
formdata-polyfill: 4.0.10
+ node-gyp-build@4.8.4: {}
+
object-assign@4.1.1: {}
object-inspect@1.13.1: {}
@@ -845,8 +1311,16 @@ snapshots:
utils-merge@1.0.1: {}
+ uuid@9.0.1: {}
+
vary@1.1.2: {}
web-streams-polyfill@3.3.3: {}
- ws@8.18.0: {}
+ ws@8.18.0(bufferutil@4.1.0):
+ optionalDependencies:
+ bufferutil: 4.1.0
+
+ ws@8.20.0(bufferutil@4.1.0):
+ optionalDependencies:
+ bufferutil: 4.1.0
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 0000000000..03853eb8be
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,3 @@
+allowBuilds:
+ bufferutil: true
+ esbuild: true
diff --git a/static/404.html b/static/404.html
index 8b1f0b86bd..16180ad478 100644
--- a/static/404.html
+++ b/static/404.html
@@ -34,6 +34,7 @@ Page not found.
+
diff --git a/static/apps.html b/static/apps.html
index 9e4b3a211e..01091b436f 100644
--- a/static/apps.html
+++ b/static/apps.html
@@ -14,6 +14,7 @@
+
`).join("");return t?`
${r}`:r}}},flagEnabled:a.U5,codec:{encode:a.hD,decode:a.P_}}),inUse:!1},f.push(t)):((0,a.U5)("rewriterLogs",e.base)&&console.log(`using cached rewriter ${r} from list of ${d} rewriters`),t=f[r]),t.inUse=!0,[t.rewriter,()=>t.inUse=!1]}},2015:function(e,t,r){r.d(t,{i:()=>a});var n=r(37),i=r(1478);function a(e,t,r,a){let s="",o="module"===t,l=e=>{o?s+=`import "${n.$W.files[e]}"
+`:s+=`importScripts("${n.$W.files[e]}");
+`};l("wasm"),l("all"),s+=`$scramjetLoadClient().loadAndHook(${JSON.stringify(n.$W)});`;let c=(0,i.o)(e,r,a,o);return c instanceof Uint8Array&&(c=new TextDecoder().decode(c)),s+=c}},6684:function(e,t,r){r.d(t,{Sn:()=>h,YH:()=>u,Yq:()=>f,hU:()=>d,pL:()=>p,rj:()=>c});var n=r(6570);let i={none:0,"same-origin":1,"same-site":2,"cross-site":3};async function a(){return(0,n.P2)("$scramjet",1)}async function s(e){let t=await a();return await t.get("redirectTrackers",e)||null}async function o(e,t){let r=await a();await r.put("redirectTrackers",t,e)}async function l(e){let t=await a();await t.delete("redirectTrackers",e)}async function c(e,t,r){await s(e)||await o(e,{originalReferrer:t||"",mostRestrictiveSite:r,referrerPolicy:"",chainStarted:Date.now()})}async function u(e,t,r){let n=await s(e);n&&(await l(e),r&&(n.referrerPolicy=r),await o(t,n))}async function d(e,t){let r=await s(e);if(!r)return t;let n=i[r.mostRestrictiveSite];return(i[t]??0)>n?(r.mostRestrictiveSite=t,await o(e,r),t):r.mostRestrictiveSite}async function h(e){await l(e)}async function p(e,t,r){let n=await a();await n.put("referrerPolicies",{policy:t,referrer:r},e)}async function f(e){let t=await a();return await t.get("referrerPolicies",e)||null}},2416:function(e,t,r){r(6684),r(8228)},8228:function(e,t,r){r.d(t,{ps:()=>l});var n=r(6570);let i="publicSuffixList";async function a(){return(0,n.P2)("$scramjet",1)}async function s(){let e=await a();return await e.get("publicSuffixList",i)||null}async function o(e){let t=await a();await t.put("publicSuffixList",{data:e,expiry:Date.now()+36e5},i)}async function l(e,t,r){return t?e.origin.origin===t.origin?"same-origin":await c(e.origin,t,r)?"same-site":"cross-site":"none"}async function c(e,t,r){return await u(e,r)===await u(t,r)}async function u(e,t){let r=await d(t),n=e.hostname.toLowerCase().split("."),i="",a=!1;for(let e of r){let t=e.startsWith("!")?e.substring(1):e;if(function(e,t){if(e.lengthi.length&&(i=t)}}if(!i)return n.slice(-2).join(".");let s=i.split(".").length,o=a?s:s+1;return n.slice(-o).join(".")}async function d(e){let t,r=await s();if(r&&Date.now(){let t=e.trim(),r=t.indexOf(" ");return r>-1?t.substring(0,r):t}).filter(e=>e&&!e.startsWith("//"));return await o(n),n}},2794:function(e,t,r){r.d(t,{pX:()=>n,zr:()=>i});let n=Symbol.for("scramjet client global"),i=Symbol.for("scramjet frame handle")},5956:function(e,t,r){function n(e,t){let r=`
+ errorTrace.value = ${JSON.stringify(e)};
+ fetchedURL.textContent = ${JSON.stringify(t)};
+ for (const node of document.querySelectorAll("#hostname")) node.textContent = ${JSON.stringify(location.hostname)};
+ reload.addEventListener("click", () => location.reload());
+ version.textContent = ${JSON.stringify(globalThis.$scramjetVersion?.version||"unknown")};
+ build.textContent = ${JSON.stringify(globalThis.$scramjetVersion?.build||"unknown")};
+
+ document.getElementById('copy-button').addEventListener('click', async () => {
+ const text = document.getElementById('errorTrace').value;
+ await navigator.clipboard.writeText(text);
+ const btn = document.getElementById('copy-button');
+ btn.textContent = 'Copied!';
+ setTimeout(() => btn.textContent = 'Copy', 2000);
+ });
+ `;return`
+
+
+
+ Scramjet
+
+
+
+
+
+
Uh oh!
+
There was an error loading
+
+
+
+
+
+
+
+
+
Try:
+
+ - Checking your internet connection
+ - Verifying you entered the correct address
+ - Clearing the site data
+ - Contacting 's administrator
+ - Verify the server isn't censored
+
+
If you're the administrator of , try:
+
+ - Restarting your server
+ - Updating Scramjet
+ - Troubleshooting the error on the GitHub repository
+
+
+
+
+
+
+ Scramjet v (build )
+
+
+