From 5f03f8d2633fbe6c04abf617e47401979a2469fd Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Fri, 25 Oct 2024 20:32:48 -0500 Subject: [PATCH 01/14] fix: misc fixes --- src/client/dom/origin.ts | 6 +++--- src/worker/fetch.ts | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/client/dom/origin.ts b/src/client/dom/origin.ts index 3f2c124..b0ee571 100644 --- a/src/client/dom/origin.ts +++ b/src/client/dom/origin.ts @@ -12,7 +12,7 @@ export default function (client: ScramjetClient, self: typeof window) { }, }); - client.Trap("document.URL", { + client.Trap("Document.prototype.URL", { get() { return client.url.href; }, @@ -21,7 +21,7 @@ export default function (client: ScramjetClient, self: typeof window) { }, }); - client.Trap("document.documentURI", { + client.Trap("Document.prototype.documentURI", { get() { return client.url.href; }, @@ -30,7 +30,7 @@ export default function (client: ScramjetClient, self: typeof window) { }, }); - client.Trap("document.domain", { + client.Trap("Document.prototype.domain", { get() { return client.url.hostname; }, diff --git a/src/worker/fetch.ts b/src/worker/fetch.ts index d7e337c..c1075a1 100644 --- a/src/worker/fetch.ts +++ b/src/worker/fetch.ts @@ -65,10 +65,12 @@ export async function swfetch( if (response.body) { body = await rewriteBody( response, - { - base: new URL(new URL(client.url).origin), - origin: new URL(new URL(client.url).origin), - }, + client + ? { + base: new URL(new URL(client.url).origin), + origin: new URL(new URL(client.url).origin), + } + : newmeta(new URL(unrewriteUrl(request.referrer))), request.destination, workertype, this.cookieStore From 909fd318d71fc690b99d2221cd7b6ae7ca205ee1 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Fri, 25 Oct 2024 22:48:33 -0500 Subject: [PATCH 02/14] chore: update dependencies --- package.json | 6 +- pnpm-lock.yaml | 288 ++++++++++++++++++++++++------------------------- static/ui.js | 17 ++- 3 files changed, 155 insertions(+), 156 deletions(-) diff --git a/package.json b/package.json index 677c574..c13de99 100644 --- a/package.json +++ b/package.json @@ -36,11 +36,11 @@ "@mercuryworkshop/libcurl-transport": "^1.3.11", "@nebula-services/bare-server-node": "^2.0.4", "@rsdoctor/rspack-plugin": "^0.4.7", - "@rspack/cli": "^1.0.13", - "@rspack/core": "^1.0.13", + "@rspack/cli": "^1.0.14", + "@rspack/core": "^1.0.14", "@types/eslint": "^9.6.1", "@types/estree": "^1.0.6", - "@types/node": "^22.7.8", + "@types/node": "^22.8.1", "@types/serviceworker": "^0.0.101", "@typescript-eslint/eslint-plugin": "^8.11.0", "@typescript-eslint/parser": "^8.11.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c0cd50f..dc4d47e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,13 +53,13 @@ importers: version: 2.0.4(bufferutil@4.0.8)(utf-8-validate@6.0.4) '@rsdoctor/rspack-plugin': specifier: ^0.4.7 - version: 0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) + version: 0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) '@rspack/cli': - specifier: ^1.0.13 - version: 1.0.13(@rspack/core@1.0.13)(@types/express@4.17.21)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) + specifier: ^1.0.14 + version: 1.0.14(@rspack/core@1.0.14)(@types/express@4.17.21)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) '@rspack/core': - specifier: ^1.0.13 - version: 1.0.13 + specifier: ^1.0.14 + version: 1.0.14 '@types/eslint': specifier: ^9.6.1 version: 9.6.1 @@ -67,8 +67,8 @@ importers: specifier: ^1.0.6 version: 1.0.6 '@types/node': - specifier: ^22.7.8 - version: 22.7.8 + specifier: ^22.8.1 + version: 22.8.1 '@types/serviceworker': specifier: ^0.0.101 version: 0.0.101 @@ -106,26 +106,26 @@ packages: resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.7': - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.25.7': - resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} + '@babel/highlight@7.25.9': + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} engines: {node: '>=6.9.0'} '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.1': - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + '@eslint-community/regexpp@4.11.2': + resolution: {integrity: sha512-2WwyTYNVaMNUWPZTOJdkax9iqTdirrApgTbk+Qoq5EPX6myqZvG8QGFRgdKmkjKVG6/G/a565vpPauHk0+hpBA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/config-array@0.18.0': @@ -319,62 +319,62 @@ packages: '@rsdoctor/utils@0.4.7': resolution: {integrity: sha512-ztgYeu6xX2DxDYt2jTeL/9q+hNHcJEsYbDkyEQsc3Tw4Mez4FFk5TGA5nwfe+Cprw/nYqz0/WSfSmTNAc0YMig==} - '@rspack/binding-darwin-arm64@1.0.13': - resolution: {integrity: sha512-HepE4V5Rj53o+o8AMzlkdeBxZnsyXKrOJ2oumVtqRLXihVlMguYwNTSkjfmjAqq/4PJAhEeaeIFyomZg+zKC0A==} + '@rspack/binding-darwin-arm64@1.0.14': + resolution: {integrity: sha512-dHvlF6T6ctThGDIdvkSdacroA1xlCxfteuppBj8BX/UxzLPr4xsaEtNilfJmFfd2/J02UQyTQauN/9EBuA+YkA==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.0.13': - resolution: {integrity: sha512-ucHf0q2V+K19z75BvjU6EbQggNFiz1/xJ5tSgOXUfRu5omZF1jpN/epeMGqh0MkExRwOMYKJR/pVHDw5ITcU8g==} + '@rspack/binding-darwin-x64@1.0.14': + resolution: {integrity: sha512-q4Da1Bn/4xTLhhnOkT+fjP2STsSCfp4z03/J/h8tCVG/UYz56Ud3q1UEOK33c5Fxw1C4GlhEh5yYOlSAdxFQLQ==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.0.13': - resolution: {integrity: sha512-0fqLWDG9Z2VKxy3u6+jLVJgT2E24Xb2umP4Jtx2uNf2+aHLXifgqUdwgCElO+dj+PpOp/q8zmV5U2DXykvPU3w==} + '@rspack/binding-linux-arm64-gnu@1.0.14': + resolution: {integrity: sha512-JogYtL3VQS9wJ3p3FNhDqinm7avrMsdwz4erP7YCjD7idob93GYAE7dPrHUzSNVnCBYXRaHJYZHDQs7lKVcYZw==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-arm64-musl@1.0.13': - resolution: {integrity: sha512-eK72/jAofJRcZ23FTteUh1MfTbErWYNwVLuxnliyf1f1PwH0a7exGE6ik0/y/LdAt5PWP1r8r981EEjrpsTfRQ==} + '@rspack/binding-linux-arm64-musl@1.0.14': + resolution: {integrity: sha512-qgybhxI/nnoa8CUz7zKTC0Oh37NZt9uRxsSV7+ZYrfxqbrVCoNVuutPpY724uUHy1M6W34kVEm1uT1N4Ka5cZg==} cpu: [arm64] os: [linux] - '@rspack/binding-linux-x64-gnu@1.0.13': - resolution: {integrity: sha512-C9wGDim1Euc10qRk5ztPvgK4NAi6bi6Ck3+ugaRzYXPFIVegnFyXu2fv42j3Y0LRhBjnKMXZJzME5nQUPuT6Ug==} + '@rspack/binding-linux-x64-gnu@1.0.14': + resolution: {integrity: sha512-5vzaDRw3/sGKo3ax/1cU3/cxqNjajwlt2LU288vXNe1/n8oe/pcDfYcTugpOe/A1DqzadanudJszLpFcKsaFtQ==} cpu: [x64] os: [linux] - '@rspack/binding-linux-x64-musl@1.0.13': - resolution: {integrity: sha512-7bQyGEoMCxXUS+RDo6qej8JjqS8kYd8CvlnfYZVUqWgCxgn19j29lKvWVibey0lnFpoJrqReOdSypbk91tSrzA==} + '@rspack/binding-linux-x64-musl@1.0.14': + resolution: {integrity: sha512-4U6QD9xVS1eGme52DuJr6Fg/KdcUfJ+iKwH49Up460dZ/fLvGylnVGA+V0mzPlKi8gfy7NwFuYXZdu3Pwi1YYg==} cpu: [x64] os: [linux] - '@rspack/binding-win32-arm64-msvc@1.0.13': - resolution: {integrity: sha512-6QOHiCwaQeCZApWRe1y8ZNZGOj00EFdX1ypOc3R1GrfSjn+UjoKhbBtgVl2w+sPTaCZ4SvknOk9usSgcWO4gOQ==} + '@rspack/binding-win32-arm64-msvc@1.0.14': + resolution: {integrity: sha512-SjeYw7qqRHYZ5RPClu+ffKZsShQdU3amA1OwC3M0AS6dbfEcji8482St3Y8Z+QSzYRapCEZij9LMM/9ypEhISg==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.0.13': - resolution: {integrity: sha512-ucm7emxYDjTsOGNwgYGz30oKcnzXLjg/Fcs0mNMmQgMEFpwBXhczfKJimCyMIlAhQCFPP4WzrXFdf03EPuw6CA==} + '@rspack/binding-win32-ia32-msvc@1.0.14': + resolution: {integrity: sha512-m1gUiVyz3Z3VYIK/Ayo5CVHBjnEeRk9a+KIpKSsq1yhZItnMgjtr4bKabU9vjxalO4UoaSmVzODJI8lJBlnn5Q==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.0.13': - resolution: {integrity: sha512-9G/hvr47ECjDEmBCyyQTZFilmEOIQJCQvpx6hUgDWsfUApwF9LZBW/PqBCSwhY+tIErr/AurJnBVAYub0MYpHA==} + '@rspack/binding-win32-x64-msvc@1.0.14': + resolution: {integrity: sha512-Gbeg+bayMF9VP9xmlxySL/TC2XrS6/LZM/pqcNOTLHx6LMG/VXCcmKB0rOZo8MzLXEt8D/lQmQ/B6g7pSaAw0g==} cpu: [x64] os: [win32] - '@rspack/binding@1.0.13': - resolution: {integrity: sha512-mnSCZ3Qb/I3LzsYoo24AG4LgmaSOIc1CS38A9L9nv4MJj8x+1D2BaLErpaaMmhqI3lQBIcBSQkN7+WbpsCP3Uw==} + '@rspack/binding@1.0.14': + resolution: {integrity: sha512-0wWqFvr9hkF4LgNPgWfkTU0hhkZAMvOytoCs2p+wDX1Up1E/SgJ1U1JAsCxsl1XtUKm7mRvdWHzJmHbza3y89Q==} - '@rspack/cli@1.0.13': - resolution: {integrity: sha512-4h6X6GNJmvXnxJtXq7mv7R62gflQ23FC+Ftw6gTpPCAjrIS7qI3oAqRlT2JdcAvkd6neAQYTtiELG0iCV7aEsw==} + '@rspack/cli@1.0.14': + resolution: {integrity: sha512-cKi8XJW47WkAkCrbWBETvPcTsly4PhB8gWSr1tUX7iFiLyDbSsD6p7mFZxU0gafK+zw+CI8ufzSUiYjW8iwvCQ==} hasBin: true peerDependencies: '@rspack/core': ^1.0.0-alpha || ^1.x - '@rspack/core@1.0.13': - resolution: {integrity: sha512-lh8toWSWcYjlOuriQ8/h0U8riaaRQfzwU0oUNykFj1xokJMSKIQFH5WQWj2DQ386uHNv52nMbc+Jiuml1vYboA==} + '@rspack/core@1.0.14': + resolution: {integrity: sha512-xHl23lxJZNjItGc5YuE9alz3yjb56y7EgJmAcBMPHMqgjtUt8rBu4xd/cSUjbr9/lLF9N4hdyoJiPJOFs9LEjw==} engines: {node: '>=16.0.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -424,8 +424,8 @@ packages: '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} - '@types/express-serve-static-core@5.0.0': - resolution: {integrity: sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==} + '@types/express-serve-static-core@5.0.1': + resolution: {integrity: sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==} '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} @@ -451,8 +451,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@22.7.8': - resolution: {integrity: sha512-a922jJy31vqR5sk+kAdIENJjHblqcZ4RmERviFsER4WJcEONqxKcjNOlk0q7OUfrF5sddT+vng070cdfMlrPLg==} + '@types/node@22.8.1': + resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==} '@types/qs@6.9.16': resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} @@ -773,8 +773,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001669: - resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} + caniuse-lite@1.0.30001671: + resolution: {integrity: sha512-jocyVaSSfXg2faluE6hrWkMgDOiULBMca4QLtDT39hw1YxaIPHWc1CcTCKkPmHgGH6tKji6ZNbMSmUAvENf2/A==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -873,9 +873,9 @@ packages: resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} + cookie@1.0.1: + resolution: {integrity: sha512-Xd8lFX4LM9QEEwxQpF9J9NTUh8pmdJO0cyRJhFiDoLTk2eH8FXlRv2IFGYVadZpqI3j8fhNrSdKCeYPxiAhLXw==} + engines: {node: '>=18'} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -991,8 +991,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.41: - resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==} + electron-to-chromium@1.5.47: + resolution: {integrity: sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1542,11 +1542,11 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - libcurl.js@0.6.16: - resolution: {integrity: sha512-aR56ZgHjzUVRVU3l+XQIBIuZwTc7k6CUrwbH0v6GAyXreL5rluWjLOc3GtDAgK9JEBZi1aVSrNdBtqE669NGCw==} + libcurl.js@0.6.17: + resolution: {integrity: sha512-hmbVn02mbZSN1ufhPF+lM+0n+FqjEjr9ONbzhYQrzDNTKlkPkls6hMf0AIIrp/1P+zyhOtkUbD5XgSnAIy4fBA==} - light-my-request@6.1.0: - resolution: {integrity: sha512-+NFuhlOGoEwxeQfJ/pobkVFxcnKyDtiX847hLjuB/IzBxIl3q4VJeFI8uRCgb3AlTWL1lgOr+u5+8QdUcr33ng==} + light-my-request@6.2.0: + resolution: {integrity: sha512-8b6or3xBeDv8p7OHNVXjFmlrLHdK/+Anor0AYLg6P/zgF8DkNDGGwP5BNbOF0SYdkfPFKYH88ARvXfNakOeQqA==} lines-and-columns@2.0.4: resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} @@ -2395,26 +2395,26 @@ snapshots: '@babel/code-frame@7.25.7': dependencies: - '@babel/highlight': 7.25.7 + '@babel/highlight': 7.25.9 picocolors: 1.1.1 - '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-identifier@7.25.9': {} - '@babel/highlight@7.25.7': + '@babel/highlight@7.25.9': dependencies: - '@babel/helper-validator-identifier': 7.25.7 + '@babel/helper-validator-identifier': 7.25.9 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.1 '@discoveryjs/json-ext@0.5.7': {} - '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0)': + '@eslint-community/eslint-utils@4.4.1(eslint@9.13.0)': dependencies: eslint: 9.13.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.1': {} + '@eslint-community/regexpp@4.11.2': {} '@eslint/config-array@0.18.0': dependencies: @@ -2559,7 +2559,7 @@ snapshots: '@mercuryworkshop/libcurl-transport@1.3.11': dependencies: - libcurl.js: 0.6.16 + libcurl.js: 0.6.17 '@module-federation/runtime-tools@0.5.1': dependencies: @@ -2609,12 +2609,12 @@ snapshots: '@rsdoctor/client@0.4.7': {} - '@rsdoctor/core@0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': + '@rsdoctor/core@0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': dependencies: - '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) - '@rsdoctor/sdk': 0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) - '@rsdoctor/types': 0.4.7(@rspack/core@1.0.13)(webpack@5.95.0) - '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.13)(webpack@5.95.0) + '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) + '@rsdoctor/sdk': 0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) + '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14)(webpack@5.95.0) + '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14)(webpack@5.95.0) axios: 1.7.7 enhanced-resolve: 5.12.0 filesize: 10.1.6 @@ -2632,10 +2632,10 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/graph@0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': + '@rsdoctor/graph@0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': dependencies: - '@rsdoctor/types': 0.4.7(@rspack/core@1.0.13)(webpack@5.95.0) - '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.13)(webpack@5.95.0) + '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14)(webpack@5.95.0) + '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14)(webpack@5.95.0) lodash: 4.17.21 socket.io: 4.7.2(bufferutil@4.0.8)(utf-8-validate@6.0.4) source-map: 0.7.4 @@ -2646,14 +2646,14 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/rspack-plugin@0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': + '@rsdoctor/rspack-plugin@0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': dependencies: - '@rsdoctor/core': 0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) - '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) - '@rsdoctor/sdk': 0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) - '@rsdoctor/types': 0.4.7(@rspack/core@1.0.13)(webpack@5.95.0) - '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.13)(webpack@5.95.0) - '@rspack/core': 1.0.13 + '@rsdoctor/core': 0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) + '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) + '@rsdoctor/sdk': 0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) + '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14)(webpack@5.95.0) + '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14)(webpack@5.95.0) + '@rspack/core': 1.0.14 lodash: 4.17.21 transitivePeerDependencies: - bufferutil @@ -2662,12 +2662,12 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/sdk@0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': + '@rsdoctor/sdk@0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': dependencies: '@rsdoctor/client': 0.4.7 - '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.13)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) - '@rsdoctor/types': 0.4.7(@rspack/core@1.0.13)(webpack@5.95.0) - '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.13)(webpack@5.95.0) + '@rsdoctor/graph': 0.4.7(@rspack/core@1.0.14)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) + '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14)(webpack@5.95.0) + '@rsdoctor/utils': 0.4.7(@rspack/core@1.0.14)(webpack@5.95.0) '@types/fs-extra': 11.0.4 body-parser: 1.20.3 cors: 2.8.5 @@ -2686,7 +2686,7 @@ snapshots: - utf-8-validate - webpack - '@rsdoctor/types@0.4.7(@rspack/core@1.0.13)(webpack@5.95.0)': + '@rsdoctor/types@0.4.7(@rspack/core@1.0.14)(webpack@5.95.0)': dependencies: '@types/connect': 3.4.38 '@types/estree': 1.0.5 @@ -2694,12 +2694,12 @@ snapshots: source-map: 0.7.4 webpack: 5.95.0 optionalDependencies: - '@rspack/core': 1.0.13 + '@rspack/core': 1.0.14 - '@rsdoctor/utils@0.4.7(@rspack/core@1.0.13)(webpack@5.95.0)': + '@rsdoctor/utils@0.4.7(@rspack/core@1.0.14)(webpack@5.95.0)': dependencies: '@babel/code-frame': 7.25.7 - '@rsdoctor/types': 0.4.7(@rspack/core@1.0.13)(webpack@5.95.0) + '@rsdoctor/types': 0.4.7(@rspack/core@1.0.14)(webpack@5.95.0) '@types/estree': 1.0.5 acorn: 8.13.0 acorn-import-assertions: 1.9.0(acorn@8.13.0) @@ -2721,50 +2721,50 @@ snapshots: - supports-color - webpack - '@rspack/binding-darwin-arm64@1.0.13': + '@rspack/binding-darwin-arm64@1.0.14': optional: true - '@rspack/binding-darwin-x64@1.0.13': + '@rspack/binding-darwin-x64@1.0.14': optional: true - '@rspack/binding-linux-arm64-gnu@1.0.13': + '@rspack/binding-linux-arm64-gnu@1.0.14': optional: true - '@rspack/binding-linux-arm64-musl@1.0.13': + '@rspack/binding-linux-arm64-musl@1.0.14': optional: true - '@rspack/binding-linux-x64-gnu@1.0.13': + '@rspack/binding-linux-x64-gnu@1.0.14': optional: true - '@rspack/binding-linux-x64-musl@1.0.13': + '@rspack/binding-linux-x64-musl@1.0.14': optional: true - '@rspack/binding-win32-arm64-msvc@1.0.13': + '@rspack/binding-win32-arm64-msvc@1.0.14': optional: true - '@rspack/binding-win32-ia32-msvc@1.0.13': + '@rspack/binding-win32-ia32-msvc@1.0.14': optional: true - '@rspack/binding-win32-x64-msvc@1.0.13': + '@rspack/binding-win32-x64-msvc@1.0.14': optional: true - '@rspack/binding@1.0.13': + '@rspack/binding@1.0.14': optionalDependencies: - '@rspack/binding-darwin-arm64': 1.0.13 - '@rspack/binding-darwin-x64': 1.0.13 - '@rspack/binding-linux-arm64-gnu': 1.0.13 - '@rspack/binding-linux-arm64-musl': 1.0.13 - '@rspack/binding-linux-x64-gnu': 1.0.13 - '@rspack/binding-linux-x64-musl': 1.0.13 - '@rspack/binding-win32-arm64-msvc': 1.0.13 - '@rspack/binding-win32-ia32-msvc': 1.0.13 - '@rspack/binding-win32-x64-msvc': 1.0.13 + '@rspack/binding-darwin-arm64': 1.0.14 + '@rspack/binding-darwin-x64': 1.0.14 + '@rspack/binding-linux-arm64-gnu': 1.0.14 + '@rspack/binding-linux-arm64-musl': 1.0.14 + '@rspack/binding-linux-x64-gnu': 1.0.14 + '@rspack/binding-linux-x64-musl': 1.0.14 + '@rspack/binding-win32-arm64-msvc': 1.0.14 + '@rspack/binding-win32-ia32-msvc': 1.0.14 + '@rspack/binding-win32-x64-msvc': 1.0.14 - '@rspack/cli@1.0.13(@rspack/core@1.0.13)(@types/express@4.17.21)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': + '@rspack/cli@1.0.14(@rspack/core@1.0.14)(@types/express@4.17.21)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': dependencies: '@discoveryjs/json-ext': 0.5.7 - '@rspack/core': 1.0.13 - '@rspack/dev-server': 1.0.5(@rspack/core@1.0.13)(@types/express@4.17.21)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) + '@rspack/core': 1.0.14 + '@rspack/dev-server': 1.0.5(@rspack/core@1.0.14)(@types/express@4.17.21)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0) colorette: 2.0.19 exit-hook: 3.2.0 interpret: 3.1.1 @@ -2781,16 +2781,16 @@ snapshots: - webpack - webpack-cli - '@rspack/core@1.0.13': + '@rspack/core@1.0.14': dependencies: '@module-federation/runtime-tools': 0.5.1 - '@rspack/binding': 1.0.13 + '@rspack/binding': 1.0.14 '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001669 + caniuse-lite: 1.0.30001671 - '@rspack/dev-server@1.0.5(@rspack/core@1.0.13)(@types/express@4.17.21)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': + '@rspack/dev-server@1.0.5(@rspack/core@1.0.14)(@types/express@4.17.21)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': dependencies: - '@rspack/core': 1.0.13 + '@rspack/core': 1.0.14 chokidar: 3.6.0 connect-history-api-fallback: 2.0.0 express: 4.21.1 @@ -2816,26 +2816,26 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.0.0 - '@types/node': 22.7.8 + '@types/express-serve-static-core': 5.0.1 + '@types/node': 22.8.1 '@types/connect@3.4.38': dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/cookie@0.4.1': {} '@types/cors@2.8.17': dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/eslint@9.6.1': dependencies: @@ -2848,14 +2848,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 - '@types/express-serve-static-core@5.0.0': + '@types/express-serve-static-core@5.0.1': dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -2870,27 +2870,27 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/http-errors@2.0.4': {} '@types/http-proxy@1.17.15': dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/json-schema@7.0.15': {} '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/mime@1.3.5': {} '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 - '@types/node@22.7.8': + '@types/node@22.8.1': dependencies: undici-types: 6.19.8 @@ -2905,7 +2905,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/serve-index@1.9.4': dependencies: @@ -2914,14 +2914,14 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/send': 0.17.4 '@types/serviceworker@0.0.101': {} '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@types/tapable@2.2.7': dependencies: @@ -2929,11 +2929,11 @@ snapshots: '@types/ws@8.5.12': dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3)': dependencies: - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/regexpp': 4.11.2 '@typescript-eslint/parser': 8.11.0(eslint@9.13.0)(typescript@5.6.3) '@typescript-eslint/scope-manager': 8.11.0 '@typescript-eslint/type-utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) @@ -2998,7 +2998,7 @@ snapshots: '@typescript-eslint/utils@8.11.0(eslint@9.13.0)(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) '@typescript-eslint/scope-manager': 8.11.0 '@typescript-eslint/types': 8.11.0 '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) @@ -3237,8 +3237,8 @@ snapshots: browserslist@4.24.2: dependencies: - caniuse-lite: 1.0.30001669 - electron-to-chromium: 1.5.41 + caniuse-lite: 1.0.30001671 + electron-to-chromium: 1.5.47 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) @@ -3266,7 +3266,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001669: {} + caniuse-lite@1.0.30001671: {} chalk@2.4.2: dependencies: @@ -3370,7 +3370,7 @@ snapshots: cookie@0.7.1: {} - cookie@0.7.2: {} + cookie@1.0.1: {} core-util-is@1.0.3: {} @@ -3464,7 +3464,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.41: {} + electron-to-chromium@1.5.47: {} emoji-regex@8.0.0: {} @@ -3480,7 +3480,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.7.8 + '@types/node': 22.8.1 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -3539,8 +3539,8 @@ snapshots: eslint@9.13.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0) - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) + '@eslint-community/regexpp': 4.11.2 '@eslint/config-array': 0.18.0 '@eslint/core': 0.7.0 '@eslint/eslintrc': 3.1.0 @@ -3700,7 +3700,7 @@ snapshots: avvio: 9.1.0 fast-json-stringify: 6.0.0 find-my-way: 9.1.0 - light-my-request: 6.1.0 + light-my-request: 6.2.0 pino: 9.5.0 process-warning: 4.0.0 proxy-addr: 2.0.7 @@ -4022,7 +4022,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.7.8 + '@types/node': 22.8.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -4068,11 +4068,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - libcurl.js@0.6.16: {} + libcurl.js@0.6.17: {} - light-my-request@6.1.0: + light-my-request@6.2.0: dependencies: - cookie: 0.7.2 + cookie: 1.0.1 process-warning: 4.0.0 set-cookie-parser: 2.7.1 diff --git a/static/ui.js b/static/ui.js index a4da0d8..2f797de 100644 --- a/static/ui.js +++ b/static/ui.js @@ -123,7 +123,6 @@ function Config() { } function BrowserApp() { - this.urlencoded = ""; this.css = ` width: 100%; height: 100%; @@ -269,13 +268,13 @@ window.addEventListener("load", async () => { console.log( "%cb", ` -background-image: url(data:image/png;base64,${b64(arraybuffer)}); -color: transparent; -padding-left: 200px; -padding-bottom: 100px; -background-size: contain; -background-position: center center; -background-repeat: no-repeat; -` + background-image: url(data:image/png;base64,${b64(arraybuffer)}); + color: transparent; + padding-left: 200px; + padding-bottom: 100px; + background-size: contain; + background-position: center center; + background-repeat: no-repeat; + ` ); }); From 990b9c8f5647a1a5a5a938c76d2476539ae19edd Mon Sep 17 00:00:00 2001 From: wearrrrr Date: Sat, 26 Oct 2024 22:29:51 -0500 Subject: [PATCH 03/14] Make cookies dump to idb as an object instead of a string, makes debugging easier, adds a small bit of overhead. --- src/worker/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/worker/index.ts b/src/worker/index.ts index b253a38..11e9505 100644 --- a/src/worker/index.ts +++ b/src/worker/index.ts @@ -49,7 +49,7 @@ export class ScramjetServiceWorker extends EventTarget { const res = db.result; const tx = res.transaction("cookies", "readwrite"); const store = tx.objectStore("cookies"); - store.put(this.cookieStore.dump(), "cookies"); + store.put(JSON.parse(this.cookieStore.dump()), "cookies"); } }); } From 2db203ae18ce9ff4045bbf4ef4ad022af3ca59e2 Mon Sep 17 00:00:00 2001 From: wearrrrr Date: Sat, 26 Oct 2024 22:33:59 -0500 Subject: [PATCH 04/14] Do I need to add a lint rule for safe object access ffs --- static/sw.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/static/sw.js b/static/sw.js index c7d5ed5..b57af21 100644 --- a/static/sw.js +++ b/static/sw.js @@ -36,17 +36,17 @@ self.addEventListener("message", ({ data }) => { scramjet.addEventListener("request", (e) => { let headers = {}; - if (e.url.href === playgroundData.origin + "/") { + if (playgroundData && e.url.href === playgroundData.origin + "/") { headers["content-type"] = "text/html"; e.response = new Response(playgroundData.html, { headers, }); - } else if (e.url.href === playgroundData.origin + "/style.css") { + } else if (playgroundData && e.url.href === playgroundData.origin + "/style.css") { headers["content-type"] = "text/css"; e.response = new Response(playgroundData.css, { headers, }); - } else if (e.url.href === playgroundData.origin + "/script.js") { + } else if (playgroundData && e.url.href === playgroundData.origin + "/script.js") { headers["content-type"] = "application/javascript"; e.response = new Response(playgroundData.js, { headers, From 257b700e252e4053c7e3c05d03bfbd866dd5ad26 Mon Sep 17 00:00:00 2001 From: wearrrrr Date: Sat, 26 Oct 2024 22:36:34 -0500 Subject: [PATCH 05/14] fix small playground bug --- static/playground.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/playground.js b/static/playground.js index cff5697..dc94718 100644 --- a/static/playground.js +++ b/static/playground.js @@ -146,7 +146,9 @@ function loadResource(url) { }) } function loadiframe() { + if (document.getElementById("nested-frame")) return; let frame = document.createElement("iframe"); + frame.id = "nested-frame"; frame.src = "https://google.com"; document.body.appendChild(frame); }`, From b9be6e8c7ad2f5e2eb8daef0b87442cb8e045370 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sat, 26 Oct 2024 22:56:07 -0500 Subject: [PATCH 06/14] feat: switch to new css rewriter --- src/shared/rewriters/css.ts | 92 ++++++-------- src/worker/error.ts | 241 ++++++++++++++++++------------------ 2 files changed, 155 insertions(+), 178 deletions(-) diff --git a/src/shared/rewriters/css.ts b/src/shared/rewriters/css.ts index b09668a..55f65b0 100644 --- a/src/shared/rewriters/css.ts +++ b/src/shared/rewriters/css.ts @@ -1,64 +1,42 @@ -// This CSS rewriter uses code from Meteor -// You can find the original source code at https://github.com/MeteorProxy/Meteor - import { URLMeta, rewriteUrl, unrewriteUrl } from "./url"; export function rewriteCss(css: string, meta: URLMeta) { - const regex = - /(@import\s+(?!url\())?\s*url\(\s*(['"]?)([^'")]+)\2\s*\)|@import\s+(['"])([^'"]+)\4/g; - - return css.replace( - regex, - ( - match, - importStatement, - urlQuote, - urlContent, - importQuote, - importContent - ) => { - const url = urlContent || importContent; - const encodedUrl = rewriteUrl(url.trim(), meta); - - if (importStatement) { - return `@import url(${urlQuote}${encodedUrl}${urlQuote})`; - } - - if (importQuote) { - return `@import ${importQuote}${encodedUrl}${importQuote}`; - } - - return `url(${urlQuote}${encodedUrl}${urlQuote})`; - } - ); + handleCss("unrewrite", css, meta); } export function unrewriteCss(css: string) { - const regex = - /(@import\s+(?!url\())?\s*url\(\s*(['"]?)([^'")]+)\2\s*\)|@import\s+(['"])([^'"]+)\4/g; - - return css.replace( - regex, - ( - match, - importStatement, - urlQuote, - urlContent, - importQuote, - importContent - ) => { - const url = urlContent || importContent; - const encodedUrl = unrewriteUrl(url.trim()); - - if (importStatement) { - return `@import url(${urlQuote}${encodedUrl}${urlQuote})`; - } - - if (importQuote) { - return `@import ${importQuote}${encodedUrl}${importQuote}`; - } - - return `url(${urlQuote}${encodedUrl}${urlQuote})`; - } - ); + handleCss("rewrite", css); +} + +function handleCss(type: "rewrite" | "unrewrite", css: string, meta?: URLMeta) { + const urlRegex = /url\(['"]?(.+?)['"]?\)/gm; + const Atruleregex = + /@import\s+(url\s*?\(.{0,9999}?\)|['"].{0,9999}?['"]|.{0,9999}?)($|\s|;)/gm; + css = new String(css).toString(); + css = css.replace(urlRegex, (match, url) => { + const encodedUrl = + type === "rewrite" + ? rewriteUrl(url.trim(), meta) + : unrewriteUrl(url.trim()); + + return match.replace(url, encodedUrl); + }); + css = css.replace(Atruleregex, (_, importStatement) => { + return importStatement.replace( + /^(url\(['"]?|['"]|)(.+?)(['"]|['"]?\)|)$/gm, + (match, firstQuote, url, endQuote) => { + if (firstQuote.startsWith("url")) { + return match; + } + const encodedUrl = + type === "rewrite" + ? rewriteUrl(url.trim(), meta) + : unrewriteUrl(url.trim()); + + return `${firstQuote}${encodedUrl}${endQuote}`; + } + ); + }); + + return css; } diff --git a/src/worker/error.ts b/src/worker/error.ts index 525b34a..03e458c 100644 --- a/src/worker/error.ts +++ b/src/worker/error.ts @@ -12,138 +12,137 @@ export function errorTemplate(trace: string, fetchedURL: string) { `; 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 )

- - - + #version-wrapper { + width: 100%; + text-align: center; + position: absolute; + bottom: 0.2rem; + font-size: 0.8rem; + color: var(--shore)!important; + i { + background-color: color-mix(in srgb, var(--deep), transparent 50%); + border-radius: 9999px; + padding: 0.2em 0.5em; + } + z-index: 101; + } + + + +
+
+

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 )

+ + + `; } From e6dec20f3c07ee6b78c899e43d015c62ddb48dd8 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sat, 26 Oct 2024 22:56:20 -0500 Subject: [PATCH 07/14] chore: prettier --- static/sw.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/static/sw.js b/static/sw.js index b57af21..ee62275 100644 --- a/static/sw.js +++ b/static/sw.js @@ -41,12 +41,18 @@ scramjet.addEventListener("request", (e) => { e.response = new Response(playgroundData.html, { headers, }); - } else if (playgroundData && e.url.href === playgroundData.origin + "/style.css") { + } else if ( + playgroundData && + e.url.href === playgroundData.origin + "/style.css" + ) { headers["content-type"] = "text/css"; e.response = new Response(playgroundData.css, { headers, }); - } else if (playgroundData && e.url.href === playgroundData.origin + "/script.js") { + } else if ( + playgroundData && + e.url.href === playgroundData.origin + "/script.js" + ) { headers["content-type"] = "application/javascript"; e.response = new Response(playgroundData.js, { headers, From 39d75295355b6e49be235540c3c139af6bfb8e66 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sat, 26 Oct 2024 22:58:45 -0500 Subject: [PATCH 08/14] oops --- src/shared/rewriters/css.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/rewriters/css.ts b/src/shared/rewriters/css.ts index 55f65b0..4464f0f 100644 --- a/src/shared/rewriters/css.ts +++ b/src/shared/rewriters/css.ts @@ -1,11 +1,11 @@ import { URLMeta, rewriteUrl, unrewriteUrl } from "./url"; export function rewriteCss(css: string, meta: URLMeta) { - handleCss("unrewrite", css, meta); + return handleCss("unrewrite", css, meta); } export function unrewriteCss(css: string) { - handleCss("rewrite", css); + return handleCss("rewrite", css); } function handleCss(type: "rewrite" | "unrewrite", css: string, meta?: URLMeta) { From 635494f44f3ac96e2cc185a24ab240c9706bbd2a Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:19:08 -0500 Subject: [PATCH 09/14] fix oversight in css rewriter --- src/shared/rewriters/css.ts | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/shared/rewriters/css.ts b/src/shared/rewriters/css.ts index 4464f0f..07fd051 100644 --- a/src/shared/rewriters/css.ts +++ b/src/shared/rewriters/css.ts @@ -9,32 +9,32 @@ export function unrewriteCss(css: string) { } function handleCss(type: "rewrite" | "unrewrite", css: string, meta?: URLMeta) { + // regex from vk6 (https://github.com/ading2210) const urlRegex = /url\(['"]?(.+?)['"]?\)/gm; const Atruleregex = /@import\s+(url\s*?\(.{0,9999}?\)|['"].{0,9999}?['"]|.{0,9999}?)($|\s|;)/gm; css = new String(css).toString(); css = css.replace(urlRegex, (match, url) => { const encodedUrl = - type === "rewrite" - ? rewriteUrl(url.trim(), meta) - : unrewriteUrl(url.trim()); + type === "rewrite" ? rewriteUrl(url, meta) : unrewriteUrl(url); return match.replace(url, encodedUrl); }); - css = css.replace(Atruleregex, (_, importStatement) => { - return importStatement.replace( - /^(url\(['"]?|['"]|)(.+?)(['"]|['"]?\)|)$/gm, - (match, firstQuote, url, endQuote) => { - if (firstQuote.startsWith("url")) { - return match; - } - const encodedUrl = - type === "rewrite" - ? rewriteUrl(url.trim(), meta) - : unrewriteUrl(url.trim()); + css = css.replace(Atruleregex, (match, importStatement) => { + return match.replace( + importStatement, + importStatement.replace( + /^(url\(['"]?|['"]|)(.+?)(['"]|['"]?\)|)$/gm, + (match, firstQuote, url, endQuote) => { + if (firstQuote.startsWith("url")) { + return match; + } + const encodedUrl = + type === "rewrite" ? rewriteUrl(url, meta) : unrewriteUrl(url); - return `${firstQuote}${encodedUrl}${endQuote}`; - } + return `${firstQuote}${encodedUrl}${endQuote}`; + } + ) ); }); From 76cd888addf0dd26c2de20d66d858c111d4de998 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sat, 26 Oct 2024 23:37:29 -0500 Subject: [PATCH 10/14] fix: oh my god im dumb --- src/shared/rewriters/css.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/shared/rewriters/css.ts b/src/shared/rewriters/css.ts index 07fd051..33a817f 100644 --- a/src/shared/rewriters/css.ts +++ b/src/shared/rewriters/css.ts @@ -1,11 +1,11 @@ import { URLMeta, rewriteUrl, unrewriteUrl } from "./url"; export function rewriteCss(css: string, meta: URLMeta) { - return handleCss("unrewrite", css, meta); + return handleCss("rewrite", css, meta); } export function unrewriteCss(css: string) { - return handleCss("rewrite", css); + return handleCss("unrewrite", css); } function handleCss(type: "rewrite" | "unrewrite", css: string, meta?: URLMeta) { @@ -17,6 +17,7 @@ function handleCss(type: "rewrite" | "unrewrite", css: string, meta?: URLMeta) { css = css.replace(urlRegex, (match, url) => { const encodedUrl = type === "rewrite" ? rewriteUrl(url, meta) : unrewriteUrl(url); + console.log(encodedUrl); return match.replace(url, encodedUrl); }); From e0a88ad87c7ba2b2689f65bcc865f3a92fe73699 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sun, 27 Oct 2024 01:43:07 -0500 Subject: [PATCH 11/14] chore: update curltransport --- package.json | 2 +- pnpm-lock.yaml | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index c13de99..fd6e9b4 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@fastify/static": "^8.0.2", "@mercuryworkshop/bare-as-module3": "^2.2.5", "@mercuryworkshop/epoxy-transport": "^2.1.25", - "@mercuryworkshop/libcurl-transport": "^1.3.11", + "@mercuryworkshop/libcurl-transport": "^1.3.12", "@nebula-services/bare-server-node": "^2.0.4", "@rsdoctor/rspack-plugin": "^0.4.7", "@rspack/cli": "^1.0.14", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc4d47e..04e8aeb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,8 +46,8 @@ importers: specifier: ^2.1.25 version: 2.1.25 '@mercuryworkshop/libcurl-transport': - specifier: ^1.3.11 - version: 1.3.11 + specifier: ^1.3.12 + version: 1.3.12 '@nebula-services/bare-server-node': specifier: ^2.0.4 version: 2.0.4(bufferutil@4.0.8)(utf-8-validate@6.0.4) @@ -251,8 +251,8 @@ packages: '@mercuryworkshop/epoxy-transport@2.1.25': resolution: {integrity: sha512-vPlHDDG/h2K6WgwV/zKEdxauSCn/KfRHrJGHHK41zJw+oysoZPSTXU666Hf6SHVBv6L3zXpWmXeIuGJUUGJ9Fg==} - '@mercuryworkshop/libcurl-transport@1.3.11': - resolution: {integrity: sha512-XObN3yhqfuHacjUj+c5bJZw3Mv3h7AZwXWcKGTJfmYx+DKwLoZZnV5y0N/+SS4Rnz2Oj9VcFy+6fivjyt5e7OQ==} + '@mercuryworkshop/libcurl-transport@1.3.12': + resolution: {integrity: sha512-SIOeXwiP/p9VMA7Lz20ou3vUDU55ZRZ62eaKOcB2XENK336n6038GQ0lwI+RtZABwbEywXwAqD0+RFp2tqJHHg==} '@module-federation/runtime-tools@0.5.1': resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} @@ -773,8 +773,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001671: - resolution: {integrity: sha512-jocyVaSSfXg2faluE6hrWkMgDOiULBMca4QLtDT39hw1YxaIPHWc1CcTCKkPmHgGH6tKji6ZNbMSmUAvENf2/A==} + caniuse-lite@1.0.30001672: + resolution: {integrity: sha512-XhW1vRo1ob6aeK2w3rTohwTPBLse/rvjq+s3RTSBwnlZqoFFjx9cHsShJjAIbLsLjyoacaTxpLZy9v3gg6zypw==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -2557,7 +2557,7 @@ snapshots: dependencies: '@mercuryworkshop/epoxy-tls': 2.1.14-1 - '@mercuryworkshop/libcurl-transport@1.3.11': + '@mercuryworkshop/libcurl-transport@1.3.12': dependencies: libcurl.js: 0.6.17 @@ -2786,7 +2786,7 @@ snapshots: '@module-federation/runtime-tools': 0.5.1 '@rspack/binding': 1.0.14 '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001671 + caniuse-lite: 1.0.30001672 '@rspack/dev-server@1.0.5(@rspack/core@1.0.14)(@types/express@4.17.21)(bufferutil@4.0.8)(utf-8-validate@6.0.4)(webpack@5.95.0)': dependencies: @@ -3237,7 +3237,7 @@ snapshots: browserslist@4.24.2: dependencies: - caniuse-lite: 1.0.30001671 + caniuse-lite: 1.0.30001672 electron-to-chromium: 1.5.47 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) @@ -3266,7 +3266,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001671: {} + caniuse-lite@1.0.30001672: {} chalk@2.4.2: dependencies: From 2b9afa106857ef6909af7e35c0a4fea0c4bd48f2 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sun, 27 Oct 2024 03:11:32 -0500 Subject: [PATCH 12/14] feat: add proxy and trapping checks --- src/client/client.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/client/client.ts b/src/client/client.ts index 3846d12..408d630 100644 --- a/src/client/client.ts +++ b/src/client/client.ts @@ -237,6 +237,7 @@ export class ScramjetClient { const split = name.split("."); const prop = split.pop(); const target = split.reduce((a, b) => a?.[b], this.global); + if (!target) return; const original = Reflect.get(target, prop); this.natives[name] = original; @@ -362,6 +363,7 @@ export class ScramjetClient { const split = name.split("."); const prop = split.pop(); const target = split.reduce((a, b) => a?.[b], this.global); + if (!target) return; const original = nativeGetOwnPropertyDescriptor(target, prop); this.descriptors[name] = original; From 559e5463baa4b455349499aecc7130eed7450c57 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sun, 27 Oct 2024 03:36:13 -0500 Subject: [PATCH 13/14] fix up html rules --- src/client/client.ts | 1 + src/shared/rewriters/html.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/client/client.ts b/src/client/client.ts index 408d630..c2fd5bb 100644 --- a/src/client/client.ts +++ b/src/client/client.ts @@ -238,6 +238,7 @@ export class ScramjetClient { const prop = split.pop(); const target = split.reduce((a, b) => a?.[b], this.global); if (!target) return; + const original = Reflect.get(target, prop); this.natives[name] = original; diff --git a/src/shared/rewriters/html.ts b/src/shared/rewriters/html.ts index 520e710..1c93fa3 100644 --- a/src/shared/rewriters/html.ts +++ b/src/shared/rewriters/html.ts @@ -147,7 +147,10 @@ export const htmlRules: { // csp stuff that must be deleted nonce: "*", + crossorigin: "*", + "http-equiv": ["meta"], integrity: ["script", "link"], + sandbox: ["iframe"], csp: ["iframe"], }, { @@ -155,6 +158,7 @@ export const htmlRules: { // srcset srcset: ["img", "source"], + srcSet: ["img", "source"], imagesrcset: ["link"], }, { From 1f2952c44a55365fac6bacb1c719dae8997b80a9 Mon Sep 17 00:00:00 2001 From: Percs <83934299+Percslol@users.noreply.github.com> Date: Sun, 27 Oct 2024 03:36:59 -0500 Subject: [PATCH 14/14] oops --- src/shared/rewriters/html.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shared/rewriters/html.ts b/src/shared/rewriters/html.ts index 1c93fa3..3cf5929 100644 --- a/src/shared/rewriters/html.ts +++ b/src/shared/rewriters/html.ts @@ -148,7 +148,6 @@ export const htmlRules: { // csp stuff that must be deleted nonce: "*", crossorigin: "*", - "http-equiv": ["meta"], integrity: ["script", "link"], sandbox: ["iframe"], csp: ["iframe"],