diff --git a/package-lock.json b/package-lock.json index be37a3e534aed19236f7bfe8186a5a27bf938ed0..384ae725d1cd1cf577437826b16eb3353036f4be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -962,9 +962,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.4.tgz", - "integrity": "sha512-Zrm+B33R4LWPLjDEVnEqt2+SLTATlru1q/xYKVn8oVTbiRBGmK2VIMoIYGJDGyftnGaC788IuzGFAlb7IQ0Y8A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", "cpu": [ "ppc64" ], @@ -979,9 +979,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.4.tgz", - "integrity": "sha512-E7H/yTd8kGQfY4z9t3nRPk/hrhaCajfA3YSQSBrst8B+3uTcgsi8N+ZWYCaeIDsiVs6m65JPCaQN/DxBRclF3A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", "cpu": [ "arm" ], @@ -996,9 +996,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.4.tgz", - "integrity": "sha512-fYFnz+ObClJ3dNiITySBUx+oNalYUT18/AryMxfovLkYWbutXsct3Wz2ZWAcGGppp+RVVX5FiXeLYGi97umisA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", "cpu": [ "arm64" ], @@ -1013,9 +1013,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.4.tgz", - "integrity": "sha512-mDqmlge3hFbEPbCWxp4fM6hqq7aZfLEHZAKGP9viq9wMUBVQx202aDIfc3l+d2cKhUJM741VrCXEzRFhPDKH3Q==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", "cpu": [ "x64" ], @@ -1030,9 +1030,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.4.tgz", - "integrity": "sha512-72eaIrDZDSiWqpmCzVaBD58c8ea8cw/U0fq/PPOTqE3c53D0xVMRt2ooIABZ6/wj99Y+h4ksT/+I+srCDLU9TA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", "cpu": [ "arm64" ], @@ -1047,9 +1047,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.4.tgz", - "integrity": "sha512-uBsuwRMehGmw1JC7Vecu/upOjTsMhgahmDkWhGLWxIgUn2x/Y4tIwUZngsmVb6XyPSTXJYS4YiASKPcm9Zitag==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", "cpu": [ "x64" ], @@ -1064,9 +1064,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.4.tgz", - "integrity": "sha512-8JfuSC6YMSAEIZIWNL3GtdUT5NhUA/CMUCpZdDRolUXNAXEE/Vbpe6qlGLpfThtY5NwXq8Hi4nJy4YfPh+TwAg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", "cpu": [ "arm64" ], @@ -1081,9 +1081,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.4.tgz", - "integrity": "sha512-8d9y9eQhxv4ef7JmXny7591P/PYsDFc4+STaxC1GBv0tMyCdyWfXu2jBuqRsyhY8uL2HU8uPyscgE2KxCY9imQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", "cpu": [ "x64" ], @@ -1098,9 +1098,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.4.tgz", - "integrity": "sha512-2rqFFefpYmpMs+FWjkzSgXg5vViocqpq5a1PSRgT0AvSgxoXmGF17qfGAzKedg6wAwyM7UltrKVo9kxaJLMF/g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", "cpu": [ "arm" ], @@ -1115,9 +1115,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.4.tgz", - "integrity": "sha512-/GLD2orjNU50v9PcxNpYZi+y8dJ7e7/LhQukN3S4jNDXCKkyyiyAz9zDw3siZ7Eh1tRcnCHAo/WcqKMzmi4eMQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", "cpu": [ "arm64" ], @@ -1132,9 +1132,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.4.tgz", - "integrity": "sha512-pNftBl7m/tFG3t2m/tSjuYeWIffzwAZT9m08+9DPLizxVOsUl8DdFzn9HvJrTQwe3wvJnwTdl92AonY36w/25g==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", "cpu": [ "ia32" ], @@ -1149,9 +1149,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.4.tgz", - "integrity": "sha512-cSD2gzCK5LuVX+hszzXQzlWya6c7hilO71L9h4KHwqI4qeqZ57bAtkgcC2YioXjsbfAv4lPn3qe3b00Zt+jIfQ==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", "cpu": [ "loong64" ], @@ -1166,9 +1166,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.4.tgz", - "integrity": "sha512-qtzAd3BJh7UdbiXCrg6npWLYU0YpufsV9XlufKhMhYMJGJCdfX/G6+PNd0+v877X1JG5VmjBLUiFB0o8EUSicA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", "cpu": [ "mips64el" ], @@ -1183,9 +1183,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.4.tgz", - "integrity": "sha512-yB8AYzOTaL0D5+2a4xEy7OVvbcypvDR05MsB/VVPVA7nL4hc5w5Dyd/ddnayStDgJE59fAgNEOdLhBxjfx5+dg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", "cpu": [ "ppc64" ], @@ -1200,9 +1200,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.4.tgz", - "integrity": "sha512-Y5AgOuVzPjQdgU59ramLoqSSiXddu7F3F+LI5hYy/d1UHN7K5oLzYBDZe23QmQJ9PIVUXwOdKJ/jZahPdxzm9w==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", "cpu": [ "riscv64" ], @@ -1217,9 +1217,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.4.tgz", - "integrity": "sha512-Iqc/l/FFwtt8FoTK9riYv9zQNms7B8u+vAI/rxKuN10HgQIXaPzKZc479lZ0x6+vKVQbu55GdpYpeNWzjOhgbA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", "cpu": [ "s390x" ], @@ -1234,9 +1234,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.4.tgz", - "integrity": "sha512-Td9jv782UMAFsuLZINfUpoF5mZIbAj+jv1YVtE58rFtfvoKRiKSkRGQfHTgKamLVT/fO7203bHa3wU122V/Bdg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", "cpu": [ "x64" ], @@ -1251,9 +1251,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.4.tgz", - "integrity": "sha512-Awn38oSXxsPMQxaV0Ipb7W/gxZtk5Tx3+W+rAPdZkyEhQ6968r9NvtkjhnhbEgWXYbgV+JEONJ6PcdBS+nlcpA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", "cpu": [ "x64" ], @@ -1268,9 +1268,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.4.tgz", - "integrity": "sha512-IsUmQeCY0aU374R82fxIPu6vkOybWIMc3hVGZ3ChRwL9hA1TwY+tS0lgFWV5+F1+1ssuvvXt3HFqe8roCip8Hg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", "cpu": [ "x64" ], @@ -1285,9 +1285,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.4.tgz", - "integrity": "sha512-hsKhgZ4teLUaDA6FG/QIu2q0rI6I36tZVfM4DBZv3BG0mkMIdEnMbhc4xwLvLJSS22uWmaVkFkqWgIS0gPIm+A==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", "cpu": [ "x64" ], @@ -1302,9 +1302,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.4.tgz", - "integrity": "sha512-UUfMgMoXPoA/bvGUNfUBFLCh0gt9dxZYIx9W4rfJr7+hKe5jxxHmfOK8YSH4qsHLLN4Ck8JZ+v7Q5fIm1huErg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", "cpu": [ "arm64" ], @@ -1319,9 +1319,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.4.tgz", - "integrity": "sha512-yIxbspZb5kGCAHWm8dexALQ9en1IYDfErzjSEq1KzXFniHv019VT3mNtTK7t8qdy4TwT6QYHI9sEZabONHg+aw==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", "cpu": [ "ia32" ], @@ -1336,9 +1336,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.4.tgz", - "integrity": "sha512-sywLRD3UK/qRJt0oBwdpYLBibk7KiRfbswmWRDabuncQYSlf8aLEEUor/oP6KRz8KEG+HoiVLBhPRD5JWjS8Sg==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", "cpu": [ "x64" ], @@ -2713,31 +2713,32 @@ } }, "node_modules/@volar/language-core": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.2.5.tgz", - "integrity": "sha512-2htyAuxRrAgETmFeUhT4XLELk3LiEcqoW/B8YUXMF6BrGWLMwIR09MFaZYvrA2UhbdAeSyeQ726HaWSWkexUcQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.3.0.tgz", + "integrity": "sha512-pvhL24WUh3VDnv7Yw5N1sjhPtdx7q9g+Wl3tggmnkMcyK8GcCNElF2zHiKznryn0DiUGk+eez/p2qQhz+puuHw==", "dev": true, "dependencies": { - "@volar/source-map": "2.2.5" + "@volar/source-map": "2.3.0" } }, "node_modules/@volar/source-map": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.2.5.tgz", - "integrity": "sha512-wrOEIiZNf4E+PWB0AxyM4tfhkfldPsb3bxg8N6FHrxJH2ohar7aGu48e98bp3pR9HUA7P/pR9VrLmkTrgCCnWQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.3.0.tgz", + "integrity": "sha512-G/228aZjAOGhDjhlyZ++nDbKrS9uk+5DMaEstjvzglaAw7nqtDyhnQAsYzUg6BMP9BtwZ59RIw5HGePrutn00Q==", "dev": true, "dependencies": { "muggle-string": "^0.4.0" } }, "node_modules/@volar/typescript": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.2.5.tgz", - "integrity": "sha512-eSV/n75+ppfEVugMC/salZsI44nXDPAyL6+iTYCNLtiLHGJsnMv9GwiDMujrvAUj/aLQyqRJgYtXRoxop2clCw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.3.0.tgz", + "integrity": "sha512-PtUwMM87WsKVeLJN33GSTUjBexlKfKgouWlOUIv7pjrOnTwhXHZNSmpc312xgXdTjQPpToK6KXSIcKu9sBQ5LQ==", "dev": true, "dependencies": { - "@volar/language-core": "2.2.5", - "path-browserify": "^1.0.1" + "@volar/language-core": "2.3.0", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" } }, "node_modules/@vue/compiler-core": { @@ -2848,12 +2849,12 @@ } }, "node_modules/@vue/language-core": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.19.tgz", - "integrity": "sha512-A9EGOnvb51jOvnCYoRLnMP+CcoPlbZVxI9gZXE/y2GksRWM6j/PrLEIC++pnosWTN08tFpJgxhSS//E9v/Sg+Q==", + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.0.21.tgz", + "integrity": "sha512-vjs6KwnCK++kIXT+eI63BGpJHfHNVJcUCr3RnvJsccT3vbJnZV5IhHR2puEkoOkIbDdp0Gqi1wEnv3hEd3WsxQ==", "dev": true, "dependencies": { - "@volar/language-core": "~2.2.4", + "@volar/language-core": "~2.3.0-alpha.15", "@vue/compiler-dom": "^3.4.0", "@vue/shared": "^3.4.0", "computeds": "^0.0.1", @@ -3672,9 +3673,9 @@ } }, "node_modules/esbuild": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.4.tgz", - "integrity": "sha512-sFMcNNrj+Q0ZDolrp5pDhH0nRPN9hLIM3fRPwgbLYJeSHHgnXSnbV3xYgSVuOeLWH9c73VwmEverVzupIv5xuA==", + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, "peer": true, @@ -3685,29 +3686,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.4", - "@esbuild/android-arm": "0.21.4", - "@esbuild/android-arm64": "0.21.4", - "@esbuild/android-x64": "0.21.4", - "@esbuild/darwin-arm64": "0.21.4", - "@esbuild/darwin-x64": "0.21.4", - "@esbuild/freebsd-arm64": "0.21.4", - "@esbuild/freebsd-x64": "0.21.4", - "@esbuild/linux-arm": "0.21.4", - "@esbuild/linux-arm64": "0.21.4", - "@esbuild/linux-ia32": "0.21.4", - "@esbuild/linux-loong64": "0.21.4", - "@esbuild/linux-mips64el": "0.21.4", - "@esbuild/linux-ppc64": "0.21.4", - "@esbuild/linux-riscv64": "0.21.4", - "@esbuild/linux-s390x": "0.21.4", - "@esbuild/linux-x64": "0.21.4", - "@esbuild/netbsd-x64": "0.21.4", - "@esbuild/openbsd-x64": "0.21.4", - "@esbuild/sunos-x64": "0.21.4", - "@esbuild/win32-arm64": "0.21.4", - "@esbuild/win32-ia32": "0.21.4", - "@esbuild/win32-x64": "0.21.4" + "@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" } }, "node_modules/escape-string-regexp": { @@ -6562,9 +6563,9 @@ } }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", + "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==", "dev": true, "optional": true, "bin": { @@ -7100,6 +7101,12 @@ "@esbuild/win32-x64": "0.20.2" } }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true + }, "node_modules/vue": { "version": "3.4.27", "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.27.tgz", @@ -7178,13 +7185,13 @@ } }, "node_modules/vue-tsc": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.19.tgz", - "integrity": "sha512-JWay5Zt2/871iodGF72cELIbcAoPyhJxq56mPPh+M2K7IwI688FMrFKc/+DvB05wDWEuCPexQJ6L10zSwzzapg==", + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.0.21.tgz", + "integrity": "sha512-E6x1p1HaHES6Doy8pqtm7kQern79zRtIewkf9fiv7Y43Zo4AFDS5hKi+iHi2RwEhqRmuiwliB1LCEFEGwvxQnw==", "dev": true, "dependencies": { - "@volar/typescript": "~2.2.4", - "@vue/language-core": "2.0.19", + "@volar/typescript": "~2.3.0-alpha.15", + "@vue/language-core": "2.0.21", "semver": "^7.5.4" }, "bin": { diff --git a/src/App.vue b/src/App.vue index a3bef75cae380982e55d1128d9755588f159e95d..d48b90e30e90cbab56645584b3f1e2e547849cf8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -62,6 +62,9 @@ onBeforeMount(() => { }); router.beforeEach(async (to) => { // make sure the user is authenticated + if (to.meta.public) { + return; + } if ( !userRepository.authenticated && // â—ï¸ Avoid an infinite redirect diff --git a/src/components/workflows/modals/ArbitraryWorkflowModal.vue b/src/components/workflows/modals/ArbitraryWorkflowModal.vue index 132dd4a27f224721d79fb8aeaa6d96e7b0a60029..c3c4a7aecaa7bc17b30a098425cdb829ed9b9be3 100644 --- a/src/components/workflows/modals/ArbitraryWorkflowModal.vue +++ b/src/components/workflows/modals/ArbitraryWorkflowModal.vue @@ -27,6 +27,8 @@ let workflowModeCollapse: Collapse | null = null; const arbitraryWorkflowForm = ref<HTMLFormElement | undefined>(undefined); const workflowRepositoryElement = ref<HTMLInputElement | undefined>(undefined); +type Tabs = "clowm" | "cluster" | "local"; + const router = useRouter(); const workflowStore = useWorkflowStore(); const s3KeyStore = useS3KeyStore(); @@ -61,13 +63,7 @@ const workflowMode = reactive<{ modeEnabled: false, }); -const executionEnvironmentState = reactive<{ - cli: boolean; - cluster: boolean; -}>({ - cli: false, - cluster: false, -}); +const activeTab = ref<Tabs>("clowm"); const formState = reactive<{ loading: boolean; @@ -156,15 +152,16 @@ const resourcePathPrefix = computed<string>(() => { }); const nextflowConfig = computed<string>(() => { - if (executionEnvironmentState.cluster) { + if (activeTab.value === "cluster") { return `// Nextflow config to emulate CloWM native execution aws { - accessKey = '${s3KeyStore.keys[0]?.access_key ?? ""}' - secretKey = '${s3KeyStore.keys[0]?.secret_key ?? ""}' client { endpoint = '${environment.S3_URL}' s3PathStyleAccess = true } + // Your personal S3 keys + accessKey = '${s3KeyStore.keys[0]?.access_key ?? ""}' + secretKey = '${s3KeyStore.keys[0]?.secret_key ?? ""}' } // Docker container options @@ -181,7 +178,6 @@ docker { } // Disable unwanted features -// Attention: Docker is the only supported container engine so far! weblog.enabled = false shifter.enabled = false singularity.enabled = false @@ -285,12 +281,14 @@ process { memory = {2000.MB} } }`; - } - return `aws { + } else if (activeTab.value === "local") { + return `// Basic Nextflow config to enable docker and S3 access +aws { client { endpoint = '${environment.S3_URL}' s3PathStyleAccess = true } + // Your personal S3 keys accessKey = '${s3KeyStore.keys[0]?.access_key ?? ""}' secretKey = '${s3KeyStore.keys[0]?.secret_key ?? ""}' } @@ -317,6 +315,8 @@ process { memory = { 4000.MB } } `; + } + return ""; }); const configDownloadUrl = computed<string>(() => @@ -386,7 +386,6 @@ onMounted(() => { tokenHelpCollapse = new Collapse("#tokenHelpCollapse", { toggle: false, }); - console.log(nextflowConfig.value); }); </script> @@ -400,7 +399,7 @@ onMounted(() => { > <template v-slot:header>Test workflow prior registration</template> <template v-slot:body> - <h5>Choose your execution environment</h5> + <h5>Choose the environment for workflow execution</h5> <div class="btn-group justify-content-center w-100 mb-2" role="group"> <input type="radio" @@ -409,56 +408,42 @@ onMounted(() => { id="clowm-outlined" autocomplete="off" checked - v-model="executionEnvironmentState.cli" - :value="false" + v-model="activeTab" + value="clowm" /> - <label class="btn btn-outline-primary" for="clowm-outlined" - >CloWM native execution</label + <label class="btn btn-outline-primary" for="clowm-outlined"> + <font-awesome-icon icon="fa-solid fa-cloud" class="me-1" /> + CloWM native execution</label > - + <input + type="radio" + class="btn-check" + name="execution-environment-choice" + id="cluster-outlined" + autocomplete="off" + v-model="activeTab" + value="cluster" + /> + <label class="btn btn-outline-primary" for="cluster-outlined"> + <font-awesome-icon icon="fa-solid fa-server" class="me-1" /> + Emulated CloWM environment + </label> <input type="radio" class="btn-check" name="execution-environment-choice" id="cli-outlined" autocomplete="off" - v-model="executionEnvironmentState.cli" - :value="true" + v-model="activeTab" + value="local" /> - <label class="btn btn-outline-primary" for="cli-outlined" - >Local Execution</label + <label class="btn btn-outline-primary" for="cli-outlined"> + <font-awesome-icon icon="fa-solid fa-laptop" class="me-1" /> + Local Execution</label > </div> - <div v-if="executionEnvironmentState.cli"> - <div class="btn-group justify-content-center w-100 mb-2" role="group"> - <input - type="radio" - class="btn-check" - name="cluster-environment-choice" - id="laptop-outlined" - autocomplete="off" - checked - v-model="executionEnvironmentState.cluster" - :value="false" - /> - <label class="btn btn-outline-primary" for="laptop-outlined" - >Personal computer</label - > - - <input - type="radio" - class="btn-check" - name="cluster-environment-choice" - id="cluster-outlined" - autocomplete="off" - v-model="executionEnvironmentState.cluster" - :value="true" - /> - <label class="btn btn-outline-primary" for="cluster-outlined" - >Emulated CloWM environment</label - > - </div> - <p v-if="executionEnvironmentState.cluster"> + <div v-if="activeTab !== 'clowm'"> + <p v-if="activeTab === 'cluster'"> To emulate the CloWM native execution environment (e.g. docker configuration, S3 access, resource labels etc.) on the workflow development system, please download and use the Nextflow configuration @@ -470,6 +455,7 @@ onMounted(() => { download and use the Nextflow configuration file (<code>clowm-nextflow.config</code>) as described below. </p> + <h6>Start Workflow:</h6> <pre class="rounded-1 w-100" ><code>nextflow run /path/to/main.nf -c clowm-nextflow.config ...</code></pre> @@ -477,11 +463,15 @@ onMounted(() => { <pre class="w-100 rounded-1"><code>{{ nextflowConfig }}</code></pre> </div> <form - v-else + :hidden="activeTab !== 'clowm'" id="arbitraryWorkflowForm" :class="{ 'was-validated': formState.validated }" ref="arbitraryWorkflowForm" > + <p> + Fill out the form to run an execution of your workflow on the CloWM + infrastructure directly from your git repository. + </p> <div class="mb-3"> <label for="arbitraryWorkflowRepositoryInput" class="form-label" >Git Repository URL</label @@ -673,7 +663,7 @@ onMounted(() => { </template> <template v-slot:footer> <button - v-if="!executionEnvironmentState.cli" + v-if="activeTab === 'clowm'" type="button" class="btn btn-info me-auto" @click="checkRepository" @@ -691,7 +681,7 @@ onMounted(() => { Close </button> <button - v-if="!executionEnvironmentState.cli" + v-if="activeTab === 'clowm'" type="submit" form="workflowCreateForm" class="btn btn-primary" @@ -704,7 +694,7 @@ onMounted(() => { role="status" aria-hidden="true" ></span> - View + Run </button> <a v-else diff --git a/src/router/index.ts b/src/router/index.ts index 5b0b11e881bae9c07d7492bce00f49088edd0a5a..a6397578765f5c79e56599db5439a329a4a84d6d 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -29,6 +29,7 @@ const router = createRouter({ component: LoginView, meta: { title: "Login", + public: true, }, props: (route) => ({ returnPath: route.query.next ?? undefined, @@ -47,6 +48,7 @@ const router = createRouter({ name: "privacy", meta: { title: "Privacy Policy", + public: true, }, component: PrivacyPolicyView, }, @@ -55,6 +57,7 @@ const router = createRouter({ name: "terms", meta: { title: "Terms of Usage", + public: true, }, component: TermsOfUsageView, }, @@ -63,6 +66,7 @@ const router = createRouter({ name: "imprint", meta: { title: "Imprint", + public: true, }, component: ImprintView, }, @@ -70,6 +74,7 @@ const router = createRouter({ path: "/:pathMatch(.*)", meta: { title: "Error", + public: true, }, component: () => import("../views/NotFoundView.vue"), }, diff --git a/src/views/LoginView.vue b/src/views/LoginView.vue index c5eb8488445084d5b11c82baa2ebc2553fb3451d..4a281ec25c8201a0fe8d8b31f21f8225b8ea6af7 100644 --- a/src/views/LoginView.vue +++ b/src/views/LoginView.vue @@ -56,44 +56,54 @@ onMounted(() => { <p>Error Code: {{ props.loginError }}</p> </template> </bootstrap-toast> - <div class="position-fixed start-50 translate-middle-x text-center"> - <img - src="/src/assets/images/clowm.svg" - class="img-fluid mb-3" - width="128" - height="128" - alt="CloWM Logo" - /> - <h1> - <span class="blue fw-bold">Clo</span><span class="red fw-bold">W</span - ><span class="green fw-bold">M</span> - </h1> - <h2> - The <span class="blue fw-semibold">Clo</span>ud-based - <span class="red fw-semibold">W</span>orkflow - <span class="green fw-semibold">M</span>anager - </h2> - </div> <div - class="card text-center ms-md-auto position-fixed top-50 start-50 translate-middle shadow" + class="d-flex flex-column justify-content-between align-items-center" + style="min-height: 80vh" > - <div v-if="invitationToken" class="card-header">Invitation</div> - <div v-else class="card-header">Login</div> - <div class="card-body"> - <p v-if="invitationToken" class="card-text text-secondary"> - Connect your newly created CloWM account with your LifeScience account - </p> - <p v-else class="card-text text-secondary"> - Login to this service with LifeScience - </p> - <a :href="loginPath" class="m-2"> - <img src="/src/assets/images/ls-login.png" alt="[LS Login]" /> - </a> + <div style="visibility: hidden">empty</div> + <div class="text-center w-fit"> + <div class="fs-3 mb-3"> + <img + src="/src/assets/images/clowm.svg" + class="mb-2 img-fluid" + width="48" + height="48" + alt="CloWM Logo" + /> + <h5> + The <span class="blue fw-semibold">Clo</span>ud-based + <span class="red fw-semibold">W</span>orkflow + <span class="green fw-semibold">M</span>anager + </h5> + </div> + <div class="card text-center ms-md-auto"> + <div v-if="invitationToken" class="card-header">Invitation</div> + <div class="card-body"> + <p v-if="invitationToken" class="card-text text-secondary"> + Connect your newly created <span class="blue fw-bold">Clo</span + ><span class="red fw-bold">W</span + ><span class="green fw-bold">M</span> account with your LifeScience + account + </p> + <p v-else class="card-text text-secondary"> + Login to <span class="blue fw-bold">Clo</span + ><span class="red fw-bold">W</span + ><span class="green fw-bold">M</span> with LifeScience + </p> + <a :href="loginPath" class="m-2"> + <img + src="/src/assets/images/ls-login.png" + alt="[LS Login]" + style="max-height: 70px" + /> + </a> + </div> + </div> </div> - </div> - <div class="position-fixed bottom-0 w-100 start-0"> - <div class="d-flex flex-row justify-content-evenly align-items-center"> - <div class="border rounded p-4 icon text-center" hidden> + <div + class="d-flex flex-row justify-content-evenly align-items-center flex-wrap w-100" + > + <div class="border rounded p-4 icon text-center m-2" hidden> <h4 class="mb-4">A Service By</h4> <a href="https://nfdi4microbiota.de/"> <img @@ -103,7 +113,7 @@ onMounted(() => { /> </a> </div> - <div class="border rounded p-4 icon text-center"> + <div class="border rounded p-4 icon text-center m-2"> <h4 class="mb-4">Powered By</h4> <a href="https://www.denbi.de/"> <img @@ -113,17 +123,17 @@ onMounted(() => { /> </a> </div> - <div class="border rounded p-4 icon text-center"> + <div class="border rounded p-4 icon text-center m-2"> <h4 class="mb-4">Hosted By</h4> <a href="https://bibi.uni-bielefeld.de/"> <img src="/src/assets/images/bibi.png" alt="BiBi Logo" height="50" /> </a> </div> - <div class="border rounded p-4 icon text-center"> + <div class="border rounded p-4 icon text-center m-2"> <h4 class="mb-4">Funded By</h4> <img src="/src/assets/images/dfg.png" alt="DFG Logo" height="50" /> </div> - <div class="border rounded p-4 icon text-center"> + <div class="border rounded p-4 icon text-center m-2"> <img src="/src/assets/images/unibi.svg" alt="Bielefeld University Logo"