diff --git a/packages/hoppscotch-agent/.envrc b/packages/hoppscotch-agent/.envrc new file mode 100644 index 000000000..5bf8fc159 --- /dev/null +++ b/packages/hoppscotch-agent/.envrc @@ -0,0 +1,3 @@ +source_url "https://raw.githubusercontent.com/cachix/devenv/95f329d49a8a5289d31e0982652f7058a189bfca/direnvrc" "sha256-d+8cBpDfDBj41inrADaJt+bDWhOktwslgoP5YiGJ1v0=" + +use devenv \ No newline at end of file diff --git a/packages/hoppscotch-agent/.gitignore b/packages/hoppscotch-agent/.gitignore new file mode 100644 index 000000000..e9f02db4e --- /dev/null +++ b/packages/hoppscotch-agent/.gitignore @@ -0,0 +1,33 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +# Devenv +.devenv* +devenv.local.nix + +# direnv +.direnv + +# pre-commit +.pre-commit-config.yaml diff --git a/packages/hoppscotch-agent/README.md b/packages/hoppscotch-agent/README.md new file mode 100644 index 000000000..5047afc64 --- /dev/null +++ b/packages/hoppscotch-agent/README.md @@ -0,0 +1,16 @@ +# Tauri + Vue + TypeScript + +This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` + + diff --git a/packages/hoppscotch-agent/package.json b/packages/hoppscotch-agent/package.json new file mode 100644 index 000000000..9771da943 --- /dev/null +++ b/packages/hoppscotch-agent/package.json @@ -0,0 +1,34 @@ +{ + "name": "hoppscotch-agent", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit && vite build", + "preview": "vite preview", + "tauri": "tauri" + }, + "dependencies": { + "@hoppscotch/ui": "^0.2.1", + "@tauri-apps/api": ">=2.0.0-rc.0", + "@tauri-apps/plugin-shell": ">=2.0.0-rc.0", + "@vueuse/core": "^11.1.0", + "axios": "^1.7.7", + "fp-ts": "^2.16.9", + "vue": "^3.3.4" + }, + "devDependencies": { + "@iconify-json/lucide": "^1.2.6", + "@tauri-apps/cli": ">=2.0.0-rc.0", + "@types/node": "^22.7.0", + "@vitejs/plugin-vue": "^5.1.4", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "tailwindcss": "^3.4.13", + "typescript": "^5.2.2", + "unplugin-icons": "^0.19.3", + "vite": "^5.4.7", + "vue-tsc": "^2.0.22" + } +} diff --git a/packages/hoppscotch-agent/pnpm-lock.yaml b/packages/hoppscotch-agent/pnpm-lock.yaml new file mode 100644 index 000000000..f64dd66fd --- /dev/null +++ b/packages/hoppscotch-agent/pnpm-lock.yaml @@ -0,0 +1,2952 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@hoppscotch/ui': + specifier: ^0.2.1 + version: 0.2.1(eslint@9.11.1(jiti@1.21.6))(terser@5.34.0)(typescript@5.6.2)(vite@5.4.7(@types/node@22.7.0)(terser@5.34.0))(vue@3.5.8(typescript@5.6.2)) + '@tauri-apps/api': + specifier: '>=2.0.0-rc.0' + version: 2.0.0-rc.5 + '@tauri-apps/plugin-shell': + specifier: '>=2.0.0-rc.0' + version: 2.0.0-rc.1 + '@vueuse/core': + specifier: ^11.1.0 + version: 11.1.0(vue@3.5.8(typescript@5.6.2)) + axios: + specifier: ^1.7.7 + version: 1.7.7 + fp-ts: + specifier: ^2.16.9 + version: 2.16.9 + vue: + specifier: ^3.3.4 + version: 3.5.8(typescript@5.6.2) + devDependencies: + '@iconify-json/lucide': + specifier: ^1.2.6 + version: 1.2.6 + '@tauri-apps/cli': + specifier: '>=2.0.0-rc.0' + version: 2.0.0-rc.16 + '@types/node': + specifier: ^22.7.0 + version: 22.7.0 + '@vitejs/plugin-vue': + specifier: ^5.1.4 + version: 5.1.4(vite@5.4.7(@types/node@22.7.0)(terser@5.34.0))(vue@3.5.8(typescript@5.6.2)) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + postcss: + specifier: ^8.4.47 + version: 8.4.47 + tailwindcss: + specifier: ^3.4.13 + version: 3.4.13 + typescript: + specifier: ^5.2.2 + version: 5.6.2 + unplugin-icons: + specifier: ^0.19.3 + version: 0.19.3(@vue/compiler-sfc@3.5.8) + vite: + specifier: ^5.4.7 + version: 5.4.7(@types/node@22.7.0)(terser@5.34.0) + vue-tsc: + specifier: ^2.0.22 + version: 2.1.6(typescript@5.6.2) + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@antfu/install-pkg@0.4.1': + resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/standalone@7.25.6': + resolution: {integrity: sha512-Kf2ZcZVqsKbtYhlA7sP0z5A3q5hmCVYMKMWRWNK/5OVwHIve3JY1djVRmIVAx8FMueLIfZGKQDIILK2w8zO4mg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + engines: {node: '>=6.9.0'} + + '@boringer-avatars/vue3@0.2.1': + resolution: {integrity: sha512-KzAfh31SDXToTvFL0tBNG5Ur+VzfD1PP4jmY5/GS+eIuObGTIAiUu9eiht0LjuAGI+0xCgnaEgsTrOx8H3vLOQ==} + peerDependencies: + vue: ^3.0.0 + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.6.0': + resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.1.0': + resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.11.1': + resolution: {integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.4': + resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.0': + resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@fontsource-variable/inter@5.1.0': + resolution: {integrity: sha512-Wj2dUGP0vUpxRGQTXQTCNJO+aLcFcQm+gUPXfj/aS877bQkEPBPv9JvZJpwdm2vzelt8NTZ+ausKlBCJjh2XIg==} + + '@fontsource-variable/material-symbols-rounded@5.1.0': + resolution: {integrity: sha512-gQZli8YyPTymXuAzMQ13d6Fzw9zQkMXIxqZyCrSeNLKfOpLVKXoh0LZ0SV9thOpZhR2KQURD8S1Y0YLUV6KZNw==} + + '@fontsource-variable/roboto-mono@5.1.0': + resolution: {integrity: sha512-87USlDpEi7dS/ayPXwf/08vdgJKEYxdQmuZk5kCzWBtumimdwWlA9Vh36TCtYqFC+dGgDxPX/4PJK+0lxkEd5A==} + + '@hoppscotch/ui@0.2.1': + resolution: {integrity: sha512-orwItZFlOZUFfMf0B7RNAQa2ByucnXcl9ufP0aJggyFafRk/X9eyMPC6JrF/OATml/ZztksjiB2636cMYsEnSw==} + engines: {node: '>=16'} + peerDependencies: + vue: ^3.2.25 + + '@hoppscotch/vue-sonner@1.2.3': + resolution: {integrity: sha512-P1gyvHHLsPeB8lsLP5SrqwQatuwOKtbsP83sKhyIV3WL2rJj3+DiFfqo2ErNBa+Sl0gM68o1V+wuOS7zbR//6g==} + + '@hoppscotch/vue-toasted@0.1.0': + resolution: {integrity: sha512-DIgmeTHxWwX5UeaHLEqDYNLJFGRosx/5N1fCHkaO8zt+sZv8GrHlkrIpjfKF2drmA3kKw5cY42Cw7WuCoabR3g==} + peerDependencies: + vue: ^3.2.37 + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.0': + resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} + engines: {node: '>=18.18'} + + '@iconify-json/lucide@1.2.6': + resolution: {integrity: sha512-HVLLxmG/rJ91GqpEE97OHdEwb/LfjwMVdynWIrnjvNRQNoKvrYG2N2+jABSBibEhnYQOfv+k8/7X6fK44PEtKA==} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@2.1.33': + resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + + '@rollup/rollup-android-arm-eabi@4.22.4': + resolution: {integrity: sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.22.4': + resolution: {integrity: sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.22.4': + resolution: {integrity: sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.22.4': + resolution: {integrity: sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.22.4': + resolution: {integrity: sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.22.4': + resolution: {integrity: sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.22.4': + resolution: {integrity: sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.22.4': + resolution: {integrity: sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.22.4': + resolution: {integrity: sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.22.4': + resolution: {integrity: sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.22.4': + resolution: {integrity: sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.22.4': + resolution: {integrity: sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.22.4': + resolution: {integrity: sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.22.4': + resolution: {integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.22.4': + resolution: {integrity: sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.22.4': + resolution: {integrity: sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==} + cpu: [x64] + os: [win32] + + '@tauri-apps/api@2.0.0-rc.5': + resolution: {integrity: sha512-JWs69pE9NsQdcqTpEVBepAZ08+jgQWuthIiTiaWRq/YlCLgnqq0KfC9sDem55uJ0YpgsytZuyj+m6b6q8oiD2g==} + + '@tauri-apps/cli-darwin-arm64@2.0.0-rc.16': + resolution: {integrity: sha512-lISZU4gG0c9PbY7h/j/gW7nJLxZEygNBrYEET6zN8R99Znf5rSO+CfjenaMcJUUj6yTAd8gzdakRpLqNSAWegA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tauri-apps/cli-darwin-x64@2.0.0-rc.16': + resolution: {integrity: sha512-D9uxPCxpyYcTSQulJGFX3POAKPOJd8WcWHFH8x6YVM1cIx6EWRXIE1sZnPUOjFr7qCg+bSdYdr8/BFHcZGcApQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.16': + resolution: {integrity: sha512-WsVdKm4D1I1XV8I9yRnmOINZRwwWfh6xcLV3m19+B9g6TohK8RkRxWfxvs3TLQlWOLQ6lo8BzS9rzXB+KtjDpg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.16': + resolution: {integrity: sha512-2jpZDagNs6rrqposHJihHBayttgOl5aB2+bYiVEC6ye+haiFtmYmpdaPOaVIw+YVQs6lepf5PVrisCoU9DmYsg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.16': + resolution: {integrity: sha512-SNEDcB+sWOls/B0a+UpUHVa/oegvlXXKYWsTxuXtgWIr5VbWG7rXLZ3fZpLLP3SpRVGTGTnABcyqshFbWSqqKQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.16': + resolution: {integrity: sha512-Zsq29MM1ooeH1+chQBa7ffDFnzAZebBBFdsvs4e05tS1H8gn4oKE+PSMn9p/okzVXykEk9ri2/n7BG1XFeifMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tauri-apps/cli-linux-x64-musl@2.0.0-rc.16': + resolution: {integrity: sha512-g+pwSuis2YMxhJJ/pJYwp/Nps5CWvlv/5MV5UfDvClkCkeAyzIqVX+HbBLPcs5S0CePUQNeP0j4d4jBWUqZZQg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.16': + resolution: {integrity: sha512-PpPqdMTwJSDAK4KnNjvh77ShSkY+7pih1f6e50EtXar8bjC17e3XcEqFhDNne5mxEVTLYhibs6p1JLPad0ZjRA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.16': + resolution: {integrity: sha512-io2yIcEcG7YLP+9n13NbilB93SjcB7jIl8GbURC4XZT4/4t9D1PWHpJr5hySVsGRLCz5e8NzwC5RlnenNzmpPQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.16': + resolution: {integrity: sha512-Rfkmxe3k+cBVA/kVYt8O25QrQqWKJlH9AiH7Q3C6xBzzG9PCSRMBszCp+JhBF8jhVlwNmOBv6UG+lm85kspwGg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tauri-apps/cli@2.0.0-rc.16': + resolution: {integrity: sha512-wdjZg/M3dcxiqgWG6VRnABpX0dYxRww93t0d1MYoZxFDrnyoUz5kYwFQ0v4J9u0qenEgskjoypvon7V/Nj9qrg==} + engines: {node: '>= 10'} + hasBin: true + + '@tauri-apps/plugin-shell@2.0.0-rc.1': + resolution: {integrity: sha512-JtNROc0rqEwN/g93ig5pK4cl1vUo2yn+osCpY9de64cy/d9hRzof7AuYOgvt/Xcd5VPQmlgo2AGvUh5sQRSR1A==} + + '@types/eslint@8.56.12': + resolution: {integrity: sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/node@22.7.0': + resolution: {integrity: sha512-MOdOibwBs6KW1vfqz2uKMlxq5xAfAZ98SZjO8e3XnAbFnTJtAspqhWk7hrdSAs9/Y14ZWMiy7/MxMUzAOadYEw==} + + '@types/web-bluetooth@0.0.14': + resolution: {integrity: sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==} + + '@types/web-bluetooth@0.0.20': + resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} + + '@vitejs/plugin-legacy@2.3.1': + resolution: {integrity: sha512-J5KaGBlSt2tEYPVjM/C8dA6DkRzkFkbPe+Xb4IX5G+XOV5OGbVAfkMjKywdrkO3gGynO8S98i71Lmsff4cWkCQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^3.0.0 + + '@vitejs/plugin-vue@5.1.4': + resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: ^3.2.25 + + '@volar/language-core@2.4.5': + resolution: {integrity: sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==} + + '@volar/source-map@2.4.5': + resolution: {integrity: sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==} + + '@volar/typescript@2.4.5': + resolution: {integrity: sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==} + + '@vue/compiler-core@3.5.8': + resolution: {integrity: sha512-Uzlxp91EPjfbpeO5KtC0KnXPkuTfGsNDeaKQJxQN718uz+RqDYarEf7UhQJGK+ZYloD2taUbHTI2J4WrUaZQNA==} + + '@vue/compiler-dom@3.5.8': + resolution: {integrity: sha512-GUNHWvoDSbSa5ZSHT9SnV5WkStWfzJwwTd6NMGzilOE/HM5j+9EB9zGXdtu/fCNEmctBqMs6C9SvVPpVPuk1Eg==} + + '@vue/compiler-sfc@3.5.8': + resolution: {integrity: sha512-taYpngQtSysrvO9GULaOSwcG5q821zCoIQBtQQSx7Uf7DxpR6CIHR90toPr9QfDD2mqHQPCSgoWBvJu0yV9zjg==} + + '@vue/compiler-ssr@3.5.8': + resolution: {integrity: sha512-W96PtryNsNG9u0ZnN5Q5j27Z/feGrFV6zy9q5tzJVyJaLiwYxvC0ek4IXClZygyhjm+XKM7WD9pdKi/wIRVC/Q==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/language-core@2.1.6': + resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/reactivity@3.5.8': + resolution: {integrity: sha512-mlgUyFHLCUZcAYkqvzYnlBRCh0t5ZQfLYit7nukn1GR96gc48Bp4B7OIcSfVSvlG1k3BPfD+p22gi1t2n9tsXg==} + + '@vue/runtime-core@3.5.8': + resolution: {integrity: sha512-fJuPelh64agZ8vKkZgp5iCkPaEqFJsYzxLk9vSC0X3G8ppknclNDr61gDc45yBGTaN5Xqc1qZWU3/NoaBMHcjQ==} + + '@vue/runtime-dom@3.5.8': + resolution: {integrity: sha512-DpAUz+PKjTZPUOB6zJgkxVI3GuYc2iWZiNeeHQUw53kdrparSTG6HeXUrYDjaam8dVsCdvQxDz6ZWxnyjccUjQ==} + + '@vue/server-renderer@3.5.8': + resolution: {integrity: sha512-7AmC9/mEeV9mmXNVyUIm1a1AjUhyeeGNbkLh39J00E7iPeGks8OGRB5blJiMmvqSh8SkaS7jkLWSpXtxUCeagA==} + peerDependencies: + vue: 3.5.8 + + '@vue/shared@3.5.8': + resolution: {integrity: sha512-mJleSWbAGySd2RJdX1RBtcrUBX6snyOc0qHpgk3lGi4l9/P/3ny3ELqFWqYdkXIwwNN/kdm8nD9ky8o6l/Lx2A==} + + '@vueuse/core@11.1.0': + resolution: {integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==} + + '@vueuse/core@8.9.4': + resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true + + '@vueuse/metadata@11.1.0': + resolution: {integrity: sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==} + + '@vueuse/metadata@8.9.4': + resolution: {integrity: sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==} + + '@vueuse/shared@11.1.0': + resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==} + + '@vueuse/shared@8.9.4': + resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==} + peerDependencies: + '@vue/composition-api': ^1.1.0 + vue: ^2.6.0 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue: + optional: true + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.0: + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + caniuse-lite@1.0.30001663: + resolution: {integrity: sha512-o9C3X27GLKbLeTYZ6HBOLU1tsAcBZsLis28wrVzddShCS16RujjHp9GDHKZqrB3meE0YjhawvMFsGb/igqiPzA==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + + concat-map@0.0.1: + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} + + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + + core-js@3.38.1: + resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.28: + resolution: {integrity: sha512-VufdJl+rzaKZoYVUijN13QcXVF5dWPZANeFTLNy+OSpHdDL5ynXTF35+60RSBbaQYB1ae723lQXHCrf4pyLsMw==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.11.1: + resolution: {integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.1.0: + resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + fp-ts@2.16.9: + resolution: {integrity: sha512-+I2+FnVB+tVaxcYyQkHUq7ZdKScaBlX53A41mxQtpIccsfyv8PzdzP7fzp2AY832T4aoK6UZ5WRX/ebGd8uZuQ==} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + magic-string@0.26.7: + resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} + engines: {node: '>=12'} + + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + package-manager-detector@0.2.0: + resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path@0.12.7: + resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-types@1.2.0: + resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + + rollup@4.22.4: + resolution: {integrity: sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sortablejs@1.14.0: + resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + + tailwindcss@3.4.13: + resolution: {integrity: sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==} + engines: {node: '>=14.0.0'} + hasBin: true + + terser@5.34.0: + resolution: {integrity: sha512-y5NUX+U9HhVsK/zihZwoq4r9dICLyV2jXGOriDAVOeKhq3LKVjgJbGO90FisozXLlJfvjHqgckGmJFBb9KYoWQ==} + engines: {node: '>=10'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} + hasBin: true + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + unplugin-icons@0.19.3: + resolution: {integrity: sha512-EUegRmsAI6+rrYr0vXjFlIP+lg4fSC4zb62zAZKx8FGXlWAGgEGBCa3JDe27aRAXhistObLPbBPhwa/0jYLFkQ==} + peerDependencies: + '@svgr/core': '>=7.0.0' + '@svgx/core': ^1.0.1 + '@vue/compiler-sfc': ^3.0.2 || ^2.7.0 + vue-template-compiler: ^2.6.12 + vue-template-es2015-compiler: ^1.9.0 + peerDependenciesMeta: + '@svgr/core': + optional: true + '@svgx/core': + optional: true + '@vue/compiler-sfc': + optional: true + vue-template-compiler: + optional: true + vue-template-es2015-compiler: + optional: true + + unplugin@1.14.1: + resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} + engines: {node: '>=14.0.0'} + peerDependencies: + webpack-sources: ^3 + peerDependenciesMeta: + webpack-sources: + optional: true + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + + vite-plugin-eslint@1.8.1: + resolution: {integrity: sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==} + peerDependencies: + eslint: '>=7' + vite: '>=2' + + vite@5.4.7: + resolution: {integrity: sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-promise-modals@0.1.0: + resolution: {integrity: sha512-LmPejeqvZSkxj4KkJe6ZUEJmCUQXVeEAj9ihTX+BRFfZftVCZSZd3B4uuZSKF0iCeQUemkodXUZFxcsNT/2dmg==} + + vue-tsc@2.1.6: + resolution: {integrity: sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.8: + resolution: {integrity: sha512-hvuvuCy51nP/1fSRvrrIqTLSvrSyz2Pq+KQ8S8SXCxTWVE0nMaOnSDnSOxV1eYmGfvK7mqiwvd1C59CEEz7dAQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + vuedraggable-es@4.1.1: + resolution: {integrity: sha512-F35pjSwC8HS/lnaOd+B59nYR4FZmwuhWAzccK9xftRuWds8SU1TZh5myKVM86j5dFOI7S26O64Kwe7LUHnXjlA==} + peerDependencies: + vue: ^3.2.31 + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + yaml@2.5.1: + resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + engines: {node: '>= 14'} + hasBin: true + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@antfu/install-pkg@0.4.1': + dependencies: + package-manager-detector: 0.2.0 + tinyexec: 0.3.0 + + '@antfu/utils@0.7.10': {} + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/parser@7.25.6': + dependencies: + '@babel/types': 7.25.6 + + '@babel/standalone@7.25.6': {} + + '@babel/types@7.25.6': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@boringer-avatars/vue3@0.2.1(vue@3.5.8(typescript@5.6.2))': + dependencies: + vue: 3.5.8(typescript@5.6.2) + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@1.21.6))': + dependencies: + eslint: 9.11.1(jiti@1.21.6) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.1': {} + + '@eslint/config-array@0.18.0': + dependencies: + '@eslint/object-schema': 2.1.4 + debug: 4.3.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.6.0': {} + + '@eslint/eslintrc@3.1.0': + dependencies: + ajv: 6.12.6 + debug: 4.3.7 + espree: 10.1.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.11.1': {} + + '@eslint/object-schema@2.1.4': {} + + '@eslint/plugin-kit@0.2.0': + dependencies: + levn: 0.4.1 + + '@fontsource-variable/inter@5.1.0': {} + + '@fontsource-variable/material-symbols-rounded@5.1.0': {} + + '@fontsource-variable/roboto-mono@5.1.0': {} + + '@hoppscotch/ui@0.2.1(eslint@9.11.1(jiti@1.21.6))(terser@5.34.0)(typescript@5.6.2)(vite@5.4.7(@types/node@22.7.0)(terser@5.34.0))(vue@3.5.8(typescript@5.6.2))': + dependencies: + '@boringer-avatars/vue3': 0.2.1(vue@3.5.8(typescript@5.6.2)) + '@fontsource-variable/inter': 5.1.0 + '@fontsource-variable/material-symbols-rounded': 5.1.0 + '@fontsource-variable/roboto-mono': 5.1.0 + '@hoppscotch/vue-sonner': 1.2.3 + '@hoppscotch/vue-toasted': 0.1.0(vue@3.5.8(typescript@5.6.2)) + '@vitejs/plugin-legacy': 2.3.1(terser@5.34.0)(vite@5.4.7(@types/node@22.7.0)(terser@5.34.0)) + '@vueuse/core': 8.9.4(vue@3.5.8(typescript@5.6.2)) + fp-ts: 2.16.9 + lodash-es: 4.17.21 + path: 0.12.7 + vite-plugin-eslint: 1.8.1(eslint@9.11.1(jiti@1.21.6))(vite@5.4.7(@types/node@22.7.0)(terser@5.34.0)) + vue: 3.5.8(typescript@5.6.2) + vue-promise-modals: 0.1.0(typescript@5.6.2) + vuedraggable-es: 4.1.1(vue@3.5.8(typescript@5.6.2)) + transitivePeerDependencies: + - '@vue/composition-api' + - eslint + - terser + - typescript + - vite + + '@hoppscotch/vue-sonner@1.2.3': {} + + '@hoppscotch/vue-toasted@0.1.0(vue@3.5.8(typescript@5.6.2))': + dependencies: + vue: 3.5.8(typescript@5.6.2) + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.0': {} + + '@iconify-json/lucide@1.2.6': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify/types@2.0.0': {} + + '@iconify/utils@2.1.33': + dependencies: + '@antfu/install-pkg': 0.4.1 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.3.7 + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.7.1 + transitivePeerDependencies: + - supports-color + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@rollup/rollup-android-arm-eabi@4.22.4': + optional: true + + '@rollup/rollup-android-arm64@4.22.4': + optional: true + + '@rollup/rollup-darwin-arm64@4.22.4': + optional: true + + '@rollup/rollup-darwin-x64@4.22.4': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.22.4': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.22.4': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.22.4': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.22.4': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.22.4': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.22.4': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.22.4': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.22.4': + optional: true + + '@rollup/rollup-linux-x64-musl@4.22.4': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.22.4': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.22.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.22.4': + optional: true + + '@tauri-apps/api@2.0.0-rc.5': {} + + '@tauri-apps/cli-darwin-arm64@2.0.0-rc.16': + optional: true + + '@tauri-apps/cli-darwin-x64@2.0.0-rc.16': + optional: true + + '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.16': + optional: true + + '@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.16': + optional: true + + '@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.16': + optional: true + + '@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.16': + optional: true + + '@tauri-apps/cli-linux-x64-musl@2.0.0-rc.16': + optional: true + + '@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.16': + optional: true + + '@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.16': + optional: true + + '@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.16': + optional: true + + '@tauri-apps/cli@2.0.0-rc.16': + optionalDependencies: + '@tauri-apps/cli-darwin-arm64': 2.0.0-rc.16 + '@tauri-apps/cli-darwin-x64': 2.0.0-rc.16 + '@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-rc.16 + '@tauri-apps/cli-linux-arm64-gnu': 2.0.0-rc.16 + '@tauri-apps/cli-linux-arm64-musl': 2.0.0-rc.16 + '@tauri-apps/cli-linux-x64-gnu': 2.0.0-rc.16 + '@tauri-apps/cli-linux-x64-musl': 2.0.0-rc.16 + '@tauri-apps/cli-win32-arm64-msvc': 2.0.0-rc.16 + '@tauri-apps/cli-win32-ia32-msvc': 2.0.0-rc.16 + '@tauri-apps/cli-win32-x64-msvc': 2.0.0-rc.16 + + '@tauri-apps/plugin-shell@2.0.0-rc.1': + dependencies: + '@tauri-apps/api': 2.0.0-rc.5 + + '@types/eslint@8.56.12': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.5': {} + + '@types/estree@1.0.6': {} + + '@types/json-schema@7.0.15': {} + + '@types/node@22.7.0': + dependencies: + undici-types: 6.19.8 + + '@types/web-bluetooth@0.0.14': {} + + '@types/web-bluetooth@0.0.20': {} + + '@vitejs/plugin-legacy@2.3.1(terser@5.34.0)(vite@5.4.7(@types/node@22.7.0)(terser@5.34.0))': + dependencies: + '@babel/standalone': 7.25.6 + core-js: 3.38.1 + magic-string: 0.26.7 + regenerator-runtime: 0.13.11 + systemjs: 6.15.1 + terser: 5.34.0 + vite: 5.4.7(@types/node@22.7.0)(terser@5.34.0) + + '@vitejs/plugin-vue@5.1.4(vite@5.4.7(@types/node@22.7.0)(terser@5.34.0))(vue@3.5.8(typescript@5.6.2))': + dependencies: + vite: 5.4.7(@types/node@22.7.0)(terser@5.34.0) + vue: 3.5.8(typescript@5.6.2) + + '@volar/language-core@2.4.5': + dependencies: + '@volar/source-map': 2.4.5 + + '@volar/source-map@2.4.5': {} + + '@volar/typescript@2.4.5': + dependencies: + '@volar/language-core': 2.4.5 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + + '@vue/compiler-core@3.5.8': + dependencies: + '@babel/parser': 7.25.6 + '@vue/shared': 3.5.8 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.8': + dependencies: + '@vue/compiler-core': 3.5.8 + '@vue/shared': 3.5.8 + + '@vue/compiler-sfc@3.5.8': + dependencies: + '@babel/parser': 7.25.6 + '@vue/compiler-core': 3.5.8 + '@vue/compiler-dom': 3.5.8 + '@vue/compiler-ssr': 3.5.8 + '@vue/shared': 3.5.8 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.47 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.8': + dependencies: + '@vue/compiler-dom': 3.5.8 + '@vue/shared': 3.5.8 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/language-core@2.1.6(typescript@5.6.2)': + dependencies: + '@volar/language-core': 2.4.5 + '@vue/compiler-dom': 3.5.8 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.8 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.6.2 + + '@vue/reactivity@3.5.8': + dependencies: + '@vue/shared': 3.5.8 + + '@vue/runtime-core@3.5.8': + dependencies: + '@vue/reactivity': 3.5.8 + '@vue/shared': 3.5.8 + + '@vue/runtime-dom@3.5.8': + dependencies: + '@vue/reactivity': 3.5.8 + '@vue/runtime-core': 3.5.8 + '@vue/shared': 3.5.8 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.8(vue@3.5.8(typescript@5.6.2))': + dependencies: + '@vue/compiler-ssr': 3.5.8 + '@vue/shared': 3.5.8 + vue: 3.5.8(typescript@5.6.2) + + '@vue/shared@3.5.8': {} + + '@vueuse/core@11.1.0(vue@3.5.8(typescript@5.6.2))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 11.1.0 + '@vueuse/shared': 11.1.0(vue@3.5.8(typescript@5.6.2)) + vue-demi: 0.14.10(vue@3.5.8(typescript@5.6.2)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/core@8.9.4(vue@3.5.8(typescript@5.6.2))': + dependencies: + '@types/web-bluetooth': 0.0.14 + '@vueuse/metadata': 8.9.4 + '@vueuse/shared': 8.9.4(vue@3.5.8(typescript@5.6.2)) + vue-demi: 0.14.10(vue@3.5.8(typescript@5.6.2)) + optionalDependencies: + vue: 3.5.8(typescript@5.6.2) + + '@vueuse/metadata@11.1.0': {} + + '@vueuse/metadata@8.9.4': {} + + '@vueuse/shared@11.1.0(vue@3.5.8(typescript@5.6.2))': + dependencies: + vue-demi: 0.14.10(vue@3.5.8(typescript@5.6.2)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/shared@8.9.4(vue@3.5.8(typescript@5.6.2))': + dependencies: + vue-demi: 0.14.10(vue@3.5.8(typescript@5.6.2)) + optionalDependencies: + vue: 3.5.8(typescript@5.6.2) + + acorn-jsx@5.3.2(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@5.0.2: {} + + argparse@2.0.1: {} + + asynckit@0.4.0: {} + + autoprefixer@10.4.20(postcss@8.4.47): + dependencies: + browserslist: 4.24.0 + caniuse-lite: 1.0.30001663 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.0 + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + binary-extensions@2.3.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.0: + dependencies: + caniuse-lite: 1.0.30001663 + electron-to-chromium: 1.5.28 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.24.0) + + buffer-from@1.1.2: {} + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} + + caniuse-lite@1.0.30001663: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@2.20.3: {} + + commander@4.1.1: {} + + computeds@0.0.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.7: {} + + core-js@3.38.1: {} + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + cssesc@3.0.0: {} + + csstype@3.1.3: {} + + de-indent@1.0.2: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + delayed-stream@1.0.0: {} + + didyoumean@1.2.2: {} + + dlv@1.1.3: {} + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.28: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + entities@4.5.0: {} + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-scope@8.0.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.0.0: {} + + eslint@9.11.1(jiti@1.21.6): + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/regexpp': 4.11.1 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.6.0 + '@eslint/eslintrc': 3.1.0 + '@eslint/js': 9.11.1 + '@eslint/plugin-kit': 0.2.0 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.3.0 + '@nodelib/fs.walk': 1.2.8 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.7 + escape-string-regexp: 4.0.0 + eslint-scope: 8.0.2 + eslint-visitor-keys: 4.0.0 + espree: 10.1.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + optionalDependencies: + jiti: 1.21.6 + transitivePeerDependencies: + - supports-color + + espree@10.1.0: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 4.0.0 + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flatted@3.3.1: {} + + follow-redirects@1.15.9: {} + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fp-ts@2.16.9: {} + + fraction.js@4.3.7: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + + globals@14.0.0: {} + + has-flag@4.0.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inherits@2.0.3: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.6: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kolorist@1.8.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + local-pkg@0.5.0: + dependencies: + mlly: 1.7.1 + pkg-types: 1.2.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.merge@4.6.2: {} + + lru-cache@10.4.3: {} + + magic-string@0.26.7: + dependencies: + sourcemap-codec: 1.4.8 + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minipass@7.1.2: {} + + mlly@1.7.1: + dependencies: + acorn: 8.12.1 + pathe: 1.1.2 + pkg-types: 1.2.0 + ufo: 1.5.4 + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + node-releases@2.0.18: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + package-json-from-dist@1.0.0: {} + + package-manager-detector@0.2.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path@0.12.7: + dependencies: + process: 0.11.10 + util: 0.10.4 + + pathe@1.1.2: {} + + picocolors@1.1.0: {} + + picomatch@2.3.1: {} + + pify@2.3.0: {} + + pirates@4.0.6: {} + + pkg-types@1.2.0: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + + postcss-import@15.1.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + postcss-js@4.0.1(postcss@8.4.47): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.47 + + postcss-load-config@4.0.2(postcss@8.4.47): + dependencies: + lilconfig: 3.1.2 + yaml: 2.5.1 + optionalDependencies: + postcss: 8.4.47 + + postcss-nested@6.2.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + process@0.11.10: {} + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regenerator-runtime@0.13.11: {} + + resolve-from@4.0.0: {} + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.0.4: {} + + rollup@2.79.1: + optionalDependencies: + fsevents: 2.3.3 + + rollup@4.22.4: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.22.4 + '@rollup/rollup-android-arm64': 4.22.4 + '@rollup/rollup-darwin-arm64': 4.22.4 + '@rollup/rollup-darwin-x64': 4.22.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.22.4 + '@rollup/rollup-linux-arm-musleabihf': 4.22.4 + '@rollup/rollup-linux-arm64-gnu': 4.22.4 + '@rollup/rollup-linux-arm64-musl': 4.22.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.22.4 + '@rollup/rollup-linux-riscv64-gnu': 4.22.4 + '@rollup/rollup-linux-s390x-gnu': 4.22.4 + '@rollup/rollup-linux-x64-gnu': 4.22.4 + '@rollup/rollup-linux-x64-musl': 4.22.4 + '@rollup/rollup-win32-arm64-msvc': 4.22.4 + '@rollup/rollup-win32-ia32-msvc': 4.22.4 + '@rollup/rollup-win32-x64-msvc': 4.22.4 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + semver@7.6.3: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + signal-exit@4.1.0: {} + + sortablejs@1.14.0: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + sourcemap-codec@1.4.8: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-json-comments@3.1.1: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + systemjs@6.15.1: {} + + tailwindcss@3.4.13: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.6 + lilconfig: 2.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.0 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47) + postcss-nested: 6.2.0(postcss@8.4.47) + postcss-selector-parser: 6.1.2 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + terser@5.34.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + tinyexec@0.3.0: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-interface-checker@0.1.13: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typescript@5.6.2: {} + + ufo@1.5.4: {} + + undici-types@6.19.8: {} + + unplugin-icons@0.19.3(@vue/compiler-sfc@3.5.8): + dependencies: + '@antfu/install-pkg': 0.4.1 + '@antfu/utils': 0.7.10 + '@iconify/utils': 2.1.33 + debug: 4.3.7 + kolorist: 1.8.0 + local-pkg: 0.5.0 + unplugin: 1.14.1 + optionalDependencies: + '@vue/compiler-sfc': 3.5.8 + transitivePeerDependencies: + - supports-color + - webpack-sources + + unplugin@1.14.1: + dependencies: + acorn: 8.12.1 + webpack-virtual-modules: 0.6.2 + + update-browserslist-db@1.1.0(browserslist@4.24.0): + dependencies: + browserslist: 4.24.0 + escalade: 3.2.0 + picocolors: 1.1.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + util@0.10.4: + dependencies: + inherits: 2.0.3 + + vite-plugin-eslint@1.8.1(eslint@9.11.1(jiti@1.21.6))(vite@5.4.7(@types/node@22.7.0)(terser@5.34.0)): + dependencies: + '@rollup/pluginutils': 4.2.1 + '@types/eslint': 8.56.12 + eslint: 9.11.1(jiti@1.21.6) + rollup: 2.79.1 + vite: 5.4.7(@types/node@22.7.0)(terser@5.34.0) + + vite@5.4.7(@types/node@22.7.0)(terser@5.34.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.22.4 + optionalDependencies: + '@types/node': 22.7.0 + fsevents: 2.3.3 + terser: 5.34.0 + + vscode-uri@3.0.8: {} + + vue-demi@0.14.10(vue@3.5.8(typescript@5.6.2)): + dependencies: + vue: 3.5.8(typescript@5.6.2) + + vue-promise-modals@0.1.0(typescript@5.6.2): + dependencies: + vue: 3.5.8(typescript@5.6.2) + transitivePeerDependencies: + - typescript + + vue-tsc@2.1.6(typescript@5.6.2): + dependencies: + '@volar/typescript': 2.4.5 + '@vue/language-core': 2.1.6(typescript@5.6.2) + semver: 7.6.3 + typescript: 5.6.2 + + vue@3.5.8(typescript@5.6.2): + dependencies: + '@vue/compiler-dom': 3.5.8 + '@vue/compiler-sfc': 3.5.8 + '@vue/runtime-dom': 3.5.8 + '@vue/server-renderer': 3.5.8(vue@3.5.8(typescript@5.6.2)) + '@vue/shared': 3.5.8 + optionalDependencies: + typescript: 5.6.2 + + vuedraggable-es@4.1.1(vue@3.5.8(typescript@5.6.2)): + dependencies: + sortablejs: 1.14.0 + vue: 3.5.8(typescript@5.6.2) + + webpack-virtual-modules@0.6.2: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + yaml@2.5.1: {} + + yocto-queue@0.1.0: {} diff --git a/packages/hoppscotch-agent/postcss.config.js b/packages/hoppscotch-agent/postcss.config.js new file mode 100644 index 000000000..2e7af2b7f --- /dev/null +++ b/packages/hoppscotch-agent/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/packages/hoppscotch-agent/public/tauri.svg b/packages/hoppscotch-agent/public/tauri.svg new file mode 100644 index 000000000..31b62c928 --- /dev/null +++ b/packages/hoppscotch-agent/public/tauri.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/packages/hoppscotch-agent/public/vite.svg b/packages/hoppscotch-agent/public/vite.svg new file mode 100644 index 000000000..e7b8dfb1b --- /dev/null +++ b/packages/hoppscotch-agent/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/hoppscotch-agent/src-tauri/.gitignore b/packages/hoppscotch-agent/src-tauri/.gitignore new file mode 100644 index 000000000..b21bd681d --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/.gitignore @@ -0,0 +1,7 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Generated by Tauri +# will have schema files for capabilities auto-completion +/gen/schemas diff --git a/packages/hoppscotch-agent/src-tauri/Cargo.lock b/packages/hoppscotch-agent/src-tauri/Cargo.lock new file mode 100644 index 000000000..6225cfb67 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/Cargo.lock @@ -0,0 +1,6070 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + +[[package]] +name = "anstyle-parse" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + +[[package]] +name = "ashpd" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" +dependencies = [ + "enumflags2", + "futures-channel", + "futures-util", + "rand 0.8.5", + "serde", + "serde_repr", + "tokio", + "url", + "zbus", +] + +[[package]] +name = "assert-json-diff" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "async-broadcast" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-io" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", + "tracing", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "async-signal" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "atk" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "auto-launch" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f012b8cc0c850f34117ec8252a44418f2e34a2cf501de89e29b241ae5f79471" +dependencies = [ + "dirs 4.0.0", + "thiserror", + "winreg 0.10.1", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "axum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f43644eed690f5374f1af436ecd6aea01cd201f6fbdf0178adaf6907afb2cec" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa 1.0.11", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "tokio", + "tower 0.5.1", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6b8ba012a258d63c9adfa28b9ddcf66149da6f986c5b5452e629d5ee64bf00" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.1", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-extra" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73c3220b188aea709cf1b6c5f9b01c3bd936bb08bd2b5184a12b35ac8131b1f9" +dependencies = [ + "axum", + "axum-core", + "bytes", + "futures-util", + "headers", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "serde", + "tower 0.5.1", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide 0.8.0", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base16" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27c3610c36aee21ce8ac510e6224498de4228ad772a171ed65643a24693a5a8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "brotli" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.6.0", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cargo_toml" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" +dependencies = [ + "serde", + "toml 0.8.2", +] + +[[package]] +name = "cc" +version = "1.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07b1695e2c7e8fc85310cde85aeaab7e3097f593c91d209d3f9df76c928100f0" +dependencies = [ + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.6", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "cocoa" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" +dependencies = [ + "bitflags 2.6.0", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types 0.5.0", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-foundation", + "core-graphics-types", + "libc", + "objc", +] + +[[package]] +name = "colorchoice" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" + +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa 0.4.8", + "matches", + "phf 0.8.0", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.77", +] + +[[package]] +name = "ctor" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" +dependencies = [ + "quote", + "syn 2.0.77", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curl" +version = "0.4.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e2161dd6eba090ff1594084e95fd67aeccf04382ffea77999ea94ed42ec67b6" +dependencies = [ + "curl-sys", + "libc", + "openssl-probe", + "openssl-sys", + "schannel", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "curl-sys" +version = "0.4.76+curl-8.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00462dbe9cbb9344e1b2be34d9094d74e3b8aac59a883495b335eafd02e25120" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", + "windows-sys 0.52.0", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.77", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", + "serde", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.77", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys 0.3.7", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "dlopen2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "embed-resource" +version = "2.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4edcacde9351c33139a41e3c97eb2334351a81a2791bebb0b243df837128f602" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 0.8.2", + "vswhom", + "winreg 0.52.0", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "env_filter" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" +dependencies = [ + "log", + "regex", +] + +[[package]] +name = "env_logger" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" +dependencies = [ + "anstream", + "anstyle", + "env_filter", + "humantime", + "log", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "erased-serde" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" + +[[package]] +name = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", +] + +[[package]] +name = "flate2" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" +dependencies = [ + "crc32fast", + "miniz_oxide 0.8.0", +] + +[[package]] +name = "fluent-uri" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generator" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" +dependencies = [ + "cc", + "libc", + "log", + "rustversion", + "windows 0.48.0", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + +[[package]] +name = "gimli" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.6.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "h2" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.5.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "headers" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9" +dependencies = [ + "base64 0.21.7", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" +dependencies = [ + "http", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hoppscotch-agent" +version = "0.1.0" +dependencies = [ + "aes-gcm", + "axum", + "axum-extra", + "base16", + "chrono", + "curl", + "dashmap", + "env_logger", + "http", + "lazy_static", + "log", + "mockito", + "openssl", + "openssl-sys", + "rand 0.8.5", + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-autostart", + "tauri-plugin-dialog", + "tauri-plugin-shell", + "tauri-plugin-store", + "tauri-plugin-updater", + "thiserror", + "tokio", + "tokio-util", + "tower-http", + "url-escape", + "uuid", + "x25519-dalek", +] + +[[package]] +name = "html5ever" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.11", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "hyper" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa 1.0.11", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-util" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower 0.4.13", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" +dependencies = [ + "byteorder", + "png", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "image" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10" +dependencies = [ + "bytemuck", + "byteorder-lite", + "num-traits", + "png", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", + "serde", +] + +[[package]] +name = "infer" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" +dependencies = [ + "cfb", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "js-sys" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "jsonptr" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627" +dependencies = [ + "fluent-uri", + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.6.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kuchikiki" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" +dependencies = [ + "cssparser", + "html5ever", + "indexmap 1.9.3", + "matches", + "selectors", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.158" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", + "redox_syscall", +] + +[[package]] +name = "libz-sys" +version = "1.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "loom" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "markup5ever" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +dependencies = [ + "log", + "phf 0.10.1", + "phf_codegen 0.10.0", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minisign-verify" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a05b5d0594e0cb1ad8cee3373018d2b84e25905dc75b2468114cc9a8e86cfc20" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "mockito" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b34bd91b9e5c5b06338d392463e1318d683cf82ec3d3af4014609be6e2108d" +dependencies = [ + "assert-json-diff", + "bytes", + "colored", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "log", + "rand 0.8.5", + "regex", + "serde_json", + "serde_urlencoded", + "similar", + "tokio", +] + +[[package]] +name = "muda" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba8ac4080fb1e097c2c22acae467e46e4da72d941f02e82b67a87a2a89fa38b1" +dependencies = [ + "cocoa", + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc", + "once_cell", + "png", + "serde", + "thiserror", + "windows-sys 0.59.0", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "libc", + "memoffset", +] + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate 2.0.2", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "object" +version = "0.36.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "open" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" +dependencies = [ + "is-wsl", + "libc", + "pathdiff", +] + +[[package]] +name = "openssl" +version = "0.10.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "foreign-types 0.3.2", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-src" +version = "300.3.2+3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a211a18d945ef7e648cc6e0058f4c548ee46aab922ea203e0d30e966ea23647b" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "os_pipe" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_macros 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared 0.10.0", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros 0.11.2", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared 0.11.2", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "plist" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" +dependencies = [ + "base64 0.22.1", + "indexmap 2.5.0", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide 0.7.4", +] + +[[package]] +name = "polling" +version = "3.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi 0.4.0", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" +dependencies = [ + "memchr", +] + +[[package]] +name = "quinn" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +dependencies = [ + "bytes", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring", + "rustc-hash", + "rustls", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +dependencies = [ + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.4", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "reqwest" +version = "0.12.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pemfile", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper 1.0.1", + "tokio", + "tokio-rustls", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "webpki-roots", + "windows-registry", +] + +[[package]] +name = "rfd" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251" +dependencies = [ + "ashpd", + "block", + "dispatch", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "log", + "objc", + "objc-foundation", + "objc_id", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.48.0", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.15", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.23.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.77", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "selectors" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +dependencies = [ + "bitflags 1.3.2", + "cssparser", + "derive_more", + "fxhash", + "log", + "matches", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc", + "smallvec", + "thin-slice", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + +[[package]] +name = "serde_derive" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa 1.0.11", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa 1.0.11", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.11", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.5.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "servo_arc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shared_child" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "similar" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "softbuffer" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +dependencies = [ + "bytemuck", + "cfg_aliases", + "core-graphics", + "foreign-types 0.5.0", + "js-sys", + "log", + "objc2", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "wasm-bindgen", + "web-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "state" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" +dependencies = [ + "loom", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e48d7c56b3f7425d061886e8ce3b6acfab1993682ed70bef50fd133d721ee6" +dependencies = [ + "bitflags 2.6.0", + "cocoa", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dispatch", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "instant", + "jni", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc", + "once_cell", + "parking_lot", + "raw-window-handle", + "scopeguard", + "tao-macros", + "unicode-segmentation", + "url", + "windows 0.58.0", + "windows-core 0.58.0", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "tar" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ff6c40d3aedb5e06b57c6f669ad17ab063dd1e63d977c6a88e7f4dfa4f04020" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.0.0-rc.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3c3b1c7ac5b72d59da307b84af900a0098c74c9d7369f65018cd8ec0eb50fb" +dependencies = [ + "anyhow", + "bytes", + "dirs 5.0.1", + "dunce", + "embed_plist", + "futures-util", + "getrandom 0.2.15", + "glob", + "gtk", + "heck 0.5.0", + "http", + "image", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "state", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror", + "tokio", + "tray-icon", + "url", + "urlpattern", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows 0.58.0", +] + +[[package]] +name = "tauri-build" +version = "2.0.0-rc.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5713e81e02e0b99f5219b275abbd7d2c0cc0f30180e25b1b650e08feeac63" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs 5.0.1", + "glob", + "heck 0.5.0", + "json-patch", + "schemars", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "toml 0.8.2", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.0.0-rc.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5370f2591dcc93d4ff08d9dd168f5097f79b34e859883586a409c627544190e3" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.77", + "tauri-utils", + "thiserror", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.0.0-rc.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19442dc8ee002ab1926586f6aecb90114f3a1226766008b0c9ac2d9fec9eeb7e" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.77", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.0.0-rc.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e3368e91a98aa55ea4e3e8ccff516bc1ed2f85872c335ec35e9b345469032e0" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars", + "serde", + "serde_json", + "tauri-utils", + "toml 0.8.2", + "walkdir", +] + +[[package]] +name = "tauri-plugin-autostart" +version = "2.0.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "992fef0cc6ef3637a8b336c9bf9758b8e718db934afd744846422c1da877dac0" +dependencies = [ + "auto-launch", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror", +] + +[[package]] +name = "tauri-plugin-dialog" +version = "2.0.0-rc.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "785722c81beb4a6b729ae55d06aeb68d47166c933e64b727e33254dcb5d4d82d" +dependencies = [ + "log", + "raw-window-handle", + "rfd", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror", + "url", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.0.0-rc.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cb1dfbbea322afbc9dec49351bc29edf4e85e74d37d9a3fcc72d67ed55ffdbd" +dependencies = [ + "anyhow", + "dunce", + "glob", + "percent-encoding", + "schemars", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "thiserror", + "url", + "uuid", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.0.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83800ddf78b820172efb5ed7310344e8e4f97fd30cd8237a3f20c12a79eb136" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror", + "tokio", +] + +[[package]] +name = "tauri-plugin-store" +version = "2.0.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e54ba1a0c0c60a6a08e711e184239f8a50354988b6fe1af8b5ce2215b2e79a2" +dependencies = [ + "dunce", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror", +] + +[[package]] +name = "tauri-plugin-updater" +version = "2.0.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391ebb8ae8cd6aec44b5d96d3005659d88cde69c57326f639bbc660116a30d63" +dependencies = [ + "base64 0.22.1", + "dirs 5.0.1", + "flate2", + "futures-util", + "http", + "infer", + "minisign-verify", + "reqwest", + "semver", + "serde", + "serde_json", + "tar", + "tauri", + "tauri-plugin", + "tempfile", + "thiserror", + "time", + "tokio", + "url", + "windows-sys 0.59.0", + "zip", +] + +[[package]] +name = "tauri-runtime" +version = "2.0.0-rc.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f38d8aaa1e81d20e8e208e3e317f81b59fb75c530fbae8a90e72d02001d687" +dependencies = [ + "dpi", + "gtk", + "http", + "jni", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror", + "url", + "windows 0.58.0", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.0.0-rc.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1ef5171e14c8fe3b5a63e75004c20d057747bc3e7fdc5f8ded625f0b29f5c7" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows 0.58.0", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.0.0-rc.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31fe4c9148e1b35225e1c00753f24b517ce00041d02eb4b4d6fd10613a47736c" +dependencies = [ + "brotli", + "cargo_metadata", + "ctor", + "dunce", + "glob", + "html5ever", + "infer", + "json-patch", + "kuchikiki", + "log", + "memchr", + "phf 0.11.2", + "proc-macro2", + "quote", + "regex", + "schemars", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror", + "toml 0.8.2", + "url", + "urlpattern", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" +dependencies = [ + "embed-resource", + "toml 0.7.8", +] + +[[package]] +name = "tempfile" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thin-slice" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" + +[[package]] +name = "thiserror" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa 1.0.11", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.5.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.5.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 0.1.2", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97" +dependencies = [ + "bitflags 2.6.0", + "bytes", + "http", + "pin-project-lite", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "tray-icon" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "044d7738b3d50f288ddef035b793228740ad4d927f5466b0af55dc15e7e03cfe" +dependencies = [ + "core-graphics", + "crossbeam-channel", + "dirs 5.0.1", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror", + "windows-sys 0.59.0", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "url-escape" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44e0ce4d1246d075ca5abec4b41d33e87a6054d08e2366b63205665e950db218" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +dependencies = [ + "getrandom 0.2.15", + "rand 0.8.5", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.77", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" + +[[package]] +name = "wasm-streams" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webpki-roots" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "webview2-com" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows 0.58.0", + "windows-core 0.58.0", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "webview2-com-sys" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" +dependencies = [ + "thiserror", + "windows 0.58.0", + "windows-core 0.58.0", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ea403deff7b51fff19e261330f71608ff2cdef5721d72b64180bb95be7c4150" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-version" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wry" +version = "0.43.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4d715cf5fe88e9647f3d17b207b6d060d4a88e7171d4ccb2d2c657dd1d44728" +dependencies = [ + "base64 0.22.1", + "block", + "cocoa", + "core-graphics", + "crossbeam-channel", + "dpi", + "dunce", + "gdkx11", + "gtk", + "html5ever", + "http", + "javascriptcore-rs", + "jni", + "kuchikiki", + "libc", + "ndk", + "objc", + "objc_id", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows 0.58.0", + "windows-core 0.58.0", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core 0.6.4", + "serde", + "zeroize", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "zbus" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030" +dependencies = [ + "async-broadcast", + "async-process", + "async-recursion", + "async-trait", + "derivative", + "enumflags2", + "event-listener", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "ordered-stream", + "rand 0.8.5", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tokio", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "zip" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "indexmap 2.5.0", + "memchr", + "thiserror", +] + +[[package]] +name = "zvariant" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "url", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/packages/hoppscotch-agent/src-tauri/Cargo.toml b/packages/hoppscotch-agent/src-tauri/Cargo.toml new file mode 100644 index 000000000..df1af81da --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/Cargo.toml @@ -0,0 +1,49 @@ +[package] +name = "hoppscotch-agent" +version = "0.1.0" +description = "A cross-platform HTTP request agent for Hoppscotch for advanced request handling including custom headers, certificates, proxies, and local system integration." +authors = ["CuriousCorrelation", "AndrewBastin"] +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +name = "hoppscotch_agent_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2.0.0-rc", features = [] } + +[dependencies] +tauri = { version = "2.0.0-rc.0", features = ["tray-icon", "image-png"] } +tauri-plugin-shell = "2.0.0-rc" +tauri-plugin-autostart = "2.0.0-rc" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +tokio = { version = "1.40.0", features = ["full"] } +dashmap = { version = "6.1.0", features = ["serde"] } +axum = { version = "0.7.6" } +axum-extra = { version = "0.9.4", features = ["typed-header"] } +tower-http = { version = "0.6.1", features = ["cors"] } +tokio-util = "0.7.12" +uuid = { version = "1.10.0", features = [ "v4", "fast-rng" ] } +chrono = { version = "0.4", features = ["serde"] } +rand = "0.8.5" +log = "0.4.22" +env_logger = "0.11.5" +curl = { version = "0.4.46", features = ["ntlm", "static-curl", "static-ssl"] } +openssl = { version = "0.10.66", features = ["vendored"] } +openssl-sys = { version = "0.9.103", features = ["vendored"] } +url-escape = "0.1.1" +thiserror = "1.0.64" +tauri-plugin-store = "2.0.0-rc.3" +x25519-dalek = { version = "2.0.1", features = ["getrandom"] } +base16 = "0.2.1" +aes-gcm = { version = "0.10.3", features = ["aes"] } +tauri-plugin-updater = "2.0.0-rc.3" +tauri-plugin-dialog = "2.0.0-rc.7" +http = "1.1.0" +lazy_static = "1.5.0" + +[dev-dependencies] +mockito = "1.5.0" diff --git a/packages/hoppscotch-agent/src-tauri/build.rs b/packages/hoppscotch-agent/src-tauri/build.rs new file mode 100644 index 000000000..65c5c67e6 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/build.rs @@ -0,0 +1,5 @@ +fn main() { + tauri_build::build(); + println!("cargo::rerun-if-env-changed=UPDATER_PUB_KEY"); + println!("cargo::rerun-if-env-changed=UPDATER_URL"); +} diff --git a/packages/hoppscotch-agent/src-tauri/capabilities/default.json b/packages/hoppscotch-agent/src-tauri/capabilities/default.json new file mode 100644 index 000000000..e706c0f21 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/capabilities/default.json @@ -0,0 +1,13 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Capability for the main window", + "windows": ["main", "test"], + "permissions": [ + "core:default", + "shell:allow-open", + "core:window:allow-close", + "core:window:allow-set-focus", + "core:window:allow-set-always-on-top" + ] +} diff --git a/packages/hoppscotch-agent/src-tauri/icons/128x128.png b/packages/hoppscotch-agent/src-tauri/icons/128x128.png new file mode 100644 index 000000000..3778416df Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/128x128.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/128x128@2x.png b/packages/hoppscotch-agent/src-tauri/icons/128x128@2x.png new file mode 100644 index 000000000..e5b884652 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/128x128@2x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/32x32.png b/packages/hoppscotch-agent/src-tauri/icons/32x32.png new file mode 100644 index 000000000..e553d90f7 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/32x32.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/Square107x107Logo.png b/packages/hoppscotch-agent/src-tauri/icons/Square107x107Logo.png new file mode 100644 index 000000000..e8e31c233 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/Square107x107Logo.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/Square142x142Logo.png b/packages/hoppscotch-agent/src-tauri/icons/Square142x142Logo.png new file mode 100644 index 000000000..938bf8dc6 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/Square142x142Logo.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/Square150x150Logo.png b/packages/hoppscotch-agent/src-tauri/icons/Square150x150Logo.png new file mode 100644 index 000000000..647408c58 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/Square150x150Logo.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/Square284x284Logo.png b/packages/hoppscotch-agent/src-tauri/icons/Square284x284Logo.png new file mode 100644 index 000000000..a898743cc Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/Square284x284Logo.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/Square30x30Logo.png b/packages/hoppscotch-agent/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 000000000..e1a1f772b Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/Square30x30Logo.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/Square310x310Logo.png b/packages/hoppscotch-agent/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 000000000..69bf56b18 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/Square310x310Logo.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/Square44x44Logo.png b/packages/hoppscotch-agent/src-tauri/icons/Square44x44Logo.png new file mode 100644 index 000000000..bb5b89519 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/Square44x44Logo.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/Square71x71Logo.png b/packages/hoppscotch-agent/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 000000000..68541683f Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/Square71x71Logo.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/Square89x89Logo.png b/packages/hoppscotch-agent/src-tauri/icons/Square89x89Logo.png new file mode 100644 index 000000000..94a65e2a4 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/Square89x89Logo.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/StoreLogo.png b/packages/hoppscotch-agent/src-tauri/icons/StoreLogo.png new file mode 100644 index 000000000..db4b61ba5 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/StoreLogo.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..b334e000a Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 000000000..ea31185cd Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 000000000..b334e000a Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..ee4bfd7da Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 000000000..794a5c62d Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 000000000..ee4bfd7da Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..fbef3290a Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 000000000..9aee0bf90 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 000000000..fbef3290a Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..d63d25bcb Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 000000000..1443a0c15 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 000000000..d63d25bcb Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..3e0f1c398 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 000000000..5f449d412 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 000000000..3e0f1c398 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/icon.icns b/packages/hoppscotch-agent/src-tauri/icons/icon.icns new file mode 100644 index 000000000..293556d77 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/icon.icns differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/icon.ico b/packages/hoppscotch-agent/src-tauri/icons/icon.ico new file mode 100644 index 000000000..3e3249c9d Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/icon.ico differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/icon.png b/packages/hoppscotch-agent/src-tauri/icons/icon.png new file mode 100644 index 000000000..a91230bbc Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/icon.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@1x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@1x.png new file mode 100644 index 000000000..e63a928c1 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@1x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@2x-1.png new file mode 100644 index 000000000..8caffb7b0 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@2x-1.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@2x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@2x.png new file mode 100644 index 000000000..8caffb7b0 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@2x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@3x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@3x.png new file mode 100644 index 000000000..c51270a05 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-20x20@3x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@1x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@1x.png new file mode 100644 index 000000000..c89515b2f Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@1x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@2x-1.png new file mode 100644 index 000000000..4c23c6878 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@2x-1.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@2x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@2x.png new file mode 100644 index 000000000..4c23c6878 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@2x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@3x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@3x.png new file mode 100644 index 000000000..cd117af20 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-29x29@3x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@1x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@1x.png new file mode 100644 index 000000000..8caffb7b0 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@1x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@2x-1.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@2x-1.png new file mode 100644 index 000000000..9f5c51d78 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@2x-1.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@2x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@2x.png new file mode 100644 index 000000000..9f5c51d78 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@2x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@3x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@3x.png new file mode 100644 index 000000000..97738c12d Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-40x40@3x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-512@2x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-512@2x.png new file mode 100644 index 000000000..ed29af682 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-512@2x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-60x60@2x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-60x60@2x.png new file mode 100644 index 000000000..97738c12d Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-60x60@2x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-60x60@3x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-60x60@3x.png new file mode 100644 index 000000000..6eb833364 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-60x60@3x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-76x76@1x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-76x76@1x.png new file mode 100644 index 000000000..38d7d795d Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-76x76@1x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-76x76@2x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-76x76@2x.png new file mode 100644 index 000000000..4dbf0d792 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-76x76@2x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png new file mode 100644 index 000000000..aed361332 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png differ diff --git a/packages/hoppscotch-agent/src-tauri/icons/tray_icon.png b/packages/hoppscotch-agent/src-tauri/icons/tray_icon.png new file mode 100644 index 000000000..b29857f47 Binary files /dev/null and b/packages/hoppscotch-agent/src-tauri/icons/tray_icon.png differ diff --git a/packages/hoppscotch-agent/src-tauri/src/controller.rs b/packages/hoppscotch-agent/src-tauri/src/controller.rs new file mode 100644 index 000000000..887a0637f --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/controller.rs @@ -0,0 +1,219 @@ +use axum::{ + body::Bytes, + extract::{Path, State}, + http::HeaderMap, + Json, +}; +use axum_extra::{ + headers::{authorization::Bearer, Authorization}, + TypedHeader, +}; +use std::sync::Arc; +use tauri::{AppHandle, Emitter}; +use x25519_dalek::{EphemeralSecret, PublicKey}; + +use crate::{ + error::{AppError, AppResult}, + model::{ + AuthKeyResponse, ConfirmedRegistrationRequest, HandshakeResponse, RequestDef, + RunRequestResponse, + }, + state::{AppState, Registration}, + util::EncryptedJson, +}; +use chrono::Utc; +use rand::Rng; +use serde_json::json; +use uuid::Uuid; + +fn generate_otp() -> String { + let otp: u32 = rand::thread_rng().gen_range(0..1_000_000); + + format!("{:06}", otp) +} + +pub async fn handshake( + State((_, app_handle)): State<(Arc, AppHandle)> +) -> AppResult> { + Ok(Json(HandshakeResponse { + status: "success".to_string(), + __hoppscotch__agent__: true, + agent_version: app_handle.package_info().version.to_string() + + })) +} + +pub async fn receive_registration( + State((state, app_handle)): State<(Arc, AppHandle)>, +) -> AppResult> { + let otp = generate_otp(); + + let mut active_registration_code = state.active_registration_code.write().await; + + if !active_registration_code.is_none() { + return Ok(Json( + json!({ "message": "There is already an existing registration happening" }), + )); + } + + *active_registration_code = Some(otp.clone()); + + app_handle + .emit("registration_received", otp) + .map_err(|_| AppError::InternalServerError)?; + + Ok(Json( + json!({ "message": "Registration received and stored" }), + )) +} + +pub async fn verify_registration( + State((state, app_handle)): State<(Arc, AppHandle)>, + Json(confirmed_registration): Json, +) -> AppResult> { + state + .validate_registration(&confirmed_registration.registration) + .await + .then_some(()) + .ok_or(AppError::InvalidRegistration)?; + + let auth_key = Uuid::new_v4().to_string(); + let created_at = Utc::now(); + + let auth_key_copy = auth_key.clone(); + + let agent_secret_key = EphemeralSecret::random(); + let agent_public_key = PublicKey::from(&agent_secret_key); + + let their_public_key = { + let public_key_slice: &[u8; 32] = &base16::decode(&confirmed_registration.client_public_key_b16) + .map_err(|_| AppError::InvalidClientPublicKey)? + [0..32] + .try_into() + .map_err(|_| AppError::InvalidClientPublicKey)?; + + PublicKey::from(public_key_slice.to_owned()) + }; + + let shared_secret = agent_secret_key.diffie_hellman(&their_public_key); + + let _ = state.update_registrations(app_handle.clone(), |regs| { + regs.insert(auth_key_copy, Registration { + registered_at: created_at, + shared_secret_b16: base16::encode_lower(shared_secret.as_bytes()) + }); + })?; + + let auth_payload = json!({ + "auth_key": auth_key, + "created_at": created_at + }); + + app_handle + .emit("authenticated", &auth_payload) + .map_err(|_| AppError::InternalServerError)?; + + Ok(Json(AuthKeyResponse { + auth_key, + created_at, + agent_public_key_b16: base16::encode_lower(agent_public_key.as_bytes()), + })) +} + +pub async fn run_request( + State((state, _app_handle)): State<(Arc, T)>, + TypedHeader(auth_header): TypedHeader>, + headers: HeaderMap, + body: Bytes +) -> AppResult> { + let nonce = headers.get("X-Hopp-Nonce") + .ok_or(AppError::Unauthorized)? + .to_str() + .map_err(|_| AppError::Unauthorized)?; + + let req: RequestDef = state.validate_access_and_get_data(auth_header.token(), nonce, &body) + .ok_or(AppError::Unauthorized)?; + + let reg_info = state.get_registration_info(auth_header.token()) + .ok_or(AppError::Unauthorized)?; + + let cancel_token = tokio_util::sync::CancellationToken::new(); + state.add_cancellation_token(req.req_id, cancel_token.clone()); + + let req_id = req.req_id; + let cancel_token_clone = cancel_token.clone(); + + // Execute the HTTP request in a blocking thread pool and handles cancellation. + // + // It: + // 1. Uses `spawn_blocking` to run the sync `run_request_task` + // without blocking the main Tokio runtime. + // 2. Uses `select!` to concurrently wait for either + // a. the task to complete, + // b. or a cancellation signal. + // + // Why spawn_blocking? + // - `run_request_task` uses synchronous curl operations which would block + // the async runtime if not run in a separate thread. + // - `spawn_blocking` moves this operation to a thread pool designed for + // blocking tasks, so other async operations to continue unblocked. + let result = tokio::select! { + res = tokio::task::spawn_blocking(move || crate::interceptor::run_request_task(&req, cancel_token_clone)) => { + match res { + Ok(task_result) => task_result, + Err(_) => Err(AppError::InternalServerError), + } + }, + _ = cancel_token.cancelled() => { + Err(AppError::RequestCancelled) + } + }; + + state.remove_cancellation_token(req_id); + + result.map(|val| { + EncryptedJson { + key_b16: reg_info.shared_secret_b16, + data: val + } + }) +} + +/// Provides a way for registered clients to check if their +/// registration still holds, this route is supposed to return +/// an encrypted `true` value if the given auth_key is good. +/// Since its encrypted with the shared secret established during +/// registration, the client also needs the shared secret to verify +/// if the read fails, or the auth_key didn't validate and this route returns +/// undefined, we can count on the registration not being valid anymore. +pub async fn registered_handshake( + State((state, _)): State<(Arc, AppHandle)>, + TypedHeader(auth_header): TypedHeader>, +) -> AppResult> { + let reg_info = state.get_registration_info(auth_header.token()); + + match reg_info { + Some(reg) => Ok(EncryptedJson { + key_b16: reg.shared_secret_b16, + data: json!(true), + }), + None => Err(AppError::Unauthorized), + } +} + +pub async fn cancel_request( + State((state, _app_handle)): State<(Arc, T)>, + TypedHeader(auth_header): TypedHeader>, + Path(req_id): Path, +) -> AppResult> { + if !state.validate_access(auth_header.token()) { + return Err(AppError::Unauthorized); + } + + if let Some((_, token)) = state.remove_cancellation_token(req_id) { + token.cancel(); + Ok(Json(json!({"message": "Request cancelled successfully"}))) + } else { + Err(AppError::RequestNotFound) + } +} diff --git a/packages/hoppscotch-agent/src-tauri/src/error.rs b/packages/hoppscotch-agent/src-tauri/src/error.rs new file mode 100644 index 000000000..5c916874e --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/error.rs @@ -0,0 +1,75 @@ +use axum::{ + http::StatusCode, + response::{IntoResponse, Response}, + Json, +}; +use serde_json::json; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum AppError { + #[error("Invalid Registration")] + InvalidRegistration, + #[error("Invalid Client Public Key")] + InvalidClientPublicKey, + #[error("Unauthorized")] + Unauthorized, + #[error("Request not found or already completed")] + RequestNotFound, + #[error("Internal server error")] + InternalServerError, + #[error("Invalid request: {0}")] + BadRequest(String), + #[error("Client certificate error")] + ClientCertError, + #[error("Root certificate error")] + RootCertError, + #[error("Invalid method")] + InvalidMethod, + #[error("Invalid URL")] + InvalidUrl, + #[error("Invalid headers")] + InvalidHeaders, + #[error("Request run error: {0}")] + RequestRunError(String), + #[error("Request cancelled")] + RequestCancelled, + #[error("Failed to clear registrations")] + RegistrationClearError, + #[error("Failed to insert registrations")] + RegistrationInsertError, + #[error("Failed to save registrations to store")] + RegistrationSaveError, +} + +impl IntoResponse for AppError { + fn into_response(self) -> Response { + let (status, error_message) = match self { + AppError::InvalidRegistration => (StatusCode::BAD_REQUEST, self.to_string()), + AppError::InvalidClientPublicKey => (StatusCode::BAD_REQUEST, self.to_string()), + AppError::Unauthorized => (StatusCode::UNAUTHORIZED, self.to_string()), + AppError::RequestNotFound => (StatusCode::NOT_FOUND, self.to_string()), + AppError::InternalServerError => (StatusCode::INTERNAL_SERVER_ERROR, self.to_string()), + AppError::BadRequest(msg) => (StatusCode::BAD_REQUEST, msg), + AppError::ClientCertError => (StatusCode::BAD_REQUEST, self.to_string()), + AppError::RootCertError => (StatusCode::BAD_REQUEST, self.to_string()), + AppError::InvalidMethod => (StatusCode::BAD_REQUEST, self.to_string()), + AppError::InvalidUrl => (StatusCode::BAD_REQUEST, self.to_string()), + AppError::InvalidHeaders => (StatusCode::BAD_REQUEST, self.to_string()), + AppError::RequestRunError(msg) => (StatusCode::INTERNAL_SERVER_ERROR, msg), + AppError::RequestCancelled => (StatusCode::BAD_REQUEST, self.to_string()), + _ => ( + StatusCode::INTERNAL_SERVER_ERROR, + "Internal Server Error".to_string(), + ), + }; + + let body = Json(json!({ + "error": error_message, + })); + + (status, body).into_response() + } +} + +pub type AppResult = std::result::Result; diff --git a/packages/hoppscotch-agent/src-tauri/src/interceptor.rs b/packages/hoppscotch-agent/src-tauri/src/interceptor.rs new file mode 100644 index 000000000..52b20f702 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/interceptor.rs @@ -0,0 +1,567 @@ +use crate::{ + error::AppError, + model::{BodyDef, ClientCertDef, FormDataValue, KeyValuePair, RequestDef, RunRequestResponse}, + util::get_status_text, +}; +use curl::easy::{Easy, List}; +use openssl::{pkcs12::Pkcs12, ssl::SslContextBuilder, x509::X509}; +use openssl_sys::SSL_CTX; +use std::time::SystemTime; +use tokio_util::sync::CancellationToken; + +pub(crate) fn run_request_task( + req: &RequestDef, + cancel_token: CancellationToken, +) -> Result { + let mut curl_handle = Easy::new(); + + curl_handle + .progress(true) + .map_err(|err| AppError::RequestRunError(err.description().to_string()))?; + + curl_handle + .custom_request(&req.method) + .map_err(|_| AppError::InvalidMethod)?; + + curl_handle + .url(&req.endpoint) + .map_err(|_| AppError::InvalidUrl)?; + + curl_handle + .http_headers(get_headers_list(&req)?) + .map_err(|_| AppError::InvalidHeaders)?; + + apply_body_to_curl_handle(&mut curl_handle, &req)?; + + curl_handle + .ssl_verify_peer(req.validate_certs) + .map_err(|err| AppError::RequestRunError(err.description().to_string()))?; + + curl_handle + .ssl_verify_host(req.validate_certs) + .map_err(|err| AppError::RequestRunError(err.description().to_string()))?; + + apply_client_cert_to_curl_handle(&mut curl_handle, &req)?; + + apply_proxy_config_to_curl_handle(&mut curl_handle, &req)?; + + let mut response_body = Vec::new(); + let mut response_headers = Vec::new(); + + let (start_time_ms, end_time_ms) = { + let mut transfer = curl_handle.transfer(); + + transfer + .ssl_ctx_function(|ssl_ctx_ptr| { + let cert_list = get_x509_certs_from_root_cert_bundle(&req); + + if !cert_list.is_empty() { + let mut ssl_ctx_builder = + unsafe { SslContextBuilder::from_ptr(ssl_ctx_ptr as *mut SSL_CTX) }; + + let cert_store = ssl_ctx_builder.cert_store_mut(); + + for cert in cert_list { + if let Err(e) = cert_store.add_cert(cert) { + eprintln!("Failed writing cert into cert store: {}", e); + } + } + } + + Ok(()) + }) + .map_err(|err| AppError::RequestRunError(err.description().to_string()))?; + + transfer + .progress_function(|_, _, _, _| !cancel_token.is_cancelled()) + .map_err(|err| AppError::RequestRunError(err.description().to_string()))?; + + transfer + .header_function(|header| { + let header = String::from_utf8_lossy(header).into_owned(); + + if let Some((key, value)) = header.split_once(':') { + response_headers.push(KeyValuePair { + key: key.trim().to_string(), + value: value.trim().to_string(), + }); + } + + true + }) + .map_err(|err| AppError::RequestRunError(err.description().to_string()))?; + + transfer + .write_function(|data| { + response_body.extend_from_slice(data); + Ok(data.len()) + }) + .map_err(|err| AppError::RequestRunError(err.description().to_string()))?; + + let start_time_ms = SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_millis(); + + transfer + .perform() + .map_err(|err| AppError::RequestRunError(err.description().to_string()))?; + + let end_time_ms = SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_millis(); + + (start_time_ms, end_time_ms) + }; + + let response_status = curl_handle + .response_code() + .map_err(|err| AppError::RequestRunError(err.description().to_string()))? + as u16; + + let response_status_text = get_status_text(response_status).to_string(); + + Ok(RunRequestResponse { + status: response_status, + status_text: response_status_text, + headers: response_headers, + data: response_body, + time_start_ms: start_time_ms, + time_end_ms: end_time_ms, + }) +} + +fn get_headers_list(req: &RequestDef) -> Result { + let mut result = List::new(); + + for KeyValuePair { key, value } in &req.headers { + result + .append(&format!("{}: {}", key, value)) + .map_err(|err| AppError::RequestRunError(err.description().to_string()))?; + } + + Ok(result) +} + +fn apply_body_to_curl_handle(curl_handle: &mut Easy, req: &RequestDef) -> Result<(), AppError> { + match &req.body { + Some(BodyDef::Text(text)) => { + curl_handle + .post_fields_copy(text.as_bytes()) + .map_err(|err| { + AppError::RequestRunError(format!( + "Error while setting body: {}", + err.description() + )) + })?; + } + Some(BodyDef::FormData(entries)) => { + let mut form = curl::easy::Form::new(); + + for entry in entries { + let mut part = form.part(&entry.key); + + match &entry.value { + FormDataValue::Text(data) => { + part.contents(data.as_bytes()); + } + FormDataValue::File { + filename, + data, + mime, + } => { + part.buffer(filename, data.clone()).content_type(mime); + } + }; + + part.add().map_err(|err| { + AppError::RequestRunError(format!( + "Error while setting body: {}", + err.description() + )) + })?; + } + + curl_handle.httppost(form).map_err(|err| { + AppError::RequestRunError(format!( + "Error while setting body: {}", + err.description() + )) + })?; + } + Some(BodyDef::URLEncoded(entries)) => { + let data = entries + .iter() + .map(|KeyValuePair { key, value }| { + format!( + "{}={}", + &url_escape::encode_www_form_urlencoded(key), + url_escape::encode_www_form_urlencoded(value) + ) + }) + .collect::>() + .join("&"); + + curl_handle + .post_fields_copy(data.as_bytes()) + .map_err(|err| { + AppError::RequestRunError(format!( + "Error while setting body: {}", + err.description() + )) + })?; + } + None => {} + }; + + Ok(()) +} + +fn apply_client_cert_to_curl_handle(handle: &mut Easy, req: &RequestDef) -> Result<(), AppError> { + match &req.client_cert { + Some(ClientCertDef::PEMCert { + certificate_pem, + key_pem, + }) => { + handle.ssl_cert_type("PEM").map_err(|err| { + AppError::RequestRunError(format!( + "Failed setting PEM Cert Type: {}", + err.description() + )) + })?; + + handle.ssl_cert_blob(certificate_pem).map_err(|err| { + AppError::RequestRunError(format!( + "Failed setting PEM Cert Blob: {}", + err.description() + )) + })?; + + handle.ssl_key_type("PEM").map_err(|err| { + AppError::RequestRunError(format!( + "Failed setting PEM key type: {}", + err.description() + )) + })?; + + handle.ssl_key_blob(key_pem).map_err(|err| { + AppError::RequestRunError(format!( + "Failed setting PEM Cert blob: {}", + err.description() + )) + })?; + } + Some(ClientCertDef::PFXCert { + certificate_pfx, + password, + }) => { + let pkcs12 = Pkcs12::from_der(&certificate_pfx).map_err(|err| { + AppError::RequestRunError(format!( + "Failed to parse PFX certificate from DER: {}", + err + )) + })?; + + let parsed = pkcs12.parse2(password).map_err(|err| { + AppError::RequestRunError(format!( + "Failed to parse PFX certificate with provided password: {}", + err + )) + })?; + + if let (Some(cert), Some(key)) = (parsed.cert, parsed.pkey) { + let certificate_pem = cert.to_pem().map_err(|err| { + AppError::RequestRunError(format!( + "Failed to convert PFX certificate to PEM format: {}", + err + )) + })?; + + let key_pem = key.private_key_to_pem_pkcs8().map_err(|err| { + AppError::RequestRunError(format!( + "Failed to convert PFX private key to PEM format: {}", + err + )) + })?; + + handle.ssl_cert_type("PEM").map_err(|err| { + AppError::RequestRunError(format!( + "Failed setting PEM Cert Type for converted PFX: {}", + err.description() + )) + })?; + + handle.ssl_cert_blob(&certificate_pem).map_err(|err| { + AppError::RequestRunError(format!( + "Failed setting PEM Cert Blob for converted PFX: {}", + err.description() + )) + })?; + + handle.ssl_key_type("PEM").map_err(|err| { + AppError::RequestRunError(format!( + "Failed setting PEM key type for converted PFX: {}", + err.description() + )) + })?; + + handle.ssl_key_blob(&key_pem).map_err(|err| { + AppError::RequestRunError(format!( + "Failed setting PEM key blob for converted PFX: {}", + err.description() + )) + })?; + } else { + return Err(AppError::RequestRunError( + "PFX certificate parsing succeeded, but either cert or private key is missing" + .to_string(), + )); + } + } + None => {} + }; + + Ok(()) +} + +fn get_x509_certs_from_root_cert_bundle(req: &RequestDef) -> Vec { + req.root_cert_bundle_files + .iter() + .map(|pem_bundle| openssl::x509::X509::stack_from_pem(pem_bundle)) + .filter_map(|certs| { + if let Ok(certs) = certs { + Some(certs) + } else { + None + } + }) + .flatten() + .collect() +} + +fn apply_proxy_config_to_curl_handle(handle: &mut Easy, req: &RequestDef) -> Result<(), AppError> { + if let Some(proxy_config) = &req.proxy { + handle + .proxy_auth(curl::easy::Auth::new().auto(true)) + .map_err(|err| { + AppError::RequestRunError(format!( + "Failed to set proxy Auth Mode: {}", + err.description() + )) + })?; + + handle.proxy(&proxy_config.url).map_err(|err| { + AppError::RequestRunError(format!("Failed to set proxy URL: {}", err.description())) + })?; + } + + Ok(()) +} + +#[cfg(test)] +mod tests { + use crate::model::FormDataEntry; + + use super::*; + use mockito::Server; + + #[test] + fn test_run_request_task_success() { + let mut server = Server::new(); + let mock = server + .mock("GET", "/test") + .with_status(200) + .with_header("content-type", "text/plain") + .with_body("Hello, World!") + .create(); + + let req = RequestDef { + req_id: 1, + method: "GET".to_string(), + endpoint: format!("{}/test", server.url()), + headers: vec![], + body: None, + validate_certs: false, + root_cert_bundle_files: vec![], + client_cert: None, + proxy: None, + }; + let cancel_token = CancellationToken::new(); + + let result = run_request_task(&req, cancel_token); + assert!(result.is_ok()); + + let response = result.unwrap(); + assert_eq!(response.status, 200); + assert_eq!(response.status_text, "OK"); + assert!(response + .headers + .iter() + .any(|h| h.key == "content-type" && h.value == "text/plain")); + assert_eq!(response.data, b"Hello, World!"); + + mock.assert(); + } + + #[test] + fn test_run_request_task_with_headers() { + let mut server = Server::new(); + let mock = server + .mock("GET", "/test") + .match_header("X-Custom-Header", "TestValue") + .with_status(200) + .create(); + + let req = RequestDef { + req_id: 1, + method: "GET".to_string(), + endpoint: format!("{}/test", server.url()), + headers: vec![KeyValuePair { + key: "X-Custom-Header".to_string(), + value: "TestValue".to_string(), + }], + body: None, + validate_certs: false, + root_cert_bundle_files: vec![], + client_cert: None, + proxy: None, + }; + let cancel_token = CancellationToken::new(); + + let result = run_request_task(&req, cancel_token); + assert!(result.is_ok()); + + mock.assert(); + } + + #[test] + fn test_run_request_task_with_body() { + let mut server = Server::new(); + let mock = server + .mock("POST", "/test") + .match_body("test_body") + .with_status(201) + .create(); + + let req = RequestDef { + req_id: 1, + method: "POST".to_string(), + endpoint: format!("{}/test", server.url()), + headers: vec![], + body: Some(BodyDef::Text("test_body".to_string())), + validate_certs: false, + root_cert_bundle_files: vec![], + client_cert: None, + proxy: None, + }; + let cancel_token = CancellationToken::new(); + + let result = run_request_task(&req, cancel_token); + assert!(result.is_ok()); + assert_eq!(result.unwrap().status, 201); + + mock.assert(); + } + + #[test] + fn test_run_request_task_with_url_encoded_body() { + let mut server = Server::new(); + let mock = server + .mock("POST", "/test") + .match_body("key1=value1&key2=value2") + .with_status(200) + .create(); + + let req = RequestDef { + req_id: 1, + method: "POST".to_string(), + endpoint: format!("{}/test", server.url()), + headers: vec![], + body: Some(BodyDef::URLEncoded(vec![ + KeyValuePair { + key: "key1".to_string(), + value: "value1".to_string(), + }, + KeyValuePair { + key: "key2".to_string(), + value: "value2".to_string(), + }, + ])), + validate_certs: false, + root_cert_bundle_files: vec![], + client_cert: None, + proxy: None, + }; + let cancel_token = CancellationToken::new(); + + let result = run_request_task(&req, cancel_token); + assert!(result.is_ok()); + + mock.assert(); + } + + #[test] + fn test_run_request_task_with_invalid_url() { + let req = RequestDef { + req_id: 1, + method: "GET".to_string(), + endpoint: "invalid_url".to_string(), + headers: vec![], + body: None, + validate_certs: false, + root_cert_bundle_files: vec![], + client_cert: None, + proxy: None, + }; + let cancel_token = CancellationToken::new(); + + let result = run_request_task(&req, cancel_token); + + assert!(result.is_err()); + } + + #[test] + fn test_run_request_task_with_form_data() { + let mut server = Server::new(); + let mock = server + .mock("POST", "/test") + .match_header( + "content-type", + mockito::Matcher::Regex("multipart/form-data.*".to_string()), + ) + .with_status(200) + .create(); + + let req = RequestDef { + req_id: 1, + method: "POST".to_string(), + endpoint: format!("{}/test", server.url()), + headers: vec![], + body: Some(BodyDef::FormData(vec![ + FormDataEntry { + key: "text_field".to_string(), + value: FormDataValue::Text("text_value".to_string()), + }, + FormDataEntry { + key: "file_field".to_string(), + value: FormDataValue::File { + filename: "test.txt".to_string(), + data: b"file_content".to_vec(), + mime: "text/plain".to_string(), + }, + }, + ])), + validate_certs: false, + root_cert_bundle_files: vec![], + client_cert: None, + proxy: None, + }; + let cancel_token = CancellationToken::new(); + + let result = run_request_task(&req, cancel_token); + assert!(result.is_ok()); + + mock.assert(); + } +} diff --git a/packages/hoppscotch-agent/src-tauri/src/lib.rs b/packages/hoppscotch-agent/src-tauri/src/lib.rs new file mode 100644 index 000000000..42bd1c7ea --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/lib.rs @@ -0,0 +1,162 @@ +pub mod controller; +pub mod error; +pub mod interceptor; +pub mod model; +pub mod route; +pub mod server; +pub mod state; +pub mod tray; +pub mod updater; +pub mod util; + +use state::AppState; +use std::sync::Arc; +use tauri::{Listener, Manager, Url, WebviewWindowBuilder}; +use tauri_plugin_updater::UpdaterExt; +use tokio_util::sync::CancellationToken; + +#[tauri::command] +async fn get_otp(state: tauri::State<'_, Arc>) -> Result, ()> { + Ok(state.active_registration_code.read().await.clone()) +} + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + env_logger::init(); + + let cancellation_token = CancellationToken::new(); + let server_cancellation_token = cancellation_token.clone(); + + tauri::Builder::default() + .plugin(tauri_plugin_store::Builder::new().build()) + .setup(move |app| { + let app_handle = app.app_handle(); + + #[cfg(desktop)] + { + use tauri_plugin_autostart::MacosLauncher; + use tauri_plugin_autostart::ManagerExt; + + let _ = app.handle().plugin(tauri_plugin_autostart::init( + MacosLauncher::LaunchAgent, + None + )); + + let autostart_manager = app.autolaunch(); + + println!("autostart enabled: {}", autostart_manager.is_enabled().unwrap()); + + if !autostart_manager.is_enabled().unwrap() { + let _ = autostart_manager.enable(); + println!("autostart updated: {}", autostart_manager.is_enabled().unwrap()); + } + }; + + #[cfg(desktop)] + { + // We use env variables to define the pubkey for installer to check + let updater_pub_key = option_env!("UPDATER_PUB_KEY"); + let updater_url = option_env!("UPDATER_URL"); + + if let (Some(pub_key), Some(updater_url)) = (updater_pub_key, updater_url) { + let _ = app.handle() + .plugin(tauri_plugin_updater::Builder::new() .build()); + + let _ = app.handle() + .plugin(tauri_plugin_dialog::init()); + + let updater_url: Url = updater_url.parse().unwrap(); + + let updater = app.updater_builder() + .pubkey(pub_key) + .endpoints( + vec![updater_url] + ) + .build() + .unwrap(); + + let app_handle_ref = app_handle.clone(); + + tauri::async_runtime::spawn_blocking(|| { + tauri::async_runtime::block_on(async { + updater::check_and_install_updates(app_handle_ref, updater).await; + }) + }); + } + }; + + let app_state = Arc::new(AppState::new(app_handle.clone())); + + app.manage(app_state.clone()); + + let server_cancellation_token = server_cancellation_token.clone(); + + let server_app_handle = app_handle.clone(); + + tauri::async_runtime::spawn(async move { + server::run_server(app_state, server_cancellation_token, server_app_handle) + .await; + }); + + #[cfg(all(desktop))] + { + let handle = app.handle(); + tray::create_tray(handle)?; + } + + // Blocks the app from populating the macOS dock + #[cfg(target_os = "macos")] + { + app_handle.set_activation_policy(tauri::ActivationPolicy::Accessory) + .unwrap(); + }; + + let app_handle_ref = app_handle.clone(); + + app_handle.listen("registration_received", move |_| { + WebviewWindowBuilder::from_config( + &app_handle_ref, + &app_handle_ref.config().app.windows[0] + ) + .unwrap() + .build() + .unwrap() + .show() + .unwrap(); + }); + + Ok(()) + }) + .manage(cancellation_token) + .on_window_event(|window, event| { + match &event { + tauri::WindowEvent::CloseRequested { .. } => { + let app_state = window.state::>(); + + let mut current_code = + app_state.active_registration_code.blocking_write(); + + if current_code.is_some() { + *current_code = None; + } + }, + _ => {} + }; + }) + .invoke_handler(tauri::generate_handler![ + get_otp + ]) + .build(tauri::generate_context!()) + .expect("error while building tauri application") + .run(|app_handle, event| match event { + tauri::RunEvent::ExitRequested { api, code, .. } => { + if code.is_none() || matches!(code, Some(0)) { + api.prevent_exit() + } else if code.is_some() { + let state = app_handle.state::(); + state.cancel(); + } + } + _ => {} + }); +} diff --git a/packages/hoppscotch-agent/src-tauri/src/main.rs b/packages/hoppscotch-agent/src-tauri/src/main.rs new file mode 100644 index 000000000..bf757fbd5 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/main.rs @@ -0,0 +1,6 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + hoppscotch_agent_lib::run() +} diff --git a/packages/hoppscotch-agent/src-tauri/src/model.rs b/packages/hoppscotch-agent/src-tauri/src/model.rs new file mode 100644 index 000000000..772331535 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/model.rs @@ -0,0 +1,103 @@ +use chrono::{DateTime, Utc}; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Serialize, Deserialize)] +pub struct HandshakeResponse { + #[allow(non_snake_case)] + pub __hoppscotch__agent__: bool, + + pub status: String, + pub agent_version: String +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct ConfirmedRegistrationRequest { + pub registration: String, + + /// base16 (lowercase) encoded public key shared by the client + /// to the agent so that the agent can establish a shared secret + /// which will be used to encrypt traffic between agent + /// and client after registration + pub client_public_key_b16: String +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct AuthKeyResponse { + pub auth_key: String, + pub created_at: DateTime, + + /// base16 (lowercase) encoded public key shared by the + /// agent so that the client can establish a shared secret + /// which will be used to encrypt traffic between agent + /// and client after registration + pub agent_public_key_b16: String +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct KeyValuePair { + pub key: String, + pub value: String, +} + +#[derive(Debug, Deserialize)] +pub enum FormDataValue { + Text(String), + File { + filename: String, + data: Vec, + mime: String, + }, +} + +#[derive(Debug, Deserialize)] +pub struct FormDataEntry { + pub key: String, + pub value: FormDataValue, +} + +#[derive(Debug, Deserialize)] +pub enum BodyDef { + Text(String), + URLEncoded(Vec), + FormData(Vec), +} + +#[derive(Debug, Deserialize)] +pub struct RequestDef { + pub req_id: usize, + pub method: String, + pub endpoint: String, + pub headers: Vec, + pub body: Option, + pub validate_certs: bool, + pub root_cert_bundle_files: Vec>, + pub client_cert: Option, + pub proxy: Option, +} + +#[derive(Debug, Deserialize)] +pub struct ProxyConfig { + pub url: String, +} + +#[derive(Debug, Deserialize)] +pub enum ClientCertDef { + PEMCert { + certificate_pem: Vec, + key_pem: Vec, + }, + PFXCert { + certificate_pfx: Vec, + password: String, + }, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct RunRequestResponse { + pub status: u16, + pub status_text: String, + pub headers: Vec, + pub data: Vec, + pub time_start_ms: u128, + pub time_end_ms: u128, +} diff --git a/packages/hoppscotch-agent/src-tauri/src/route.rs b/packages/hoppscotch-agent/src-tauri/src/route.rs new file mode 100644 index 000000000..290668129 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/route.rs @@ -0,0 +1,28 @@ +use axum::{ + routing::{get, post}, + Router, +}; +use std::sync::Arc; +use tauri::AppHandle; + +use crate::{controller, state::AppState}; + +pub fn route(state: Arc, app_handle: AppHandle) -> Router { + Router::new() + .route("/handshake", get(controller::handshake)) + .route( + "/receive-registration", + post(controller::receive_registration), + ) + .route( + "/verify-registration", + post(controller::verify_registration), + ) + .route( + "/registered-handshake", + get(controller::registered_handshake), + ) + .route("/request", post(controller::run_request)) + .route("/cancel-request/:req_id", post(controller::cancel_request)) + .with_state((state, app_handle)) +} diff --git a/packages/hoppscotch-agent/src-tauri/src/server.rs b/packages/hoppscotch-agent/src-tauri/src/server.rs new file mode 100644 index 000000000..1e9210fae --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/server.rs @@ -0,0 +1,34 @@ +use axum::Router; +use std::sync::Arc; +use tokio_util::sync::CancellationToken; +use tower_http::cors::CorsLayer; + +use crate::route; +use crate::state::AppState; + +pub async fn run_server( + state: Arc, + cancellation_token: CancellationToken, + app_handle: tauri::AppHandle, +) { + let cors = CorsLayer::permissive(); + + let app = Router::new() + .merge(route::route(state, app_handle)) + .layer(cors); + + let addr = std::net::SocketAddr::from(([127, 0, 0, 1], 9119)); + + println!("Server running on http://{}", addr); + + let listener = tokio::net::TcpListener::bind(&addr).await.unwrap(); + + axum::serve(listener, app.into_make_service()) + .with_graceful_shutdown(async move { + cancellation_token.cancelled().await; + }) + .await + .unwrap(); + + println!("Server shut down"); +} diff --git a/packages/hoppscotch-agent/src-tauri/src/state.rs b/packages/hoppscotch-agent/src-tauri/src/state.rs new file mode 100644 index 000000000..f7bcf9c97 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/state.rs @@ -0,0 +1,154 @@ +use aes_gcm::{aead::Aead, Aes256Gcm, KeyInit}; +use axum::body::Bytes; +use chrono::{DateTime, Utc}; +use dashmap::DashMap; +use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use tauri_plugin_store::StoreBuilder; +use tokio_util::sync::CancellationToken; +use tokio::sync::RwLock; + +use crate::error::AppError; + +/// Describes one registered app instance +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Registration { + pub registered_at: DateTime, + + /// base16 (lowercase) encoded shared secret that the client + /// and agent established during registration that is used + /// to encrypt traffic between them + pub shared_secret_b16: String +} + +#[derive(Default)] +pub struct AppState { + /// The active registration code that is being registered. + pub active_registration_code: RwLock>, + + /// Cancellation Tokens for the running requests + pub cancellation_tokens: DashMap, + + /// Registrations against the agent, the key is the auth + /// token associated to the registration + registrations: DashMap +} + +impl AppState { + + pub fn new(app_handle: tauri::AppHandle) -> Self { + let mut store = StoreBuilder::new("app_data.bin") + .build(app_handle); + + let _ = store.load(); + + // Try loading and parsing registrations from the store, if that failed, + // load the default list + let registrations = store.get("registrations") + .and_then(|val| serde_json::from_value(val.clone()).ok()) + .unwrap_or_else(|| DashMap::new()); + + + Self { + active_registration_code: RwLock::new(None), + cancellation_tokens: DashMap::new(), + registrations + } + } + + /// Gets you a readonly reference to the registrations list + /// NOTE: Although DashMap API allows you to update the list from an immutable + /// reference, you shouldn't do it for registrations as `update_registrations` + /// performs save operation that needs to be done and should be used instead + pub fn get_registrations(&self) -> &DashMap { + &self.registrations + } + + /// Provides you an opportunity to update the registrations list + /// and also persists the data to the disk + pub fn update_registrations( + &self, + app_handle: tauri::AppHandle, + update_func: impl FnOnce(&DashMap) + ) -> Result<(), AppError> { + update_func(&self.registrations); + + let mut store = StoreBuilder::new("app_data.bin") + .build(app_handle); + + let _ = store.load(); + + store.delete("registrations") + .map_err(|_| AppError::RegistrationClearError)?; + + store.insert("registrations".into(), serde_json::to_value(self.registrations.clone()).unwrap()) + .map_err(|_| AppError::RegistrationInsertError)?; + + store.save() + .map_err(|_| AppError::RegistrationSaveError)?; + + Ok(()) + } + + pub async fn validate_registration(&self, registration: &str) -> bool { + match *self.active_registration_code.read().await { + Some(ref code) => code == registration, + None => false + } + } + + pub fn remove_cancellation_token(&self, req_id: usize) -> Option<(usize, CancellationToken)> { + self.cancellation_tokens.remove(&req_id) + } + + pub fn add_cancellation_token(&self, req_id: usize, cancellation_tokens: CancellationToken) { + self.cancellation_tokens.insert(req_id, cancellation_tokens); + } + + pub fn validate_access(&self, auth_key: &str) -> bool { + self.registrations.get(auth_key).is_some() + } + + pub fn validate_access_and_get_data( + &self, + auth_key: &str, + nonce: &str, + data: &Bytes + ) -> Option + where + T : DeserializeOwned + { + if let Some(registration) = self.registrations.get(auth_key) { + let key: [u8; 32] = base16::decode(®istration.shared_secret_b16) + .ok()? + [0..32] + .try_into() + .ok()?; + + let nonce: [u8; 12] = base16::decode(nonce) + .ok()? + [0..12] + .try_into() + .ok()?; + + let cipher = Aes256Gcm::new(&key.into()); + + let data = data + .iter() + .cloned() + .collect::>(); + + let plain_data = cipher.decrypt(&nonce.into(), data.as_slice()) + .ok()?; + + serde_json::from_reader(plain_data.as_slice()) + .ok() + } else { + None + } + } + + pub fn get_registration_info(&self, auth_key: &str) -> Option { + self.registrations.get(auth_key) + .map(|reference| reference.value().clone()) + } +} diff --git a/packages/hoppscotch-agent/src-tauri/src/tray.rs b/packages/hoppscotch-agent/src-tauri/src/tray.rs new file mode 100644 index 000000000..1202c7010 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/tray.rs @@ -0,0 +1,90 @@ +use crate::state::AppState; +use lazy_static::lazy_static; +use std::sync::Arc; +use tauri::{ + image::Image, + menu::{MenuBuilder, MenuItem}, + tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, + AppHandle, Manager, +}; + +const TRAY_ICON_DATA: &'static [u8] = include_bytes!("../icons/tray_icon.png"); + +lazy_static! { + static ref TRAY_ICON: Image<'static> = Image::from_bytes(TRAY_ICON_DATA).unwrap(); +} + +pub fn create_tray(app: &AppHandle) -> tauri::Result<()> { + let quit_i = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?; + let clear_registrations = MenuItem::with_id( + app, + "clear_registrations", + "Clear Registrations", + true, + None::<&str>, + )?; + + let pkg_info = app.package_info(); + let app_name = pkg_info.name.clone(); + let app_version = pkg_info.version.clone(); + + let app_name_item = MenuItem::with_id(app, "app_name", app_name, false, None::<&str>)?; + let app_version_item = MenuItem::with_id( + app, + "app_version", + format!("Version: {}", app_version), + false, + None::<&str>, + )?; + + let menu = MenuBuilder::new(app) + .item(&app_name_item) + .item(&app_version_item) + .separator() + .item(&clear_registrations) + .item(&quit_i) + .build()?; + + let _ = TrayIconBuilder::with_id("hopp-tray") + .tooltip("Hoppscotch Agent") + .icon(if cfg!(target_os = "macos") { + TRAY_ICON.clone() + } else { + app.default_window_icon().unwrap().clone() + }) + .icon_as_template(cfg!(target_os = "macos")) + .menu(&menu) + .menu_on_left_click(true) + .on_menu_event(move |app, event| match event.id.as_ref() { + "quit" => { + app.exit(-1); + } + "clear_registrations" => { + let app_state = app.state::>(); + + app_state + .update_registrations(app.clone(), |regs| { + regs.clear(); + }) + .expect("Failed to clear registrations"); + } + _ => {} + }) + .on_tray_icon_event(|tray, event| { + if let TrayIconEvent::Click { + button: MouseButton::Left, + button_state: MouseButtonState::Up, + .. + } = event + { + let app = tray.app_handle(); + if let Some(window) = app.get_webview_window("main") { + let _ = window.show(); + let _ = window.set_focus(); + } + } + }) + .build(app); + + Ok(()) +} diff --git a/packages/hoppscotch-agent/src-tauri/src/updater.rs b/packages/hoppscotch-agent/src-tauri/src/updater.rs new file mode 100644 index 000000000..e69da6490 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/updater.rs @@ -0,0 +1,34 @@ +#[cfg(desktop)] +pub async fn check_and_install_updates(app: tauri::AppHandle, updater: tauri_plugin_updater::Updater) { + use tauri::Manager; + use tauri_plugin_dialog::MessageDialogKind; + use tauri_plugin_dialog::DialogExt; + + + let update = updater.check().await; + + if let Ok(Some(update)) = update { + let do_update = app.dialog() + .message( + format!( + "Update to {} is available!{}", + update.version, + update.body + .clone() + .map(|body| format!("\n\nRelease Notes: {}", body)) + .unwrap_or("".into()) + ) + ) + .title("Update Available") + .kind(MessageDialogKind::Info) + .ok_button_label("Update") + .cancel_button_label("Cancel") + .blocking_show(); + + if do_update { + let _ = update.download_and_install(|_, _| {}, || {}).await; + + tauri::process::restart(&app.env()); + } + } +} diff --git a/packages/hoppscotch-agent/src-tauri/src/util.rs b/packages/hoppscotch-agent/src-tauri/src/util.rs new file mode 100644 index 000000000..19ac27fc2 --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/src/util.rs @@ -0,0 +1,47 @@ +use aes_gcm::{aead::Aead, AeadCore, Aes256Gcm, KeyInit}; +use axum::{body::Body, response::{IntoResponse, Response}}; +use rand::rngs::OsRng; +use serde::Serialize; + +pub fn get_status_text(status: u16) -> &'static str { + http::StatusCode::from_u16(status) + .map(|status| status.canonical_reason()) + .unwrap_or(Some("Unknown Status")) + .unwrap_or("Unknown Status") +} + +#[derive(Debug)] +pub struct EncryptedJson { + pub key_b16: String, + pub data: T +} + +impl IntoResponse for EncryptedJson where T: Serialize { + fn into_response(self) -> Response { + let serialized_response = serde_json::to_vec(&self.data) + .expect("Failed serializing response to vec for encryption"); + + let key: [u8; 32] = base16::decode(&self.key_b16) + .unwrap() + [0..32] + .try_into() + .unwrap(); + + let cipher = Aes256Gcm::new(&key.into()); + + let nonce = Aes256Gcm::generate_nonce(&mut OsRng); + + let nonce_b16 = base16::encode_lower(&nonce); + + let encrypted_response = cipher.encrypt(&nonce, serialized_response.as_slice()) + .expect("Failed encrypting response"); + + let mut response = Response::new(Body::from(encrypted_response)); + let response_headers = response.headers_mut(); + + response_headers.insert("Content-Type", "application/octet-stream".parse().unwrap()); + response_headers.insert("X-Hopp-Nonce", nonce_b16.parse().unwrap()); + + response + } +} diff --git a/packages/hoppscotch-agent/src-tauri/tauri.conf.json b/packages/hoppscotch-agent/src-tauri/tauri.conf.json new file mode 100644 index 000000000..acb4f3bad --- /dev/null +++ b/packages/hoppscotch-agent/src-tauri/tauri.conf.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://schema.tauri.app/config/2.0.0-rc", + "productName": "Hoppscotch Agent", + "version": "0.1.0", + "identifier": "io.hoppscotch.agent", + "build": { + "beforeDevCommand": "pnpm dev", + "devUrl": "http://localhost:1420", + "beforeBuildCommand": "pnpm build", + "frontendDist": "../dist" + }, + "app": { + "windows": [ + { + "title": "Hoppscotch Agent", + "width": 600, + "height": 400, + "center": true, + "resizable": false, + "maximizable": false, + "minimizable": false, + "focus": true, + "alwaysOnTop": true, + "create": false + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": "all", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ] + } +} diff --git a/packages/hoppscotch-agent/src/App.vue b/packages/hoppscotch-agent/src/App.vue new file mode 100644 index 000000000..f58644c25 --- /dev/null +++ b/packages/hoppscotch-agent/src/App.vue @@ -0,0 +1,71 @@ + + + diff --git a/packages/hoppscotch-agent/src/index.css b/packages/hoppscotch-agent/src/index.css new file mode 100644 index 000000000..b5c61c956 --- /dev/null +++ b/packages/hoppscotch-agent/src/index.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/packages/hoppscotch-agent/src/main.ts b/packages/hoppscotch-agent/src/main.ts new file mode 100644 index 000000000..9380216e6 --- /dev/null +++ b/packages/hoppscotch-agent/src/main.ts @@ -0,0 +1,13 @@ +import { createApp } from 'vue' +import App from './App.vue' +import './index.css' + +import { plugin as HoppUI } from "@hoppscotch/ui" + +import "@hoppscotch/ui/themes.css" + +import "@hoppscotch/ui/style.css" + +createApp(App) + .use(HoppUI) + .mount('#app') diff --git a/packages/hoppscotch-agent/src/vite-env.d.ts b/packages/hoppscotch-agent/src/vite-env.d.ts new file mode 100644 index 000000000..fc812394b --- /dev/null +++ b/packages/hoppscotch-agent/src/vite-env.d.ts @@ -0,0 +1,7 @@ +/// + +declare module "*.vue" { + import type { DefineComponent } from "vue"; + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/packages/hoppscotch-agent/tailwind.config.js b/packages/hoppscotch-agent/tailwind.config.js new file mode 100644 index 000000000..8d2a79d66 --- /dev/null +++ b/packages/hoppscotch-agent/tailwind.config.js @@ -0,0 +1,6 @@ +import preset from '@hoppscotch/ui/ui-preset' + +export default { + content: ['src/**/*.{vue,html}'], + presets: [preset] +} diff --git a/packages/hoppscotch-agent/tsconfig.json b/packages/hoppscotch-agent/tsconfig.json new file mode 100644 index 000000000..f82888f3d --- /dev/null +++ b/packages/hoppscotch-agent/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/packages/hoppscotch-agent/tsconfig.node.json b/packages/hoppscotch-agent/tsconfig.node.json new file mode 100644 index 000000000..42872c59f --- /dev/null +++ b/packages/hoppscotch-agent/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/packages/hoppscotch-agent/vite.config.ts b/packages/hoppscotch-agent/vite.config.ts new file mode 100644 index 000000000..9a9a1549b --- /dev/null +++ b/packages/hoppscotch-agent/vite.config.ts @@ -0,0 +1,50 @@ +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; +import tailwindcss from 'tailwindcss'; +import autoprefixer from 'autoprefixer'; +import path from 'path'; +import Icons from "unplugin-icons/vite"; + +const host = process.env.TAURI_DEV_HOST; + +// https://vitejs.dev/config/ +export default defineConfig(async () => ({ + plugins: [ + vue(), + Icons({}) + ], + css: { + postcss: { + plugins: [ + tailwindcss, + autoprefixer, + ], + }, + }, + resolve: { + alias: { + '@': path.resolve(__dirname, './src') + } + }, + // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` + // + // 1. prevent vite from obscuring rust errors + clearScreen: false, + // 2. tauri expects a fixed port, fail if that port is not available + server: { + port: 1420, + strictPort: true, + host: host || false, + hmr: host + ? { + protocol: "ws", + host, + port: 1421, + } + : undefined, + watch: { + // 3. tell vite to ignore watching `src-tauri` + ignored: ["**/src-tauri/**"], + }, + }, +})); diff --git a/packages/hoppscotch-common/locales/en.json b/packages/hoppscotch-common/locales/en.json index fef7e0347..10d5b42e3 100644 --- a/packages/hoppscotch-common/locales/en.json +++ b/packages/hoppscotch-common/locales/en.json @@ -39,9 +39,11 @@ "paste": "Paste", "prettify": "Prettify", "properties": "Properties", + "register": "Register", "remove": "Remove", "rename": "Rename", "restore": "Restore", + "retry": "Retry", "save": "Save", "save_as_example": "Save as example", "scroll_to_bottom": "Scroll to bottom", @@ -59,12 +61,35 @@ "turn_off": "Turn off", "turn_on": "Turn on", "undo": "Undo", + "verify": "Verify", "yes": "Yes" }, "add": { "new": "Add new", "star": "Add star" }, + "agent": { + "registration_instruction": "Please register Hoppscotch Agent with your web client to continue.", + "enter_otp_instruction": "Please enter the verification code generated by Hoppscotch Agent and complete the registration", + "otp_label": "Verification Code", + "processing": "Processing your request...", + "not_running": "The Hoppscotch Agent is not running. Please start the agent and click 'Retry'.", + "not_running_title": "Agent not detected", + "registration_title": "Agent registration", + "verify_ssl_certs": "Verify SSL Certificates", + "client_certs": "Client Certificates", + "use_http_proxy": "Use HTTP Proxy", + "proxy_capabilities": "Hoppscotch Agent supports HTTP/HTTPS/SOCKS proxies along with NTLM and Basic Auth in those proxies. Include the username and password for the proxy authentication in the URL itself.", + "add_cert_file": "Add Certificate File", + "add_client_cert": "Add Client Certificate", + "add_key_file": "Add Key File", + "domain": "Domain", + "cert": "Certificate", + "key": "Key", + "pfx_or_pkcs": "PFX/PKCS12", + "pfx_or_pkcs_file": "PFX/PKCS12 File", + "add_pfx_or_pkcs_file": "Add PFX/PKCS12 File" + }, "app": { "chat_with_us": "Chat with us", "contact_us": "Contact us", diff --git a/packages/hoppscotch-common/package.json b/packages/hoppscotch-common/package.json index 0f9b45cc9..09672124c 100644 --- a/packages/hoppscotch-common/package.json +++ b/packages/hoppscotch-common/package.json @@ -41,6 +41,8 @@ "@hoppscotch/ui": "0.2.0", "@hoppscotch/vue-toasted": "0.1.0", "@lezer/highlight": "1.2.0", + "@noble/curves": "1.6.0", + "@scure/base": "1.1.9", "@shopify/lang-jsonc": "1.0.0", "@unhead/vue": "1.8.8", "@urql/core": "4.2.0", @@ -50,8 +52,8 @@ "@vitejs/plugin-legacy": "4.1.1", "@vueuse/core": "10.7.0", "acorn-walk": "8.3.0", - "axios": "1.7.5", "aws4fetch": "1.0.19", + "axios": "1.7.5", "buffer": "6.0.3", "cookie-es": "1.0.0", "dioc": "3.0.2", diff --git a/packages/hoppscotch-common/src/components.d.ts b/packages/hoppscotch-common/src/components.d.ts index 3a0ae6553..e2e04d484 100644 --- a/packages/hoppscotch-common/src/components.d.ts +++ b/packages/hoppscotch-common/src/components.d.ts @@ -1,11 +1,11 @@ -// generated by unplugin-vue-components -// We suggest you to commit this file into source control +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components // Read more: https://github.com/vuejs/core/pull/3399 -import '@vue/runtime-core' - export {} -declare module '@vue/runtime-core' { +declare module 'vue' { export interface GlobalComponents { AccessTokens: typeof import('./components/accessTokens/index.vue')['default'] AccessTokensGenerateModal: typeof import('./components/accessTokens/GenerateModal.vue')['default'] @@ -174,7 +174,6 @@ declare module '@vue/runtime-core' { IconLucideAlertTriangle: typeof import('~icons/lucide/alert-triangle')['default'] IconLucideArrowLeft: typeof import('~icons/lucide/arrow-left')['default'] IconLucideArrowUpRight: typeof import('~icons/lucide/arrow-up-right')['default'] - IconLucideBrush: typeof import('~icons/lucide/brush')['default'] IconLucideCheckCircle: typeof import('~icons/lucide/check-circle')['default'] IconLucideChevronRight: typeof import('~icons/lucide/chevron-right')['default'] IconLucideGlobe: typeof import('~icons/lucide/globe')['default'] @@ -184,10 +183,8 @@ declare module '@vue/runtime-core' { IconLucideLayers: typeof import('~icons/lucide/layers')['default'] IconLucideListEnd: typeof import('~icons/lucide/list-end')['default'] IconLucideMinus: typeof import('~icons/lucide/minus')['default'] - IconLucideRss: typeof import('~icons/lucide/rss')['default'] IconLucideSearch: typeof import('~icons/lucide/search')['default'] IconLucideUsers: typeof import('~icons/lucide/users')['default'] - IconLucideVerified: typeof import('~icons/lucide/verified')['default'] IconLucideX: typeof import('~icons/lucide/x')['default'] ImportExportBase: typeof import('./components/importExport/Base.vue')['default'] ImportExportImportExportList: typeof import('./components/importExport/ImportExportList.vue')['default'] @@ -196,6 +193,10 @@ declare module '@vue/runtime-core' { ImportExportImportExportStepsFileImport: typeof import('./components/importExport/ImportExportSteps/FileImport.vue')['default'] ImportExportImportExportStepsMyCollectionImport: typeof import('./components/importExport/ImportExportSteps/MyCollectionImport.vue')['default'] ImportExportImportExportStepsUrlImport: typeof import('./components/importExport/ImportExportSteps/UrlImport.vue')['default'] + InterceptorsAgentModalNativeClientCertificates: typeof import('./components/interceptors/agent/ModalNativeClientCertificates.vue')['default'] + InterceptorsAgentModalNativeClientCertsAdd: typeof import('./components/interceptors/agent/ModalNativeClientCertsAdd.vue')['default'] + InterceptorsAgentRegistrationModal: typeof import('./components/interceptors/agent/RegistrationModal.vue')['default'] + InterceptorsAgentRootExt: typeof import('./components/interceptors/agent/RootExt.vue')['default'] InterceptorsErrorPlaceholder: typeof import('./components/interceptors/ErrorPlaceholder.vue')['default'] InterceptorsExtensionSubtitle: typeof import('./components/interceptors/ExtensionSubtitle.vue')['default'] LensesHeadersRenderer: typeof import('./components/lenses/HeadersRenderer.vue')['default'] @@ -209,17 +210,14 @@ declare module '@vue/runtime-core' { LensesRenderersVideoLensRenderer: typeof import('./components/lenses/renderers/VideoLensRenderer.vue')['default'] LensesRenderersXMLLensRenderer: typeof import('./components/lenses/renderers/XMLLensRenderer.vue')['default'] LensesResponseBodyRenderer: typeof import('./components/lenses/ResponseBodyRenderer.vue')['default'] - ModalsNativeCACertificates: typeof import('./../../hoppscotch-selfhost-desktop/src/components/modals/NativeCACertificates.vue')['default'] - ModalsNativeClientCertificates: typeof import('./../../hoppscotch-selfhost-desktop/src/components/modals/NativeClientCertificates.vue')['default'] - ModalsNativeClientCertsAdd: typeof import('./../../hoppscotch-selfhost-desktop/src/components/modals/NativeClientCertsAdd.vue')['default'] ProfileUserDelete: typeof import('./components/profile/UserDelete.vue')['default'] RealtimeCommunication: typeof import('./components/realtime/Communication.vue')['default'] RealtimeConnectionConfig: typeof import('./components/realtime/ConnectionConfig.vue')['default'] RealtimeLog: typeof import('./components/realtime/Log.vue')['default'] RealtimeLogEntry: typeof import('./components/realtime/LogEntry.vue')['default'] RealtimeSubscription: typeof import('./components/realtime/Subscription.vue')['default'] + SettingsAgent: typeof import('./components/settings/Agent.vue')['default'] SettingsExtension: typeof import('./components/settings/Extension.vue')['default'] - SettingsNativeInterceptor: typeof import('./../../hoppscotch-selfhost-desktop/src/components/settings/NativeInterceptor.vue')['default'] SettingsProxy: typeof import('./components/settings/Proxy.vue')['default'] Share: typeof import('./components/share/index.vue')['default'] ShareCreateModal: typeof import('./components/share/CreateModal.vue')['default'] @@ -246,5 +244,4 @@ declare module '@vue/runtime-core' { WorkspaceCurrent: typeof import('./components/workspace/Current.vue')['default'] WorkspaceSelector: typeof import('./components/workspace/Selector.vue')['default'] } - } diff --git a/packages/hoppscotch-common/src/components/interceptors/agent/ModalNativeClientCertificates.vue b/packages/hoppscotch-common/src/components/interceptors/agent/ModalNativeClientCertificates.vue new file mode 100644 index 000000000..f067f7fef --- /dev/null +++ b/packages/hoppscotch-common/src/components/interceptors/agent/ModalNativeClientCertificates.vue @@ -0,0 +1,153 @@ + + + + diff --git a/packages/hoppscotch-common/src/components/interceptors/agent/ModalNativeClientCertsAdd.vue b/packages/hoppscotch-common/src/components/interceptors/agent/ModalNativeClientCertsAdd.vue new file mode 100644 index 000000000..16c12683f --- /dev/null +++ b/packages/hoppscotch-common/src/components/interceptors/agent/ModalNativeClientCertsAdd.vue @@ -0,0 +1,288 @@ + + + + diff --git a/packages/hoppscotch-common/src/components/interceptors/agent/RegistrationModal.vue b/packages/hoppscotch-common/src/components/interceptors/agent/RegistrationModal.vue new file mode 100644 index 000000000..4b01808bd --- /dev/null +++ b/packages/hoppscotch-common/src/components/interceptors/agent/RegistrationModal.vue @@ -0,0 +1,146 @@ + + + diff --git a/packages/hoppscotch-common/src/components/interceptors/agent/RootExt.vue b/packages/hoppscotch-common/src/components/interceptors/agent/RootExt.vue new file mode 100644 index 000000000..0095fdd3e --- /dev/null +++ b/packages/hoppscotch-common/src/components/interceptors/agent/RootExt.vue @@ -0,0 +1,100 @@ + + + diff --git a/packages/hoppscotch-common/src/components/settings/Agent.vue b/packages/hoppscotch-common/src/components/settings/Agent.vue new file mode 100644 index 000000000..6706a6154 --- /dev/null +++ b/packages/hoppscotch-common/src/components/settings/Agent.vue @@ -0,0 +1,114 @@ + + + + diff --git a/packages/hoppscotch-common/src/helpers/actions.ts b/packages/hoppscotch-common/src/helpers/actions.ts index c10bb91f7..10d4a38d7 100644 --- a/packages/hoppscotch-common/src/helpers/actions.ts +++ b/packages/hoppscotch-common/src/helpers/actions.ts @@ -78,6 +78,7 @@ export type HoppAction = | "share.request" // Share REST request | "tab.duplicate-tab" // Duplicate REST request | "gql.request.open" // Open GraphQL request + | "agent.open-registration-modal" // Open Hoppscotch Agent registration modal /** * Defines the arguments, if present for a given type that is required to be passed on diff --git a/packages/hoppscotch-common/src/helpers/lenses/lenses.ts b/packages/hoppscotch-common/src/helpers/lenses/lenses.ts index a8e640e49..74ca0246d 100644 --- a/packages/hoppscotch-common/src/helpers/lenses/lenses.ts +++ b/packages/hoppscotch-common/src/helpers/lenses/lenses.ts @@ -38,7 +38,10 @@ export function getSuitableLenses(response: HoppRESTResponse): Lens[] { ) return [] - const contentType = response.headers.find((h) => h.key === "content-type") + // Lowercase the content-type key because HTTP Headers are case-insensitive by spec + const contentType = response.headers.find( + (h) => h.key.toLowerCase() === "content-type" + ) if (!contentType) return [rawLens] diff --git a/packages/hoppscotch-common/src/layouts/default.vue b/packages/hoppscotch-common/src/layouts/default.vue index e7727661d..8edb88a5d 100644 --- a/packages/hoppscotch-common/src/layouts/default.vue +++ b/packages/hoppscotch-common/src/layouts/default.vue @@ -57,6 +57,14 @@ @hide-modal="showSupport = false" /> + + + @@ -78,6 +86,7 @@ import { platform } from "~/platform" import { HoppSpotlightSessionEventData } from "~/platform/analytics" import { PersistenceService } from "~/services/persistence" import { SpotlightService } from "~/services/spotlight" +import { UIExtensionService } from "~/services/ui-extension.service" const router = useRouter() @@ -96,6 +105,9 @@ const t = useI18n() const persistenceService = useService(PersistenceService) const spotlightService = useService(SpotlightService) +const uiExtensionService = useService(UIExtensionService) + +const rootExtensionComponents = uiExtensionService.rootUIExtensionComponents const HAS_OPENED_SPOTLIGHT = useSetting("HAS_OPENED_SPOTLIGHT") diff --git a/packages/hoppscotch-common/src/platform/std/inspections/extension.inspector.ts b/packages/hoppscotch-common/src/platform/std/inspections/extension.inspector.ts index f5c61e522..d62489ce5 100644 --- a/packages/hoppscotch-common/src/platform/std/inspections/extension.inspector.ts +++ b/packages/hoppscotch-common/src/platform/std/inspections/extension.inspector.ts @@ -42,10 +42,16 @@ export class ExtensionInspectorService extends Service implements Inspector { () => currentExtensionStatus.value === "available" ) - const EXTENSIONS_ENABLED = computed( - () => this.interceptorService.currentInterceptorID.value === "extension" + const activeInterceptor = computed( + () => this.interceptorService.currentInterceptorID.value ) + const EXTENSION_ENABLED = computed( + () => activeInterceptor.value === "extension" + ) + + const AGENT_ENABLED = computed(() => activeInterceptor.value === "agent") + return computed(() => { const results: InspectorResult[] = [] @@ -56,9 +62,11 @@ export class ExtensionInspectorService extends Service implements Inspector { url.includes(host) ) + // Prompt the user to install or enable the extension via inspector if the endpoint is `localhost`, and an interceptor other than `Agent` is active if ( isContainLocalhost && - (!EXTENSIONS_ENABLED.value || !isExtensionInstalled.value) + !AGENT_ENABLED.value && + (!EXTENSION_ENABLED.value || !isExtensionInstalled.value) ) { let text @@ -68,7 +76,7 @@ export class ExtensionInspectorService extends Service implements Inspector { } else { text = this.t("inspections.url.extension_not_installed") } - } else if (!EXTENSIONS_ENABLED.value) { + } else if (!EXTENSION_ENABLED.value) { text = this.t("inspections.url.extention_not_enabled") } else { text = this.t("inspections.url.localhost") diff --git a/packages/hoppscotch-common/src/platform/std/interceptors/agent/index.ts b/packages/hoppscotch-common/src/platform/std/interceptors/agent/index.ts new file mode 100644 index 000000000..a4040fd83 --- /dev/null +++ b/packages/hoppscotch-common/src/platform/std/interceptors/agent/index.ts @@ -0,0 +1,864 @@ +import { CookieJarService } from "~/services/cookie-jar.service" +import { + Interceptor, + InterceptorError, + InterceptorService, + RequestRunResult, +} from "~/services/interceptor.service" +import { Service } from "dioc" +import { cloneDeep } from "lodash-es" +import * as E from "fp-ts/Either" +import { ref, watch } from "vue" +import { z } from "zod" +import { PersistenceService } from "~/services/persistence" +import { + CACertStore, + ClientCertsStore, + ClientCertStore, + StoredClientCert, +} from "./persisted-data" +import axios, { CancelTokenSource } from "axios" +import SettingsAgentInterceptor from "~/components/settings/Agent.vue" +import AgentRootUIExtension from "~/components/interceptors/agent/RootExt.vue" +import { UIExtensionService } from "~/services/ui-extension.service" +import { x25519 } from "@noble/curves/ed25519" +import { base16 } from "@scure/base" +import { invokeAction } from "~/helpers/actions" + +type KeyValuePair = { + key: string + value: string +} + +type FormDataValue = + | { Text: string } + | { + File: { + filename: string + data: number[] + mime: string + } + } + +type FormDataEntry = { + key: string + value: FormDataValue +} + +type BodyDef = + | { Text: string } + | { URLEncoded: KeyValuePair[] } + | { FormData: FormDataEntry[] } + +type ClientCertDef = + | { + PEMCert: { + certificate_pem: number[] + key_pem: number[] + } + } + | { + PFXCert: { + certificate_pfx: number[] + password: string + } + } + +// TODO: Figure out a way to autogen this from the interceptor definition on the Rust side +export type RequestDef = { + req_id: number + + method: string + endpoint: string + + headers: KeyValuePair[] + + body: BodyDef | null + + validate_certs: boolean + root_cert_bundle_files: number[][] + client_cert: ClientCertDef | null + + proxy?: { + url: string + } +} + +type RunRequestResponse = { + status: number + status_text: string + headers: KeyValuePair[] + data: number[] + + time_start_ms: number + time_end_ms: number +} + +// HACK: To solve the AxiosRequestConfig being different between @hoppscotch/common +// and the axios present in this package +type AxiosRequestConfig = Parameters[0] + +export const preProcessRequest = ( + req: AxiosRequestConfig +): AxiosRequestConfig => { + const reqClone = cloneDeep(req) + + // If the parameters are URLSearchParams, inject them to URL instead + // This prevents issues of marshalling the URLSearchParams to the proxy + if (reqClone.params instanceof URLSearchParams) { + try { + const url = new URL(reqClone.url ?? "") + + for (const [key, value] of reqClone.params.entries()) { + url.searchParams.append(key, value) + } + + reqClone.url = url.toString() + } catch (e) { + // making this a non-empty block, so we can make the linter happy. + // we should probably use, allowEmptyCatch, or take the time to do something with the caught errors :) + } + + reqClone.params = {} + } + + return reqClone +} + +async function processBody( + axiosReq: AxiosRequestConfig +): Promise { + if (!axiosReq.data) return null + + if (typeof axiosReq.data === "string") { + return { Text: axiosReq.data } + } + + if (axiosReq.data instanceof FormData) { + const entries: FormDataEntry[] = [] + + for (const [key, value] of axiosReq.data.entries()) { + if (typeof value === "string") { + entries.push({ + key, + value: { Text: value }, + }) + } else { + const mime = value.type !== "" ? value.type : "application/octet-stream" + + entries.push({ + key, + value: { + File: { + filename: value.name, + data: Array.from(new Uint8Array(await value.arrayBuffer())), + mime, + }, + }, + }) + } + } + + return { FormData: entries } + } + + throw new Error("Agent Process Body: Unhandled Axios Request Configuration") +} + +function getURLDomain(url: string): string | null { + try { + return new URL(url).host + } catch (_) { + return null + } +} + +function convertClientCertToDefCert( + cert: ClientCertificateEntry +): ClientCertDef { + if ("PEMCert" in cert.cert) { + return { + PEMCert: { + certificate_pem: Array.from(cert.cert.PEMCert.certificate_pem), + key_pem: Array.from(cert.cert.PEMCert.key_pem), + }, + } + } + return { + PFXCert: { + certificate_pfx: Array.from(cert.cert.PFXCert.certificate_pfx), + password: cert.cert.PFXCert.password, + }, + } +} + +async function convertToRequestDef( + axiosReq: AxiosRequestConfig, + reqID: number, + caCertificates: CACertificateEntry[], + clientCertificates: Map, + validateCerts: boolean, + proxyInfo: RequestDef["proxy"] +): Promise { + const clientCertDomain = getURLDomain(axiosReq.url!) + + const clientCert = clientCertDomain + ? clientCertificates.get(clientCertDomain) + : null + + const urlObj = new URL(axiosReq.url ?? "") + + // If there are parameters in axiosReq.params, add them to the URL. + if (axiosReq.params) { + const params = new URLSearchParams(urlObj.search) // Taking in existing params if are any. + + Object.entries(axiosReq.params as Record).forEach( + ([key, value]) => { + params.append(key, value) + } + ) + + urlObj.search = params.toString() // Now put back all the params in the URL. + } + + return { + req_id: reqID, + method: axiosReq.method ?? "GET", + endpoint: urlObj.toString(), // This is the updated URL with parms. + headers: Object.entries(axiosReq.headers ?? {}) + .filter( + ([key, value]) => + !( + key.toLowerCase() === "content-type" && + value.toLowerCase() === "multipart/form-data" + ) + ) // Removing header, because this header will be set by agent. + .map(([key, value]): KeyValuePair => ({ key, value })), + + // NOTE: Injected parameters are already part of the URL + + body: await processBody(axiosReq), + root_cert_bundle_files: caCertificates.map((cert) => + Array.from(cert.certificate) + ), + validate_certs: validateCerts, + client_cert: clientCert ? convertClientCertToDefCert(clientCert) : null, + proxy: proxyInfo, + } +} + +export const CACertificateEntry = z.object({ + filename: z.string().min(1), + enabled: z.boolean(), + certificate: z.instanceof(Uint8Array), +}) + +export type CACertificateEntry = z.infer + +export const ClientCertificateEntry = z.object({ + enabled: z.boolean(), + domain: z.string().trim().min(1), + cert: z.union([ + z.object({ + PEMCert: z.object({ + certificate_filename: z.string().min(1), + certificate_pem: z.instanceof(Uint8Array), + + key_filename: z.string().min(1), + key_pem: z.instanceof(Uint8Array), + }), + }), + z.object({ + PFXCert: z.object({ + certificate_filename: z.string().min(1), + certificate_pfx: z.instanceof(Uint8Array), + + password: z.string(), + }), + }), + ]), +}) + +export type ClientCertificateEntry = z.infer + +const CA_STORE_PERSIST_KEY = "agent_interceptor_ca_store" +const CLIENT_CERTS_PERSIST_KEY = "agent_interceptor_client_certs_store" +const VALIDATE_SSL_KEY = "agent_interceptor_validate_ssl" +const AUTH_KEY_PERSIST_KEY = "agent_interceptor_auth_key" +const SHARED_SECRET_PERSIST_KEY = "agent_interceptor_shared_secret" +const PROXY_INFO_PERSIST_KEY = "agent_interceptor_proxy_info" + +export class AgentInterceptorService extends Service implements Interceptor { + public static readonly ID = "AGENT_INTERCEPTOR_SERVICE" + + public interceptorID = "agent" + + // TODO: Better User facing name + public name = () => "Agent" + + public selectable = { type: "selectable" as const } + + public supportsCookies = true + + private interceptorService = this.bind(InterceptorService) + private cookieJarService = this.bind(CookieJarService) + private persistenceService = this.bind(PersistenceService) + private uiExtensionService = this.bind(UIExtensionService) + + public isAgentRunning = ref(false) + + private reqIDTicker = 0 + private cancelTokens: Map = new Map() + + public settingsPageEntry = { + entryTitle: () => "Agent", // TODO: i18n this + component: SettingsAgentInterceptor, + } + + public caCertificates = ref([]) + + public clientCertificates = ref>( + new Map() + ) + public validateCerts = ref(true) + + public showRegistrationModal = ref(false) + public authKey = ref(null) + public sharedSecretB16 = ref(null) + private registrationOTP = ref(null) + + public proxyInfo = ref(undefined) + + override onServiceInit() { + // Register the Root UI Extension + this.uiExtensionService.addRootUIExtension(AgentRootUIExtension) + + const persistedAuthKey = + this.persistenceService.getLocalConfig(AUTH_KEY_PERSIST_KEY) + if (persistedAuthKey) { + this.authKey.value = persistedAuthKey + } + + const sharedSecret = this.persistenceService.getLocalConfig( + SHARED_SECRET_PERSIST_KEY + ) + if (sharedSecret) { + this.sharedSecretB16.value = sharedSecret + } + + const persistedProxyInfo = this.persistenceService.getLocalConfig( + PROXY_INFO_PERSIST_KEY + ) + if (persistedProxyInfo && persistedProxyInfo !== "null") { + try { + const proxyInfo = JSON.parse(persistedProxyInfo) + this.proxyInfo.value = proxyInfo + } catch (e) {} + } + + // Load SSL Validation + const persistedValidateSSL: unknown = JSON.parse( + this.persistenceService.getLocalConfig(VALIDATE_SSL_KEY) ?? "null" + ) + + if (typeof persistedValidateSSL === "boolean") { + this.validateCerts.value = persistedValidateSSL + } + + watch(this.validateCerts, () => { + this.persistenceService.setLocalConfig( + VALIDATE_SSL_KEY, + JSON.stringify(this.validateCerts.value) + ) + }) + + // Load and setup writes for CA Store + const persistedCAStoreData = JSON.parse( + this.persistenceService.getLocalConfig(CA_STORE_PERSIST_KEY) ?? "null" + ) + + const caStoreDataParseResult = CACertStore.safeParse(persistedCAStoreData) + + if (caStoreDataParseResult.type === "ok") { + this.caCertificates.value = caStoreDataParseResult.value.certs.map( + (entry) => ({ + ...entry, + certificate: new Uint8Array(entry.certificate), + }) + ) + } + + watch(this.caCertificates, (certs) => { + const storableValue: CACertStore = { + v: 1, + certs: certs.map((el) => ({ + ...el, + certificate: Array.from(el.certificate), + })), + } + + this.persistenceService.setLocalConfig( + CA_STORE_PERSIST_KEY, + JSON.stringify(storableValue) + ) + }) + + // Load and setup writes for Client Certs Store + const persistedClientCertStoreData = JSON.parse( + this.persistenceService.getLocalConfig(CLIENT_CERTS_PERSIST_KEY) ?? "null" + ) + + const clientCertStoreDataParseResult = ClientCertsStore.safeParse( + persistedClientCertStoreData + ) + + if (clientCertStoreDataParseResult.type === "ok") { + this.clientCertificates.value = new Map( + Object.entries(clientCertStoreDataParseResult.value.clientCerts).map( + ([domain, cert]) => { + if ("PFXCert" in cert.cert) { + const newCert = { + ...cert, + cert: { + PFXCert: { + certificate_pfx: new Uint8Array( + cert.cert.PFXCert.certificate_pfx + ), + certificate_filename: + cert.cert.PFXCert.certificate_filename, + + password: cert.cert.PFXCert.password, + }, + }, + } + + return [domain, newCert] + } + const newCert = { + ...cert, + cert: { + PEMCert: { + certificate_pem: new Uint8Array( + cert.cert.PEMCert.certificate_pem + ), + certificate_filename: cert.cert.PEMCert.certificate_filename, + + key_pem: new Uint8Array(cert.cert.PEMCert.key_pem), + key_filename: cert.cert.PEMCert.key_filename, + }, + }, + } + + return [domain, newCert] + } + ) + ) + } + + watch(this.clientCertificates, (certs) => { + const storableValue: ClientCertStore = { + v: 1, + clientCerts: Object.fromEntries( + Array.from(certs.entries()).map(([domain, cert]) => { + if ("PFXCert" in cert.cert) { + const newCert = { + ...cert, + cert: { + PFXCert: { + certificate_pfx: Array.from( + cert.cert.PFXCert.certificate_pfx + ), + certificate_filename: + cert.cert.PFXCert.certificate_filename, + + password: cert.cert.PFXCert.password, + }, + }, + } + + return [domain, newCert] + } + const newCert = { + ...cert, + cert: { + PEMCert: { + certificate_pem: Array.from( + cert.cert.PEMCert.certificate_pem + ), + certificate_filename: cert.cert.PEMCert.certificate_filename, + + key_pem: Array.from(cert.cert.PEMCert.key_pem), + key_filename: cert.cert.PEMCert.key_filename, + }, + }, + } + + return [domain, newCert] + }) + ), + } + + this.persistenceService.setLocalConfig( + CLIENT_CERTS_PERSIST_KEY, + JSON.stringify(storableValue) + ) + }) + + watch(this.authKey, (newAuthKey) => { + if (newAuthKey) { + this.persistenceService.setLocalConfig(AUTH_KEY_PERSIST_KEY, newAuthKey) + } else { + this.persistenceService.removeLocalConfig(AUTH_KEY_PERSIST_KEY) + } + }) + + watch(this.proxyInfo, (newProxyInfo) => { + this.persistenceService.setLocalConfig( + PROXY_INFO_PERSIST_KEY, + JSON.stringify(newProxyInfo) ?? "null" + ) + }) + + // Show registration UI if there is no auth key present + watch( + [this.interceptorService.currentInterceptor, this.authKey], + ([currentInterceptor, authKey]) => { + if ( + currentInterceptor?.interceptorID === this.interceptorID && + authKey === null + ) { + this.showRegistrationModal.value = true + } + }, + { + immediate: true, + } + ) + + // Verify if the agent registration still holds, else revoke the registration + if (this.authKey.value) { + ;(async () => { + try { + const nonce = window.crypto.getRandomValues(new Uint8Array(12)) + const nonceB16 = base16.encode(nonce).toLowerCase() + + const response = await axios.get( + "http://localhost:9119/registered-handshake", + { + headers: { + Authorization: `Bearer ${this.authKey.value}`, + "X-Hopp-Nonce": nonceB16, + }, + responseType: "arraybuffer", + } + ) + + const responseNonceB16: string = response.headers["x-hopp-nonce"] + const encryptedResponseBytes = response.data + + const parsedData = await this.getDecryptedResponse( + responseNonceB16, + encryptedResponseBytes + ) + + // This should decrypt directly into `true` else registration failed + if (parsedData !== true) { + throw "handshake-mismatch" + } + } catch (e) { + if (e === "handshake-mismatch") { + this.sharedSecretB16.value = null + this.authKey.value = null + } else if (axios.isAxiosError(e) && e.status === 401) { + this.sharedSecretB16.value = null + this.authKey.value = null + } + } + })() + } + } + + public async checkAgentStatus(): Promise { + try { + await this.performHandshake() + this.isAgentRunning.value = true + } catch (error) { + this.isAgentRunning.value = false + } + } + + public isAuthKeyPresent(): boolean { + return this.authKey.value !== null + } + + private generateOTP(): string { + // This generates a 6-digit numeric OTP + return Math.floor(100000 + Math.random() * 900000).toString() + } + + public async performHandshake(): Promise { + const handshakeResponse = await axios.get("http://localhost:9119/handshake") + if ( + handshakeResponse.data.status !== "success" && + handshakeResponse.data.__hoppscotch__agent__ === true + ) { + throw new Error("Handshake failed") + } + } + + public async initiateRegistration() { + try { + // Generate OTP and send registration request + this.registrationOTP.value = this.generateOTP() + + const registrationResponse = await axios.post( + "http://localhost:9119/receive-registration", + { + registration: this.registrationOTP.value, + } + ) + + if ( + registrationResponse.data.message !== "Registration received and stored" + ) { + throw new Error("Registration failed") + } + + // Registration successful, modal will handle showing the OTP input + } catch (error) { + console.error("Registration initiation failed:", error) + throw error // Re-throw to let the modal handle the error + } + } + + public async verifyRegistration(userEnteredOTP: string) { + try { + const myPrivateKey = x25519.utils.randomPrivateKey() + const myPublicKey = x25519.getPublicKey(myPrivateKey) + + const myPublicKeyB16 = base16.encode(myPublicKey).toLowerCase() + + const verificationResponse = await axios.post( + "http://localhost:9119/verify-registration", + { + registration: userEnteredOTP, + client_public_key_b16: myPublicKeyB16, + } + ) + + const newAuthKey = verificationResponse.data.auth_key + const agentPublicKeyB16: string = + verificationResponse.data.agent_public_key_b16 + + const agentPublicKey = base16.decode(agentPublicKeyB16.toUpperCase()) + + const sharedSecret = x25519.getSharedSecret(myPrivateKey, agentPublicKey) + const sharedSecretB16 = base16.encode(sharedSecret).toLowerCase() + + if (typeof newAuthKey === "string") { + this.authKey.value = newAuthKey + this.sharedSecretB16.value = sharedSecretB16 + this.persistenceService.setLocalConfig(AUTH_KEY_PERSIST_KEY, newAuthKey) + this.persistenceService.setLocalConfig( + SHARED_SECRET_PERSIST_KEY, + sharedSecretB16 + ) + } else { + throw new Error("Invalid auth key received") + } + + this.showRegistrationModal.value = false + this.registrationOTP.value = null + } catch (error) { + console.error("Verification failed:", error) + throw new Error("Verification failed") + } + } + + private async getEncryptedRequestDef( + def: RequestDef + ): Promise<[string, ArrayBuffer]> { + const defJSON = JSON.stringify(def) + const defJSONBytes = new TextEncoder().encode(defJSON) + + const nonce = window.crypto.getRandomValues(new Uint8Array(12)) + const nonceB16 = base16.encode(nonce).toLowerCase() + + const sharedSecretKeyBytes = base16.decode( + this.sharedSecretB16.value!.toUpperCase() + ) + + const sharedSecretKey = await window.crypto.subtle.importKey( + "raw", + sharedSecretKeyBytes, + "AES-GCM", + true, + ["encrypt", "decrypt"] + ) + + const encryptedDef = await window.crypto.subtle.encrypt( + { name: "AES-GCM", iv: nonce }, + sharedSecretKey, + defJSONBytes + ) + + return [nonceB16, encryptedDef] + } + + private async getDecryptedResponse( + nonceB16: string, + responseData: ArrayBuffer + ) { + const sharedSecretKeyBytes = base16.decode( + this.sharedSecretB16.value!.toUpperCase() + ) + + const sharedSecretKey = await window.crypto.subtle.importKey( + "raw", + sharedSecretKeyBytes, + "AES-GCM", + true, + ["encrypt", "decrypt"] + ) + + const nonce = base16.decode(nonceB16.toUpperCase()) + + const plainTextDefBytes = await window.crypto.subtle.decrypt( + { name: "AES-GCM", iv: nonce }, + sharedSecretKey, + responseData + ) + + const plainText = new TextDecoder().decode(plainTextDefBytes) + + return JSON.parse(plainText) as T + } + + public runRequest( + req: AxiosRequestConfig + ): RequestRunResult { + // TODO: Check if auth key is defined ? + + const processedReq = preProcessRequest(req) + + const relevantCookies = this.cookieJarService.getCookiesForURL( + new URL(processedReq.url!) + ) + + if (relevantCookies.length > 0) { + processedReq.headers!["Cookie"] = relevantCookies + .map((cookie) => `${cookie.name!}=${cookie.value!}`) + .join(";") + } + + const reqID = this.reqIDTicker++ + + const cancelTokenSource = axios.CancelToken.source() + this.cancelTokens.set(reqID, cancelTokenSource) + + return { + cancel: () => { + const cancelTokenSource = this.cancelTokens.get(reqID) + if (cancelTokenSource) { + cancelTokenSource.cancel("Request cancelled") + this.cancelTokens.delete(reqID) + axios + .post( + `http://localhost:9119/cancel-request/${reqID}`, + {}, + { + headers: { + Authorization: `Bearer ${this.authKey.value}`, + }, + } + ) + .catch((error) => console.error("Error cancelling request:", error)) + } + }, + response: (async () => { + await this.checkAgentStatus() + + if (!this.isAgentRunning.value || !this.authKey.value) { + invokeAction("agent.open-registration-modal") + + return E.left({ + humanMessage: { + heading: (t) => t("error.network_fail"), + description: (t) => t("helpers.network_fail"), + }, + }) + } + + const requestDef = await convertToRequestDef( + processedReq, + reqID, + this.caCertificates.value, + this.clientCertificates.value, + this.validateCerts.value, + this.proxyInfo.value + ) + + const [nonceB16, encryptedDef] = + await this.getEncryptedRequestDef(requestDef) + + try { + const http_response = await axios.post( + "http://localhost:9119/request", + encryptedDef, + { + headers: { + Authorization: `Bearer ${this.authKey.value}`, + "X-Hopp-Nonce": nonceB16, + "Content-Type": "application/octet-stream", + }, + cancelToken: cancelTokenSource.token, + responseType: "arraybuffer", + } + ) + + const responseNonceB16: string = http_response.headers["x-hopp-nonce"] + const encryptedResponseBytes = http_response.data + + const response = await this.getDecryptedResponse( + responseNonceB16, + encryptedResponseBytes + ) + + // TODO: Run it against a Zod Schema validation + + return E.right({ + headers: Object.fromEntries( + response.headers.map(({ key, value }) => [key, value]) + ), + status: response.status, + statusText: response.status_text, + data: new Uint8Array(response.data).buffer, + config: { + timeData: { + startTime: response.time_start_ms, + endTime: response.time_end_ms, + }, + }, + additional: { + multiHeaders: response.headers, + }, + }) + } catch (e) { + console.log(e) + + if (typeof e === "object" && (e as any)["RequestCancelled"]) { + return E.left("cancellation" as const) + } + + // TODO: More in-depth error messages + return E.left({ + humanMessage: { + heading: (t) => t("error.network_fail"), + description: (t) => t("helpers.network_fail"), + }, + }) + } + })(), + } + } +} diff --git a/packages/hoppscotch-common/src/platform/std/interceptors/agent/persisted-data.ts b/packages/hoppscotch-common/src/platform/std/interceptors/agent/persisted-data.ts new file mode 100644 index 000000000..166c31086 --- /dev/null +++ b/packages/hoppscotch-common/src/platform/std/interceptors/agent/persisted-data.ts @@ -0,0 +1,80 @@ +import { z } from "zod" +import { defineVersion, createVersionedEntity, InferredEntity } from "verzod" + +const Uint8 = z.number().int().gte(0).lte(255) + +export const StoredCACert = z.object({ + filename: z.string().min(1), + enabled: z.boolean(), + certificate: z.array(Uint8), +}) + +const caCertStore_v1 = defineVersion({ + initial: true, + schema: z.object({ + v: z.literal(1), + certs: z.array(StoredCACert), + }), +}) + +export const CACertStore = createVersionedEntity({ + latestVersion: 1, + versionMap: { + 1: caCertStore_v1, + }, + getVersion(data) { + const result = caCertStore_v1.schema.safeParse(data) + + return result.success ? result.data.v : null + }, +}) + +export type CACertStore = InferredEntity + +export const StoredClientCert = z.object({ + enabled: z.boolean(), + domain: z.string().trim().min(1), + cert: z.union([ + z.object({ + PEMCert: z.object({ + certificate_filename: z.string().min(1), + certificate_pem: z.array(Uint8), + + key_filename: z.string().min(1), + key_pem: z.array(Uint8), + }), + }), + z.object({ + PFXCert: z.object({ + certificate_filename: z.string().min(1), + certificate_pfx: z.array(Uint8), + + password: z.string(), + }), + }), + ]), +}) + +export type StoredClientCert = z.infer + +const clientCertsStore_v1 = defineVersion({ + initial: true, + schema: z.object({ + v: z.literal(1), + clientCerts: z.record(StoredClientCert), + }), +}) + +export const ClientCertsStore = createVersionedEntity({ + latestVersion: 1, + versionMap: { + 1: clientCertsStore_v1, + }, + getVersion(data) { + const result = clientCertsStore_v1.schema.safeParse(data) + + return result.success ? result.data.v : null + }, +}) + +export type ClientCertStore = InferredEntity diff --git a/packages/hoppscotch-common/src/services/debug.service.ts b/packages/hoppscotch-common/src/services/debug.service.ts index 5b6c88bc8..2a90d0284 100644 --- a/packages/hoppscotch-common/src/services/debug.service.ts +++ b/packages/hoppscotch-common/src/services/debug.service.ts @@ -5,7 +5,10 @@ import { Service } from "dioc" * supposed to be used only in development. * * This service logs events from the container and also events - * from all the services that are bound to the container. + * from all the services that are bound to the container. Along with that + * this service exposes all registered services (including this) to global + * scope (window) under the ID of the service so it can be accessed using + * the console for debugging. * * This service injects couple of utilities into the global scope: * - `_getService(id: string): Service | undefined` - Returns the service instance with the given ID or undefined. @@ -15,27 +18,30 @@ export class DebugService extends Service { public static readonly ID = "DEBUG_SERVICE" override onServiceInit() { - console.log("DebugService is initialized...") + console.debug("DebugService is initialized...") const container = this.getContainer() // Log container events container.getEventStream().subscribe((event) => { if (event.type === "SERVICE_BIND") { - console.log( + console.debug( "[CONTAINER] Service Bind:", event.bounderID ?? "", "->", event.boundeeID ) } else if (event.type === "SERVICE_INIT") { - console.log("[CONTAINER] Service Init:", event.serviceID) + console.debug("[CONTAINER] Service Init:", event.serviceID) // Subscribe to event stream of the newly initialized service const service = container.getBoundServiceWithID(event.serviceID) + // Expose the service globally for debugging via a global variable + ;(window as any)[event.serviceID] = service + service?.getEventStream().subscribe((ev: any) => { - console.log(`[${event.serviceID}] Event:`, ev) + console.debug(`[${event.serviceID}] Event:`, ev) }) } }) @@ -43,8 +49,11 @@ export class DebugService extends Service { // Subscribe to event stream of all already bound services (if any) for (const [id, service] of container.getBoundServices()) { service.getEventStream().subscribe((event: any) => { - console.log(`[${id}]`, event) + console.debug(`[${id}]`, event) }) + + // Expose the service globally for debugging via a global variable + ;(window as any)[id] = service } // Inject debug utilities into the global scope diff --git a/packages/hoppscotch-common/src/services/ui-extension.service.ts b/packages/hoppscotch-common/src/services/ui-extension.service.ts new file mode 100644 index 000000000..6da61ab0a --- /dev/null +++ b/packages/hoppscotch-common/src/services/ui-extension.service.ts @@ -0,0 +1,25 @@ +import { Service } from "dioc" +import { Component, shallowRef } from "vue" + +/** + * A registrar that allows other services to register + * additional stuff into the UI + */ +export class UIExtensionService extends Service { + public static readonly ID = "UI_EXTENSION_SERVICE" + + /** + * Defines the Root UI Extensions that are registered. + * These components are rendered in `layouts/default.vue`. + * NOTE: This is supposed to be readonly, to register + */ + public rootUIExtensionComponents = shallowRef([]) + + /** + * Registers a root UI extension component that will be rendered + * in the root of the UI + */ + public addRootUIExtension(component: Component) { + this.rootUIExtensionComponents.value.push(component) + } +} diff --git a/packages/hoppscotch-selfhost-web/src/main.ts b/packages/hoppscotch-selfhost-web/src/main.ts index 5119e8a34..6729c0423 100644 --- a/packages/hoppscotch-selfhost-web/src/main.ts +++ b/packages/hoppscotch-selfhost-web/src/main.ts @@ -8,6 +8,7 @@ import { browserInterceptor } from "@hoppscotch/common/platform/std/interceptors import { proxyInterceptor } from "@hoppscotch/common/platform/std/interceptors/proxy" import { ExtensionInspectorService } from "@hoppscotch/common/platform/std/inspections/extension.inspector" import { ExtensionInterceptorService } from "@hoppscotch/common/platform/std/interceptors/extension" +import { AgentInterceptorService } from "@hoppscotch/common/platform/std/interceptors/agent" import { stdFooterItems } from "@hoppscotch/common/platform/std/ui/footerItem" import { stdSupportOptionItems } from "@hoppscotch/common/platform/std/ui/supportOptionsItem" import { browserIODef } from "@hoppscotch/common/platform/std/io" @@ -32,6 +33,7 @@ createHoppApp("#app", { { type: "standalone", interceptor: browserInterceptor }, { type: "standalone", interceptor: proxyInterceptor }, { type: "service", service: ExtensionInterceptorService }, + { type: "service", service: AgentInterceptorService }, ], }, additionalInspectors: [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f0fad8aa0..611d476f2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,7 +32,7 @@ importers: version: 16.2.4 '@hoppscotch/ui': specifier: 0.2.0 - version: 0.2.0(eslint@8.57.0)(terser@5.31.0)(typescript@4.9.5)(vite@5.0.5(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5)) + version: 0.2.0(eslint@8.57.0)(terser@5.31.0)(typescript@4.9.5)(vite@5.4.8(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5)) '@types/node': specifier: 17.0.27 version: 17.0.27 @@ -80,6 +80,64 @@ importers: specifier: 5.2.2 version: 5.2.2 + packages/hoppscotch-agent: + dependencies: + '@hoppscotch/ui': + specifier: ^0.2.1 + version: 0.2.1(eslint@8.57.0)(terser@5.31.0)(typescript@5.3.3)(vite@5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.3)) + '@tauri-apps/api': + specifier: '>=2.0.0-rc.0' + version: 2.0.0-rc.5 + '@tauri-apps/plugin-shell': + specifier: '>=2.0.0-rc.0' + version: 2.0.0-rc.1 + '@vueuse/core': + specifier: ^11.1.0 + version: 11.1.0(vue@3.3.9(typescript@5.3.3)) + axios: + specifier: ^1.7.7 + version: 1.7.7 + fp-ts: + specifier: ^2.16.9 + version: 2.16.9 + vue: + specifier: 3.3.9 + version: 3.3.9(typescript@5.3.3) + devDependencies: + '@iconify-json/lucide': + specifier: ^1.2.6 + version: 1.2.6 + '@tauri-apps/cli': + specifier: '>=2.0.0-rc.0' + version: 2.0.0-rc.16 + '@types/node': + specifier: ^22.7.0 + version: 22.7.3 + '@vitejs/plugin-vue': + specifier: ^5.1.4 + version: 5.1.4(vite@5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.3)) + autoprefixer: + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.47) + postcss: + specifier: ^8.4.47 + version: 8.4.47 + tailwindcss: + specifier: ^3.4.13 + version: 3.4.13(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.3)) + typescript: + specifier: ^5.2.2 + version: 5.3.3 + unplugin-icons: + specifier: ^0.19.3 + version: 0.19.3(@vue/compiler-sfc@3.3.10)(vue-template-compiler@2.7.16)(webpack-sources@3.2.3) + vite: + specifier: ^5.4.7 + version: 5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) + vue-tsc: + specifier: ^2.0.22 + version: 2.1.6(typescript@5.3.3) + packages/hoppscotch-backend: dependencies: '@apollo/server': @@ -380,7 +438,7 @@ importers: version: 3.2.5 tsup: specifier: 8.0.2 - version: 8.0.2(@swc/core@1.4.2)(postcss@8.4.40)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.3))(typescript@5.3.3) + version: 8.0.2(@swc/core@1.4.2)(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.3))(typescript@5.3.3) typescript: specifier: 5.3.3 version: 5.3.3 @@ -443,13 +501,19 @@ importers: version: link:../hoppscotch-js-sandbox '@hoppscotch/ui': specifier: 0.2.0 - version: 0.2.0(eslint@8.57.0)(terser@5.31.0)(typescript@5.3.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2)) + version: 0.2.0(eslint@8.57.0)(terser@5.31.0)(typescript@5.3.2)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2)) '@hoppscotch/vue-toasted': specifier: 0.1.0 version: 0.1.0(vue@3.3.9(typescript@5.3.2)) '@lezer/highlight': specifier: 1.2.0 version: 1.2.0 + '@noble/curves': + specifier: 1.6.0 + version: 1.6.0 + '@scure/base': + specifier: 1.1.9 + version: 1.1.9 '@shopify/lang-jsonc': specifier: 1.0.0 version: 1.0.0 @@ -470,7 +534,7 @@ importers: version: 6.4.0(graphql@16.8.1) '@vitejs/plugin-legacy': specifier: 4.1.1 - version: 4.1.1(terser@5.31.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 4.1.1(terser@5.31.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) '@vueuse/core': specifier: 10.7.0 version: 10.7.0(vue@3.3.9(typescript@5.3.2)) @@ -509,7 +573,7 @@ importers: version: 16.8.1 graphql-language-service-interface: specifier: 2.10.2 - version: 2.10.2(@types/node@18.18.8)(graphql@16.8.1) + version: 2.10.2(@types/node@22.7.3)(graphql@16.8.1) graphql-tag: specifier: 2.12.6 version: 2.12.6(graphql@16.8.1) @@ -642,16 +706,16 @@ importers: devDependencies: '@esbuild-plugins/node-globals-polyfill': specifier: 0.2.3 - version: 0.2.3(esbuild@0.20.2) + version: 0.2.3(esbuild@0.21.5) '@esbuild-plugins/node-modules-polyfill': specifier: 0.2.2 - version: 0.2.2(esbuild@0.20.2) + version: 0.2.2(esbuild@0.21.5) '@graphql-codegen/add': specifier: 5.0.0 version: 5.0.0(graphql@16.8.1) '@graphql-codegen/cli': specifier: 5.0.0 - version: 5.0.0(@types/node@18.18.8)(graphql@16.8.1)(typescript@5.3.2) + version: 5.0.0(@types/node@22.7.3)(graphql@16.8.1)(typescript@5.3.2) '@graphql-codegen/typed-document-node': specifier: 5.0.1 version: 5.0.1(graphql@16.8.1) @@ -675,7 +739,7 @@ importers: version: 1.1.144 '@intlify/vite-plugin-vue-i18n': specifier: 7.0.0 - version: 7.0.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2))) + version: 7.0.0(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2))) '@relmify/jest-fp-ts': specifier: 2.1.1 version: 2.1.1(fp-ts@2.16.1)(io-ts@2.2.20(fp-ts@2.16.1)) @@ -723,7 +787,7 @@ importers: version: 7.3.1(eslint@8.57.0)(typescript@5.3.2) '@vitejs/plugin-vue': specifier: 4.5.1 - version: 4.5.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2)) + version: 4.5.1(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2)) '@vue/compiler-sfc': specifier: 3.3.10 version: 3.3.10 @@ -771,52 +835,52 @@ importers: version: 0.5.7(prettier@3.1.0) rollup-plugin-polyfill-node: specifier: 0.13.0 - version: 0.13.0(rollup@4.17.2) + version: 0.13.0(rollup@4.22.4) sass: specifier: 1.69.5 version: 1.69.5 tailwindcss: specifier: 3.3.5 - version: 3.3.5(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.2)) + version: 3.3.5(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.2)) typescript: specifier: 5.3.2 version: 5.3.2 unplugin-fonts: specifier: 1.1.1 - version: 1.1.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 1.1.1(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) unplugin-icons: specifier: 0.17.4 version: 0.17.4(@vue/compiler-sfc@3.3.10)(vue-template-compiler@2.7.16) unplugin-vue-components: specifier: 0.25.2 - version: 0.25.2(@babel/parser@7.24.5)(rollup@4.17.2)(vue@3.3.9(typescript@5.3.2)) + version: 0.25.2(@babel/parser@7.24.5)(rollup@4.22.4)(vue@3.3.9(typescript@5.3.2)) vite: specifier: 4.5.0 - version: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + version: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) vite-plugin-checker: specifier: 0.6.2 - version: 0.6.2(eslint@8.57.0)(optionator@0.9.4)(typescript@5.3.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-tsc@1.8.24(typescript@5.3.2)) + version: 0.6.2(eslint@8.57.0)(optionator@0.9.4)(typescript@5.3.2)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue-tsc@1.8.24(typescript@5.3.2)) vite-plugin-fonts: specifier: 0.7.0 - version: 0.7.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 0.7.0(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vite-plugin-html-config: specifier: 1.0.11 - version: 1.0.11(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 1.0.11(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vite-plugin-inspect: specifier: 0.7.42 - version: 0.7.42(rollup@4.17.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 0.7.42(rollup@4.22.4)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vite-plugin-pages: specifier: 0.31.0 - version: 0.31.0(@vue/compiler-sfc@3.3.10)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 0.31.0(@vue/compiler-sfc@3.3.10)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vite-plugin-pages-sitemap: specifier: 1.6.1 version: 1.6.1 vite-plugin-pwa: specifier: 0.17.3 - version: 0.17.3(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0) + version: 0.17.3(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0) vite-plugin-vue-layouts: specifier: 0.8.0 - version: 0.8.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-router@4.2.5(vue@3.3.9(typescript@5.3.2)))(vue@3.3.9(typescript@5.3.2)) + version: 0.8.0(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue-router@4.2.5(vue@3.3.9(typescript@5.3.2)))(vue@3.3.9(typescript@5.3.2)) vitest: specifier: 0.34.6 version: 0.34.6(jsdom@16.7.0)(sass@1.69.5)(terser@5.31.0) @@ -853,7 +917,7 @@ importers: version: 5.2.2 vite: specifier: 4.5.0 - version: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + version: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) packages/hoppscotch-js-sandbox: dependencies: @@ -1098,7 +1162,7 @@ importers: version: 0.14.9(@vue/compiler-sfc@3.3.10)(vue-template-compiler@2.7.16) unplugin-vue-components: specifier: 0.21.0 - version: 0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)) + version: 0.21.0(@babel/parser@7.24.5)(esbuild@0.21.5)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5)) vite: specifier: 4.5.0 version: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) @@ -1146,7 +1210,7 @@ importers: version: link:../hoppscotch-data '@hoppscotch/ui': specifier: 0.1.0 - version: 0.1.0(eslint@8.55.0)(terser@5.31.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2)) + version: 0.1.0(eslint@8.55.0)(terser@5.31.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2)) '@import-meta-env/unplugin': specifier: 0.4.10 version: 0.4.10(@import-meta-env/cli@0.6.3)(dotenv@16.3.1) @@ -1189,7 +1253,7 @@ importers: version: 5.0.0(graphql@16.8.1) '@graphql-codegen/cli': specifier: 5.0.0 - version: 5.0.0(@types/node@18.18.8)(graphql@16.8.1)(typescript@5.3.2) + version: 5.0.0(@types/node@22.7.3)(graphql@16.8.1)(typescript@5.3.2) '@graphql-codegen/typed-document-node': specifier: 5.0.1 version: 5.0.1(graphql@16.8.1) @@ -1213,7 +1277,7 @@ importers: version: 1.1.144 '@intlify/vite-plugin-vue-i18n': specifier: 7.0.0 - version: 7.0.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2))) + version: 7.0.0(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2))) '@rushstack/eslint-patch': specifier: 1.6.0 version: 1.6.0 @@ -1225,10 +1289,10 @@ importers: version: 6.13.2(eslint@8.55.0)(typescript@5.3.2) '@vitejs/plugin-legacy': specifier: 4.1.1 - version: 4.1.1(terser@5.31.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 4.1.1(terser@5.31.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) '@vitejs/plugin-vue': specifier: 4.5.1 - version: 4.5.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2)) + version: 4.5.1(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2)) '@vue/eslint-config-typescript': specifier: 12.0.0 version: 12.0.0(eslint-plugin-vue@9.19.2(eslint@8.55.0))(eslint@8.55.0)(typescript@5.3.2) @@ -1258,46 +1322,46 @@ importers: version: 0.5.7(prettier@3.2.5) tailwindcss: specifier: 3.3.5 - version: 3.3.5(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.2)) + version: 3.3.5(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.2)) typescript: specifier: 5.3.2 version: 5.3.2 unplugin-fonts: specifier: 1.1.1 - version: 1.1.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 1.1.1(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) unplugin-icons: specifier: 0.17.4 version: 0.17.4(@vue/compiler-sfc@3.3.10)(vue-template-compiler@2.7.16) unplugin-vue-components: specifier: 0.25.2 - version: 0.25.2(@babel/parser@7.24.5)(rollup@4.17.2)(vue@3.3.9(typescript@5.3.2)) + version: 0.25.2(@babel/parser@7.24.5)(rollup@4.22.4)(vue@3.3.9(typescript@5.3.2)) vite: specifier: 4.5.0 - version: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + version: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) vite-plugin-fonts: specifier: 0.7.0 - version: 0.7.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 0.7.0(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vite-plugin-html-config: specifier: 1.0.11 - version: 1.0.11(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 1.0.11(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vite-plugin-inspect: specifier: 0.7.42 - version: 0.7.42(rollup@4.17.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 0.7.42(rollup@4.22.4)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vite-plugin-pages: specifier: 0.31.0 - version: 0.31.0(@vue/compiler-sfc@3.3.10)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 0.31.0(@vue/compiler-sfc@3.3.10)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vite-plugin-pages-sitemap: specifier: 1.6.1 version: 1.6.1 vite-plugin-pwa: specifier: 0.17.3 - version: 0.17.3(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0) + version: 0.17.3(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0) vite-plugin-static-copy: specifier: 0.17.1 - version: 0.17.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + version: 0.17.1(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vite-plugin-vue-layouts: specifier: 0.8.0 - version: 0.8.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-router@4.2.5(vue@3.3.9(typescript@5.3.2)))(vue@3.3.9(typescript@5.3.2)) + version: 0.8.0(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue-router@4.2.5(vue@3.3.9(typescript@5.3.2)))(vue@3.3.9(typescript@5.3.2)) vue-tsc: specifier: 1.8.24 version: 1.8.24(typescript@5.3.2) @@ -1318,7 +1382,7 @@ importers: version: 3.1.1(graphql@16.6.0) '@hoppscotch/ui': specifier: 0.1.3 - version: 0.1.3(eslint@8.57.0)(terser@5.31.0)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3)) + version: 0.1.3(eslint@8.57.0)(terser@5.31.0)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3)) '@hoppscotch/vue-toasted': specifier: 0.1.0 version: 0.1.0(vue@3.3.9(typescript@4.9.3)) @@ -1378,19 +1442,19 @@ importers: version: 7.8.0 tailwindcss: specifier: 3.3.5 - version: 3.3.5(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3)) + version: 3.3.5(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3)) tippy.js: specifier: 6.3.7 version: 6.3.7 ts-node-dev: specifier: 2.0.0 - version: 2.0.0(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3) + version: 2.0.0(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3) unplugin-icons: specifier: 0.14.9 version: 0.14.9(@vue/compiler-sfc@3.2.45)(vue-template-compiler@2.7.16) unplugin-vue-components: specifier: 0.21.0 - version: 0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@2.79.1)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)) + version: 0.21.0(@babel/parser@7.24.5)(esbuild@0.21.5)(rollup@2.79.1)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5)) vue: specifier: 3.3.9 version: 3.3.9(typescript@4.9.3) @@ -1406,7 +1470,7 @@ importers: devDependencies: '@graphql-codegen/cli': specifier: 3.0.0 - version: 3.0.0(@babel/core@7.24.5)(@swc/core@1.4.2)(@types/node@18.18.8)(graphql@16.6.0)(typescript@4.9.3) + version: 3.0.0(@babel/core@7.24.5)(@swc/core@1.4.2)(@types/node@22.7.3)(graphql@16.6.0)(typescript@4.9.3) '@graphql-codegen/client-preset': specifier: 2.1.0 version: 2.1.0(graphql@16.6.0) @@ -1442,7 +1506,7 @@ importers: version: 4.17.12 '@vitejs/plugin-vue': specifier: 3.2.0 - version: 3.2.0(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3)) + version: 3.2.0(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3)) '@vue/compiler-sfc': specifier: 3.2.45 version: 3.2.45 @@ -1463,22 +1527,22 @@ importers: version: 1.58.0 ts-node: specifier: 10.9.1 - version: 10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3) + version: 10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3) typescript: specifier: 4.9.3 version: 4.9.3 unplugin-fonts: specifier: 1.0.3 - version: 1.0.3(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0)) + version: 1.0.3(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0)) vite: specifier: 3.2.4 - version: 3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0) + version: 3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0) vite-plugin-pages: specifier: 0.26.0 - version: 0.26.0(@vue/compiler-sfc@3.2.45)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0)) + version: 0.26.0(@vue/compiler-sfc@3.2.45)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0)) vite-plugin-vue-layouts: specifier: 0.7.0 - version: 0.7.0(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue-router@4.1.0(vue@3.3.9(typescript@4.9.3)))(vue@3.3.9(typescript@4.9.3)) + version: 0.7.0(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))(vue-router@4.1.0(vue@3.3.9(typescript@4.9.3)))(vue@3.3.9(typescript@4.9.3)) vue-tsc: specifier: 0.3.0 version: 0.3.0(typescript@4.9.3) @@ -1522,9 +1586,15 @@ packages: '@antfu/install-pkg@0.1.1': resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + '@antfu/install-pkg@0.4.1': + resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + '@antfu/utils@0.5.2': resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + '@antfu/utils@0.7.7': resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} @@ -2454,8 +2524,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] @@ -2472,8 +2542,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2496,8 +2566,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2514,8 +2584,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2532,8 +2602,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2550,8 +2620,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2568,8 +2638,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2586,8 +2656,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2604,8 +2674,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2622,8 +2692,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2640,8 +2710,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2670,8 +2740,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2688,8 +2758,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2706,8 +2776,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2724,8 +2794,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2742,8 +2812,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2760,8 +2830,8 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2778,8 +2848,8 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -2796,8 +2866,8 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -2814,8 +2884,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -2832,8 +2902,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -2850,8 +2920,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -2868,8 +2938,8 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -3431,6 +3501,12 @@ packages: peerDependencies: vue: 3.3.9 + '@hoppscotch/ui@0.2.1': + resolution: {integrity: sha512-orwItZFlOZUFfMf0B7RNAQa2ByucnXcl9ufP0aJggyFafRk/X9eyMPC6JrF/OATml/ZztksjiB2636cMYsEnSw==} + engines: {node: '>=16'} + peerDependencies: + vue: 3.3.9 + '@hoppscotch/vue-sonner@1.2.3': resolution: {integrity: sha512-P1gyvHHLsPeB8lsLP5SrqwQatuwOKtbsP83sKhyIV3WL2rJj3+DiFfqo2ErNBa+Sl0gM68o1V+wuOS7zbR//6g==} @@ -3464,6 +3540,9 @@ packages: '@iconify-json/lucide@1.1.144': resolution: {integrity: sha512-MdpwW2zrSmxgUUyZs5zX7GqlqoTMvK1fpIFQKkXOwsxWfijAjyEWP2oWFFdVIKUoDyMSbJzXXIwon68D/Q4PcQ==} + '@iconify-json/lucide@1.2.6': + resolution: {integrity: sha512-HVLLxmG/rJ91GqpEE97OHdEwb/LfjwMVdynWIrnjvNRQNoKvrYG2N2+jABSBibEhnYQOfv+k8/7X6fK44PEtKA==} + '@iconify/types@1.1.0': resolution: {integrity: sha512-Jh0llaK2LRXQoYsorIH8maClebsnzTcve+7U3rQUSnC11X4jtPnFuyatqFLvMxZ8MLG8dB4zfHsbPfuvxluONw==} @@ -3476,6 +3555,9 @@ packages: '@iconify/utils@2.1.23': resolution: {integrity: sha512-YGNbHKM5tyDvdWZ92y2mIkrfvm5Fvhe6WJSkWu7vvOFhMtYDP0casZpoRz0XEHZCrYsR4stdGT3cZ52yp5qZdQ==} + '@iconify/utils@2.1.33': + resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==} + '@import-meta-env/cli@0.6.3': resolution: {integrity: sha512-R0tAmEpNXjqvFgWpnPkODAKaBUKQzCUVzb7DDsOxe1OQxz32ja4W1jdtZikapkh4ZjGnJ7S+kCjKTOfh8qSUOQ==} engines: {node: '>= 14'} @@ -4055,6 +4137,14 @@ packages: '@nestjs/core': ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 reflect-metadata: ^0.1.13 + '@noble/curves@1.6.0': + resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -4267,87 +4357,170 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.22.4': + resolution: {integrity: sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.17.2': resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.22.4': + resolution: {integrity: sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.17.2': resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.22.4': + resolution: {integrity: sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.17.2': resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.22.4': + resolution: {integrity: sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-linux-arm-gnueabihf@4.17.2': resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.22.4': + resolution: {integrity: sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.17.2': resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.22.4': + resolution: {integrity: sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.17.2': resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.22.4': + resolution: {integrity: sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.17.2': resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.22.4': + resolution: {integrity: sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.22.4': + resolution: {integrity: sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.17.2': resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.22.4': + resolution: {integrity: sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.17.2': resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.22.4': + resolution: {integrity: sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.17.2': resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.22.4': + resolution: {integrity: sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.17.2': resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.22.4': + resolution: {integrity: sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.17.2': resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.22.4': + resolution: {integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.17.2': resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.22.4': + resolution: {integrity: sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.17.2': resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.22.4': + resolution: {integrity: sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==} + cpu: [x64] + os: [win32] + '@rushstack/eslint-patch@1.3.3': resolution: {integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==} '@rushstack/eslint-patch@1.6.0': resolution: {integrity: sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==} + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} @@ -4451,71 +4624,142 @@ packages: resolution: {integrity: sha512-6unsZDOdlXTmauU3NhWhn+Cx0rODV+rvNvTdvolE5Kls5ybA6cqndQENDt1+FS0tF7ozCP66jwWoH6a5h90BrA==} engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'} + '@tauri-apps/api@2.0.0-rc.5': + resolution: {integrity: sha512-JWs69pE9NsQdcqTpEVBepAZ08+jgQWuthIiTiaWRq/YlCLgnqq0KfC9sDem55uJ0YpgsytZuyj+m6b6q8oiD2g==} + '@tauri-apps/cli-darwin-arm64@1.5.6': resolution: {integrity: sha512-NNvG3XLtciCMsBahbDNUEvq184VZmOveTGOuy0So2R33b/6FDkuWaSgWZsR1mISpOuP034htQYW0VITCLelfqg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@tauri-apps/cli-darwin-arm64@2.0.0-rc.16': + resolution: {integrity: sha512-lISZU4gG0c9PbY7h/j/gW7nJLxZEygNBrYEET6zN8R99Znf5rSO+CfjenaMcJUUj6yTAd8gzdakRpLqNSAWegA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@tauri-apps/cli-darwin-x64@1.5.6': resolution: {integrity: sha512-nkiqmtUQw3N1j4WoVjv81q6zWuZFhBLya/RNGUL94oafORloOZoSY0uTZJAoeieb3Y1YK0rCHSDl02MyV2Fi4A==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@tauri-apps/cli-darwin-x64@2.0.0-rc.16': + resolution: {integrity: sha512-D9uxPCxpyYcTSQulJGFX3POAKPOJd8WcWHFH8x6YVM1cIx6EWRXIE1sZnPUOjFr7qCg+bSdYdr8/BFHcZGcApQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@tauri-apps/cli-linux-arm-gnueabihf@1.5.6': resolution: {integrity: sha512-z6SPx+axZexmWXTIVPNs4Tg7FtvdJl9EKxYN6JPjOmDZcqA13iyqWBQal2DA/GMZ1Xqo3vyJf6EoEaKaliymPQ==} engines: {node: '>= 10'} cpu: [arm] os: [linux] + '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.16': + resolution: {integrity: sha512-WsVdKm4D1I1XV8I9yRnmOINZRwwWfh6xcLV3m19+B9g6TohK8RkRxWfxvs3TLQlWOLQ6lo8BzS9rzXB+KtjDpg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + '@tauri-apps/cli-linux-arm64-gnu@1.5.6': resolution: {integrity: sha512-QuQjMQmpsCbzBrmtQiG4uhnfAbdFx3nzm+9LtqjuZlurc12+Mj5MTgqQ3AOwQedH3f7C+KlvbqD2AdXpwTg7VA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.16': + resolution: {integrity: sha512-2jpZDagNs6rrqposHJihHBayttgOl5aB2+bYiVEC6ye+haiFtmYmpdaPOaVIw+YVQs6lepf5PVrisCoU9DmYsg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@tauri-apps/cli-linux-arm64-musl@1.5.6': resolution: {integrity: sha512-8j5dH3odweFeom7bRGlfzDApWVOT4jIq8/214Wl+JeiNVehouIBo9lZGeghZBH3XKFRwEvU23i7sRVjuh2s8mg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.16': + resolution: {integrity: sha512-SNEDcB+sWOls/B0a+UpUHVa/oegvlXXKYWsTxuXtgWIr5VbWG7rXLZ3fZpLLP3SpRVGTGTnABcyqshFbWSqqKQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@tauri-apps/cli-linux-x64-gnu@1.5.6': resolution: {integrity: sha512-gbFHYHfdEGW0ffk8SigDsoXks6USpilF6wR0nqB/JbWzbzFR/sBuLVNQlJl1RKNakyJHu+lsFxGy0fcTdoX8xA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.16': + resolution: {integrity: sha512-Zsq29MM1ooeH1+chQBa7ffDFnzAZebBBFdsvs4e05tS1H8gn4oKE+PSMn9p/okzVXykEk9ri2/n7BG1XFeifMA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@tauri-apps/cli-linux-x64-musl@1.5.6': resolution: {integrity: sha512-9v688ogoLkeFYQNgqiSErfhTreLUd8B3prIBSYUt+x4+5Kcw91zWvIh+VSxL1n3KCGGsM7cuXhkGPaxwlEh1ug==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@tauri-apps/cli-linux-x64-musl@2.0.0-rc.16': + resolution: {integrity: sha512-g+pwSuis2YMxhJJ/pJYwp/Nps5CWvlv/5MV5UfDvClkCkeAyzIqVX+HbBLPcs5S0CePUQNeP0j4d4jBWUqZZQg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@tauri-apps/cli-win32-arm64-msvc@1.5.6': resolution: {integrity: sha512-DRNDXFNZb6y5IZrw+lhTTA9l4wbzO4TNRBAlHAiXUrH+pRFZ/ZJtv5WEuAj9ocVSahVw2NaK5Yaold4NPAxHog==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.16': + resolution: {integrity: sha512-PpPqdMTwJSDAK4KnNjvh77ShSkY+7pih1f6e50EtXar8bjC17e3XcEqFhDNne5mxEVTLYhibs6p1JLPad0ZjRA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@tauri-apps/cli-win32-ia32-msvc@1.5.6': resolution: {integrity: sha512-oUYKNR/IZjF4fsOzRpw0xesl2lOjhsQEyWlgbpT25T83EU113Xgck9UjtI7xemNI/OPCv1tPiaM1e7/ABdg5iA==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] + '@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.16': + resolution: {integrity: sha512-io2yIcEcG7YLP+9n13NbilB93SjcB7jIl8GbURC4XZT4/4t9D1PWHpJr5hySVsGRLCz5e8NzwC5RlnenNzmpPQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + '@tauri-apps/cli-win32-x64-msvc@1.5.6': resolution: {integrity: sha512-RmEf1os9C8//uq2hbjXi7Vgz9ne7798ZxqemAZdUwo1pv3oLVZSz1/IvZmUHPdy2e6zSeySqWu1D0Y3QRNN+dg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.16': + resolution: {integrity: sha512-Rfkmxe3k+cBVA/kVYt8O25QrQqWKJlH9AiH7Q3C6xBzzG9PCSRMBszCp+JhBF8jhVlwNmOBv6UG+lm85kspwGg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@tauri-apps/cli@1.5.6': resolution: {integrity: sha512-k4Y19oVCnt7WZb2TnDzLqfs7o98Jq0tUoVMv+JQSzuRDJqaVu2xMBZ8dYplEn+EccdR5SOMyzaLBJWu38TVK1A==} engines: {node: '>= 10'} hasBin: true + '@tauri-apps/cli@2.0.0-rc.16': + resolution: {integrity: sha512-wdjZg/M3dcxiqgWG6VRnABpX0dYxRww93t0d1MYoZxFDrnyoUz5kYwFQ0v4J9u0qenEgskjoypvon7V/Nj9qrg==} + engines: {node: '>= 10'} + hasBin: true + + '@tauri-apps/plugin-shell@2.0.0-rc.1': + resolution: {integrity: sha512-JtNROc0rqEwN/g93ig5pK4cl1vUo2yn+osCpY9de64cy/d9hRzof7AuYOgvt/Xcd5VPQmlgo2AGvUh5sQRSR1A==} + '@tootallnate/once@1.1.2': resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} @@ -4702,6 +4946,9 @@ packages: '@types/node@18.18.8': resolution: {integrity: sha512-OLGBaaK5V3VRBS1bAkMVP2/W9B+H8meUfl866OrMNQqt7wDgdpWPp5o6gmIc9pB+lIQHSq4ZL8ypeH1vPxcPaQ==} + '@types/node@22.7.3': + resolution: {integrity: sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA==} + '@types/nodemailer@6.4.7': resolution: {integrity: sha512-f5qCBGAn/f0qtRcd4SEn88c8Fp3Swct1731X4ryPKqS61/A3LmmzN8zaEz7hneJvpjFbUUgY7lru/B/7ODTazg==} @@ -5198,6 +5445,13 @@ packages: vite: ^4.0.0 || ^5.0.0 vue: 3.3.9 + '@vitejs/plugin-vue@5.1.4': + resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + vite: ^5.0.0 + vue: 3.3.9 + '@vitest/expect@0.34.6': resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} @@ -5226,6 +5480,9 @@ packages: '@volar/language-core@1.11.1': resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + '@volar/language-core@2.4.5': + resolution: {integrity: sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==} + '@volar/shared@0.27.24': resolution: {integrity: sha512-Mi8a4GQaiorfb+o4EqOXDZm9E/uBJXgScFgF+NhtcMBOUKHNMKQyLI7YRGumtyJTTdaX7nSDJjGGTkv23tcOtQ==} @@ -5238,6 +5495,9 @@ packages: '@volar/source-map@1.11.1': resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + '@volar/source-map@2.4.5': + resolution: {integrity: sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==} + '@volar/transforms@0.27.24': resolution: {integrity: sha512-sOHi1ZSapFlxn7yPl4MO5TXd9aWC0BVq2CgXAJ2EESb+ddh2uJbGQgLLNocX+MDh419cUuuFT2QAJpuWHhJcng==} @@ -5247,6 +5507,9 @@ packages: '@volar/typescript@1.11.1': resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + '@volar/typescript@2.4.5': + resolution: {integrity: sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==} + '@vscode/emmet-helper@2.9.3': resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==} @@ -5292,6 +5555,9 @@ packages: '@vue/compiler-ssr@3.3.9': resolution: {integrity: sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==} + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + '@vue/devtools-api@6.6.1': resolution: {integrity: sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==} @@ -5333,6 +5599,14 @@ packages: typescript: optional: true + '@vue/language-core@2.1.6': + resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@vue/reactivity-transform@3.2.45': resolution: {integrity: sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==} @@ -5386,6 +5660,9 @@ packages: '@vueuse/core@10.7.0': resolution: {integrity: sha512-4EUDESCHtwu44ZWK3Gc/hZUVhVo/ysvdtwocB5vcauSV4B7NiGY5972WnsojB3vRNdxvAt7kzJWE2h9h7C9d5w==} + '@vueuse/core@11.1.0': + resolution: {integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==} + '@vueuse/core@8.9.4': resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==} peerDependencies: @@ -5406,6 +5683,9 @@ packages: '@vueuse/metadata@10.7.0': resolution: {integrity: sha512-GlaH7tKP2iBCZ3bHNZ6b0cl9g0CJK8lttkBNUX156gWvNYhTKEtbweWLm9rxCPIiwzYcr/5xML6T8ZUEt+DkvA==} + '@vueuse/metadata@11.1.0': + resolution: {integrity: sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==} + '@vueuse/metadata@8.9.4': resolution: {integrity: sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==} @@ -5418,6 +5698,9 @@ packages: '@vueuse/shared@10.7.0': resolution: {integrity: sha512-kc00uV6CiaTdc3i1CDC4a3lBxzaBE9AgYNtFN87B5OOscqeWElj/uza8qVDmk7/U8JbqoONLbtqiLJ5LGRuqlw==} + '@vueuse/shared@11.1.0': + resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==} + '@vueuse/shared@8.9.4': resolution: {integrity: sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==} peerDependencies: @@ -5582,8 +5865,13 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + after@0.8.2: - resolution: {integrity: sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==} + resolution: {integrity: sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=} agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} @@ -5783,6 +6071,13 @@ packages: peerDependencies: postcss: ^8.1.0 + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -5793,6 +6088,9 @@ packages: axios@1.7.5: resolution: {integrity: sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==} + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6249,19 +6547,19 @@ packages: typescript: '>=3.x || >= 4.x || >= 5.x' component-bind@1.0.0: - resolution: {integrity: sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==} + resolution: {integrity: sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=} component-emitter@1.3.1: resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} component-inherit@0.0.3: - resolution: {integrity: sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==} + resolution: {integrity: sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=} computeds@0.0.1: resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} concat-stream@1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} @@ -7212,8 +7510,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} hasBin: true @@ -7660,6 +7958,9 @@ packages: fp-ts@2.16.2: resolution: {integrity: sha512-CkqAjnIKFqvo3sCyoBTqgJvF+bHrSik584S9nhTjtBESLx26cbtVMR/T9a6ApChOcSDAaM3JydDmWDUn4EEXng==} + fp-ts@2.16.9: + resolution: {integrity: sha512-+I2+FnVB+tVaxcYyQkHUq7ZdKScaBlX53A41mxQtpIccsfyv8PzdzP7fzp2AY832T4aoK6UZ5WRX/ebGd8uZuQ==} + fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -7958,7 +8259,7 @@ packages: resolution: {integrity: sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==} has-cors@1.1.0: - resolution: {integrity: sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==} + resolution: {integrity: sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=} has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -8192,7 +8493,7 @@ packages: engines: {node: '>=8'} indexof@0.0.1: - resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} + resolution: {integrity: sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=} inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -8940,10 +9241,6 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} - lilconfig@3.1.1: - resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} - engines: {node: '>=14'} - lilconfig@3.1.2: resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} engines: {node: '>=14'} @@ -9439,6 +9736,9 @@ packages: mlly@1.7.0: resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + mocha@9.2.2: resolution: {integrity: sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==} engines: {node: '>= 12.0.0'} @@ -9460,6 +9760,9 @@ packages: muggle-string@0.3.1: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + multer@1.4.4-lts.1: resolution: {integrity: sha512-WeSGziVj6+Z2/MwQo3GvqzgR+9Uc+qt8SwHKh3gvNPiISKfsMfG4SvCOFYlxxgkXt7yIV2i1yczehm0EOKIxIg==} engines: {node: '>= 6.0.0'} @@ -9738,6 +10041,9 @@ packages: resolution: {integrity: sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==} engines: {node: '>=8'} + package-manager-detector@0.2.0: + resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + paho-mqtt@1.1.0: resolution: {integrity: sha512-KPbL9KAB0ASvhSDbOrZBaccXS+/s7/LIofbPyERww8hM5Ko71GUJQ6Nmg0BWqj8phAIT8zdf/Sd/RftHU9i2HA==} @@ -9920,6 +10226,9 @@ packages: picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -9953,6 +10262,9 @@ packages: pkg-types@1.1.0: resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} + pkg-types@1.2.0: + resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} + pkginfo@0.4.1: resolution: {integrity: sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==} engines: {node: '>= 0.4.0'} @@ -10180,8 +10492,8 @@ packages: resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.40: - resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} posthog-node@4.2.0: @@ -10410,6 +10722,9 @@ packages: q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qs@6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} @@ -10718,6 +11033,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.22.4: + resolution: {integrity: sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-applescript@3.2.0: resolution: {integrity: sha512-Ep0RsvAjnRcBX1p5vogbaBdAGu/8j/ewpvGqnQYunnLd9SM0vWcPJewPKNnWFggf0hF0pwIgwV5XK7qQ7UZ8Qg==} engines: {node: '>=4'} @@ -10976,6 +11296,10 @@ packages: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -11257,6 +11581,11 @@ packages: engines: {node: '>=14.0.0'} hasBin: true + tailwindcss@3.4.13: + resolution: {integrity: sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==} + engines: {node: '>=14.0.0'} + hasBin: true + tapable@0.2.9: resolution: {integrity: sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==} engines: {node: '>=0.6'} @@ -11351,6 +11680,9 @@ packages: tinybench@2.8.0: resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} + tinyexec@0.3.0: + resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + tinypool@0.7.0: resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} engines: {node: '>=14.0.0'} @@ -11381,7 +11713,7 @@ packages: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} to-array@0.1.4: - resolution: {integrity: sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==} + resolution: {integrity: sha1-F+bBH3PdTz10zaek/zI46a2b+JA=} to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} @@ -11698,6 +12030,9 @@ packages: undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + unhead@1.8.8: resolution: {integrity: sha512-SfUJ2kjz1NcfvdM+uEAlN11h31wHqMg0HZ5jriuRPjMCj5O7lPs4uSMdBUYh3KEo0uLKrW76FM85ONXkyZfm3g==} @@ -11802,6 +12137,26 @@ packages: vue-template-es2015-compiler: optional: true + unplugin-icons@0.19.3: + resolution: {integrity: sha512-EUegRmsAI6+rrYr0vXjFlIP+lg4fSC4zb62zAZKx8FGXlWAGgEGBCa3JDe27aRAXhistObLPbBPhwa/0jYLFkQ==} + peerDependencies: + '@svgr/core': '>=7.0.0' + '@svgx/core': ^1.0.1 + '@vue/compiler-sfc': ^3.0.2 || ^2.7.0 + vue-template-compiler: ^2.6.12 + vue-template-es2015-compiler: ^1.9.0 + peerDependenciesMeta: + '@svgr/core': + optional: true + '@svgx/core': + optional: true + '@vue/compiler-sfc': + optional: true + vue-template-compiler: + optional: true + vue-template-es2015-compiler: + optional: true + unplugin-vue-components@0.21.0: resolution: {integrity: sha512-U7uOMNmRJ2eAv9CNjP8QRvxs6nAe3FVQUEIUphC1FGguBp3BWSLgGAcSHaX2nQy0gFoDY2mLF2M52W/t/eDaKg==} engines: {node: '>=14'} @@ -11849,6 +12204,15 @@ packages: resolution: {integrity: sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==} engines: {node: '>=14.0.0'} + unplugin@1.14.1: + resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} + engines: {node: '>=14.0.0'} + peerDependencies: + webpack-sources: ^3 + peerDependenciesMeta: + webpack-sources: + optional: true + unplugin@1.2.0: resolution: {integrity: sha512-7lJXQY4CxOK4jZyVskZuuNBqBSOlxezKqBpfQEpH+Odk2Ban3moKAlvzs9rZuZoZp6/1FEhvY9TZXav2FRhaBg==} @@ -12183,6 +12547,37 @@ packages: terser: optional: true + vite@5.4.8: + resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + vitest@0.34.6: resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} @@ -12290,6 +12685,17 @@ packages: resolution: {integrity: sha512-nPnUNCMqqHfxcCPLyLWvmgbNCgos3SwvPcl/CzAnMbqcjLtNZppsdI7bKX3EEj0Jbg6SGLQ9NanIvZaMI1bsUA==} deprecated: 'WARNING: This project has been renamed to @volar/vue-language-service. Install using @volar/vue-language-service instead.' + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: 3.3.9 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + vue-demi@0.14.7: resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==} engines: {node: '>=12'} @@ -12371,6 +12777,12 @@ packages: peerDependencies: typescript: '*' + vue-tsc@2.1.6: + resolution: {integrity: sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + vue@3.3.9: resolution: {integrity: sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==} peerDependencies: @@ -12447,6 +12859,9 @@ packages: webpack-virtual-modules@0.6.1: resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + webpack@5.89.0: resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} engines: {node: '>=10.13.0'} @@ -12819,7 +13234,7 @@ packages: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} yeast@0.1.2: - resolution: {integrity: sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==} + resolution: {integrity: sha1-AI4G2AlDIMNy28L47XagymyKxBk=} yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} @@ -12898,8 +13313,15 @@ snapshots: execa: 5.1.1 find-up: 5.0.0 + '@antfu/install-pkg@0.4.1': + dependencies: + package-manager-detector: 0.2.0 + tinyexec: 0.3.0 + '@antfu/utils@0.5.2': {} + '@antfu/utils@0.7.10': {} + '@antfu/utils@0.7.7': {} '@apideck/better-ajv-errors@0.3.6(ajv@8.13.0)': @@ -13143,7 +13565,7 @@ snapshots: '@babel/traverse': 7.24.5 '@babel/types': 7.24.5 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -13289,7 +13711,7 @@ snapshots: '@babel/helper-validator-identifier': 7.24.5 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.1.0 '@babel/parser@7.24.5': dependencies: @@ -13903,6 +14325,10 @@ snapshots: dependencies: vue: 3.3.9(typescript@5.3.2) + '@boringer-avatars/vue3@0.2.1(vue@3.3.9(typescript@5.3.3))': + dependencies: + vue: 3.3.9(typescript@5.3.3) + '@codemirror/autocomplete@6.13.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.25.1)(@lezer/common@1.2.1)': dependencies: '@codemirror/language': 6.10.1 @@ -14039,10 +14465,10 @@ snapshots: '@commitlint/execute-rule': 16.2.1 '@commitlint/resolve-extends': 16.2.1 '@commitlint/types': 16.2.1 - '@types/node': 18.18.8 + '@types/node': 22.7.3 chalk: 4.1.2 cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 2.0.2(@swc/core@1.4.2)(@types/node@18.18.8)(cosmiconfig@7.1.0)(typescript@4.9.5) + cosmiconfig-typescript-loader: 2.0.2(@swc/core@1.4.2)(@types/node@22.7.3)(cosmiconfig@7.1.0)(typescript@4.9.5) lodash: 4.17.21 resolve-from: 5.0.0 typescript: 4.9.5 @@ -14114,20 +14540,20 @@ snapshots: '@emmetio/scanner@1.0.4': {} - '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.20.2)': + '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.21.5)': dependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 - '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.20.2)': + '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.21.5)': dependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 escape-string-regexp: 4.0.0 rollup-plugin-node-polyfills: 0.2.1 '@esbuild/aix-ppc64@0.19.12': optional: true - '@esbuild/aix-ppc64@0.20.2': + '@esbuild/aix-ppc64@0.21.5': optional: true '@esbuild/android-arm64@0.18.20': @@ -14136,7 +14562,7 @@ snapshots: '@esbuild/android-arm64@0.19.12': optional: true - '@esbuild/android-arm64@0.20.2': + '@esbuild/android-arm64@0.21.5': optional: true '@esbuild/android-arm@0.15.18': @@ -14148,7 +14574,7 @@ snapshots: '@esbuild/android-arm@0.19.12': optional: true - '@esbuild/android-arm@0.20.2': + '@esbuild/android-arm@0.21.5': optional: true '@esbuild/android-x64@0.18.20': @@ -14157,7 +14583,7 @@ snapshots: '@esbuild/android-x64@0.19.12': optional: true - '@esbuild/android-x64@0.20.2': + '@esbuild/android-x64@0.21.5': optional: true '@esbuild/darwin-arm64@0.18.20': @@ -14166,7 +14592,7 @@ snapshots: '@esbuild/darwin-arm64@0.19.12': optional: true - '@esbuild/darwin-arm64@0.20.2': + '@esbuild/darwin-arm64@0.21.5': optional: true '@esbuild/darwin-x64@0.18.20': @@ -14175,7 +14601,7 @@ snapshots: '@esbuild/darwin-x64@0.19.12': optional: true - '@esbuild/darwin-x64@0.20.2': + '@esbuild/darwin-x64@0.21.5': optional: true '@esbuild/freebsd-arm64@0.18.20': @@ -14184,7 +14610,7 @@ snapshots: '@esbuild/freebsd-arm64@0.19.12': optional: true - '@esbuild/freebsd-arm64@0.20.2': + '@esbuild/freebsd-arm64@0.21.5': optional: true '@esbuild/freebsd-x64@0.18.20': @@ -14193,7 +14619,7 @@ snapshots: '@esbuild/freebsd-x64@0.19.12': optional: true - '@esbuild/freebsd-x64@0.20.2': + '@esbuild/freebsd-x64@0.21.5': optional: true '@esbuild/linux-arm64@0.18.20': @@ -14202,7 +14628,7 @@ snapshots: '@esbuild/linux-arm64@0.19.12': optional: true - '@esbuild/linux-arm64@0.20.2': + '@esbuild/linux-arm64@0.21.5': optional: true '@esbuild/linux-arm@0.18.20': @@ -14211,7 +14637,7 @@ snapshots: '@esbuild/linux-arm@0.19.12': optional: true - '@esbuild/linux-arm@0.20.2': + '@esbuild/linux-arm@0.21.5': optional: true '@esbuild/linux-ia32@0.18.20': @@ -14220,7 +14646,7 @@ snapshots: '@esbuild/linux-ia32@0.19.12': optional: true - '@esbuild/linux-ia32@0.20.2': + '@esbuild/linux-ia32@0.21.5': optional: true '@esbuild/linux-loong64@0.14.54': @@ -14235,7 +14661,7 @@ snapshots: '@esbuild/linux-loong64@0.19.12': optional: true - '@esbuild/linux-loong64@0.20.2': + '@esbuild/linux-loong64@0.21.5': optional: true '@esbuild/linux-mips64el@0.18.20': @@ -14244,7 +14670,7 @@ snapshots: '@esbuild/linux-mips64el@0.19.12': optional: true - '@esbuild/linux-mips64el@0.20.2': + '@esbuild/linux-mips64el@0.21.5': optional: true '@esbuild/linux-ppc64@0.18.20': @@ -14253,7 +14679,7 @@ snapshots: '@esbuild/linux-ppc64@0.19.12': optional: true - '@esbuild/linux-ppc64@0.20.2': + '@esbuild/linux-ppc64@0.21.5': optional: true '@esbuild/linux-riscv64@0.18.20': @@ -14262,7 +14688,7 @@ snapshots: '@esbuild/linux-riscv64@0.19.12': optional: true - '@esbuild/linux-riscv64@0.20.2': + '@esbuild/linux-riscv64@0.21.5': optional: true '@esbuild/linux-s390x@0.18.20': @@ -14271,7 +14697,7 @@ snapshots: '@esbuild/linux-s390x@0.19.12': optional: true - '@esbuild/linux-s390x@0.20.2': + '@esbuild/linux-s390x@0.21.5': optional: true '@esbuild/linux-x64@0.18.20': @@ -14280,7 +14706,7 @@ snapshots: '@esbuild/linux-x64@0.19.12': optional: true - '@esbuild/linux-x64@0.20.2': + '@esbuild/linux-x64@0.21.5': optional: true '@esbuild/netbsd-x64@0.18.20': @@ -14289,7 +14715,7 @@ snapshots: '@esbuild/netbsd-x64@0.19.12': optional: true - '@esbuild/netbsd-x64@0.20.2': + '@esbuild/netbsd-x64@0.21.5': optional: true '@esbuild/openbsd-x64@0.18.20': @@ -14298,7 +14724,7 @@ snapshots: '@esbuild/openbsd-x64@0.19.12': optional: true - '@esbuild/openbsd-x64@0.20.2': + '@esbuild/openbsd-x64@0.21.5': optional: true '@esbuild/sunos-x64@0.18.20': @@ -14307,7 +14733,7 @@ snapshots: '@esbuild/sunos-x64@0.19.12': optional: true - '@esbuild/sunos-x64@0.20.2': + '@esbuild/sunos-x64@0.21.5': optional: true '@esbuild/win32-arm64@0.18.20': @@ -14316,7 +14742,7 @@ snapshots: '@esbuild/win32-arm64@0.19.12': optional: true - '@esbuild/win32-arm64@0.20.2': + '@esbuild/win32-arm64@0.21.5': optional: true '@esbuild/win32-ia32@0.18.20': @@ -14325,7 +14751,7 @@ snapshots: '@esbuild/win32-ia32@0.19.12': optional: true - '@esbuild/win32-ia32@0.20.2': + '@esbuild/win32-ia32@0.21.5': optional: true '@esbuild/win32-x64@0.18.20': @@ -14334,7 +14760,7 @@ snapshots: '@esbuild/win32-x64@0.19.12': optional: true - '@esbuild/win32-x64@0.20.2': + '@esbuild/win32-x64@0.21.5': optional: true '@eslint-community/eslint-utils@4.4.0(eslint@8.47.0)': @@ -14414,7 +14840,7 @@ snapshots: graphql: 16.8.1 tslib: 2.5.3 - '@graphql-codegen/cli@3.0.0(@babel/core@7.24.5)(@swc/core@1.4.2)(@types/node@18.18.8)(graphql@16.6.0)(typescript@4.9.3)': + '@graphql-codegen/cli@3.0.0(@babel/core@7.24.5)(@swc/core@1.4.2)(@types/node@22.7.3)(graphql@16.6.0)(typescript@4.9.3)': dependencies: '@babel/generator': 7.24.5 '@babel/template': 7.24.0 @@ -14424,22 +14850,22 @@ snapshots: '@graphql-tools/apollo-engine-loader': 7.3.26(graphql@16.6.0) '@graphql-tools/code-file-loader': 7.3.23(@babel/core@7.24.5)(graphql@16.6.0) '@graphql-tools/git-loader': 7.3.0(@babel/core@7.24.5)(graphql@16.6.0) - '@graphql-tools/github-loader': 7.3.28(@babel/core@7.24.5)(@types/node@18.18.8)(graphql@16.6.0) + '@graphql-tools/github-loader': 7.3.28(@babel/core@7.24.5)(@types/node@22.7.3)(graphql@16.6.0) '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.6.0) '@graphql-tools/json-file-loader': 7.4.18(graphql@16.6.0) '@graphql-tools/load': 7.8.14(graphql@16.6.0) - '@graphql-tools/prisma-loader': 7.2.72(@types/node@18.18.8)(graphql@16.6.0) - '@graphql-tools/url-loader': 7.17.18(@types/node@18.18.8)(graphql@16.6.0) + '@graphql-tools/prisma-loader': 7.2.72(@types/node@22.7.3)(graphql@16.6.0) + '@graphql-tools/url-loader': 7.17.18(@types/node@22.7.3)(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) - '@whatwg-node/fetch': 0.6.9(@types/node@18.18.8) + '@whatwg-node/fetch': 0.6.9(@types/node@22.7.3) chalk: 4.1.2 chokidar: 3.6.0 cosmiconfig: 7.1.0 - cosmiconfig-typescript-loader: 4.4.0(@types/node@18.18.8)(cosmiconfig@7.1.0)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3))(typescript@4.9.3) + cosmiconfig-typescript-loader: 4.4.0(@types/node@22.7.3)(cosmiconfig@7.1.0)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3))(typescript@4.9.3) debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.6.0 - graphql-config: 4.5.0(@types/node@18.18.8)(graphql@16.6.0) + graphql-config: 4.5.0(@types/node@22.7.3)(graphql@16.6.0) inquirer: 8.2.6 is-glob: 4.0.3 json-to-pretty-yaml: 1.2.2 @@ -14448,7 +14874,7 @@ snapshots: shell-quote: 1.8.1 string-env-interpolation: 1.0.1 ts-log: 2.2.5 - ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3) + ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3) tslib: 2.6.2 yaml: 1.10.2 yargs: 17.7.2 @@ -14512,7 +14938,7 @@ snapshots: - typescript - utf-8-validate - '@graphql-codegen/cli@5.0.0(@types/node@18.18.8)(graphql@16.8.1)(typescript@5.3.2)': + '@graphql-codegen/cli@5.0.0(@types/node@22.7.3)(graphql@16.8.1)(typescript@5.3.2)': dependencies: '@babel/generator': 7.24.5 '@babel/template': 7.24.0 @@ -14522,12 +14948,12 @@ snapshots: '@graphql-tools/apollo-engine-loader': 8.0.1(graphql@16.8.1) '@graphql-tools/code-file-loader': 8.1.1(graphql@16.8.1) '@graphql-tools/git-loader': 8.0.5(graphql@16.8.1) - '@graphql-tools/github-loader': 8.0.1(@types/node@18.18.8)(graphql@16.8.1) + '@graphql-tools/github-loader': 8.0.1(@types/node@22.7.3)(graphql@16.8.1) '@graphql-tools/graphql-file-loader': 8.0.1(graphql@16.8.1) '@graphql-tools/json-file-loader': 8.0.1(graphql@16.8.1) '@graphql-tools/load': 8.0.2(graphql@16.8.1) - '@graphql-tools/prisma-loader': 8.0.4(@types/node@18.18.8)(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.2(@types/node@18.18.8)(graphql@16.8.1) + '@graphql-tools/prisma-loader': 8.0.4(@types/node@22.7.3)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.2(@types/node@22.7.3)(graphql@16.8.1) '@graphql-tools/utils': 10.2.0(graphql@16.8.1) '@whatwg-node/fetch': 0.8.8 chalk: 4.1.2 @@ -14535,7 +14961,7 @@ snapshots: debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.8.1 - graphql-config: 5.0.3(@types/node@18.18.8)(graphql@16.8.1)(typescript@5.3.2) + graphql-config: 5.0.3(@types/node@22.7.3)(graphql@16.8.1)(typescript@5.3.2) inquirer: 8.2.6 is-glob: 4.0.3 jiti: 1.21.0 @@ -15114,7 +15540,7 @@ snapshots: - bufferutil - utf-8-validate - '@graphql-tools/executor-http@0.1.10(@types/node@18.18.8)(graphql@16.6.0)': + '@graphql-tools/executor-http@0.1.10(@types/node@22.7.3)(graphql@16.6.0)': dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) '@repeaterjs/repeater': 3.0.5 @@ -15122,13 +15548,13 @@ snapshots: dset: 3.1.4 extract-files: 11.0.0 graphql: 16.6.0 - meros: 1.3.0(@types/node@18.18.8) + meros: 1.3.0(@types/node@22.7.3) tslib: 2.6.2 value-or-promise: 1.0.12 transitivePeerDependencies: - '@types/node' - '@graphql-tools/executor-http@0.1.10(@types/node@18.18.8)(graphql@16.8.1)': + '@graphql-tools/executor-http@0.1.10(@types/node@22.7.3)(graphql@16.8.1)': dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.8.1) '@repeaterjs/repeater': 3.0.5 @@ -15136,7 +15562,7 @@ snapshots: dset: 3.1.4 extract-files: 11.0.0 graphql: 16.8.1 - meros: 1.3.0(@types/node@18.18.8) + meros: 1.3.0(@types/node@22.7.3) tslib: 2.6.2 value-or-promise: 1.0.12 transitivePeerDependencies: @@ -15155,6 +15581,19 @@ snapshots: transitivePeerDependencies: - '@types/node' + '@graphql-tools/executor-http@1.0.9(@types/node@22.7.3)(graphql@16.8.1)': + dependencies: + '@graphql-tools/utils': 10.2.0(graphql@16.8.1) + '@repeaterjs/repeater': 3.0.5 + '@whatwg-node/fetch': 0.9.17 + extract-files: 11.0.0 + graphql: 16.8.1 + meros: 1.3.0(@types/node@22.7.3) + tslib: 2.6.2 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + '@graphql-tools/executor-legacy-ws@0.0.11(graphql@16.6.0)': dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) @@ -15243,10 +15682,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/github-loader@7.3.28(@babel/core@7.24.5)(@types/node@18.18.8)(graphql@16.6.0)': + '@graphql-tools/github-loader@7.3.28(@babel/core@7.24.5)(@types/node@22.7.3)(graphql@16.6.0)': dependencies: '@ardatan/sync-fetch': 0.0.1 - '@graphql-tools/executor-http': 0.1.10(@types/node@18.18.8)(graphql@16.6.0) + '@graphql-tools/executor-http': 0.1.10(@types/node@22.7.3)(graphql@16.6.0) '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.24.5)(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) '@whatwg-node/fetch': 0.8.8 @@ -15274,6 +15713,21 @@ snapshots: - encoding - supports-color + '@graphql-tools/github-loader@8.0.1(@types/node@22.7.3)(graphql@16.8.1)': + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/executor-http': 1.0.9(@types/node@22.7.3)(graphql@16.8.1) + '@graphql-tools/graphql-tag-pluck': 8.3.0(graphql@16.8.1) + '@graphql-tools/utils': 10.2.0(graphql@16.8.1) + '@whatwg-node/fetch': 0.9.17 + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + - encoding + - supports-color + '@graphql-tools/graphql-file-loader@7.5.17(graphql@16.6.0)': dependencies: '@graphql-tools/import': 6.7.18(graphql@16.6.0) @@ -15435,15 +15889,15 @@ snapshots: graphql: 16.8.1 tslib: 2.5.3 - '@graphql-tools/prisma-loader@7.2.72(@types/node@18.18.8)(graphql@16.6.0)': + '@graphql-tools/prisma-loader@7.2.72(@types/node@22.7.3)(graphql@16.6.0)': dependencies: - '@graphql-tools/url-loader': 7.17.18(@types/node@18.18.8)(graphql@16.6.0) + '@graphql-tools/url-loader': 7.17.18(@types/node@22.7.3)(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) '@types/js-yaml': 4.0.9 '@types/json-stable-stringify': 1.0.36 '@whatwg-node/fetch': 0.8.8 chalk: 4.1.2 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 dotenv: 16.3.1 graphql: 16.6.0 graphql-request: 6.1.0(graphql@16.6.0) @@ -15489,6 +15943,32 @@ snapshots: - supports-color - utf-8-validate + '@graphql-tools/prisma-loader@8.0.4(@types/node@22.7.3)(graphql@16.8.1)': + dependencies: + '@graphql-tools/url-loader': 8.0.2(@types/node@22.7.3)(graphql@16.8.1) + '@graphql-tools/utils': 10.2.0(graphql@16.8.1) + '@types/js-yaml': 4.0.9 + '@whatwg-node/fetch': 0.9.17 + chalk: 4.1.2 + debug: 4.3.4(supports-color@9.4.0) + dotenv: 16.3.1 + graphql: 16.8.1 + graphql-request: 6.1.0(graphql@16.8.1) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + jose: 5.2.4 + js-yaml: 4.1.0 + lodash: 4.17.21 + scuid: 1.1.0 + tslib: 2.6.2 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - supports-color + - utf-8-validate + '@graphql-tools/relay-operation-optimizer@6.5.18(graphql@16.6.0)': dependencies: '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) @@ -15551,12 +16031,12 @@ snapshots: tslib: 2.6.2 value-or-promise: 1.0.12 - '@graphql-tools/url-loader@7.17.18(@types/node@18.18.8)(graphql@16.6.0)': + '@graphql-tools/url-loader@7.17.18(@types/node@22.7.3)(graphql@16.6.0)': dependencies: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/delegate': 9.0.35(graphql@16.6.0) '@graphql-tools/executor-graphql-ws': 0.0.14(graphql@16.6.0) - '@graphql-tools/executor-http': 0.1.10(@types/node@18.18.8)(graphql@16.6.0) + '@graphql-tools/executor-http': 0.1.10(@types/node@22.7.3)(graphql@16.6.0) '@graphql-tools/executor-legacy-ws': 0.0.11(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) '@graphql-tools/wrap': 9.4.2(graphql@16.6.0) @@ -15573,12 +16053,12 @@ snapshots: - encoding - utf-8-validate - '@graphql-tools/url-loader@7.17.18(@types/node@18.18.8)(graphql@16.8.1)': + '@graphql-tools/url-loader@7.17.18(@types/node@22.7.3)(graphql@16.8.1)': dependencies: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/delegate': 9.0.35(graphql@16.8.1) '@graphql-tools/executor-graphql-ws': 0.0.14(graphql@16.8.1) - '@graphql-tools/executor-http': 0.1.10(@types/node@18.18.8)(graphql@16.8.1) + '@graphql-tools/executor-http': 0.1.10(@types/node@22.7.3)(graphql@16.8.1) '@graphql-tools/executor-legacy-ws': 0.0.11(graphql@16.8.1) '@graphql-tools/utils': 9.2.1(graphql@16.8.1) '@graphql-tools/wrap': 9.4.2(graphql@16.8.1) @@ -15617,6 +16097,28 @@ snapshots: - encoding - utf-8-validate + '@graphql-tools/url-loader@8.0.2(@types/node@22.7.3)(graphql@16.8.1)': + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/delegate': 10.0.9(graphql@16.8.1) + '@graphql-tools/executor-graphql-ws': 1.1.2(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.9(@types/node@22.7.3)(graphql@16.8.1) + '@graphql-tools/executor-legacy-ws': 1.0.6(graphql@16.8.1) + '@graphql-tools/utils': 10.2.0(graphql@16.8.1) + '@graphql-tools/wrap': 10.0.5(graphql@16.8.1) + '@types/ws': 8.5.10 + '@whatwg-node/fetch': 0.9.17 + graphql: 16.8.1 + isomorphic-ws: 5.0.0(ws@8.17.0) + tslib: 2.6.2 + value-or-promise: 1.0.12 + ws: 8.17.0 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + '@graphql-tools/utils@10.0.6(graphql@16.8.1)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) @@ -15703,19 +16205,19 @@ snapshots: stringify-object: 3.3.0 yargs: 17.7.2 - '@hoppscotch/ui@0.1.0(eslint@8.55.0)(terser@5.31.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2))': + '@hoppscotch/ui@0.1.0(eslint@8.55.0)(terser@5.31.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2))': dependencies: '@boringer-avatars/vue3': 0.2.1(vue@3.3.9(typescript@5.3.2)) '@fontsource-variable/inter': 5.0.15 '@fontsource-variable/material-symbols-rounded': 5.0.16 '@fontsource-variable/roboto-mono': 5.0.16 '@hoppscotch/vue-toasted': 0.1.0(vue@3.3.9(typescript@5.3.2)) - '@vitejs/plugin-legacy': 2.3.0(terser@5.31.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + '@vitejs/plugin-legacy': 2.3.0(terser@5.31.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) '@vueuse/core': 8.9.4(vue@3.3.9(typescript@5.3.2)) - fp-ts: 2.16.2 + fp-ts: 2.16.9 lodash-es: 4.17.21 path: 0.12.7 - vite-plugin-eslint: 1.8.1(eslint@8.55.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + vite-plugin-eslint: 1.8.1(eslint@8.55.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vue: 3.3.9(typescript@5.3.2) vuedraggable-es: 4.1.1(vue@3.3.9(typescript@5.3.2)) transitivePeerDependencies: @@ -15724,19 +16226,19 @@ snapshots: - terser - vite - '@hoppscotch/ui@0.1.3(eslint@8.57.0)(terser@5.31.0)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))': + '@hoppscotch/ui@0.1.3(eslint@8.57.0)(terser@5.31.0)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))': dependencies: '@boringer-avatars/vue3': 0.2.1(vue@3.3.9(typescript@4.9.3)) '@fontsource-variable/inter': 5.0.15 '@fontsource-variable/material-symbols-rounded': 5.0.16 '@fontsource-variable/roboto-mono': 5.0.16 '@hoppscotch/vue-toasted': 0.1.0(vue@3.3.9(typescript@4.9.3)) - '@vitejs/plugin-legacy': 2.3.0(terser@5.31.0)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0)) + '@vitejs/plugin-legacy': 2.3.0(terser@5.31.0)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0)) '@vueuse/core': 8.9.4(vue@3.3.9(typescript@4.9.3)) - fp-ts: 2.16.2 + fp-ts: 2.16.9 lodash-es: 4.17.21 path: 0.12.7 - vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0)) + vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0)) vue: 3.3.9(typescript@4.9.3) vuedraggable-es: 4.1.1(vue@3.3.9(typescript@4.9.3)) transitivePeerDependencies: @@ -15745,7 +16247,7 @@ snapshots: - terser - vite - '@hoppscotch/ui@0.2.0(eslint@8.57.0)(terser@5.31.0)(typescript@4.9.5)(vite@5.0.5(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))': + '@hoppscotch/ui@0.2.0(eslint@8.57.0)(terser@5.31.0)(typescript@4.9.5)(vite@5.4.8(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))': dependencies: '@boringer-avatars/vue3': 0.2.1(vue@3.3.9(typescript@4.9.5)) '@fontsource-variable/inter': 5.0.15 @@ -15753,12 +16255,12 @@ snapshots: '@fontsource-variable/roboto-mono': 5.0.16 '@hoppscotch/vue-sonner': 1.2.3 '@hoppscotch/vue-toasted': 0.1.0(vue@3.3.9(typescript@4.9.5)) - '@vitejs/plugin-legacy': 2.3.0(terser@5.31.0)(vite@5.0.5(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0)) + '@vitejs/plugin-legacy': 2.3.0(terser@5.31.0)(vite@5.4.8(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0)) '@vueuse/core': 8.9.4(vue@3.3.9(typescript@4.9.5)) - fp-ts: 2.16.2 + fp-ts: 2.16.9 lodash-es: 4.17.21 path: 0.12.7 - vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@5.0.5(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0)) + vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@5.4.8(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0)) vue: 3.3.9(typescript@4.9.5) vue-promise-modals: 0.1.0(typescript@4.9.5) vue-sonner: 1.1.3 @@ -15770,7 +16272,7 @@ snapshots: - typescript - vite - '@hoppscotch/ui@0.2.0(eslint@8.57.0)(terser@5.31.0)(typescript@5.3.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2))': + '@hoppscotch/ui@0.2.0(eslint@8.57.0)(terser@5.31.0)(typescript@5.3.2)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2))': dependencies: '@boringer-avatars/vue3': 0.2.1(vue@3.3.9(typescript@5.3.2)) '@fontsource-variable/inter': 5.0.15 @@ -15778,12 +16280,12 @@ snapshots: '@fontsource-variable/roboto-mono': 5.0.16 '@hoppscotch/vue-sonner': 1.2.3 '@hoppscotch/vue-toasted': 0.1.0(vue@3.3.9(typescript@5.3.2)) - '@vitejs/plugin-legacy': 2.3.0(terser@5.31.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + '@vitejs/plugin-legacy': 2.3.0(terser@5.31.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) '@vueuse/core': 8.9.4(vue@3.3.9(typescript@5.3.2)) - fp-ts: 2.16.2 + fp-ts: 2.16.9 lodash-es: 4.17.21 path: 0.12.7 - vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)) + vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) vue: 3.3.9(typescript@5.3.2) vue-promise-modals: 0.1.0(typescript@5.3.2) vue-sonner: 1.1.3 @@ -15795,6 +16297,30 @@ snapshots: - typescript - vite + '@hoppscotch/ui@0.2.1(eslint@8.57.0)(terser@5.31.0)(typescript@5.3.3)(vite@5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.3))': + dependencies: + '@boringer-avatars/vue3': 0.2.1(vue@3.3.9(typescript@5.3.3)) + '@fontsource-variable/inter': 5.0.15 + '@fontsource-variable/material-symbols-rounded': 5.0.16 + '@fontsource-variable/roboto-mono': 5.0.16 + '@hoppscotch/vue-sonner': 1.2.3 + '@hoppscotch/vue-toasted': 0.1.0(vue@3.3.9(typescript@5.3.3)) + '@vitejs/plugin-legacy': 2.3.0(terser@5.31.0)(vite@5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) + '@vueuse/core': 8.9.4(vue@3.3.9(typescript@5.3.3)) + fp-ts: 2.16.9 + lodash-es: 4.17.21 + path: 0.12.7 + vite-plugin-eslint: 1.8.1(eslint@8.57.0)(vite@5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)) + vue: 3.3.9(typescript@5.3.3) + vue-promise-modals: 0.1.0(typescript@5.3.3) + vuedraggable-es: 4.1.1(vue@3.3.9(typescript@5.3.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - eslint + - terser + - typescript + - vite + '@hoppscotch/vue-sonner@1.2.3': {} '@hoppscotch/vue-toasted@0.1.0(vue@3.3.9(typescript@4.9.3))': @@ -15809,6 +16335,10 @@ snapshots: dependencies: vue: 3.3.9(typescript@5.3.2) + '@hoppscotch/vue-toasted@0.1.0(vue@3.3.9(typescript@5.3.3))': + dependencies: + vue: 3.3.9(typescript@5.3.3) + '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -15835,6 +16365,10 @@ snapshots: dependencies: '@iconify/types': 2.0.0 + '@iconify-json/lucide@1.2.6': + dependencies: + '@iconify/types': 2.0.0 + '@iconify/types@1.1.0': {} '@iconify/types@2.0.0': {} @@ -15844,7 +16378,7 @@ snapshots: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.5.2 '@iconify/types': 1.1.0 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 kolorist: 1.8.0 local-pkg: 0.4.3 transitivePeerDependencies: @@ -15862,6 +16396,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@iconify/utils@2.1.33': + dependencies: + '@antfu/install-pkg': 0.4.1 + '@antfu/utils': 0.7.10 + '@iconify/types': 2.0.0 + debug: 4.3.7 + kolorist: 1.8.0 + local-pkg: 0.5.0 + mlly: 1.7.1 + transitivePeerDependencies: + - supports-color + '@import-meta-env/cli@0.6.3(@import-meta-env/unplugin@0.4.10)(dotenv@16.3.1)': dependencies: commander: 10.0.1 @@ -15917,12 +16463,12 @@ snapshots: dependencies: '@intlify/message-compiler': 9.3.0-beta.20 '@intlify/shared': 9.3.0-beta.20 - acorn: 8.11.3 + acorn: 8.12.1 escodegen: 2.1.0 estree-walker: 2.0.2 jsonc-eslint-parser: 1.4.1 magic-string: 0.30.10 - mlly: 1.7.0 + mlly: 1.7.1 source-map: 0.6.1 yaml-eslint-parser: 0.3.2 optionalDependencies: @@ -15962,7 +16508,7 @@ snapshots: '@intlify/message-compiler@10.0.0': dependencies: '@intlify/shared': 10.0.0 - source-map-js: 1.2.0 + source-map-js: 1.2.1 '@intlify/message-compiler@9.13.1': dependencies: @@ -15977,7 +16523,7 @@ snapshots: '@intlify/message-compiler@9.3.0-beta.20': dependencies: '@intlify/shared': 9.3.0-beta.20 - source-map-js: 1.2.0 + source-map-js: 1.2.1 '@intlify/message-compiler@9.8.0': dependencies: @@ -16028,7 +16574,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@intlify/vite-plugin-vue-i18n@7.0.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2)))': + '@intlify/vite-plugin-vue-i18n@7.0.0(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2)))': dependencies: '@intlify/bundle-utils': 3.4.0(vue-i18n@9.8.0(vue@3.3.9(typescript@5.3.2))) '@intlify/shared': 10.0.0 @@ -16037,7 +16583,7 @@ snapshots: fast-glob: 3.3.2 source-map: 0.6.1 optionalDependencies: - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) vue-i18n: 9.8.0(vue@3.3.9(typescript@5.3.2)) transitivePeerDependencies: - supports-color @@ -16072,7 +16618,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -16085,14 +16631,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.18.8)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@17.0.45)(typescript@4.9.5)) + jest-config: 29.7.0(@types/node@22.7.3)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@17.0.45)(typescript@4.9.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -16120,14 +16666,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.18.8)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.11.10)(typescript@4.9.3)) + jest-config: 29.7.0(@types/node@22.7.3)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.11.10)(typescript@4.9.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -16152,7 +16698,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 jest-mock: 29.7.0 '@jest/expect-utils@28.1.3': @@ -16174,7 +16720,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 18.18.8 + '@types/node': 22.7.3 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -16196,7 +16742,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 18.18.8 + '@types/node': 22.7.3 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -16269,7 +16815,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/yargs': 16.0.9 chalk: 4.1.2 @@ -16278,7 +16824,7 @@ snapshots: '@jest/schemas': 28.1.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -16287,7 +16833,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/yargs': 17.0.32 chalk: 4.1.2 @@ -16622,6 +17168,12 @@ snapshots: md5: 2.3.0 reflect-metadata: 0.1.13 + '@noble/curves@1.6.0': + dependencies: + '@noble/hashes': 1.5.0 + + '@noble/hashes@1.5.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -16798,13 +17350,13 @@ snapshots: optionalDependencies: '@types/babel__core': 7.20.5 - '@rollup/plugin-inject@5.0.5(rollup@4.17.2)': + '@rollup/plugin-inject@5.0.5(rollup@4.22.4)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@rollup/pluginutils': 5.1.0(rollup@4.22.4) estree-walker: 2.0.2 magic-string: 0.30.10 optionalDependencies: - rollup: 4.17.2 + rollup: 4.22.4 '@rollup/plugin-node-resolve@15.2.3(rollup@2.79.1)': dependencies: @@ -16859,66 +17411,116 @@ snapshots: optionalDependencies: rollup: 3.29.4 - '@rollup/pluginutils@5.1.0(rollup@4.17.2)': + '@rollup/pluginutils@5.1.0(rollup@4.22.4)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.17.2 + rollup: 4.22.4 '@rollup/rollup-android-arm-eabi@4.17.2': optional: true + '@rollup/rollup-android-arm-eabi@4.22.4': + optional: true + '@rollup/rollup-android-arm64@4.17.2': optional: true + '@rollup/rollup-android-arm64@4.22.4': + optional: true + '@rollup/rollup-darwin-arm64@4.17.2': optional: true + '@rollup/rollup-darwin-arm64@4.22.4': + optional: true + '@rollup/rollup-darwin-x64@4.17.2': optional: true + '@rollup/rollup-darwin-x64@4.22.4': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.17.2': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.22.4': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.17.2': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.22.4': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.17.2': optional: true + '@rollup/rollup-linux-arm64-gnu@4.22.4': + optional: true + '@rollup/rollup-linux-arm64-musl@4.17.2': optional: true + '@rollup/rollup-linux-arm64-musl@4.22.4': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.22.4': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.17.2': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.22.4': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.17.2': optional: true + '@rollup/rollup-linux-s390x-gnu@4.22.4': + optional: true + '@rollup/rollup-linux-x64-gnu@4.17.2': optional: true + '@rollup/rollup-linux-x64-gnu@4.22.4': + optional: true + '@rollup/rollup-linux-x64-musl@4.17.2': optional: true + '@rollup/rollup-linux-x64-musl@4.22.4': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.17.2': optional: true + '@rollup/rollup-win32-arm64-msvc@4.22.4': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.17.2': optional: true + '@rollup/rollup-win32-ia32-msvc@4.22.4': + optional: true + '@rollup/rollup-win32-x64-msvc@4.17.2': optional: true + '@rollup/rollup-win32-x64-msvc@4.22.4': + optional: true + '@rushstack/eslint-patch@1.3.3': {} '@rushstack/eslint-patch@1.6.0': {} + '@scure/base@1.1.9': {} + '@selderee/plugin-htmlparser2@0.11.0': dependencies: domhandler: 5.0.3 @@ -17004,36 +17606,68 @@ snapshots: '@tauri-apps/api@1.5.1': {} + '@tauri-apps/api@2.0.0-rc.5': {} + '@tauri-apps/cli-darwin-arm64@1.5.6': optional: true + '@tauri-apps/cli-darwin-arm64@2.0.0-rc.16': + optional: true + '@tauri-apps/cli-darwin-x64@1.5.6': optional: true + '@tauri-apps/cli-darwin-x64@2.0.0-rc.16': + optional: true + '@tauri-apps/cli-linux-arm-gnueabihf@1.5.6': optional: true + '@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.16': + optional: true + '@tauri-apps/cli-linux-arm64-gnu@1.5.6': optional: true + '@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.16': + optional: true + '@tauri-apps/cli-linux-arm64-musl@1.5.6': optional: true + '@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.16': + optional: true + '@tauri-apps/cli-linux-x64-gnu@1.5.6': optional: true + '@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.16': + optional: true + '@tauri-apps/cli-linux-x64-musl@1.5.6': optional: true + '@tauri-apps/cli-linux-x64-musl@2.0.0-rc.16': + optional: true + '@tauri-apps/cli-win32-arm64-msvc@1.5.6': optional: true + '@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.16': + optional: true + '@tauri-apps/cli-win32-ia32-msvc@1.5.6': optional: true + '@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.16': + optional: true + '@tauri-apps/cli-win32-x64-msvc@1.5.6': optional: true + '@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.16': + optional: true + '@tauri-apps/cli@1.5.6': optionalDependencies: '@tauri-apps/cli-darwin-arm64': 1.5.6 @@ -17047,6 +17681,23 @@ snapshots: '@tauri-apps/cli-win32-ia32-msvc': 1.5.6 '@tauri-apps/cli-win32-x64-msvc': 1.5.6 + '@tauri-apps/cli@2.0.0-rc.16': + optionalDependencies: + '@tauri-apps/cli-darwin-arm64': 2.0.0-rc.16 + '@tauri-apps/cli-darwin-x64': 2.0.0-rc.16 + '@tauri-apps/cli-linux-arm-gnueabihf': 2.0.0-rc.16 + '@tauri-apps/cli-linux-arm64-gnu': 2.0.0-rc.16 + '@tauri-apps/cli-linux-arm64-musl': 2.0.0-rc.16 + '@tauri-apps/cli-linux-x64-gnu': 2.0.0-rc.16 + '@tauri-apps/cli-linux-x64-musl': 2.0.0-rc.16 + '@tauri-apps/cli-win32-arm64-msvc': 2.0.0-rc.16 + '@tauri-apps/cli-win32-ia32-msvc': 2.0.0-rc.16 + '@tauri-apps/cli-win32-x64-msvc': 2.0.0-rc.16 + + '@tauri-apps/plugin-shell@2.0.0-rc.1': + dependencies: + '@tauri-apps/api': 2.0.0-rc.5 + '@tootallnate/once@1.1.2': optional: true @@ -17090,12 +17741,12 @@ snapshots: '@types/bcrypt@5.0.0': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/chai-subset@1.3.5': dependencies: @@ -17107,7 +17758,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/cookie-parser@1.4.3': dependencies: @@ -17119,7 +17770,7 @@ snapshots: '@types/cors@2.8.13': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/debug@4.1.12': dependencies: @@ -17144,7 +17795,7 @@ snapshots: '@types/express-serve-static-core@4.19.0': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/qs': 6.9.12 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -17165,7 +17816,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/har-format@1.2.15': {} @@ -17201,11 +17852,11 @@ snapshots: '@types/jsonwebtoken@9.0.2': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/jsonwebtoken@9.0.6': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/lodash-es@4.17.10': dependencies: @@ -17237,7 +17888,7 @@ snapshots: '@types/node-fetch@2.6.11': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 form-data: 4.0.0 '@types/node@17.0.27': {} @@ -17250,9 +17901,13 @@ snapshots: dependencies: undici-types: 5.26.5 + '@types/node@22.7.3': + dependencies: + undici-types: 6.19.8 + '@types/nodemailer@6.4.7': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/normalize-package-data@2.4.4': {} @@ -17260,7 +17915,7 @@ snapshots: '@types/oauth@0.9.4': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/object-path@0.11.4': {} @@ -17307,7 +17962,7 @@ snapshots: '@types/postman-collection@3.5.10': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/pug@2.0.6': optional: true @@ -17327,12 +17982,12 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/send': 0.17.4 '@types/splitpanes@2.2.6(typescript@5.3.2)': @@ -17351,7 +18006,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/supertest@2.0.12': dependencies: @@ -17377,7 +18032,7 @@ snapshots: '@types/ws@8.5.10': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@types/yargs-parser@21.0.3': {} @@ -17607,7 +18262,7 @@ snapshots: '@typescript-eslint/type-utils@5.30.6(eslint@8.19.0)(typescript@4.9.5)': dependencies: '@typescript-eslint/utils': 5.30.6(eslint@8.19.0)(typescript@4.9.5) - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 eslint: 8.19.0 tsutils: 3.21.0(typescript@4.9.5) optionalDependencies: @@ -17631,7 +18286,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) '@typescript-eslint/utils': 5.62.0(eslint@8.47.0)(typescript@4.9.5) - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 eslint: 8.47.0 tsutils: 3.21.0(typescript@4.9.5) optionalDependencies: @@ -17643,7 +18298,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.3.2) '@typescript-eslint/utils': 6.13.2(eslint@8.55.0)(typescript@5.3.2) - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 eslint: 8.55.0 ts-api-utils: 1.3.0(typescript@5.3.2) optionalDependencies: @@ -17655,7 +18310,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.13.2(typescript@5.3.2) '@typescript-eslint/utils': 6.13.2(eslint@8.57.0)(typescript@5.3.2) - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.3.2) optionalDependencies: @@ -17689,7 +18344,7 @@ snapshots: dependencies: '@typescript-eslint/types': 5.30.6 '@typescript-eslint/visitor-keys': 5.30.6 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 @@ -17717,7 +18372,7 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 @@ -17731,7 +18386,7 @@ snapshots: dependencies: '@typescript-eslint/types': 6.13.2 '@typescript-eslint/visitor-keys': 6.13.2 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 @@ -17950,7 +18605,7 @@ snapshots: transitivePeerDependencies: - graphql - '@vitejs/plugin-legacy@2.3.0(terser@5.31.0)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))': + '@vitejs/plugin-legacy@2.3.0(terser@5.31.0)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))': dependencies: '@babel/standalone': 7.24.5 core-js: 3.37.0 @@ -17958,7 +18613,7 @@ snapshots: regenerator-runtime: 0.13.11 systemjs: 6.15.1 terser: 5.31.0 - vite: 3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0) + vite: 3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0) '@vitejs/plugin-legacy@2.3.0(terser@5.31.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))': dependencies: @@ -17970,7 +18625,7 @@ snapshots: terser: 5.31.0 vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) - '@vitejs/plugin-legacy@2.3.0(terser@5.31.0)(vite@5.0.5(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0))': + '@vitejs/plugin-legacy@2.3.0(terser@5.31.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))': dependencies: '@babel/standalone': 7.24.5 core-js: 3.37.0 @@ -17978,9 +18633,29 @@ snapshots: regenerator-runtime: 0.13.11 systemjs: 6.15.1 terser: 5.31.0 - vite: 5.0.5(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) - '@vitejs/plugin-legacy@4.1.1(terser@5.31.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))': + '@vitejs/plugin-legacy@2.3.0(terser@5.31.0)(vite@5.4.8(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0))': + dependencies: + '@babel/standalone': 7.24.5 + core-js: 3.37.0 + magic-string: 0.26.7 + regenerator-runtime: 0.13.11 + systemjs: 6.15.1 + terser: 5.31.0 + vite: 5.4.8(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0) + + '@vitejs/plugin-legacy@2.3.0(terser@5.31.0)(vite@5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))': + dependencies: + '@babel/standalone': 7.24.5 + core-js: 3.37.0 + magic-string: 0.26.7 + regenerator-runtime: 0.13.11 + systemjs: 6.15.1 + terser: 5.31.0 + vite: 5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) + + '@vitejs/plugin-legacy@4.1.1(terser@5.31.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))': dependencies: '@babel/core': 7.24.5 '@babel/preset-env': 7.24.5(@babel/core@7.24.5) @@ -17990,13 +18665,13 @@ snapshots: regenerator-runtime: 0.13.11 systemjs: 6.15.1 terser: 5.31.0 - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@3.2.0(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))': + '@vitejs/plugin-vue@3.2.0(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))': dependencies: - vite: 3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0) + vite: 3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0) vue: 3.3.9(typescript@4.9.3) '@vitejs/plugin-vue@4.3.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))': @@ -18004,11 +18679,16 @@ snapshots: vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) vue: 3.3.9(typescript@4.9.5) - '@vitejs/plugin-vue@4.5.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2))': + '@vitejs/plugin-vue@4.5.1(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.2))': dependencies: - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) vue: 3.3.9(typescript@5.3.2) + '@vitejs/plugin-vue@5.1.4(vite@5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@5.3.3))': + dependencies: + vite: 5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) + vue: 3.3.9(typescript@5.3.3) + '@vitest/expect@0.34.6': dependencies: '@vitest/spy': 0.34.6 @@ -18057,6 +18737,10 @@ snapshots: dependencies: '@volar/source-map': 1.11.1 + '@volar/language-core@2.4.5': + dependencies: + '@volar/source-map': 2.4.5 + '@volar/shared@0.27.24': dependencies: upath: 2.0.1 @@ -18075,6 +18759,8 @@ snapshots: dependencies: muggle-string: 0.3.1 + '@volar/source-map@2.4.5': {} + '@volar/transforms@0.27.24': dependencies: '@volar/shared': 0.27.24 @@ -18090,6 +18776,12 @@ snapshots: '@volar/language-core': 1.11.1 path-browserify: 1.0.1 + '@volar/typescript@2.4.5': + dependencies: + '@volar/language-core': 2.4.5 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + '@vscode/emmet-helper@2.9.3': dependencies: emmet: 2.4.7 @@ -18157,7 +18849,7 @@ snapshots: '@vue/shared': 3.2.45 estree-walker: 2.0.2 magic-string: 0.25.9 - postcss: 8.4.32 + postcss: 8.4.47 source-map: 0.6.1 '@vue/compiler-sfc@3.3.10': @@ -18170,7 +18862,7 @@ snapshots: '@vue/shared': 3.3.10 estree-walker: 2.0.2 magic-string: 0.30.10 - postcss: 8.4.32 + postcss: 8.4.47 source-map-js: 1.2.0 '@vue/compiler-sfc@3.3.9': @@ -18183,7 +18875,7 @@ snapshots: '@vue/shared': 3.3.9 estree-walker: 2.0.2 magic-string: 0.30.10 - postcss: 8.4.32 + postcss: 8.4.47 source-map-js: 1.2.0 '@vue/compiler-ssr@3.2.45': @@ -18201,6 +18893,11 @@ snapshots: '@vue/compiler-dom': 3.3.9 '@vue/shared': 3.3.9 + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + '@vue/devtools-api@6.6.1': {} '@vue/eslint-config-typescript@11.0.3(eslint-plugin-vue@9.17.0(eslint@8.47.0))(eslint@8.47.0)(typescript@4.9.5)': @@ -18266,6 +18963,19 @@ snapshots: optionalDependencies: typescript: 4.9.5 + '@vue/language-core@2.1.6(typescript@5.3.3)': + dependencies: + '@volar/language-core': 2.4.5 + '@vue/compiler-dom': 3.4.26 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.4.26 + computeds: 0.0.1 + minimatch: 9.0.4 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.3.3 + '@vue/reactivity-transform@3.2.45': dependencies: '@babel/parser': 7.24.5 @@ -18336,6 +19046,12 @@ snapshots: '@vue/shared': 3.3.9 vue: 3.3.9(typescript@5.3.2) + '@vue/server-renderer@3.3.9(vue@3.3.9(typescript@5.3.3))': + dependencies: + '@vue/compiler-ssr': 3.3.9 + '@vue/shared': 3.3.9 + vue: 3.3.9(typescript@5.3.3) + '@vue/shared@3.2.45': {} '@vue/shared@3.3.10': {} @@ -18371,6 +19087,16 @@ snapshots: - '@vue/composition-api' - vue + '@vueuse/core@11.1.0(vue@3.3.9(typescript@5.3.3))': + dependencies: + '@types/web-bluetooth': 0.0.20 + '@vueuse/metadata': 11.1.0 + '@vueuse/shared': 11.1.0(vue@3.3.9(typescript@5.3.3)) + vue-demi: 0.14.10(vue@3.3.9(typescript@5.3.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + '@vueuse/core@8.9.4(vue@3.3.9(typescript@4.9.3))': dependencies: '@types/web-bluetooth': 0.0.14 @@ -18398,6 +19124,15 @@ snapshots: optionalDependencies: vue: 3.3.9(typescript@5.3.2) + '@vueuse/core@8.9.4(vue@3.3.9(typescript@5.3.3))': + dependencies: + '@types/web-bluetooth': 0.0.14 + '@vueuse/metadata': 8.9.4 + '@vueuse/shared': 8.9.4(vue@3.3.9(typescript@5.3.3)) + vue-demi: 0.14.7(vue@3.3.9(typescript@5.3.3)) + optionalDependencies: + vue: 3.3.9(typescript@5.3.3) + '@vueuse/core@9.12.0(vue@3.3.9(typescript@4.9.3))': dependencies: '@types/web-bluetooth': 0.0.16 @@ -18412,6 +19147,8 @@ snapshots: '@vueuse/metadata@10.7.0': {} + '@vueuse/metadata@11.1.0': {} + '@vueuse/metadata@8.9.4': {} '@vueuse/metadata@9.12.0': {} @@ -18430,6 +19167,13 @@ snapshots: - '@vue/composition-api' - vue + '@vueuse/shared@11.1.0(vue@3.3.9(typescript@5.3.3))': + dependencies: + vue-demi: 0.14.10(vue@3.3.9(typescript@5.3.3)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + '@vueuse/shared@8.9.4(vue@3.3.9(typescript@4.9.3))': dependencies: vue-demi: 0.14.7(vue@3.3.9(typescript@4.9.3)) @@ -18448,6 +19192,12 @@ snapshots: optionalDependencies: vue: 3.3.9(typescript@5.3.2) + '@vueuse/shared@8.9.4(vue@3.3.9(typescript@5.3.3))': + dependencies: + vue-demi: 0.14.7(vue@3.3.9(typescript@5.3.3)) + optionalDependencies: + vue: 3.3.9(typescript@5.3.3) + '@vueuse/shared@9.12.0(vue@3.3.9(typescript@4.9.3))': dependencies: vue-demi: 0.14.7(vue@3.3.9(typescript@4.9.3)) @@ -18539,10 +19289,10 @@ snapshots: '@whatwg-node/events@0.1.1': {} - '@whatwg-node/fetch@0.6.9(@types/node@18.18.8)': + '@whatwg-node/fetch@0.6.9(@types/node@22.7.3)': dependencies: '@peculiar/webcrypto': 1.4.6 - '@whatwg-node/node-fetch': 0.0.5(@types/node@18.18.8) + '@whatwg-node/node-fetch': 0.0.5(@types/node@22.7.3) busboy: 1.6.0 urlpattern-polyfill: 6.0.2 web-streams-polyfill: 3.3.3 @@ -18562,9 +19312,9 @@ snapshots: '@whatwg-node/node-fetch': 0.5.11 urlpattern-polyfill: 10.0.0 - '@whatwg-node/node-fetch@0.0.5(@types/node@18.18.8)': + '@whatwg-node/node-fetch@0.0.5(@types/node@22.7.3)': dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@whatwg-node/events': 0.0.2 busboy: 1.6.0 tslib: 2.6.2 @@ -18618,6 +19368,11 @@ snapshots: dependencies: acorn: 8.11.3 + acorn-import-assertions@1.9.0(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + optional: true + acorn-jsx@5.3.2(acorn@7.4.1): dependencies: acorn: 7.4.1 @@ -18643,6 +19398,8 @@ snapshots: acorn@8.11.3: {} + acorn@8.12.1: {} + after@0.8.2: {} agent-base@6.0.2: @@ -18860,6 +19617,16 @@ snapshots: postcss: 8.4.32 postcss-value-parser: 4.2.0 + autoprefixer@10.4.20(postcss@8.4.47): + dependencies: + browserslist: 4.23.3 + caniuse-lite: 1.0.30001646 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.1 + postcss: 8.4.47 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 @@ -18874,6 +19641,14 @@ snapshots: transitivePeerDependencies: - debug + axios@1.7.7: + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + babel-jest@29.7.0(@babel/core@7.24.5): dependencies: '@babel/core': 7.24.5 @@ -19179,7 +19954,7 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.23.3 - caniuse-lite: 1.0.30001616 + caniuse-lite: 1.0.30001646 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 @@ -19550,21 +20325,21 @@ snapshots: corser@2.0.1: {} - cosmiconfig-typescript-loader@2.0.2(@swc/core@1.4.2)(@types/node@18.18.8)(cosmiconfig@7.1.0)(typescript@4.9.5): + cosmiconfig-typescript-loader@2.0.2(@swc/core@1.4.2)(@types/node@22.7.3)(cosmiconfig@7.1.0)(typescript@4.9.5): dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 cosmiconfig: 7.1.0 - ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.5) + ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' - cosmiconfig-typescript-loader@4.4.0(@types/node@18.18.8)(cosmiconfig@7.1.0)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3))(typescript@4.9.3): + cosmiconfig-typescript-loader@4.4.0(@types/node@22.7.3)(cosmiconfig@7.1.0)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3))(typescript@4.9.3): dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 cosmiconfig: 7.1.0 - ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3) + ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3) typescript: 4.9.3 cosmiconfig@7.1.0: @@ -19699,9 +20474,9 @@ snapshots: crypto-random-string@2.0.0: {} - css-declaration-sorter@7.2.0(postcss@8.4.40): + css-declaration-sorter@7.2.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 css-rules@1.1.0: dependencies: @@ -19718,12 +20493,12 @@ snapshots: css-tree@2.2.1: dependencies: mdn-data: 2.0.28 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.0 + source-map-js: 1.2.1 css-what@6.1.0: {} @@ -19731,49 +20506,49 @@ snapshots: cssfilter@0.0.10: {} - cssnano-preset-default@7.0.4(postcss@8.4.40): + cssnano-preset-default@7.0.4(postcss@8.4.47): dependencies: browserslist: 4.23.3 - css-declaration-sorter: 7.2.0(postcss@8.4.40) - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 - postcss-calc: 10.0.0(postcss@8.4.40) - postcss-colormin: 7.0.1(postcss@8.4.40) - postcss-convert-values: 7.0.2(postcss@8.4.40) - postcss-discard-comments: 7.0.1(postcss@8.4.40) - postcss-discard-duplicates: 7.0.0(postcss@8.4.40) - postcss-discard-empty: 7.0.0(postcss@8.4.40) - postcss-discard-overridden: 7.0.0(postcss@8.4.40) - postcss-merge-longhand: 7.0.2(postcss@8.4.40) - postcss-merge-rules: 7.0.2(postcss@8.4.40) - postcss-minify-font-values: 7.0.0(postcss@8.4.40) - postcss-minify-gradients: 7.0.0(postcss@8.4.40) - postcss-minify-params: 7.0.1(postcss@8.4.40) - postcss-minify-selectors: 7.0.2(postcss@8.4.40) - postcss-normalize-charset: 7.0.0(postcss@8.4.40) - postcss-normalize-display-values: 7.0.0(postcss@8.4.40) - postcss-normalize-positions: 7.0.0(postcss@8.4.40) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.40) - postcss-normalize-string: 7.0.0(postcss@8.4.40) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.40) - postcss-normalize-unicode: 7.0.1(postcss@8.4.40) - postcss-normalize-url: 7.0.0(postcss@8.4.40) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.40) - postcss-ordered-values: 7.0.1(postcss@8.4.40) - postcss-reduce-initial: 7.0.1(postcss@8.4.40) - postcss-reduce-transforms: 7.0.0(postcss@8.4.40) - postcss-svgo: 7.0.1(postcss@8.4.40) - postcss-unique-selectors: 7.0.1(postcss@8.4.40) + css-declaration-sorter: 7.2.0(postcss@8.4.47) + cssnano-utils: 5.0.0(postcss@8.4.47) + postcss: 8.4.47 + postcss-calc: 10.0.0(postcss@8.4.47) + postcss-colormin: 7.0.1(postcss@8.4.47) + postcss-convert-values: 7.0.2(postcss@8.4.47) + postcss-discard-comments: 7.0.1(postcss@8.4.47) + postcss-discard-duplicates: 7.0.0(postcss@8.4.47) + postcss-discard-empty: 7.0.0(postcss@8.4.47) + postcss-discard-overridden: 7.0.0(postcss@8.4.47) + postcss-merge-longhand: 7.0.2(postcss@8.4.47) + postcss-merge-rules: 7.0.2(postcss@8.4.47) + postcss-minify-font-values: 7.0.0(postcss@8.4.47) + postcss-minify-gradients: 7.0.0(postcss@8.4.47) + postcss-minify-params: 7.0.1(postcss@8.4.47) + postcss-minify-selectors: 7.0.2(postcss@8.4.47) + postcss-normalize-charset: 7.0.0(postcss@8.4.47) + postcss-normalize-display-values: 7.0.0(postcss@8.4.47) + postcss-normalize-positions: 7.0.0(postcss@8.4.47) + postcss-normalize-repeat-style: 7.0.0(postcss@8.4.47) + postcss-normalize-string: 7.0.0(postcss@8.4.47) + postcss-normalize-timing-functions: 7.0.0(postcss@8.4.47) + postcss-normalize-unicode: 7.0.1(postcss@8.4.47) + postcss-normalize-url: 7.0.0(postcss@8.4.47) + postcss-normalize-whitespace: 7.0.0(postcss@8.4.47) + postcss-ordered-values: 7.0.1(postcss@8.4.47) + postcss-reduce-initial: 7.0.1(postcss@8.4.47) + postcss-reduce-transforms: 7.0.0(postcss@8.4.47) + postcss-svgo: 7.0.1(postcss@8.4.47) + postcss-unique-selectors: 7.0.1(postcss@8.4.47) - cssnano-utils@5.0.0(postcss@8.4.40): + cssnano-utils@5.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 - cssnano@7.0.4(postcss@8.4.40): + cssnano@7.0.4(postcss@8.4.47): dependencies: - cssnano-preset-default: 7.0.4(postcss@8.4.40) + cssnano-preset-default: 7.0.4(postcss@8.4.47) lilconfig: 3.1.2 - postcss: 8.4.40 + postcss: 8.4.47 csso@5.0.5: dependencies: @@ -20508,31 +21283,31 @@ snapshots: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 - esbuild@0.20.2: + esbuild@0.21.5: optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 escalade@3.1.2: {} @@ -21239,7 +22014,7 @@ snapshots: dependencies: '@babel/code-frame': 7.24.2 chalk: 4.1.2 - chokidar: 3.5.3 + chokidar: 3.6.0 cosmiconfig: 8.3.6(typescript@5.2.2) deepmerge: 4.3.1 fs-extra: 10.1.0 @@ -21282,6 +22057,8 @@ snapshots: fp-ts@2.16.2: {} + fp-ts@2.16.9: {} + fraction.js@4.3.7: {} fresh@0.5.2: {} @@ -21481,13 +22258,13 @@ snapshots: graphemer@1.4.0: {} - graphql-config@4.5.0(@types/node@18.18.8)(graphql@16.6.0): + graphql-config@4.5.0(@types/node@22.7.3)(graphql@16.6.0): dependencies: '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.6.0) '@graphql-tools/json-file-loader': 7.4.18(graphql@16.6.0) '@graphql-tools/load': 7.8.14(graphql@16.6.0) '@graphql-tools/merge': 8.4.2(graphql@16.6.0) - '@graphql-tools/url-loader': 7.17.18(@types/node@18.18.8)(graphql@16.6.0) + '@graphql-tools/url-loader': 7.17.18(@types/node@22.7.3)(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) cosmiconfig: 8.0.0 graphql: 16.6.0 @@ -21501,13 +22278,13 @@ snapshots: - encoding - utf-8-validate - graphql-config@4.5.0(@types/node@18.18.8)(graphql@16.8.1): + graphql-config@4.5.0(@types/node@22.7.3)(graphql@16.8.1): dependencies: '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.8.1) '@graphql-tools/json-file-loader': 7.4.18(graphql@16.8.1) '@graphql-tools/load': 7.8.14(graphql@16.8.1) '@graphql-tools/merge': 8.4.2(graphql@16.8.1) - '@graphql-tools/url-loader': 7.17.18(@types/node@18.18.8)(graphql@16.8.1) + '@graphql-tools/url-loader': 7.17.18(@types/node@22.7.3)(graphql@16.8.1) '@graphql-tools/utils': 9.2.1(graphql@16.8.1) cosmiconfig: 8.0.0 graphql: 16.8.1 @@ -21542,13 +22319,13 @@ snapshots: - typescript - utf-8-validate - graphql-config@5.0.3(@types/node@18.18.8)(graphql@16.8.1)(typescript@5.3.2): + graphql-config@5.0.3(@types/node@22.7.3)(graphql@16.8.1)(typescript@5.3.2): dependencies: '@graphql-tools/graphql-file-loader': 8.0.1(graphql@16.8.1) '@graphql-tools/json-file-loader': 8.0.1(graphql@16.8.1) '@graphql-tools/load': 8.0.2(graphql@16.8.1) '@graphql-tools/merge': 9.0.4(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.2(@types/node@18.18.8)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.2(@types/node@22.7.3)(graphql@16.8.1) '@graphql-tools/utils': 10.2.0(graphql@16.8.1) cosmiconfig: 8.3.6(typescript@5.3.2) graphql: 16.8.1 @@ -21563,13 +22340,13 @@ snapshots: - typescript - utf-8-validate - graphql-language-service-interface@2.10.2(@types/node@18.18.8)(graphql@16.8.1): + graphql-language-service-interface@2.10.2(@types/node@22.7.3)(graphql@16.8.1): dependencies: graphql: 16.8.1 - graphql-config: 4.5.0(@types/node@18.18.8)(graphql@16.8.1) - graphql-language-service-parser: 1.10.4(@types/node@18.18.8)(graphql@16.8.1) - graphql-language-service-types: 1.8.7(@types/node@18.18.8)(graphql@16.8.1) - graphql-language-service-utils: 2.7.1(@types/node@18.18.8)(graphql@16.8.1) + graphql-config: 4.5.0(@types/node@22.7.3)(graphql@16.8.1) + graphql-language-service-parser: 1.10.4(@types/node@22.7.3)(graphql@16.8.1) + graphql-language-service-types: 1.8.7(@types/node@22.7.3)(graphql@16.8.1) + graphql-language-service-utils: 2.7.1(@types/node@22.7.3)(graphql@16.8.1) vscode-languageserver-types: 3.17.5 transitivePeerDependencies: - '@types/node' @@ -21578,10 +22355,10 @@ snapshots: - encoding - utf-8-validate - graphql-language-service-parser@1.10.4(@types/node@18.18.8)(graphql@16.8.1): + graphql-language-service-parser@1.10.4(@types/node@22.7.3)(graphql@16.8.1): dependencies: graphql: 16.8.1 - graphql-language-service-types: 1.8.7(@types/node@18.18.8)(graphql@16.8.1) + graphql-language-service-types: 1.8.7(@types/node@22.7.3)(graphql@16.8.1) transitivePeerDependencies: - '@types/node' - bufferutil @@ -21589,10 +22366,10 @@ snapshots: - encoding - utf-8-validate - graphql-language-service-types@1.8.7(@types/node@18.18.8)(graphql@16.8.1): + graphql-language-service-types@1.8.7(@types/node@22.7.3)(graphql@16.8.1): dependencies: graphql: 16.8.1 - graphql-config: 4.5.0(@types/node@18.18.8)(graphql@16.8.1) + graphql-config: 4.5.0(@types/node@22.7.3)(graphql@16.8.1) vscode-languageserver-types: 3.17.5 transitivePeerDependencies: - '@types/node' @@ -21601,11 +22378,11 @@ snapshots: - encoding - utf-8-validate - graphql-language-service-utils@2.7.1(@types/node@18.18.8)(graphql@16.8.1): + graphql-language-service-utils@2.7.1(@types/node@22.7.3)(graphql@16.8.1): dependencies: '@types/json-schema': 7.0.9 graphql: 16.8.1 - graphql-language-service-types: 1.8.7(@types/node@18.18.8)(graphql@16.8.1) + graphql-language-service-types: 1.8.7(@types/node@22.7.3)(graphql@16.8.1) nullthrows: 1.1.1 transitivePeerDependencies: - '@types/node' @@ -21769,14 +22546,14 @@ snapshots: htmlparser2: 8.0.2 selderee: 0.11.0 - htmlnano@2.1.1(cssnano@7.0.4(postcss@8.4.40))(postcss@8.4.40)(relateurl@0.2.7)(svgo@3.3.2)(terser@5.31.0)(typescript@4.9.3): + htmlnano@2.1.1(cssnano@7.0.4(postcss@8.4.47))(postcss@8.4.47)(relateurl@0.2.7)(svgo@3.3.2)(terser@5.31.0)(typescript@4.9.3): dependencies: cosmiconfig: 9.0.0(typescript@4.9.3) posthtml: 0.16.6 timsort: 0.3.0 optionalDependencies: - cssnano: 7.0.4(postcss@8.4.40) - postcss: 8.4.40 + cssnano: 7.0.4(postcss@8.4.47) + postcss: 8.4.47 relateurl: 0.2.7 svgo: 3.3.2 terser: 5.31.0 @@ -21853,7 +22630,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -21889,7 +22666,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -21903,7 +22680,7 @@ snapshots: https-proxy-agent@7.0.4: dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@9.4.0) + debug: 4.3.7 transitivePeerDependencies: - supports-color @@ -22348,7 +23125,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -22468,7 +23245,7 @@ snapshots: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@18.18.8)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@17.0.45)(typescript@4.9.5)): + jest-config@29.7.0(@types/node@22.7.3)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@17.0.45)(typescript@4.9.5)): dependencies: '@babel/core': 7.24.5 '@jest/test-sequencer': 29.7.0 @@ -22493,13 +23270,13 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@17.0.45)(typescript@4.9.5) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-config@29.7.0(@types/node@18.18.8)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.11.10)(typescript@4.9.3)): + jest-config@29.7.0(@types/node@22.7.3)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.11.10)(typescript@4.9.3)): dependencies: '@babel/core': 7.24.5 '@jest/test-sequencer': 29.7.0 @@ -22524,7 +23301,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@18.11.10)(typescript@4.9.3) transitivePeerDependencies: - babel-plugin-macros @@ -22568,7 +23345,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -22582,7 +23359,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 18.18.8 + '@types/node': 22.7.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -22653,7 +23430,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -22688,7 +23465,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -22716,7 +23493,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 chalk: 4.1.2 cjs-module-lexer: 1.3.1 collect-v8-coverage: 1.0.2 @@ -22762,7 +23539,7 @@ snapshots: jest-util@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 18.18.8 + '@types/node': 22.7.3 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -22771,7 +23548,7 @@ snapshots: jest-util@28.1.3: dependencies: '@jest/types': 28.1.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -22780,7 +23557,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -22799,7 +23576,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.18.8 + '@types/node': 22.7.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -22808,13 +23585,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -22873,7 +23650,7 @@ snapshots: jsdom@16.7.0: dependencies: abab: 2.0.6 - acorn: 8.11.3 + acorn: 8.12.1 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 @@ -23082,8 +23859,6 @@ snapshots: lilconfig@2.1.0: {} - lilconfig@3.1.1: {} - lilconfig@3.1.2: {} lines-and-columns@1.2.4: {} @@ -23359,6 +24134,10 @@ snapshots: optionalDependencies: '@types/node': 18.18.8 + meros@1.3.0(@types/node@22.7.3): + optionalDependencies: + '@types/node': 22.7.3 + methods@1.1.2: {} micromatch@4.0.8: @@ -23543,14 +24322,14 @@ snapshots: dependencies: '@babel/runtime': 7.24.5 cheerio: 1.0.0-rc.12 - cssnano: 7.0.4(postcss@8.4.40) + cssnano: 7.0.4(postcss@8.4.47) detect-node: 2.1.0 - htmlnano: 2.1.1(cssnano@7.0.4(postcss@8.4.40))(postcss@8.4.40)(relateurl@0.2.7)(svgo@3.3.2)(terser@5.31.0)(typescript@4.9.3) + htmlnano: 2.1.1(cssnano@7.0.4(postcss@8.4.47))(postcss@8.4.47)(relateurl@0.2.7)(svgo@3.3.2)(terser@5.31.0)(typescript@4.9.3) juice: 10.0.0 lodash: 4.17.21 mjml-parser-xml: 5.0.0-alpha.4 mjml-validator: 5.0.0-alpha.4 - postcss: 8.4.40 + postcss: 8.4.47 prettier: 3.2.5 transitivePeerDependencies: - encoding @@ -23944,6 +24723,13 @@ snapshots: pkg-types: 1.1.0 ufo: 1.5.3 + mlly@1.7.1: + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.2.0 + ufo: 1.5.3 + mocha@9.2.2: dependencies: '@ungap/promise-all-settled': 1.1.2 @@ -23981,6 +24767,8 @@ snapshots: muggle-string@0.3.1: {} + muggle-string@0.4.1: {} + multer@1.4.4-lts.1: dependencies: append-field: 1.0.0 @@ -24250,6 +25038,8 @@ snapshots: dependencies: p-timeout: 3.2.0 + package-manager-detector@0.2.0: {} + paho-mqtt@1.1.0: {} pako@0.2.9: {} @@ -24431,6 +25221,8 @@ snapshots: picocolors@1.0.1: {} + picocolors@1.1.0: {} + picomatch@2.3.1: {} pidtree@0.3.1: {} @@ -24453,6 +25245,12 @@ snapshots: mlly: 1.7.0 pathe: 1.1.2 + pkg-types@1.2.0: + dependencies: + confbox: 0.1.7 + mlly: 1.7.1 + pathe: 1.1.2 + pkginfo@0.4.1: {} pluralize@8.0.0: {} @@ -24467,191 +25265,191 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-calc@10.0.0(postcss@8.4.40): + postcss-calc@10.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 - postcss-selector-parser: 6.0.16 + postcss: 8.4.47 + postcss-selector-parser: 6.1.1 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.1(postcss@8.4.40): + postcss-colormin@7.0.1(postcss@8.4.47): dependencies: browserslist: 4.23.3 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.2(postcss@8.4.40): + postcss-convert-values@7.0.2(postcss@8.4.47): dependencies: browserslist: 4.23.3 - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.1(postcss@8.4.40): + postcss-discard-comments@7.0.1(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-selector-parser: 6.1.1 - postcss-discard-duplicates@7.0.0(postcss@8.4.40): + postcss-discard-duplicates@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 - postcss-discard-empty@7.0.0(postcss@8.4.40): + postcss-discard-empty@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 - postcss-discard-overridden@7.0.0(postcss@8.4.40): + postcss-discard-overridden@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 - postcss-import@15.1.0(postcss@8.4.32): + postcss-import@15.1.0(postcss@8.4.47): dependencies: - postcss: 8.4.32 + postcss: 8.4.47 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.32): + postcss-js@4.0.1(postcss@8.4.47): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.32 + postcss: 8.4.47 - postcss-load-config@4.0.2(postcss@8.4.32)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3)): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.5)): dependencies: - lilconfig: 3.1.1 + lilconfig: 3.1.2 yaml: 2.4.2 optionalDependencies: - postcss: 8.4.32 - ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3) - - postcss-load-config@4.0.2(postcss@8.4.32)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.5)): - dependencies: - lilconfig: 3.1.1 - yaml: 2.4.2 - optionalDependencies: - postcss: 8.4.32 + postcss: 8.4.47 ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.5) - postcss-load-config@4.0.2(postcss@8.4.32)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.2)): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3)): dependencies: - lilconfig: 3.1.1 + lilconfig: 3.1.2 yaml: 2.4.2 optionalDependencies: - postcss: 8.4.32 - ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.2) + postcss: 8.4.47 + ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3) - postcss-load-config@4.0.2(postcss@8.4.40)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.3)): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.2)): dependencies: - lilconfig: 3.1.1 + lilconfig: 3.1.2 yaml: 2.4.2 optionalDependencies: - postcss: 8.4.40 - ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.3) + postcss: 8.4.47 + ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.2) - postcss-merge-longhand@7.0.2(postcss@8.4.40): + postcss-load-config@4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.3)): dependencies: - postcss: 8.4.40 + lilconfig: 3.1.2 + yaml: 2.4.2 + optionalDependencies: + postcss: 8.4.47 + ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.3) + + postcss-merge-longhand@7.0.2(postcss@8.4.47): + dependencies: + postcss: 8.4.47 postcss-value-parser: 4.2.0 - stylehacks: 7.0.2(postcss@8.4.40) + stylehacks: 7.0.2(postcss@8.4.47) - postcss-merge-rules@7.0.2(postcss@8.4.40): + postcss-merge-rules@7.0.2(postcss@8.4.47): dependencies: browserslist: 4.23.3 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 + cssnano-utils: 5.0.0(postcss@8.4.47) + postcss: 8.4.47 postcss-selector-parser: 6.1.1 - postcss-minify-font-values@7.0.0(postcss@8.4.40): + postcss-minify-font-values@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.4.40): + postcss-minify-gradients@7.0.0(postcss@8.4.47): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 + cssnano-utils: 5.0.0(postcss@8.4.47) + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.1(postcss@8.4.40): + postcss-minify-params@7.0.1(postcss@8.4.47): dependencies: browserslist: 4.23.3 - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 + cssnano-utils: 5.0.0(postcss@8.4.47) + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.2(postcss@8.4.40): + postcss-minify-selectors@7.0.2(postcss@8.4.47): dependencies: cssesc: 3.0.0 - postcss: 8.4.40 + postcss: 8.4.47 postcss-selector-parser: 6.1.1 - postcss-nested@6.0.1(postcss@8.4.32): + postcss-nested@6.0.1(postcss@8.4.47): dependencies: - postcss: 8.4.32 - postcss-selector-parser: 6.0.16 + postcss: 8.4.47 + postcss-selector-parser: 6.1.1 - postcss-normalize-charset@7.0.0(postcss@8.4.40): + postcss-normalize-charset@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 - postcss-normalize-display-values@7.0.0(postcss@8.4.40): + postcss-normalize-display-values@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.4.40): + postcss-normalize-positions@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.40): + postcss-normalize-repeat-style@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.4.40): + postcss-normalize-string@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.40): + postcss-normalize-timing-functions@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.1(postcss@8.4.40): + postcss-normalize-unicode@7.0.1(postcss@8.4.47): dependencies: browserslist: 4.23.3 - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.4.40): + postcss-normalize-url@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.40): + postcss-normalize-whitespace@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.4.40): + postcss-ordered-values@7.0.1(postcss@8.4.47): dependencies: - cssnano-utils: 5.0.0(postcss@8.4.40) - postcss: 8.4.40 + cssnano-utils: 5.0.0(postcss@8.4.47) + postcss: 8.4.47 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.1(postcss@8.4.40): + postcss-reduce-initial@7.0.1(postcss@8.4.47): dependencies: browserslist: 4.23.3 caniuse-api: 3.0.0 - postcss: 8.4.40 + postcss: 8.4.47 - postcss-reduce-transforms@7.0.0(postcss@8.4.40): + postcss-reduce-transforms@7.0.0(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 postcss-selector-parser@6.0.16: @@ -24664,15 +25462,15 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.4.40): + postcss-svgo@7.0.1(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.1(postcss@8.4.40): + postcss-unique-selectors@7.0.1(postcss@8.4.47): dependencies: - postcss: 8.4.40 + postcss: 8.4.47 postcss-selector-parser: 6.1.1 postcss-value-parser@4.2.0: {} @@ -24689,15 +25487,15 @@ snapshots: picocolors: 1.0.0 source-map-js: 1.2.0 - postcss@8.4.40: + postcss@8.4.47: dependencies: nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 + picocolors: 1.1.0 + source-map-js: 1.2.1 posthog-node@4.2.0: dependencies: - axios: 1.7.5 + axios: 1.7.7 rusha: 0.8.14 transitivePeerDependencies: - debug @@ -25118,7 +25916,7 @@ snapshots: remote-content@4.0.0: dependencies: - axios: 1.7.5 + axios: 1.7.7 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -25202,10 +26000,10 @@ snapshots: dependencies: rollup-plugin-inject: 3.0.2 - rollup-plugin-polyfill-node@0.13.0(rollup@4.17.2): + rollup-plugin-polyfill-node@0.13.0(rollup@4.22.4): dependencies: - '@rollup/plugin-inject': 5.0.5(rollup@4.17.2) - rollup: 4.17.2 + '@rollup/plugin-inject': 5.0.5(rollup@4.22.4) + rollup: 4.22.4 rollup-plugin-ts@3.4.5(@babel/core@7.24.5)(@babel/preset-env@7.24.5(@babel/core@7.24.5))(@babel/runtime@7.24.5)(@swc/core@1.4.2)(rollup@3.29.4)(typescript@5.2.2): dependencies: @@ -25261,6 +26059,28 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.17.2 fsevents: 2.3.3 + rollup@4.22.4: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.22.4 + '@rollup/rollup-android-arm64': 4.22.4 + '@rollup/rollup-darwin-arm64': 4.22.4 + '@rollup/rollup-darwin-x64': 4.22.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.22.4 + '@rollup/rollup-linux-arm-musleabihf': 4.22.4 + '@rollup/rollup-linux-arm64-gnu': 4.22.4 + '@rollup/rollup-linux-arm64-musl': 4.22.4 + '@rollup/rollup-linux-powerpc64le-gnu': 4.22.4 + '@rollup/rollup-linux-riscv64-gnu': 4.22.4 + '@rollup/rollup-linux-s390x-gnu': 4.22.4 + '@rollup/rollup-linux-x64-gnu': 4.22.4 + '@rollup/rollup-linux-x64-musl': 4.22.4 + '@rollup/rollup-win32-arm64-msvc': 4.22.4 + '@rollup/rollup-win32-ia32-msvc': 4.22.4 + '@rollup/rollup-win32-x64-msvc': 4.22.4 + fsevents: 2.3.3 + run-applescript@3.2.0: dependencies: execa: 0.10.0 @@ -25590,6 +26410,8 @@ snapshots: source-map-js@1.2.0: {} + source-map-js@1.2.1: {} + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 @@ -25789,10 +26611,10 @@ snapshots: style-mod@4.1.2: {} - stylehacks@7.0.2(postcss@8.4.40): + stylehacks@7.0.2(postcss@8.4.47): dependencies: browserslist: 4.23.3 - postcss: 8.4.40 + postcss: 8.4.47 postcss-selector-parser: 6.1.1 subscriptions-transport-ws@0.11.0(graphql@16.8.1): @@ -25863,7 +26685,7 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.0.1 + picocolors: 1.1.0 swagger-methods@2.0.2: {} @@ -25897,7 +26719,7 @@ snapshots: systemjs@6.15.1: {} - tailwindcss@3.3.5(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3)): + tailwindcss@3.3.5(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -25913,18 +26735,18 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.32 - postcss-import: 15.1.0(postcss@8.4.32) - postcss-js: 4.0.1(postcss@8.4.32) - postcss-load-config: 4.0.2(postcss@8.4.32)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3)) - postcss-nested: 6.0.1(postcss@8.4.32) + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3)) + postcss-nested: 6.0.1(postcss@8.4.47) postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: - ts-node - tailwindcss@3.3.5(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.2)): + tailwindcss@3.3.5(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -25940,11 +26762,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.32 - postcss-import: 15.1.0(postcss@8.4.32) - postcss-js: 4.0.1(postcss@8.4.32) - postcss-load-config: 4.0.2(postcss@8.4.32)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.2)) - postcss-nested: 6.0.1(postcss@8.4.32) + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.2)) + postcss-nested: 6.0.1(postcss@8.4.47) postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 @@ -25967,17 +26789,44 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.32 - postcss-import: 15.1.0(postcss@8.4.32) - postcss-js: 4.0.1(postcss@8.4.32) - postcss-load-config: 4.0.2(postcss@8.4.32)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.5)) - postcss-nested: 6.0.1(postcss@8.4.32) + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.5)) + postcss-nested: 6.0.1(postcss@8.4.47) postcss-selector-parser: 6.0.16 resolve: 1.22.8 sucrase: 3.35.0 transitivePeerDependencies: - ts-node + tailwindcss@3.4.13(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.3)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.1 + postcss: 8.4.47 + postcss-import: 15.1.0(postcss@8.4.47) + postcss-js: 4.0.1(postcss@8.4.47) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.3)) + postcss-nested: 6.0.1(postcss@8.4.47) + postcss-selector-parser: 6.1.1 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + tapable@0.2.9: {} tapable@2.2.1: {} @@ -26029,17 +26878,17 @@ snapshots: minimatch: 3.1.2 resolve-from: 2.0.0 - terser-webpack-plugin@5.3.10(@swc/core@1.4.2)(esbuild@0.20.2)(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)): + terser-webpack-plugin@5.3.10(@swc/core@1.4.2)(esbuild@0.21.5)(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.31.0 - webpack: 5.91.0(@swc/core@1.4.2)(esbuild@0.20.2) + webpack: 5.91.0(@swc/core@1.4.2)(esbuild@0.21.5) optionalDependencies: '@swc/core': 1.4.2 - esbuild: 0.20.2 + esbuild: 0.21.5 optional: true terser-webpack-plugin@5.3.10(@swc/core@1.4.2)(webpack@5.89.0(@swc/core@1.4.2)): @@ -26094,6 +26943,8 @@ snapshots: tinybench@2.8.0: {} + tinyexec@0.3.0: {} + tinypool@0.7.0: {} tinyspy@2.2.1: {} @@ -26214,7 +27065,7 @@ snapshots: ts-log@2.2.5: {} - ts-node-dev@2.0.0(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3): + ts-node-dev@2.0.0(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3): dependencies: chokidar: 3.6.0 dynamic-dedupe: 0.3.0 @@ -26224,7 +27075,7 @@ snapshots: rimraf: 2.7.1 source-map-support: 0.5.21 tree-kill: 1.2.2 - ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3) + ts-node: 10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3) tsconfig: 7.0.0 typescript: 4.9.3 transitivePeerDependencies: @@ -26273,26 +27124,6 @@ snapshots: optionalDependencies: '@swc/core': 1.4.2 - ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.18.8 - acorn: 8.11.3 - acorn-walk: 8.3.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 4.9.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.4.2 - ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@4.9.5): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -26312,15 +27143,56 @@ snapshots: yn: 3.1.1 optionalDependencies: '@swc/core': 1.4.2 + optional: true - ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.2): + ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.18.8 + '@types/node': 22.7.3 + acorn: 8.11.3 + acorn-walk: 8.3.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.4.2 + + ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@4.9.5): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.7.3 + acorn: 8.11.3 + acorn-walk: 8.3.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.4.2 + + ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.7.3 acorn: 8.11.3 acorn-walk: 8.3.0 arg: 4.1.3 @@ -26334,14 +27206,14 @@ snapshots: '@swc/core': 1.4.2 optional: true - ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.3): + ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.18.8 + '@types/node': 22.7.3 acorn: 8.11.3 acorn-walk: 8.3.0 arg: 4.1.3 @@ -26390,7 +27262,7 @@ snapshots: tslib@2.6.2: {} - tsup@8.0.2(@swc/core@1.4.2)(postcss@8.4.40)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.3))(typescript@5.3.3): + tsup@8.0.2(@swc/core@1.4.2)(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.3))(typescript@5.3.3): dependencies: bundle-require: 4.1.0(esbuild@0.19.12) cac: 6.7.14 @@ -26400,7 +27272,7 @@ snapshots: execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.2(postcss@8.4.40)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@18.18.8)(typescript@5.3.3)) + postcss-load-config: 4.0.2(postcss@8.4.47)(ts-node@10.9.1(@swc/core@1.4.2)(@types/node@22.7.3)(typescript@5.3.3)) resolve-from: 5.0.0 rollup: 4.17.2 source-map: 0.8.0-beta.0 @@ -26408,7 +27280,7 @@ snapshots: tree-kill: 1.2.2 optionalDependencies: '@swc/core': 1.4.2 - postcss: 8.4.40 + postcss: 8.4.47 typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -26525,6 +27397,8 @@ snapshots: undici-types@5.26.5: {} + undici-types@6.19.8: {} + unhead@1.8.8: dependencies: '@unhead/dom': 1.8.8 @@ -26572,11 +27446,11 @@ snapshots: unpipe@1.0.0: {} - unplugin-fonts@1.0.3(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0)): + unplugin-fonts@1.0.3(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0)): dependencies: fast-glob: 3.3.2 unplugin: 1.10.1 - vite: 3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0) + vite: 3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0) unplugin-fonts@1.1.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): dependencies: @@ -26584,6 +27458,12 @@ snapshots: unplugin: 1.10.1 vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + unplugin-fonts@1.1.1(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)): + dependencies: + fast-glob: 3.3.2 + unplugin: 1.10.1 + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) + unplugin-icons@0.14.9(@vue/compiler-sfc@3.2.45)(vue-template-compiler@2.7.16): dependencies: '@antfu/install-pkg': 0.1.1 @@ -26629,7 +27509,23 @@ snapshots: transitivePeerDependencies: - supports-color - unplugin-vue-components@0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@2.79.1)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)): + unplugin-icons@0.19.3(@vue/compiler-sfc@3.3.10)(vue-template-compiler@2.7.16)(webpack-sources@3.2.3): + dependencies: + '@antfu/install-pkg': 0.4.1 + '@antfu/utils': 0.7.10 + '@iconify/utils': 2.1.33 + debug: 4.3.7 + kolorist: 1.8.0 + local-pkg: 0.5.0 + unplugin: 1.14.1(webpack-sources@3.2.3) + optionalDependencies: + '@vue/compiler-sfc': 3.3.10 + vue-template-compiler: 2.7.16 + transitivePeerDependencies: + - supports-color + - webpack-sources + + unplugin-vue-components@0.21.0(@babel/parser@7.24.5)(esbuild@0.21.5)(rollup@2.79.1)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))(vue@3.3.9(typescript@4.9.3))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5)): dependencies: '@antfu/utils': 0.5.2 '@rollup/pluginutils': 4.2.1 @@ -26640,7 +27536,7 @@ snapshots: magic-string: 0.26.7 minimatch: 5.1.6 resolve: 1.22.8 - unplugin: 0.7.2(esbuild@0.20.2)(rollup@2.79.1)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)) + unplugin: 0.7.2(esbuild@0.21.5)(rollup@2.79.1)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5)) vue: 3.3.9(typescript@4.9.3) optionalDependencies: '@babel/parser': 7.24.5 @@ -26651,7 +27547,7 @@ snapshots: - vite - webpack - unplugin-vue-components@0.21.0(@babel/parser@7.24.5)(esbuild@0.20.2)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)): + unplugin-vue-components@0.21.0(@babel/parser@7.24.5)(esbuild@0.21.5)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue@3.3.9(typescript@4.9.5))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5)): dependencies: '@antfu/utils': 0.5.2 '@rollup/pluginutils': 4.2.1 @@ -26662,7 +27558,7 @@ snapshots: magic-string: 0.26.7 minimatch: 5.1.6 resolve: 1.22.8 - unplugin: 0.7.2(esbuild@0.20.2)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)) + unplugin: 0.7.2(esbuild@0.21.5)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5)) vue: 3.3.9(typescript@4.9.5) optionalDependencies: '@babel/parser': 7.24.5 @@ -26673,10 +27569,10 @@ snapshots: - vite - webpack - unplugin-vue-components@0.25.2(@babel/parser@7.24.5)(rollup@4.17.2)(vue@3.3.9(typescript@5.3.2)): + unplugin-vue-components@0.25.2(@babel/parser@7.24.5)(rollup@4.22.4)(vue@3.3.9(typescript@5.3.2)): dependencies: '@antfu/utils': 0.7.7 - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) + '@rollup/pluginutils': 5.1.0(rollup@4.22.4) chokidar: 3.6.0 debug: 4.3.4(supports-color@9.4.0) fast-glob: 3.3.2 @@ -26692,29 +27588,29 @@ snapshots: - rollup - supports-color - unplugin@0.7.2(esbuild@0.20.2)(rollup@2.79.1)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)): + unplugin@0.7.2(esbuild@0.21.5)(rollup@2.79.1)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5)): dependencies: acorn: 8.11.3 chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.4.6 optionalDependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 rollup: 2.79.1 - vite: 3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0) - webpack: 5.91.0(@swc/core@1.4.2)(esbuild@0.20.2) + vite: 3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0) + webpack: 5.91.0(@swc/core@1.4.2)(esbuild@0.21.5) - unplugin@0.7.2(esbuild@0.20.2)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)): + unplugin@0.7.2(esbuild@0.21.5)(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5)): dependencies: acorn: 8.11.3 chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.4.6 optionalDependencies: - esbuild: 0.20.2 + esbuild: 0.21.5 rollup: 2.79.1 vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) - webpack: 5.91.0(@swc/core@1.4.2)(esbuild@0.20.2) + webpack: 5.91.0(@swc/core@1.4.2)(esbuild@0.21.5) unplugin@0.9.6: dependencies: @@ -26730,6 +27626,13 @@ snapshots: webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.1 + unplugin@1.14.1(webpack-sources@3.2.3): + dependencies: + acorn: 8.12.1 + webpack-virtual-modules: 0.6.2 + optionalDependencies: + webpack-sources: 3.2.3 + unplugin@1.2.0: dependencies: acorn: 8.11.3 @@ -26747,13 +27650,13 @@ snapshots: dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.1.0 update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: browserslist: 4.23.3 escalade: 3.1.2 - picocolors: 1.0.1 + picocolors: 1.1.0 upper-case-first@2.0.2: dependencies: @@ -26839,25 +27742,26 @@ snapshots: dependencies: zod: 3.22.4 - vite-node@0.34.6(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0): + vite-node@0.34.6(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0): dependencies: cac: 6.7.14 debug: 4.3.4(supports-color@9.4.0) mlly: 1.7.0 pathe: 1.1.2 - picocolors: 1.0.0 - vite: 5.0.5(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + picocolors: 1.0.1 + vite: 5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser - vite-plugin-checker@0.6.2(eslint@8.57.0)(optionator@0.9.4)(typescript@5.3.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-tsc@1.8.24(typescript@5.3.2)): + vite-plugin-checker@0.6.2(eslint@8.57.0)(optionator@0.9.4)(typescript@5.3.2)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue-tsc@1.8.24(typescript@5.3.2)): dependencies: '@babel/code-frame': 7.24.2 ansi-escapes: 4.3.2 @@ -26872,7 +27776,7 @@ snapshots: semver: 7.6.0 strip-ansi: 6.0.1 tiny-invariant: 1.3.3 - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.11 @@ -26883,47 +27787,59 @@ snapshots: typescript: 5.3.2 vue-tsc: 1.8.24(typescript@5.3.2) - vite-plugin-eslint@1.8.1(eslint@8.55.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): + vite-plugin-eslint@1.8.1(eslint@8.55.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.10 eslint: 8.55.0 rollup: 2.79.1 - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) - vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0)): + vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.10 eslint: 8.57.0 rollup: 2.79.1 - vite: 3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0) + vite: 3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0) - vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): + vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.10 eslint: 8.57.0 rollup: 2.79.1 - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) - vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@5.0.5(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0)): + vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@5.4.8(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.10 eslint: 8.57.0 rollup: 2.79.1 - vite: 5.0.5(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0) + vite: 5.4.8(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0) - vite-plugin-fonts@0.7.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): + vite-plugin-eslint@1.8.1(eslint@8.57.0)(vite@5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)): + dependencies: + '@rollup/pluginutils': 4.2.1 + '@types/eslint': 8.56.10 + eslint: 8.57.0 + rollup: 2.79.1 + vite: 5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) + + vite-plugin-fonts@0.7.0(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)): dependencies: fast-glob: 3.3.2 - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) vite-plugin-html-config@1.0.11(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): dependencies: vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite-plugin-html-config@1.0.11(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)): + dependencies: + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) + vite-plugin-inspect@0.7.38(rollup@2.79.1)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): dependencies: '@antfu/utils': 0.7.7 @@ -26939,24 +27855,24 @@ snapshots: - rollup - supports-color - vite-plugin-inspect@0.7.42(rollup@4.17.2)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): + vite-plugin-inspect@0.7.42(rollup@4.22.4)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)): dependencies: - '@antfu/utils': 0.7.7 - '@rollup/pluginutils': 5.1.0(rollup@4.17.2) - debug: 4.3.4(supports-color@9.4.0) + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.1.0(rollup@4.22.4) + debug: 4.3.7 error-stack-parser-es: 0.1.1 fs-extra: 11.2.0 open: 9.1.0 - picocolors: 1.0.0 + picocolors: 1.1.0 sirv: 2.0.4 - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) transitivePeerDependencies: - rollup - supports-color vite-plugin-pages-sitemap@1.6.1: {} - vite-plugin-pages@0.26.0(@vue/compiler-sfc@3.2.45)(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0)): + vite-plugin-pages@0.26.0(@vue/compiler-sfc@3.2.45)(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0)): dependencies: '@types/debug': 4.1.12 debug: 4.3.4(supports-color@9.4.0) @@ -26966,7 +27882,7 @@ snapshots: json5: 2.2.3 local-pkg: 0.4.3 picocolors: 1.0.0 - vite: 3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0) + vite: 3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0) yaml: 2.4.2 optionalDependencies: '@vue/compiler-sfc': 3.2.45 @@ -26990,7 +27906,7 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-pages@0.31.0(@vue/compiler-sfc@3.3.10)(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): + vite-plugin-pages@0.31.0(@vue/compiler-sfc@3.3.10)(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)): dependencies: '@types/debug': 4.1.12 debug: 4.3.7 @@ -27000,7 +27916,7 @@ snapshots: json5: 2.2.3 local-pkg: 0.4.3 picocolors: 1.0.1 - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) yaml: 2.4.2 optionalDependencies: '@vue/compiler-sfc': 3.3.10 @@ -27019,12 +27935,12 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-pwa@0.17.3(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0): + vite-plugin-pwa@0.17.3(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(workbox-build@7.1.0(@types/babel__core@7.20.5))(workbox-window@7.0.0): dependencies: debug: 4.3.7 fast-glob: 3.3.2 pretty-bytes: 6.1.1 - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) workbox-build: 7.1.0(@types/babel__core@7.20.5) workbox-window: 7.0.0 transitivePeerDependencies: @@ -27038,20 +27954,20 @@ snapshots: picocolors: 1.0.0 vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) - vite-plugin-static-copy@0.17.1(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0)): + vite-plugin-static-copy@0.17.1(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0)): dependencies: chokidar: 3.6.0 fast-glob: 3.3.2 fs-extra: 11.2.0 picocolors: 1.0.0 - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) - vite-plugin-vue-layouts@0.7.0(vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0))(vue-router@4.1.0(vue@3.3.9(typescript@4.9.3)))(vue@3.3.9(typescript@4.9.3)): + vite-plugin-vue-layouts@0.7.0(vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0))(vue-router@4.1.0(vue@3.3.9(typescript@4.9.3)))(vue@3.3.9(typescript@4.9.3)): dependencies: '@vue/compiler-sfc': 3.3.10 debug: 4.3.4(supports-color@9.4.0) fast-glob: 3.3.2 - vite: 3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0) + vite: 3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0) vue: 3.3.9(typescript@4.9.3) vue-router: 4.1.0(vue@3.3.9(typescript@4.9.3)) transitivePeerDependencies: @@ -27068,25 +27984,25 @@ snapshots: transitivePeerDependencies: - supports-color - vite-plugin-vue-layouts@0.8.0(vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0))(vue-router@4.2.5(vue@3.3.9(typescript@5.3.2)))(vue@3.3.9(typescript@5.3.2)): + vite-plugin-vue-layouts@0.8.0(vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0))(vue-router@4.2.5(vue@3.3.9(typescript@5.3.2)))(vue@3.3.9(typescript@5.3.2)): dependencies: '@vue/compiler-sfc': 3.3.10 debug: 4.3.4(supports-color@9.4.0) fast-glob: 3.3.2 - vite: 4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) vue: 3.3.9(typescript@5.3.2) vue-router: 4.2.5(vue@3.3.9(typescript@5.3.2)) transitivePeerDependencies: - supports-color - vite@3.2.4(@types/node@18.18.8)(sass@1.58.0)(terser@5.31.0): + vite@3.2.4(@types/node@22.7.3)(sass@1.58.0)(terser@5.31.0): dependencies: esbuild: 0.15.18 - postcss: 8.4.32 + postcss: 8.4.47 resolve: 1.22.8 rollup: 2.79.1 optionalDependencies: - '@types/node': 18.18.8 + '@types/node': 22.7.3 fsevents: 2.3.3 sass: 1.58.0 terser: 5.31.0 @@ -27094,7 +28010,7 @@ snapshots: vite@4.5.0(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0): dependencies: esbuild: 0.18.20 - postcss: 8.4.32 + postcss: 8.4.47 rollup: 3.29.4 optionalDependencies: '@types/node': 18.18.8 @@ -27102,13 +28018,13 @@ snapshots: sass: 1.69.5 terser: 5.31.0 - vite@5.0.5(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0): + vite@4.5.0(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0): dependencies: - esbuild: 0.19.12 - postcss: 8.4.32 - rollup: 4.17.2 + esbuild: 0.18.20 + postcss: 8.4.47 + rollup: 3.29.4 optionalDependencies: - '@types/node': 17.0.27 + '@types/node': 22.7.3 fsevents: 2.3.3 sass: 1.69.5 terser: 5.31.0 @@ -27116,7 +28032,7 @@ snapshots: vite@5.0.5(@types/node@17.0.45)(sass@1.69.5)(terser@5.31.0): dependencies: esbuild: 0.19.12 - postcss: 8.4.32 + postcss: 8.4.47 rollup: 4.17.2 optionalDependencies: '@types/node': 17.0.45 @@ -27124,13 +28040,24 @@ snapshots: sass: 1.69.5 terser: 5.31.0 - vite@5.0.5(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0): + vite@5.4.8(@types/node@17.0.27)(sass@1.69.5)(terser@5.31.0): dependencies: - esbuild: 0.19.12 - postcss: 8.4.32 - rollup: 4.17.2 + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.22.4 optionalDependencies: - '@types/node': 18.18.8 + '@types/node': 17.0.27 + fsevents: 2.3.3 + sass: 1.69.5 + terser: 5.31.0 + + vite@5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.22.4 + optionalDependencies: + '@types/node': 22.7.3 fsevents: 2.3.3 sass: 1.69.5 terser: 5.31.0 @@ -27139,7 +28066,7 @@ snapshots: dependencies: '@types/chai': 4.3.16 '@types/chai-subset': 1.3.5 - '@types/node': 18.18.8 + '@types/node': 22.7.3 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -27158,8 +28085,8 @@ snapshots: strip-literal: 1.3.0 tinybench: 2.8.0 tinypool: 0.7.0 - vite: 5.0.5(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) - vite-node: 0.34.6(@types/node@18.18.8)(sass@1.69.5)(terser@5.31.0) + vite: 5.4.8(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) + vite-node: 0.34.6(@types/node@22.7.3)(sass@1.69.5)(terser@5.31.0) why-is-node-running: 2.2.2 optionalDependencies: jsdom: 16.7.0 @@ -27167,6 +28094,7 @@ snapshots: - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color @@ -27279,6 +28207,10 @@ snapshots: vscode-pug-languageservice: 0.27.24 vscode-typescript-languageservice: 0.27.25 + vue-demi@0.14.10(vue@3.3.9(typescript@5.3.3)): + dependencies: + vue: 3.3.9(typescript@5.3.3) + vue-demi@0.14.7(vue@3.3.9(typescript@4.9.3)): dependencies: vue: 3.3.9(typescript@4.9.3) @@ -27291,6 +28223,10 @@ snapshots: dependencies: vue: 3.3.9(typescript@5.3.2) + vue-demi@0.14.7(vue@3.3.9(typescript@5.3.3)): + dependencies: + vue: 3.3.9(typescript@5.3.3) + vue-eslint-parser@9.4.2(eslint@8.47.0): dependencies: debug: 4.3.4(supports-color@9.4.0) @@ -27369,6 +28305,12 @@ snapshots: transitivePeerDependencies: - typescript + vue-promise-modals@0.1.0(typescript@5.3.3): + dependencies: + vue: 3.3.9(typescript@5.3.3) + transitivePeerDependencies: + - typescript + vue-router@4.1.0(vue@3.3.9(typescript@4.9.3)): dependencies: '@vue/devtools-api': 6.6.1 @@ -27420,6 +28362,13 @@ snapshots: semver: 7.6.0 typescript: 4.9.5 + vue-tsc@2.1.6(typescript@5.3.3): + dependencies: + '@volar/typescript': 2.4.5 + '@vue/language-core': 2.1.6(typescript@5.3.3) + semver: 7.6.0 + typescript: 5.3.3 + vue@3.3.9(typescript@4.9.3): dependencies: '@vue/compiler-dom': 3.3.9 @@ -27450,6 +28399,16 @@ snapshots: optionalDependencies: typescript: 5.3.2 + vue@3.3.9(typescript@5.3.3): + dependencies: + '@vue/compiler-dom': 3.3.9 + '@vue/compiler-sfc': 3.3.9 + '@vue/runtime-dom': 3.3.9 + '@vue/server-renderer': 3.3.9(vue@3.3.9(typescript@5.3.3)) + '@vue/shared': 3.3.9 + optionalDependencies: + typescript: 5.3.3 + vuedraggable-es@4.1.1(vue@3.3.9(typescript@4.9.3)): dependencies: sortablejs: 1.14.0 @@ -27465,6 +28424,11 @@ snapshots: sortablejs: 1.14.0 vue: 3.3.9(typescript@5.3.2) + vuedraggable-es@4.1.1(vue@3.3.9(typescript@5.3.3)): + dependencies: + sortablejs: 1.14.0 + vue: 3.3.9(typescript@5.3.3) + w3c-hr-time@1.0.2: dependencies: browser-process-hrtime: 1.0.0 @@ -27531,6 +28495,8 @@ snapshots: webpack-virtual-modules@0.6.1: {} + webpack-virtual-modules@0.6.2: {} + webpack@5.89.0(@swc/core@1.4.2): dependencies: '@types/eslint-scope': 3.7.7 @@ -27562,15 +28528,15 @@ snapshots: - esbuild - uglify-js - webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2): + webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) + acorn: 8.12.1 + acorn-import-assertions: 1.9.0(acorn@8.12.1) browserslist: 4.23.3 chrome-trace-event: 1.0.3 enhanced-resolve: 5.16.0 @@ -27585,7 +28551,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.4.2)(esbuild@0.20.2)(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.20.2)) + terser-webpack-plugin: 5.3.10(@swc/core@1.4.2)(esbuild@0.21.5)(webpack@5.91.0(@swc/core@1.4.2)(esbuild@0.21.5)) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: