From 6a8a8cc5b5f1367cda5dd56cf68fae79bf82ae77 Mon Sep 17 00:00:00 2001 From: Graham Kelly Date: Tue, 15 Jul 2025 20:56:44 +0000 Subject: [PATCH] switch to parcel and ts --- .gitignore | 2 + index.html | 4 +- package-lock.json | 3349 ++++++++++++++++++++++++++++++++++++++++ package.json | 28 + script.js => script.ts | 702 +++++---- 5 files changed, 3740 insertions(+), 345 deletions(-) create mode 100644 .gitignore create mode 100644 package-lock.json create mode 100644 package.json rename script.js => script.ts (78%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d61eed7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +.parcel-cache diff --git a/index.html b/index.html index 04517dd..c0eb600 100644 --- a/index.html +++ b/index.html @@ -14,7 +14,7 @@ gtag('js', new Date()); gtag('config', 'G-8VVWXBH142'); - + @@ -134,6 +134,6 @@

Here is the data URL for this session (HTML):

send - + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f4bdbbb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3349 @@ +{ + "name": "helios", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "helios", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "axios": "^1.10.0" + }, + "devDependencies": { + "parcel": "^2.15.4" + } + }, + "node_modules/@lezer/common": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lmdb/lmdb-darwin-arm64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-2.8.5.tgz", + "integrity": "sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-darwin-x64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-2.8.5.tgz", + "integrity": "sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-2.8.5.tgz", + "integrity": "sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-arm64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-2.8.5.tgz", + "integrity": "sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-linux-x64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-2.8.5.tgz", + "integrity": "sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@lmdb/lmdb-win32-x64": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.8.5.tgz", + "integrity": "sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@mischnic/json-sourcemap": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz", + "integrity": "sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0", + "@lezer/lr": "^1.0.0", + "json5": "^2.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", + "integrity": "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", + "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", + "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", + "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", + "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", + "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@parcel/bundler-default": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/bundler-default/-/bundler-default-2.15.4.tgz", + "integrity": "sha512-4vkaZuwGqL8L7NqEgjRznz9/QoeVKk0Z6z2nzfpdnSWA4xX3moUj+JeoqGUbyFGuPzfCma4SA4+txnQbKu0edQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/graph": "3.5.4", + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/utils": "2.15.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/cache": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/cache/-/cache-2.15.4.tgz", + "integrity": "sha512-x/QgMuVvXQV6uNhIF+6kz6SzhVVkwf6WPSVG/xQvGMEiBabForDVYIhIEuN3RzUXCU352CGM6d8TtLLg61W1fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/fs": "2.15.4", + "@parcel/logger": "2.15.4", + "@parcel/utils": "2.15.4", + "lmdb": "2.8.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.15.4" + } + }, + "node_modules/@parcel/codeframe": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/codeframe/-/codeframe-2.15.4.tgz", + "integrity": "sha512-ErAPEQaJIpB+ocNZ3rl8AEK6piA7JBInwZLNU0eHMthm01Ssb10JkpAadyn1w9IVfCey+kqQcEeWv47Yh6mL1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/compressor-raw": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/compressor-raw/-/compressor-raw-2.15.4.tgz", + "integrity": "sha512-gECePZxVXBwyo0DYbAq4V4SimVzHaJ3p8QOgFIfOqNmlEBbhLf3QSjArFPJNKiHZaJuclh4a+IShFBN+u6tXXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/config-default": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/config-default/-/config-default-2.15.4.tgz", + "integrity": "sha512-chUE4NpcSXpMfTcSmgl4Q78zH+ZFe0qdgZLBtF4EH2QQakW7wAXAYRxS2/P3xFkUj0/51sExhbCFWgulrlGDPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/bundler-default": "2.15.4", + "@parcel/compressor-raw": "2.15.4", + "@parcel/namer-default": "2.15.4", + "@parcel/optimizer-css": "2.15.4", + "@parcel/optimizer-html": "2.15.4", + "@parcel/optimizer-image": "2.15.4", + "@parcel/optimizer-svg": "2.15.4", + "@parcel/optimizer-swc": "2.15.4", + "@parcel/packager-css": "2.15.4", + "@parcel/packager-html": "2.15.4", + "@parcel/packager-js": "2.15.4", + "@parcel/packager-raw": "2.15.4", + "@parcel/packager-svg": "2.15.4", + "@parcel/packager-wasm": "2.15.4", + "@parcel/reporter-dev-server": "2.15.4", + "@parcel/resolver-default": "2.15.4", + "@parcel/runtime-browser-hmr": "2.15.4", + "@parcel/runtime-js": "2.15.4", + "@parcel/runtime-rsc": "2.15.4", + "@parcel/runtime-service-worker": "2.15.4", + "@parcel/transformer-babel": "2.15.4", + "@parcel/transformer-css": "2.15.4", + "@parcel/transformer-html": "2.15.4", + "@parcel/transformer-image": "2.15.4", + "@parcel/transformer-js": "2.15.4", + "@parcel/transformer-json": "2.15.4", + "@parcel/transformer-node": "2.15.4", + "@parcel/transformer-postcss": "2.15.4", + "@parcel/transformer-posthtml": "2.15.4", + "@parcel/transformer-raw": "2.15.4", + "@parcel/transformer-react-refresh-wrap": "2.15.4", + "@parcel/transformer-svg": "2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.15.4" + } + }, + "node_modules/@parcel/core": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/core/-/core-2.15.4.tgz", + "integrity": "sha512-+TXxTm58lFwXXObFAEclwKX1p1AdixcD+M7T4NeFIQzQ4F20Vr+6oybCSqW1exNA3uHqVDDFLx7TT78seVjvkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.1", + "@parcel/cache": "2.15.4", + "@parcel/diagnostic": "2.15.4", + "@parcel/events": "2.15.4", + "@parcel/feature-flags": "2.15.4", + "@parcel/fs": "2.15.4", + "@parcel/graph": "3.5.4", + "@parcel/logger": "2.15.4", + "@parcel/package-manager": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/profiler": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/source-map": "^2.1.1", + "@parcel/types": "2.15.4", + "@parcel/utils": "2.15.4", + "@parcel/workers": "2.15.4", + "base-x": "^3.0.11", + "browserslist": "^4.24.5", + "clone": "^2.1.2", + "dotenv": "^16.5.0", + "dotenv-expand": "^11.0.7", + "json5": "^2.2.3", + "msgpackr": "^1.11.2", + "nullthrows": "^1.1.1", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/diagnostic": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/diagnostic/-/diagnostic-2.15.4.tgz", + "integrity": "sha512-8MAqefwzBKceNN3364OLm+p4HRD7AfimfFW3MntLxPB6bnelc9UBg5c9zEm34zYEctbmky8gqYgAUSDjqYC5Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/error-overlay": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/error-overlay/-/error-overlay-2.15.4.tgz", + "integrity": "sha512-xxeaWm8fV8Z4uGy/c09mOvmFSHBOgF1gCMQwLCwZvfMLqIWkdZaUQ2cRhWZIS6pOXaRVC7YpcXzk2DOiSUNSbQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/events": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/events/-/events-2.15.4.tgz", + "integrity": "sha512-SBq4zstaFr7XQaXNaQmUuVh1swCUHrhtPCOSofvkJoQGhjsuhQlh4t0NmUikyKNdj7C1j40xCS1kGHuUO29b0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/feature-flags": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/feature-flags/-/feature-flags-2.15.4.tgz", + "integrity": "sha512-DJqZVtbfjWJseM0gk7yyDkAuOhP7/FVwZ/YVqjozIqXBhmQm07xctiqNQyZX2vBbQsxmVbjpqyq+DOj45WPEzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/fs": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-2.15.4.tgz", + "integrity": "sha512-5cahD2ByQaSi+YN0aDvrMWXZvs3mP7C5ey8zcDTDn7JxJa51sMqOQcdU3VUTzQFtAPeRM2KxUkxLhBBXgQqHZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/feature-flags": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/types-internal": "2.15.4", + "@parcel/utils": "2.15.4", + "@parcel/watcher": "^2.0.7", + "@parcel/workers": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.15.4" + } + }, + "node_modules/@parcel/graph": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@parcel/graph/-/graph-3.5.4.tgz", + "integrity": "sha512-uF7kyQXWK2fQZvG5eE0N3avYGLQE5Q0vyJsyypNcFW3kXNnrkZCUtbG7urmdae9mmZ2jXIVN4q4Bhd9pefGj9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/feature-flags": "2.15.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/logger": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-2.15.4.tgz", + "integrity": "sha512-rQ7F5+FMQ7t+w5NGFRT8CWHhym0aunduufCjlafvRzUSKEN/5/nwTfCe9I5QsthGlXJWs+ZTy4zQ+wLtZQRBKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/events": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/markdown-ansi": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/markdown-ansi/-/markdown-ansi-2.15.4.tgz", + "integrity": "sha512-u5Lwcr4ZVBSLFbKYht+mJqJ3ZMXvJdmDMU5eDtrIEKPpu9LrIDdPpDEXBoyO6pDsoV/2AqyXUUMzBRyCatkkoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/namer-default": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/namer-default/-/namer-default-2.15.4.tgz", + "integrity": "sha512-EXsoQ1S+5ZIfy8431E7F0vVS7bfH5JpZ+vFVcUpArJDkhmMG7T/eP6Kp9CXHLJmn7ki1x7iIVytrja0XXRQWBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/node-resolver-core": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@parcel/node-resolver-core/-/node-resolver-core-3.6.4.tgz", + "integrity": "sha512-g3+usMnr7pfRqbMAksOpNA7GJk7HUNW1Wxx7Shhp4w0K9JUdVrd2LRKwZxbqL7H9NqWtVvUOT9cZbMlDR6bO1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mischnic/json-sourcemap": "^0.1.1", + "@parcel/diagnostic": "2.15.4", + "@parcel/fs": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/utils": "2.15.4", + "nullthrows": "^1.1.1", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-css": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-css/-/optimizer-css-2.15.4.tgz", + "integrity": "sha512-KQLuqwcvVFTNFtM+bzfvQivwunmhVAngmR4NiI8zQaykidYH28V8YkVAQmpbLbgoGad/UgG7grb0UshvnrQHpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.15.4", + "browserslist": "^4.24.5", + "lightningcss": "^1.30.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-html": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-html/-/optimizer-html-2.15.4.tgz", + "integrity": "sha512-gBvt6RdDVMyO1Flvdtc8DxpxLgIXhaKuVXEjHdAP7sEW0SMdSd6r/tl6Plmcszig7sDwhDf6IsQOIvbzGHYZZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/utils": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-image": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-image/-/optimizer-image-2.15.4.tgz", + "integrity": "sha512-M8fo7eEL6JRcmLhSX9pUUGU4MPrPrE9cMNcwIt3DQLnSvQ+sshhUDa6t9hKWeHHhs16BHvxrvksN2TIbkgHODQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/utils": "2.15.4", + "@parcel/workers": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.15.4" + } + }, + "node_modules/@parcel/optimizer-svg": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-svg/-/optimizer-svg-2.15.4.tgz", + "integrity": "sha512-pPdjRaLPqjAEROXIHLc6JWLLki56alhuUNbalhLqBCgktZrrq2dGCjBEVgxqRczc9D+ePCX/e/xci4tC0Tkcbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/utils": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/optimizer-swc": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/optimizer-swc/-/optimizer-swc-2.15.4.tgz", + "integrity": "sha512-2m5cYESVCq6AGx252eSTArZ1Oc1Ve4GBGL7NhvgbNqOthyXlc2qAed6rCkARrBd8pfEl5+2XHeK1ijDAZdIZ/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.15.4", + "@swc/core": "^1.11.24", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/package-manager": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/package-manager/-/package-manager-2.15.4.tgz", + "integrity": "sha512-KZONBcEJ24moQdrpU0zJh9CYk3KKbpB5RUM70utAORem1yQKms+0Y4YED3njq6nZzbgwUN/Csc+powUHLZStvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/fs": "2.15.4", + "@parcel/logger": "2.15.4", + "@parcel/node-resolver-core": "3.6.4", + "@parcel/types": "2.15.4", + "@parcel/utils": "2.15.4", + "@parcel/workers": "2.15.4", + "@swc/core": "^1.11.24", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.15.4" + } + }, + "node_modules/@parcel/packager-css": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/packager-css/-/packager-css-2.15.4.tgz", + "integrity": "sha512-bzSaNf+I5lmJFu95wSG2k7pGwjCDesZsV6Y9sozIL2LoSxqvkGhm/ABXAa3Ed7dLe3tSAEBzJcyqShQgLzSzuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.15.4", + "lightningcss": "^1.30.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-html": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/packager-html/-/packager-html-2.15.4.tgz", + "integrity": "sha512-Uayux6A2Anm66Kmq22QhD0TuVp9LiRCMuPUzBd6n4ekNlG0Lzm6K3/okMkPG65nKbNjq5qcPscFWlDxggvjt2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/types": "2.15.4", + "@parcel/utils": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-js": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/packager-js/-/packager-js-2.15.4.tgz", + "integrity": "sha512-96bqhs1jyd28CfWQD+Yn8rSsd1ar7voHWyBtMLimsK+bDJIzL26Z7jWyRDwXRuLErYC01EoXRIRctxtmeRVJ2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/source-map": "^2.1.1", + "@parcel/types": "2.15.4", + "@parcel/utils": "2.15.4", + "globals": "^13.24.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-raw": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/packager-raw/-/packager-raw-2.15.4.tgz", + "integrity": "sha512-CaSpDt5jjcO0SYCtsDhw6yfTDQuDFQ875H42W/ftvSQL7RfLRljPthnbdcy9chvKBbvRBQF+0z8Sxwehrd5hsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-svg": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/packager-svg/-/packager-svg-2.15.4.tgz", + "integrity": "sha512-qHsyOgnzoA2XGMLIYUnX79XAaV327VTWQvIzju/OmOjcff4o3uiEcNL8w9k3p2w2oPXOLoQ0THMiivoUQSM8GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/types": "2.15.4", + "@parcel/utils": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/packager-wasm": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/packager-wasm/-/packager-wasm-2.15.4.tgz", + "integrity": "sha512-YPVij7zrBchtXr/y29P4uh3C/+19PMhhLibYF/8oMJKkFkeU3Uv00/XLm915vdBPrIPjgw0YuIfLzUKip1uGtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4" + }, + "engines": { + "node": ">=16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/plugin": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/plugin/-/plugin-2.15.4.tgz", + "integrity": "sha512-XVehjmzk8ZDOFf/BXo26L76ZqCGNKIQcN2ngxAnq0KRY/WFanL8yLaL0qQq+c9whlu09hkGz1CuhFBLAIjJMYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/types": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/profiler": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/profiler/-/profiler-2.15.4.tgz", + "integrity": "sha512-ezVZlttUmQ1MQD5e8yVb07vSGYEFOB59Y/jaxL9mGSLZkVhMIIHe/7SuA+4qVAH8dlg6bslXRqlsunLMPEgPsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/events": "2.15.4", + "@parcel/types-internal": "2.15.4", + "chrome-trace-event": "^1.0.2" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/reporter-cli": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/reporter-cli/-/reporter-cli-2.15.4.tgz", + "integrity": "sha512-us0HIwuJqpSguf+yi4n8foabVs26JGvRB/eSOf0KkRldxFciYLn4NJ8rt3Xm1zvxlDiSkD4v2n77u+ouIZ+AEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/types": "2.15.4", + "@parcel/utils": "2.15.4", + "chalk": "^4.1.2", + "term-size": "^2.2.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/reporter-dev-server": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/reporter-dev-server/-/reporter-dev-server-2.15.4.tgz", + "integrity": "sha512-uCNeDyArNNXI9YThlxyTx7+5ZSxlewyUdyrLdDZCqvn8s1xNB9W8sUNVps7mJZQSc+2ZRk3wyDemURD67uJk/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/codeframe": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/reporter-tracer": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/reporter-tracer/-/reporter-tracer-2.15.4.tgz", + "integrity": "sha512-9W1xsb/FtobCQ4z847nI6hFDaTZHLeThv/z05EF77R30RX2k+unG9ac5NQB1v4KLx09Bhfre32+sjYNReWxWlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/utils": "2.15.4", + "chrome-trace-event": "^1.0.3", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/resolver-default": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/resolver-default/-/resolver-default-2.15.4.tgz", + "integrity": "sha512-4uKo3FFnubtIc4rM9jZiQQXpa1slawyRy5btJEfTFvbcnz0dm3WThLrsPDMfmPwNr9F/n5x8yzDLI6/fZ/elgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/node-resolver-core": "3.6.4", + "@parcel/plugin": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-browser-hmr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.15.4.tgz", + "integrity": "sha512-KRGzbxDUOQUkrJKxxY0WyU7oVaa9TvWTRlpuGJXzQJs/hw8vkAAoAm8+ptpypvBC8LnxFHzGbSyHPfL8C8MQOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/utils": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-js": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/runtime-js/-/runtime-js-2.15.4.tgz", + "integrity": "sha512-zNRK+693CMkYiA0ckjPOmz+JVHD9bVzp27itcMyuDH6l/Or8m09RgCC4DIdIxBqiplsDSe39DwEc5X7b0vvcjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/utils": "2.15.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-rsc": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/runtime-rsc/-/runtime-rsc-2.15.4.tgz", + "integrity": "sha512-yHc4HEwzCQYLqa6Q1WtZ8xJeaDAk0p2i0b3ABq2I+izmRjer4jertlsEwh9mf9Z1eUGtJobdGYzl8Ai1VfhC3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/utils": "2.15.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 12.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/runtime-service-worker": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/runtime-service-worker/-/runtime-service-worker-2.15.4.tgz", + "integrity": "sha512-NGq/wS34GIVzo2ZURBjCqgHV+PU7eTcngCzmmk/wrCEeWnr13ld+CAIxVZoqyNJwYsF6VQanrjSM2/LhCXEdyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/utils": "2.15.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/rust/-/rust-2.15.4.tgz", + "integrity": "sha512-OxOux8z8YEYg23+15uMmYaloFp3x1RwcliBay6HqxUW7RTmtI1/z+xd8AtienCckACD60gvDGy04LjgbEGdJVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/rust-darwin-arm64": "2.15.4", + "@parcel/rust-darwin-x64": "2.15.4", + "@parcel/rust-linux-arm-gnueabihf": "2.15.4", + "@parcel/rust-linux-arm64-gnu": "2.15.4", + "@parcel/rust-linux-arm64-musl": "2.15.4", + "@parcel/rust-linux-x64-gnu": "2.15.4", + "@parcel/rust-linux-x64-musl": "2.15.4", + "@parcel/rust-win32-x64-msvc": "2.15.4" + }, + "peerDependencies": { + "napi-wasm": "^1.1.2" + }, + "peerDependenciesMeta": { + "napi-wasm": { + "optional": true + } + } + }, + "node_modules/@parcel/rust-darwin-arm64": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/rust-darwin-arm64/-/rust-darwin-arm64-2.15.4.tgz", + "integrity": "sha512-cEpNDeEtvM5Nhj0QLN95QbcZ9yY6Z5W3+2OeHvnojEAP8Rp1XGzqVTTZdlyKyN1KTiyfzIOiQJCiEcr+kMc5Nw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-darwin-x64": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/rust-darwin-x64/-/rust-darwin-x64-2.15.4.tgz", + "integrity": "sha512-jL9i13sXKeBXXz8Z3BNYoScPOi+ljBA0ubAE3PN5DCoAA6wS4/FsAiRSIUw+3uxqASBD7+JvaT5sDUga1Xft5g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-linux-arm-gnueabihf": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/rust-linux-arm-gnueabihf/-/rust-linux-arm-gnueabihf-2.15.4.tgz", + "integrity": "sha512-c8HpVdDugCutlMILoOlkTioih9HGJpQrzS2G3cg/O1a5ZTacooGf3eGJGoh6dUBEv9WEaEb6zsTRwFv2BgtZcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-linux-arm64-gnu": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/rust-linux-arm64-gnu/-/rust-linux-arm64-gnu-2.15.4.tgz", + "integrity": "sha512-Wcfs/JY4FnuLxQaU+VX2rI4j376Qo2LkZmq4zp9frnsajaAqmloVQfnbUkdnQPEL4I38eHXerzBX3LoXSxnZKA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-linux-arm64-musl": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/rust-linux-arm64-musl/-/rust-linux-arm64-musl-2.15.4.tgz", + "integrity": "sha512-xf9HxosEn3dU5M0zDSXqBaG8rEjLThRdTYqpkxHW/qQGzy0Se+/ntg8PeDHsSG5E9OK8xrcKH46Lhaw0QBF/Zw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-linux-x64-gnu": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/rust-linux-x64-gnu/-/rust-linux-x64-gnu-2.15.4.tgz", + "integrity": "sha512-RigXVCFj6h0AXmkuxU61rfgYuW+PXBR6qSkR2I20yKnAXoMfxLaZy9YJ3sAPMEjT9zXgzGAX+3syItMF+bRjaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-linux-x64-musl": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/rust-linux-x64-musl/-/rust-linux-x64-musl-2.15.4.tgz", + "integrity": "sha512-tHlRgonSr5ca8OvhbGzZUggCgCOirRz5dHhPSCm4ajMxeDMamwprq6lKy0sCNTXht4TXIEyugBcfEuRKEeVIBw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/rust-win32-x64-msvc": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/rust-win32-x64-msvc/-/rust-win32-x64-msvc-2.15.4.tgz", + "integrity": "sha512-YsX6vMl/bfyxqZSN7yiaZQKLoJKELSZYcvg8gIv4CF1xkaTdmfr6gvq2iCyoV+bwrodNohN4Xfl8r7Wniu1/UA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/source-map": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@parcel/source-map/-/source-map-2.1.1.tgz", + "integrity": "sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": "^12.18.3 || >=14" + } + }, + "node_modules/@parcel/transformer-babel": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-babel/-/transformer-babel-2.15.4.tgz", + "integrity": "sha512-rb4nqZcTLkLD3nvuYJ9wwNb8x6cajBK2l6csdYMLEI4516SkIzkO/gs2cZ9M5q+CMhxAqpdEnrwektbOtQQasg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.15.4", + "browserslist": "^4.24.5", + "json5": "^2.2.3", + "nullthrows": "^1.1.1", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-css": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-css/-/transformer-css-2.15.4.tgz", + "integrity": "sha512-6tVwSJsOssXgcB5XMAQGsexAffoBEi8GVql3YQqzI1EwVYs9zr+B5mfbesb4aWcegR02w99NHJYFP9CrOr3SWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.15.4", + "browserslist": "^4.24.5", + "lightningcss": "^1.30.1", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-html": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-html/-/transformer-html-2.15.4.tgz", + "integrity": "sha512-gzYPbbyEuV8nzPojw86eD5Kf93AYUWcY8lu33gu0XHROJH7mq5MAwPwtb/U+EfpeCd0/oKbLzA2mkQksM1NncQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-image": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-image/-/transformer-image-2.15.4.tgz", + "integrity": "sha512-KOVwj2gKjUybuzHwarC/YVqRf3r2BD4/2ysckozj6DIji/bq3fd2rE9yqxWXO+zt918PsOSTzMKwRnaseaXLKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/utils": "2.15.4", + "@parcel/workers": "2.15.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "peerDependencies": { + "@parcel/core": "^2.15.4" + } + }, + "node_modules/@parcel/transformer-js": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-js/-/transformer-js-2.15.4.tgz", + "integrity": "sha512-HX76PalPjqCLmXJnuSeMr2km8WlnUsW8oaRZ6FuZtSo9QD8BqIcwKGxSbIy9JHkObBgmrMOVpGtYrJM4/BlYbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/source-map": "^2.1.1", + "@parcel/utils": "2.15.4", + "@parcel/workers": "2.15.4", + "@swc/helpers": "^0.5.0", + "browserslist": "^4.24.5", + "nullthrows": "^1.1.1", + "regenerator-runtime": "^0.14.1", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.15.4" + } + }, + "node_modules/@parcel/transformer-json": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-json/-/transformer-json-2.15.4.tgz", + "integrity": "sha512-1ASeOSH3gPeaXyy/TZ7ce2TOfJ3ZeK5SBnDs+MM8LFcQsTwdRJKjX/4Qq9RgtMRryYAGHgMa09Gvp9FuFRyd+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "json5": "^2.2.3" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-node": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-node/-/transformer-node-2.15.4.tgz", + "integrity": "sha512-zV5jvZA971eQMcFtaWZkW1UfAH/G6XVM/87oJ2B4ip9o9aKUWIl296rrfg2xWxUQyPhy11B17CJ6b8NgieqqrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-postcss": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-postcss/-/transformer-postcss-2.15.4.tgz", + "integrity": "sha512-cNueSpOj3ulmMX85xr9clh/t0+mzVE+Q3H7Cf/OammqUkG/xjmilq4q7ZTgQFyUtUdWpE9LWWHojbJuz6k2Ulw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/utils": "2.15.4", + "clone": "^2.1.2", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "semver": "^7.7.1" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-posthtml": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-posthtml/-/transformer-posthtml-2.15.4.tgz", + "integrity": "sha512-dETI+CeKMwu5Dpvu8BrQtex6nwzbNWKQkXseiM5x6+Wf3j9RD2NVpAMBRMjLkw1XlC9Whz1egxLSgKlMKbjg0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4", + "@parcel/utils": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-raw": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-raw/-/transformer-raw-2.15.4.tgz", + "integrity": "sha512-pY2j09UCW2v1fwQtVLlCztSdPOxhq0YcWmTHCk/mRp8zuUR+eyHgsz48FrUxRF7cr/EBjc0zlFcregRMRcaTMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/plugin": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-react-refresh-wrap": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.15.4.tgz", + "integrity": "sha512-MgoQrV8+BVjrczAns5ZZbTERGB3/U4MaCBmbg3CuiTiIyS8IJQnGi+OhYRdKAB4NlsgpMZ5T2JrRbQUIm9MM8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/error-overlay": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/utils": "2.15.4", + "react-refresh": "^0.16.0" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/transformer-svg": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/transformer-svg/-/transformer-svg-2.15.4.tgz", + "integrity": "sha512-Q22e0VRbx62VXFlvJWIlc8ihlLaPQgtnAZz5E1/+ojiNb+k0PmIRjNJclVWPF6IdCsLO5tnGfUOaXe2OnZz28Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/plugin": "2.15.4", + "@parcel/rust": "2.15.4" + }, + "engines": { + "node": ">= 16.0.0", + "parcel": "^2.15.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/types": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/types/-/types-2.15.4.tgz", + "integrity": "sha512-fS3UMMinLtzn/NTSx/qx38saBgRniylldh0XZEUcGeME4D2Llu/QlLv+YZ/LJqrFci3fPRM+YAn2K+JT/u+/0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/types-internal": "2.15.4", + "@parcel/workers": "2.15.4" + } + }, + "node_modules/@parcel/types-internal": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/types-internal/-/types-internal-2.15.4.tgz", + "integrity": "sha512-kl5QEZ8PTWRvMkwmk7IG3VpP/5/MSGwt9Nrj9ctXLdZkDdXZpK7IbXAthLQ4zrByMaqZULL2IyDuBqBgfuAqlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/feature-flags": "2.15.4", + "@parcel/source-map": "^2.1.1", + "utility-types": "^3.11.0" + } + }, + "node_modules/@parcel/utils": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-2.15.4.tgz", + "integrity": "sha512-29m09sfPx0GHnmy1kkZ5XezprepdFGKKKUEJkyiYA4ERf55jjdnU2/GP4sWlZXxjh2Y+JFoCAFlCamEClq/8eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/codeframe": "2.15.4", + "@parcel/diagnostic": "2.15.4", + "@parcel/logger": "2.15.4", + "@parcel/markdown-ansi": "2.15.4", + "@parcel/rust": "2.15.4", + "@parcel/source-map": "^2.1.1", + "chalk": "^4.1.2", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/workers": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-2.15.4.tgz", + "integrity": "sha512-wZ/5/mfjs5aeqhXY0c6fwuaBFeNpOXoOq2CKPSMDXt+GX2u/9/1bpVxN9XeGTAJO+ZD++CLq0hyzTnIHy58nyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/diagnostic": "2.15.4", + "@parcel/logger": "2.15.4", + "@parcel/profiler": "2.15.4", + "@parcel/types-internal": "2.15.4", + "@parcel/utils": "2.15.4", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "peerDependencies": { + "@parcel/core": "^2.15.4" + } + }, + "node_modules/@swc/core": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.12.14.tgz", + "integrity": "sha512-CJSn2vstd17ddWIHBsjuD4OQnn9krQfaq6EO+w9YfId5DKznyPmzxAARlOXG99cC8/3Kli8ysKy6phL43bSr0w==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.23" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.12.14", + "@swc/core-darwin-x64": "1.12.14", + "@swc/core-linux-arm-gnueabihf": "1.12.14", + "@swc/core-linux-arm64-gnu": "1.12.14", + "@swc/core-linux-arm64-musl": "1.12.14", + "@swc/core-linux-x64-gnu": "1.12.14", + "@swc/core-linux-x64-musl": "1.12.14", + "@swc/core-win32-arm64-msvc": "1.12.14", + "@swc/core-win32-ia32-msvc": "1.12.14", + "@swc/core-win32-x64-msvc": "1.12.14" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.12.14.tgz", + "integrity": "sha512-HNukQoOKgMsHSETj8vgGGKK3SEcH7Cz6k4bpntCxBKNkO3sH7RcBTDulWGGHJfZaDNix7Rw2ExUVWtLZlzkzXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.12.14.tgz", + "integrity": "sha512-4Ttf3Obtk3MvFrR0e04qr6HfXh4L1Z+K3dRej63TAFuYpo+cPXeOZdPUddAW73lSUGkj+61IHnGPoXD3OQYy4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.12.14.tgz", + "integrity": "sha512-zhJOH2KWjtQpzJ27Xjw/RKLVOa1aiEJC2b70xbCwEX6ZTVAl8tKbhkZ3GMphhfVmLJ9gf/2UQR58oxVnsXqX5Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.12.14.tgz", + "integrity": "sha512-akUAe1YrBqZf1EDdUxahQ8QZnJi8Ts6Ya0jf6GBIMvnXL4Y6QIuvKTRwfNxy7rJ+x9zpzP1Vlh14ZZkSKZ1EGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.12.14.tgz", + "integrity": "sha512-ZkOOIpSMXuPAjfOXEIAEQcrPOgLi6CaXvA5W+GYnpIpFG21Nd0qb0WbwFRv4K8BRtl993Q21v0gPpOaFHU+wdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.12.14.tgz", + "integrity": "sha512-71EPPccwJiJUxd2aMwNlTfom2mqWEWYGdbeTju01tzSHsEuD7E6ePlgC3P3ngBqB3urj41qKs87z7zPOswT5Iw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.12.14.tgz", + "integrity": "sha512-nImF1hZJqKTcl0WWjHqlelOhvuB9rU9kHIw/CmISBUZXogjLIvGyop1TtJNz0ULcz2Oxr3Q2YpwfrzsgvgbGkA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.12.14.tgz", + "integrity": "sha512-sABFQFxSuStFoxvEWZUHWYldtB1B4A9eDNFd4Ty50q7cemxp7uoscFoaCqfXSGNBwwBwpS5EiPB6YN4y6hqmLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.12.14.tgz", + "integrity": "sha512-KBznRB02NASkpepRdWIK4f1AvmaJCDipKWdW1M1xV9QL2tE4aySJFojVuG1+t0tVDkjRfwcZjycQfRoJ4RjD7Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.12.14", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.12.14.tgz", + "integrity": "sha512-SymoP2CJHzrYaFKjWvuQljcF7BkTpzaS1vpywv7K9EzdTb5N8qPDvNd+PhWUqBz9JHBhbJxpaeTDQBXF/WWPmw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@swc/types": { + "version": "0.1.23", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.23.tgz", + "integrity": "sha512-u1iIVZV9Q0jxY+yM2vw/hZGDNudsN85bBpTqzAQ9rzkxW9D+e3aEM4Han+ow518gSewkXgjmEK0BD79ZcNVgPw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", + "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/base-x": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", + "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.184", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.184.tgz", + "integrity": "sha512-zlaUk/wwnR/27FHNarzOtMgfxD1Q0/2Aby7PnURumQTal7yauqQ3c2HHcG/pjLFTvF3AWv44kMWyArVlfHeDlw==", + "dev": true, + "license": "ISC" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/lmdb": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-2.8.5.tgz", + "integrity": "sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "msgpackr": "^1.9.5", + "node-addon-api": "^6.1.0", + "node-gyp-build-optional-packages": "5.1.1", + "ordered-binary": "^1.4.1", + "weak-lru-cache": "^1.2.2" + }, + "bin": { + "download-lmdb-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@lmdb/lmdb-darwin-arm64": "2.8.5", + "@lmdb/lmdb-darwin-x64": "2.8.5", + "@lmdb/lmdb-linux-arm": "2.8.5", + "@lmdb/lmdb-linux-arm64": "2.8.5", + "@lmdb/lmdb-linux-x64": "2.8.5", + "@lmdb/lmdb-win32-x64": "2.8.5" + } + }, + "node_modules/lmdb/node_modules/node-addon-api": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/msgpackr": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-1.11.4.tgz", + "integrity": "sha512-uaff7RG9VIC4jacFW9xzL3jc0iM32DNHe4jYVycBcjUePT/Klnfj7pqtWJt9khvDFizmjN2TlYniYmSS2LIaZg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "msgpackr-extract": "^3.0.2" + } + }, + "node_modules/msgpackr-extract": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz", + "integrity": "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build-optional-packages": "5.2.2" + }, + "bin": { + "download-msgpackr-prebuilds": "bin/download-prebuilds.js" + }, + "optionalDependencies": { + "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", + "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" + } + }, + "node_modules/msgpackr-extract/node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/msgpackr-extract/node_modules/node-gyp-build-optional-packages": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", + "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-gyp-build-optional-packages": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.1.1.tgz", + "integrity": "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.1" + }, + "bin": { + "node-gyp-build-optional-packages": "bin.js", + "node-gyp-build-optional-packages-optional": "optional.js", + "node-gyp-build-optional-packages-test": "build-test.js" + } + }, + "node_modules/node-gyp-build-optional-packages/node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ordered-binary": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz", + "integrity": "sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/parcel": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/parcel/-/parcel-2.15.4.tgz", + "integrity": "sha512-eZHQ/omuQ7yBYB9XezyzSqhc826oy/uhloCNiej1CTZ+twAqJVtp4MRvTGMcivKhE+WE8QkYD5XkJHLLQsJQcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/config-default": "2.15.4", + "@parcel/core": "2.15.4", + "@parcel/diagnostic": "2.15.4", + "@parcel/events": "2.15.4", + "@parcel/feature-flags": "2.15.4", + "@parcel/fs": "2.15.4", + "@parcel/logger": "2.15.4", + "@parcel/package-manager": "2.15.4", + "@parcel/reporter-cli": "2.15.4", + "@parcel/reporter-dev-server": "2.15.4", + "@parcel/reporter-tracer": "2.15.4", + "@parcel/utils": "2.15.4", + "chalk": "^4.1.2", + "commander": "^12.1.0", + "get-port": "^4.2.0" + }, + "bin": { + "parcel": "lib/bin.js" + }, + "engines": { + "node": ">= 16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.16.0.tgz", + "integrity": "sha512-FPvF2XxTSikpJxcr+bHut2H4gJ17+18Uy20D5/F+SKzFap62R3cM5wH6b8WN3LyGSYeQilLEcJcR1fjBSI2S1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/weak-lru-cache": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", + "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..0b7c22d --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "helios", + "version": "1.0.0", + "description": "this is the orgignal Helios proxy slapped together soley by me, dinguschan. its a web browser proxy thing i whipped up while absolutly zonked out of my goose, and its in NO way finished. the aim is to be a replacement for dingusProxy and a replacement for your spyware ridden admin controlled browser. the idea for this was to expand upon dingusProxy's specialized static host, clientside, local, and html css js only web proxy code and unfuck the mess of code in there. i added sandboxed tabs, specialized settings and cloaking, built in threat protection and- I JUST WANNA TO CLONE CHROME. I WANNA BLATENTLY COPY CHROME SOOOOO FUCKING BAD. ITS GONNA BE 𝘽𝙀𝙏𝙏𝙀𝙍 ITS GONNA BE 𝙁𝘼𝙎𝙏𝙀𝙍 ITS GONNA TAKE YOUR ADMINS SHITASS CENSORSHIP AND FUCK. IT. UP. BEAT THAT SHIT DOWN WITH A RUSTY STEEL PIPE WRENCH MADE OF DINGUSCHAN CERTIFIED BOMB ASS CODE. (sorry.) to use Helios plase visit one of the OFFICIAL links below, or click the \"Download Helios-Offline\" option in the menu dropdown. you can also go through the file tree in the repository and download the \"Helios-Offline.html\" file to get the same result, and for more options check the [How To Use section](#How-To-Use). If you want to look at some screenshots of Helios before using it just scroll down to the [Screenshots section](#Screenshots).", + "main": "script.js", + "scripts": { + "dev": "npx parcel ./index.html", + "build": "npx parcel build ./index.html" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/dinguschan-owo/Helios.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "commonjs", + "bugs": { + "url": "https://github.com/dinguschan-owo/Helios/issues" + }, + "homepage": "https://github.com/dinguschan-owo/Helios#readme", + "devDependencies": { + "parcel": "^2.15.4" + }, + "dependencies": { + "axios": "^1.10.0" + } +} diff --git a/script.js b/script.ts similarity index 78% rename from script.js rename to script.ts index 3ec8bf7..1fe92d5 100644 --- a/script.js +++ b/script.ts @@ -1,13 +1,15 @@ -document.querySelector('.reload-buttonaa').addEventListener('mouseenter', function() { - this.classList.add('hover-triggered'); +import axios from "axios"; + +document.querySelector('.reload-buttonaa')!.addEventListener('mouseenter', function () { + this.classList.add('hover-triggered'); }); -document.querySelector('.reload-buttonaa').addEventListener('animationend', function() { - this.classList.remove('hover-triggered'); +document.querySelector('.reload-buttonaa')!.addEventListener('animationend', function () { + this.classList.remove('hover-triggered'); }); -document.addEventListener("DOMContentLoaded", function() { +document.addEventListener("DOMContentLoaded", function () { console.log("DEBUG: Script is running..."); // List of official Helios URLs @@ -26,7 +28,7 @@ document.addEventListener("DOMContentLoaded", function() { function createSitechecker() { // Check if Sitechecker already exists - let sitecheckerContainer = document.querySelector(".sitechecker-container"); + let sitecheckerContainer: HTMLDivElement | null = document.querySelector(".sitechecker-container"); if (!sitecheckerContainer) { sitecheckerContainer = document.createElement("div"); sitecheckerContainer.classList.add("sitechecker-container"); @@ -75,28 +77,28 @@ document.addEventListener("DOMContentLoaded", function() { } console.log("DEBUG: Text updated inside Sitechecker box."); - }, 200); + }, 200); } function fadeOutSitechecker() { setTimeout(() => { - let sitecheckerContainer = document.querySelector(".sitechecker-container"); + let sitecheckerContainer: HTMLElement | null = document.querySelector(".sitechecker-container"); if (sitecheckerContainer) { sitecheckerContainer.style.transition = "opacity 1s ease-out"; sitecheckerContainer.style.opacity = "0"; console.log("DEBUG: Sitechecker is fading out."); } - }, 20000); - } + }, 20000); + } // Create Sitechecker once on initial page load createSitechecker(); // Ensure Sitechecker remains visible when switching tabs - document.addEventListener("click", function(event) { - if (event.target.closest(".tabaa")) { + document.addEventListener("click", function (event) { + if (event.target?.["closest"]?.(".tabaa")) { setTimeout(() => { - createSitechecker(); + createSitechecker(); }, 100); } }); @@ -110,11 +112,11 @@ document.addEventListener("DOMContentLoaded", function() { document.body.addEventListener("click", function (event) { let target = event.target; - + if (!target) return; // Log button clicks - let button = target.closest("button"); + let button: HTMLButtonElement | undefined = target?.["closest"]?.("button"); if (button) { let buttonName = button.innerText.trim() || button.getAttribute("aria-label") || "Unnamed Button"; logEvent(`${buttonName} clicked`); @@ -122,31 +124,33 @@ document.addEventListener("DOMContentLoaded", function() { } // Log link clicks - let link = target.closest("a"); + let link: HTMLLinkElement | undefined = target?.["closest"]?.("a"); if (link) { let linkText = link.innerText.trim() || link.href || "Unnamed Link"; logEvent(`Navigated to ${linkText}`); return; } - logEvent(`Element clicked: ${target.tagName.toLowerCase()} - ${target.className || "No Class"}`); + logEvent(`Element clicked: ${target?.["tagName"]?.toLowerCase?.() ?? `unknown`} - ${target?.["className"] ?? "No Class"}`); }); // Track form submissions document.body.addEventListener("submit", function (event) { - if (event.target.tagName === "FORM") { - let formName = event.target.getAttribute("name") || "Unnamed Form"; + if (event.target?.["tagName"] === "FORM") { + let formName = event.target?.["getAttribute"]?.("name") ?? "Unnamed Form"; logEvent(`Form ${formName} submitted`); } }); + const logged = new WeakSet(); + // Track input focus (once per element) document.body.addEventListener("focus", function (event) { let target = event.target; - if ((target.tagName === "INPUT" || target.tagName === "TEXTAREA") && !target.dataset.logged) { - let inputName = target.name || target.placeholder || "Unnamed Input"; + if ((target?.["tagName"] === "INPUT" || target?.["tagName"] === "TEXTAREA") && !logged.has(target)) { + let inputName = target?.["name"] ?? target?.["placeholder"] ?? "Unnamed Input"; logEvent(`Input field ${inputName} focused and edited`); - target.dataset.logged = true; + logged.add(target); } }, true); @@ -161,10 +165,10 @@ document.addEventListener("DOMContentLoaded", function() { const currentTime = Date.now(); if (currentTime - lastHoverTime < hoverCooldown) return; - let element = target.closest("button, a, img"); + let element: HTMLElement | undefined = target?.["closest"]?.("button, a, img"); if (element) { let elementType = element.tagName.toLowerCase(); - let elementName = element.innerText.trim() || element.src || element.href || "Unnamed Element"; + let elementName = element.innerText.trim() ?? element?.["src"] ?? element?.["href"] ?? "Unnamed Element"; logEvent(`Hovered over ${elementType}: ${elementName}`); lastHoverTime = currentTime; } @@ -224,16 +228,16 @@ document.addEventListener("DOMContentLoaded", function() { } })(); // Listen for Ctrl + K to focus on the search bar -window.addEventListener('keydown', function(event) { - if (event.ctrlKey && event.key === 'k') { - event.preventDefault(); // Prevent default Ctrl+K action - - const searchInput = document.querySelector('.search-baraa input'); - - if (searchInput) { - searchInput.focus(); - } - } +window.addEventListener('keydown', function (event) { + if (event.ctrlKey && event.key === 'k') { + event.preventDefault(); // Prevent default Ctrl+K action + + const searchInput: HTMLInputElement | null = document.querySelector('.search-baraa input'); + + if (searchInput) { + searchInput.focus(); + } + } }); @@ -259,7 +263,7 @@ function activatePreview(element) { // Switch the theme and save the active state to localStorage function switchTheme(themeFile, activeClass) { // Find the existing tag for the stylesheet - const link = document.querySelector('link[rel="stylesheet"]'); + const link: HTMLLinkElement | null = document.querySelector('link[rel="stylesheet"]'); if (link) { // Update the href to the new theme file @@ -297,192 +301,192 @@ function applySavedTheme() { window.onload = applySavedTheme; -const heliosMessageHistory = []; +const heliosMessageHistory: any[] = []; const HELIOS_API_KEY_PARTS = [ - 's', 'k', '-', 'o', 'r', '-', 'v', '1', '-', '8', 'e', 'f', '6', '7', '3', 'c', - 'a', '3', '4', 'g', 'h', 'i', 'j', 'l', 'm', 'n', '2', '2', '5', '2', '3', '3', '0', 'f', 'c', '2', 'd', '5', '4', - '2', 'c', '1', '7', '0', '9', 'e', '9', '3', '3', '1', 'e', '2', 'c', '7', 'd', - '6', '9', '0', '4', '4', '5', 'd', '1', '2', '3', '2', '1', '9', 'd', 'a', '3', - '6', '0', '0', '5', 'd', '5', '5', '6', 'c', -'b', 'p', 'q', 't', 'u', 'w', 'x', 'y', 'z' + 's', 'k', '-', 'o', 'r', '-', 'v', '1', '-', '8', 'e', 'f', '6', '7', '3', 'c', + 'a', '3', '4', 'g', 'h', 'i', 'j', 'l', 'm', 'n', '2', '2', '5', '2', '3', '3', '0', 'f', 'c', '2', 'd', '5', '4', + '2', 'c', '1', '7', '0', '9', 'e', '9', '3', '3', '1', 'e', '2', 'c', '7', 'd', + '6', '9', '0', '4', '4', '5', 'd', '1', '2', '3', '2', '1', '9', 'd', 'a', '3', + '6', '0', '0', '5', 'd', '5', '5', '6', 'c', + 'b', 'p', 'q', 't', 'u', 'w', 'x', 'y', 'z' ]; -const uselessChars = [ 's', 'k', '-', 'o', 'r', '-', 'v', '1', '-', '8', 'e', 'f', '6', '7', '3', 'c', - 'a', '3', '4', '2', '2', '5', '2', '3', '3', '0', 'f', 'c', '2', 'd', '5', '4', - '2', 'c', '1', '7', '0', '9', 'e', '9', '3', '3', '1', 'e', '2', 'c', '7', 'd', - '6', '9', '0', '4', '4', '5', 'd', '1', '2', '3', '2', '1', '9', 'd', 'a', '3', - '6', '0', '0', '5', 'd', '5', '5', '6', 'c']; +const uselessChars = ['s', 'k', '-', 'o', 'r', '-', 'v', '1', '-', '8', 'e', 'f', '6', '7', '3', 'c', + 'a', '3', '4', '2', '2', '5', '2', '3', '3', '0', 'f', 'c', '2', 'd', '5', '4', + '2', 'c', '1', '7', '0', '9', 'e', '9', '3', '3', '1', 'e', '2', 'c', '7', 'd', + '6', '9', '0', '4', '4', '5', 'd', '1', '2', '3', '2', '1', '9', 'd', 'a', '3', + '6', '0', '0', '5', 'd', '5', '5', '6', 'c']; function getHeliosApiKey() { - const filteredParts = HELIOS_API_KEY_PARTS.filter(part => part !== 'X' && uselessChars.includes(part)); - return filteredParts.join(''); + const filteredParts = HELIOS_API_KEY_PARTS.filter(part => part !== 'X' && uselessChars.includes(part)); + return filteredParts.join(''); } const heliosSystemMessage = { - role: "system", - content: `You are Helios AI, an advanced AI assistant designed to be helpful, knowledgeable, and adaptable. You were made by dinguschan.` + role: "system", + content: `You are Helios AI, an advanced AI assistant designed to be helpful, knowledgeable, and adaptable. You were made by dinguschan.` }; -const chatbotToggler = document.querySelector(".wrench-buttonaa"); -const closeBtn = document.querySelector(".close-btn"); -const chatbox = document.querySelector(".chatbox"); -const chatInput = document.querySelector(".chat-input textarea"); -const sendChatBtn = document.querySelector(".send-btn"); +const chatbotToggler: HTMLButtonElement = document.querySelector(".wrench-buttonaa")!; +const closeBtn: HTMLButtonElement = document.querySelector(".close-btn")!; +const chatbox: HTMLDivElement = document.querySelector(".chatbox")!; +const chatInput: HTMLTextAreaElement = document.querySelector(".chat-input textarea")!; +const sendChatBtn: HTMLButtonElement = document.querySelector(".send-btn")!; chatbotToggler.addEventListener("click", () => { - document.body.classList.toggle("show-chatbot"); + document.body.classList.toggle("show-chatbot"); - const existingWelcomeMessage = Array.from(chatbox.children).some(child => - child.textContent === "Hi there! How may I assist you?" - ); + const existingWelcomeMessage = Array.from(chatbox.children).some(child => + child.textContent === "Hi there! How may I assist you?" + ); - if (!existingWelcomeMessage) { - addHeliosMessage("Hi there! How may I assist you?", false); - } + if (!existingWelcomeMessage) { + addHeliosMessage("Hi there! How may I assist you?", false); + } }); closeBtn.addEventListener("click", () => { - document.body.classList.remove("show-chatbot"); + document.body.classList.remove("show-chatbot"); }); sendChatBtn.addEventListener("click", sendHeliosMessage); chatInput.addEventListener("keydown", function (event) { - if (event.key === "Enter") { - event.preventDefault(); - sendHeliosMessage(); - } + if (event.key === "Enter") { + event.preventDefault(); + sendHeliosMessage(); + } }); async function sendHeliosMessage() { - const userMessage = chatInput.value.trim(); - if (!userMessage) return; - - addHeliosMessage(userMessage, true); - chatInput.value = ''; - - heliosMessageHistory.push({ role: "user", content: userMessage }); - const loadingElement = addLoadingMessage(); - - try { - const response = await tryHeliosModels(userMessage); - let formattedResponse = response.text; - - formattedResponse = formatBulletedList(formattedResponse); - - formattedResponse = convertToStyledBold(formattedResponse); - - heliosMessageHistory.push({ role: "assistant", content: formattedResponse }); - loadingElement.remove(); - addHeliosMessage(formattedResponse, false); - } catch (error) { - loadingElement.remove(); - addHeliosMessage(`Error: ${error.message}`, false); - } + const userMessage = chatInput.value.trim(); + if (!userMessage) return; + + addHeliosMessage(userMessage, true); + chatInput.value = ''; + + heliosMessageHistory.push({ role: "user", content: userMessage }); + const loadingElement = addLoadingMessage(); + + try { + const response = await tryHeliosModels(userMessage); + let formattedResponse = response.text; + + formattedResponse = formatBulletedList(formattedResponse); + + formattedResponse = convertToStyledBold(formattedResponse); + + heliosMessageHistory.push({ role: "assistant", content: formattedResponse }); + loadingElement.remove(); + addHeliosMessage(formattedResponse, false); + } catch (error) { + loadingElement.remove(); + addHeliosMessage(`Error: ${error.message}`, false); + } } function addHeliosMessage(content, isUser) { - const messageElement = document.createElement("div"); - messageElement.classList.add("chat", isUser ? "outgoing" : "incoming"); + const messageElement = document.createElement("div"); + messageElement.classList.add("chat", isUser ? "outgoing" : "incoming"); - const messageContent = document.createElement("p"); - messageContent.textContent = content; + const messageContent = document.createElement("p"); + messageContent.textContent = content; - if (!isUser) { - const messageAvatar = document.createElement("span"); - messageAvatar.classList.add("incoming-avatar"); + if (!isUser) { + const messageAvatar = document.createElement("span"); + messageAvatar.classList.add("incoming-avatar"); - const icon = document.createElement("i"); - icon.classList.add("fa-solid", "fa-robot"); + const icon = document.createElement("i"); + icon.classList.add("fa-solid", "fa-robot"); - messageAvatar.appendChild(icon); - messageElement.appendChild(messageAvatar); - } + messageAvatar.appendChild(icon); + messageElement.appendChild(messageAvatar); + } - messageElement.appendChild(messageContent); - chatbox.appendChild(messageElement); - messageElement.scrollIntoView({ behavior: 'smooth' }); + messageElement.appendChild(messageContent); + chatbox.appendChild(messageElement); + messageElement.scrollIntoView({ behavior: 'smooth' }); } function addLoadingMessage() { - const loadingMessage = document.createElement("p"); - loadingMessage.textContent = "Thinking..."; - const loadingElement = document.createElement("div"); - loadingElement.classList.add("chat", "incoming"); - loadingElement.appendChild(loadingMessage); - chatbox.appendChild(loadingElement); - loadingElement.scrollIntoView({ behavior: 'smooth' }); - return loadingElement; + const loadingMessage = document.createElement("p"); + loadingMessage.textContent = "Thinking..."; + const loadingElement = document.createElement("div"); + loadingElement.classList.add("chat", "incoming"); + loadingElement.appendChild(loadingMessage); + chatbox.appendChild(loadingElement); + loadingElement.scrollIntoView({ behavior: 'smooth' }); + return loadingElement; } async function tryHeliosModels(userMessage) { - const models = [ - { name: "google/gemini-2.0-flash-exp:free", free: true }, - { name: "google/gemini-flash-1.5-exp", free: true }, - { name: "meta-llama/llama-3.2-3b-instruct:free", free: true }, - { name: "mistralai/mistral-7b-instruct:free", free: true } - ]; - - for (let model of models) { - try { - const response = await fetch("https://openrouter.ai/api/v1/chat/completions", { - method: "POST", - headers: { - "Authorization": `Bearer ${getHeliosApiKey()}`, - "Content-Type": "application/json", - }, - body: JSON.stringify({ - model: model.name, - messages: [heliosSystemMessage, ...heliosMessageHistory], - temperature: 0.7, - max_tokens: 2048, - repetition_penalty: 1 - }) - }); + const models = [ + { name: "google/gemini-2.0-flash-exp:free", free: true }, + { name: "google/gemini-flash-1.5-exp", free: true }, + { name: "meta-llama/llama-3.2-3b-instruct:free", free: true }, + { name: "mistralai/mistral-7b-instruct:free", free: true } + ]; - if (!response.ok) { - throw new Error(`Model ${model.name} failed.`); - } + for (let model of models) { + try { + const response = await fetch("https://openrouter.ai/api/v1/chat/completions", { + method: "POST", + headers: { + "Authorization": `Bearer ${getHeliosApiKey()}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + model: model.name, + messages: [heliosSystemMessage, ...heliosMessageHistory], + temperature: 0.7, + max_tokens: 2048, + repetition_penalty: 1 + }) + }); - const data = await response.json(); - if (data.choices && data.choices[0].message.content) { - return { text: data.choices[0].message.content }; - } - } catch (error) { - console.warn(`Model ${model.name} failed: ${error.message}`); + if (!response.ok) { + throw new Error(`Model ${model.name} failed.`); + } + + const data = await response.json(); + if (data.choices && data.choices[0].message.content) { + return { text: data.choices[0].message.content }; + } + } catch (error) { + console.warn(`Model ${model.name} failed: ${error.message}`); + } } - } - throw new Error("All models failed to respond. API might be exhausted for today."); + throw new Error("All models failed to respond. API might be exhausted for today."); } function formatBulletedList(text) { - const bulletPattern = /^(?:-|\*|\u2022)\s+/gm; - - return text.replace(bulletPattern, '• '); + const bulletPattern = /^(?:-|\*|\u2022)\s+/gm; + + return text.replace(bulletPattern, '• '); } - // Define a mapping for numbers and letters to their respective stylized forms +// Define a mapping for numbers and letters to their respective stylized forms function convertToStyledBold(text) { - const normalToStyled = { - '0': '𝟎', '1': '𝟏', '2': '𝟐', '3': '𝟑', '4': '𝟒', '5': '𝟓', '6': '𝟔', '7': '𝟕', '8': '𝟖', '9': '𝟗', - 'a': '𝗮', 'b': '𝗯', 'c': '𝗰', 'd': '𝗱', 'e': '𝗲', 'f': '𝗳', 'g': '𝗴', 'h': '𝗵', 'i': '𝗶', 'j': '𝗷', - 'k': '𝗸', 'l': '𝗹', 'm': '𝗺', 'n': '𝗻', 'o': '𝗼', 'p': '𝗽', 'q': '𝗾', 'r': '𝗿', 's': '𝘀', 't': '𝘁', - 'u': '𝘂', 'v': '𝘃', 'w': '𝘄', 'x': '𝘅', 'y': '𝘆', 'z': '𝘇', - 'A': '𝗔', 'B': '𝗕', 'C': '𝗖', 'D': '𝗗', 'E': '𝗘', 'F': '𝗙', 'G': '𝗚', 'H': '𝗛', 'I': '𝗜', 'J': '𝗝', - 'K': '𝗞', 'L': '𝗟', 'M': '𝗠', 'N': '𝗡', 'O': '𝗢', 'P': '𝗣', 'Q': '𝗤', 'R': '𝗥', 'S': '𝗦', 'T': '𝗧', - 'U': '𝗨', 'V': '𝗩', 'W': '𝗪', 'X': '𝗫', 'Y': '𝗬', 'Z': '𝗭' - }; - - function convertWord(word) { - return word.split('').map(char => normalToStyled[char] || char).join(''); - } - - return text.replace(/\*\*(.*?)\*\*/g, (match, p1) => convertWord(p1)); + const normalToStyled = { + '0': '𝟎', '1': '𝟏', '2': '𝟐', '3': '𝟑', '4': '𝟒', '5': '𝟓', '6': '𝟔', '7': '𝟕', '8': '𝟖', '9': '𝟗', + 'a': '𝗮', 'b': '𝗯', 'c': '𝗰', 'd': '𝗱', 'e': '𝗲', 'f': '𝗳', 'g': '𝗴', 'h': '𝗵', 'i': '𝗶', 'j': '𝗷', + 'k': '𝗸', 'l': '𝗹', 'm': '𝗺', 'n': '𝗻', 'o': '𝗼', 'p': '𝗽', 'q': '𝗾', 'r': '𝗿', 's': '𝘀', 't': '𝘁', + 'u': '𝘂', 'v': '𝘃', 'w': '𝘄', 'x': '𝘅', 'y': '𝘆', 'z': '𝘇', + 'A': '𝗔', 'B': '𝗕', 'C': '𝗖', 'D': '𝗗', 'E': '𝗘', 'F': '𝗙', 'G': '𝗚', 'H': '𝗛', 'I': '𝗜', 'J': '𝗝', + 'K': '𝗞', 'L': '𝗟', 'M': '𝗠', 'N': '𝗡', 'O': '𝗢', 'P': '𝗣', 'Q': '𝗤', 'R': '𝗥', 'S': '𝗦', 'T': '𝗧', + 'U': '𝗨', 'V': '𝗩', 'W': '𝗪', 'X': '𝗫', 'Y': '𝗬', 'Z': '𝗭' + }; + + function convertWord(word) { + return word.split('').map(char => normalToStyled[char] || char).join(''); + } + + return text.replace(/\*\*(.*?)\*\*/g, (match, p1) => convertWord(p1)); } @@ -534,13 +538,13 @@ function setFallbackFont(doc) { doc.head.appendChild(styleTag); } -async function handleFetchedContent(html, url) { - const fixedHtml = await fixFetchedFonts(html, url); +// async function handleFetchedContent(html, url) { +// const fixedHtml = await fixFetchedFonts(html, url); - // Inject the modified content into your page or Shadow DOM - const contentContainer = document.getElementById('content'); // Adjust to your container - contentContainer.innerHTML = fixedHtml; -} +// // Inject the modified content into your page or Shadow DOM +// const contentContainer = document.getElementById('content'); // Adjust to your container +// contentContainer.innerHTML = fixedHtml; +// } function switchTabWithoutDeactivating(tabIndex) { // Activate the clicked tab and its content @@ -555,18 +559,18 @@ function switchTabWithoutDeactivating(tabIndex) { // Prevent administrators from closing the tab function preventUnwantedTabClosing(message = 'This page is asking you to confirm that you want to leave — information you’ve entered may not be saved.') { - window.addEventListener('beforeunload', function(e) { + window.addEventListener('beforeunload', function (e) { e.preventDefault(); e.returnValue = message; return message; }); } -document.addEventListener('DOMContentLoaded', function() { +document.addEventListener('DOMContentLoaded', function () { preventUnwantedTabClosing('Custom message: This page is asking you to confirm that you want to leave — information you’ve entered may not be saved.'); }); -document.addEventListener('DOMContentLoaded', function() { +document.addEventListener('DOMContentLoaded', function () { const contentFetchingProtocolExpectedOutput = "𝙼𝚊𝚍𝚎 𝚋𝚢 𝚍𝚒𝚗𝚐𝚞𝚜𝚌𝚑𝚊𝚗!"; const contentFetchingProtocolElements = document.querySelectorAll('.Xt7Lm9Kp3R8f, #h2Dv8e46q'); @@ -590,7 +594,7 @@ document.addEventListener('DOMContentLoaded', function() { } function contentFetchingProtocolValidation4(contentFetchingProtocolInput) { - const contentFetchingProtocolText = contentFetchingProtocolInput.textContent.trim(); + const contentFetchingProtocolText: string = contentFetchingProtocolInput.textContent.trim(); const contentFetchingProtocolInputCodePoints = Array.from(contentFetchingProtocolText).map(char => char.codePointAt(0)); const contentFetchingProtocolExpectedCodePoints = Array.from(contentFetchingProtocolExpectedOutput).map(char => char.codePointAt(0)); return contentFetchingProtocolInputCodePoints.length === contentFetchingProtocolExpectedCodePoints.length && @@ -609,7 +613,7 @@ document.addEventListener('DOMContentLoaded', function() { function contentFetchingProtocolLevenshteinDistance(a, b) { if (a.length === 0) return b.length; if (b.length === 0) return a.length; - let matrix = []; + let matrix: number[][] = []; for (let i = 0; i <= b.length; i++) { matrix[i] = [i]; } @@ -701,11 +705,11 @@ function initializeTabs() { const newTab = document.createElement('div'); newTab.className = 'tabaa'; newTab.innerHTML = `New Tab`; - document.querySelector('.uptop-baraa').insertBefore(newTab, document.getElementById('add-tabaa')); + document.querySelector('.uptop-baraa')!.insertBefore(newTab, document.getElementById('add-tabaa')); const newContent = document.createElement('div'); newContent.className = 'contentaa tab-contentaa'; - newContent.innerHTML = tabs[0].content.replace(/\${currentTabIndex}/g, newTabIndex); + newContent.innerHTML = tabs[0].content.replace(/\${currentTabIndex}/g, `${newTabIndex}`); document.body.appendChild(newContent); tabs.push({ @@ -715,7 +719,7 @@ function initializeTabs() { // Close the original tab const originalTab = document.querySelector('.tabaa'); - originalTab.remove(); + if (originalTab) originalTab.remove(); document.querySelectorAll('.tab-contentaa')[0].remove(); tabs.shift(); @@ -768,16 +772,16 @@ const tabs = [{ const trustedSchemes = ['helios://', 'https://', 'http://']; -document.getElementById('add-tabaa').addEventListener('click', function() { +document.getElementById('add-tabaa')!.addEventListener('click', function () { const newTabIndex = tabs.length; const newTab = document.createElement('div'); newTab.className = 'tabaa'; newTab.innerHTML = `New Tab`; - document.querySelector('.uptop-baraa').insertBefore(newTab, this); + document.querySelector('.uptop-baraa')!.insertBefore(newTab, this); const newContent = document.createElement('div'); newContent.className = 'contentaa tab-contentaa'; - newContent.innerHTML = tabs[0].content.replace(/\${currentTabIndex}/g, newTabIndex); + newContent.innerHTML = tabs[0].content.replace(/\${currentTabIndex}/g, `${newTabIndex}`); document.body.appendChild(newContent); tabs.push({ @@ -796,8 +800,8 @@ document.querySelectorAll('.tabaa').forEach((tab, index) => { }); function attachClickListeners() { - document.querySelectorAll('.top-right-boxaa').forEach(function(element) { - element.removeEventListener('click', openGitHub); + document.querySelectorAll('.top-right-boxaa').forEach(function (element) { + element.removeEventListener('click', openGitHub); element.addEventListener('click', openGitHub); }); } @@ -808,22 +812,22 @@ function openGitHub() { document.addEventListener('DOMContentLoaded', attachClickListeners); -document.addEventListener('click', function(event) { - if (event.target.closest('.add-tabaa')) { +document.addEventListener('click', function (event) { + if (event.target?.["closest"]?.('.add-tabaa')) { setTimeout(attachClickListeners, 100); } }); -function addCloseButtonFunctionality(tab) { - tab.querySelector('.close-btnaa').addEventListener('click', function() { +function addCloseButtonFunctionality1(tab) { + tab.querySelector('.close-btnaa').addEventListener('click', function () { const index = Array.from(document.querySelectorAll('.tabaa')).indexOf(tab); tab.remove(); document.querySelectorAll('.tab-contentaa')[index].remove(); tabs.splice(index, 1); if (index === currentTabIndex) { - const newActiveTab = document.querySelectorAll('.tabaa')[index] || document.querySelectorAll('.tabaa')[index - 1]; + const newActiveTab: HTMLElement | undefined = (document.querySelectorAll('.tabaa')[index] ?? document.querySelectorAll('.tabaa')[index - 1]) as HTMLElement | undefined; if (newActiveTab) { newActiveTab.click(); } @@ -832,7 +836,7 @@ function addCloseButtonFunctionality(tab) { } function addTabClickListener(tab, content, index) { - tab.addEventListener('click', function() { + tab.addEventListener('click', function () { updateActiveTab(tab, content, index); }); } @@ -851,14 +855,15 @@ function updateActiveTab(tab, content, index) { currentTabIndex = index; const url = tabs[index].url; - document.getElementById('url-baraa').value = url; + const baraa = document.getElementById('url-baraa'); + if (baraa && 'value' in baraa) baraa.value = url; updateTabContent(url, content, tab); updateLockIcon(url); - updateSpecialDivs(url); + updateSpecialDivs(); } -function updateTabContent(url, content, tab) { +let updateTabContent = function (url, content, tab) { showSpinner(tab); localStorage.setItem(`tab_${currentTabIndex}`, url); sessionStorage.setItem(`tab_${currentTabIndex}`, url); @@ -899,9 +904,10 @@ function updateTabContent(url, content, tab) { tabs[currentTabIndex].content = content.innerHTML; tabs[currentTabIndex].url = url; - document.getElementById(`search-input-${currentTabIndex}`).addEventListener('keydown', function(event) { + const inp: HTMLInputElement | null = document.getElementById(`search-input-${currentTabIndex}`) as HTMLInputElement | null; + if (inp) inp.addEventListener('keydown', function (event) { if (event.key === 'Enter') { - const enteredUrl = this.value; + const enteredUrl = inp.value; if (enteredUrl) { updateTabContent(enteredUrl, content, tab); } @@ -975,10 +981,10 @@ function updateTabContent(url, content, tab) { tabs[currentTabIndex].content = content.innerHTML; tabs[currentTabIndex].url = url; - document.getElementById(`clear-history-${currentTabIndex}`).addEventListener('click', function() { + document.getElementById(`clear-history-${currentTabIndex}`)?.addEventListener('click', function () { localStorage.removeItem(`tab_${currentTabIndex}`); sessionStorage.removeItem(`tab_${currentTabIndex}`); - const messageDiv = document.getElementById(`clear-message-${currentTabIndex}`); + const messageDiv: HTMLDivElement = document.getElementById(`clear-message-${currentTabIndex}`)! as HTMLDivElement; messageDiv.textContent = 'History has been cleared for this tab!'; messageDiv.style.display = 'block'; @@ -991,14 +997,14 @@ function updateTabContent(url, content, tab) { } else { fetchExternalContent(url, content, currentTabIndex); } - - document.getElementById('url-baraa').value = url; + const baraa = document.getElementById('url-baraa'); + if (baraa && 'value' in baraa) baraa.value = url; tabs[currentTabIndex].content = content.innerHTML; tabs[currentTabIndex].url = url; updateLockIcon(url); - updateSpecialDivs(url); + updateSpecialDivs(); if (url === 'helios://start' || url === 'helios://settings' || url === 'helios://urls') { // For internal pages, hide the spinner immediately after setting content hideSpinner(tab); @@ -1008,7 +1014,7 @@ function updateTabContent(url, content, tab) { } } -async function fetchExternalContent(url, content, tabIndex) { +async function fetchExternalContent1(url, content, tabIndex) { const tab = document.querySelectorAll('.tabaa')[tabIndex]; showSpinner(tab); @@ -1030,7 +1036,7 @@ async function fetchExternalContent(url, content, tabIndex) { - async function fetchWithProxy(proxy) { + async function fetchWithProxy(proxy) { return new Promise((resolve, reject) => { const controller = new AbortController(); const id = setTimeout(() => { @@ -1041,11 +1047,11 @@ async function fetchExternalContent(url, content, tabIndex) { console.log(`Attempting to fetch with proxy: ${proxy}`); fetch(proxy, { - signal: controller.signal, - headers: { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' // User agent to spoof your actual User ID to the CORS proxy server and target server - } - }) + signal: controller.signal, + headers: { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' // User agent to spoof your actual User ID to the CORS proxy server and target server + } + }) .then(response => { clearTimeout(id); if (!response.ok) { @@ -1062,11 +1068,11 @@ async function fetchExternalContent(url, content, tabIndex) { } let htmlText; - let errors = []; + let errors: string[] = []; for (const proxy of proxies) { try { -htmlText = sanitizeHtmlText(await fetchWithProxy(proxy)); + htmlText = sanitizeHtmlText(await fetchWithProxy(proxy)); console.log(`Fetch successful using proxy: ${proxy}`); break; } catch (error) { @@ -1095,9 +1101,9 @@ htmlText = sanitizeHtmlText(await fetchWithProxy(proxy)); console.log(`Content fetched successfully. Length: ${htmlText.length}`); // Fix the function to fix fonts in the fetched content -htmlText = sanitizeHtmlText(htmlText); -htmlText = await fixFetchedFonts(htmlText, url); -htmlText = await fixFontsInFetchedContent(htmlText, url); + htmlText = sanitizeHtmlText(htmlText); + // htmlText = await fixFetchedFonts(htmlText, url); + htmlText = await fixFontsInFetchedContent(htmlText, url); // Execute scripts from the fetched content @@ -1107,7 +1113,8 @@ htmlText = await fixFontsInFetchedContent(htmlText, url); const doc = parser.parseFromString(htmlText, 'text/html'); const title = doc.title; if (tab) { - tab.querySelector('.tab-nameaa').textContent = title || 'Untitled'; + const name = tab.querySelector('.tab-nameaa'); + if (name && 'textContent' in name) name.textContent = title || 'Untitled'; } console.log(`Parsed document title: ${title || 'Untitled'}`); @@ -1124,16 +1131,17 @@ htmlText = await fixFontsInFetchedContent(htmlText, url); }); // Remove the default style that forces a white background -shadowRoot.innerHTML = sanitizeHtmlText(doc.documentElement.outerHTML); + shadowRoot.innerHTML = sanitizeHtmlText(doc.documentElement.outerHTML); console.log('Shadow DOM created and populated with fetched content'); // Rewrite relative URLs to absolute URLs const baseUrl = new URL(url); let rewrittenUrls = 0; - shadowRoot.querySelectorAll('a[href]').forEach(a => { + shadowRoot.querySelectorAll('a[href]').forEach(a_ => { + const a = a_ as HTMLLinkElement; try { - a.href = new URL(a.getAttribute('href'), baseUrl).href; + a.href = new URL(a.getAttribute('href')!, baseUrl).href; rewrittenUrls++; } catch (e) { console.error('Error rewriting URL:', e); @@ -1156,7 +1164,7 @@ shadowRoot.innerHTML = sanitizeHtmlText(doc.documentElement.outerHTML); document.addEventListener('DOMContentLoaded', () => { for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i); - if (key.startsWith('tab_')) { + if (key && key.startsWith('tab_')) { const url = localStorage.getItem(key); // Logic to create a new tab with this URL } @@ -1164,7 +1172,7 @@ document.addEventListener('DOMContentLoaded', () => { }); document.addEventListener('DOMContentLoaded', () => { - const urlBar = document.getElementById('url-baraa'); + const urlBar: HTMLInputElement = document.getElementById('url-baraa')! as HTMLInputElement; const content = document.getElementById('contentaa'); urlBar.addEventListener('keydown', (event) => { @@ -1223,16 +1231,17 @@ async function fetchExternalContent(url, content, tabIndex) { const title = doc.title; const tab = document.querySelectorAll('.tabaa')[tabIndex]; if (tab) { - tab.querySelector('.tab-nameaa').textContent = title || 'Untitled'; + const name = tab.querySelector('.tab-nameaa'); + if (name && 'textContent' in name) name.textContent = title || 'Untitled'; } async function fetchAndInjectResources(html, tabIndex) { const parser = new DOMParser(); const doc = parser.parseFromString(html, 'text/html'); - const resources = []; - const cssLinks = doc.querySelectorAll('link[rel="stylesheet"]'); - const jsScripts = doc.querySelectorAll('script[src]'); + const resources: string[] = []; + const cssLinks = doc.querySelectorAll('link[rel="stylesheet"]') as NodeListOf; + const jsScripts = doc.querySelectorAll('script[src]') as NodeListOf; const images = doc.querySelectorAll('img'); const videos = doc.querySelectorAll('video'); const audios = doc.querySelectorAll('audio'); @@ -1297,7 +1306,7 @@ async function fetchExternalContent(url, content, tabIndex) { const elements = shadowRoot.querySelectorAll('a[href], link[href], script[src], img[src], video[src], audio[src], source[src]'); elements.forEach(element => { const attributeName = element.hasAttribute('href') ? 'href' : 'src'; - const url = new URL(element.getAttribute(attributeName), baseUrl); + const url = new URL(element.getAttribute(attributeName)!, baseUrl); element.setAttribute(attributeName, url.href); }); }; @@ -1308,7 +1317,9 @@ async function fetchExternalContent(url, content, tabIndex) { if (result instanceof Blob) { const objectURL = URL.createObjectURL(result); const elements = shadowRoot.querySelectorAll(`[src="${url}"]`); - elements.forEach(element => element.src = objectURL); + elements.forEach(element => { + if ('src' in element) element.src = objectURL + }); } else if (typeof result === 'string') { if (url.endsWith('.css')) { const style = document.createElement('style'); @@ -1352,7 +1363,7 @@ async function fetchExternalContent(url, content, tabIndex) { return shadowContainer; } - const newShadowContainer = await fetchAndInjectResources(htmlText, tabIndex, url); + const newShadowContainer = await fetchAndInjectResources(htmlText, tabIndex); content.innerHTML = ''; content.appendChild(newShadowContainer); @@ -1363,7 +1374,7 @@ async function fetchExternalContent(url, content, tabIndex) { } function updateLockIcon(url) { - const lockIcon = document.querySelector('.lock-iconaa'); + const lockIcon = document.querySelector('.lock-iconaa')! as HTMLElement; const isLocked = trustedSchemes.some(scheme => url.startsWith(scheme)); if (isLocked) { lockIcon.classList.remove('fa-unlock'); @@ -1389,9 +1400,9 @@ function modifyCss(cssText) { function updateSpecialDivs() { const checkURL = () => { const urlInput = document.querySelector('.browser-baraa .address-baraa input'); - const isHeliosURL = urlInput && urlInput.value.startsWith('helios://'); - const officialC = document.querySelector('.official-caa'); - const official = document.querySelector('.officialaa'); + const isHeliosURL = urlInput && urlInput?.["value"]?.startsWith('helios://'); + const officialC = document.querySelector('.official-caa')! as HTMLElement; + const official = document.querySelector('.officialaa')! as HTMLElement; if (officialC) { officialC.style.opacity = isHeliosURL ? '1' : '0'; @@ -1405,40 +1416,43 @@ function updateSpecialDivs() { setInterval(checkURL, 100); } - -document.getElementById('url-baraa').addEventListener('input', function() { - const url = this.value; +const baraa = document.getElementById('url-baraa')! as HTMLInputElement; +baraa.addEventListener('input', function () { + const url = baraa.value; tabs[currentTabIndex].url = url; updateLockIcon(url); - updateSpecialDivs(url); + updateSpecialDivs(); }); -document.getElementById('url-baraa').addEventListener('keypress', function(e) { +document.getElementById('url-baraa')!.addEventListener('keypress', function (e) { if (e.key === 'Enter') { - let url = e.target.value.trim(); + if (e.target && 'value' in e.target && typeof e.target.value === "string") { + let url = e.target.value.trim(); - const hasValidScheme = trustedSchemes.some(scheme => url.startsWith(scheme)); + const hasValidScheme = trustedSchemes.some(scheme => url.startsWith(scheme)); - if (!hasValidScheme) { - url = 'https://' + url; - } + if (!hasValidScheme) { + url = 'https://' + url; + } - const currentContent = document.querySelectorAll('.tab-contentaa')[currentTabIndex]; - const currentTab = document.querySelectorAll('.tabaa')[currentTabIndex]; + const currentContent = document.querySelectorAll('.tab-contentaa')[currentTabIndex]; + const currentTab = document.querySelectorAll('.tabaa')[currentTabIndex]; - tabs[currentTabIndex].url = url; - document.getElementById('url-baraa').value = url; - updateTabContent(url, currentContent, currentTab); - updateLockIcon(url); - updateSpecialDivs(url); + tabs[currentTabIndex].url = url; + const baraa = document.getElementById('url-baraa'); + if (baraa && 'value' in baraa) baraa.value = url; + updateTabContent(url, currentContent, currentTab); + updateLockIcon(url); + updateSpecialDivs(); + } } }); -document.querySelector('.home-buttonaa').addEventListener('click', function() { +document.querySelector('.home-buttonaa')!.addEventListener('click', function () { changeTabContent('helios://start'); }); -document.querySelector('.settings-buttonaa').addEventListener('click', function() { +document.querySelector('.settings-buttonaa')!.addEventListener('click', function () { changeTabContent('helios://settings'); }); @@ -1447,7 +1461,8 @@ function changeTabContent(url) { const currentContent = document.querySelectorAll('.tab-contentaa')[currentTabIndex]; if (currentTab && currentContent) { - document.getElementById('url-baraa').value = url; + const baraa = document.getElementById('url-baraa'); + if (baraa && 'value' in baraa) baraa.value = url; tabs[currentTabIndex].url = url; updateTabContent(url, currentContent, currentTab); @@ -1458,15 +1473,15 @@ function changeTabContent(url) { key: 'Enter', code: 'Enter' }); - document.getElementById('url-baraa').dispatchEvent(event); + if (baraa) baraa.dispatchEvent(event); } } // Function to open Helios in an about:blank tab function openInAboutBlank() { - const newWindow = window.open('about:blank', '_blank'); + const newWindow = window.open('about:blank', '_blank')!; - const clonedDocument = document.documentElement.cloneNode(true); + const clonedDocument: HTMLElement = document.documentElement.cloneNode(true) as HTMLElement; // Remove the square button from the cloned document const squareButton = clonedDocument.querySelector('#square-buttonaa'); @@ -1482,7 +1497,7 @@ function openInAboutBlank() { async function openInBlob() { // Clone the document's static DOM structure - const htmlDocument = document.documentElement.cloneNode(true); + const htmlDocument = document.documentElement.cloneNode(true) as HTMLHtmlElement; // Block duplication of square button const squareButton = htmlDocument.querySelector('#square-buttonaa'); if (squareButton) { @@ -1490,7 +1505,8 @@ async function openInBlob() { } // Defer all scripts in the cloned document const scripts = htmlDocument.querySelectorAll('script[src], script:not([src])'); - scripts.forEach(script => { + scripts.forEach(script_ => { + const script = script_ as HTMLScriptElement; const deferredScript = document.createElement('script'); deferredScript.type = 'text/javascript'; @@ -1514,18 +1530,18 @@ async function openInBlob() { `; } - script.parentNode.replaceChild(deferredScript, script); + script.parentNode?.replaceChild(deferredScript, script); }); // Inline CSS styles concurrently const stylesheets = Array.from(document.styleSheets).filter(sheet => sheet.href); const cssPromises = stylesheets.map(async sheet => { try { - const response = await fetch(sheet.href); + const response = await fetch(sheet.href!); const text = await response.text(); const style = document.createElement('style'); style.textContent = text; - htmlDocument.querySelector('head').appendChild(style); + htmlDocument.querySelector('head')?.appendChild(style); } catch (e) { console.warn('Could not inline CSS:', sheet.href, e); } @@ -1544,22 +1560,22 @@ async function openInBlob() { function toggleDropdown(tabIndex) { - var dropdown = document.getElementById(`engineDropdown-${tabIndex}`); + var dropdown = document.getElementById(`engineDropdown-${tabIndex}`)!; dropdown.style.display = dropdown.style.display === "block" ? "none" : "block"; updateDropdownVisibility(tabIndex); } function selectEngine(iconSrc, engineName, tabIndex) { - document.getElementById(`selected-engine-${tabIndex}`).src = iconSrc; - document.getElementById(`selected-engine-${tabIndex}`).alt = engineName; - document.getElementById(`statusMessage-${tabIndex}`).textContent = "Searching with " + engineName; + (document.getElementById(`selected-engine-${tabIndex}`)! as HTMLImageElement).src = iconSrc; + (document.getElementById(`selected-engine-${tabIndex}`)! as HTMLImageElement).alt = engineName; + (document.getElementById(`statusMessage-${tabIndex}`)! as HTMLImageElement).textContent = "Searching with " + engineName; toggleDropdown(tabIndex); } function updateDropdownVisibility(tabIndex) { - var selectedEngine = document.getElementById(`selected-engine-${tabIndex}`).alt; - var options = document.querySelectorAll(`#engineDropdown-${tabIndex} a`); - options.forEach(function(option) { + var selectedEngine = (document.getElementById(`selected-engine-${tabIndex}`)! as HTMLImageElement).alt; + var options = document.querySelectorAll(`#engineDropdown-${tabIndex} a`) as NodeListOf; + options.forEach(function (option) { if (option.getAttribute("data-engine") === selectedEngine) { option.style.display = "none"; } else { @@ -1568,10 +1584,10 @@ function updateDropdownVisibility(tabIndex) { }); } -window.onclick = function(event) { +window.onclick = function (event) { if (!event.target.matches('.search-engine-dropdownaa') && !event.target.matches('.search-engine-dropdownaa img')) { - var dropdowns = document.querySelectorAll('.dropdown-contentaa'); - dropdowns.forEach(function(dropdown) { + var dropdowns = document.querySelectorAll('.dropdown-contentaa') as NodeListOf; + dropdowns.forEach(function (dropdown) { if (dropdown.style.display === "block") { dropdown.style.display = "none"; } @@ -1579,15 +1595,16 @@ window.onclick = function(event) { } } -document.addEventListener('DOMContentLoaded', function() { +document.addEventListener('DOMContentLoaded', function () { tabs.forEach((tab, index) => { - document.getElementById(`statusMessage-${index}`).textContent = "Searching with Google"; + const status = document.getElementById(`statusMessage-${index}`); + if (status) status.textContent = "Searching with Google"; updateDropdownVisibility(index); }); }); -document.getElementById('url-baraa').addEventListener('input', function(e) { - this.value = this.value.toLowerCase(); +document.getElementById('url-baraa')!.addEventListener('input', function (e) { + baraa.value = baraa.value.toLowerCase(); }); function isValidURL(string) { @@ -1612,7 +1629,7 @@ function handleSearchOrNavigation(input, tabIndex) { updateTabContent(url, document.querySelectorAll('.tab-contentaa')[tabIndex], document.querySelectorAll('.tabaa')[tabIndex]); } else { // If not a URL, perform a search - const selectedEngine = document.getElementById(`selected-engine-${tabIndex}`).alt; + const selectedEngine = (document.getElementById(`selected-engine-${tabIndex}`)! as HTMLImageElement).alt; let searchUrl; switch (selectedEngine) { case '4get': @@ -1636,23 +1653,27 @@ function handleSearchOrNavigation(input, tabIndex) { // Add event listener for the search input in each tab -document.addEventListener('click', function(event) { - if (event.target.classList.contains('search-iconaa')) { - const tabIndex = parseInt(event.target.closest('.search-baraa').querySelector('input').id.split('-')[2]); - const input = document.getElementById(`search-input-${tabIndex}`).value; - handleSearchOrNavigation(input, tabIndex); +document.addEventListener('click', function (event) { + if (event.target instanceof HTMLElement) { + if (event.target.classList.contains('search-iconaa')) { + const tabIndex = parseInt(event.target.closest('.search-baraa')?.querySelector('input')?.id?.split('-')?.[2] ?? `nope`); + const input = (document.getElementById(`search-input-${tabIndex}`)! as HTMLInputElement).value; + handleSearchOrNavigation(input, tabIndex); + } } }); // Add event listener for the Enter key in search inputs -document.addEventListener('keydown', function(event) { - if (event.key === 'Enter' && event.target.id.startsWith('search-input-')) { - const tabIndex = parseInt(event.target.id.split('-')[2]); - handleSearchOrNavigation(event.target.value, tabIndex); +document.addEventListener('keydown', function (event) { + if (event.target instanceof HTMLElement) { + if (event.key === 'Enter' && event.target.id.startsWith('search-input-')) { + const tabIndex = parseInt(event.target.id.split('-')[2]); + if ('value' in event.target) handleSearchOrNavigation(event.target.value, tabIndex); + } } }); -document.querySelector('.reload-buttonaa').addEventListener('click', function() { +document.querySelector('.reload-buttonaa')!.addEventListener('click', function () { const currentContent = document.querySelectorAll('.tab-contentaa')[currentTabIndex]; const currentTab = document.querySelectorAll('.tabaa')[currentTabIndex]; const currentUrl = tabs[currentTabIndex].url; @@ -1684,14 +1705,14 @@ function updateHistory(tabIndex, url) { // Modify updateTabContent to update history const originalUpdateTabContent = updateTabContent; -updateTabContent = function(url, content, tab) { +updateTabContent = function (url, content, tab) { const tabIndex = Array.from(document.querySelectorAll('.tabaa')).indexOf(tab); updateHistory(tabIndex, url); originalUpdateTabContent(url, content, tab); }; // Back button functionality -document.querySelector('.backward-buttonaa').addEventListener('click', function() { +document.querySelector('.backward-buttonaa')!.addEventListener('click', function () { const history = getTabHistory(currentTabIndex); if (history.currentIndex > 0) { history.currentIndex--; @@ -1703,7 +1724,7 @@ document.querySelector('.backward-buttonaa').addEventListener('click', function( }); // Forward button functionality -document.querySelector('.forward-buttonaa').addEventListener('click', function() { +document.querySelector('.forward-buttonaa')!.addEventListener('click', function () { const history = getTabHistory(currentTabIndex); if (history.currentIndex < history.history.length - 1) { history.currentIndex++; @@ -1716,7 +1737,7 @@ document.querySelector('.forward-buttonaa').addEventListener('click', function() // Initialize history for existing tabs document.querySelectorAll('.tabaa').forEach((tab, index) => { - const url = tab.querySelector('.tab-nameaa').textContent === 'New Tab' ? 'helios://start' : document.getElementById('url-baraa').value; + const url = tab.querySelector('.tab-nameaa')!.textContent === 'New Tab' ? 'helios://start' : (document.getElementById('url-baraa')! as HTMLInputElement).value; updateHistory(index, url); }); @@ -1739,7 +1760,7 @@ function closeTab(tab) { } // If there are no tabs left, create a new one else { - document.getElementById('add-tabaa').click(); + document.getElementById('add-tabaa')?.["click"]?.(); return; } @@ -1755,7 +1776,7 @@ function closeTab(tab) { // Replace the existing close button functionality with this new function function addCloseButtonFunctionality(tab) { - tab.querySelector('.close-btnaa').addEventListener('click', function(event) { + tab.querySelector('.close-btnaa').addEventListener('click', function (event) { event.stopPropagation(); // Prevent the tab from being activated when closing closeTab(tab); }); @@ -1779,10 +1800,11 @@ function handleSquareButtonClick() { const firstTabContent = document.querySelectorAll('.tab-contentaa')[0]; // Update tab name - firstTab.querySelector('.tab-nameaa').textContent = 'New Tab'; + const tab = firstTab?.querySelector('.tab-nameaa'); + if (tab) tab.textContent = 'New Tab'; // Reset URL bar - document.getElementById('url-baraa').value = 'helios://start'; + (document.getElementById('url-baraa')! as HTMLInputElement).value = 'helios://start'; // Reset tab content updateTabContent('helios://start', firstTabContent, firstTab); @@ -1804,7 +1826,7 @@ squareButton.textContent = '×'; squareButton.title = 'Reset Tabs'; // Insert the square button before the first tab -const topBar = document.querySelector('.uptop-baraa'); +const topBar = document.querySelector('.uptop-baraa')!; topBar.insertBefore(squareButton, topBar.firstChild); // Add event listener to the square button @@ -1853,10 +1875,10 @@ function toggleFullscreen() { } function toggleDropdownccc() { - document.getElementById("myDropdownccc").classList.toggle("showccc"); + document.getElementById("myDropdownccc")!.classList.toggle("showccc"); } -window.onclick = function(event) { +window.onclick = function (event) { if (!event.target.matches('.menu-buttonaa')) { var dropdownsccc = document.getElementsByClassName("dropdown-menuccc"); for (var i = 0; i < dropdownsccc.length; i++) { @@ -1870,12 +1892,12 @@ window.onclick = function(event) { function handleNewTabMenuClick(event) { event.preventDefault(); - document.getElementById('add-tabaa').click(); + document.getElementById('add-tabaa')!.click(); toggleDropdownccc(); // Close the dropdown after creating a new tab } // Modify the dropdown menu HTML to include an event handler -document.addEventListener('DOMContentLoaded', function() { +document.addEventListener('DOMContentLoaded', function () { const newTabMenuItem = document.querySelector('.dropdown-menuccc a'); if (newTabMenuItem) { newTabMenuItem.addEventListener('click', handleNewTabMenuClick); @@ -1904,10 +1926,10 @@ function showUrlsList(content, tab) { // Add click event listeners to the custom URL links content.querySelectorAll('.custom-url-link').forEach(link => { - link.addEventListener('click', function(e) { + link.addEventListener('click', function (e) { e.preventDefault(); const url = this.getAttribute('data-url'); - document.getElementById('url-baraa').value = url; + (document.getElementById('url-baraa')! as HTMLInputElement).value = url; updateTabContent(url, content, tab); }); }); @@ -1994,7 +2016,7 @@ function generateUserID() { } } - document.getElementById('user-idff').textContent = userId; + document.getElementById('user-idff')!.textContent = userId; } window.onload = generateUserID; @@ -2036,14 +2058,14 @@ function executeScriptsFromContent(content) { return tempDiv.innerHTML; } // Execute scripts and update the content -const contentWithoutScripts = executeScriptsFromContent(fetchedContent); +// const contentWithoutScripts = executeScriptsFromContent(fetchedContent); // Display the code -console.log('Function code:'); -console.log(executeScriptsFromContent.toString()); +// console.log('Function code:'); +// console.log(executeScriptsFromContent.toString()); -console.log('\nModified content:'); -console.log(contentWithoutScripts); +// console.log('\nModified content:'); +// console.log(contentWithoutScripts); console.log('\nCheck the browser console for script execution results.'); @@ -2052,7 +2074,7 @@ function fixFontsInFetchedContent(htmlContent, baseUrl) { const doc = parser.parseFromString(htmlContent, 'text/html'); // Find all stylesheet links - const stylesheets = doc.querySelectorAll('link[rel="stylesheet"]'); + const stylesheets = doc.querySelectorAll('link[rel="stylesheet"]') as NodeListOf; // Function to fetch and parse CSS async function fetchAndParseCss(url) { @@ -2079,7 +2101,7 @@ function fixFontsInFetchedContent(htmlContent, baseUrl) { // Process stylesheets Promise.all(Array.from(stylesheets).map(link => { - const href = new URL(link.getAttribute('href'), baseUrl).href; + const href = new URL(link.getAttribute('href')!, baseUrl).href; return fetchAndParseCss(href).then(css => { const fontFaceRules = extractFontFaceRules(css); return fontFaceRules.map(rule => modifyFontUrls(rule, href)); @@ -2117,17 +2139,17 @@ function fixFontsInFetchedContent(htmlContent, baseUrl) { // Return the original content for now (async operation will update later) return htmlContent; } -fixFontsInFetchedContent(fetchedHtml, baseUrl); +// fixFontsInFetchedContent(fetchedHtml, baseUrl); // Display the code -document.getElementById('codeBlock').textContent = fixFontsInFetchedContent.toString(); +document.getElementById('codeBlock')!.textContent = fixFontsInFetchedContent.toString(); // Generates a cryptographic key using the Web Crypto API which wil be used for the encryption and decryption of the request async function generateKey() { return await window.crypto.subtle.generateKey({ - name: "AES-GCM", - length: 256 - }, + name: "AES-GCM", + length: 256 + }, true, ["encrypt", "decrypt"] ); @@ -2138,9 +2160,9 @@ async function encryptData(data, key) { const encodedData = new TextEncoder().encode(data); const iv = window.crypto.getRandomValues(new Uint8Array(12)); const encryptedData = await window.crypto.subtle.encrypt({ - name: "AES-GCM", - iv: iv - }, + name: "AES-GCM", + iv: iv + }, key, encodedData ); @@ -2153,9 +2175,9 @@ async function encryptData(data, key) { async function decryptData(encryptedObj, key) { const decryptedData = await window.crypto.subtle.decrypt({ - name: "AES-GCM", - iv: new Uint8Array(encryptedObj.iv) - }, + name: "AES-GCM", + iv: new Uint8Array(encryptedObj.iv) + }, key, new Uint8Array(encryptedObj.encryptedData) ); @@ -2168,17 +2190,17 @@ function generateDataURL() { const htmlContent = document.documentElement.outerHTML; const dataURL = 'data:text/html;charset=utf-8,' + encodeURIComponent(htmlContent); - document.getElementById("dataURLText").value = dataURL; - document.getElementById("myModal").style.display = "flex"; - document.querySelector(".modal-contentgg").style.display = "block"; + (document.getElementById("dataURLText")! as HTMLInputElement).value = dataURL; + document.getElementById("myModal")!.style.display = "flex"; + (document.querySelector(".modal-contentgg")! as HTMLElement).style.display = "block"; } -document.getElementById("dataURL").addEventListener("click", generateDataURL); +document.getElementById("dataURL")!.addEventListener("click", generateDataURL); // Function to copy the data URL to clipboard function copyDataURL() { - const dataURLText = document.getElementById("dataURLText"); - const copyButton = document.getElementById("copyButton"); + const dataURLText = document.getElementById("dataURLText")! as HTMLInputElement; + const copyButton = document.getElementById("copyButton")!; dataURLText.select(); navigator.clipboard.writeText(dataURLText.value) @@ -2198,27 +2220,21 @@ function copyDataURL() { // Function to close the modal function closeModal() { - document.getElementById("myModal").style.display = "none"; - document.querySelector(".modal-contentgg").style.display = "none"; + document.getElementById("myModal")!.style.display = "none"; + (document.querySelector(".modal-contentgg")! as HTMLElement).style.display = "none"; } -document.getElementById("dataURL").addEventListener("click", generateDataURL); +document.getElementById("dataURL")!.addEventListener("click", generateDataURL); -window.onload = function() { - document.getElementById("myModal").style.display = "none"; - document.querySelector(".modal-contentgg").style.display = "none"; -}; +window.addEventListener('load',function () { + document.getElementById("myModal")!.style.display = "none"; + (document.querySelector(".modal-contentgg")! as HTMLElement).style.display = "none"; +}); // Function to switch categories -function showCategory(category) { - document.querySelectorAll('.content-containervv').forEach(content => { - content.classList.remove('activevv'); - }); - document.getElementById(category).classList.add('activevv'); -} -document.getElementById('clear-history').addEventListener('click', () => { +document.getElementById('clear-history')!.addEventListener('click', () => { // Clear localStorage and sessionStorage localStorage.clear(); sessionStorage.clear(); @@ -2230,7 +2246,7 @@ document.getElementById('clear-history').addEventListener('click', () => { }); // Display cleared message - const message = document.getElementById('cleared-message'); + const message = document.getElementById('cleared-message')!; message.style.display = 'block'; // Hide the message after 3 seconds @@ -2245,12 +2261,12 @@ function showCategory(categoryId) { document.querySelectorAll('.content-containervv').forEach(container => { container.classList.remove('activevv'); }); - document.getElementById(categoryId).classList.add('activevv'); + document.getElementById(categoryId)!.classList.add('activevv'); document.querySelectorAll('.sidebarvv button').forEach(button => { button.classList.remove('active'); }); - document.querySelector(`.sidebarvv button[onclick="showCategory('${categoryId}')"]`).classList.add('active'); + document.querySelector(`.sidebarvv button[onclick="showCategory('${categoryId}')"]`)!.classList.add('active'); } function sanitizeHtmlText(htmlText) { @@ -2262,7 +2278,7 @@ function sanitizeHtmlText(htmlText) { // Rule 2: Replace remaining � with é htmlText = htmlText.replace(/\uFFFD/g, 'é'); - console.log("After Rule 2 (replacing remaining � with é): ", htmlText); + console.log("After Rule 2 (replacing remaining � with é): ", htmlText); // Rule 3: Translate the redirection notice htmlText = htmlText.replace(/Avertissement de redirection/g, 'Redirect Notice');