From 5154da62ab46a9eed4ef58025628c58a8c2a4d9e Mon Sep 17 00:00:00 2001 From: MotorTruck1221 Date: Thu, 14 Mar 2024 01:22:56 -0600 Subject: [PATCH] update libcurl and deps, bugfixes Fixes the 'no bare clients issue (fixes #228), upgrades libcurl to 0.5.3 and other deps too --- package.json | 132 +++++++------- pnpm-lock.yaml | 208 +++++++++++------------ src/pages/Settings/Proxy.tsx | 6 +- src/pages/Settings/transportDropdown.tsx | 76 +++++++++ src/routes.tsx | 6 +- src/util/transports.ts | 35 ++-- 6 files changed, 278 insertions(+), 185 deletions(-) create mode 100644 src/pages/Settings/transportDropdown.tsx diff --git a/package.json b/package.json index 3c8af91..54b8fe8 100644 --- a/package.json +++ b/package.json @@ -1,66 +1,66 @@ -{ - "name": "nebula", - "private": true, - "type": "module", - "scripts": { - "dev": "concurrently \"vite\" \"bare-server-node --port 8080\"", - "build": "vite build", - "bstart": "npm run build && tsx server.ts", - "start": "tsx server.ts", - "preview": "vite preview", - "format": "prettier --write ." - }, - "dependencies": { - "@fastify/compress": "^6.5.0", - "@fastify/cookie": "^9.3.1", - "@fastify/static": "^6.12.0", - "@mercuryworkshop/bare-mux": "^1.0.5", - "@mercuryworkshop/epoxy-transport": "^1.1.0", - "@mercuryworkshop/libcurl-transport": "^1.2.1", - "@nebula-services/dynamic": "0.7.2-patch.2", - "@titaniumnetwork-dev/ultraviolet": "^3.0.0", - "@tomphttp/bare-server-node": "2.0.3", - "@tsparticles/engine": "^3.3.0", - "@tsparticles/react": "^3.0.0", - "@tsparticles/slim": "^3.3.0", - "@types/express": "^4.17.21", - "chalk": "^5.3.0", - "classnames": "^2.5.1", - "compression": "^1.7.4", - "cookie-parser": "^1.4.6", - "crypto-js": "^4.2.0", - "express": "^4.18.3", - "fastify": "^4.26.2", - "framer-motion": "^10.18.0", - "i18next": "^23.10.1", - "i18next-browser-languagedetector": "^7.2.0", - "localforage": "^1.10.0", - "million": "^2.6.4", - "preact": "^10.19.6", - "preact-iso": "^2.4.0", - "preact-render-to-string": "^6.4.0", - "preact-router": "^4.1.2", - "rammerhead": "https://github.com/NebulaServices/rammerhead/releases/download/rammerhead-1.2.41-nebula.8/rammerhead-1.2.41-nebula.7.tgz", - "react-helmet": "^6.1.0", - "react-i18next": "^13.5.0", - "react-icons": "^4.12.0", - "react-toastify": "^9.1.3", - "tsx": "^4.7.1", - "wisp-server-node": "^1.0.2", - "ws": "^8.16.0" - }, - "devDependencies": { - "@preact/preset-vite": "^2.8.1", - "autoprefixer": "^10.4.18", - "concurrently": "^8.2.2", - "eslint": "^8.57.0", - "eslint-config-preact": "^1.3.0", - "postcss": "^8.4.35", - "prettier": "^3.2.5", - "prettier-plugin-tailwindcss": "^0.5.12", - "tailwindcss": "^3.4.1", - "typescript": "^5.4.2", - "vite": "^5.1.5", - "vite-plugin-static-copy": "^1.0.1" - } -} +{ + "name": "nebula", + "private": true, + "type": "module", + "scripts": { + "dev": "concurrently \"vite\" \"bare-server-node --port 8080\"", + "build": "vite build", + "bstart": "npm run build && tsx server.ts", + "start": "tsx server.ts", + "preview": "vite preview", + "format": "prettier --write ." + }, + "dependencies": { + "@fastify/compress": "^6.5.0", + "@fastify/cookie": "^9.3.1", + "@fastify/static": "^6.12.0", + "@mercuryworkshop/bare-mux": "^1.0.5", + "@mercuryworkshop/epoxy-transport": "^1.1.0", + "@mercuryworkshop/libcurl-transport": "^1.2.2", + "@nebula-services/dynamic": "0.7.2-patch.2", + "@titaniumnetwork-dev/ultraviolet": "^3.0.0", + "@tomphttp/bare-server-node": "2.0.3", + "@tsparticles/engine": "^3.3.0", + "@tsparticles/react": "^3.0.0", + "@tsparticles/slim": "^3.3.0", + "@types/express": "^4.17.21", + "chalk": "^5.3.0", + "classnames": "^2.5.1", + "compression": "^1.7.4", + "cookie-parser": "^1.4.6", + "crypto-js": "^4.2.0", + "express": "^4.18.3", + "fastify": "^4.26.2", + "framer-motion": "^10.18.0", + "i18next": "^23.10.1", + "i18next-browser-languagedetector": "^7.2.0", + "localforage": "^1.10.0", + "million": "^2.6.4", + "preact": "^10.19.6", + "preact-iso": "^2.4.0", + "preact-render-to-string": "^6.4.0", + "preact-router": "^4.1.2", + "rammerhead": "https://github.com/NebulaServices/rammerhead/releases/download/rammerhead-1.2.41-nebula.8/rammerhead-1.2.41-nebula.7.tgz", + "react-helmet": "^6.1.0", + "react-i18next": "^13.5.0", + "react-icons": "^4.12.0", + "react-toastify": "^9.1.3", + "tsx": "^4.7.1", + "wisp-server-node": "^1.0.2", + "ws": "^8.16.0" + }, + "devDependencies": { + "@preact/preset-vite": "^2.8.1", + "autoprefixer": "^10.4.18", + "concurrently": "^8.2.2", + "eslint": "^8.57.0", + "eslint-config-preact": "^1.3.0", + "postcss": "^8.4.35", + "prettier": "^3.2.5", + "prettier-plugin-tailwindcss": "^0.5.12", + "tailwindcss": "^3.4.1", + "typescript": "^5.4.2", + "vite": "^5.1.6", + "vite-plugin-static-copy": "^1.0.1" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b4ebb29..3e49518 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,8 +21,8 @@ dependencies: specifier: ^1.1.0 version: 1.1.0(typescript@5.4.2) '@mercuryworkshop/libcurl-transport': - specifier: ^1.2.1 - version: 1.2.1(typescript@5.4.2) + specifier: ^1.2.2 + version: 1.2.2(typescript@5.4.2) '@nebula-services/dynamic': specifier: 0.7.2-patch.2 version: 0.7.2-patch.2 @@ -120,7 +120,7 @@ dependencies: devDependencies: '@preact/preset-vite': specifier: ^2.8.1 - version: 2.8.1(@babel/core@7.24.0)(preact@10.19.6)(vite@5.1.5) + version: 2.8.1(@babel/core@7.24.0)(preact@10.19.6)(vite@5.1.6) autoprefixer: specifier: ^10.4.18 version: 10.4.18(postcss@8.4.35) @@ -149,11 +149,11 @@ devDependencies: specifier: ^5.4.2 version: 5.4.2 vite: - specifier: ^5.1.5 - version: 5.1.5 + specifier: ^5.1.6 + version: 5.1.6 vite-plugin-static-copy: specifier: ^1.0.1 - version: 1.0.1(vite@5.1.5) + version: 1.0.1(vite@5.1.6) packages: @@ -720,7 +720,7 @@ packages: /@fastify/fast-json-stringify-compiler@4.3.0: resolution: {integrity: sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA==} dependencies: - fast-json-stringify: 5.12.0 + fast-json-stringify: 5.13.0 dev: false /@fastify/merge-json-schemas@0.1.1: @@ -817,8 +817,8 @@ packages: engines: {node: '>=8'} dev: false - /@mdn/browser-compat-data@5.5.14: - resolution: {integrity: sha512-K7e35i4XtNWpiOr+aPiy3UccAhFop0HsfVz9RSzlcgaaHb2aD/nN0J3uPPLedyTokMiebxN0gxkL/WXpzNQuKg==} + /@mdn/browser-compat-data@5.5.15: + resolution: {integrity: sha512-BWm+TMK60HSepXOZcu39bDs/2sJZVetHO5w0mkuxhpkZvz0G5yGAoyimfaru8g5nK6LXXUIeX6Uk/SWzOfph3g==} dev: true /@mercuryworkshop/bare-mux@1.0.0: @@ -844,9 +844,9 @@ packages: dependencies: '@mercuryworkshop/epoxy-tls': 1.4.1 esbuild-plugin-umd-wrapper: 2.0.0 - rollup: 4.12.1 - rollup-plugin-node-resolve: 5.2.0(rollup@4.12.1) - rollup-plugin-typescript2: 0.36.0(rollup@4.12.1)(typescript@5.4.2) + rollup: 4.13.0 + rollup-plugin-node-resolve: 5.2.0(rollup@4.13.0) + rollup-plugin-typescript2: 0.36.0(rollup@4.13.0)(typescript@5.4.2) ws: 8.16.0 transitivePeerDependencies: - bufferutil @@ -854,14 +854,14 @@ packages: - utf-8-validate dev: false - /@mercuryworkshop/libcurl-transport@1.2.1(typescript@5.4.2): - resolution: {integrity: sha512-HwlC36KSMoUHQmZ8y2EkF57oV6UfLrg6rUbdniMQqWw2HEDBT5Ua+gcyQybjW6pNMqvneqnOWLJFF9LwZzGHoA==} + /@mercuryworkshop/libcurl-transport@1.2.2(typescript@5.4.2): + resolution: {integrity: sha512-F6ho0NlNBBTLXcJHWpomBCD2NxenOxOFPqQF9mDfKeoLktsiQHuulHlJYXUEzUAb9/dhQ1sx9snzXCJv0IBarw==} dependencies: esbuild-plugin-umd-wrapper: 2.0.0 - libcurl.js: 0.5.1 - rollup: 4.12.1 - rollup-plugin-node-resolve: 5.2.0(rollup@4.12.1) - rollup-plugin-typescript2: 0.36.0(rollup@4.12.1)(typescript@5.4.2) + libcurl.js: 0.5.3 + rollup: 4.13.0 + rollup-plugin-node-resolve: 5.2.0(rollup@4.13.0) + rollup-plugin-typescript2: 0.36.0(rollup@4.13.0)(typescript@5.4.2) ws: 8.16.0 transitivePeerDependencies: - bufferutil @@ -951,7 +951,7 @@ packages: requiresBuild: true optional: true - /@preact/preset-vite@2.8.1(@babel/core@7.24.0)(preact@10.19.6)(vite@5.1.5): + /@preact/preset-vite@2.8.1(@babel/core@7.24.0)(preact@10.19.6)(vite@5.1.6): resolution: {integrity: sha512-a9KV4opdj17X2gOFuGup0aE+sXYABX/tJi/QDptOrleX4FlnoZgDWvz45tHOdVfrZX+3uvVsIYPHxRsTerkDNA==} peerDependencies: '@babel/core': 7.x @@ -960,7 +960,7 @@ packages: '@babel/core': 7.24.0 '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.0) - '@prefresh/vite': 2.4.5(preact@10.19.6)(vite@5.1.5) + '@prefresh/vite': 2.4.5(preact@10.19.6)(vite@5.1.6) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.24.0) debug: 4.3.4 @@ -968,7 +968,7 @@ packages: magic-string: 0.30.5 node-html-parser: 6.1.12 resolve: 1.22.8 - vite: 5.1.5 + vite: 5.1.6 transitivePeerDependencies: - preact - supports-color @@ -990,7 +990,7 @@ packages: resolution: {integrity: sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==} dev: true - /@prefresh/vite@2.4.5(preact@10.19.6)(vite@5.1.5): + /@prefresh/vite@2.4.5(preact@10.19.6)(vite@5.1.6): resolution: {integrity: sha512-iForDVJ2M8gQYnm5pHumvTEJjGGc7YNYC0GVKnHFL+GvFfKHfH9Rpq67nUAzNbjuLEpqEOUuQVQajMazWu2ZNQ==} peerDependencies: preact: ^10.4.0 @@ -1002,7 +1002,7 @@ packages: '@prefresh/utils': 1.2.0 '@rollup/pluginutils': 4.2.1 preact: 10.19.6 - vite: 5.1.5 + vite: 5.1.6 transitivePeerDependencies: - supports-color dev: true @@ -1014,92 +1014,92 @@ packages: estree-walker: 2.0.2 picomatch: 2.3.1 - /@rollup/rollup-android-arm-eabi@4.12.1: - resolution: {integrity: sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==} + /@rollup/rollup-android-arm-eabi@4.13.0: + resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} cpu: [arm] os: [android] requiresBuild: true optional: true - /@rollup/rollup-android-arm64@4.12.1: - resolution: {integrity: sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==} + /@rollup/rollup-android-arm64@4.13.0: + resolution: {integrity: sha512-BSbaCmn8ZadK3UAQdlauSvtaJjhlDEjS5hEVVIN3A4bbl3X+otyf/kOJV08bYiRxfejP3DXFzO2jz3G20107+Q==} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@rollup/rollup-darwin-arm64@4.12.1: - resolution: {integrity: sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==} + /@rollup/rollup-darwin-arm64@4.13.0: + resolution: {integrity: sha512-Ovf2evVaP6sW5Ut0GHyUSOqA6tVKfrTHddtmxGQc1CTQa1Cw3/KMCDEEICZBbyppcwnhMwcDce9ZRxdWRpVd6g==} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-darwin-x64@4.12.1: - resolution: {integrity: sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==} + /@rollup/rollup-darwin-x64@4.13.0: + resolution: {integrity: sha512-U+Jcxm89UTK592vZ2J9st9ajRv/hrwHdnvyuJpa5A2ngGSVHypigidkQJP+YiGL6JODiUeMzkqQzbCG3At81Gg==} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.12.1: - resolution: {integrity: sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.13.0: + resolution: {integrity: sha512-8wZidaUJUTIR5T4vRS22VkSMOVooG0F4N+JSwQXWSRiC6yfEsFMLTYRFHvby5mFFuExHa/yAp9juSphQQJAijQ==} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.12.1: - resolution: {integrity: sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==} + /@rollup/rollup-linux-arm64-gnu@4.13.0: + resolution: {integrity: sha512-Iu0Kno1vrD7zHQDxOmvweqLkAzjxEVqNhUIXBsZ8hu8Oak7/5VTPrxOEZXYC1nmrBVJp0ZcL2E7lSuuOVaE3+w==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-arm64-musl@4.12.1: - resolution: {integrity: sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==} + /@rollup/rollup-linux-arm64-musl@4.13.0: + resolution: {integrity: sha512-C31QrW47llgVyrRjIwiOwsHFcaIwmkKi3PCroQY5aVq4H0A5v/vVVAtFsI1nfBngtoRpeREvZOkIhmRwUKkAdw==} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.12.1: - resolution: {integrity: sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==} + /@rollup/rollup-linux-riscv64-gnu@4.13.0: + resolution: {integrity: sha512-Oq90dtMHvthFOPMl7pt7KmxzX7E71AfyIhh+cPhLY9oko97Zf2C9tt/XJD4RgxhaGeAraAXDtqxvKE1y/j35lA==} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-gnu@4.12.1: - resolution: {integrity: sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==} + /@rollup/rollup-linux-x64-gnu@4.13.0: + resolution: {integrity: sha512-yUD/8wMffnTKuiIsl6xU+4IA8UNhQ/f1sAnQebmE/lyQ8abjsVyDkyRkWop0kdMhKMprpNIhPmYlCxgHrPoXoA==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-linux-x64-musl@4.12.1: - resolution: {integrity: sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==} + /@rollup/rollup-linux-x64-musl@4.13.0: + resolution: {integrity: sha512-9RyNqoFNdF0vu/qqX63fKotBh43fJQeYC98hCaf89DYQpv+xu0D8QFSOS0biA7cGuqJFOc1bJ+m2rhhsKcw1hw==} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.12.1: - resolution: {integrity: sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==} + /@rollup/rollup-win32-arm64-msvc@4.13.0: + resolution: {integrity: sha512-46ue8ymtm/5PUU6pCvjlic0z82qWkxv54GTJZgHrQUuZnVH+tvvSP0LsozIDsCBFO4VjJ13N68wqrKSeScUKdA==} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.12.1: - resolution: {integrity: sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==} + /@rollup/rollup-win32-ia32-msvc@4.13.0: + resolution: {integrity: sha512-P5/MqLdLSlqxbeuJ3YDeX37srC8mCflSyTrUsgbU1c/U9j6l2g2GiIdYaGD9QjdMQPMSgYm7hgg0551wHyIluw==} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@rollup/rollup-win32-x64-msvc@4.12.1: - resolution: {integrity: sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==} + /@rollup/rollup-win32-x64-msvc@4.13.0: + resolution: {integrity: sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==} cpu: [x64] os: [win32] requiresBuild: true @@ -1394,13 +1394,13 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.11.25 + '@types/node': 20.11.27 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.11.25 + '@types/node': 20.11.27 dev: false /@types/estree@0.0.46: @@ -1413,7 +1413,7 @@ packages: /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 20.11.25 + '@types/node': 20.11.27 '@types/qs': 6.9.12 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -1433,7 +1433,7 @@ packages: requiresBuild: true dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.11.25 + '@types/node': 20.11.27 dev: false optional: true @@ -1459,8 +1459,8 @@ packages: dev: false optional: true - /@types/node@20.11.25: - resolution: {integrity: sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==} + /@types/node@20.11.27: + resolution: {integrity: sha512-qyUZfMnCg1KEz57r7pzFtSGt49f6RPkPBis3Vo4PbS7roQEDn22hiHzl/Lo1q4i4hDEgBJmBF/NTNg2XR0HbFg==} requiresBuild: true dependencies: undici-types: 5.26.5 @@ -1477,7 +1477,7 @@ packages: /@types/resolve@0.0.8: resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==} dependencies: - '@types/node': 20.11.25 + '@types/node': 20.11.27 dev: false /@types/semver@7.5.8: @@ -1488,7 +1488,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.11.25 + '@types/node': 20.11.27 dev: false /@types/serve-static@1.15.5: @@ -1496,7 +1496,7 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.11.25 + '@types/node': 20.11.27 dev: false /@types/uuid@9.0.8: @@ -1865,7 +1865,7 @@ packages: /ast-metadata-inferer@0.8.0: resolution: {integrity: sha512-jOMKcHht9LxYIEQu+RVd22vtgrPaVCtDRQ/16IGmurdzxvYbDd5ynxjnyrzLnieG96eTcAyaoj/wN/4/1FyyeA==} dependencies: - '@mdn/browser-compat-data': 5.5.14 + '@mdn/browser-compat-data': 5.5.15 dev: true /astring@1.8.6: @@ -1903,7 +1903,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001596 + caniuse-lite: 1.0.30001597 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -2028,8 +2028,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001596 - electron-to-chromium: 1.4.699 + caniuse-lite: 1.0.30001597 + electron-to-chromium: 1.4.704 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -2125,8 +2125,8 @@ packages: engines: {node: '>= 6'} dev: true - /caniuse-lite@1.0.30001596: - resolution: {integrity: sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==} + /caniuse-lite@1.0.30001597: + resolution: {integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==} /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -2615,8 +2615,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: false - /electron-to-chromium@1.4.699: - resolution: {integrity: sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==} + /electron-to-chromium@1.4.704: + resolution: {integrity: sha512-OK01+86Qvby1V6cTiowVbhp25aX4DLZnwar+NocAOXdzKAByd+jq5156bmo4kHwevWMknznW18Y/Svfk2dU91A==} /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2841,10 +2841,10 @@ packages: peerDependencies: eslint: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@mdn/browser-compat-data': 5.5.14 + '@mdn/browser-compat-data': 5.5.15 ast-metadata-inferer: 0.8.0 browserslist: 4.23.0 - caniuse-lite: 1.0.30001596 + caniuse-lite: 1.0.30001597 eslint: 8.57.0 find-up: 5.0.0 lodash.memoize: 4.1.2 @@ -3180,8 +3180,8 @@ packages: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fast-json-stringify@5.12.0: - resolution: {integrity: sha512-7Nnm9UPa7SfHRbHVA1kJQrGXCRzB7LMlAAqHXQFkEQqueJm1V8owm0FsE/2Do55/4CcdhwiLQERaKomOnKQkyA==} + /fast-json-stringify@5.13.0: + resolution: {integrity: sha512-XjTDWKHP3GoMQUOfnjYUbqeHeEt+PvYgvBdG2fRSmYaORILbSr8xTJvZX+w1YSAP5pw2NwKrGRmQleYueZEoxw==} dependencies: '@fastify/merge-json-schemas': 0.1.1 ajv: 8.12.0 @@ -3224,7 +3224,7 @@ packages: abstract-logging: 2.0.1 avvio: 8.3.0 fast-content-type-parse: 1.1.0 - fast-json-stringify: 5.12.0 + fast-json-stringify: 5.13.0 find-my-way: 8.1.0 light-my-request: 5.12.0 pino: 8.19.0 @@ -4188,8 +4188,8 @@ packages: type-check: 0.4.0 dev: true - /libcurl.js@0.5.1: - resolution: {integrity: sha512-tO6WLAQHt/4JWpGCxoaLd+C5lG2MVYM7Df7E68ElEO9YWxPNO0f4lEdy+NS6KyxfvVP0Il4PYlFnyXnoYvVWZA==} + /libcurl.js@0.5.3: + resolution: {integrity: sha512-tHa5c18irBGzafPKwGMBU7c9RMxAQfuf3BHTLgAHToNvJaFXUYRAsKXDqV2SWKLMm5OaW2b1XGu8MsfMh1b08A==} dev: false /lie@3.1.1: @@ -4387,7 +4387,7 @@ packages: '@babel/types': 7.24.0 kleur: 4.1.5 rollup: 3.29.4 - unplugin: 1.9.0 + unplugin: 1.10.0 transitivePeerDependencies: - supports-color dev: false @@ -5057,11 +5057,11 @@ packages: postcss: ^8.2.14 dependencies: postcss: 8.4.35 - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 dev: true - /postcss-selector-parser@6.0.15: - resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -5565,7 +5565,7 @@ packages: glob: 10.3.10 dev: false - /rollup-plugin-node-resolve@5.2.0(rollup@4.12.1): + /rollup-plugin-node-resolve@5.2.0(rollup@4.13.0): resolution: {integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve. peerDependencies: @@ -5575,11 +5575,11 @@ packages: builtin-modules: 3.3.0 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.12.1 + rollup: 4.13.0 rollup-pluginutils: 2.8.2 dev: false - /rollup-plugin-typescript2@0.36.0(rollup@4.12.1)(typescript@5.4.2): + /rollup-plugin-typescript2@0.36.0(rollup@4.13.0)(typescript@5.4.2): resolution: {integrity: sha512-NB2CSQDxSe9+Oe2ahZbf+B4bh7pHwjV5L+RSYpCu7Q5ROuN94F9b6ioWwKfz3ueL3KTtmX4o2MUH2cgHDIEUsw==} peerDependencies: rollup: '>=1.26.3' @@ -5588,7 +5588,7 @@ packages: '@rollup/pluginutils': 4.2.1 find-cache-dir: 3.3.2 fs-extra: 10.1.0 - rollup: 4.12.1 + rollup: 4.13.0 semver: 7.6.0 tslib: 2.6.2 typescript: 5.4.2 @@ -5608,26 +5608,26 @@ packages: fsevents: 2.3.3 dev: false - /rollup@4.12.1: - resolution: {integrity: sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==} + /rollup@4.13.0: + resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.12.1 - '@rollup/rollup-android-arm64': 4.12.1 - '@rollup/rollup-darwin-arm64': 4.12.1 - '@rollup/rollup-darwin-x64': 4.12.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.12.1 - '@rollup/rollup-linux-arm64-gnu': 4.12.1 - '@rollup/rollup-linux-arm64-musl': 4.12.1 - '@rollup/rollup-linux-riscv64-gnu': 4.12.1 - '@rollup/rollup-linux-x64-gnu': 4.12.1 - '@rollup/rollup-linux-x64-musl': 4.12.1 - '@rollup/rollup-win32-arm64-msvc': 4.12.1 - '@rollup/rollup-win32-ia32-msvc': 4.12.1 - '@rollup/rollup-win32-x64-msvc': 4.12.1 + '@rollup/rollup-android-arm-eabi': 4.13.0 + '@rollup/rollup-android-arm64': 4.13.0 + '@rollup/rollup-darwin-arm64': 4.13.0 + '@rollup/rollup-darwin-x64': 4.13.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.0 + '@rollup/rollup-linux-arm64-gnu': 4.13.0 + '@rollup/rollup-linux-arm64-musl': 4.13.0 + '@rollup/rollup-linux-riscv64-gnu': 4.13.0 + '@rollup/rollup-linux-x64-gnu': 4.13.0 + '@rollup/rollup-linux-x64-musl': 4.13.0 + '@rollup/rollup-win32-arm64-msvc': 4.13.0 + '@rollup/rollup-win32-ia32-msvc': 4.13.0 + '@rollup/rollup-win32-x64-msvc': 4.13.0 fsevents: 2.3.3 /run-applescript@5.0.0: @@ -6138,7 +6138,7 @@ packages: postcss-js: 4.0.1(postcss@8.4.35) postcss-load-config: 4.0.2(postcss@8.4.35) postcss-nested: 6.0.1(postcss@8.4.35) - postcss-selector-parser: 6.0.15 + postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: @@ -6449,8 +6449,8 @@ packages: engines: {node: '>= 0.8'} dev: false - /unplugin@1.9.0: - resolution: {integrity: sha512-14PslvMY3gNbXnQtNIRB566Q057L5Fe7f5LDEamxVi0QQVxoz5hrveBwwZLcKyHtZ09ysmipxRRj5Lv+BGz2Iw==} + /unplugin@1.10.0: + resolution: {integrity: sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==} engines: {node: '>=14.0.0'} dependencies: acorn: 8.11.3 @@ -6507,7 +6507,7 @@ packages: engines: {node: '>= 0.8'} dev: false - /vite-plugin-static-copy@1.0.1(vite@5.1.5): + /vite-plugin-static-copy@1.0.1(vite@5.1.6): resolution: {integrity: sha512-3eGL4mdZoPJMDBT68pv/XKIHR4MgVolStIxxv1gIBP4R8TpHn9C9EnaU0hesqlseJ4ycLGUxckFTu/jpuJXQlA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: @@ -6517,11 +6517,11 @@ packages: fast-glob: 3.3.2 fs-extra: 11.2.0 picocolors: 1.0.0 - vite: 5.1.5 + vite: 5.1.6 dev: true - /vite@5.1.5: - resolution: {integrity: sha512-BdN1xh0Of/oQafhU+FvopafUp6WaYenLU/NFoL5WyJL++GxkNfieKzBhM24H3HVsPQrlAqB7iJYTHabzaRed5Q==} + /vite@5.1.6: + resolution: {integrity: sha512-yYIAZs9nVfRJ/AiOLCA91zzhjsHUgMjB+EigzFb6W2XTLO8JixBCKCjvhKZaye+NKYHCrkv3Oh50dH9EdLU2RA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6550,7 +6550,7 @@ packages: dependencies: esbuild: 0.19.12 postcss: 8.4.35 - rollup: 4.12.1 + rollup: 4.13.0 optionalDependencies: fsevents: 2.3.3 dev: true diff --git a/src/pages/Settings/Proxy.tsx b/src/pages/Settings/Proxy.tsx index 451eb0b..bb0eac3 100644 --- a/src/pages/Settings/Proxy.tsx +++ b/src/pages/Settings/Proxy.tsx @@ -4,7 +4,7 @@ import Dropdown from "./Dropdown"; import BareInput from "./BareInput"; import WispInput from "./WispInput"; import ProxyInput from "./ProxyInput"; -import { changeTransport } from "../../util/transports"; +import TransportDropdown from "./transportDropdown"; import { useTranslation } from "react-i18next"; const Proxy = ({ id, active }) => { @@ -118,10 +118,10 @@ const Proxy = ({ id, active }) => {
Select the transport to use
- diff --git a/src/pages/Settings/transportDropdown.tsx b/src/pages/Settings/transportDropdown.tsx new file mode 100644 index 0000000..34e80e3 --- /dev/null +++ b/src/pages/Settings/transportDropdown.tsx @@ -0,0 +1,76 @@ +import { FaAngleDown } from "react-icons/fa"; +import { useState, useEffect } from "preact/hooks" +import { changeTransport } from "../../util/transports.ts"; +const wispUrl = localStorage.getItem("wispUrl") || (location.protocol === "https:" ? "wss://" : "ws://") + location.host + "/wisp/"; + +interface Option { + id: string; + label: string; // Translations CAN be passed +} + +const TransportDropdown = ({ + storageKey, + options, + refresh +}: { + storageKey: string; + options: Option[]; + refresh: boolean; +}) => { + const [isOpen, setIsOpen] = useState(false); + + const [choice, setChoice] = useState(() => { + return localStorage.getItem(storageKey) || options[0]?.id || ""; + }); + + // update on localstorage change + useEffect(() => { + setChoice(localStorage.getItem(storageKey) || options[0]?.id || ""); + }, [storageKey, options]); + + return ( +
+
setIsOpen(!isOpen)} + > +
+
+
+ {options.find((o) => o.id === choice)?.label} +
+
+ +
+
+ {isOpen && ( +
+ {options.map((option, index) => ( +
{ + setIsOpen(false); + setChoice(option.id); + localStorage.setItem(storageKey, option.id); + changeTransport(option.id, wispUrl); + if (refresh === true) { + window.location.reload(); + } + }} + > + {option.label} +
+ ))} +
+ )} +
+
+ ); +}; + +export default TransportDropdown; diff --git a/src/routes.tsx b/src/routes.tsx index df9bc6c..545a53d 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -8,6 +8,9 @@ import { Settings } from "./pages/Settings/"; import { AboutBlank } from "./AboutBlank"; import { Faq } from "./pages/Faq"; +//import the transport util +import { setTransport } from "./util/transports"; + import "./style.css"; import "./i18n"; @@ -19,7 +22,8 @@ export default function Routes() { scope: "/~/" }) .then(() => { - console.log("Service worker registered successfully"); + console.log("Service worker registered successfully setting transport"); + setTransport(); }); }); } diff --git a/src/util/transports.ts b/src/util/transports.ts index bd16c8d..48cf10b 100644 --- a/src/util/transports.ts +++ b/src/util/transports.ts @@ -2,7 +2,7 @@ import { SetTransport, registerRemoteListener } from "@mercuryworkshop/bare-mux"; -import { isIOS } from "./IosDetector"; +//import { isIOS } from "./IosDetector"; function changeTransport(transport: string, wispUrl: string) { switch (transport) { @@ -16,7 +16,7 @@ function changeTransport(transport: string, wispUrl: string) { console.log("Setting transport to Libcurl"); SetTransport("CurlMod.LibcurlClient", { wisp: wispUrl, - wasm: "https://cdn.jsdelivr.net/npm/libcurl.js@v0.5.2/libcurl.wasm" + wasm: "https://cdn.jsdelivr.net/npm/libcurl.js@v0.5.3/libcurl.wasm" }); break; case "bare": @@ -30,7 +30,7 @@ function changeTransport(transport: string, wispUrl: string) { default: SetTransport("CurlMod.LibcurlClient", { wisp: wispUrl, - wasm: "/libcurl.wasm" + wasm: "https://cdn.jsdelivr.net/npm/libcurl.js@v0.5.3/libcurl.wasm" }); break; } @@ -46,17 +46,30 @@ const wispUrl = "/wisp/"; registerRemoteListener(navigator.serviceWorker.controller!); -if (isIOS) { - console.log("iOS device detected. Bare will be used."); +//if (isIOS) { +// console.log("iOS device detected. Bare will be used."); +// changeTransport( +// localStorage.getItem("transport") || "libcurl", +// localStorage.getItem("wispUrl") || wispUrl +// ); +//} else { +// changeTransport( +// localStorage.getItem("transport") || "bare", +// localStorage.getItem("wispUrl") || wispUrl +// ); +//} + +//changeTransport( +// localStorage.getItem("transport") || "libcurl", +// localStorage.getItem("wispUrl") || wispUrl +//); + +// helper function for ../routes.tsx +function setTransport() { changeTransport( localStorage.getItem("transport") || "libcurl", localStorage.getItem("wispUrl") || wispUrl ); -} else { - changeTransport( - localStorage.getItem("transport") || "bare", - localStorage.getItem("wispUrl") || wispUrl - ); } -export { changeTransport, getTransport }; +export { changeTransport, getTransport, setTransport };