From 157b9e5051de043eef7be06af2d08ae0b971a30d Mon Sep 17 00:00:00 2001 From: Alejandro Akbal <37181533+AlejandroAkbal@users.noreply.github.com> Date: Wed, 6 Mar 2024 08:30:47 +0000 Subject: [PATCH 01/53] chore: bump dialog --- components/layout/DialogManager.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/layout/DialogManager.vue b/components/layout/DialogManager.vue index 43a13130..046ebe1b 100644 --- a/components/layout/DialogManager.vue +++ b/components/layout/DialogManager.vue @@ -11,8 +11,8 @@ return false } - // Show after 2 times - if (timesTheAppHasBeenOpened.value < 2) { + // Show after 3 times + if (timesTheAppHasBeenOpened.value < 3) { return false } @@ -33,8 +33,8 @@ return false } - // Show after 5 times - if (timesTheAppHasBeenOpened.value < 5) { + // Show after 6 times + if (timesTheAppHasBeenOpened.value < 6) { return false } From 22890c0cfd66b41fe5a99db97f98fa3509bd44cb Mon Sep 17 00:00:00 2001 From: Alejandro Akbal <37181533+AlejandroAkbal@users.noreply.github.com> Date: Wed, 6 Mar 2024 09:16:48 +0000 Subject: [PATCH 02/53] fix: add nofollow to external links --- components/layout/FeedbackButton.vue | 1 + components/layout/navigation/Sidebar.vue | 2 ++ components/pages/home/FeaturedDiscount.vue | 1 + components/pages/posts/PromotedContent.vue | 1 + components/shared/ContentContainer.vue | 1 + pages/premium/dashboard.vue | 2 ++ pages/premium/index.vue | 3 +++ pages/premium/sign-in.vue | 1 + 8 files changed, 12 insertions(+) diff --git a/components/layout/FeedbackButton.vue b/components/layout/FeedbackButton.vue index 1104418d..1842fa6f 100644 --- a/components/layout/FeedbackButton.vue +++ b/components/layout/FeedbackButton.vue @@ -10,6 +10,7 @@ style="writing-mode: vertical-lr; transform: rotate(180deg)" target="_blank" to="https://forms.gle/oHukbtLHdot6CuB98" + rel='nofollow noopener noreferrer' > Feedback diff --git a/components/layout/navigation/Sidebar.vue b/components/layout/navigation/Sidebar.vue index 20487f17..4b0aba09 100644 --- a/components/layout/navigation/Sidebar.vue +++ b/components/layout/navigation/Sidebar.vue @@ -145,6 +145,7 @@ Get 20% Off diff --git a/components/pages/posts/PromotedContent.vue b/components/pages/posts/PromotedContent.vue index 6d9f2f83..fb40674a 100644 --- a/components/pages/posts/PromotedContent.vue +++ b/components/pages/posts/PromotedContent.vue @@ -179,6 +179,7 @@ const premiumPromotions = [ {{ link.text }} diff --git a/pages/premium/dashboard.vue b/pages/premium/dashboard.vue index 07031fef..8073fd83 100644 --- a/pages/premium/dashboard.vue +++ b/pages/premium/dashboard.vue @@ -117,6 +117,7 @@

Feedback

@@ -132,6 +133,7 @@ class="hover:hover-text-util focus-visible:focus-outline-util underline" href="https://app.gumroad.com/library?query=Rule+34+App" target="_blank" + rel='nofollow noopener noreferrer' > Manage subscription
diff --git a/pages/premium/index.vue b/pages/premium/index.vue index 99518062..c3f046af 100644 --- a/pages/premium/index.vue +++ b/pages/premium/index.vue @@ -63,6 +63,7 @@ class="focus-visible:focus-outline-util hover:hover-text-util mt-12 flex flex-col items-center justify-center gap-2.5 pb-4" href="https://gum.co/Rule34App#Ratings" target="_blank" + rel='nofollow noopener noreferrer' >
@@ -223,6 +225,7 @@ Gumroad diff --git a/pages/premium/sign-in.vue b/pages/premium/sign-in.vue index e1abd5a5..033e03fd 100644 --- a/pages/premium/sign-in.vue +++ b/pages/premium/sign-in.vue @@ -80,6 +80,7 @@ class="hover:hover-text-util focus-visible:focus-outline-util font-semibold" href="https://app.gumroad.com/library?query=Rule+34+App" target="_blank" + rel='nofollow noopener noreferrer' > Forgot license? From 90719328b29fc3f1756822d7b8511d553daf9068 Mon Sep 17 00:00:00 2001 From: Alejandro Akbal <37181533+AlejandroAkbal@users.noreply.github.com> Date: Wed, 6 Mar 2024 13:16:13 +0000 Subject: [PATCH 03/53] feat: improve title and description --- app.vue | 2 +- assets/js/SeoHelper.ts | 35 +++++++++++------ pages/posts/[domain].vue | 81 +++++++++++++++++++++++++++------------- 3 files changed, 79 insertions(+), 39 deletions(-) diff --git a/app.vue b/app.vue index 9425ca96..909fb4f2 100644 --- a/app.vue +++ b/app.vue @@ -7,7 +7,7 @@ }, titleTemplate: (titleChunk) => { - return titleChunk ? `${titleChunk} | Rule 34 App` : 'Rule 34 App' + return titleChunk ? `${titleChunk} | R34.app` : 'Rule 34 App | R34.app' }, link: [ diff --git a/assets/js/SeoHelper.ts b/assets/js/SeoHelper.ts index 6c2ade2d..7d9c88ad 100644 --- a/assets/js/SeoHelper.ts +++ b/assets/js/SeoHelper.ts @@ -1,6 +1,7 @@ import Tag from '~/assets/js/tag.dto' +import { toLower, startCase } from 'lodash-es' -export function tagArrayToTitle(tags: Tag[]) { +export function tagArrayToTitle(tags: Tag[], addWith: boolean = true, addWithout: boolean = true) { if (!tags.length) { return null } @@ -21,15 +22,24 @@ export function tagArrayToTitle(tags: Tag[]) { let title = '' if (tagsThatStartWithNothing.length) { - title += `with ${ tagsThatStartWithNothing.join(', ') }` + + if (addWith) { + title += 'with ' + } + + title += tagsThatStartWithNothing.join(', ') } - if (tagsThatStartWithNothing.length && tagsThatStartWithMinus.length) { + if (addWith && addWithout && tagsThatStartWithNothing.length && tagsThatStartWithMinus.length) { title += ', and' } if (tagsThatStartWithMinus.length) { - title += ` without ${ tagsThatStartWithMinus.join(', ') }` + if (addWithout) { + title += ' without ' + } + + title += tagsThatStartWithMinus.join(', ') } return title @@ -40,17 +50,18 @@ export function normalizeStringForTitle(string: string) { return null } - string = string.trim() + let startsWithMinus = false - // Replace underscores with spaces - string = string.replace(/_/g, ' ') + if (string.startsWith('-')) { + startsWithMinus = true + } - // Delete parentheses - string = string.replace(/\(/g, '') - string = string.replace(/\)/g, '') + // Capitalize first letter of each word - https://stackoverflow.com/questions/38084396/lodash-title-case-uppercase-first-letter-of-every-word + string = startCase(toLower(string)) - // Delete colons - string = string.replace(/:/g, '') + if (startsWithMinus) { + string = '-' + string + } return string } diff --git a/pages/posts/[domain].vue b/pages/posts/[domain].vue index 620993c3..07e96a4a 100644 --- a/pages/posts/[domain].vue +++ b/pages/posts/[domain].vue @@ -7,7 +7,7 @@ import type { Ref } from 'vue' import { generatePostsRoute } from '~/assets/js/RouterHelper' import { tagArrayToTitle } from '~/assets/js/SeoHelper' - import { capitalize, cloneDeep } from 'lodash-es' + import { capitalize, startCase, cloneDeep } from 'lodash-es' import type { Domain } from '~/assets/js/domain' import type { IPostPage } from '~/assets/js/post' import { useInfiniteQuery } from '@tanstack/vue-query' @@ -364,7 +364,7 @@ window.location.reload() } - const title = computed(() => { + const completeTitle = computed(() => { let title = '' // Page @@ -376,7 +376,7 @@ // Tags if (selectedTags.value.length > 0) { - title += ` tagged ${tagArrayToTitle(selectedTags.value)} porn` + title += ` tagged ${tagArrayToTitle(selectedTags.value)} Hentai` } // Filters @@ -389,27 +389,41 @@ } if (selectedFilters.value.score) { - title += `, with a score of ${selectedFilters.value.score}` + title += `, score of ${selectedFilters.value.score}` } // Domain title += `, from ${selectedBooru.value.domain}` title = title.trim() - title = capitalize(title) return title }) + const shortTitle = computed(() => { + let _title = completeTitle.value + + _title = _title.replace(/Posts tagged/, '') + _title = _title.replace(/with /, '') + _title = _title.replace(/and ?without /, ' w/o ') + _title = _title.replace(/with a score of/, 'score') + + _title = _title.trim() + // Capitalize first letter - https://stackoverflow.com/questions/1026069/how-do-i-make-the-first-letter-of-a-string-uppercase-in-javascript + _title = _title.charAt(0).toUpperCase() + _title.slice(1) + + return _title + }) + const titleForBody = computed(() => { - let _title = title.value + let _title = completeTitle.value // TODO: Show page number in body title - _title = _title.replace(/Page \d+ of /, '') + _title = _title.replace(/page \d+ of /i, '') _title = _title.replace(/posts/i, '') - _title = _title.replace(/ porn/, '') + _title = _title.replace(/ hentai, /i, ', ') _title = _title.replace(/, from .+$/, '') @@ -419,34 +433,49 @@ } _title = _title.trim() - _title = capitalize(_title) + // Capitalize first letter - https://stackoverflow.com/questions/1026069/how-do-i-make-the-first-letter-of-a-string-uppercase-in-javascript + _title = _title.charAt(0).toUpperCase() + _title.slice(1) return _title }) - // TODO: Think about setting a real canonical URL - const canonicalUrl = computed(() => { - return window.location.href - }) + const description = computed(() => { + let description = `Stream and download ${tagArrayToTitle(selectedTags.value, false)} Hentai porn videos, GIFs and images` - useSeoMeta({ - title, + description = description.replace('download with', 'download') - description: () => { - let description = 'Stream and download porn images, GIFs and videos' + // Filters + if (selectedFilters.value.rating) { + description += `, rated ${selectedFilters.value.rating}` + } - if (selectedTags.value.length > 0) { - description += ` featuring ${tagArrayToTitle(selectedTags.value)}` - } + if (selectedFilters.value.sort) { + description += `, sorted by ${selectedFilters.value.sort}` + } + + if (selectedFilters.value.score) { + description += `, with a score of ${selectedFilters.value.score}` + } - // TODO: Filters + description += `, from ${selectedBooru.value.domain}` - description += ` from ${selectedBooru.value.domain}` + // TODO: Improve ending + description += '. Free anime hentai here on R34.app' - description += '. Fast and free anime hentai with the Rule 34 App.' + return description - return description - }, + + }) + + // TODO: Think about setting a real canonical URL + const canonicalUrl = computed(() => { + return window.location.href + }) + + useSeoMeta({ + title: shortTitle, + + description, referrer: 'no-referrer' }) @@ -569,7 +598,7 @@ Date: Wed, 6 Mar 2024 13:41:18 +0000 Subject: [PATCH 04/53] feat(posts): proxy and optimize images --- components/pages/posts/post/Post.vue | 6 +++--- components/pages/posts/post/PostMedia.vue | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/components/pages/posts/post/Post.vue b/components/pages/posts/post/Post.vue index 5dfbc3ee..07d480c8 100644 --- a/components/pages/posts/post/Post.vue +++ b/components/pages/posts/post/Post.vue @@ -40,12 +40,12 @@ case 'image': { // Return full image if its setting is enabled OR if low resolution file doesn't exist if (!props.post.low_res_file.url || userSettings.postFullSizeImages) { - data.file = props.post.high_res_file.url + data.file = 'https://imgproxy.permanent-link.com/pr:default/plain/' + props.post.high_res_file.url data.width = props.post.high_res_file.width data.height = props.post.high_res_file.height } else { // Return low res file - data.file = props.post.low_res_file.url + data.file = 'https://imgproxy.permanent-link.com/pr:default/plain/' + props.post.low_res_file.url data.width = props.post.low_res_file.width ?? props.post.high_res_file.width data.height = props.post.low_res_file.height ?? props.post.high_res_file.height } @@ -58,7 +58,7 @@ data.width = props.post.high_res_file.width data.height = props.post.high_res_file.height - data.posterFile = props.post.preview_file.url + data.posterFile = 'https://imgproxy.permanent-link.com/pr:default/plain/' + props.post.preview_file.url break } diff --git a/components/pages/posts/post/PostMedia.vue b/components/pages/posts/post/PostMedia.vue index bf9d71a6..0ab8c88b 100644 --- a/components/pages/posts/post/PostMedia.vue +++ b/components/pages/posts/post/PostMedia.vue @@ -38,7 +38,8 @@ const { isPremium } = useUserData() return } - if (!triedToLoadWithProxy.value && isPremium.value) { + // Try to load with proxy, only videos + if (!triedToLoadWithProxy.value && isVideo.value && isPremium.value) { triedToLoadWithProxy.value = true const { proxiedUrl } = useProxyHelper(localSrc.value) From f69debe14ee3f0ad9f0dc3673a9eb873f2c00219 Mon Sep 17 00:00:00 2001 From: Alejandro Akbal <37181533+AlejandroAkbal@users.noreply.github.com> Date: Wed, 6 Mar 2024 23:58:32 +0000 Subject: [PATCH 05/53] Revert "chore: update price again" This reverts commit 77e7230cc233b53743a5492405c6ddace1ef6336. --- pages/premium/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/premium/index.vue b/pages/premium/index.vue index c3f046af..497be64a 100644 --- a/pages/premium/index.vue +++ b/pages/premium/index.vue @@ -186,7 +186,7 @@ >
-

€4.9

+

€7

From 7fa853bdb9d9f0e54e108d6f97f057b3a3277ea2 Mon Sep 17 00:00:00 2001 From: Alejandro Akbal <37181533+AlejandroAkbal@users.noreply.github.com> Date: Thu, 7 Mar 2024 09:34:02 +0000 Subject: [PATCH 06/53] Revert "feat(posts): proxy and optimize images" This reverts commit dac555d22d5e823daa4a4fbf836858cf778d8f2e. --- components/pages/posts/post/Post.vue | 6 +++--- components/pages/posts/post/PostMedia.vue | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/components/pages/posts/post/Post.vue b/components/pages/posts/post/Post.vue index 07d480c8..5dfbc3ee 100644 --- a/components/pages/posts/post/Post.vue +++ b/components/pages/posts/post/Post.vue @@ -40,12 +40,12 @@ case 'image': { // Return full image if its setting is enabled OR if low resolution file doesn't exist if (!props.post.low_res_file.url || userSettings.postFullSizeImages) { - data.file = 'https://imgproxy.permanent-link.com/pr:default/plain/' + props.post.high_res_file.url + data.file = props.post.high_res_file.url data.width = props.post.high_res_file.width data.height = props.post.high_res_file.height } else { // Return low res file - data.file = 'https://imgproxy.permanent-link.com/pr:default/plain/' + props.post.low_res_file.url + data.file = props.post.low_res_file.url data.width = props.post.low_res_file.width ?? props.post.high_res_file.width data.height = props.post.low_res_file.height ?? props.post.high_res_file.height } @@ -58,7 +58,7 @@ data.width = props.post.high_res_file.width data.height = props.post.high_res_file.height - data.posterFile = 'https://imgproxy.permanent-link.com/pr:default/plain/' + props.post.preview_file.url + data.posterFile = props.post.preview_file.url break } diff --git a/components/pages/posts/post/PostMedia.vue b/components/pages/posts/post/PostMedia.vue index 0ab8c88b..bf9d71a6 100644 --- a/components/pages/posts/post/PostMedia.vue +++ b/components/pages/posts/post/PostMedia.vue @@ -38,8 +38,7 @@ const { isPremium } = useUserData() return } - // Try to load with proxy, only videos - if (!triedToLoadWithProxy.value && isVideo.value && isPremium.value) { + if (!triedToLoadWithProxy.value && isPremium.value) { triedToLoadWithProxy.value = true const { proxiedUrl } = useProxyHelper(localSrc.value) From 9da43edaf829a4d8e9adf084b23c77f59b770b13 Mon Sep 17 00:00:00 2001 From: Alejandro Akbal <37181533+AlejandroAkbal@users.noreply.github.com> Date: Thu, 7 Mar 2024 19:16:45 +0000 Subject: [PATCH 07/53] fix: newsletter --- components/pages/home/Newsletter.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/pages/home/Newsletter.vue b/components/pages/home/Newsletter.vue index edd5b8cb..7118e7f1 100644 --- a/components/pages/home/Newsletter.vue +++ b/components/pages/home/Newsletter.vue @@ -13,7 +13,7 @@

From 2147b68236e50d85dd8eeb11e94aeb8d16e91a78 Mon Sep 17 00:00:00 2001 From: Alejandro Akbal <37181533+AlejandroAkbal@users.noreply.github.com> Date: Sat, 9 Mar 2024 13:52:31 +0000 Subject: [PATCH 08/53] chore: hardcode proxy url --- .env.example | 2 -- composables/useProxyHelper.ts | 4 ++-- nuxt.config.js | 4 +--- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.env.example b/.env.example index e970b2af..7e729201 100644 --- a/.env.example +++ b/.env.example @@ -6,8 +6,6 @@ APP_DOMAIN=r34.app API_URL=https://api.r34.app -PROXY_URL=https://cors-proxy.r34.app/?q= - MATOMO_API_KEY= SENTRY_DSN= diff --git a/composables/useProxyHelper.ts b/composables/useProxyHelper.ts index a1a1932f..46738962 100644 --- a/composables/useProxyHelper.ts +++ b/composables/useProxyHelper.ts @@ -1,7 +1,7 @@ export function useProxyHelper(url: string) { - const config = useRuntimeConfig() + const PROXY_URL = 'https://cors-proxy.r34.app/?q=' - const proxiedUrl = computed(() => config.public.PROXY_URL + encodeURIComponent(url)) + const proxiedUrl = computed(() => PROXY_URL + encodeURIComponent(url)) return { proxiedUrl diff --git a/nuxt.config.js b/nuxt.config.js index 01cc79df..0525bcfc 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -95,9 +95,7 @@ export default defineNuxtConfig({ API_URL: process.env.API_URL, - PROXY_URL: process.env.PROXY_URL, - - SENTRY_DSN: process.env.SENTRY_DSN, + SENTRY_DSN: process.env.SENTRY_DSN } }, From fde230cd7d59dcbf63a90abbcc87cffe429b839a Mon Sep 17 00:00:00 2001 From: Alejandro Akbal <37181533+AlejandroAkbal@users.noreply.github.com> Date: Sat, 9 Mar 2024 13:52:54 +0000 Subject: [PATCH 09/53] chore: update deps --- package.json | 35 +- pnpm-lock.yaml | 1063 ++++++++++++++++++++++++++++++++---------------- 2 files changed, 735 insertions(+), 363 deletions(-) diff --git a/package.json b/package.json index f2dca23b..0f35e894 100644 --- a/package.json +++ b/package.json @@ -30,44 +30,45 @@ "@heroicons/vue": "^2.1.1", "@nuxt-alt/auth": "^3.1.7-beta.0", "@nuxt-alt/http": "^1.7.10", - "@nuxtjs/sitemap": "^5.1.0", - "@sentry/vite-plugin": "^2.14.2", - "@sentry/vue": "^7.102.1", + "@nuxt/image": "^1.4.0", + "@nuxtjs/sitemap": "^5.1.2", + "@sentry/vite-plugin": "^2.14.3", + "@sentry/vue": "^7.106.0", "@tailwindcss/forms": "^0.5.7", "@tailwindcss/typography": "^0.5.10", - "@tanstack/vue-query": "^5.24.1", - "@tanstack/vue-virtual": "3.1.2", + "@tanstack/vue-query": "^5.25.0", + "@tanstack/vue-virtual": "3.1.3", "@vite-pwa/assets-generator": "^0.2.4", - "@vite-pwa/nuxt": "^0.5.0", - "@vueuse/components": "^10.8.0", - "@vueuse/core": "^10.8.0", - "@vueuse/integrations": "^10.8.0", - "@vueuse/rxjs": "^10.8.0", + "@vite-pwa/nuxt": "^0.6.0", + "@vueuse/components": "^10.9.0", + "@vueuse/core": "^10.9.0", + "@vueuse/integrations": "^10.9.0", + "@vueuse/rxjs": "^10.9.0", "dexie": "4.0.1-beta.1", "js-abbreviation-number": "^1.4.0", "lodash-es": "^4.17.21", "nuxt": "^3.10.3", "nuxt-headlessui": "^1.1.5", - "nuxt-schema-org": "^3.3.4", - "qs": "^6.11.2", + "nuxt-schema-org": "^3.3.5", + "qs": "^6.12.0", "random-weighted-choice": "^0.1.4", "rxjs": "^7.8.1", "sortablejs": "^1.15.2", "tailwindcss": "^3.4.1", "vanilla-cookieconsent": "^3.0.0", "vue-safe-teleport": "^0.1.2", - "vue-sonner": "^1.0.3" + "vue-sonner": "^1.1.2" }, "devDependencies": { "@nuxt/test-utils": "^3.11.0", "@types/lodash-es": "^4.17.12", - "@types/qs": "^6.9.11", - "autoprefixer": "^10.4.17", + "@types/qs": "^6.9.12", + "autoprefixer": "^10.4.18", "jest": "^29.7.0", - "playwright": "^1.41.2", + "playwright": "^1.42.1", "postcss": "^8.4.35", "prettier": "^3.2.5", - "prettier-plugin-tailwindcss": "^0.5.11", + "prettier-plugin-tailwindcss": "^0.5.12", "standard-version": "^9.5.0", "vitest": "^1.3.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 121c9111..10d556b7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -26,15 +26,18 @@ dependencies: '@nuxt-alt/http': specifier: ^1.7.10 version: 1.7.10(nuxi@3.10.1)(rollup@3.29.4)(typescript@5.3.3) + '@nuxt/image': + specifier: ^1.4.0 + version: 1.4.0(rollup@3.29.4) '@nuxtjs/sitemap': - specifier: ^5.1.0 - version: 5.1.0(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(h3@1.10.2)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) + specifier: ^5.1.2 + version: 5.1.2(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(h3@1.11.1)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) '@sentry/vite-plugin': - specifier: ^2.14.2 - version: 2.14.2 + specifier: ^2.14.3 + version: 2.14.3 '@sentry/vue': - specifier: ^7.102.1 - version: 7.102.1(vue@3.4.19) + specifier: ^7.106.0 + version: 7.106.0(vue@3.4.19) '@tailwindcss/forms': specifier: ^0.5.7 version: 0.5.7(tailwindcss@3.4.1) @@ -42,29 +45,29 @@ dependencies: specifier: ^0.5.10 version: 0.5.10(tailwindcss@3.4.1) '@tanstack/vue-query': - specifier: ^5.24.1 - version: 5.24.1(vue@3.4.19) + specifier: ^5.25.0 + version: 5.25.0(vue@3.4.19) '@tanstack/vue-virtual': - specifier: 3.1.2 - version: 3.1.2(vue@3.4.19) + specifier: 3.1.3 + version: 3.1.3(vue@3.4.19) '@vite-pwa/assets-generator': specifier: ^0.2.4 version: 0.2.4 '@vite-pwa/nuxt': - specifier: ^0.5.0 - version: 0.5.0(@vite-pwa/assets-generator@0.2.4)(rollup@3.29.4)(vite@5.1.4)(workbox-build@7.0.0)(workbox-window@7.0.0) + specifier: ^0.6.0 + version: 0.6.0(@vite-pwa/assets-generator@0.2.4)(rollup@3.29.4)(vite@5.1.4)(workbox-build@7.0.0)(workbox-window@7.0.0) '@vueuse/components': - specifier: ^10.8.0 - version: 10.8.0(vue@3.4.19) + specifier: ^10.9.0 + version: 10.9.0(vue@3.4.19) '@vueuse/core': - specifier: ^10.8.0 - version: 10.8.0(vue@3.4.19) + specifier: ^10.9.0 + version: 10.9.0(vue@3.4.19) '@vueuse/integrations': - specifier: ^10.8.0 - version: 10.8.0(focus-trap@7.5.4)(sortablejs@1.15.2)(vue@3.4.19) + specifier: ^10.9.0 + version: 10.9.0(focus-trap@7.5.4)(sortablejs@1.15.2)(vue@3.4.19) '@vueuse/rxjs': - specifier: ^10.8.0 - version: 10.8.0(rxjs@7.8.1)(vue@3.4.19) + specifier: ^10.9.0 + version: 10.9.0(rxjs@7.8.1)(vue@3.4.19) dexie: specifier: 4.0.1-beta.1 version: 4.0.1-beta.1 @@ -81,11 +84,11 @@ dependencies: specifier: ^1.1.5 version: 1.1.5(rollup@3.29.4)(vue@3.4.19) nuxt-schema-org: - specifier: ^3.3.4 - version: 3.3.4(@nuxt/devtools@1.0.8)(@unhead/shared@1.8.10)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(unhead@1.8.10)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) + specifier: ^3.3.5 + version: 3.3.5(@nuxt/devtools@1.0.8)(@unhead/shared@1.8.12)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(unhead@1.8.10)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) qs: - specifier: ^6.11.2 - version: 6.11.2 + specifier: ^6.12.0 + version: 6.12.0 random-weighted-choice: specifier: ^0.1.4 version: 0.1.4 @@ -105,28 +108,28 @@ dependencies: specifier: ^0.1.2 version: 0.1.2(vue@3.4.19) vue-sonner: - specifier: ^1.0.3 - version: 1.0.3 + specifier: ^1.1.2 + version: 1.1.2 devDependencies: '@nuxt/test-utils': specifier: ^3.11.0 - version: 3.11.0(h3@1.10.2)(rollup@3.29.4)(vite@5.1.4)(vitest@1.3.1)(vue-router@4.3.0)(vue@3.4.19) + version: 3.11.0(h3@1.11.1)(rollup@3.29.4)(vite@5.1.4)(vitest@1.3.1)(vue-router@4.3.0)(vue@3.4.19) '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 '@types/qs': - specifier: ^6.9.11 - version: 6.9.11 + specifier: ^6.9.12 + version: 6.9.12 autoprefixer: - specifier: ^10.4.17 - version: 10.4.17(postcss@8.4.35) + specifier: ^10.4.18 + version: 10.4.18(postcss@8.4.35) jest: specifier: ^29.7.0 version: 29.7.0 playwright: - specifier: ^1.41.2 - version: 1.41.2 + specifier: ^1.42.1 + version: 1.42.1 postcss: specifier: ^8.4.35 version: 8.4.35 @@ -134,8 +137,8 @@ devDependencies: specifier: ^3.2.5 version: 3.2.5 prettier-plugin-tailwindcss: - specifier: ^0.5.11 - version: 0.5.11(prettier@3.2.5) + specifier: ^0.5.12 + version: 0.5.12(prettier@3.2.5) standard-version: specifier: ^9.5.0 version: 9.5.0 @@ -191,29 +194,6 @@ packages: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - /@babel/core@7.18.5: - resolution: {integrity: sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.18.5) - '@babel/helpers': 7.23.9 - '@babel/parser': 7.23.9 - '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 - '@babel/types': 7.23.9 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/core@7.23.6: resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} engines: {node: '>=6.9.0'} @@ -292,24 +272,6 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.6) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - dev: false - /@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.9): resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==} engines: {node: '>=6.9.0'} @@ -385,20 +347,6 @@ packages: dependencies: '@babel/types': 7.23.6 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.18.5): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: false - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} @@ -449,18 +397,6 @@ packages: '@babel/helper-wrap-function': 7.22.20 dev: false - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.6): - resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: false - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} @@ -760,6 +696,7 @@ packages: dependencies: '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} @@ -917,6 +854,7 @@ packages: dependencies: '@babel/core': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 + dev: true /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} @@ -1186,18 +1124,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.6): - resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - dev: false - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} @@ -1441,19 +1367,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.6): - resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.6 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.6(@babel/core@7.23.6) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) - dev: false - /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.9): resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} engines: {node: '>=6.9.0'} @@ -1612,18 +1525,18 @@ packages: esutils: 2.0.3 dev: false - /@babel/preset-typescript@7.23.3(@babel/core@7.23.6): + /@babel/preset-typescript@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.6 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.6) - '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.6) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.9) dev: false /@babel/regjsgen@0.8.0: @@ -2119,15 +2032,16 @@ packages: dev: false optional: true - /@fastify/busboy@2.1.0: - resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + /@fastify/accept-negotiator@1.1.0: + resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} engines: {node: '>=14'} + requiresBuild: true dev: false + optional: true - /@floating-ui/core@1.5.2: - resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==} - dependencies: - '@floating-ui/utils': 0.1.6 + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} dev: false /@floating-ui/core@1.6.0: @@ -2139,7 +2053,7 @@ packages: /@floating-ui/dom@1.1.1: resolution: {integrity: sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==} dependencies: - '@floating-ui/core': 1.5.2 + '@floating-ui/core': 1.6.0 dev: false /@floating-ui/dom@1.6.3: @@ -2149,10 +2063,6 @@ packages: '@floating-ui/utils': 0.2.1 dev: false - /@floating-ui/utils@0.1.6: - resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} - dev: false - /@floating-ui/utils@0.2.1: resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} dev: false @@ -2215,7 +2125,7 @@ packages: peerDependencies: vue: ^3.2.0 dependencies: - '@tanstack/vue-virtual': 3.1.2(vue@3.4.19) + '@tanstack/vue-virtual': 3.1.3(vue@3.4.19) vue: 3.4.19(typescript@5.3.3) dev: false @@ -2761,7 +2671,7 @@ packages: '@iconify-json/tabler': 1.1.103 '@nuxt/devtools': 1.0.8(nuxt@3.10.3)(rollup@3.29.4)(vite@5.1.4) '@nuxt/devtools-kit': 1.0.8(nuxt@3.10.3)(rollup@3.29.4)(vite@5.1.4) - '@nuxt/kit': 3.10.0(rollup@3.29.4) + '@nuxt/kit': 3.10.3(rollup@3.29.4) '@nuxtjs/color-mode': 3.3.2(rollup@3.29.4) '@unocss/core': 0.58.3 '@unocss/nuxt': 0.58.3(postcss@8.4.35)(rollup@3.29.4)(vite@5.1.4)(webpack@5.89.0) @@ -2769,8 +2679,8 @@ packages: '@unocss/preset-icons': 0.58.3 '@unocss/preset-mini': 0.58.3 '@unocss/reset': 0.58.3 - '@vueuse/core': 10.8.0(vue@3.4.19) - '@vueuse/integrations': 10.8.0(focus-trap@7.5.4)(sortablejs@1.15.2)(vue@3.4.19) + '@vueuse/core': 10.9.0(vue@3.4.19) + '@vueuse/integrations': 10.9.0(focus-trap@7.5.4)(sortablejs@1.15.2)(vue@3.4.19) '@vueuse/nuxt': 10.7.2(nuxt@3.10.3)(rollup@3.29.4)(vue@3.4.19) defu: 6.1.4 focus-trap: 7.5.4 @@ -2868,6 +2778,40 @@ packages: - utf-8-validate dev: false + /@nuxt/image@1.4.0(rollup@3.29.4): + resolution: {integrity: sha512-ZEGHjX8UZY/Wt/jWm+66QuUQA14E0dTwdi7n9BoZ1cJdinL8QdRMm3FcbwJvCj2quvD85c9LT2wvNA8l6hOMOA==} + engines: {node: ^14.16.0 || >=16.11.0} + dependencies: + '@nuxt/kit': 3.10.3(rollup@3.29.4) + consola: 3.2.3 + defu: 6.1.4 + h3: 1.11.1 + image-meta: 0.2.0 + node-fetch-native: 1.6.2 + ohash: 1.1.3 + pathe: 1.1.2 + std-env: 3.7.0 + ufo: 1.4.0 + optionalDependencies: + ipx: 2.1.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - idb-keyval + - rollup + - supports-color + - uWebSockets.js + dev: false + /@nuxt/kit@3.10.0(rollup@3.29.4): resolution: {integrity: sha512-SNyZqk57kyEvTdFSYhQCYFCwT/EQO13O9SWtY2ULscdhXd2C5D0SQW9E7OM7O/31Fa+KQ9RnSTA8DnwaOFne2g==} engines: {node: ^14.18.0 || >=16.10.0} @@ -3147,7 +3091,7 @@ packages: - supports-color dev: false - /@nuxt/test-utils@3.11.0(h3@1.10.2)(rollup@3.29.4)(vite@5.1.4)(vitest@1.3.1)(vue-router@4.3.0)(vue@3.4.19): + /@nuxt/test-utils@3.11.0(h3@1.11.1)(rollup@3.29.4)(vite@5.1.4)(vitest@1.3.1)(vue-router@4.3.0)(vue@3.4.19): resolution: {integrity: sha512-9ovgpQZkZpVg/MhYVVn2169WjH/IL0XUqwGryTa/lkx0/BCi1LMVEp3HTPkmt4qbRcxitO+kL4vFqqrFGVaSVg==} engines: {node: ^14.18.0 || >=16.10.0} peerDependencies: @@ -3194,7 +3138,7 @@ packages: execa: 8.0.1 fake-indexeddb: 5.0.2 get-port-please: 3.1.2 - h3: 1.10.2 + h3: 1.11.1 local-pkg: 0.5.0 magic-string: 0.30.5 node-fetch-native: 1.6.1 @@ -3209,7 +3153,7 @@ packages: unplugin: 1.6.0 vite: 5.1.4 vitest: 1.3.1 - vitest-environment-nuxt: 1.0.0(h3@1.10.2)(rollup@3.29.4)(vite@5.1.4)(vitest@1.3.1)(vue-router@4.3.0)(vue@3.4.19) + vitest-environment-nuxt: 1.0.0(h3@1.11.1)(rollup@3.29.4)(vite@5.1.4)(vitest@1.3.1)(vue-router@4.3.0)(vue@3.4.19) vue: 3.4.19(typescript@5.3.3) vue-router: 4.3.0(vue@3.4.19) transitivePeerDependencies: @@ -3230,7 +3174,7 @@ packages: '@rollup/plugin-replace': 5.0.5(rollup@3.29.4) '@vitejs/plugin-vue': 5.0.4(vite@5.1.4)(vue@3.4.19) '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.1.4)(vue@3.4.19) - autoprefixer: 10.4.17(postcss@8.4.35) + autoprefixer: 10.4.18(postcss@8.4.35) clear: 0.1.0 consola: 3.2.3 cssnano: 6.0.3(postcss@8.4.35) @@ -3284,7 +3228,7 @@ packages: /@nuxtjs/color-mode@3.3.2(rollup@3.29.4): resolution: {integrity: sha512-BLpBfrYZngV2QWFQ4HNEFwAXa3Pno43Ge+2XHcZJTTa1Z4KzRLvOwku8yiyV3ovIaaXKGwduBdv3Z5Ocdp0/+g==} dependencies: - '@nuxt/kit': 3.10.0(rollup@3.29.4) + '@nuxt/kit': 3.10.3(rollup@3.29.4) lodash.template: 4.5.0 pathe: 1.1.2 transitivePeerDependencies: @@ -3292,28 +3236,28 @@ packages: - supports-color dev: false - /@nuxtjs/sitemap@5.1.0(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(h3@1.10.2)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0): - resolution: {integrity: sha512-F7fAAdzHLJsca0CBJEvZD6Jbl5mZ/egMFJqDjdUByTsaPAygP+FcXhV/lycAtwDMNWThwyZaV3zKyRl2yxX3BQ==} + /@nuxtjs/sitemap@5.1.2(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(h3@1.11.1)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0): + resolution: {integrity: sha512-2ZLRNCAE1m+3oM6MrbcT2MrdPM7FxZqopGz9qEufwkjLH2s6C0ZS2An61OrbCUgmgwPfeL3G9stbc9zc1VMywg==} dependencies: '@nuxt/devtools-kit': 1.0.8(nuxt@3.10.3)(rollup@3.29.4)(vite@5.1.4) '@nuxt/devtools-ui-kit': 1.0.8(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) - '@nuxt/kit': 3.10.0(rollup@3.29.4) - '@vueuse/core': 10.8.0(vue@3.4.19) + '@nuxt/kit': 3.10.3(rollup@3.29.4) + '@vueuse/core': 10.9.0(vue@3.4.19) chalk: 5.3.0 defu: 6.1.4 - floating-vue: 5.2.2(@nuxt/kit@3.10.0)(vue@3.4.19) - h3-compression: 0.3.2(h3@1.10.2) - nuxt-site-config: 2.2.9(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) - nuxt-site-config-kit: 2.2.9(rollup@3.29.4)(vue@3.4.19) + floating-vue: 5.2.2(@nuxt/kit@3.10.3)(vue@3.4.19) + h3-compression: 0.3.2(h3@1.11.1) + nuxt-site-config: 2.2.11(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) + nuxt-site-config-kit: 2.2.11(rollup@3.29.4)(vue@3.4.19) ofetch: 1.3.3 pathe: 1.1.2 pkg-types: 1.0.3 - radix3: 1.1.0 - semver: 7.5.4 - shiki: 1.0.0-beta.2 + radix3: 1.1.1 + semver: 7.6.0 + shiki: 1.1.7 sirv: 2.0.4 - site-config-stack: 2.2.9(vue@3.4.19) - ufo: 1.3.2 + site-config-stack: 2.2.11(vue@3.4.19) + ufo: 1.4.0 transitivePeerDependencies: - '@nuxt/devtools' - '@unocss/webpack' @@ -3349,6 +3293,15 @@ packages: dev: false optional: true + /@parcel/watcher-android-arm64@2.4.1: + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-darwin-arm64@2.3.0: resolution: {integrity: sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==} engines: {node: '>= 10.0.0'} @@ -3358,6 +3311,15 @@ packages: dev: false optional: true + /@parcel/watcher-darwin-arm64@2.4.1: + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-darwin-x64@2.3.0: resolution: {integrity: sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==} engines: {node: '>= 10.0.0'} @@ -3367,6 +3329,15 @@ packages: dev: false optional: true + /@parcel/watcher-darwin-x64@2.4.1: + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-freebsd-x64@2.3.0: resolution: {integrity: sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==} engines: {node: '>= 10.0.0'} @@ -3376,6 +3347,15 @@ packages: dev: false optional: true + /@parcel/watcher-freebsd-x64@2.4.1: + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-linux-arm-glibc@2.3.0: resolution: {integrity: sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==} engines: {node: '>= 10.0.0'} @@ -3385,6 +3365,15 @@ packages: dev: false optional: true + /@parcel/watcher-linux-arm-glibc@2.4.1: + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-linux-arm64-glibc@2.3.0: resolution: {integrity: sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==} engines: {node: '>= 10.0.0'} @@ -3394,6 +3383,15 @@ packages: dev: false optional: true + /@parcel/watcher-linux-arm64-glibc@2.4.1: + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-linux-arm64-musl@2.3.0: resolution: {integrity: sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==} engines: {node: '>= 10.0.0'} @@ -3403,6 +3401,15 @@ packages: dev: false optional: true + /@parcel/watcher-linux-arm64-musl@2.4.1: + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-linux-x64-glibc@2.3.0: resolution: {integrity: sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==} engines: {node: '>= 10.0.0'} @@ -3412,6 +3419,15 @@ packages: dev: false optional: true + /@parcel/watcher-linux-x64-glibc@2.4.1: + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-linux-x64-musl@2.3.0: resolution: {integrity: sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==} engines: {node: '>= 10.0.0'} @@ -3421,6 +3437,15 @@ packages: dev: false optional: true + /@parcel/watcher-linux-x64-musl@2.4.1: + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-wasm@2.3.0: resolution: {integrity: sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==} engines: {node: '>= 10.0.0'} @@ -3433,6 +3458,18 @@ packages: bundledDependencies: - napi-wasm + /@parcel/watcher-wasm@2.4.1: + resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + is-glob: 4.0.3 + micromatch: 4.0.5 + dev: false + optional: true + bundledDependencies: + - napi-wasm + /@parcel/watcher-win32-arm64@2.3.0: resolution: {integrity: sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==} engines: {node: '>= 10.0.0'} @@ -3442,6 +3479,15 @@ packages: dev: false optional: true + /@parcel/watcher-win32-arm64@2.4.1: + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-win32-ia32@2.3.0: resolution: {integrity: sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==} engines: {node: '>= 10.0.0'} @@ -3451,6 +3497,15 @@ packages: dev: false optional: true + /@parcel/watcher-win32-ia32@2.4.1: + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher-win32-x64@2.3.0: resolution: {integrity: sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==} engines: {node: '>= 10.0.0'} @@ -3460,6 +3515,15 @@ packages: dev: false optional: true + /@parcel/watcher-win32-x64@2.4.1: + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@parcel/watcher@2.3.0: resolution: {integrity: sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==} engines: {node: '>= 10.0.0'} @@ -3484,6 +3548,31 @@ packages: '@parcel/watcher-win32-x64': 2.3.0 dev: false + /@parcel/watcher@2.4.1: + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.5 + node-addon-api: 7.0.0 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + dev: false + optional: true + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -3885,58 +3974,58 @@ packages: requiresBuild: true optional: true - /@sentry-internal/feedback@7.102.1: - resolution: {integrity: sha512-vY4hpLLMNLjICtWiizc7KeGbWOTUMGrF7C+9dPCztZww3CLgzWy9A7DvPj5hodRiYzpdRnAMl8yQnMFbYXh7bA==} + /@sentry-internal/feedback@7.106.0: + resolution: {integrity: sha512-Uz6pv3SN8XORTMme5xPxP/kuho7CAA6E/pMlpMjsojjBbnwLIICu10JaEZNsF/AtEya1RcNVTyPCrtF1F3sBYA==} engines: {node: '>=12'} dependencies: - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/core': 7.106.0 + '@sentry/types': 7.106.0 + '@sentry/utils': 7.106.0 dev: false - /@sentry-internal/replay-canvas@7.102.1: - resolution: {integrity: sha512-GUX4RWI10uRjdjeyvCLtAAhWRVqnAnG6+yNxWfqUQ3qMA7B7XxG43KT2UhSnulmErNzODQ6hA68rGPwwYeRIww==} + /@sentry-internal/replay-canvas@7.106.0: + resolution: {integrity: sha512-59qmT6XqbwpQuK1nVmv+XFxgd80gpYNH3aqgF5BEKux23kRB02/ARR5MwYyIHgVO0JhwdGIuiTfiLVNDu+nwTQ==} engines: {node: '>=12'} dependencies: - '@sentry/core': 7.102.1 - '@sentry/replay': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/core': 7.106.0 + '@sentry/replay': 7.106.0 + '@sentry/types': 7.106.0 + '@sentry/utils': 7.106.0 dev: false - /@sentry-internal/tracing@7.102.1: - resolution: {integrity: sha512-RkFlFyAC0fQOvBbBqnq0CLmFW5m3JJz9pKbZd5vXPraWAlniKSb1bC/4DF9SlNx0FN1LWG+IU3ISdpzwwTeAGg==} + /@sentry-internal/tracing@7.106.0: + resolution: {integrity: sha512-O8Es6Sa/tP80nfl+8soNfWzeRNFcT484SvjLR8BS3pHM9KDAlwNXyoQhFr2BKNYL1irbq6UF6eku4xCnUKVmqA==} engines: {node: '>=8'} dependencies: - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/core': 7.106.0 + '@sentry/types': 7.106.0 + '@sentry/utils': 7.106.0 dev: false - /@sentry/babel-plugin-component-annotate@2.14.2: - resolution: {integrity: sha512-mFBVnIZmdMrpxo61rG5yf0WFt5VrRpy8cpIpJtT3mYkX9vDmcUZaZaD1ctv73iZF3QwaieVdn05Na5mWzZ8h/A==} + /@sentry/babel-plugin-component-annotate@2.14.3: + resolution: {integrity: sha512-h0ONVTe8j3Ma2g5SMsl9ynmLZdCf+CupLF7PQ7n06K0L8dDtrHqo8yjsWaZSJf4InGrJ9HC4MaOSItbFjiTFLw==} engines: {node: '>= 14'} dev: false - /@sentry/browser@7.102.1: - resolution: {integrity: sha512-7BOfPBiM7Kp6q/iy0JIbsBTxIASV+zWXByqqjuEMWGj3X2u4oRIfm3gv4erPU/l+CORQUVQZLSPGoIoM1gbB/A==} + /@sentry/browser@7.106.0: + resolution: {integrity: sha512-OrHdw44giTtMa1DmlIUMBN4ypj1xTES9DLjq16ufK+bLqW3rWzwCuTy0sb9ZmSxc7fL2pdBlsL+sECiS+U2TEw==} engines: {node: '>=8'} dependencies: - '@sentry-internal/feedback': 7.102.1 - '@sentry-internal/replay-canvas': 7.102.1 - '@sentry-internal/tracing': 7.102.1 - '@sentry/core': 7.102.1 - '@sentry/replay': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry-internal/feedback': 7.106.0 + '@sentry-internal/replay-canvas': 7.106.0 + '@sentry-internal/tracing': 7.106.0 + '@sentry/core': 7.106.0 + '@sentry/replay': 7.106.0 + '@sentry/types': 7.106.0 + '@sentry/utils': 7.106.0 dev: false - /@sentry/bundler-plugin-core@2.14.2: - resolution: {integrity: sha512-HgOFWYdq87lSmeVW1w8K2Vf2DGzRPvKzHTajZYLTPlrZ1jbajq9vwuqhrJ9AnDkjl0mjyzSPEy3ZTeG1Z7uRNA==} + /@sentry/bundler-plugin-core@2.14.3: + resolution: {integrity: sha512-iEtMdAPFUAYngvYhkfbgY8m3zB439u+5tvovj9rBXHGMr3nEB5fzZLOcVuiL47GEuUvMjDdrubl9MDGZ0c1IuQ==} engines: {node: '>= 14'} dependencies: - '@babel/core': 7.18.5 - '@sentry/babel-plugin-component-annotate': 2.14.2 + '@babel/core': 7.23.9 + '@sentry/babel-plugin-component-annotate': 2.14.3 '@sentry/cli': 2.25.3 dotenv: 16.4.4 find-up: 5.0.0 @@ -4034,66 +4123,62 @@ packages: - supports-color dev: false - /@sentry/core@7.102.1: - resolution: {integrity: sha512-QjY+LSP3du3J/C8x/FfEbRxgZgsWd0jfTJ4P7s9f219I1csK4OeBMC3UA1HwEa0pY/9OF6H/egW2CjOcMM5Pdg==} + /@sentry/core@7.106.0: + resolution: {integrity: sha512-Dc13XtnyFaXup2E4vCbzuG0QKAVjrJBk4qfGwvSJaTuopEaEWBs2MpK6hRzFhsz9S3T0La7c1F/62NptvTUWsQ==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/types': 7.106.0 + '@sentry/utils': 7.106.0 dev: false - /@sentry/replay@7.102.1: - resolution: {integrity: sha512-HR/j9dGIvbrId8fh8mQlODx7JrhRmawEd9e9P3laPtogWCg/5TI+XPb2VGSaXOX9VWtb/6Z2UjHsaGjgg6YcuA==} + /@sentry/replay@7.106.0: + resolution: {integrity: sha512-buaAOvOI+3pFm+76vwtxSxciBATHyR78aDjStghJZcIpFDNF31K8ZV0uP9+EUPbXHohtkTwZ86cn/P9cyY6NgA==} engines: {node: '>=12'} dependencies: - '@sentry-internal/tracing': 7.102.1 - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry-internal/tracing': 7.106.0 + '@sentry/core': 7.106.0 + '@sentry/types': 7.106.0 + '@sentry/utils': 7.106.0 dev: false - /@sentry/types@7.102.1: - resolution: {integrity: sha512-htKorf3t/D0XYtM7foTcmG+rM47rDP6XdbvCcX5gBCuCYlzpM1vqCt2rl3FLktZC6TaIpFRJw1TLfx6m+x5jdA==} + /@sentry/types@7.106.0: + resolution: {integrity: sha512-oKTkDaL6P9xJC5/zHLRemHTWboUqRYjkJNaZCN63j4kJqGy56wee4vDtDese/NWWn4U4C1QV1h+Mifm2HmDcQg==} engines: {node: '>=8'} dev: false - /@sentry/utils@7.102.1: - resolution: {integrity: sha512-+8WcFjHVV/HROXSAwMuUzveElBFC43EiTG7SNEBNgOUeQzQVTmbUZXyTVgLrUmtoWqvnIxCacoLxtZo1o67kdg==} + /@sentry/utils@7.106.0: + resolution: {integrity: sha512-bVsePsXLpFu/1sH4rpJrPcnVxW2fXXfGfGxKs6Bm+dkOMbuVTlk/KAzIbdjCDIpVlrMDJmMNEv5xgTFjgWDkjw==} engines: {node: '>=8'} dependencies: - '@sentry/types': 7.102.1 + '@sentry/types': 7.106.0 dev: false - /@sentry/vite-plugin@2.14.2: - resolution: {integrity: sha512-t8IiRZGxivtODgabjgHlgUhOBEIJdOclJGUKLAJjJqPtYeKjPzxYOo/Z5yt7k1rhBAaMhFk3whW5o7SOq4KVOA==} + /@sentry/vite-plugin@2.14.3: + resolution: {integrity: sha512-sSMbn6lND0N5eE0R/gmzlZKgegIgkSge/yrECf0xZi3tMHn4n6Ue1VO7m0+sJZFLP5C26htYFh0lI16EUweYEg==} engines: {node: '>= 14'} dependencies: - '@sentry/bundler-plugin-core': 2.14.2 + '@sentry/bundler-plugin-core': 2.14.3 unplugin: 1.0.1 transitivePeerDependencies: - encoding - supports-color dev: false - /@sentry/vue@7.102.1(vue@3.4.19): - resolution: {integrity: sha512-7sTrdAe3EL45MaA44mAgSPRg7jQ/CE6LifHl+62hjchpzsh+W+xWsN+31hbvm9ek6v/gNnQAlxyAXqXBRWtrlQ==} + /@sentry/vue@7.106.0(vue@3.4.19): + resolution: {integrity: sha512-lKXLWtH1lArkURYkWdqpxGPvHgVfxnRSvdxUsWmCZGJP40Yvui2O3cfH/QIIyf+O7XjqJFI6z6/9Ou3av2A8MQ==} engines: {node: '>=8'} peerDependencies: vue: 2.x || 3.x dependencies: - '@sentry/browser': 7.102.1 - '@sentry/core': 7.102.1 - '@sentry/types': 7.102.1 - '@sentry/utils': 7.102.1 + '@sentry/browser': 7.106.0 + '@sentry/core': 7.106.0 + '@sentry/types': 7.106.0 + '@sentry/utils': 7.106.0 vue: 3.4.19(typescript@5.3.3) dev: false - /@shikijs/core@1.0.0-beta.2: - resolution: {integrity: sha512-H0r+V4/47hXZzFW2qXRqjLwNtiUE5bQankMw2m2RE1hLgHSjp/skyBZYDXjhG9y7ei3sIZAj8s4vx31EzxxrhQ==} - dev: false - - /@shikijs/core@1.0.0-beta.5: - resolution: {integrity: sha512-C/MxtvK3FFCQZSsDq6OfjDHHOmyP1Jc9wO66cnE8VLEyWXzWch7Zpoc2MWuVJTSC0Pz9QxyUlsBCnroplFqoSg==} + /@shikijs/core@1.1.7: + resolution: {integrity: sha512-gTYLUIuD1UbZp/11qozD3fWpUTuMqPSf3svDMMrL0UmlGU7D9dPw/V1FonwAorCUJBltaaESxq90jrSjQyGixg==} dev: false /@sigstore/bundle@2.1.0: @@ -4191,16 +4276,16 @@ packages: remove-accents: 0.4.2 dev: false - /@tanstack/query-core@5.24.1: - resolution: {integrity: sha512-DZ6Nx9p7BhjkG50ayJ+MKPgff+lMeol7QYXkvuU5jr2ryW/4ok5eanaS9W5eooA4xN0A/GPHdLGOZGzArgf5Cg==} + /@tanstack/query-core@5.25.0: + resolution: {integrity: sha512-vlobHP64HTuSE68lWF1mEhwSRC5Q7gaT+a/m9S+ItuN+ruSOxe1rFnR9j0ACWQ314BPhBEVKfBQ6mHL0OWfdbQ==} dev: false - /@tanstack/virtual-core@3.1.2: - resolution: {integrity: sha512-DATZJs8iejkIUqXZe6ruDAnjFo78BKnIIgqQZrc7CmEFqfLEN/TPD91n4hRfo6hpRB6xC00bwKxv7vdjFNEmOg==} + /@tanstack/virtual-core@3.1.3: + resolution: {integrity: sha512-Y5B4EYyv1j9V8LzeAoOVeTg0LI7Fo5InYKgAjkY1Pu9GjtUwX/EKxNcU7ng3sKr99WEf+bPTcktAeybyMOYo+g==} dev: false - /@tanstack/vue-query@5.24.1(vue@3.4.19): - resolution: {integrity: sha512-nynAGshOSIdeMWnIO/kq7FkxSv9hJEIOve1wrLlt03n9dV7JQ8YX9pSaqLezRlAXgWL9v0AesXlBtiOhxIdA0A==} + /@tanstack/vue-query@5.25.0(vue@3.4.19): + resolution: {integrity: sha512-AulLKleumygoNXhBUmeEMjJAQSt7iMqsqZSYc9NOMby3QrQpEE8RbpYfWlGOBqG2Ftx046x6TkwelD+3ryQqfA==} peerDependencies: '@vue/composition-api': ^1.1.2 vue: ^2.6.0 || ^3.3.0 @@ -4209,18 +4294,18 @@ packages: optional: true dependencies: '@tanstack/match-sorter-utils': 8.11.8 - '@tanstack/query-core': 5.24.1 + '@tanstack/query-core': 5.25.0 '@vue/devtools-api': 6.5.1 vue: 3.4.19(typescript@5.3.3) vue-demi: 0.14.7(vue@3.4.19) dev: false - /@tanstack/vue-virtual@3.1.2(vue@3.4.19): - resolution: {integrity: sha512-RmUnhsFtRw9p4Ti/+rG2Hr3y4yFhs8Xdsn7x9tkPoKINbVya/5RSCoNUCCAg2iXNjOI5a55iBNzNV0SVwxMwKA==} + /@tanstack/vue-virtual@3.1.3(vue@3.4.19): + resolution: {integrity: sha512-OoRCSgp8Bc85Te3pg4OHFUukbWZeB25/O5rNd7MgMtrYIfJjNOaicZeJcvwqK6lDVTMpzohWUMVK/loqR1H8ig==} peerDependencies: vue: ^2.7.0 || ^3.0.0 dependencies: - '@tanstack/virtual-core': 3.1.2 + '@tanstack/virtual-core': 3.1.3 vue: 3.4.19(typescript@5.3.3) dev: false @@ -4348,8 +4433,8 @@ packages: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} dev: true - /@types/qs@6.9.11: - resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + /@types/qs@6.9.12: + resolution: {integrity: sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==} dev: true /@types/resolve@1.17.1: @@ -4391,14 +4476,14 @@ packages: '@unhead/shared': 1.8.10 dev: false - /@unhead/schema-org@1.8.10(@unhead/shared@1.8.10)(unhead@1.8.10): - resolution: {integrity: sha512-u2g1FCVRpMy6FSm5i2F36bKw6SbMM2B0p6Y36ztBRJ4fd0SGCTZNC4WM6A2eCFZ3aI6E5Zbs+Bo4oUMjfLWDhA==} + /@unhead/schema-org@1.8.12(@unhead/shared@1.8.12)(unhead@1.8.10): + resolution: {integrity: sha512-2Ew0tYAY/5YeJ2eE59384eVSGE48YXiU9MqcxNNXWxP4q27SHQc63yYYiStwaBqIPddUdTxTJOxiBaJ3fH5FGg==} peerDependencies: - '@unhead/shared': 1.8.10 - unhead: '>=1.8.9' + '@unhead/shared': 1.8.12 + unhead: '>=1.8.10' dependencies: - '@unhead/shared': 1.8.10 - ufo: 1.3.2 + '@unhead/shared': 1.8.12 + ufo: 1.4.0 unhead: 1.8.10 dev: false @@ -4409,12 +4494,25 @@ packages: zhead: 2.2.4 dev: false + /@unhead/schema@1.8.12: + resolution: {integrity: sha512-sUkjvRGaAN0NCvZtB7VtyC5pUdYQAutHtmKbEK79nfPfb2Z7kFT1nysIno13ivybeq98l4Ge1o4crVuTwGHhTw==} + dependencies: + hookable: 5.5.3 + zhead: 2.2.4 + dev: false + /@unhead/shared@1.8.10: resolution: {integrity: sha512-pEFryAs3EmV+ShDQx2ZBwUnt5l3RrMrXSMZ50oFf+MImKZNARVvD4+3I8fEI9wZh+Zq0JYG3UAfzo51MUP+Juw==} dependencies: '@unhead/schema': 1.8.10 dev: false + /@unhead/shared@1.8.12: + resolution: {integrity: sha512-3pP1cYSH22UeCvvVyAVkh7Nfo2GwWDuO/h/31I2eVl5oVvmb0vZx7Ff47RlfKDMkfN7ddKaRwkLaYAR+hNNWsQ==} + dependencies: + '@unhead/schema': 1.8.12 + dev: false + /@unhead/ssr@1.8.10: resolution: {integrity: sha512-7wKRKDd8c2NFmMyPetj8Ah5u2hXunDBZT5Y2DH83O16PiMxx4/uobGamTV1EfcqjTvOKJvAqkrYZNYSWss99NQ==} dependencies: @@ -4461,7 +4559,7 @@ packages: '@unocss/core': 0.58.3 '@unocss/preset-uno': 0.58.3 cac: 6.7.14 - chokidar: 3.5.3 + chokidar: 3.6.0 colorette: 2.0.20 consola: 3.2.3 fast-glob: 3.3.2 @@ -4502,7 +4600,7 @@ packages: /@unocss/nuxt@0.58.3(postcss@8.4.35)(rollup@3.29.4)(vite@5.1.4)(webpack@5.89.0): resolution: {integrity: sha512-dDQVKb8VtJt2/8SE6/vK1foEaqoTXVUUVq/TT7rSRLHdvRSVKE7M2eeoTS+k38RYdeooMx9YCtzwZDxun6caeQ==} dependencies: - '@nuxt/kit': 3.10.0(rollup@3.29.4) + '@nuxt/kit': 3.10.3(rollup@3.29.4) '@unocss/config': 0.58.3 '@unocss/core': 0.58.3 '@unocss/preset-attributify': 0.58.3 @@ -4619,9 +4717,9 @@ packages: /@unocss/transformer-attributify-jsx-babel@0.58.3: resolution: {integrity: sha512-ar+s1rUVHpTy5Yz31WP4DGF2IHxyD4sk/t9ayvR2nOZddAZipdLGSShG03GLkRv4h2/r0x+BIyJGdwAC0BgVZQ==} dependencies: - '@babel/core': 7.23.6 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/core': 7.23.9 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) '@unocss/core': 0.58.3 transitivePeerDependencies: - supports-color @@ -4665,7 +4763,7 @@ packages: '@unocss/inspector': 0.58.3 '@unocss/scope': 0.58.3 '@unocss/transformer-directives': 0.58.3 - chokidar: 3.5.3 + chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.7 vite: 5.1.4 @@ -4682,7 +4780,7 @@ packages: '@rollup/pluginutils': 5.1.0(rollup@3.29.4) '@unocss/config': 0.58.3 '@unocss/core': 0.58.3 - chokidar: 3.5.3 + chokidar: 3.6.0 fast-glob: 3.3.2 magic-string: 0.30.7 unplugin: 1.7.1 @@ -4726,15 +4824,20 @@ packages: unconfig: 0.3.11 dev: false - /@vite-pwa/nuxt@0.5.0(@vite-pwa/assets-generator@0.2.4)(rollup@3.29.4)(vite@5.1.4)(workbox-build@7.0.0)(workbox-window@7.0.0): - resolution: {integrity: sha512-5Si0Qpj9FGYmgrX52HJtY1OZKNDXJVmx17yULk0Karb7+6GKXhRcWP3DnFTEG7zkctXuzBli5sXjQaEEbEgy6w==} + /@vite-pwa/nuxt@0.6.0(@vite-pwa/assets-generator@0.2.4)(rollup@3.29.4)(vite@5.1.4)(workbox-build@7.0.0)(workbox-window@7.0.0): + resolution: {integrity: sha512-oW2fQ18yC7p81F4NeZe7y14dqzWR0IBljoEp5Ns2hHh44EyBsPP8kdFYqDOLJsbVGjqZdSmWdxESgLfT3SGpLA==} + peerDependencies: + '@vite-pwa/assets-generator': ^0.2.4 + peerDependenciesMeta: + '@vite-pwa/assets-generator': + optional: true dependencies: - '@nuxt/kit': 3.10.1(rollup@3.29.4) + '@nuxt/kit': 3.10.3(rollup@3.29.4) + '@vite-pwa/assets-generator': 0.2.4 pathe: 1.1.2 - ufo: 1.3.2 - vite-plugin-pwa: 0.19.0(@vite-pwa/assets-generator@0.2.4)(vite@5.1.4)(workbox-build@7.0.0)(workbox-window@7.0.0) + ufo: 1.4.0 + vite-plugin-pwa: 0.19.2(@vite-pwa/assets-generator@0.2.4)(vite@5.1.4)(workbox-build@7.0.0)(workbox-window@7.0.0) transitivePeerDependencies: - - '@vite-pwa/assets-generator' - rollup - supports-color - vite @@ -4918,11 +5021,11 @@ packages: /@vue/shared@3.4.19: resolution: {integrity: sha512-/KliRRHMF6LoiThEy+4c1Z4KB/gbPrGjWwJR+crg2otgrf/egKzRaCPvJ51S5oetgsgXLfc4Rm5ZgrKHZrtMSw==} - /@vueuse/components@10.8.0(vue@3.4.19): - resolution: {integrity: sha512-5k/4Cxgt+aoxeHIOWSet6kkHXY+96QuPkJzGpOHaCj9DD0ASBni6L/wHQUWL118Ac9xq5+QQJuK5VvFs/yBAEw==} + /@vueuse/components@10.9.0(vue@3.4.19): + resolution: {integrity: sha512-BHQpA0yIi3y7zKa1gYD0FUzLLkcRTqVhP8smnvsCK6GFpd94Nziq1XVPD7YpFeho0k5BzbBiNZF7V/DpkJ967A==} dependencies: - '@vueuse/core': 10.8.0(vue@3.4.19) - '@vueuse/shared': 10.8.0(vue@3.4.19) + '@vueuse/core': 10.9.0(vue@3.4.19) + '@vueuse/shared': 10.9.0(vue@3.4.19) vue-demi: 0.14.7(vue@3.4.19) transitivePeerDependencies: - '@vue/composition-api' @@ -4935,26 +5038,26 @@ packages: '@types/web-bluetooth': 0.0.20 '@vueuse/metadata': 10.7.2 '@vueuse/shared': 10.7.2(vue@3.4.19) - vue-demi: 0.14.6(vue@3.4.19) + vue-demi: 0.14.7(vue@3.4.19) transitivePeerDependencies: - '@vue/composition-api' - vue dev: false - /@vueuse/core@10.8.0(vue@3.4.19): - resolution: {integrity: sha512-G9Ok9fjx10TkNIPn8V1dJmK1NcdJCtYmDRyYiTMUyJ1p0Tywc1zmOoCQ2xhHYyz8ULBU4KjIJQ9n+Lrty74iVw==} + /@vueuse/core@10.9.0(vue@3.4.19): + resolution: {integrity: sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==} dependencies: '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.8.0 - '@vueuse/shared': 10.8.0(vue@3.4.19) + '@vueuse/metadata': 10.9.0 + '@vueuse/shared': 10.9.0(vue@3.4.19) vue-demi: 0.14.7(vue@3.4.19) transitivePeerDependencies: - '@vue/composition-api' - vue dev: false - /@vueuse/integrations@10.8.0(focus-trap@7.5.4)(sortablejs@1.15.2)(vue@3.4.19): - resolution: {integrity: sha512-sw3P/7cXOfNLQfERp7P0IJ2ODjLE2C3BGXpBQJQkS309c1jbJak9yu4EnY70WaZjkj53aeWSFU6BbHrUxXJ7SA==} + /@vueuse/integrations@10.9.0(focus-trap@7.5.4)(sortablejs@1.15.2)(vue@3.4.19): + resolution: {integrity: sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q==} peerDependencies: async-validator: '*' axios: '*' @@ -4994,8 +5097,8 @@ packages: universal-cookie: optional: true dependencies: - '@vueuse/core': 10.8.0(vue@3.4.19) - '@vueuse/shared': 10.8.0(vue@3.4.19) + '@vueuse/core': 10.9.0(vue@3.4.19) + '@vueuse/shared': 10.9.0(vue@3.4.19) focus-trap: 7.5.4 sortablejs: 1.15.2 vue-demi: 0.14.7(vue@3.4.19) @@ -5008,8 +5111,8 @@ packages: resolution: {integrity: sha512-kCWPb4J2KGrwLtn1eJwaJD742u1k5h6v/St5wFe8Quih90+k2a0JP8BS4Zp34XUuJqS2AxFYMb1wjUL8HfhWsQ==} dev: false - /@vueuse/metadata@10.8.0: - resolution: {integrity: sha512-Nim/Vle5OgXcXhAvGOgkJQXB1Yb+Kq/fMbLuv3YYDYbiQrwr39ljuD4k9fPeq4yUyokYRo2RaNQmbbIMWB/9+w==} + /@vueuse/metadata@10.9.0: + resolution: {integrity: sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==} dev: false /@vueuse/nuxt@10.7.2(nuxt@3.10.3)(rollup@3.29.4)(vue@3.4.19): @@ -5017,12 +5120,12 @@ packages: peerDependencies: nuxt: ^3.0.0 dependencies: - '@nuxt/kit': 3.10.0(rollup@3.29.4) + '@nuxt/kit': 3.10.3(rollup@3.29.4) '@vueuse/core': 10.7.2(vue@3.4.19) '@vueuse/metadata': 10.7.2 local-pkg: 0.5.0 nuxt: 3.10.3(rollup@3.29.4)(typescript@5.3.3)(vite@5.1.4) - vue-demi: 0.14.6(vue@3.4.19) + vue-demi: 0.14.7(vue@3.4.19) transitivePeerDependencies: - '@vue/composition-api' - rollup @@ -5030,12 +5133,12 @@ packages: - vue dev: false - /@vueuse/rxjs@10.8.0(rxjs@7.8.1)(vue@3.4.19): - resolution: {integrity: sha512-buGROGxEIXAz7MY+0HK4x8S14CPR9ILrrWwnNj4GBJZchzKL+42a+/YC3Pmvc8BangSfByWthRH9LuQ3FQdRqQ==} + /@vueuse/rxjs@10.9.0(rxjs@7.8.1)(vue@3.4.19): + resolution: {integrity: sha512-/t7B0Vr09XKX5o0NvXL41fXlvy7ZJCRDuRUmv4IRTDAt7kIkAarmnJzHJrhn+vsq0q/BO2Evhiep1ocp+LFmZw==} peerDependencies: rxjs: '>=6.0.0' dependencies: - '@vueuse/shared': 10.8.0(vue@3.4.19) + '@vueuse/shared': 10.9.0(vue@3.4.19) rxjs: 7.8.1 vue-demi: 0.14.7(vue@3.4.19) transitivePeerDependencies: @@ -5046,14 +5149,14 @@ packages: /@vueuse/shared@10.7.2(vue@3.4.19): resolution: {integrity: sha512-qFbXoxS44pi2FkgFjPvF4h7c9oMDutpyBdcJdMYIMg9XyXli2meFMuaKn+UMgsClo//Th6+beeCgqweT/79BVA==} dependencies: - vue-demi: 0.14.6(vue@3.4.19) + vue-demi: 0.14.7(vue@3.4.19) transitivePeerDependencies: - '@vue/composition-api' - vue dev: false - /@vueuse/shared@10.8.0(vue@3.4.19): - resolution: {integrity: sha512-dUdy6zwHhULGxmr9YUg8e+EnB39gcM4Fe2oKBSrh3cOsV30JcMPtsyuspgFCUo5xxFNaeMf/W2yyKfST7Bg8oQ==} + /@vueuse/shared@10.9.0(vue@3.4.19): + resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} dependencies: vue-demi: 0.14.7(vue@3.4.19) transitivePeerDependencies: @@ -5458,15 +5561,15 @@ packages: engines: {node: '>= 4.0.0'} dev: false - /autoprefixer@10.4.17(postcss@8.4.35): - resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} + /autoprefixer@10.4.18(postcss@8.4.35): + resolution: {integrity: sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.22.2 - caniuse-lite: 1.0.30001579 + browserslist: 4.23.0 + caniuse-lite: 1.0.30001596 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -5664,6 +5767,16 @@ packages: node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) + /browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001596 + electron-to-chromium: 1.4.699 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: @@ -5782,6 +5895,17 @@ packages: set-function-length: 1.1.1 dev: false + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.1 + dev: false + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -5824,6 +5948,10 @@ packages: /caniuse-lite@1.0.30001579: resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} + dev: false + + /caniuse-lite@1.0.30001596: + resolution: {integrity: sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==} /chai@4.3.10: resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} @@ -5926,6 +6054,14 @@ packages: dependencies: consola: 3.2.3 + /citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + requiresBuild: true + dependencies: + consola: 3.2.3 + dev: false + optional: true + /cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true @@ -5949,6 +6085,17 @@ packages: is-wsl: 2.2.0 dev: false + /clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} + requiresBuild: true + dependencies: + execa: 8.0.1 + is-wsl: 3.1.0 + is64bit: 2.0.0 + dev: false + optional: true + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: @@ -6261,10 +6408,6 @@ packages: q: 1.5.1 dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false - /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -6325,6 +6468,14 @@ packages: shebang-command: 2.0.0 which: 2.0.2 + /crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true + /crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -6379,6 +6530,12 @@ packages: hasBin: true dev: false + /cssfilter@0.0.10: + resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} + requiresBuild: true + dev: false + optional: true + /cssnano-preset-default@6.0.3(postcss@8.4.35): resolution: {integrity: sha512-4y3H370aZCkT9Ev8P4SO4bZbt+AExeKhh8wTbms/X7OLDo5E7AYUUy6YPxa/uF5Grf+AJwNcCnxKhZynJ6luBA==} engines: {node: ^14 || ^16 || >=18.0} @@ -6568,6 +6725,15 @@ packages: has-property-descriptors: 1.0.1 dev: false + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: false + /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -6759,6 +6925,9 @@ packages: /electron-to-chromium@1.4.612: resolution: {integrity: sha512-dM8BMtXtlH237ecSMnYdYuCkib2QHq0kpWfUnavjdYsyr/6OsAwg5ZGUfnQ9KD1Ga4QgB2sqXlB2NT8zy2GnVg==} + /electron-to-chromium@1.4.699: + resolution: {integrity: sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==} + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} @@ -6867,6 +7036,18 @@ packages: which-typed-array: 1.1.13 dev: false + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: false + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: false + /es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} dev: false @@ -7203,7 +7384,7 @@ packages: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: false - /floating-vue@5.2.2(@nuxt/kit@3.10.0)(vue@3.4.19): + /floating-vue@5.2.2(@nuxt/kit@3.10.3)(vue@3.4.19): resolution: {integrity: sha512-afW+h2CFafo+7Y9Lvw/xsqjaQlKLdJV7h1fCHfcYQ1C4SVMlu7OAekqWgu5d4SgvkBVU0pVpLlVsrSTBURFRkg==} peerDependencies: '@nuxt/kit': ^3.2.0 @@ -7213,7 +7394,7 @@ packages: optional: true dependencies: '@floating-ui/dom': 1.1.1 - '@nuxt/kit': 3.10.0(rollup@3.29.4) + '@nuxt/kit': 3.10.3(rollup@3.29.4) vue: 3.4.19(typescript@5.3.3) vue-resize: 2.0.0-alpha.1(vue@3.4.19) dev: false @@ -7353,6 +7534,17 @@ packages: hasown: 2.0.0 dev: false + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: false + /get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} dev: false @@ -7603,7 +7795,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 dev: false /graceful-fs@4.2.11: @@ -7623,12 +7815,12 @@ packages: duplexer: 0.1.2 dev: false - /h3-compression@0.3.2(h3@1.10.2): + /h3-compression@0.3.2(h3@1.11.1): resolution: {integrity: sha512-B+yCKyDRnO0BXSfjAP4tCXJgJwmnKp3GyH5Yh66mY9KuOCrrGQSPk/gBFG2TgH7OyB/6mvqNZ1X0XNVuy0qRsw==} peerDependencies: h3: ^1.6.0 dependencies: - h3: 1.10.2 + h3: 1.11.1 dev: false /h3@1.10.2: @@ -7643,6 +7835,23 @@ packages: ufo: 1.4.0 uncrypto: 0.1.3 unenv: 1.9.0 + dev: false + + /h3@1.11.1: + resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} + dependencies: + cookie-es: 1.0.0 + crossws: 0.2.4 + defu: 6.1.4 + destr: 2.0.3 + iron-webcrypto: 1.0.0 + ohash: 1.1.3 + radix3: 1.1.0 + ufo: 1.4.0 + uncrypto: 0.1.3 + unenv: 1.9.0 + transitivePeerDependencies: + - uWebSockets.js /handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} @@ -7677,7 +7886,7 @@ packages: /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 dev: false /has-proto@1.0.1: @@ -7914,6 +8123,45 @@ packages: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: false + /ipx@2.1.0: + resolution: {integrity: sha512-AVnPGXJ8L41vjd11Z4akIF2yd14636Klxul3tBySxHA6PKfCOQPxBDkCFK5zcWh0z/keR6toh1eg8qzdBVUgdA==} + hasBin: true + requiresBuild: true + dependencies: + '@fastify/accept-negotiator': 1.1.0 + citty: 0.1.5 + consola: 3.2.3 + defu: 6.1.4 + destr: 2.0.3 + etag: 1.8.1 + h3: 1.11.1 + image-meta: 0.2.0 + listhen: 1.7.2 + ofetch: 1.3.3 + pathe: 1.1.2 + sharp: 0.32.6 + svgo: 3.2.0 + ufo: 1.4.0 + unstorage: 1.10.1 + xss: 1.0.15 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/kv' + - idb-keyval + - supports-color + - uWebSockets.js + dev: false + optional: true + /iron-webcrypto@1.0.0: resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} @@ -8157,6 +8405,24 @@ packages: is-docker: 2.2.1 dev: false + /is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + requiresBuild: true + dependencies: + is-inside-container: 1.0.0 + dev: false + optional: true + + /is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} + requiresBuild: true + dependencies: + system-architecture: 0.1.0 + dev: false + optional: true + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -8851,6 +9117,34 @@ packages: uqr: 0.1.2 dev: false + /listhen@1.7.2: + resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} + hasBin: true + requiresBuild: true + dependencies: + '@parcel/watcher': 2.4.1 + '@parcel/watcher-wasm': 2.4.1 + citty: 0.1.6 + clipboardy: 4.0.0 + consola: 3.2.3 + crossws: 0.2.4 + defu: 6.1.4 + get-port-please: 3.1.2 + h3: 1.11.1 + http-shutdown: 1.2.2 + jiti: 1.21.0 + mlly: 1.6.1 + node-forge: 1.3.1 + pathe: 1.1.2 + std-env: 3.7.0 + ufo: 1.4.0 + untun: 0.1.3 + uqr: 0.1.2 + transitivePeerDependencies: + - uWebSockets.js + dev: false + optional: true + /load-json-file@4.0.0: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} @@ -9303,7 +9597,7 @@ packages: typescript: optional: true dependencies: - autoprefixer: 10.4.17(postcss@8.4.35) + autoprefixer: 10.4.18(postcss@8.4.35) citty: 0.1.5 cssnano: 6.0.3(postcss@8.4.35) defu: 6.1.4 @@ -9344,6 +9638,17 @@ packages: ufo: 1.4.0 dev: false + /mlly@1.6.1: + resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + requiresBuild: true + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.4.0 + dev: false + optional: true + /modify-values@1.0.1: resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==} engines: {node: '>=0.10.0'} @@ -9523,6 +9828,10 @@ packages: /node-fetch-native@1.6.1: resolution: {integrity: sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==} + /node-fetch-native@1.6.2: + resolution: {integrity: sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==} + dev: false + /node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -9734,18 +10043,18 @@ packages: - vue dev: false - /nuxt-schema-org@3.3.4(@nuxt/devtools@1.0.8)(@unhead/shared@1.8.10)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(unhead@1.8.10)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0): - resolution: {integrity: sha512-wZVFeZxogpFlavRYOvsQXNMNxju8YYfoauXkfZ7qNow9qB90vQVHFUW8rrMU+F/rGPg/eJ79rEV+Lf4mKHggmA==} + /nuxt-schema-org@3.3.5(@nuxt/devtools@1.0.8)(@unhead/shared@1.8.12)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(unhead@1.8.10)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0): + resolution: {integrity: sha512-EnYGrMG7mdz0w5g+K6TIud8ws1ePkyY0HUP4hiqcQERiZHnxqpexHKe6muf/4CJZxpOMQNvAgoWn23jKSdROng==} dependencies: '@nuxt/devtools-kit': 1.0.8(nuxt@3.10.3)(rollup@3.29.4)(vite@5.1.4) '@nuxt/devtools-ui-kit': 1.0.8(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) - '@nuxt/kit': 3.10.0(rollup@3.29.4) - '@unhead/schema-org': 1.8.10(@unhead/shared@1.8.10)(unhead@1.8.10) - floating-vue: 5.2.2(@nuxt/kit@3.10.0)(vue@3.4.19) - nuxt-site-config: 2.2.9(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) - nuxt-site-config-kit: 2.2.9(rollup@3.29.4)(vue@3.4.19) + '@nuxt/kit': 3.10.3(rollup@3.29.4) + '@unhead/schema-org': 1.8.12(@unhead/shared@1.8.12)(unhead@1.8.10) + floating-vue: 5.2.2(@nuxt/kit@3.10.3)(vue@3.4.19) + nuxt-site-config: 2.2.11(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) + nuxt-site-config-kit: 2.2.11(rollup@3.29.4)(vue@3.4.19) pathe: 1.1.2 - shiki: 1.0.0-beta.5 + shiki: 1.1.7 sirv: 2.0.4 transitivePeerDependencies: - '@nuxt/devtools' @@ -9774,36 +10083,36 @@ packages: - webpack dev: false - /nuxt-site-config-kit@2.2.9(rollup@3.29.4)(vue@3.4.19): - resolution: {integrity: sha512-K3Pi7OBeztfjTxEpk0kEpbRwyhKQf15MIJQUAeqep9K2RbAdzhSygfpHZUcWc0KL2l0E5qKrvdcM14Gc/9dZdg==} + /nuxt-site-config-kit@2.2.11(rollup@3.29.4)(vue@3.4.19): + resolution: {integrity: sha512-ApoVYvJDJq0//Y20C2sn6NjWV1Xg+zfyRfPVKs1GKtuk0fvUKzkmedwt6V15MhkMdNBIYwaMB0wfWzm6Pw9DyA==} dependencies: - '@nuxt/kit': 3.10.0(rollup@3.29.4) - '@nuxt/schema': 3.10.0(rollup@3.29.4) + '@nuxt/kit': 3.10.3(rollup@3.29.4) + '@nuxt/schema': 3.10.3(rollup@3.29.4) pkg-types: 1.0.3 - site-config-stack: 2.2.9(vue@3.4.19) + site-config-stack: 2.2.11(vue@3.4.19) std-env: 3.7.0 - ufo: 1.3.2 + ufo: 1.4.0 transitivePeerDependencies: - rollup - supports-color - vue dev: false - /nuxt-site-config@2.2.9(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0): - resolution: {integrity: sha512-oIxo7OTmVyPHi1uduAQUg1Py8W3ZM0to2z5SCffmhME47I0wK2wK8OimSY2ZpbKsNLfaxExEvR10vSbhgy9rOA==} + /nuxt-site-config@2.2.11(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0): + resolution: {integrity: sha512-yYR5g9wjc3aULpyv1Ne7FlmXA8pXr1JVf2ZOx40TT7DkGY86zNntOF9RWaQjrvFgw0fTJAQyrNxdbzWJc8O+mA==} dependencies: '@nuxt/devtools-kit': 1.0.8(nuxt@3.10.3)(rollup@3.29.4)(vite@5.1.4) '@nuxt/devtools-ui-kit': 1.0.8(@nuxt/devtools@1.0.8)(@vue/compiler-core@3.4.19)(nuxt@3.10.3)(postcss@8.4.35)(rollup@3.29.4)(sortablejs@1.15.2)(vite@5.1.4)(vue@3.4.19)(webpack@5.89.0) - '@nuxt/kit': 3.10.0(rollup@3.29.4) - '@nuxt/schema': 3.10.0(rollup@3.29.4) - floating-vue: 5.2.2(@nuxt/kit@3.10.0)(vue@3.4.19) - nuxt-site-config-kit: 2.2.9(rollup@3.29.4)(vue@3.4.19) + '@nuxt/kit': 3.10.3(rollup@3.29.4) + '@nuxt/schema': 3.10.3(rollup@3.29.4) + floating-vue: 5.2.2(@nuxt/kit@3.10.3)(vue@3.4.19) + nuxt-site-config-kit: 2.2.11(rollup@3.29.4)(vue@3.4.19) pathe: 1.1.2 pkg-types: 1.0.3 - shiki: 1.0.0-beta.5 + shiki: 1.1.7 sirv: 2.0.4 - site-config-stack: 2.2.9(vue@3.4.19) - ufo: 1.3.2 + site-config-stack: 2.2.11(vue@3.4.19) + ufo: 1.4.0 transitivePeerDependencies: - '@nuxt/devtools' - '@unocss/webpack' @@ -10304,18 +10613,18 @@ packages: mlly: 1.4.2 pathe: 1.1.2 - /playwright-core@1.41.2: - resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==} + /playwright-core@1.42.1: + resolution: {integrity: sha512-mxz6zclokgrke9p1vtdy/COWBH+eOZgYUVVU34C73M+4j4HLlQJHtfcqiqqxpP0o8HhMkflvfbquLX5dg6wlfA==} engines: {node: '>=16'} hasBin: true dev: true - /playwright@1.41.2: - resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==} + /playwright@1.42.1: + resolution: {integrity: sha512-PgwB03s2DZBcNRoW+1w9E+VkLBxweib6KTXM0M3tkiT4jVxKSi6PmVJ591J+0u10LUrgxB7dLRbiJqO5s2QPMg==} engines: {node: '>=16'} hasBin: true dependencies: - playwright-core: 1.41.2 + playwright-core: 1.42.1 optionalDependencies: fsevents: 2.3.2 dev: true @@ -10705,8 +11014,8 @@ packages: tunnel-agent: 0.6.0 dev: false - /prettier-plugin-tailwindcss@0.5.11(prettier@3.2.5): - resolution: {integrity: sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w==} + /prettier-plugin-tailwindcss@0.5.12(prettier@3.2.5): + resolution: {integrity: sha512-o74kiDBVE73oHW+pdkFSluHBL3cYEvru5YgEqNkBMFF7Cjv+w1vI565lTlfoJT4VLWDe0FMtZ7FkE/7a4pMXSQ==} engines: {node: '>=14.21.3'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' @@ -10721,6 +11030,7 @@ packages: prettier-plugin-marko: '*' prettier-plugin-organize-attributes: '*' prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' prettier-plugin-style-order: '*' prettier-plugin-svelte: '*' prettier-plugin-twig-melody: '*' @@ -10747,6 +11057,8 @@ packages: optional: true prettier-plugin-organize-imports: optional: true + prettier-plugin-sort-imports: + optional: true prettier-plugin-style-order: optional: true prettier-plugin-svelte: @@ -10848,11 +11160,11 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + /qs@6.12.0: + resolution: {integrity: sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 dev: false /queue-microtask@1.2.3: @@ -10870,6 +11182,10 @@ packages: /radix3@1.1.0: resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==} + /radix3@1.1.1: + resolution: {integrity: sha512-yUUd5VTiFtcMEx0qFUxGAv5gbMc1un4RvEO1JZdP7ZUl/RHygZK6PknIKntmQRZxnMY3ZXD2ISaw1ij8GYW1yg==} + dev: false + /random-weighted-choice@0.1.4: resolution: {integrity: sha512-c1aBMOpBjtDW641lCIvOpmkTV76KbTb+s833OZCyyKa+QxE8UrHWmxVXhTKXIwLoMhq1A4EaSL2d3kSQPOLJwQ==} dependencies: @@ -11381,6 +11697,18 @@ packages: has-property-descriptors: 1.0.1 dev: false + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: false + /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} @@ -11431,16 +11759,10 @@ packages: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} dev: false - /shiki@1.0.0-beta.2: - resolution: {integrity: sha512-hPJcD6F5BRp2yfeBcERqQIVeEPjE2g+r5MVq/tonz2SxT6o79e84Y9iW+a5TyGXWtXAKiW5jd4lGevJ4yIUixA==} + /shiki@1.1.7: + resolution: {integrity: sha512-9kUTMjZtcPH3i7vHunA6EraTPpPOITYTdA5uMrvsJRexktqP0s7P3s9HVK80b4pP42FRVe03D7fT3NmJv2yYhw==} dependencies: - '@shikijs/core': 1.0.0-beta.2 - dev: false - - /shiki@1.0.0-beta.5: - resolution: {integrity: sha512-S5FV55ZH8zLicVyqlJZj8LYqh/VuUICDDNG/L9eDM9I4d69EX+FbgSnKRIuJIwLrmJfTiPoGVnH1HsHX5whP/g==} - dependencies: - '@shikijs/core': 1.0.0-beta.5 + '@shikijs/core': 1.1.7 dev: false /side-channel@1.0.4: @@ -11451,6 +11773,16 @@ packages: object-inspect: 1.13.1 dev: false + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + dev: false + /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true @@ -11514,12 +11846,12 @@ packages: /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - /site-config-stack@2.2.9(vue@3.4.19): - resolution: {integrity: sha512-r3Ul70Rb7dIQBmHes8TPR/1cB2alaxIrr+0x7RDmOnOPw144ofp5/Ye9AKJ+TlqTpAQpZiV3phE7AJEjEFNuuQ==} + /site-config-stack@2.2.11(vue@3.4.19): + resolution: {integrity: sha512-j3okTVJiZV1QH4XJLCeO4UgaJzv4ogtFOOkAu1TlEcKSTSDBZ7PKBvZiyaW90TLnCTaB29JAAB/jmrJK7zlxdA==} peerDependencies: vue: ^3 dependencies: - ufo: 1.3.2 + ufo: 1.4.0 vue: 3.4.19(typescript@5.3.3) dev: false @@ -11930,6 +12262,13 @@ packages: picocolors: 1.0.0 dev: false + /system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + requiresBuild: true + dev: false + optional: true + /tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} dev: false @@ -12680,6 +13019,17 @@ packages: pathe: 1.1.2 dev: false + /untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true + requiresBuild: true + dependencies: + citty: 0.1.6 + consola: 3.2.3 + pathe: 1.1.2 + dev: false + optional: true + /untyped@1.4.0: resolution: {integrity: sha512-Egkr/s4zcMTEuulcIb7dgURS6QpN7DyqQYdf+jBtiaJvQ+eRsrtWUoX84SbvQWuLkXsOjM+8sJC9u6KoMK/U7Q==} hasBin: true @@ -12724,6 +13074,16 @@ packages: escalade: 3.1.1 picocolors: 1.0.0 + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.1 + picocolors: 1.0.0 + /uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} requiresBuild: true @@ -12871,8 +13231,8 @@ packages: - supports-color dev: false - /vite-plugin-pwa@0.19.0(@vite-pwa/assets-generator@0.2.4)(vite@5.1.4)(workbox-build@7.0.0)(workbox-window@7.0.0): - resolution: {integrity: sha512-Unfb4Jk/ka4HELtpMLIPCmGcW4LFT+CL7Ri1/Of1544CVKXS2ftP91kUkNzkzeI1sGpOdVGuxprVLB9NjMoCAA==} + /vite-plugin-pwa@0.19.2(@vite-pwa/assets-generator@0.2.4)(vite@5.1.4)(workbox-build@7.0.0)(workbox-window@7.0.0): + resolution: {integrity: sha512-LSQJFPxCAQYbRuSyc9EbRLRqLpaBA9onIZuQFomfUYjWSgHuQLonahetDlPSC9zsxmkSEhQH8dXZN8yL978h3w==} engines: {node: '>=16.0.0'} peerDependencies: '@vite-pwa/assets-generator': ^0.2.4 @@ -12981,10 +13341,10 @@ packages: optionalDependencies: fsevents: 2.3.3 - /vitest-environment-nuxt@1.0.0(h3@1.10.2)(rollup@3.29.4)(vite@5.1.4)(vitest@1.3.1)(vue-router@4.3.0)(vue@3.4.19): + /vitest-environment-nuxt@1.0.0(h3@1.11.1)(rollup@3.29.4)(vite@5.1.4)(vitest@1.3.1)(vue-router@4.3.0)(vue@3.4.19): resolution: {integrity: sha512-AWMO9h4HdbaFdPWZw34gALFI8gbBiOpvfbyeZwHIPfh4kWg/TwElYHvYMQ61WPUlCGaS5LebfHkaI0WPyb//Iw==} dependencies: - '@nuxt/test-utils': 3.11.0(h3@1.10.2)(rollup@3.29.4)(vite@5.1.4)(vitest@1.3.1)(vue-router@4.3.0)(vue@3.4.19) + '@nuxt/test-utils': 3.11.0(h3@1.11.1)(rollup@3.29.4)(vite@5.1.4)(vitest@1.3.1)(vue-router@4.3.0)(vue@3.4.19) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' @@ -13162,8 +13522,8 @@ packages: vue: 3.4.19(typescript@5.3.3) dev: false - /vue-sonner@1.0.3: - resolution: {integrity: sha512-uJPvtcftMjmiXfpsMtB77+TkzWn8gEPI0l5sN+X+UqYuAOVacf0dk7ONqRsc5DWy1ilJtLexz/wSggwjimkYKA==} + /vue-sonner@1.1.2: + resolution: {integrity: sha512-yg4f5s0a3oiiI7cNvO0Dajux1Y7s04lxww3vnQtnwQawJ3KqaKA9RIRMdI9wGTosRGIOwgYFniFRGl4+IuKPZw==} dev: false /vue@3.4.19(typescript@5.3.3): @@ -13520,6 +13880,17 @@ packages: optional: true dev: false + /xss@1.0.15: + resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} + engines: {node: '>= 0.10.0'} + hasBin: true + requiresBuild: true + dependencies: + commander: 2.20.3 + cssfilter: 0.0.10 + dev: false + optional: true + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} From 86d7cd8f969a3ee72cbce278a2e41bd0ed982f10 Mon Sep 17 00:00:00 2001 From: Alejandro Akbal <37181533+AlejandroAkbal@users.noreply.github.com> Date: Sat, 9 Mar 2024 14:12:57 +0000 Subject: [PATCH 10/53] feat: proxy and optimize media for Premium users --- assets/js/nuxt-image/imgproxy.provider.ts | 84 +++++++++++++++++++++++ components/pages/posts/post/PostMedia.vue | 80 ++++++++++++--------- nuxt.config.js | 60 +++++++++------- pages/premium/index.vue | 18 +++-- 4 files changed, 174 insertions(+), 68 deletions(-) create mode 100644 assets/js/nuxt-image/imgproxy.provider.ts diff --git a/assets/js/nuxt-image/imgproxy.provider.ts b/assets/js/nuxt-image/imgproxy.provider.ts new file mode 100644 index 00000000..e5c80a54 --- /dev/null +++ b/assets/js/nuxt-image/imgproxy.provider.ts @@ -0,0 +1,84 @@ +import { joinURL } from "ufo"; +import { createOperationsGenerator } from "@nuxt/image/dist/runtime/utils/index"; +import type { ProviderGetImage } from "@nuxt/image"; +import { Buffer } from "buffer"; + +// https://docs.imgproxy.net/ +const operationsGenerator = createOperationsGenerator({ + keyMap: { + resize: "rs", + size: "s", + fit: "rt", + width: "w", + height: "h", + dpr: "dpr", + enlarge: "el", + extend: "ex", + gravity: "g", + crop: "c", + padding: "pd", + trim: "t", + rotate: "rot", + quality: "q", + maxBytes: "mb", + background: "bg", + backgroundAlpha: "bga", + blur: "bl", + sharpen: "sh", + watermark: "wm", + preset: "pr", + cacheBuster: "cb", + stripMetadata: "sm", + stripColorProfile: "scp", + autoRotate: "ar", + filename: "fn", + format: "f", + }, + formatter: (key, value) => `${key}:${value}`, +}); + +function urlSafeBase64(string: string) { + return Buffer.from(string, "utf8") + .toString("base64") + .replace(/=/g, "") + .replace(/\+/g, "-") + .replace(/\//g, "_"); +} + +const defaultModifiers = { + // fit: "fill", + // width: 0, + // height: 0, + // gravity: "no", + // enlarge: 1, + // format: "webp", +}; + +/** + * + * @see https://github.com/nuxt/image/issues/378 + */ +export const getImage: ProviderGetImage = (src, options) => { + + // Skip if src is a relative URL + if (src.startsWith("/")) { + return { url: src }; + } + + // Skip GIFs, since imgproxy doesn't support them + if (src.endsWith(".gif")) { + return { url: src }; + } + + const { modifiers, baseURL } = options; + + const mergeModifiers = { ...defaultModifiers, ...modifiers }; + + const encodedUrl = urlSafeBase64(src); + + const path = joinURL("/", operationsGenerator(mergeModifiers), encodedUrl); + + return { + url: joinURL(baseURL, path), + }; +}; diff --git a/components/pages/posts/post/PostMedia.vue b/components/pages/posts/post/PostMedia.vue index bf9d71a6..f9e0caa4 100644 --- a/components/pages/posts/post/PostMedia.vue +++ b/components/pages/posts/post/PostMedia.vue @@ -1,8 +1,8 @@ - - diff --git a/components/pages/posts/post/PostMedia.vue b/components/pages/posts/post/PostMedia.vue index f9e0caa4..3f4413cf 100644 --- a/components/pages/posts/post/PostMedia.vue +++ b/components/pages/posts/post/PostMedia.vue @@ -59,35 +59,6 @@ localPosterSrc.value = props.mediaPosterSrc } - function onMediaIntersectionObserver(entries: IntersectionObserverEntry[]) { - // Skip on fullscreen - if (document.fullscreenElement) { - return - } - - // Smallest video & image possible - https://stackoverflow.com/a/36610159/11398632 - const smallestImage = - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQYV2NgYAAAAAMAAWgmWQ0AAAAASUVORK5CYII=' - const smallestVideo = - 'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAtJtZGF0AAACrQYF//+p3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE2NCByMzEwMyA5NDFjYWU2IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAyMiAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTEgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIzLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3JhdGlvPTEuNDAgYXE9MToxLjAwAIAAAAAVZYiEABX//vfJ78Cm6/X2tb9gAQD5AAADBm1vb3YAAABsbXZoZAAAAADgYBEw4GARMAAAA+gAAAPoAAEAAAEAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIwdHJhawAAAFx0a2hkAAAAA+BgETDgYBEwAAAAAQAAAAAAAAPoAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAQAAAAAAUAAAAFAAAAAAAJGVkdHMAAAAcZWxzdAAAAAAAAAABAAAD6AAAAAAAAQAAAAABqG1kaWEAAAAgbWRoZAAAAADgYBEw4GARMAAAQAAAAEAAVcQAAAAAAC1oZGxyAAAAAAAAAAB2aWRlAAAAAAAAAAAAAAAAVmlkZW9IYW5kbGVyAAAAAVNtaW5mAAAAFHZtaGQAAAABAAAAAAAAAAAAAAAkZGluZgAAABxkcmVmAAAAAAAAAAEAAAAMdXJsIAAAAAEAAAETc3RibAAAAK9zdHNkAAAAAAAAAAEAAACfYXZjMQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAUABQASAAAAEgAAAAAAAAAARVMYXZjNTkuNTYuMTAwIGxpYngyNjQAAAAAAAAAAAAAABj//wAAADVhdmNDAWQAM//hABhnZAAzrNlJeeeEAAADAAQAAAMACDxgxlgBAAZo6+PLIsD9+PgAAAAAFGJ0cnQAAAAAAAAWUAAAFlAAAAAYc3R0cwAAAAAAAAABAAAAAQAAQAAAAAAcc3RzYwAAAAAAAAABAAAAAQAAAAEAAAABAAAAFHN0c3oAAAAAAAACygAAAAEAAAAUc3RjbwAAAAAAAAABAAAAMAAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTkuMzUuMTAw' - - const smallestMedia = isImage.value - ? // - smallestImage - : smallestVideo - - const entry = entries[0] - - const mediaElement = entry.target.children[0] as HTMLImageElement | HTMLVideoElement - - const newSrc = entry.isIntersecting - ? // - localSrc.value - : smallestMedia - - mediaElement.src = newSrc - } - /** * Stops videos when they are out of the viewport */ @@ -167,7 +138,6 @@
@@ -208,10 +178,7 @@
-
+