From bbe3335935d838cca157928f42147522a8dc5791 Mon Sep 17 00:00:00 2001 From: MiniDigger | Martin Date: Sun, 10 Nov 2024 19:54:57 +0100 Subject: [PATCH] feat: add turnstile as captcha provider to signup --- .../auth/controller/AuthController.java | 7 +- .../components/auth/model/dto/SignupForm.java | 2 +- .../auth/service/TurnstileService.java | 43 + .../config/hangar/HangarSecurityConfig.java | 3 +- backend/src/main/resources/application.yml | 1 + .../controller/api/v1/helper/TestData.java | 6 +- chart/templates/secret-hangar-backend.yaml | 1 + chart/templates/secret-hangar-frontend.yaml | 1 + chart/values.yaml | 2 + frontend/nuxt.config.ts | 1 + frontend/package.json | 1 + frontend/pnpm-lock.yaml | 977 ++++++++++++++++++ frontend/src/pages/auth/signup.vue | 4 + frontend/src/pages/privacy.vue | 5 + 14 files changed, 1048 insertions(+), 6 deletions(-) create mode 100644 backend/src/main/java/io/papermc/hangar/components/auth/service/TurnstileService.java diff --git a/backend/src/main/java/io/papermc/hangar/components/auth/controller/AuthController.java b/backend/src/main/java/io/papermc/hangar/components/auth/controller/AuthController.java index 5c375f40..b723e417 100644 --- a/backend/src/main/java/io/papermc/hangar/components/auth/controller/AuthController.java +++ b/backend/src/main/java/io/papermc/hangar/components/auth/controller/AuthController.java @@ -13,6 +13,7 @@ import io.papermc.hangar.components.auth.model.dto.SignupForm; import io.papermc.hangar.components.auth.service.AuthService; import io.papermc.hangar.components.auth.service.CredentialsService; import io.papermc.hangar.components.auth.service.TokenService; +import io.papermc.hangar.components.auth.service.TurnstileService; import io.papermc.hangar.components.auth.service.VerificationService; import io.papermc.hangar.exceptions.HangarApiException; import io.papermc.hangar.model.db.UserTable; @@ -47,18 +48,22 @@ public class AuthController extends HangarComponent { private final VerificationService verificationService; private final CredentialsService credentialsService; private final UserService userService; + private final TurnstileService turnstileService; - public AuthController(final AuthService authService, final TokenService tokenService, final VerificationService verificationService, final CredentialsService credentialsService, final UserService userService) { + public AuthController(final AuthService authService, final TokenService tokenService, final VerificationService verificationService, final CredentialsService credentialsService, final UserService userService, final TurnstileService turnstileService) { this.authService = authService; this.tokenService = tokenService; this.verificationService = verificationService; this.credentialsService = credentialsService; this.userService = userService; + this.turnstileService = turnstileService; } @Anyone @PostMapping("/signup") public ResponseEntity signup(@RequestBody final SignupForm signupForm) { + this.turnstileService.validate(signupForm.captcha()); + final UserTable userTable = this.authService.registerUser(signupForm); if (userTable == null) { return ResponseEntity.badRequest().build(); diff --git a/backend/src/main/java/io/papermc/hangar/components/auth/model/dto/SignupForm.java b/backend/src/main/java/io/papermc/hangar/components/auth/model/dto/SignupForm.java index f622fa3b..449882ac 100644 --- a/backend/src/main/java/io/papermc/hangar/components/auth/model/dto/SignupForm.java +++ b/backend/src/main/java/io/papermc/hangar/components/auth/model/dto/SignupForm.java @@ -1,4 +1,4 @@ package io.papermc.hangar.components.auth.model.dto; -public record SignupForm(String username, String email, String password, boolean tos) { +public record SignupForm(String username, String email, String password, boolean tos, String captcha) { } diff --git a/backend/src/main/java/io/papermc/hangar/components/auth/service/TurnstileService.java b/backend/src/main/java/io/papermc/hangar/components/auth/service/TurnstileService.java new file mode 100644 index 00000000..d8844004 --- /dev/null +++ b/backend/src/main/java/io/papermc/hangar/components/auth/service/TurnstileService.java @@ -0,0 +1,43 @@ +package io.papermc.hangar.components.auth.service; + +import io.papermc.hangar.HangarComponent; +import io.papermc.hangar.exceptions.HangarApiException; +import io.papermc.hangar.util.RequestUtil; +import java.util.Arrays; +import org.springframework.http.HttpEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; + +@Service +public class TurnstileService extends HangarComponent { + + private final RestTemplate restTemplate; + + public TurnstileService(final RestTemplate restTemplate) { + this.restTemplate = restTemplate; + } + + public void validate(String token) { + if (this.config.security.turnstileSecret() != null && !this.config.security.turnstileSecret().isBlank()) { + MultiValueMap formData = new LinkedMultiValueMap<>(); + formData.add("secret", this.config.security.turnstileSecret()); + formData.add("response", token); + formData.add("remoteip", RequestUtil.getRemoteAddress(this.request)); + + MultiValueMap headers = new LinkedMultiValueMap<>(); + headers.set("User-Agent", "Hangar/1.0"); + HttpEntity> entity = new HttpEntity<>(formData, headers); + + String url = "https://challenges.cloudflare.com/turnstile/v0/siteverify"; + var response = this.restTemplate.postForEntity(url, entity, TurnstileResponse.class); + + if (response.getBody() != null && !response.getBody().success()) { + throw new HangarApiException("error.captcha", Arrays.toString(response.getBody().errorCodes())); + } + } + } + + record TurnstileResponse(boolean success, String[] errorCodes){} +} diff --git a/backend/src/main/java/io/papermc/hangar/config/hangar/HangarSecurityConfig.java b/backend/src/main/java/io/papermc/hangar/config/hangar/HangarSecurityConfig.java index d6c2ca3c..181b657c 100644 --- a/backend/src/main/java/io/papermc/hangar/config/hangar/HangarSecurityConfig.java +++ b/backend/src/main/java/io/papermc/hangar/config/hangar/HangarSecurityConfig.java @@ -21,7 +21,8 @@ public record HangarSecurityConfig( String rpName, String rpId, List oAuthProviders, - @DefaultValue("false") boolean oAuthEnabled + @DefaultValue("false") boolean oAuthEnabled, + String turnstileSecret ) { public boolean checkSafe(final String url) { diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index 36990ebb..7dddb190 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -166,6 +166,7 @@ hangar: refresh-token-expiry: 30 # days rp-name: "Hangar" rp-id: "localhost" + turnstileSecret: "" safe-download-hosts: - "dev.bukkit.org" - "github.com" diff --git a/backend/src/test/java/io/papermc/hangar/controller/api/v1/helper/TestData.java b/backend/src/test/java/io/papermc/hangar/controller/api/v1/helper/TestData.java index f1aa0c28..69aa1f76 100644 --- a/backend/src/test/java/io/papermc/hangar/controller/api/v1/helper/TestData.java +++ b/backend/src/test/java/io/papermc/hangar/controller/api/v1/helper/TestData.java @@ -95,9 +95,9 @@ public class TestData { HangarApplication.TEST_MODE = true; logger.info("Preparing test data..."); logger.info("Creating some test users..."); - USER_NORMAL = this.authService.registerUser(new SignupForm("TestUser", "testuser@papermc.io", "W45nNUefrsB8ucQeiKDdbEQijH5KP", true)); - USER_MEMBER = this.authService.registerUser(new SignupForm("TestMember", "testmember@papermc.io", "W45nNUefrsB8ucQeiKDdbEQijH5KP", true)); - USER_ADMIN = this.authService.registerUser(new SignupForm("TestAdmin", "testadmin@papermc.io", "W45nNUefrsB8ucQeiKDdbEQijH5KP", true)); + USER_NORMAL = this.authService.registerUser(new SignupForm("TestUser", "testuser@papermc.io", "W45nNUefrsB8ucQeiKDdbEQijH5KP", true, null)); + USER_MEMBER = this.authService.registerUser(new SignupForm("TestMember", "testmember@papermc.io", "W45nNUefrsB8ucQeiKDdbEQijH5KP", true, null)); + USER_ADMIN = this.authService.registerUser(new SignupForm("TestAdmin", "testadmin@papermc.io", "W45nNUefrsB8ucQeiKDdbEQijH5KP", true, null)); USER_NORMAL.setEmailVerified(true); USER_MEMBER.setEmailVerified(true); diff --git a/chart/templates/secret-hangar-backend.yaml b/chart/templates/secret-hangar-backend.yaml index a792023a..9d70b389 100644 --- a/chart/templates/secret-hangar-backend.yaml +++ b/chart/templates/secret-hangar-backend.yaml @@ -50,6 +50,7 @@ stringData: security: token-secret: "{{ .Values.backend.config.tokenSecret }}" rp-id: "{{ .Values.backend.config.rpId }}" + turnstile-secret: "{{ .Values.backend.config.turnstileSecret }}" o-auth-enabled: {{ .Values.backend.config.oauthEnabled }} o-auth-providers: - name: "github" diff --git a/chart/templates/secret-hangar-frontend.yaml b/chart/templates/secret-hangar-frontend.yaml index f7d8d487..944cd5fd 100644 --- a/chart/templates/secret-hangar-frontend.yaml +++ b/chart/templates/secret-hangar-frontend.yaml @@ -13,3 +13,4 @@ stringData: #DEBUG: "hangar:*" #NITRO_CLUSTER_WORKERS: "4" SENTRY_ENV: "{{ .Values.backend.config.sentry.environment }}" + NUXT_PUBLIC_TURNSTILE_SITE_KEY: "{{ .Values.frontend.config.turnstileSiteKey }}" diff --git a/chart/values.yaml b/chart/values.yaml index 6da40ab2..17bd85d3 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -111,6 +111,7 @@ frontend: config: configEnv: "hangar.test" backendHost: "http://hangar-backend:8080" + turnstileSiteKey: "todo" backend: replicaCount: 1 @@ -186,6 +187,7 @@ backend: options: "?currentSchema=hangar" tokenSecret: "secret" rpId: "localhost" + turnstileSecret: "" oauthEnabled: true githubClientId: "todo" githubClientSecret: "todo" diff --git a/frontend/nuxt.config.ts b/frontend/nuxt.config.ts index b7a027e0..9b1bdf44 100644 --- a/frontend/nuxt.config.ts +++ b/frontend/nuxt.config.ts @@ -56,6 +56,7 @@ export default defineNuxtConfig({ "@vueuse/nuxt", "@nuxtjs/i18n", "@sentry/nuxt/module", + "@nuxtjs/turnstile", [ "unplugin-icons/nuxt", { diff --git a/frontend/package.json b/frontend/package.json index ca32c8a8..22eea40b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -65,6 +65,7 @@ "@iconify-json/mdi": "1.2.1", "@nuxtjs/eslint-config-typescript": "12.1.0", "@nuxtjs/i18n": "8.5.5", + "@nuxtjs/turnstile": "0.9.11", "@sentry/bun": "8.37.1", "@sentry/nuxt": "8.37.1", "@sentry/profiling-node": "8.37.1", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 6292a5c8..a66218c0 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -129,6 +129,9 @@ importers: '@nuxtjs/i18n': specifier: 8.5.5 version: 8.5.5(magicast@0.3.5)(rollup@4.25.0)(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3) + '@nuxtjs/turnstile': + specifier: 0.9.11 + version: 0.9.11(@nuxt/scripts@0.9.5(@nuxt/devtools@1.6.0(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3))(@unocss/webpack@0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.12)(axios@1.7.7(debug@4.3.7))(change-case@5.4.4)(ioredis@5.4.1)(jwt-decode@4.0.0)(magicast@0.3.5)(nprogress@0.2.0)(nuxt@3.14.159(@parcel/watcher@2.5.0)(@types/node@22.9.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.25.0)(sass@1.80.6)(terser@5.36.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue-tsc@2.1.10(typescript@5.6.3))(webpack-sources@3.2.3))(postcss@8.4.47)(rollup@4.25.0)(sortablejs@1.14.0)(typescript@5.6.3)(universal-cookie@7.2.2)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.23.1)))(magicast@0.3.5)(rollup@4.25.0)(webpack-sources@3.2.3) '@sentry/bun': specifier: 8.37.1 version: 8.37.1(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0) @@ -886,9 +889,21 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead + '@iconify-json/carbon@1.2.4': + resolution: {integrity: sha512-DhW2jjMVGwV0DLHc0cmDYohdtGxMra8UuwgjHrryPy+rQX4gXhJwCBBVP2h2UG/92AoRCTn7zUJve4WvY5MLYg==} + + '@iconify-json/logos@1.2.3': + resolution: {integrity: sha512-JLHS5hgZP1b55EONAWNeqBUuriRfRNKWXK4cqYx0PpVaJfIIMiiMxFfvoQiX/bkE9XgkLhcKmDUqL3LXPdXPwQ==} + '@iconify-json/mdi@1.2.1': resolution: {integrity: sha512-dSkQU78gsZV6Yxnq78+LuX7jzeFC/5NAmz7O3rh558GimGFcwMVY/OtqRowIzjqJBmMmWZft7wkFV4TrwRXjlg==} + '@iconify-json/ri@1.2.3': + resolution: {integrity: sha512-UVKofd5xkSevGd5K01pvO4NWsu+2C9spu+GxnMZUYymUiaWmpCAxtd22MFSpm6MGf0MP4GCwhDCo1Q8L8oZ9wg==} + + '@iconify-json/tabler@1.2.7': + resolution: {integrity: sha512-q6FbDeC5caOC7i7/dcJOv7PdovHWItd84hCvsnlD/mzsrl5Nhol6eSQOMRv1bIpyxykGEiSDbOsVK5f23j/aFg==} + '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -1046,6 +1061,11 @@ packages: peerDependencies: vite: '*' + '@nuxt/devtools-ui-kit@1.6.0': + resolution: {integrity: sha512-7+faAlwDpCw0hPAYjwsW5aH9tzcV/tCfYsZklH5UU/WajhP9cJfWJuYMw+vkz6H07zE+cU8QAECaw55dQGGZwg==} + peerDependencies: + '@nuxt/devtools': 1.6.0 + '@nuxt/devtools-wizard@1.6.0': resolution: {integrity: sha512-n+mzz5NwnKZim0tq1oBi+x1nNXb21fp7QeBl7bYKyDT1eJ0XCxFkVTr/kB/ddkkLYZ+o8TykpeNPa74cN+xAyQ==} hasBin: true @@ -1064,6 +1084,9 @@ packages: resolution: {integrity: sha512-ggXA3F2f9udQoEy5WwrY6bTMvpDaErUYRLSEzdMqqCqjOQ5manfFgfuScGj3ooZiXLIX2TGLVTzcll4nnpDlnQ==} engines: {node: ^14.18.0 || >=16.10.0} + '@nuxt/scripts@0.9.5': + resolution: {integrity: sha512-E71sk4HP7HjwAFPu2CnCdW8Aed0uBv8zkdADyIe0BRvLNBnfwXluEBRLwh/XFarlGSvD5557jWSQ/3+FGZvbSA==} + '@nuxt/telemetry@2.6.0': resolution: {integrity: sha512-h4YJ1d32cU7tDKjjhjtIIEck4WF/w3DTQBT348E9Pz85YLttnLqktLM0Ez9Xc2LzCeUgBDQv1el7Ob/zT3KUqg==} hasBin: true @@ -1088,6 +1111,11 @@ packages: resolution: {integrity: sha512-HVXRy61VBACIwmap1WxuhT9nNf6liU9L9LQSB6D7LDJ+8w57Cc6qWHRJ7dNI9sI/IQ2FQWk7PkTWriybAd3MlQ==} engines: {node: ^14.16.0 || >=16.11.0} + '@nuxtjs/turnstile@0.9.11': + resolution: {integrity: sha512-kE2n1UZdpyw6XHVUMi8Ru0TG0RbB/2myN/ssM0oXPDnrAXUxeOA3DHq/9ejIVnu2kxJZsngAQM3cnmuDTIuUFw==} + peerDependencies: + '@nuxt/scripts': ^0.6.0 || ^0.7.0 || ^0.8.0 || ^0.9.0 + '@opentelemetry/api-logs@0.52.1': resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} engines: {node: '>=14'} @@ -1768,10 +1796,29 @@ packages: pinia: optional: true + '@shikijs/core@1.22.0': + resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} + + '@shikijs/engine-javascript@1.22.0': + resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} + + '@shikijs/engine-oniguruma@1.22.0': + resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} + + '@shikijs/types@1.22.0': + resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} + + '@shikijs/vscode-textmate@9.3.0': + resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} + '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} + '@stripe/stripe-js@4.9.0': + resolution: {integrity: sha512-tMPZQZZXGWyNX7hbgenq+1xEj2oigJ54XddbtSX36VedoKsPBq7dxwRXu4Xd5FdpT3JDyyDtnmvYkaSnH1yHTQ==} + engines: {node: '>=12.16'} + '@swagger-api/apidom-ast@1.0.0-alpha.10': resolution: {integrity: sha512-f4Y9t1oBlnsvMoLPCykzn5LRrmARiaPzorocQkMFTkYUPb7RKA4zCuWi67hH4iDVsVvkPutgew19XyJiI3OF9Q==} @@ -1874,6 +1921,9 @@ packages: '@types/bun@1.1.13': resolution: {integrity: sha512-KmQxSBgVWCl6RSuerlLGZlIWfdxkKqat0nxN61+qu4y1KDn0Ll3j7v1Pl8GnaL3a/U6GGWVTJh75ap62kR1E8Q==} + '@types/cloudflare-turnstile@0.2.2': + resolution: {integrity: sha512-3Yf7b1Glci+V2bFWwWBbZkRgTuegp7RDgNTOG4U0UNPB9RV4AWvwqg2/qqLff8G+SwKFNXoXvTkqaRBZrAFdKA==} + '@types/codemirror@5.60.15': resolution: {integrity: sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==} @@ -1898,6 +1948,12 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/google.maps@3.58.1': + resolution: {integrity: sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/http-proxy@1.17.15': resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} @@ -1931,6 +1987,9 @@ packages: '@types/marked@4.3.2': resolution: {integrity: sha512-a79Yc3TOk6dGdituy8hmTTJXjOkZ7zsFYV10L337ttq/rec8lRMDBpV7fL3uLx6TgbFCa5DU/h8FmIBQPSbU0w==} + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} @@ -1988,12 +2047,21 @@ packages: '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/vimeo__player@2.18.3': + resolution: {integrity: sha512-IzSzb6doT4I4uAnBHa+mBCiNtK7iAllEJjtpkX0sKY6/s1Vi+aX1134IAiPgiyFlMvFab/oZQpSeccK4r0/T2A==} + '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} '@types/ws@8.5.13': resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} + '@types/youtube@0.1.0': + resolution: {integrity: sha512-Pg33m3X2mFgdmhtvzOlAfUfgOa3341N3/2JCrVY/mXVxb4hagcqqEG6w4vGCfB64StQNWHSj/T8Eotb1Rko/FQ==} + '@typescript-eslint/eslint-plugin@6.21.0': resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} @@ -2116,12 +2184,21 @@ packages: '@unhead/dom@1.11.11': resolution: {integrity: sha512-4YwziCH5CmjvUzSGdZ4Klj6BqhLSTNZooA9kt47yDxj4Qw9uHqVnXwWWupYsVdIYPNsw1tR2AkHveg82y1Fn3A==} + '@unhead/dom@1.11.9': + resolution: {integrity: sha512-AOoCt05sLbkmp7ipCAs2JQdV0auLc5lCkLbCZj19kuPmWcFOoHNByQAG/AFKuSvi297OYp8abKGCStIgyz2x4A==} + '@unhead/schema@1.11.11': resolution: {integrity: sha512-xSGsWHPBYcMV/ckQeImbrVu6ddeRnrdDCgXUKv3xIjGBY+ob/96V80lGX8FKWh8GwdFSwhblISObKlDAt5K9ZQ==} + '@unhead/schema@1.11.9': + resolution: {integrity: sha512-0V37bxG4sQuiLw3M5DMD+b99ndOOngecMlekQ122TDvBb24W8rWwkHhXvAu5eFg6bQXPdQF1A0U0PuRMcCj/ZA==} + '@unhead/shared@1.11.11': resolution: {integrity: sha512-RfdvUskPn90ipO+PmR98jKZ8Lsx1uuzscOenO5xcrMrtWGhlLWaEBIrbvFOvX5PZ/u8/VNMJChTXGDUjEtHmlg==} + '@unhead/shared@1.11.9': + resolution: {integrity: sha512-Df6Td9d87NM5EWf4ylAN98zwf50DwfMg3xoy6ofz3Qg1jSXewEIMD1w1C0/Q6KdpLo01TuoQ0RfpSyVtxt7oEA==} + '@unhead/ssr@1.11.11': resolution: {integrity: sha512-NQC8y+4ldwkMr3x8WFwv3+OR6g+Sj7dwL6J/3ST25KnvlwDSub2KGbnm2hF1x8vTpTmXTVxMA3GDRL9MRfLvMg==} @@ -2130,6 +2207,19 @@ packages: peerDependencies: vue: '>=2.7 || >=3' + '@unhead/vue@1.11.9': + resolution: {integrity: sha512-vdl3H1bwJNindhRplMun7zhtNFggP8QqpPwc1e7kd2a0ORp776+QpFXKdYHFSlX+eAMmDVv8LQ+VL0N++pXxNg==} + peerDependencies: + vue: '>=2.7 || >=3' + + '@unocss/astro@0.62.4': + resolution: {integrity: sha512-98KfkbrNhBLx2+uYxMiGsldIeIZ6/PbL4yaGRHeHoiHd7p4HmIyCF+auYe4Psntx3Yr8kU+XSIAhGDYebvTidQ==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + vite: + optional: true + '@unocss/astro@0.64.0': resolution: {integrity: sha512-4Ijf3cQblSjdC3XV4SvzkEj17z6gNsuMGy7M+TvNN4cZhGLWQCIChtHR525ESGxJ4kdZ6FoIUoxmLdWHMOpX4Q==} peerDependencies: @@ -2138,81 +2228,161 @@ packages: vite: optional: true + '@unocss/cli@0.62.4': + resolution: {integrity: sha512-p4VyS40mzn4LCOkIsbIRzN0Zi50rRepesREi2S1+R4Kpvd4QFeeuxTuZNHEyi2uCboQ9ZWl1gfStCXIrNECwTg==} + engines: {node: '>=14'} + hasBin: true + '@unocss/cli@0.64.0': resolution: {integrity: sha512-xfY/qm7vr/4Qaf+CcQHuBJSg5ApZBvvGVD1zwyGFgfhfOFYR1hI3DS2zl75zav6btEwwXsjY7AUv6uYGF4M7dA==} engines: {node: '>=14'} hasBin: true + '@unocss/config@0.62.4': + resolution: {integrity: sha512-XKudKxxW8P44JvlIdS6HBpfE3qZA9rhbemy6/sb8HyZjKYjgeM9jx5yjk+9+4hXNma/KlwDXwjAqY29z0S0SrA==} + engines: {node: '>=14'} + '@unocss/config@0.64.0': resolution: {integrity: sha512-L97x4vEk7jNG5ptZY5Xp0xgEk//tbMpQVm2BzfyL7w+Hg8X3AV4YjFL6hysHvpYiTdUCVaZg+S0s3b7wuj8Mqw==} engines: {node: '>=14'} + '@unocss/core@0.62.4': + resolution: {integrity: sha512-Cc+Vo6XlaQpyVejkJrrzzWtiK9pgMWzVVBpm9VCVtwZPUjD4GSc+g7VQCPXSsr7m03tmSuRySJx72QcASmauNQ==} + '@unocss/core@0.64.0': resolution: {integrity: sha512-Qb8wWPYNlTagCdJGzULew+e3NMM8Bd7fr38lDLgrMj+njop+wzkSe1ZZOyMMH9yHSq/Rznn5eCjnyzyHwxGslQ==} + '@unocss/extractor-arbitrary-variants@0.62.4': + resolution: {integrity: sha512-e4hJfBMyFr6T6dYSTTjNv9CQwaU1CVEKxDlYP0GpfSgxsV58pguID9j1mt0/XZD6LvEDzwxj9RTRWKpUSWqp+Q==} + '@unocss/extractor-arbitrary-variants@0.64.0': resolution: {integrity: sha512-oVB8l8zM+x0MQJTkraRcsrfJnWEwyPVgMgtzmNUm//HqV+xTrjZCNtOqHFNIZdj/+w0gkErGQLxzRwyPjlHq4g==} + '@unocss/inspector@0.62.4': + resolution: {integrity: sha512-bRcnI99gZecNzrUr6kDMdwGHkhUuTPyvvadRdaOxHc9Ow3ANNyqymeFM1q5anZEUZt8h15TYN0mdyQyIWkU3zg==} + '@unocss/inspector@0.64.0': resolution: {integrity: sha512-aFEfxEuPOpbPNH3j1CLLnN7ZyZkc64XoxZbz7RbG20Wy5oJxonOnlu+Wikz9SfGvIyF16MVAMCkHu12WFRRC+g==} + '@unocss/nuxt@0.62.4': + resolution: {integrity: sha512-ZNfXu/f2kIRc8rnstToR/s2ubcvWDaCPmV5jXL+SQytSPb1ONCkK7ITNgB2TtrTEqQyhNX33VlnHNF8KsM8PNA==} + '@unocss/nuxt@0.64.0': resolution: {integrity: sha512-etkpifYkiYhDpLiiUmcWXJSQh9I4w7IgGkUB0bx5G8Gx47vLxrQjt1+DHS53Epf/J9wJxOa3JwREYI2TcVj8vg==} + '@unocss/postcss@0.62.4': + resolution: {integrity: sha512-kWdHy7UsSP4bDu8I7sCKeO0VuzvVpNHmn2rifK5gNstUx5dZ1H/SoyXTHx5sKtgfZBRzdNXFu2nZ3PzYGvEFbw==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + '@unocss/postcss@0.64.0': resolution: {integrity: sha512-OMDhAUDEzbb7i+fcYEYNxwdWJLSYklMrFGSC60ADK96UPX/B9S0z1pBz7N34DRPPIzg6shO6NQfDHOaxLelAeg==} engines: {node: '>=14'} peerDependencies: postcss: ^8.4.21 + '@unocss/preset-attributify@0.62.4': + resolution: {integrity: sha512-ei5nNT58GON9iyCGRRiIrphzyQbBIZ9iEqSBhIY0flcfi1uAPUXV32aO2slqJnWWAIwbRSb1GMpwYR8mmfuz8g==} + '@unocss/preset-attributify@0.64.0': resolution: {integrity: sha512-3T1mktq5rAQxHXtdLkjjj1UOjPwy9iGbVUChvxyaGV5oOsj1mvfe1oetxz8HqAVQak8MtvsJzFzvuuQQln/6OA==} + '@unocss/preset-icons@0.62.4': + resolution: {integrity: sha512-n9m2nRTxyiw0sqOwSioO3rro0kaPW0JJzWlzcfdwQ+ZORNR5WyJL298fLXYUFbZG3EOF+zSPg6CMDWudKk/tlA==} + '@unocss/preset-icons@0.64.0': resolution: {integrity: sha512-jhozA4r583agZZpKttdootaWfvQ29lY/kHxNU1Ah2xeRQcVXXEh7M3cG0bo9HSIX9/BgXSk5rWQlqSPIqFl4Lw==} + '@unocss/preset-mini@0.62.4': + resolution: {integrity: sha512-1O+QpQFx7FT61aheAZEYemW5e4AGib8TFGm+rWLudKq2IBNnXHcS5xsq5QvqdC7rp9Dn3lnW5du6ijow5kCBuw==} + '@unocss/preset-mini@0.64.0': resolution: {integrity: sha512-bc7zanalVQUrETJ06eyS7y/lhceRlY8kBG/lRCV/dYmKl4Ho/s57LrpZH0G63OcO6IfWIjwoZHVC8/RHAqnYvQ==} + '@unocss/preset-tagify@0.62.4': + resolution: {integrity: sha512-8b2Kcsvt93xu1JqDqcD3QvvW0L5rqvH7ev3BlNEVx6n8ayBqfB5HEd4ILKr7wSC90re+EnCgnMm7EP2FiQAJkw==} + '@unocss/preset-tagify@0.64.0': resolution: {integrity: sha512-WlRQXYgtVzJpVlZ+itXhrQyvMj6XW1InNIfvAHMorr5BGvMGETLRnuWwYYhGg2YDF/g+/EucU5PQmk9UkurBzg==} + '@unocss/preset-typography@0.62.4': + resolution: {integrity: sha512-ZVh+NbcibMmD6ve8Deub/G+XAFcGPuzE2Fx/tMAfWfYlfyOAtrMxuL+AARMthpRxdE0JOtggXNTrJb0ZhGYl9g==} + '@unocss/preset-typography@0.64.0': resolution: {integrity: sha512-hMKxhHTRUjvwB0gcdWOh6zWWolH9pvIvgB4p2GaFT1vKyFD0wkTZ/7S/Q3OMKJyevSKHyIgKd+PhNGKTx5FuQQ==} + '@unocss/preset-uno@0.62.4': + resolution: {integrity: sha512-2S6+molIz8dH/al0nfkU7i/pMS0oERPr4k9iW80Byt4cKDIhh/0jhZrC83kgZRtCf5hclSBO4oCoMTi1JF7SBw==} + '@unocss/preset-uno@0.64.0': resolution: {integrity: sha512-gUmuL8anty551r/Q2XU5wc0aNZ+te4yydnamXHSUv3EkX6PCphOaiWsQ5f95fj26G8EYH9fLBvxqXurFBPM7og==} + '@unocss/preset-web-fonts@0.62.4': + resolution: {integrity: sha512-kaxgYBVyMdBlErseN8kWLiaS2N5OMlwg5ktAxUlei275fMoY7inQjOwppnjDVveJbN9SP6TcqqFpBIPfUayPkQ==} + '@unocss/preset-web-fonts@0.64.0': resolution: {integrity: sha512-qraIhS0tCFHvdPQnzGTfi/dggwyboWPU8UQn8oLMsmPKogNPsYQfjrtTZs8X6F1KNaPV18c6saaWYvVZ8tXPoA==} + '@unocss/preset-wind@0.62.4': + resolution: {integrity: sha512-YOzfQ11AmAnl1ZkcWLMMxCdezLjRKavLNk38LumUMtcdsa0DAy+1JjTp+KEvVQAnD+Et/ld5X+YcBWJkVy5WFQ==} + '@unocss/preset-wind@0.64.0': resolution: {integrity: sha512-cJbZI4etFrIIQoC1VhRqyEZU5fUaYqOH3uIt5lM3osxBdAvHds7SPjLRbdR612US7JbuPeFhMMRnA1EYoo39sQ==} + '@unocss/reset@0.62.4': + resolution: {integrity: sha512-CtxjeDgN39fY/eZDLIXN4wy7C8W7+SD+41AlzGVU5JwhcXmnb1XoDpOd2lzMxc/Yy3F5dIJt2+MRDj9RnpX9Ew==} + '@unocss/reset@0.64.0': resolution: {integrity: sha512-75SiDtRX/mtg/7GWeoLfDfdWF4z59zF1XesL46FNd2hDZL36a+SZHIKB/J+PPzLyX9irqm3mAETS2PNfynuJpA==} + '@unocss/rule-utils@0.62.4': + resolution: {integrity: sha512-XUwLbLUzL+VSHCJNK5QBHC9RbFehumge1/XJmsRfmh0+oxgJoO1gvEvxi57gYEmdJdMRJHRJZ66se6+cB0Ymvw==} + engines: {node: '>=14'} + '@unocss/rule-utils@0.64.0': resolution: {integrity: sha512-R5b/uspq6XsmpEqhxSzOOePHsS+pdxya+0pkQw7m6thsUxNDL7kVDpBiz2iNX5lnwagvhyhUWYu85a8XmZ8ymw==} engines: {node: '>=14'} + '@unocss/transformer-attributify-jsx@0.62.4': + resolution: {integrity: sha512-z9DDqS2DibDR9gno55diKfAVegeJ9uoyQXQhH3R0KY4YMF49N1fWy/t74gOiHtlPmvjQtDRZYgjgaMCc2w8oWg==} + '@unocss/transformer-attributify-jsx@0.64.0': resolution: {integrity: sha512-/kG7NFmqMCftK5DJUgMUbe9SWRJt20Z55o36aaCkBcEsrTSYBmWYDyIJPZa3TxsjO8H1qDekRVu7CgDxwlxMEQ==} + '@unocss/transformer-compile-class@0.62.4': + resolution: {integrity: sha512-8yadY9T7LToJwSsrmYU3rUKlnDgPGVRvON7z9g1IjUCmFCGx7Gpg84x9KpKUG6eUTshPQFUI0YUHocrYFevAEA==} + '@unocss/transformer-compile-class@0.64.0': resolution: {integrity: sha512-p1LZG2AUsD0FrkCSo1JOsWVQ+sEMcgnVCm6XtCgxBraV3nPFeZUyxmj9yEkt0HhfYkMTvdT155c3rDhbwP8AFw==} + '@unocss/transformer-directives@0.62.4': + resolution: {integrity: sha512-bq9ZDG6/mr6X2mAogAo0PBVrLSLT0900MPqnj/ixadYHc7mRpX+y6bc/1AgWytZIFYSdNzf7XDoquZuwf42Ucg==} + '@unocss/transformer-directives@0.64.0': resolution: {integrity: sha512-+e2bDEQMEsfq4KZ2R+GQNrEv0bL3E1KbXGPQXUiMGitmZzzagDfIBk9VTP3gNhU+hgTaWtjXlReeap1eSmwKGQ==} + '@unocss/transformer-variant-group@0.62.4': + resolution: {integrity: sha512-W1fxMc2Lzxu4E+6JBQEBzK+AwoCQYI+EL2FT2BCUsAno37f3JdnwFFEVscck0epSdmdtidsSLDognyX8h10r8A==} + '@unocss/transformer-variant-group@0.64.0': resolution: {integrity: sha512-c4CN+W8ShBhGIma3KHHcBe7CRljRwZ0f5UamRrUIMs28a2jfa1TlPlr/4Ke5b6icr0mwTGajJEUaPanOK0Fp1A==} + '@unocss/vite@0.62.4': + resolution: {integrity: sha512-JKq3V6bcevYl9X5Jl3p9crArbhzI8JVWQkOxKV2nGLFaqvnc47vMSDxlU4MUdRWp3aQvzDw132tcx27oSbrojw==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + '@unocss/vite@0.64.0': resolution: {integrity: sha512-QrfXlI8YcIaqQc4WRVrLbCho8eEi5pjs1/C8AwnUHGximEDN6MZNUk0htjo4QZ+50IA2b4RrYdz1N3875bJoFg==} peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + '@unocss/webpack@0.62.4': + resolution: {integrity: sha512-hccXqpssqi1DyPJOwyIB3IhYe5SWND2JwTPxVTg8wO9fI1JvEK5DxK8FflJpXVps7QjotCmB/AXp0ezD0SutUg==} + peerDependencies: + webpack: ^4 || ^5 + '@unocss/webpack@0.64.0': resolution: {integrity: sha512-ckESME64McIvV/UA6P6zv+BVALgWeWtyE07WBASNUFOyA9heK+kLGziS4XlxcefwPqQKBFuVSCFt6wNiVfFWXQ==} peerDependencies: @@ -2360,6 +2530,47 @@ packages: '@vueuse/core@11.2.0': resolution: {integrity: sha512-JIUwRcOqOWzcdu1dGlfW04kaJhW3EXnnjJJfLTtddJanymTL7lF1C0+dVVZ/siLfc73mWn+cGP1PE1PKPruRSA==} + '@vueuse/integrations@11.2.0': + resolution: {integrity: sha512-zGXz3dsxNHKwiD9jPMvR3DAxQEOV6VWIEYTGVSB9PNpk4pTWR+pXrHz9gvXWcP2sTk3W2oqqS6KwWDdntUvNVA==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + '@vueuse/metadata@11.2.0': resolution: {integrity: sha512-L0ZmtRmNx+ZW95DmrgD6vn484gSpVeRbgpWevFKXwqqQxW9hnSi2Ppuh2BzMjnbv4aJRiIw8tQatXT9uOB23dQ==} @@ -2691,6 +2902,9 @@ packages: caniuse-lite@1.0.30001679: resolution: {integrity: sha512-j2YqID/YwpLnKzCmBOS4tlZdWprXm3ZmQLBH9ZBXFOhoxLA46fwyBvx6toCBWBmnuwUY/qB3kEU6gFx8qgCroA==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2702,6 +2916,12 @@ packages: change-case@5.4.4: resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + chart.js@4.4.6: resolution: {integrity: sha512-8Y406zevUPbbIBA/HRk33khEmQPk5+cxeflWE/2rx1NJsjVWMPw/9mSP9rxHP5eqi6LNoPBVMfZHxbwLSgldYA==} engines: {pnpm: '>=8'} @@ -2799,6 +3019,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} @@ -3086,6 +3309,10 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} @@ -3105,6 +3332,9 @@ packages: devalue@5.1.1: resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -3586,6 +3816,9 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + focus-trap@7.6.1: + resolution: {integrity: sha512-nB8y4nQl8PshahLpGKZOq1sb0xrMVFSn6at7u/qOsBZTlZRzaapISGENcB6mOkoezbClZyiMwEF/dGY8AZ00rA==} + follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} @@ -3800,6 +4033,12 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hast-util-to-html@9.0.3: + resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -3818,6 +4057,9 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -4349,6 +4591,9 @@ packages: engines: {node: '>= 12'} hasBin: true + mdast-util-to-hast@13.2.0: + resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} @@ -4365,6 +4610,21 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -4707,6 +4967,9 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + oniguruma-to-js@0.4.3: + resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} + open@10.1.0: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} @@ -5121,6 +5384,9 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} @@ -5222,6 +5488,9 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regex@4.4.0: + resolution: {integrity: sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==} + regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -5407,6 +5676,9 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + shiki@1.22.0: + resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} + shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} @@ -5456,6 +5728,10 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} + sirv@3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -5496,6 +5772,9 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -5512,6 +5791,9 @@ packages: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} + splitpanes@3.1.5: + resolution: {integrity: sha512-r3Mq2ITFQ5a2VXLOy4/Sb2Ptp7OfEO8YIbhVJqJXoFc9hc5nTXXkCvtVDjIGbvC0vdE7tse+xTM9BMjsszP6bw==} + standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} @@ -5558,6 +5840,9 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -5650,6 +5935,9 @@ packages: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} engines: {node: '>=18'} + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -5702,6 +5990,9 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + third-party-capital@2.3.0: + resolution: {integrity: sha512-p4rGOF4JCkI18HH3a1Vfd89Mg37TLlAsGmePBt20MA52frviYSBE6ToGOmTpqRC4EIlS5/4Owv6TpegFJUSkOg==} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -5755,6 +6046,9 @@ packages: tree-sitter@0.20.4: resolution: {integrity: sha512-rjfR5dc4knG3jnJNN/giJ9WOoN1zL/kZyrS0ILh+eqq8RNcIbiXA63JsMEgluug0aNvfQvK4BfCErN1vIzvKog==} + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + ts-api-utils@1.4.0: resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} engines: {node: '>=16'} @@ -5870,6 +6164,9 @@ packages: unhead@1.11.11: resolution: {integrity: sha512-98tM2R8OWJhvS6uqTewkfIrsPqFU/VwnKpU2tVZ+jPXSWgWSLmM3K2Y2v5AEM4bZjmC/XH8pLVGzbqB7xzFI/Q==} + unhead@1.11.9: + resolution: {integrity: sha512-EwEGMjbXVVn2O5vNfXUHiAjHWFHngPjkAx0yVZZsrTgqzs7+A/YvJ90TLvBna874+HCKZWtufo7QAI7luU2CgA==} + unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} @@ -5877,6 +6174,21 @@ packages: unimport@3.13.1: resolution: {integrity: sha512-nNrVzcs93yrZQOW77qnyOVHtb68LegvhYFwxFMfuuWScmwQmyVCG/NBuN8tYsaGzgQUVYv34E/af+Cc9u4og4A==} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universal-cookie@7.2.2: resolution: {integrity: sha512-fMiOcS3TmzP2x5QV26pIH3mvhexLIT0HmPa3V7Q7knRfT9HG6kTwq02HZGLPw0sAOXrAmotElGRvTLCMbJsvxQ==} @@ -5884,6 +6196,18 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unocss@0.62.4: + resolution: {integrity: sha512-SaGbxXQkk8GDPeJpWsBCZ8a23Knu4ixVTt6pvcQWKjOCGTd9XBd+vLZzN2WwdwgBPVwmMmx5wp+/gPHKFNOmIw==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 0.62.4 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + unocss@0.64.0: resolution: {integrity: sha512-wiEFRjGXSogzf/4+KICXjFDgSGloSCV1Ka2Dct/8Z8U+iwRqeVpHGVQcGjBFg9Uh0DH1fSVBbis2aPuIkT0nEA==} engines: {node: '>=14'} @@ -6043,9 +6367,28 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + v-lazy-show@0.2.4: + resolution: {integrity: sha512-Lx9Str2i+HTh+zGzs9O3YyhGAZOAAfU+6MUUPcQPPiPxQO1sHBEv9sH3MO9bPc4T09gsjsS2+sbaCWQ1MdhpJQ==} + peerDependencies: + '@vue/compiler-core': ^3.3 + + valibot@0.42.1: + resolution: {integrity: sha512-3keXV29Ar5b//Hqi4MbSdV7lfVp6zuYLZuA9V1PvQUsXqogr+u5lvLPLk3A4f74VUXDnf/JfWMN6sB+koJ/FFw==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + vite-hot-client@0.2.3: resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==} peerDependencies: @@ -6429,6 +6772,9 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + snapshots: '@ampproject/remapping@2.3.0': @@ -6906,10 +7252,26 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} + '@iconify-json/carbon@1.2.4': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/logos@1.2.3': + dependencies: + '@iconify/types': 2.0.0 + '@iconify-json/mdi@1.2.1': dependencies: '@iconify/types': 2.0.0 + '@iconify-json/ri@1.2.3': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/tabler@1.2.7': + dependencies: + '@iconify/types': 2.0.0 + '@iconify/types@2.0.0': {} '@iconify/utils@2.1.33': @@ -7105,6 +7467,54 @@ snapshots: - supports-color - webpack-sources + '@nuxt/devtools-ui-kit@1.6.0(@nuxt/devtools@1.6.0(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3))(@unocss/webpack@0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.12)(axios@1.7.7(debug@4.3.7))(change-case@5.4.4)(jwt-decode@4.0.0)(magicast@0.3.5)(nprogress@0.2.0)(nuxt@3.14.159(@parcel/watcher@2.5.0)(@types/node@22.9.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.25.0)(sass@1.80.6)(terser@5.36.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue-tsc@2.1.10(typescript@5.6.3))(webpack-sources@3.2.3))(postcss@8.4.47)(rollup@4.25.0)(sortablejs@1.14.0)(universal-cookie@7.2.2)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.23.1))': + dependencies: + '@iconify-json/carbon': 1.2.4 + '@iconify-json/logos': 1.2.3 + '@iconify-json/ri': 1.2.3 + '@iconify-json/tabler': 1.2.7 + '@nuxt/devtools': 1.6.0(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3) + '@nuxt/devtools-kit': 1.6.0(magicast@0.3.5)(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(webpack-sources@3.2.3) + '@nuxt/kit': 3.14.159(magicast@0.3.5)(rollup@4.25.0)(webpack-sources@3.2.3) + '@unocss/core': 0.62.4 + '@unocss/nuxt': 0.62.4(magicast@0.3.5)(postcss@8.4.47)(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.23.1)) + '@unocss/preset-attributify': 0.62.4 + '@unocss/preset-icons': 0.62.4 + '@unocss/preset-mini': 0.62.4 + '@unocss/reset': 0.62.4 + '@vueuse/core': 11.2.0(vue@3.5.12(typescript@5.6.3)) + '@vueuse/integrations': 11.2.0(axios@1.7.7(debug@4.3.7))(change-case@5.4.4)(focus-trap@7.6.1)(jwt-decode@4.0.0)(nprogress@0.2.0)(sortablejs@1.14.0)(universal-cookie@7.2.2)(vue@3.5.12(typescript@5.6.3)) + '@vueuse/nuxt': 11.2.0(magicast@0.3.5)(nuxt@3.14.159(@parcel/watcher@2.5.0)(@types/node@22.9.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.25.0)(sass@1.80.6)(terser@5.36.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue-tsc@2.1.10(typescript@5.6.3))(webpack-sources@3.2.3))(rollup@4.25.0)(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3) + defu: 6.1.4 + focus-trap: 7.6.1 + splitpanes: 3.1.5 + unocss: 0.62.4(@unocss/webpack@0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.47)(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)) + v-lazy-show: 0.2.4(@vue/compiler-core@3.5.12) + transitivePeerDependencies: + - '@unocss/webpack' + - '@vue/compiler-core' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - jwt-decode + - magicast + - nprogress + - nuxt + - postcss + - qrcode + - rollup + - sortablejs + - supports-color + - universal-cookie + - vite + - vue + - webpack + - webpack-sources + '@nuxt/devtools-wizard@1.6.0': dependencies: consola: 3.2.3 @@ -7215,6 +7625,75 @@ snapshots: - supports-color - webpack-sources + '@nuxt/scripts@0.9.5(@nuxt/devtools@1.6.0(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3))(@unocss/webpack@0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.12)(axios@1.7.7(debug@4.3.7))(change-case@5.4.4)(ioredis@5.4.1)(jwt-decode@4.0.0)(magicast@0.3.5)(nprogress@0.2.0)(nuxt@3.14.159(@parcel/watcher@2.5.0)(@types/node@22.9.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.25.0)(sass@1.80.6)(terser@5.36.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue-tsc@2.1.10(typescript@5.6.3))(webpack-sources@3.2.3))(postcss@8.4.47)(rollup@4.25.0)(sortablejs@1.14.0)(typescript@5.6.3)(universal-cookie@7.2.2)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.23.1))': + dependencies: + '@nuxt/devtools-kit': 1.6.0(magicast@0.3.5)(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(webpack-sources@3.2.3) + '@nuxt/devtools-ui-kit': 1.6.0(@nuxt/devtools@1.6.0(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3))(@unocss/webpack@0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.12)(axios@1.7.7(debug@4.3.7))(change-case@5.4.4)(jwt-decode@4.0.0)(magicast@0.3.5)(nprogress@0.2.0)(nuxt@3.14.159(@parcel/watcher@2.5.0)(@types/node@22.9.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.25.0)(sass@1.80.6)(terser@5.36.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue-tsc@2.1.10(typescript@5.6.3))(webpack-sources@3.2.3))(postcss@8.4.47)(rollup@4.25.0)(sortablejs@1.14.0)(universal-cookie@7.2.2)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.23.1)) + '@nuxt/kit': 3.14.159(magicast@0.3.5)(rollup@4.25.0)(webpack-sources@3.2.3) + '@stripe/stripe-js': 4.9.0 + '@types/google.maps': 3.58.1 + '@types/vimeo__player': 2.18.3 + '@types/youtube': 0.1.0 + '@unhead/vue': 1.11.9(vue@3.5.12(typescript@5.6.3)) + '@vueuse/core': 11.2.0(vue@3.5.12(typescript@5.6.3)) + consola: 3.2.3 + defu: 6.1.4 + h3: 1.13.0 + magic-string: 0.30.12 + mlly: 1.7.2 + ofetch: 1.4.1 + ohash: 1.1.4 + pathe: 1.1.2 + pkg-types: 1.2.1 + semver: 7.6.3 + shiki: 1.22.0 + sirv: 3.0.0 + std-env: 3.8.0 + third-party-capital: 2.3.0 + ufo: 1.5.4 + unimport: 3.13.1(rollup@4.25.0)(webpack-sources@3.2.3) + unplugin: 1.15.0(webpack-sources@3.2.3) + unstorage: 1.13.1(ioredis@5.4.1) + valibot: 0.42.1(typescript@5.6.3) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@nuxt/devtools' + - '@planetscale/database' + - '@unocss/webpack' + - '@upstash/redis' + - '@vercel/kv' + - '@vue/compiler-core' + - '@vue/composition-api' + - async-validator + - axios + - change-case + - drauu + - fuse.js + - idb-keyval + - ioredis + - jwt-decode + - magicast + - nprogress + - nuxt + - postcss + - qrcode + - rollup + - sortablejs + - supports-color + - typescript + - universal-cookie + - vite + - vue + - webpack + - webpack-sources + '@nuxt/telemetry@2.6.0(magicast@0.3.5)(rollup@4.25.0)(webpack-sources@3.2.3)': dependencies: '@nuxt/kit': 3.14.159(magicast@0.3.5)(rollup@4.25.0)(webpack-sources@3.2.3) @@ -7367,6 +7846,19 @@ snapshots: - vue-i18n-bridge - webpack-sources + '@nuxtjs/turnstile@0.9.11(@nuxt/scripts@0.9.5(@nuxt/devtools@1.6.0(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3))(@unocss/webpack@0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.12)(axios@1.7.7(debug@4.3.7))(change-case@5.4.4)(ioredis@5.4.1)(jwt-decode@4.0.0)(magicast@0.3.5)(nprogress@0.2.0)(nuxt@3.14.159(@parcel/watcher@2.5.0)(@types/node@22.9.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.25.0)(sass@1.80.6)(terser@5.36.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue-tsc@2.1.10(typescript@5.6.3))(webpack-sources@3.2.3))(postcss@8.4.47)(rollup@4.25.0)(sortablejs@1.14.0)(typescript@5.6.3)(universal-cookie@7.2.2)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.23.1)))(magicast@0.3.5)(rollup@4.25.0)(webpack-sources@3.2.3)': + dependencies: + '@nuxt/kit': 3.14.159(magicast@0.3.5)(rollup@4.25.0)(webpack-sources@3.2.3) + '@nuxt/scripts': 0.9.5(@nuxt/devtools@1.6.0(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3))(@unocss/webpack@0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(@vue/compiler-core@3.5.12)(axios@1.7.7(debug@4.3.7))(change-case@5.4.4)(ioredis@5.4.1)(jwt-decode@4.0.0)(magicast@0.3.5)(nprogress@0.2.0)(nuxt@3.14.159(@parcel/watcher@2.5.0)(@types/node@22.9.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.25.0)(sass@1.80.6)(terser@5.36.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue-tsc@2.1.10(typescript@5.6.3))(webpack-sources@3.2.3))(postcss@8.4.47)(rollup@4.25.0)(sortablejs@1.14.0)(typescript@5.6.3)(universal-cookie@7.2.2)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.23.1)) + '@types/cloudflare-turnstile': 0.2.2 + defu: 6.1.4 + pathe: 1.1.2 + transitivePeerDependencies: + - magicast + - rollup + - supports-color + - webpack-sources + '@opentelemetry/api-logs@0.52.1': dependencies: '@opentelemetry/api': 1.9.0 @@ -8153,8 +8645,37 @@ snapshots: optionalDependencies: pinia: 2.2.6(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) + '@shikijs/core@1.22.0': + dependencies: + '@shikijs/engine-javascript': 1.22.0 + '@shikijs/engine-oniguruma': 1.22.0 + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.3 + + '@shikijs/engine-javascript@1.22.0': + dependencies: + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 + oniguruma-to-js: 0.4.3 + + '@shikijs/engine-oniguruma@1.22.0': + dependencies: + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 + + '@shikijs/types@1.22.0': + dependencies: + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@9.3.0': {} + '@sindresorhus/merge-streams@2.3.0': {} + '@stripe/stripe-js@4.9.0': {} + '@swagger-api/apidom-ast@1.0.0-alpha.10': dependencies: '@babel/runtime-corejs3': 7.26.0 @@ -8502,6 +9023,8 @@ snapshots: dependencies: bun-types: 1.1.34 + '@types/cloudflare-turnstile@0.2.2': {} + '@types/codemirror@5.60.15': dependencies: '@types/tern': 0.23.9 @@ -8529,6 +9052,12 @@ snapshots: '@types/estree@1.0.6': {} + '@types/google.maps@3.58.1': {} + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/http-proxy@1.17.15': dependencies: '@types/node': 22.9.0 @@ -8564,6 +9093,10 @@ snapshots: '@types/marked@4.3.2': {} + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + '@types/mdurl@2.0.0': {} '@types/ms@0.7.34': {} @@ -8618,12 +9151,18 @@ snapshots: '@types/trusted-types@2.0.7': {} + '@types/unist@3.0.3': {} + + '@types/vimeo__player@2.18.3': {} + '@types/web-bluetooth@0.0.20': {} '@types/ws@8.5.13': dependencies: '@types/node': 20.12.14 + '@types/youtube@0.1.0': {} + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.6.3))(eslint@8.57.0)(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -8798,15 +9337,29 @@ snapshots: '@unhead/schema': 1.11.11 '@unhead/shared': 1.11.11 + '@unhead/dom@1.11.9': + dependencies: + '@unhead/schema': 1.11.9 + '@unhead/shared': 1.11.9 + '@unhead/schema@1.11.11': dependencies: hookable: 5.5.3 zhead: 2.2.4 + '@unhead/schema@1.11.9': + dependencies: + hookable: 5.5.3 + zhead: 2.2.4 + '@unhead/shared@1.11.11': dependencies: '@unhead/schema': 1.11.11 + '@unhead/shared@1.11.9': + dependencies: + '@unhead/schema': 1.11.9 + '@unhead/ssr@1.11.11': dependencies: '@unhead/schema': 1.11.11 @@ -8821,6 +9374,26 @@ snapshots: unhead: 1.11.11 vue: 3.5.12(typescript@5.6.3) + '@unhead/vue@1.11.9(vue@3.5.12(typescript@5.6.3))': + dependencies: + '@unhead/schema': 1.11.9 + '@unhead/shared': 1.11.9 + defu: 6.1.4 + hookable: 5.5.3 + unhead: 1.11.9 + vue: 3.5.12(typescript@5.6.3) + + '@unocss/astro@0.62.4(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/reset': 0.62.4 + '@unocss/vite': 0.62.4(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)) + optionalDependencies: + vite: 5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0) + transitivePeerDependencies: + - rollup + - supports-color + '@unocss/astro@0.64.0(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))': dependencies: '@unocss/core': 0.64.0 @@ -8833,6 +9406,25 @@ snapshots: - supports-color - vue + '@unocss/cli@0.62.4(rollup@4.25.0)': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.3(rollup@4.25.0) + '@unocss/config': 0.62.4 + '@unocss/core': 0.62.4 + '@unocss/preset-uno': 0.62.4 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.2.3 + magic-string: 0.30.12 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + tinyglobby: 0.2.10 + transitivePeerDependencies: + - rollup + - supports-color + '@unocss/cli@0.64.0(rollup@4.25.0)': dependencies: '@ampproject/remapping': 2.3.0 @@ -8852,6 +9444,13 @@ snapshots: - rollup - supports-color + '@unocss/config@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + unconfig: 0.5.5 + transitivePeerDependencies: + - supports-color + '@unocss/config@0.64.0': dependencies: '@unocss/core': 0.64.0 @@ -8859,12 +9458,25 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/core@0.62.4': {} + '@unocss/core@0.64.0': {} + '@unocss/extractor-arbitrary-variants@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/extractor-arbitrary-variants@0.64.0': dependencies: '@unocss/core': 0.64.0 + '@unocss/inspector@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/rule-utils': 0.62.4 + gzip-size: 6.0.0 + sirv: 2.0.4 + '@unocss/inspector@0.64.0(vue@3.5.12(typescript@5.6.3))': dependencies: '@unocss/core': 0.64.0 @@ -8875,6 +9487,31 @@ snapshots: transitivePeerDependencies: - vue + '@unocss/nuxt@0.62.4(magicast@0.3.5)(postcss@8.4.47)(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.23.1))': + dependencies: + '@nuxt/kit': 3.14.159(magicast@0.3.5)(rollup@4.25.0)(webpack-sources@3.2.3) + '@unocss/config': 0.62.4 + '@unocss/core': 0.62.4 + '@unocss/preset-attributify': 0.62.4 + '@unocss/preset-icons': 0.62.4 + '@unocss/preset-tagify': 0.62.4 + '@unocss/preset-typography': 0.62.4 + '@unocss/preset-uno': 0.62.4 + '@unocss/preset-web-fonts': 0.62.4 + '@unocss/preset-wind': 0.62.4 + '@unocss/reset': 0.62.4 + '@unocss/vite': 0.62.4(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)) + '@unocss/webpack': 0.62.4(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)) + unocss: 0.62.4(@unocss/webpack@0.62.4(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.47)(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)) + transitivePeerDependencies: + - magicast + - postcss + - rollup + - supports-color + - vite + - webpack + - webpack-sources + '@unocss/nuxt@0.64.0(magicast@0.3.5)(postcss@8.4.47)(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)(webpack@5.94.0(esbuild@0.23.1))': dependencies: '@nuxt/kit': 3.14.159(magicast@0.3.5)(rollup@4.25.0)(webpack-sources@3.2.3) @@ -8901,6 +9538,17 @@ snapshots: - webpack - webpack-sources + '@unocss/postcss@0.62.4(postcss@8.4.47)': + dependencies: + '@unocss/config': 0.62.4 + '@unocss/core': 0.62.4 + '@unocss/rule-utils': 0.62.4 + css-tree: 2.3.1 + postcss: 8.4.47 + tinyglobby: 0.2.10 + transitivePeerDependencies: + - supports-color + '@unocss/postcss@0.64.0(postcss@8.4.47)': dependencies: '@unocss/config': 0.64.0 @@ -8912,10 +9560,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/preset-attributify@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/preset-attributify@0.64.0': dependencies: '@unocss/core': 0.64.0 + '@unocss/preset-icons@0.62.4': + dependencies: + '@iconify/utils': 2.1.33 + '@unocss/core': 0.62.4 + ofetch: 1.4.1 + transitivePeerDependencies: + - supports-color + '@unocss/preset-icons@0.64.0': dependencies: '@iconify/utils': 2.1.33 @@ -8924,21 +9584,43 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/preset-mini@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/extractor-arbitrary-variants': 0.62.4 + '@unocss/rule-utils': 0.62.4 + '@unocss/preset-mini@0.64.0': dependencies: '@unocss/core': 0.64.0 '@unocss/extractor-arbitrary-variants': 0.64.0 '@unocss/rule-utils': 0.64.0 + '@unocss/preset-tagify@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/preset-tagify@0.64.0': dependencies: '@unocss/core': 0.64.0 + '@unocss/preset-typography@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/preset-mini': 0.62.4 + '@unocss/preset-typography@0.64.0': dependencies: '@unocss/core': 0.64.0 '@unocss/preset-mini': 0.64.0 + '@unocss/preset-uno@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/preset-mini': 0.62.4 + '@unocss/preset-wind': 0.62.4 + '@unocss/rule-utils': 0.62.4 + '@unocss/preset-uno@0.64.0': dependencies: '@unocss/core': 0.64.0 @@ -8946,42 +9628,93 @@ snapshots: '@unocss/preset-wind': 0.64.0 '@unocss/rule-utils': 0.64.0 + '@unocss/preset-web-fonts@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + ofetch: 1.4.1 + '@unocss/preset-web-fonts@0.64.0': dependencies: '@unocss/core': 0.64.0 ofetch: 1.4.1 + '@unocss/preset-wind@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/preset-mini': 0.62.4 + '@unocss/rule-utils': 0.62.4 + '@unocss/preset-wind@0.64.0': dependencies: '@unocss/core': 0.64.0 '@unocss/preset-mini': 0.64.0 '@unocss/rule-utils': 0.64.0 + '@unocss/reset@0.62.4': {} + '@unocss/reset@0.64.0': {} + '@unocss/rule-utils@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + magic-string: 0.30.12 + '@unocss/rule-utils@0.64.0': dependencies: '@unocss/core': 0.64.0 magic-string: 0.30.12 + '@unocss/transformer-attributify-jsx@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/transformer-attributify-jsx@0.64.0': dependencies: '@unocss/core': 0.64.0 + '@unocss/transformer-compile-class@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/transformer-compile-class@0.64.0': dependencies: '@unocss/core': 0.64.0 + '@unocss/transformer-directives@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/rule-utils': 0.62.4 + css-tree: 2.3.1 + '@unocss/transformer-directives@0.64.0': dependencies: '@unocss/core': 0.64.0 '@unocss/rule-utils': 0.64.0 css-tree: 3.0.1 + '@unocss/transformer-variant-group@0.62.4': + dependencies: + '@unocss/core': 0.62.4 + '@unocss/transformer-variant-group@0.64.0': dependencies: '@unocss/core': 0.64.0 + '@unocss/vite@0.62.4(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.3(rollup@4.25.0) + '@unocss/config': 0.62.4 + '@unocss/core': 0.62.4 + '@unocss/inspector': 0.62.4 + chokidar: 3.6.0 + magic-string: 0.30.12 + tinyglobby: 0.2.10 + vite: 5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0) + transitivePeerDependencies: + - rollup + - supports-color + '@unocss/vite@0.64.0(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3))': dependencies: '@ampproject/remapping': 2.3.0 @@ -8998,6 +9731,22 @@ snapshots: - supports-color - vue + '@unocss/webpack@0.62.4(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@rollup/pluginutils': 5.1.3(rollup@4.25.0) + '@unocss/config': 0.62.4 + '@unocss/core': 0.62.4 + chokidar: 3.6.0 + magic-string: 0.30.12 + tinyglobby: 0.2.10 + unplugin: 1.15.0(webpack-sources@3.2.3) + webpack: 5.94.0(esbuild@0.23.1) + webpack-sources: 3.2.3 + transitivePeerDependencies: + - rollup + - supports-color + '@unocss/webpack@0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1))': dependencies: '@ampproject/remapping': 2.3.0 @@ -9243,6 +9992,23 @@ snapshots: - '@vue/composition-api' - vue + '@vueuse/integrations@11.2.0(axios@1.7.7(debug@4.3.7))(change-case@5.4.4)(focus-trap@7.6.1)(jwt-decode@4.0.0)(nprogress@0.2.0)(sortablejs@1.14.0)(universal-cookie@7.2.2)(vue@3.5.12(typescript@5.6.3))': + dependencies: + '@vueuse/core': 11.2.0(vue@3.5.12(typescript@5.6.3)) + '@vueuse/shared': 11.2.0(vue@3.5.12(typescript@5.6.3)) + vue-demi: 0.14.10(vue@3.5.12(typescript@5.6.3)) + optionalDependencies: + axios: 1.7.7(debug@4.3.7) + change-case: 5.4.4 + focus-trap: 7.6.1 + jwt-decode: 4.0.0 + nprogress: 0.2.0 + sortablejs: 1.14.0 + universal-cookie: 7.2.2 + transitivePeerDependencies: + - '@vue/composition-api' + - vue + '@vueuse/metadata@11.2.0': {} '@vueuse/nuxt@11.2.0(magicast@0.3.5)(nuxt@3.14.159(@parcel/watcher@2.5.0)(@types/node@22.9.0)(eslint@8.57.0)(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.25.0)(sass@1.80.6)(terser@5.36.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue-tsc@2.1.10(typescript@5.6.3))(webpack-sources@3.2.3))(rollup@4.25.0)(vue@3.5.12(typescript@5.6.3))(webpack-sources@3.2.3)': @@ -9660,6 +10426,8 @@ snapshots: caniuse-lite@1.0.30001679: {} + ccount@2.0.1: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -9669,6 +10437,10 @@ snapshots: change-case@5.4.4: {} + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + chart.js@4.4.6: dependencies: '@kurkle/color': 0.3.2 @@ -9761,6 +10533,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} + commander@12.1.0: {} commander@2.20.3: {} @@ -10016,6 +10790,8 @@ snapshots: depd@2.0.0: {} + dequal@2.0.3: {} + destr@2.0.3: {} destroy@1.2.0: {} @@ -10026,6 +10802,10 @@ snapshots: devalue@5.1.1: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + didyoumean@1.2.2: {} diff-match-patch@1.0.5: {} @@ -10744,6 +11524,10 @@ snapshots: flatted@3.3.1: {} + focus-trap@7.6.1: + dependencies: + tabbable: 6.2.0 + follow-redirects@1.15.9(debug@4.3.7): optionalDependencies: debug: 4.3.7(supports-color@9.4.0) @@ -10986,6 +11770,24 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-to-html@9.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.4 + he@1.2.0: {} hookable@5.5.3: {} @@ -10998,6 +11800,8 @@ snapshots: html-tags@3.3.1: {} + html-void-elements@3.0.0: {} + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -11548,6 +12352,18 @@ snapshots: marked@4.3.0: {} + mdast-util-to-hast@13.2.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + mdn-data@2.0.28: {} mdn-data@2.0.30: {} @@ -11558,6 +12374,23 @@ snapshots: merge2@1.4.1: {} + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-encode@2.0.0: {} + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@2.0.0: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -12057,6 +12890,10 @@ snapshots: dependencies: mimic-function: 5.0.1 + oniguruma-to-js@0.4.3: + dependencies: + regex: 4.4.0 + open@10.1.0: dependencies: default-browser: 5.2.1 @@ -12444,6 +13281,8 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 + property-information@6.5.0: {} + protocols@2.0.1: {} proxy-from-env@1.1.0: {} @@ -12566,6 +13405,8 @@ snapshots: regenerator-runtime@0.14.1: {} + regex@4.4.0: {} + regexp-tree@0.1.27: {} regexp.prototype.flags@1.5.3: @@ -12779,6 +13620,15 @@ snapshots: shell-quote@1.8.1: {} + shiki@1.22.0: + dependencies: + '@shikijs/core': 1.22.0 + '@shikijs/engine-javascript': 1.22.0 + '@shikijs/engine-oniguruma': 1.22.0 + '@shikijs/types': 1.22.0 + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + shimmer@1.2.1: {} short-unique-id@5.2.0: {} @@ -12844,6 +13694,12 @@ snapshots: mrmime: 2.0.0 totalist: 3.0.1 + sirv@3.0.0: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + sisteransi@1.0.5: {} slash@3.0.0: {} @@ -12875,6 +13731,8 @@ snapshots: source-map@0.7.4: {} + space-separated-tokens@2.0.2: {} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -12891,6 +13749,8 @@ snapshots: speakingurl@14.0.1: {} + splitpanes@3.1.5: {} + standard-as-callback@2.1.0: {} statuses@2.0.1: {} @@ -12952,6 +13812,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -13083,6 +13948,8 @@ snapshots: system-architecture@0.1.0: {} + tabbable@6.2.0: {} + tapable@2.2.1: {} tar-fs@2.1.1: @@ -13147,6 +14014,10 @@ snapshots: dependencies: any-promise: 1.3.0 + third-party-capital@2.3.0: + dependencies: + semver: 7.6.3 + tiny-invariant@1.3.3: {} tinyexec@0.3.1: {} @@ -13198,6 +14069,8 @@ snapshots: prebuild-install: 7.1.2 optional: true + trim-lines@3.0.1: {} + ts-api-utils@1.4.0(typescript@5.6.3): dependencies: typescript: 5.6.3 @@ -13334,6 +14207,13 @@ snapshots: '@unhead/shared': 1.11.11 hookable: 5.5.3 + unhead@1.11.9: + dependencies: + '@unhead/dom': 1.11.9 + '@unhead/schema': 1.11.9 + '@unhead/shared': 1.11.9 + hookable: 5.5.3 + unicorn-magic@0.1.0: {} unimport@3.13.1(rollup@4.25.0)(webpack-sources@3.2.3): @@ -13355,6 +14235,29 @@ snapshots: - rollup - webpack-sources + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universal-cookie@7.2.2: dependencies: '@types/cookie': 0.6.0 @@ -13362,6 +14265,60 @@ snapshots: universalify@2.0.1: {} + unocss@0.62.4(@unocss/webpack@0.62.4(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.47)(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)): + dependencies: + '@unocss/astro': 0.62.4(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)) + '@unocss/cli': 0.62.4(rollup@4.25.0) + '@unocss/core': 0.62.4 + '@unocss/postcss': 0.62.4(postcss@8.4.47) + '@unocss/preset-attributify': 0.62.4 + '@unocss/preset-icons': 0.62.4 + '@unocss/preset-mini': 0.62.4 + '@unocss/preset-tagify': 0.62.4 + '@unocss/preset-typography': 0.62.4 + '@unocss/preset-uno': 0.62.4 + '@unocss/preset-web-fonts': 0.62.4 + '@unocss/preset-wind': 0.62.4 + '@unocss/transformer-attributify-jsx': 0.62.4 + '@unocss/transformer-compile-class': 0.62.4 + '@unocss/transformer-directives': 0.62.4 + '@unocss/transformer-variant-group': 0.62.4 + '@unocss/vite': 0.62.4(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)) + optionalDependencies: + '@unocss/webpack': 0.62.4(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)) + vite: 5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + + unocss@0.62.4(@unocss/webpack@0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.47)(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)): + dependencies: + '@unocss/astro': 0.62.4(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)) + '@unocss/cli': 0.62.4(rollup@4.25.0) + '@unocss/core': 0.62.4 + '@unocss/postcss': 0.62.4(postcss@8.4.47) + '@unocss/preset-attributify': 0.62.4 + '@unocss/preset-icons': 0.62.4 + '@unocss/preset-mini': 0.62.4 + '@unocss/preset-tagify': 0.62.4 + '@unocss/preset-typography': 0.62.4 + '@unocss/preset-uno': 0.62.4 + '@unocss/preset-web-fonts': 0.62.4 + '@unocss/preset-wind': 0.62.4 + '@unocss/transformer-attributify-jsx': 0.62.4 + '@unocss/transformer-compile-class': 0.62.4 + '@unocss/transformer-directives': 0.62.4 + '@unocss/transformer-variant-group': 0.62.4 + '@unocss/vite': 0.62.4(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)) + optionalDependencies: + '@unocss/webpack': 0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)) + vite: 5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0) + transitivePeerDependencies: + - postcss + - rollup + - supports-color + unocss@0.64.0(@unocss/webpack@0.64.0(rollup@4.25.0)(webpack@5.94.0(esbuild@0.23.1)))(postcss@8.4.47)(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)): dependencies: '@unocss/astro': 0.64.0(rollup@4.25.0)(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0))(vue@3.5.12(typescript@5.6.3)) @@ -13544,11 +14501,29 @@ snapshots: util-deprecate@1.0.2: {} + v-lazy-show@0.2.4(@vue/compiler-core@3.5.12): + dependencies: + '@vue/compiler-core': 3.5.12 + + valibot@0.42.1(typescript@5.6.3): + optionalDependencies: + typescript: 5.6.3 + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + vite-hot-client@0.2.3(vite@5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0)): dependencies: vite: 5.4.10(@types/node@22.9.0)(sass@1.80.6)(terser@5.36.0) @@ -13926,3 +14901,5 @@ snapshots: archiver-utils: 5.0.2 compress-commons: 6.0.2 readable-stream: 4.5.2 + + zwitch@2.0.4: {} diff --git a/frontend/src/pages/auth/signup.vue b/frontend/src/pages/auth/signup.vue index 83af0457..d7975758 100644 --- a/frontend/src/pages/auth/signup.vue +++ b/frontend/src/pages/auth/signup.vue @@ -8,8 +8,11 @@ interface SignupForm { email?: string; password?: string; tos?: boolean; + captcha?: string; } +const config = useRuntimeConfig(); + const done = ref(false); const notification = useNotificationStore(); @@ -90,6 +93,7 @@ useSeo(computed(() => ({ title: "Sign up", route }))); +
{{ errorMessage }}
diff --git a/frontend/src/pages/privacy.vue b/frontend/src/pages/privacy.vue index 690742d2..1f9fb5e6 100644 --- a/frontend/src/pages/privacy.vue +++ b/frontend/src/pages/privacy.vue @@ -100,6 +100,11 @@ site. We strongly advise You to review the Privacy Policy of every site You visi We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services. +Cloudflare +---------- + +This Website is protected by various Cloudflare technologies. You can view their Privacy Policy here: https://www.cloudflare.com/privacypolicy/ + Changes to this Privacy Policy ------------------------------